diff options
Diffstat (limited to 'sysdeps/unix/sparc/sysdep.h')
-rw-r--r-- | sysdeps/unix/sparc/sysdep.h | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/sysdeps/unix/sparc/sysdep.h b/sysdeps/unix/sparc/sysdep.h index fe74a91809..576813a52c 100644 --- a/sysdeps/unix/sparc/sysdep.h +++ b/sysdeps/unix/sparc/sysdep.h @@ -27,19 +27,29 @@ #define syscall_error C_SYMBOL_NAME(__syscall_error) #endif -#define ENTRY(name) \ - .global C_SYMBOL_NAME(name); \ - .align 2; \ +#ifdef HAVE_ELF +#define ENTRY(name) \ + .global C_SYMBOL_NAME(name); \ + .type name,@function; \ + .align 4; \ C_LABEL(name) -#define PSEUDO(name, syscall_name, args) \ - .global syscall_error; \ - ENTRY (name) \ - mov SYS_ify(syscall_name), %g1; \ - ta 0; \ - bcc 1f; \ - sethi %hi(syscall_error), %g1; \ - jmp %g1 + %lo(syscall_error); nop; \ +#else +#define ENTRY(name) \ + .global C_SYMBOL_NAME(name); \ + .align 4; \ + C_LABEL(name) + +#endif /* HAVE_ELF */ + +#define PSEUDO(name, syscall_name, args) \ + .global syscall_error; \ + ENTRY (name) \ + mov SYS_ify(syscall_name), %g1; \ + ta 0; \ + bcc 1f; \ + sethi %hi(syscall_error), %g1; \ + jmp %g1 + %lo(syscall_error); nop; \ 1: #define ret retl; nop |