summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/ppc/unified.S
diff options
context:
space:
mode:
authorGwenolé Beauchesne <gbeauchesne@mandriva.org>2003-02-18 16:48:15 +0000
committerGwenolé Beauchesne <gbeauchesne@mandriva.org>2003-02-18 16:48:15 +0000
commitcfc97c2e6d73efdf65b5ff0fc6ee66f1dc19f36c (patch)
treea377e1084729f1f289e32f7f180edb924d96718a /mdk-stage1/dietlibc/ppc/unified.S
parent8182e7cfe7d9c60567e48b876282594395062530 (diff)
downloaddrakx-cfc97c2e6d73efdf65b5ff0fc6ee66f1dc19f36c.tar
drakx-cfc97c2e6d73efdf65b5ff0fc6ee66f1dc19f36c.tar.gz
drakx-cfc97c2e6d73efdf65b5ff0fc6ee66f1dc19f36c.tar.bz2
drakx-cfc97c2e6d73efdf65b5ff0fc6ee66f1dc19f36c.tar.xz
drakx-cfc97c2e6d73efdf65b5ff0fc6ee66f1dc19f36c.zip
Merge in CVS dietlibc 0.21 for IA-64 and X86-64 support. However, drop the
following architectures we currently don't support: arm, mips, mipsel, parisc, s390, sparc64.
Diffstat (limited to 'mdk-stage1/dietlibc/ppc/unified.S')
-rw-r--r--mdk-stage1/dietlibc/ppc/unified.S37
1 files changed, 28 insertions, 9 deletions
diff --git a/mdk-stage1/dietlibc/ppc/unified.S b/mdk-stage1/dietlibc/ppc/unified.S
index d2b419f0b..eb136a96b 100644
--- a/mdk-stage1/dietlibc/ppc/unified.S
+++ b/mdk-stage1/dietlibc/ppc/unified.S
@@ -1,21 +1,40 @@
#include <dietfeatures.h>
+#include "syscalls.h"
.text
+.type exit,@function
+.weak exit
+exit:
+.type _exit,@function
+.global _exit
+_exit:
+ li 0,__NR_exit
.global __unified_syscall
__unified_syscall:
sc
- mfcr 0
- andis. 9,0,4096
- mr 0,3
- beq .L1
-#ifdef WANT_THREAD_SAVE
- bl __set_errno
+ bnslr+
+
+.global error_unified_syscall
+error_unified_syscall:
+#ifdef WANT_THREAD_SAFE
+ stwu 1,-16(1)
+ mflr 0
+ stw 0,20(1)
+ stw 3,12(1)
+ bl __errno_location
+ lwz 0,12(1)
+ stw 0,0(3)
+ lwz 0,20(1)
+ mtlr 0
+ addi 1,1,16
#else
lis 9,errno@ha
stw 3,errno@l(9)
#endif
- li 0,-1
-.L1:
- mr 3,0
+ li 3,-1
+
+/* here we go and "reuse" the return for weak-void functions */
+#include "dietuglyweaks.h"
+
blr