Convert to use register prefixes. (0 -> %r0, etc.)

This commit is contained in:
matt 2002-07-30 06:07:56 +00:00
parent afbf483286
commit 1cddd41e0c
23 changed files with 424 additions and 424 deletions

View File

@ -1,13 +1,13 @@
/* $NetBSD: SYS.h,v 1.10 2002/05/26 12:24:57 wiz Exp $ */
/* $NetBSD: SYS.h,v 1.11 2002/07/30 06:07:56 matt Exp $ */
#include <machine/asm.h>
#include <sys/syscall.h>
#ifdef __STDC__
#define _DOSYSCALL(x) li 0,(SYS_ ## x) ;\
#define _DOSYSCALL(x) li %r0,(SYS_ ## x) ;\
sc
#else
#define _DOSYSCALL(x) li 0,(SYS_/**/x) ;\
#define _DOSYSCALL(x) li %r0,(SYS_/**/x) ;\
sc
#endif /* __STDC__ */

View File

@ -1,4 +1,4 @@
/* $NetBSD: __setjmp14.S,v 1.1 1998/10/03 12:30:38 tsubai Exp $ */
/* $NetBSD: __setjmp14.S,v 1.2 2002/07/30 06:07:57 matt Exp $ */
#include <sys/syscall.h>
@ -6,7 +6,7 @@
#if defined(LIBC_SCCS)
.text
.asciz "$NetBSD: __setjmp14.S,v 1.1 1998/10/03 12:30:38 tsubai Exp $"
.asciz "$NetBSD: __setjmp14.S,v 1.2 2002/07/30 06:07:57 matt Exp $"
#endif
/*
@ -20,33 +20,33 @@
*/
ENTRY(__setjmp14)
mr 6,3
li 3,1 # SIG_BLOCK
li 4,0
addi 5,6,100 # &sigmask
li 0,SYS___sigprocmask14
mr %r6,%r3
li %r3,1 # SIG_BLOCK
li %r4,0
addi %r5,%r6,100 # &sigmask
li %r0,SYS___sigprocmask14
sc # assume no error XXX
mflr 11
mfcr 12
mr 10,1
mr 9,2
stmw 8,4(6) # save r8-r31
li 3,0
mflr %r11
mfcr %r12
mr %r10,%r1
mr %r9,%r2
stmw %r8,4(%r6) # save r8-r31
li %r3,0
blr
ENTRY(__longjmp14)
lmw 8,4(3) # load r8-r31
mr 6,4
mtlr 11
mtcr 12
mr 2,9
mr 1,10
addi 4,3,100 # &sigmask
li 3,3 # SIG_SETMASK
li 5,0
li 0,SYS___sigprocmask14
lmw %r8,4(%r3) # load r8-r31
mr %r6,%r4
mtlr %r11
mtcr %r12
mr %r2,%r9
mr %r1,%r10
addi %r4,%r3,100 # &sigmask
li %r3,3 # SIG_SETMASK
li %r5,0
li %r0,SYS___sigprocmask14
sc # assume no error XXX
or. 3,6,6
or. %r3,%r6,%r6
bnelr
li 3,1
li %r3,1
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: __sigsetjmp14.S,v 1.1 1998/10/03 12:30:38 tsubai Exp $ */
/* $NetBSD: __sigsetjmp14.S,v 1.2 2002/07/30 06:07:57 matt Exp $ */
#include <sys/syscall.h>
@ -6,43 +6,43 @@
#if defined(LIBC_SCCS)
.text
.asciz "$NetBSD: __sigsetjmp14.S,v 1.1 1998/10/03 12:30:38 tsubai Exp $"
.asciz "$NetBSD: __sigsetjmp14.S,v 1.2 2002/07/30 06:07:57 matt Exp $"
#endif
ENTRY(__sigsetjmp14)
mr 6,3
or. 7,4,4
mr %r6,%r3
or. %r7,%r4,%r4
beq 1f
li 3,1 # SIG_BLOCK
li 4,0
addi 5,6,100 # &sigmask
li 0,SYS___sigprocmask14
li %r3,1 # SIG_BLOCK
li %r4,0
addi %r5,%r6,100 # &sigmask
li %r0,SYS___sigprocmask14
sc # assume no error XXX
1:
mflr 11
mfcr 12
mr 10,1
mr 9,2
stmw 7,0(6) # save r7-r31
li 3,0
mflr %r11
mfcr %r12
mr %r10,%r1
mr %r9,%r2
stmw %r7,0(%r6) # save r7-r31
li %r3,0
blr
ENTRY(__siglongjmp14)
lmw 7,0(3) # load r7-r31
mr 6,4
mtlr 11
mtcr 12
mr 2,9
mr 1,10
or. 7,7,7
lmw %r7,0(%r3) # load r7-r31
mr %r6,%r4
mtlr %r11
mtcr %r12
mr %r2,%r9
mr %r1,%r10
or. %r7,%r7,%r7
beq 1f
addi 4,3,100 # &sigmask
li 3,3 # SIG_SETMASK
li 5,0
li 0,SYS___sigprocmask14
addi %r4,%r3,100 # &sigmask
li %r3,3 # SIG_SETMASK
li %r5,0
li %r0,SYS___sigprocmask14
sc # assume no error XXX
1:
or. 3,6,6
or. %r3,%r6,%r6
bnelr
li 3,1
li %r3,1
blr

View File

