- 论坛徽章:
- 0
|
在移植l4ka:pistachio过程中,当编译user程序时,出现如下编译错误,望大侠指教,谢 谢。
编译语句如下:
arm-none-eabi-gcc -x c++ -I../../../user/include -I../.. -I../../../user/../contrib/include -DARM_LITTLE_ENDIAN -nostdinc -g -O2 -Wall -Wshadow -Wconversion -DARM_LITTLE_ENDIAN -fno-exceptions -c ../../../user/lib/io/arm-getc.cc -o arm-getc.o
出现如下错误,
../../../user/include/l4/arm/syscalls.h: In function 'L4_ThreadId_t L4_ExchangeRegisters(L4_ThreadId_t, L4_Word_t, L4_Word_t, L4_Word_t, L4_Word_t, L4_Word_t, L4_ThreadId_t, L4_Word_t*, L4_Word_t*, L4_Word_t*, L4_Word_t*, L4_Word_t*, L4_ThreadId_t*)':
../../../user/include/l4/arm/syscalls.h:128: error: address of explicit register variable 'r_pager' requested
../../../user/include/l4/arm/syscalls.h:130: error: address of explicit register variable 'r_dest' requested
../../../user/include/l4/arm/syscalls.h: In function 'L4_MsgTag_t L4_Ipc(L4_ThreadId_t, L4_ThreadId_t, L4_Word_t, L4_ThreadId_t*)':
../../../user/include/l4/arm/syscalls.h:253: error: address of explicit register variable 'r_dest' requested
../../../user/include/l4/arm/syscalls.h: In function 'L4_MsgTag_t L4_Lipc(L4_ThreadId_t, L4_ThreadId_t, L4_Word_t, L4_ThreadId_t*)':
../../../user/include/l4/arm/syscalls.h:309: error: address of explicit register variable 'r_dest' requested
出现错误的函数如下;
L4_INLINE L4_ThreadId_t L4_ExchangeRegisters (L4_ThreadId_t dest,
L4_Word_t control,
L4_Word_t sp,
L4_Word_t ip,
L4_Word_t flags,
L4_Word_t UserDefHandle,
L4_ThreadId_t pager,
L4_Word_t *old_control,
L4_Word_t *old_sp,
L4_Word_t *old_ip,
L4_Word_t *old_flags,
L4_Word_t *old_UserDefHandle,
L4_ThreadId_t *old_pager)
{
register L4_ThreadId_t r_dest asm ("r0") = dest;
register L4_Word_t r_control asm ("r1") = control;
register L4_Word_t r_sp asm ("r2") = sp;
register L4_Word_t r_ip asm ("r3") = ip;
register L4_Word_t r_flags asm ("r4") = flags;
register L4_Word_t r_userhandle asm ("r5") = UserDefHandle;
register L4_ThreadId_t r_pager asm ("r6") = pager;
register __L4_ExchangeRegisters_t r_syscall asm ("r12")
= __L4_ExchangeRegisters;
__asm__ __volatile (
__L4_SYSCALL
: "=r" (r_dest), "=r" (r_control), "=r" (r_sp), "=r" (r_ip),
"=r" (r_flags), "=r" (r_userhandle), "=r" (r_pager), "=r" (r_syscall)
: "r" (r_syscall), "r" (r_dest), "r" (r_control), "r" (r_sp),
"r" (r_ip), "r" (r_flags), "r" (r_userhandle), "r" (r_pager)
: "r7", "lr", __L4_ALWAYS_CLOBBER
);
*old_control = r_control;
*old_sp = r_sp;
*old_ip = r_ip;
*old_flags = r_flags;
*old_UserDefHandle = r_userhandle;
*old_pager = r_pager;
return r_dest;
}
不知这是什么错误,怎么解决?
|
|