diff options
author | Mike Frysinger <vapier@gentoo.org> | 2007-09-15 07:50:58 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2007-09-15 07:50:58 +0000 |
commit | c0441bbed5d817b4f8f7f27f5d066760f73d6bbc (patch) | |
tree | f4bd2877dc770691e9bba20fb7e25c3d41e80067 /libc/sysdeps | |
parent | d9ec80053e440a08251e88a50bfaa283d9e00795 (diff) |
Blue Swirl writes:
I got the library to compile with the attached patches, though dynamic
loader crashes early.
In buildroot I changed the architecture name by hand from sparc to
sparc64, otherwise the compiler produced 32-bit files with V9 (64-bit)
instructions. This configuration is not supported by QEMU, so I aimed
for pure 64-bit. I think Sparc64 option needs to be added to
buildroot.
The _Qp_ ops seem to be required by the ABI. This and setjmp patches
are just hacks to get the compilation further. The _Qp_ ops can be
found in glibc, would it be OK to use those?
V9 assembler requires declarations for global register use.
The mem* functions in sparc32 directory did not work. They are
actually used only by the hybrid 32-bit + V9 CPU configuration.
Diffstat (limited to 'libc/sysdeps')
-rw-r--r-- | libc/sysdeps/linux/sparc/Makefile.arch | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/sparc/__longjmp.S | 3 | ||||
-rw-r--r-- | libc/sysdeps/linux/sparc/_math_inc.h | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/sparc/bits/setjmp.h | 2 |
4 files changed, 6 insertions, 3 deletions
diff --git a/libc/sysdeps/linux/sparc/Makefile.arch b/libc/sysdeps/linux/sparc/Makefile.arch index 1e401fc84..4562eaba5 100644 --- a/libc/sysdeps/linux/sparc/Makefile.arch +++ b/libc/sysdeps/linux/sparc/Makefile.arch @@ -5,7 +5,7 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC := brk.c __syscall_error.c +CSRC := brk.c __syscall_error.c qp_ops.c SSRC := \ __longjmp.S fork.S vfork.S clone.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \ diff --git a/libc/sysdeps/linux/sparc/__longjmp.S b/libc/sysdeps/linux/sparc/__longjmp.S index fa60264ef..c7d4f0794 100644 --- a/libc/sysdeps/linux/sparc/__longjmp.S +++ b/libc/sysdeps/linux/sparc/__longjmp.S @@ -30,7 +30,8 @@ .type __longjmp,%function .align 4 __longjmp: - + .register %g2, #scratch + .register %g3, #scratch /* Store our arguments in global registers so we can still * use them while unwinding frames and their register windows. */ diff --git a/libc/sysdeps/linux/sparc/_math_inc.h b/libc/sysdeps/linux/sparc/_math_inc.h index f08aa5869..1bf84f04e 100644 --- a/libc/sysdeps/linux/sparc/_math_inc.h +++ b/libc/sysdeps/linux/sparc/_math_inc.h @@ -7,7 +7,9 @@ #include <bits/wordsize.h> #define __ASSEMBLY__ +#ifndef __sparc_v9__ #include <asm/traps.h> +#endif /* Is alignment really needed? */ diff --git a/libc/sysdeps/linux/sparc/bits/setjmp.h b/libc/sysdeps/linux/sparc/bits/setjmp.h index dac9ac5cb..ac5a4b2d6 100644 --- a/libc/sysdeps/linux/sparc/bits/setjmp.h +++ b/libc/sysdeps/linux/sparc/bits/setjmp.h @@ -25,7 +25,7 @@ #include <bits/wordsize.h> -#if __WORDSIZE == 64 +#if 0 /*__WORDSIZE == 64*/ #ifndef _ASM typedef struct __sparc64_jmp_buf |