@ -1,10 +1,10 @@
/* $NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $ */
/* $NetBSD: _setjmp.S,v 1.2 2002/07/30 06:07:57 matt Exp $ */
#include <machine/asm.h>
#if defined(LIBC_SCCS)
.text
.asciz "$NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $"
.asciz "$NetBSD: _setjmp.S,v 1.2 2002/07/30 06:07:57 matt Exp $"
#endif
/*
@ -18,21 +18,21 @@
*/
ENTRY(_setjmp)
mflr 11
mfcr 12
mr 10,1
mr 9,2
stmw 9,8(3)
li 3,0
blr
mflr %r11 /* save return address */
mfcr %r12 /* save condition register */
mr %r10,%r1 /* save stack pointer */
mr %r9,%r2 /* save GPR2 (not needed) */
stmw %r9,8(%r3) /* save r9..r31 */
li %r3,0 /* indicate success */
blr /* return */
ENTRY(_longjmp)
lmw 9,8(3)
mtlr 11
mtcr 12
mr 2,9
mr 1,10
or. 3,4,4
bnelr
li 3,1
blr
lmw %r9,8(%r3) /* save r9..r31 */
mtlr %r11 /* restore LR */
mtcr %r12 /* restore CR */
mr %r2,%r9 /* restore GPR2 (not needed) */
mr %r1,%r10 /* restore stack */
or. %r3,%r4,%r4 /* get return value */
bnelr /* return if not 0 */
li %r3,1 /* what's the point? */
blr /* return */

View File

