Convert to use register prefixes. (0 -> %r0, etc.)
This commit is contained in:
parent
afbf483286
commit
1cddd41e0c
|
@ -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__ */
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
|
|
@ -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
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
|
|
@ -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
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue