Hi,
vince...@andestech.com wrote,

> Dear all:
> Stafford is right. internal_syscall_ncs6 is able to define in 
> libc/sysdeps/linux/nds32/bits/syscalls.h like the following.
> 
> #define internal_syscall_ncs6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)  
>           \
>   ({                                                                    \
>        register long __res  __asm__("$r0");                                   
>   \
>        register long __no   __asm__("$r0") = (long) (name);                   
>           \
>        register long __arg1 __asm__("$r1") = (long) (arg1);                   
>           \
>        register long __arg2 __asm__("$r2") = (long) (arg2);                   
>           \
>        register long __arg3 __asm__("$r3") = (long) (arg3);                   
>           \
>        register long __arg4 __asm__("$r4") = (long) (arg4);                   
>           \
>        register long __arg5 __asm__("$r5") = (long) (arg5);                   
>           \
>        __asm__ volatile (                                               \
>         "addi10.sp\t  #-4\n\t"                                                
>   \
>         CFI_ADJUST_CFA_OFFSET(4)"\n\t"                                        
>   \
>         "push\t %7\n\t"                                                       
>   \
>         CFI_ADJUST_CFA_OFFSET(4)"\n\t"                                        
>   \
>        __issue_syscall (LIB_SYSCALL)                                          
>   \
>         "pop\t %7\n\t"                                                  \
>         CFI_ADJUST_CFA_OFFSET(-4)"\n\t"                                       
>   \
>         "addi10.sp\t  #4\n\t"                                           \
>         CFI_ADJUST_CFA_OFFSET(-4)"\n\t"                                       
>   \
>        __asm__ volatile (                                                     
>   \
>        __issue_syscall (LIB_SYSCALL)                                          
>   \
>        : "=r" (__res)         /* output operands  */                          
>           \
>        : "r" (__no)           /* input operands  */                           
>   \
>        , "r" (__arg1)         /* input operands  */                           
>           \
>        , "r" (__arg2)         /* input operands  */                           
>           \
>        , "r" (__arg3)         /* input operands  */                           
>           \
>        , "r" (__arg4)         /* input operands  */                           
>           \
>        , "r" (__arg5)         /* input operands  */                           
>           \
>        , "r" (arg6)         /* input operands  */                             
>           \
>        : __SYSCALL_CLOBBERS); /* list of clobbered registers  */              
>           \
>         __res;                                                          \
>   })
> 
> The value of argument "name" is the number of specified syscall.
> This syscall will be sent to kernel later through sys_syscall by 
> "__issue_syscall (LIB_SYSCALL)".
> 

When testing Stafford patch from:
https://github.com/stffrdhrn/uclibc-ng.git -> branch gen-syscall

I added a missing ); before the second __asm__ volatile.

I get:
/home/wbx/nds32/toolchain_andes-ag101p_uclibc-ng_nds32le/usr/bin/nds32le-openadk-linux-uclibc-gcc
-c libc/sysdeps/linux/common/syscall.c -o
libc/sysdeps/linux/common/syscall.os -Wall -Wstrict-prototypes
-Wstrict-aliasing -funsigned-char -fno-builtin -fno-asm
-fmerge-all-constants -std=gnu99 -fno-stack-protector -nostdinc
-I./include -I./include -include libc-symbols.h
-I./libc/sysdeps/linux/nds32 -I./libc/sysdeps/linux
-I./ldso/ldso/nds32 -I./ldso/include -I. -Os -fstrict-aliasing
-fwrapv -fno-ident -mcpu=n13 -Os -pipe -fomit-frame-pointer
-fno-unwind-tables -fno-asynchronous-unwind-tables
-D__USE_STDIO_FUTEXES__ -DHAVE_FORCED_UNWIND -D_LIBC_REENTRANT
-I./libpthread/nptl -I./libpthread/nptl
-I./libpthread/nptl/sysdeps/unix/sysv/linux/nds32
-I./libpthread/nptl/sysdeps/nds32 -I./libpthread/nptl/sysdeps/nds32
-I./libpthread/nptl/sysdeps/unix/sysv/linux
-I./libpthread/nptl/sysdeps/unix/sysv/linux
-I./libpthread/nptl/sysdeps/pthread
-I./libpthread/nptl/sysdeps/pthread/bits
-I./libpthread/nptl/sysdeps/generic -I./libc/sysdeps/linux/common
-isystem
/home/wbx/nds32/toolchain_andes-ag101p_uclibc-ng_nds32le/usr/lib/gcc/nds32le-openadk-linux-uclibc/4.9.4/include-fixed
-isystem
/home/wbx/nds32/toolchain_andes-ag101p_uclibc-ng_nds32le/usr/lib/gcc/nds32le-openadk-linux-uclibc/4.9.4/include
-I/home/wbx/nds32/target_andes-ag101p_uclibc-ng_nds32le/usr/include/
-DNDEBUG -DIN_LIB=libc -DPIC -fPIC -MT
libc/sysdeps/linux/common/syscall.os -MD -MP -MF
libc/sysdeps/linux/common/.syscall.os.dep
{standard input}: Assembler messages:
{standard input}:62: Error: Unrecognized operand/register, smw.adm
$r-1,[$sp],$r-1,0.
{standard input}:65: Error: Unrecognized operand/register, lmw.bim
$r-1,[$sp],$r-1,0.
Makerules:369: recipe for target
'libc/sysdeps/linux/common/syscall.os' failed

Ideas?

best regards
 Waldemar
_______________________________________________
devel mailing list
devel@uclibc-ng.org
https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel

Reply via email to