@ -1,4 +1,4 @@
/* $NetBSD: setjmp.S,v 1.3 1998/10/03 12:30:38 tsubai Exp $ */
/* $NetBSD: setjmp.S,v 1.4 2002/07/30 06:07:57 matt Exp $ */
#include <sys/syscall.h>
@ -6,7 +6,7 @@
#if defined(LIBC_SCCS)
.text
.asciz "$NetBSD: setjmp.S,v 1.3 1998/10/03 12:30:38 tsubai Exp $"
.asciz "$NetBSD: setjmp.S,v 1.4 2002/07/30 06:07:57 matt Exp $"
#endif
/*
@ -20,32 +20,32 @@
*/
ENTRY(setjmp)
mr 6,3
li 3,1 # SIG_BLOCK
li 4,0
li 0,SYS_compat_13_sigprocmask13
mr %r6,%r3
li %r3,1 # SIG_BLOCK
li %r4,0
li %r0,SYS_compat_13_sigprocmask13
sc # assume no error XXX
mflr 11
mfcr 12
mr 10,1
mr 9,2
mr 8,3
stmw 8,4(6)
li 3,0
mflr %r11
mfcr %r12
mr %r10,%r1
mr %r9,%r2
mr %r8,%r3
stmw %r8,4(%r6)
li %r3,0
blr
ENTRY(longjmp)
lmw 8,4(3)
mr 6,4
mtlr 11
mtcr 12
mr 2,9
mr 1,10
mr 4,8
li 3,3 # SIG_SETMASK
li 0,SYS_compat_13_sigprocmask13
lmw %r8,4(%r3)
mr %r6,%r4
mtlr %r11
mtcr %r12
mr %r2,%r9
mr %r1,%r10
mr %r4,%r8
li %r3,3 # SIG_SETMASK
li %r0,SYS_compat_13_sigprocmask13
sc # assume no error XXX
or. 3,6,6
or. %r3,%r6,%r6
bnelr
li 3,1
li %r3,1
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigsetjmp.S,v 1.4 1998/10/03 12:30:38 tsubai Exp $ */
/* $NetBSD: sigsetjmp.S,v 1.5 2002/07/30 06:07:58 matt Exp $ */
#include <sys/syscall.h>
@ -6,42 +6,42 @@
#if defined(LIBC_SCCS)
.text
.asciz "$NetBSD: sigsetjmp.S,v 1.4 1998/10/03 12:30:38 tsubai Exp $"
.asciz "$NetBSD: sigsetjmp.S,v 1.5 2002/07/30 06:07:58 matt Exp $"
#endif
ENTRY(sigsetjmp)
mr 6,3
or. 7,4,4
mr %r6,%r3
or. %r7,%r4,%r4
beq 1f
li 3,1 # SIG_BLOCK
li 4,0
li 0,SYS_compat_13_sigprocmask13
li %r3,1 # SIG_BLOCK
li %r4,0
li %r0,SYS_compat_13_sigprocmask13
sc # assume no error XXX
1:
mflr 11
mfcr 12
mr 10,1
mr 9,2
mr 8,3
stmw 7,0(6)
li 3,0
mflr %r11
mfcr %r12
mr %r10,%r1
mr %r9,%r2
mr %r8,%r3
stmw %r7,0(%r6)
li %r3,0
blr
ENTRY(siglongjmp)
lmw 7,0(3)
mr 6,4
mtlr 11
mtcr 12
mr 2,9
mr 1,10
or. 7,7,7
lmw %r7,0(%r3)
mr %r6,%r4
mtlr %r11
mtcr %r12
mr %r2,%r9
mr %r1,%r10
or. %r7,%r7,%r7
beq 1f
mr 4,8
li 3,3 # SIG_SETMASK
li 0,SYS_compat_13_sigprocmask13
mr %r4,8
li %r3,3 # SIG_SETMASK
li %r0,SYS_compat_13_sigprocmask13
sc # assume no error XXX
1:
or. 3,6,6
or. %r3,%r6,%r6
bnelr
li 3,1
li %r3,1
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: bzero.S,v 1.4 2002/03/12 22:08:22 eeh Exp $ */
/* $NetBSD: bzero.S,v 1.5 2002/07/30 06:07:58 matt Exp $ */
/*-
* Copyright (C) 2001 Martin J. Laubach <mjl@netbsd.org>
@ -37,14 +37,14 @@
/*----------------------------------------------------------------------*/
/*
void bzero(void *b r3, size_t len r4);
void * memset(void *b r3, int c r4, size_t len r5);
void bzero(void *b %r3, size_t len %r4);
void * memset(void *b %r3, int c %r4, size_t len %r5);
*/
/*----------------------------------------------------------------------*/
#define r_dst r3
#define r_len r4
#define r_val r0
#define r_dst %r3
#define r_len %r4
#define r_val %r0
.text
.align 4
@ -53,14 +53,14 @@ ENTRY(bzero)
b cb_memset
ENTRY(memset)
cmplwi cr1, r5, 0
mr. r0, r4
mr r8, r3
cmplwi cr1, %r5, 0
mr. %r0, %r4
mr %r8, %r3
beqlr- cr1 /* Nothing to do */
rlwimi r0, r4, 8, 16, 23 /* word extend fill value */
rlwimi r0, r0, 16, 0, 15
mr r4, r5
rlwimi %r0, %r4, 8, 16, 23 /* word extend fill value */
rlwimi %r0, %r0, 16, 0, 15
mr %r4, %r5
bne- simple_fill /* =! 0, use trivial fill */
cb_memset:
@ -68,17 +68,17 @@ cb_memset:
#ifndef _KERNEL
/* First find out cache line size */
#ifdef PIC
mflr r9
mflr %r9
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
mtlr r9
lwz r5,cache_info@got(r10)
mflr %r10
mtlr %r9
lwz %r5,cache_info@got(%r10)
#else
lis r5,cache_info@h
ori r5,r5,cache_info@l
lis %r5,cache_info@h
ori %r5,%r5,cache_info@l
#endif
lwz r6, 4(r5)
cmpwi r6, -1
lwz %r6, 4(%r5)
cmpwi %r6, -1
bne+ cb_cacheline_known
/*----------------------------------------------------------------------*/
@ -94,142 +94,142 @@ cb_memset:
#define R0_SAVE 28
#define R8_SAVE 32
mflr r6
stw r6, 4(r1)
stwu r1, -STKFRAME_SZ(r1)
mflr %r6
stw %r6, 4(%r1)
stwu %r1, -STKFRAME_SZ(%r1)
stw r8, R8_SAVE(r1)
stw r3, R3_SAVE(r1)
stw r4, R4_SAVE(r1)
stw r0, R0_SAVE(r1)
stw %r8, R8_SAVE(%r1)
stw %r3, R3_SAVE(%r1)
stw %r4, R4_SAVE(%r1)
stw %r0, R0_SAVE(%r1)
li r0, CTL_MACHDEP /* Construct MIB */
stw r0, MIB(r1)
li r0, CPU_CACHEINFO
stw r0, MIB+4(r1)
li %r0, CTL_MACHDEP /* Construct MIB */
stw %r0, MIB(%r1)
li %r0, CPU_CACHEINFO
stw %r0, MIB+4(%r1)
li r0, 4*4 /* Oldlenp := 4*4 */
stw r0, OLDPLEN(r1)
li %r0, 4*4 /* Oldlenp := 4*4 */
stw %r0, OLDPLEN(%r1)
addi r3, r1, MIB
li r4, 2 /* namelen */
/* r5 already contains &cache_info */
addi r6, r1, OLDPLEN
li r7, 0
li r8, 0
addi %r3, %r1, MIB
li %r4, 2 /* namelen */
/* %r5 already contains &cache_info */
addi %r6, %r1, OLDPLEN
li %r7, 0
li %r8, 0
bl PIC_PLT(_C_LABEL(sysctl))
cmpwi r3, 0 /* Check result */
cmpwi %r3, 0 /* Check result */
beq 1f
/* Failure, try older sysctl */
li r0, CTL_MACHDEP /* Construct MIB */
stw r0, MIB(r1)
li r0, CPU_CACHELINE
stw r0, MIB+4(r1)
li %r0, CTL_MACHDEP /* Construct MIB */
stw %r0, MIB(%r1)
li %r0, CPU_CACHELINE
stw %r0, MIB+4(%r1)
li r0, 4 /* Oldlenp := 4 */
stw r0, OLDPLEN(r1)
li %r0, 4 /* Oldlenp := 4 */
stw %r0, OLDPLEN(%r1)
addi r3, r1, MIB
li r4, 2 /* namelen */
addi %r3, %r1, MIB
li %r4, 2 /* namelen */
#ifdef PIC
mflr r9
mflr %r9
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
mtlr r9
lwz r5,cache_info@got(r10)
addi r5, r5, 4
mflr %r10
mtlr %r9
lwz %r5,cache_info@got(%r10)
addi %r5, %r5, 4
#else
lis r5,cache_info+4@h
ori r5,r5,cache_info+4@l
lis %r5,cache_info+4@h
ori %r5,%r5,cache_info+4@l
#endif
addi r6, r1, OLDPLEN
li r7, 0
li r8, 0
addi %r6, %r1, OLDPLEN
li %r7, 0
li %r8, 0
bl PIC_PLT(_C_LABEL(sysctl))
1:
lwz r8, R8_SAVE(r1)
lwz r3, R3_SAVE(r1)
lwz r4, R4_SAVE(r1)
lwz r0, R0_SAVE(r1)
lwz %r8, R8_SAVE(%r1)
lwz %r3, R3_SAVE(%r1)
lwz %r4, R4_SAVE(%r1)
lwz %r0, R0_SAVE(%r1)
#ifdef PIC
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9, cache_info@got(r10)
lwz r9, 4(r9)
mflr %r10
lwz %r9, cache_info@got(%r10)
lwz %r9, 4(%r9)
#else
lis r5, cache_info+4@ha
lwz r9, cache_info+4@l(r5)
lis %r5, cache_info+4@ha
lwz %r9, cache_info+4@l(%r5)
#endif
la r1, STKFRAME_SZ(r1)
lwz r5, 4(r1)
mtlr r5
la %r1, STKFRAME_SZ(%r1)
lwz %r5, 4(%r1)
mtlr %r5
cntlzw r6, r9 /* compute shift value */
li r5, 31
subf r5, r6, r5
cntlzw %r6, %r9 /* compute shift value */
li %r5, 31
subf %r5, %r6, %r5
#ifdef PIC
lwz r6, cache_sh@got(r10)
stw r5, 0(r6)
lwz %r6, cache_sh@got(%r10)
stw %r5, 0(%r6)
#else
lis r6, cache_sh@ha
stw r5, cache_sh@l(r6)
lis %r6, cache_sh@ha
stw %r5, cache_sh@l(%r6)
#endif
/*----------------------------------------------------------------------*/
/* Okay, we know the cache line size (r9) and shift value (r10) */
/* Okay, we know the cache line size (%r9) and shift value (%r10) */
cb_cacheline_known:
#ifdef PIC
lwz r5, cache_info@got(r10)
lwz r9, 4(r5)
lwz r5, cache_sh@got(r10)
lwz r10, 0(r5)
lwz %r5, cache_info@got(%r10)
lwz %r9, 4(%r5)
lwz %r5, cache_sh@got(%r10)
lwz %r10, 0(%r5)
#else
lis r9, cache_info+4@ha
lwz r9, cache_info+4@l(r9)
lis r10, cache_sh@ha
lwz r10, cache_sh@l(r10)
lis %r9, cache_info+4@ha
lwz %r9, cache_info+4@l(%r9)
lis %r10, cache_sh@ha
lwz %r10, cache_sh@l(%r10)
#endif
#else /* _KERNEL */
#ifdef MULTIPROCESSOR
mfspr r10, 0 /* Get cpu_info pointer */
mfsprg %r10, 0 /* Get cpu_info pointer */
#else
lis r10, cpu_info_store@ha
addi r10, r10, cpu_info_store@l
lis %r10, cpu_info_store@ha
addi %r10, %r10, cpu_info_store@l
#endif
lwz r9, CPU_CI+4(r10) /* Load D$ line size */
cntlzw r10, r9 /* Calculate shift.. */
li r6, 31
subf r10, r10, r6
lwz %r9, CPU_CI+4(%r10) /* Load D$ line size */
cntlzw %r10, %r9 /* Calculate shift.. */
li %r6, 31
subf %r10, %r10, %r6
#endif /* _KERNEL */
/* Back in memory filling business */
cmplwi cr1, r_len, 0 /* Nothing to do? */
add r5, r9, r9
cmplw r_len, r5 /* <= 2*CL bytes to move? */
add %r5, %r9, %r9
cmplw r_len, %r5 /* <= 2*CL bytes to move? */
beqlr- cr1 /* then do nothing */
blt+ simple_fill /* a trivial fill routine */
/* Word align the block, fill bytewise until dst even*/
andi. r5, r_dst, 0x03
li r6, 4
andi. %r5, r_dst, 0x03
li %r6, 4
beq+ cb_aligned_w /* already aligned to word? */
subf r5, r5, r6 /* bytes to fill to align4 */
subf %r5, %r5, %r6 /* bytes to fill to align4 */
#if USE_STSWX
mtxer r5
stswx r0, 0, r_dst
add r_dst, r5, r_dst
mtxer %r5
stswx %r0, 0, r_dst
add r_dst, %r5, r_dst
#else
mtctr r5
mtctr %r5
subi r_dst, r_dst, 1
1: stbu r_val, 1(r_dst) /* Fill bytewise */
@ -237,21 +237,21 @@ cb_cacheline_known:
addi r_dst, r_dst, 1
#endif
subf r_len, r5, r_len
subf r_len, %r5, r_len
cb_aligned_w: /* Cache block align, fill wordwise until dst aligned */
/* I know I have something to do since we had > 2*CL initially */
/* so no need to check for r_len = 0 */
rlwinm. r5, r_dst, 30, 29, 31
srwi r6, r9, 2
rlwinm. %r5, r_dst, 30, 29, 31
srwi %r6, %r9, 2
beq cb_aligned_cb /* already on CL boundary? */
subf r5, r5, r6 /* words to fill to alignment */
mtctr r5
slwi r5, r5, 2
subf r_len, r5, r_len
subf %r5, %r5, %r6 /* words to fill to alignment */
mtctr %r5
slwi %r5, %r5, 2
subf r_len, %r5, r_len
subi r_dst, r_dst, 4
1: stwu r_val, 4(r_dst) /* Fill wordwise */
@ -260,15 +260,15 @@ cb_aligned_w: /* Cache block align, fill wordwise until dst aligned */
cb_aligned_cb: /* no need to check r_len, see above */
srw. r5, r_len, r10 /* Number of cache blocks */
mtctr r5
srw. %r5, r_len, %r10 /* Number of cache blocks */
mtctr %r5
beq cblocks_done
slw r5, r5, r10
subf r_len, r5, r_len
slw %r5, %r5, %r10
subf r_len, %r5, r_len
1: dcbz 0, r_dst /* Clear blockwise */
add r_dst, r_dst, r9
add r_dst, r_dst, %r9
bdnz 1b
cblocks_done: /* still CL aligned, but less than CL bytes left */
@ -291,47 +291,47 @@ simple_fill:
#else
cmplwi cr1, r_len, 8 /* < 8 bytes to move? */
#endif
andi. r5, r_dst, 0x03 /* bytes to fill to align4 */
andi. %r5, r_dst, 0x03 /* bytes to fill to align4 */
blt cr1, sf_bytewise /* trivial byte mover */
li r6, 4
subf r5, r5, r6
li %r6, 4
subf %r5, %r5, %r6
beq+ sf_aligned_w /* dest is word aligned */
#if USE_STSWX
mtxer r5
stswx r0, 0, r_dst
add r_dst, r5, r_dst
mtxer %r5
stswx %r0, 0, r_dst
add r_dst, %r5, r_dst
#else
mtctr r5 /* nope, then fill bytewise */
mtctr %r5 /* nope, then fill bytewise */
subi r_dst, r_dst, 1 /* until it is */
1: stbu r_val, 1(r_dst)
bdnz 1b
addi r_dst, r_dst, 1
#endif
subf r_len, r5, r_len
subf r_len, %r5, r_len
sf_aligned_w: /* no need to check r_len since it were >= 8 bytes initially */
#if USE_STSWX
mr r6, r0
mr r7, r0
mr %r6, %r0
mr %r7, %r0
srwi r5, r_len, 3
mtctr r5
srwi %r5, r_len, 3
mtctr %r5
slwi r5, r5, 3 /* adjust len */
subf. r_len, r5, r_len
slwi %r5, %r5, 3 /* adjust len */
subf. r_len, %r5, r_len
1: stswi r6, r_dst, 8
1: stswi %r6, r_dst, 8
addi r_dst, r_dst, 8
bdnz 1b
#else
srwi r5, r_len, 2 /* words to fill */
mtctr r5
srwi %r5, r_len, 2 /* words to fill */
mtctr %r5
slwi r5, r5, 2
subf. r_len, r5, r_len /* adjust len for fill */
slwi %r5, %r5, 2
subf. r_len, %r5, r_len /* adjust len for fill */
subi r_dst, r_dst, 4
1: stwu r_val, 4(r_dst)
@ -341,17 +341,17 @@ sf_aligned_w: /* no need to check r_len since it were >= 8 bytes initially */
sf_word_done: bne- sf_bytewise
sf_return: mr r3, r8 /* restore orig ptr */
sf_return: mr %r3, %r8 /* restore orig ptr */
blr /* for memset functionality */
sf_bytewise:
#if USE_STSWX
mr r5, r0
mr r6, r0
mr r7, r0
mr %r5, %r0
mr %r6, %r0
mr %r7, %r0
mtxer r_len
stswx r5, 0, r_dst
stswx %r5, 0, r_dst
#else
mtctr r_len
@ -359,7 +359,7 @@ sf_bytewise:
1: stbu r_val, 1(r_dst)
bdnz 1b
#endif
mr r3, r8 /* restore orig ptr */
mr %r3, %r8 /* restore orig ptr */
blr /* for memset functionality */
/*----------------------------------------------------------------------*/

View File

@ -1,4 +1,4 @@
/* $NetBSD: ffs.S,v 1.1 2001/11/25 01:09:59 mjl Exp $ */
/* $NetBSD: ffs.S,v 1.2 2002/07/30 06:07:58 matt Exp $ */
/*-
* Copyright (C) 2001 Martin J. Laubach <mjl@netbsd.org>
@ -31,11 +31,11 @@
.align 4
ENTRY(ffs)
neg r4, r3
and r3, r4, r3
cntlzw r3, r3
li r0, 32
subf r3, r3, r0
neg %r4, %r3
and %r3, %r4, %r3
cntlzw %r3, %r3
li %r0, 32
subf %r3, %r3, %r0
blr
/*----------------------------------------------------------------------*/

View File

@ -1,4 +1,4 @@
/* $NetBSD: strlen.S,v 1.1 2001/11/30 02:26:35 mjl Exp $ */
/* $NetBSD: strlen.S,v 1.2 2002/07/30 06:07:58 matt Exp $ */
/*-
* Copyright (C) 2001 Martin J. Laubach <mjl@netbsd.org>
@ -64,49 +64,49 @@
ENTRY(strlen)
/* Setup constants */
lis r10, 0x7f7f
lis r9, 0xfefe
ori r10, r10, 0x7f7f
ori r9, r9, 0xfeff
lis %r10, 0x7f7f
lis %r9, 0xfefe
ori %r10, %r10, 0x7f7f
ori %r9, %r9, 0xfeff
/* Mask out leading bytes on non aligned strings */
rlwinm. r8, r3, 3, 27, 28 /* leading bits to mask */
clrrwi r5, r3, 2 /* clear low 2 addr bits */
li r0, -1
rlwinm. %r8, %r3, 3, 27, 28 /* leading bits to mask */
clrrwi %r5, %r3, 2 /* clear low 2 addr bits */
li %r0, -1
beq+ 3f /* skip alignment if already */
/* aligned */
srw r0, r0, r8 /* make 0000...1111 mask */
srw %r0, %r0, %r8 /* make 0000...1111 mask */
lwz r7, 0(r5)
nor r0, r0, r0 /* invert mask */
or r7, r7, r0 /* make leading bytes != 0 */
lwz %r7, 0(%r5)
nor %r0, %r0, %r0 /* invert mask */
or %r7, %r7, %r0 /* make leading bytes != 0 */
b 2f
3: subi r5, r5, 4
3: subi %r5, %r5, 4
1: lwzu r7, 4(r5) /* fetch data word */
1: lwzu %r7, 4(%r5) /* fetch data word */
2: nor r0, r7, r10 /* do step 1 */
add r6, r7, r9
and. r0, r0, r6
2: nor %r0, %r7, %r10 /* do step 1 */
add %r6, %r7, %r9
and. %r0, %r0, %r6
beq+ 1b /* no NUL bytes here */
and r8, r7, r10 /* ok, a NUL is somewhere */
or r7, r7, r10 /* do step 2 to find out */
add r0, r8, r10 /* where */
nor r8, r7, r0
and %r8, %r7, %r10 /* ok, a NUL is somewhere */
or %r7, %r7, %r10 /* do step 2 to find out */
add %r0, %r8, %r10 /* where */
nor %r8, %r7, %r0
cntlzw r0, r8 /* offset from this word */
srwi r4, r0, 3
cntlzw %r0, %r8 /* offset from this word */
srwi %r4, %r0, 3
add r4, r5, r4 /* r4 contains end pointer */
add %r4, %r5, %r4 /* r4 contains end pointer */
/* NOTE: Keep it so this function returns the end pointer
in r4, so we can it use from other str* calls (strcat
comes to mind */
subf r3, r3, r4
subf %r3, %r3, %r4
blr
/*----------------------------------------------------------------------*/

