diff --git a/lib/libc/arch/sparc64/SYS.h b/lib/libc/arch/sparc64/SYS.h index 36f345c92fb8..c18dad7e84b0 100644 --- a/lib/libc/arch/sparc64/SYS.h +++ b/lib/libc/arch/sparc64/SYS.h @@ -37,7 +37,7 @@ * @(#)SYS.h 8.1 (Berkeley) 6/4/93 * * from: Header: SYS.h,v 1.2 92/07/03 18:57:00 torek Exp - * $NetBSD: SYS.h,v 1.3 2000/06/26 06:31:39 kleink Exp $ + * $NetBSD: SYS.h,v 1.4 2000/07/18 22:39:25 eeh Exp $ */ #include @@ -57,7 +57,7 @@ #ifdef PIC #define ERROR() \ PIC_PROLOGUE(%g1,%g2); \ - ld [%g1+_C_LABEL(__cerror)],%g2; jmp %g2; nop + ldx [%g1+_C_LABEL(__cerror)],%g2; jmp %g2; nop #else #define ERROR() \ sethi %hi(_C_LABEL(__cerror)),%g1; or %lo(_C_LABEL(__cerror)),%g1,%g1; \ diff --git a/lib/libc/arch/sparc64/gen/__sigsetjmp14.S b/lib/libc/arch/sparc64/gen/__sigsetjmp14.S index 2cd5420f5929..368a50b5e0bb 100644 --- a/lib/libc/arch/sparc64/gen/__sigsetjmp14.S +++ b/lib/libc/arch/sparc64/gen/__sigsetjmp14.S @@ -1,4 +1,4 @@ -/* $NetBSD: __sigsetjmp14.S,v 1.1 1998/10/08 02:27:59 eeh Exp $ */ +/* $NetBSD: __sigsetjmp14.S,v 1.2 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1995 Paul Kranenburg * All rights reserved. @@ -39,8 +39,8 @@ ENTRY(__sigsetjmp14) cmp %o1,0 st %o1,[%o0+0x38] ! jmpbuf[JBLEN] bne,a 1f - ld [%g1+_C_LABEL(__setjmp14)], %g1 ! if (%o1 != 0) goto _setjmp; - ld [%g1+_C_LABEL(_setjmp)], %g1 ! else goto __setjmp; + ldx [%g1+_C_LABEL(__setjmp14)], %g1 ! if (%o1 != 0) goto _setjmp; + ldx [%g1+_C_LABEL(_setjmp)], %g1 ! else goto __setjmp; 1: jmp %g1 nop @@ -50,8 +50,8 @@ ENTRY(__siglongjmp14) ld [%o0+0x38],%g2 ! jmpbuf[JBLEN] cmp %g2,0 bne,a 1f - ld [%g1+_C_LABEL(__longjmp14)], %g1 ! if (%g2 != 0) goto _longjmp; - ld [%g1+_C_LABEL(_longjmp)], %g1 ! else goto __longjmp; + ldx [%g1+_C_LABEL(__longjmp14)], %g1 ! if (%g2 != 0) goto _longjmp; + ldx [%g1+_C_LABEL(_longjmp)], %g1 ! else goto __longjmp; 1: jmp %g1 nop diff --git a/lib/libc/arch/sparc64/gen/sigsetjmp.S b/lib/libc/arch/sparc64/gen/sigsetjmp.S index 886f87c32027..61ddafb443ef 100644 --- a/lib/libc/arch/sparc64/gen/sigsetjmp.S +++ b/lib/libc/arch/sparc64/gen/sigsetjmp.S @@ -1,4 +1,4 @@ -/* $NetBSD: sigsetjmp.S,v 1.2 1998/10/08 02:27:59 eeh Exp $ */ +/* $NetBSD: sigsetjmp.S,v 1.3 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1995 Paul Kranenburg * All rights reserved. @@ -39,8 +39,8 @@ ENTRY(sigsetjmp) cmp %o1,0 st %o1,[%o0+0x38] ! jmpbuf[JBLEN] bne,a 1f - ld [%g1+_C_LABEL(setjmp)], %g1 ! if (%o1 != 0) goto _setjmp; - ld [%g1+_C_LABEL(_setjmp)], %g1 ! else goto __setjmp; + ldx [%g1+_C_LABEL(setjmp)], %g1 ! if (%o1 != 0) goto _setjmp; + ldx [%g1+_C_LABEL(_setjmp)], %g1 ! else goto __setjmp; 1: jmp %g1 nop @@ -50,8 +50,8 @@ ENTRY(siglongjmp) ld [%o0+0x38],%g2 ! jmpbuf[JBLEN] cmp %g2,0 bne,a 1f - ld [%g1+_C_LABEL(longjmp)], %g1 ! if (%g2 != 0) goto _longjmp; - ld [%g1+_C_LABEL(_longjmp)], %g1 ! else goto __longjmp; + ldx [%g1+_C_LABEL(longjmp)], %g1 ! if (%g2 != 0) goto _longjmp; + ldx [%g1+_C_LABEL(_longjmp)], %g1 ! else goto __longjmp; 1: jmp %g1 nop diff --git a/lib/libc/arch/sparc64/string/ffs.S b/lib/libc/arch/sparc64/string/ffs.S index 5777c61d527b..bfba0450f343 100644 --- a/lib/libc/arch/sparc64/string/ffs.S +++ b/lib/libc/arch/sparc64/string/ffs.S @@ -1,4 +1,4 @@ -/* $NetBSD: ffs.S,v 1.3 1999/12/30 15:30:26 eeh Exp $ */ +/* $NetBSD: ffs.S,v 1.4 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1992, 1993 @@ -44,7 +44,7 @@ #if 0 .asciz "@(#)ffs.s 8.1 (Berkeley) 6/4/93" #else - RCSID("$NetBSD: ffs.S,v 1.3 1999/12/30 15:30:26 eeh Exp $") + RCSID("$NetBSD: ffs.S,v 1.4 2000/07/18 22:39:25 eeh Exp $") #endif #endif /* LIBC_SCCS and not lint */ @@ -84,10 +84,10 @@ ENTRY(ffs) * one, we just return the table value plus 24. This means * that ffstab[0] must be -24 so that ffs(0) will return 0. */ -ENTRY(_C_LABEL(ffs)) +ENTRY(ffs) #ifdef PIC - PIC_PROLOGUE(%o1,%o2) - ld [%o1 + _C_LABEL(__ffstab)], %o2 + PIC_PROLOGUE(%o1, %o2) + PICCY_SET(_C_LABEL(__ffstab), %o2, %o3) #else set _C_LABEL(__ffstab), %o2 #endif @@ -121,7 +121,7 @@ ENTRY(_C_LABEL(ffs)) retl add %o0, 24, %o0 -ENTRY(_C_LABEL(__ffstab)) +RODATA(__ffstab) .byte -24,1,2,1,3,1,2,1,4,1,2,1,3,1,2,1 /* 00-0f */ .byte 5,1,2,1,3,1,2,1,4,1,2,1,3,1,2,1 /* 10-1f */ .byte 6,1,2,1,3,1,2,1,4,1,2,1,3,1,2,1 /* 20-2f */ diff --git a/lib/libc/arch/sparc64/sys/brk.S b/lib/libc/arch/sparc64/sys/brk.S index 85e25da450ff..6e8fb277d550 100644 --- a/lib/libc/arch/sparc64/sys/brk.S +++ b/lib/libc/arch/sparc64/sys/brk.S @@ -1,4 +1,4 @@ -/* $NetBSD: brk.S,v 1.5 2000/06/26 06:25:46 kleink Exp $ */ +/* $NetBSD: brk.S,v 1.6 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1992, 1993 @@ -44,7 +44,7 @@ #if 0 .asciz "@(#)brk.s 8.1 (Berkeley) 6/4/93" #else - RCSID("$NetBSD: brk.S,v 1.5 2000/06/26 06:25:46 kleink Exp $") + RCSID("$NetBSD: brk.S,v 1.6 2000/07/18 22:39:25 eeh Exp $") #endif #endif /* SYSLIBC_SCCS and not lint */ @@ -59,15 +59,16 @@ WEAK_ALIAS(brk, _brk) #endif .data + .align 8 _C_LABEL(__minbrk): - .long _C_LABEL(_end) ! lower brk limit; also for gmon code + .xword _C_LABEL(_end) ! lower brk limit; also for gmon code .text ENTRY(_brk) #ifdef PIC PIC_PROLOGUE(%o5,%o4) - ld [%o5 + _C_LABEL(__minbrk)], %o4 - ld [%o4], %o1 ! %o1 = minbrk + ldx [%o5 + _C_LABEL(__minbrk)], %o4 + ldx [%o4], %o1 ! %o1 = minbrk cmp %o1, %o0 ! if (minbrk > %o0) bg,a 0f mov %o1, %o0 ! %o0 = minbrk @@ -75,15 +76,16 @@ ENTRY(_brk) mov %o0, %o2 ! save argument to syscall mov SYS_break, %g1 t ST_SYSCALL + set _C_LABEL(__curbrk), %o3 bcc,a 1f - ld [%o5 + _C_LABEL(__curbrk)], %o4 + ldx [%o5 + %o3], %o4 ERROR() 1: retl ! success, return 0 & record new break st %o2, [%o4] #else sethi %hi(_C_LABEL(__minbrk)), %o1 ! %o1 = minbrk - ld [%o1 + %lo(_C_LABEL(__minbrk))], %o1 + ldx [%o1 + %lo(_C_LABEL(__minbrk))], %o1 cmp %o1, %o0 ! if (minbrk > %o0) bg,a 0f mov %o1, %o0 ! %o0 = minbrk @@ -96,5 +98,5 @@ ENTRY(_brk) ERROR() 1: retl ! success, return 0 & record new break - st %o2, [%g1 + %lo(_C_LABEL(__curbrk))] + stx %o2, [%g1 + %lo(_C_LABEL(__curbrk))] #endif diff --git a/lib/libc/arch/sparc64/sys/cerror.S b/lib/libc/arch/sparc64/sys/cerror.S index 322097aa22c2..ae838269976c 100644 --- a/lib/libc/arch/sparc64/sys/cerror.S +++ b/lib/libc/arch/sparc64/sys/cerror.S @@ -1,4 +1,4 @@ -/* $NetBSD: cerror.S,v 1.2 1999/01/14 22:48:22 kleink Exp $ */ +/* $NetBSD: cerror.S,v 1.3 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1992, 1993 @@ -44,7 +44,7 @@ #if 0 .asciz "@(#)cerror.s 8.1 (Berkeley) 6/4/93" #else - RCSID("$NetBSD: cerror.S,v 1.2 1999/01/14 22:48:22 kleink Exp $") + RCSID("$NetBSD: cerror.S,v 1.3 2000/07/18 22:39:25 eeh Exp $") #endif #endif /* LIBC_SCCS and not lint */ @@ -63,7 +63,8 @@ FUNC(__cerror) .globl _C_LABEL(errno) #ifdef PIC FUNC(__cerror) - ld [%g1 + _C_LABEL(errno)], %g1 + PIC_PROLOGUE(%g1, %o3) + ldx [%g1 + _C_LABEL(errno)], %g1 st %o0, [%g1] mov -1, %o0 retl diff --git a/lib/libc/arch/sparc64/sys/ptrace.S b/lib/libc/arch/sparc64/sys/ptrace.S index 9c9cd30a4bd8..efd01ccf1b7d 100644 --- a/lib/libc/arch/sparc64/sys/ptrace.S +++ b/lib/libc/arch/sparc64/sys/ptrace.S @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.S,v 1.1 1998/09/11 04:56:34 eeh Exp $ */ +/* $NetBSD: ptrace.S,v 1.2 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1992, 1993 @@ -44,7 +44,7 @@ #if 0 .asciz "@(#)ptrace.s 8.1 (Berkeley) 6/4/93" #else - RCSID("$NetBSD: ptrace.S,v 1.1 1998/09/11 04:56:34 eeh Exp $") + RCSID("$NetBSD: ptrace.S,v 1.2 2000/07/18 22:39:25 eeh Exp $") #endif #endif /* SYSLIBC_SCCS and not lint */ @@ -53,7 +53,7 @@ ENTRY(ptrace) #ifdef PIC PIC_PROLOGUE(%g1,%g2) - ld [%g1 + _C_LABEL(errno)], %g1 + ldx [%g1 + _C_LABEL(errno)], %g1 st %g0, [%g1] #else sethi %hi(_C_LABEL(errno)), %g1 diff --git a/lib/libc/arch/sparc64/sys/sbrk.S b/lib/libc/arch/sparc64/sys/sbrk.S index 1d17bf0d0fbb..d3f040e25fa1 100644 --- a/lib/libc/arch/sparc64/sys/sbrk.S +++ b/lib/libc/arch/sparc64/sys/sbrk.S @@ -1,4 +1,4 @@ -/* $NetBSD: sbrk.S,v 1.5 2000/06/26 06:25:46 kleink Exp $ */ +/* $NetBSD: sbrk.S,v 1.6 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1992, 1993 @@ -44,7 +44,7 @@ #if 0 .asciz "@(#)sbrk.s 8.1 (Berkeley) 6/4/93" #else - RCSID("$NetBSD: sbrk.S,v 1.5 2000/06/26 06:25:46 kleink Exp $") + RCSID("$NetBSD: sbrk.S,v 1.6 2000/07/18 22:39:25 eeh Exp $") #endif #endif /* SYSLIBC_SCCS and not lint */ @@ -58,15 +58,17 @@ WEAK_ALIAS(sbrk, _sbrk) #endif .data + .align 8 _C_LABEL(__curbrk): - .long _C_LABEL(_end) + .xword _C_LABEL(_end) .text ENTRY(_sbrk) #ifdef PIC PIC_PROLOGUE(%o5,%o4) - ld [%o5 + _C_LABEL(__curbrk)], %o2 - ld [%o2], %o3 ! %o3 = old break + set _C_LABEL(__curbrk), %o3 + ldx [%o5 + %o3], %o2 + ldx [%o2], %o3 ! %o3 = old break add %o3, %o0, %o4 ! %o4 = new break mov %o4, %o0 ! copy for syscall mov SYS_break, %g1 @@ -76,10 +78,10 @@ ENTRY(_sbrk) ERROR() 1: retl ! and update curbrk - st %o4, [%o2] + stx %o4, [%o2] #else sethi %hi(_C_LABEL(__curbrk)), %o2 - ld [%o2 + %lo(_C_LABEL(__curbrk))], %o3 ! %o3 = old break + ldx [%o2 + %lo(_C_LABEL(__curbrk))], %o3 ! %o3 = old break add %o3, %o0, %o4 ! %o4 = new break mov %o4, %o0 ! copy for syscall mov SYS_break, %g1 @@ -89,5 +91,5 @@ ENTRY(_sbrk) ERROR() 1: retl ! and update curbrk - st %o4, [%o2 + %lo(_C_LABEL(__curbrk))] + stx %o4, [%o2 + %lo(_C_LABEL(__curbrk))] #endif diff --git a/lib/libc/arch/sparc64/sys/setlogin.S b/lib/libc/arch/sparc64/sys/setlogin.S index d02bb39c4e99..de7708a759b0 100644 --- a/lib/libc/arch/sparc64/sys/setlogin.S +++ b/lib/libc/arch/sparc64/sys/setlogin.S @@ -1,4 +1,4 @@ -/* $NetBSD: setlogin.S,v 1.1 1998/09/11 04:56:35 eeh Exp $ */ +/* $NetBSD: setlogin.S,v 1.2 2000/07/18 22:39:25 eeh Exp $ */ /* * Copyright (c) 1992, 1993 @@ -44,7 +44,7 @@ #if 0 .asciz "@(#)setlogin.s 8.1 (Berkeley) 6/4/93" #else - RCSID("$NetBSD: setlogin.S,v 1.1 1998/09/11 04:56:35 eeh Exp $") + RCSID("$NetBSD: setlogin.S,v 1.2 2000/07/18 22:39:25 eeh Exp $") #endif #endif /* SYSLIBC_SCCS and not lint */ @@ -55,7 +55,7 @@ SYSCALL(setlogin) #ifdef PIC PIC_PROLOGUE(%g1,%g2) - ld [%g1 + _C_LABEL(__logname_valid)], %g1 + ldx [%g1 + _C_LABEL(__logname_valid)], %g1 retl st %g0, [%g1] #else diff --git a/sys/arch/sparc64/include/asm.h b/sys/arch/sparc64/include/asm.h index 7fb954308a1e..8062e87436a1 100644 --- a/sys/arch/sparc64/include/asm.h +++ b/sys/arch/sparc64/include/asm.h @@ -1,4 +1,4 @@ -/* $NetBSD: asm.h,v 1.11 2000/07/14 20:59:07 eeh Exp $ */ +/* $NetBSD: asm.h,v 1.12 2000/07/18 22:38:11 eeh Exp $ */ /* * Copyright (c) 1994 Allen Briggs @@ -69,9 +69,9 @@ * to work without a stack frame (doing so requires saving %o7) . */ #define PIC_PROLOGUE(dest,tmp) \ - 3: rd %pc, tmp; \ - sethi %hi(_C_LABEL(_GLOBAL_OFFSET_TABLE_)-(3b-.)),dest; \ - or dest,%lo(_C_LABEL(_GLOBAL_OFFSET_TABLE_)-(3b-.)),dest; \ + sethi %hi(_GLOBAL_OFFSET_TABLE_-4),dest; \ + rd %pc, tmp; \ + or dest,%lo(_GLOBAL_OFFSET_TABLE_+4),dest; \ add dest,tmp,dest /*