summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libc/sparc64/SYS.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/libc/sparc64/SYS.h b/lib/libc/sparc64/SYS.h
index cc9c844..6a8fa16 100644
--- a/lib/libc/sparc64/SYS.h
+++ b/lib/libc/sparc64/SYS.h
@@ -51,10 +51,17 @@
#define _SYSENTRY(x) \
ENTRY(__CONCAT(__sys_,x)) ; \
.weak CNAME(x) ; \
+ .type CNAME(x),@function ; \
.set CNAME(x),CNAME(__CONCAT(__sys_,x)) ; \
.weak CNAME(__CONCAT(_,x)) ; \
+ .type CNAME(__CONCAT(_,x)), @function ; \
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x))
+#define _SYSEND(x) \
+ .size CNAME(__CONCAT(__sys_,x)), . - CNAME(__CONCAT(__sys_,x)) ; \
+ .size CNAME(__CONCAT(_,x)), . - CNAME(__CONCAT(__sys_,x)) ; \
+ .size CNAME(__CONCAT(,x)), . - CNAME(__CONCAT(__sys_,x))
+
#define _SYSCALL(x) \
mov __CONCAT(SYS_,x), %g1 ; \
ta %xcc, ST_SYSCALL ; \
@@ -63,20 +70,21 @@ ENTRY(__CONCAT(__sys_,x)) ; \
ERROR() ; \
1:
-#define SYSCALL(x) \
-_SYSENTRY(x) ; \
- _SYSCALL(x)
-
#define RSYSCALL(x) \
- SYSCALL(x) ; \
+_SYSENTRY(x) ; \
+ _SYSCALL(x) ; \
retl ; \
- nop
+ nop ; \
+ _SYSEND(x)
#define PSEUDO(x) \
ENTRY(__CONCAT(__sys_,x)) ; \
.weak CNAME(__CONCAT(_,x)) ; \
+ .type CNAME(__CONCAT(_,x)),@function ; \
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)) ; \
mov __CONCAT(SYS_,x), %g1 ; \
ta %xcc, ST_SYSCALL ; \
retl ; \
- nop
+ nop ; \
+ .size CNAME(__CONCAT(__sys_,x)), . - CNAME(__CONCAT(__sys_,x)) ; \
+ .size CNAME(__CONCAT(_,x)), . - CNAME(__CONCAT(__sys_,x))
OpenPOWER on IntegriCloud