View File

@ -1,4 +1,4 @@
/* $NetBSD: Ovfork.S,v 1.3 1998/12/02 19:29:57 thorpej Exp $ */
/* $NetBSD: Ovfork.S,v 1.4 2002/07/30 06:07:59 matt Exp $ */
/*
* pid = vfork();
@ -13,6 +13,6 @@ WARN_REFERENCES(vfork, \
"warning: reference to compatibility vfork(); include <unistd.h> for correct reference")
SYSCALL(vfork)
addi 4,4,-1 # from 1 to 0 in child, 0 to -1 in parent
and 3,3,4 # return 0 in child, pid in parent
addi %r4,%r4,-1 # from 1 to 0 in child, 0 to -1 in parent
and %r3,%r3,%r4 # return 0 in child, pid in parent
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: __clone.S,v 1.1 2001/07/20 17:19:15 tsubai Exp $ */
/* $NetBSD: __clone.S,v 1.2 2002/07/30 06:07:59 matt Exp $ */
/*-
* Copyright (c) 2001 Tsubai Masanari. All rights reserved.
@ -40,27 +40,27 @@ ENTRY(__clone)
/*
* Sanity checks: func and stack may not be NULL.
*/
cmpwi 3,0
cmpwi %r3,0
beq 1f
cmpwi 4,0
cmpwi %r4,0
beq 1f
mr 7,3 /* Save fn in r7. */
mr 3,5
li 0,SYS___clone /* (flags, stack) */
mr %r7,%r3 /* Save fn in r7. */
mr %r3,%r5
li %r0,SYS___clone /* (flags, stack) */
sc
bso 2f /* error... */
cmpwi 3,0
cmpwi %r3,0
bnelr /* We're the parent, just return. */
mtlr 7 /* fn */
mr 3,6 /* arg */
mtlr %r7 /* fn */
mr %r3,%r6 /* arg */
blrl /* Call the clone's entry point. */
bl PIC_PLT(_C_LABEL(_exit))
1:
li 3,EINVAL
li %r3,EINVAL
2:
b PIC_PLT(_C_LABEL(__cerror))

View File

@ -1,4 +1,4 @@
/* $NetBSD: __sigtramp1.S,v 1.1 2002/07/09 23:32:38 thorpej Exp $ */
/* $NetBSD: __sigtramp1.S,v 1.2 2002/07/30 06:07:59 matt Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -49,8 +49,8 @@
* sp-> sigcontext structure
*/
ENTRY_NOPROFILE(__sigtramp_sigcontext_1)
addi r1,r1,-16 /* space for callee */
addi %r1,%r1,-16 /* space for callee */
blrl /* call handler */
addi r3,r1,16 /* compute address of sigcontext */
addi %r3,%r1,16 /* compute address of sigcontext */
_DOSYSCALL(__sigreturn14) /* and call sigreturn */
_DOSYSCALL(exit) /* or exit with errno if failed */

View File

@ -1,4 +1,4 @@
/* $NetBSD: __vfork14.S,v 1.2 1998/05/25 15:28:02 ws Exp $ */
/* $NetBSD: __vfork14.S,v 1.3 2002/07/30 06:07:59 matt Exp $ */
/*
* pid = vfork();
@ -10,6 +10,6 @@
#include "SYS.h"
SYSCALL(__vfork14)
addi 4,4,-1 # from 1 to 0 in child, 0 to -1 in parent
and 3,3,4 # return 0 in child, pid in parent
addi %r4,%r4,-1 # from 1 to 0 in child, 0 to -1 in parent
and %r3,%r3,%r4 # return 0 in child, pid in parent
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: brk.S,v 1.9 2000/06/26 06:25:43 kleink Exp $ */
/* $NetBSD: brk.S,v 1.10 2002/07/30 06:07:59 matt Exp $ */
#include "SYS.h"
@ -18,29 +18,29 @@ _C_LABEL(__minbrk):
ENTRY(_brk)
#ifdef PIC
mflr 10
mflr %r10
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr 9
mtlr 10
lwz 5,_C_LABEL(_end)@got(9)
mflr %r9
mtlr %r10
lwz %r5,_C_LABEL(_end)@got(%r9)
#else
lis 5,_C_LABEL(_end)@ha # r5 = &_end
addi 5,5,_C_LABEL(_end)@l
lis %r5,_C_LABEL(_end)@ha # r5 = &_end
addi %r5,%r5,_C_LABEL(_end)@l
#endif
cmplw 5,3 # if (&_end <= r3)
cmplw %r5,%r3 # if (&_end <= r3)
bgt 0f
mr 5,3 # r5 = r3
mr %r5,%r3 # r5 = r3
0:
mr 3,5 # new break value
li 0,SYS_break
mr %r3,%r5 # new break value
li %r0,SYS_break
sc # assume, that r5 is kept
bso 1f
#ifdef PIC
lwz 6,_C_LABEL(__curbrk)@got(9)
stw 5,0(6)
lwz %r6,_C_LABEL(__curbrk)@got(%r9)
stw %r5,0(%r6)
#else
lis 6,_C_LABEL(__curbrk)@ha # record new break
stw 5,_C_LABEL(__curbrk)@l(6)
lis %r6,_C_LABEL(__curbrk)@ha # record new break
stw %r5,_C_LABEL(__curbrk)@l(%r6)
#endif
blr # return 0

View File

@ -1,4 +1,4 @@
/* $NetBSD: cerror.S,v 1.5 2000/01/27 14:58:48 kleink Exp $ */
/* $NetBSD: cerror.S,v 1.6 2002/07/30 06:07:59 matt Exp $ */
#include <machine/asm.h>
#include "SYS.h"
@ -9,30 +9,30 @@
ENTRY(__cerror)
#ifdef _REENTRANT
mflr 0
stwu 1,-16(1) # allocate new stack frame
stw 0,20(1)
stw 31,8(1)
mr 31,3 # stash away in callee-saved register
mflr %r0
stwu %r1,-16(%r1) # allocate new stack frame
stw %r0,20(%r1)
stw %r31,8(%r1)
mr %r31,%r3 # stash away in callee-saved register
bl PIC_PLT(_C_LABEL(__errno))
stw 31,0(3)
lwz 0,20(1)
lwz 31,8(1)
mtlr 0
la 1,16(1)
stw %r31,0(%r3)
lwz %r0,20(%r1)
lwz %r31,8(%r1)
mtlr %r0
la %r1,16(%r1)
#else
#ifdef PIC
mflr 10
mflr %r10
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr 4
lwz 4,_C_LABEL(errno)@got(4)
stw 3,0(4)
mtlr 10
mflr %r4
lwz %r4,_C_LABEL(errno)@got(%r4)
stw %r3,0(%r4)
mtlr %r10
#else
lis 4,_C_LABEL(errno)@ha
stw 3,_C_LABEL(errno)@l(4)
lis %r4,_C_LABEL(errno)@ha
stw %r3,_C_LABEL(errno)@l(%r4)
#endif /* PIC */
#endif /* _REENTRANT */
li 3,-1
li 4,-1
li %r3,-1
li %r4,-1
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: fork.S,v 1.3 2000/06/26 06:33:01 kleink Exp $ */
/* $NetBSD: fork.S,v 1.4 2002/07/30 06:08:00 matt Exp $ */
/*
* pid = fork();
@ -14,6 +14,6 @@ WEAK_ALIAS(fork, _fork)
#endif
_SYSCALL(_fork,fork)
addi 4,4,-1 # from 1 to 0 in child, 0 to -1 in parent
and 3,3,4 # return 0 in child, pid in parent
addi %r4,%r4,-1 # from 1 to 0 in child, 0 to -1 in parent
and %r3,%r3,%r4 # return 0 in child, pid in parent
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: pipe.S,v 1.6 2000/09/28 08:38:54 kleink Exp $ */
/* $NetBSD: pipe.S,v 1.7 2002/07/30 06:08:00 matt Exp $ */
#include "SYS.h"
@ -7,13 +7,13 @@ WEAK_ALIAS(pipe, _pipe)
#endif
ENTRY(_pipe)
mr 5,3 # save pointer
li 0,SYS_pipe
mr %r5,%r3 # save pointer
li %r0,SYS_pipe
sc # assume, that r5 is kept
bso 1f
stw 3,0(5) # success, store fds
stw 4,4(5)
li 3,0
stw %r3,0(%r5) # success, store fds
stw %r4,4(%r5)
li %r3,0
blr # and return 0
1:
b PIC_PLT(_C_LABEL(__cerror))

View File

@ -1,44 +1,44 @@
/* $NetBSD: ptrace.S,v 1.3 2000/02/23 20:16:57 kleink Exp $ */
/* $NetBSD: ptrace.S,v 1.4 2002/07/30 06:08:00 matt Exp $ */
#include "SYS.h"
ENTRY(ptrace)
#ifdef _REENTRANT
mflr 0
stwu 1,-32(1)
stw 0,36(1)
stw 3,8(1)
stw 4,12(1)
stw 5,16(1)
stw 6,20(1)
mflr %r0
stwu %r1,-32(%r1)
stw %r0,36(%r1)
stw %r3,8(%r1)
stw %r4,12(%r1)
stw %r5,16(%r1)
stw %r6,20(%r1)
bl PIC_PLT(_C_LABEL(__errno))
li 7,0
stw 7,0(3)
li %r7,0
stw %r7,0(%r3)
lwz 3,8(1)
lwz 4,12(1)
lwz 5,16(1)
lwz 0,36(1)
lwz 6,20(1)
mtlr 0
la 1,32(1)
lwz %r3,8(%r1)
lwz %r4,12(%r1)
lwz %r5,16(%r1)
lwz %r0,36(%r1)
lwz %r6,20(%r1)
mtlr %r0
la %r1,32(%r1)
#else
#ifdef PIC
mflr 0
mflr %r0
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr 7
lwz 7,_C_LABEL(errno)@got(7)
li 8,0
stw 8,0(7)
mflr %r7
lwz %r7,_C_LABEL(errno)@got(%r7)
li %r8,0
stw %r8,0(%r7)
mtlr 0
#else
lis 7,_C_LABEL(errno)@ha
li 8,0
stw 8,_C_LABEL(errno)@l(7)
lis %r7,_C_LABEL(errno)@ha
li %r8,0
stw %r8,_C_LABEL(errno)@l(%r7)
#endif /* PIC */
#endif /* _REENTRANT */
li 0,SYS_ptrace
li %r0,SYS_ptrace
sc
bso 1f
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: sbrk.S,v 1.8 2000/06/26 06:25:44 kleink Exp $ */
/* $NetBSD: sbrk.S,v 1.9 2002/07/30 06:08:00 matt Exp $ */
#include "SYS.h"
@ -16,26 +16,26 @@ _C_LABEL(__curbrk):
ENTRY(_sbrk)
#ifdef PIC
mflr 10
mflr %r10
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr 5
mtlr 10
lwz 5,_C_LABEL(__curbrk)@got(5)
lwz 6,0(5)
mflr %r5
mtlr %r10
lwz %r5,_C_LABEL(__curbrk)@got(%r5)
lwz %r6,0(%r5)
#else
lis 5,_C_LABEL(__curbrk)@ha
lwz 6,_C_LABEL(__curbrk)@l(5) # r6 = old break
lis %r5,_C_LABEL(__curbrk)@ha
lwz %r6,_C_LABEL(__curbrk)@l(%r5) # r6 = old break
#endif
add 3,3,6
mr 7,3 # r7 = new break
li 0,SYS_break
add %r3,%r3,%r6
mr %r7,%r3 # r7 = new break
li %r0,SYS_break
sc # break(new_break)
bso 1f
mr 3,6 # set return value
mr %r3,%r6 # set return value
#ifdef PIC
stw 7,0(5)
stw %r7,0(%r5)
#else
stw 7,_C_LABEL(__curbrk)@l(5) # record new break
stw %r7,_C_LABEL(__curbrk)@l(%r5) # record new break
#endif
blr
1:

View File

@ -1,4 +1,4 @@
/* $NetBSD: setlogin.S,v 1.3 1998/11/24 11:14:57 tsubai Exp $ */
/* $NetBSD: setlogin.S,v 1.4 2002/07/30 06:08:01 matt Exp $ */
#include "SYS.h"
@ -6,16 +6,16 @@
SYSCALL(setlogin)
#ifdef PIC
mflr 10
mflr %r10
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr 4
lwz 4,_C_LABEL(__logname_valid)@got(4)
li 5,0
stw 5,0(4)
mtlr 10
mflr %r4
lwz %r4,_C_LABEL(__logname_valid)@got(%r4)
li %r5,0
stw %r5,0(%r4)
mtlr %r10
#else
lis 4,_C_LABEL(__logname_valid)@ha
li 5,0
stw 5,_C_LABEL(__logname_valid)@l(4)
lis %r4,_C_LABEL(__logname_valid)@ha
li %r5,0
stw %r5,_C_LABEL(__logname_valid)@l(%r4)
#endif
blr

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigpending.S,v 1.7 1999/01/14 22:48:21 kleink Exp $ */
/* $NetBSD: sigpending.S,v 1.8 2002/07/30 06:08:01 matt Exp $ */
#include "SYS.h"
@ -6,12 +6,12 @@ WARN_REFERENCES(sigpending, \
"warning: reference to compatibility sigpending(); include <signal.h> for correct reference")
ENTRY(sigpending)
mr 5,3 # save pointer
li 0,SYS_compat_13_sigpending13
mr %r5,%r3 # save pointer
li %r0,SYS_compat_13_sigpending13
sc # sigpending()
bso 1f
stw 3,0(5) # store return value
li 3,0 # and return 0
stw %r3,0(%r5) # store return value
li %r3,0 # and return 0
blr
1:
b PIC_PLT(_C_LABEL(__cerror))

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigprocmask.S,v 1.7 1999/01/14 22:48:21 kleink Exp $ */
/* $NetBSD: sigprocmask.S,v 1.8 2002/07/30 06:08:01 matt Exp $ */
#include "SYS.h"
@ -9,21 +9,21 @@ WARN_REFERENCES(sigprocmask, \
* sigprocmask(int how, sigset_t *set, sigset_t *oset)
*/
ENTRY(sigprocmask)
or. 4,4,4 # set == NULL?
li 6,1 # how = SIG_BLOCK
or. %r4,%r4,%r4 # set == NULL?
li %r6,1 # how = SIG_BLOCK
beq 1f
lwz 4,0(4) # if not, replace it in r4 with *set
mr 6,3
lwz %r4,0(%r4) # if not, replace it in r4 with *set
mr %r6,%r3
1:
mr 3,6 # ... using sigprocmask(SIG_BLOCK)
li 0,SYS_compat_13_sigprocmask13
mr %r3,%r6 # ... using sigprocmask(SIG_BLOCK)
li %r0,SYS_compat_13_sigprocmask13
sc
bso 3f
or. 5,5,5 # check to see of oset requested
or. %r5,%r5,%r5 # check to see of oset requested
beq 2f # if oset != NULL,
stw 3,0(5) # *oset = oldmask
stw %r3,0(%r5) # *oset = oldmask
2:
li 3,0
li %r3,0
blr # in any case, return 0
3:
b PIC_PLT(_C_LABEL(__cerror))

View File

@ -1,4 +1,4 @@
/* $NetBSD: sigsuspend.S,v 1.7 1999/01/14 22:48:22 kleink Exp $ */
/* $NetBSD: sigsuspend.S,v 1.8 2002/07/30 06:08:01 matt Exp $ */
#include "SYS.h"
@ -6,7 +6,7 @@ WARN_REFERENCES(sigsuspend, \
"warning: reference to compatibility sigsuspend(); include <signal.h> for correct reference")
ENTRY(sigsuspend)
lwz 3,0(3) # indirect to mask arg
li 0,SYS_compat_13_sigsuspend13
lwz %r3,0(%r3) # indirect to mask arg
li %r0,SYS_compat_13_sigsuspend13
sc
b PIC_PLT(_C_LABEL(__cerror)) # always terminates with EINTR