## diffname carrera/l.s 1993/0903
## diff -e /dev/null /n/fornaxdump/1993/0903/sys/src/brazil/carrera/l.s
0a
#include "mem.h"
#define SP R29
#define PROM (KSEG1+0x1C000000)
#define NOOP WORD $0x27
#define FCRNOOP NOOP; NOOP; NOOP
#define WAIT NOOP; NOOP
#define NOOP4 NOOP; NOOP; NOOP; NOOP
#define ERET NOOP4;NOOP4;WORD $0x42000018;NOOP4;NOOP4
#define CONST(x,r) MOVW $((x)&0xffff0000), r; OR $((x)&0xffff), r
/*
* R4000 instructions
*/
#define LD(base, rt) WORD $((067<<26)|((base)<<21)|((rt)<<16))
#define STD(rt, base) WORD $((077<<26)|((base)<<21)|((rt)<<16))
#define DSLL(sa, rt, rd) WORD $(((rt)<<16)|((rd)<<11)|((sa)<<6)|070)
#define DSRA(sa, rt, rd) WORD $(((rt)<<16)|((rd)<<11)|((sa)<<6)|073)
#define LL(base, rt) WORD $((060<<26)|((base)<<21)|((rt)<<16))
#define SC(base, rt) WORD $((070<<26)|((base)<<21)|((rt)<<16))
/*
* Boot first processor
*/
TEXT start(SB), $-4
MOVW $setR30(SB), R30
MOVW $(CU1|INTR7|INTR6|INTR5|INTR4|INTR3|INTR2|INTR1|INTR0), R1
MOVW R1, M(STATUS)
WAIT
MOVW $TLBROFF, R1
MOVW R1, M(WIRED)
MOVW $((0x1C<<7)|(1<<24)), R1
MOVW R1, FCR31 /* permit only inexact and underflow */
NOOP
MOVD $0.5, F26
SUBD F26, F26, F24
ADDD F26, F26, F28
ADDD F28, F28, F30
MOVD F24, F0
MOVD F24, F2
MOVD F24, F4
MOVD F24, F6
MOVD F24, F8
MOVD F24, F10
MOVD F24, F12
MOVD F24, F14
MOVD F24, F16
MOVD F24, F18
MOVD F24, F20
MOVD F24, F22
MOVW $MACHADDR, R(MACH)
ADDU $(BY2PG-4), R(MACH), SP
MOVW $0, R(USER)
MOVW R0, 0(R(MACH))
MOVW $edata(SB), R1
MOVW $end(SB), R2
clrbss:
MOVB $0, (R1)
ADDU $1, R1
BNE R1, R2, clrbss
MOVW R4, _argc(SB)
MOVW R5, _argv(SB)
MOVW R6, _env(SB)
JAL main(SB)
JMP (R0)
/*
* Take first processor into user mode
* - argument is stack pointer to user
*/
TEXT touser(SB), $-4
MOVW $(UTZERO+32), R2 /* header appears in text */
MOVW (R2), R3 /* fault now */
MOVW M(STATUS), R4
WAIT
AND $(~KMODEMASK), R4
OR $(KUSER|EXL|IE), R4
MOVW R4, M(STATUS)
WAIT
MOVW R1, SP
MOVW R2, M(EPC)
NOOP4
ERET
TEXT firmware(SB), $0
SLL $3, R1
MOVW $(PROM+0x774), R1
JMP (R1)
TEXT splhi(SB), $0
MOVW R31, 12(R(MACH)) /* save PC in m->splpc */
MOVW M(STATUS), R1
WAIT
AND $~IE, R1, R2
MOVW R2, M(STATUS)
WAIT
RET
TEXT splx(SB), $0
MOVW R31, 12(R(MACH)) /* save PC in m->splpc */
MOVW M(STATUS), R2
WAIT
AND $IE, R1
AND $~IE, R2
OR R2, R1
MOVW R1, M(STATUS)
WAIT
RET
TEXT spllo(SB), $0
MOVW M(STATUS), R1
WAIT
OR $IE, R1, R2
MOVW R2, M(STATUS)
WAIT
RET
TEXT machstatus(SB), $0
MOVW M(STATUS), R1
WAIT
RET
TEXT spldone(SB), $0
RET
TEXT wbflush(SB), $-4
RET
TEXT setlabel(SB), $-4
MOVW R29, 0(R1)
MOVW R31, 4(R1)
MOVW $0, R1
RET
TEXT gotolabel(SB), $-4
MOVW 0(R1), R29
MOVW 4(R1), R31
MOVW $1, R1
RET
TEXT gotopc(SB), $8
MOVW R1, 0(FP) /* save arguments for later */
MOVW $(64*1024), R7
MOVW R7, 8(SP)
JAL icflush(SB)
MOVW 0(FP), R7
MOVW _argc(SB), R4
MOVW _argv(SB), R5
MOVW _env(SB), R6
MOVW R0, 4(SP)
JMP (R7)
TEXT puttlb(SB), $0
MOVW R1, M(TLBVIRT)
MOVW 4(FP), R2 /* phys0 */
MOVW 8(FP), R3 /* phys1 */
MOVW R2, M(TLBPHYS0)
WAIT
MOVW $PGSZ4K, R1
MOVW R3, M(TLBPHYS1)
WAIT
MOVW R1, M(PAGEMASK)
OR R2, R3, R4 /* MTC0 delay slot */
AND $PTEVALID, R4 /* MTC0 delay slot */
NOOP
TLBP
NOOP4
MOVW M(INDEX), R1
NOOP4
BGEZ R1, index
BEQ R4, dont /* cf. kunmap */
TLBWR
NOOP
dont:
RET
index:
TLBWI
NOOP
RET
TEXT getwired(SB),$0
MOVW M(WIRED), R1
WAIT
RET
TEXT getrandom(SB),$0
MOVW M(RANDOM), R1
WAIT
RET
TEXT puttlbx(SB), $0
MOVW 4(FP), R2
MOVW 8(FP), R3
MOVW 12(FP), R4
MOVW 16(FP), R5
MOVW R2, M(TLBVIRT)
NOOP4
MOVW R3, M(TLBPHYS0)
NOOP4
MOVW R4, M(TLBPHYS1)
NOOP4
MOVW R5, M(PAGEMASK)
NOOP4
MOVW R1, M(INDEX)
NOOP4
TLBWI
WAIT
RET
TEXT tlbvirt(SB), $0
NOOP
MOVW M(TLBVIRT), R1
NOOP
RET
TEXT gettlbx(SB), $0
MOVW 4(FP), R5
MOVW M(TLBVIRT), R10
NOOP4
MOVW R1, M(INDEX)
NOOP4
TLBR
NOOP4
MOVW M(TLBVIRT), R2
MOVW M(TLBPHYS0), R3
MOVW M(TLBPHYS1), R4
NOOP4
MOVW R2, 0(R5)
MOVW R3, 4(R5)
MOVW R4, 8(R5)
MOVW R10, M(TLBVIRT)
NOOP4
RET
TEXT gettlbp(SB), $0
MOVW 4(FP), R5
MOVW R1, M(TLBVIRT)
NOOP
NOOP
NOOP
TLBP
NOOP
NOOP
MOVW M(INDEX), R1
NOOP
BLTZ R1, gettlbp1
TLBR
NOOP
NOOP
NOOP
MOVW M(TLBVIRT), R2
MOVW M(TLBPHYS0), R3
MOVW M(TLBPHYS1), R4
MOVW M(PAGEMASK), R6
NOOP
MOVW R2, 0(R5)
MOVW R3, 4(R5)
MOVW R4, 8(R5)
MOVW R6, 12(R5)
gettlbp1:
RET
TEXT gettlbvirt(SB), $0
MOVW R1, M(INDEX)
NOOP
NOOP
TLBR
NOOP
NOOP
NOOP
MOVW M(TLBVIRT), R1
NOOP
RET
TEXT vector0(SB), $-4
NOOP4
NOOP4
MOVW $utlbmiss(SB), R26
JMP (R26)
TEXT utlbmiss(SB), $-4
MOVW M(TLBVIRT), R27
WAIT
MOVW R27, R26
SRL $13, R27
XOR R26, R27
AND $(STLBSIZE-1), R27
SLL $2, R27
MOVW R27, R26
SLL $1, R27
ADDU R26, R27
/* R27 = ((tlbvirt^(tlbvirt>>13)) & (STLBSIZE-1)) x 12 */
CONST (MACHADDR, R26) /* R26 = m-> */
MOVW 4(R26), R26 /* R26 = m->stb */
ADDU R26, R27 /* R27 = &m->stb[hash] */
MOVW M(BADVADDR), R26
WAIT
AND $BY2PG, R26
BNE R26, utlbodd
MOVW 4(R27), R26
BEQ R26, stlbm
MOVW R26, M(TLBPHYS0)
WAIT
MOVW 8(R27), R26
MOVW R26, M(TLBPHYS1)
JMP utlbcom
utlbodd:
MOVW 8(R27), R26
BEQ R26, stlbm
MOVW R26, M(TLBPHYS1)
WAIT
MOVW 4(R27), R26
MOVW R26, M(TLBPHYS0)
utlbcom:
WAIT /* MTC0/MFC0 hazard */
MOVW M(TLBVIRT), R26
WAIT
MOVW (R27), R27
BEQ R27, stlbm
BNE R26, R27, stlbm
MOVW $PGSZ4K, R27
MOVW R27, M(PAGEMASK)
NOOP4
TLBP
NOOP4
MOVW M(INDEX), R26
NOOP4
BGEZ R26, utlindex
TLBWR
NOOP4
ERET
utlindex:
MOVW R0,(R0)
TLBWI
NOOP4
ERET
stlbm:
MOVW $exception(SB), R26
JMP (R26)
TEXT vector100(SB), $-4
NOOP4
NOOP4
MOVW $exception(SB), R26
JMP (R26)
TEXT vector180(SB), $-4
NOOP4
NOOP4
MOVW $exception(SB), R26
JMP (R26)
NOP
TEXT exception(SB), $-4
MOVW M(STATUS), R26
WAIT
AND $KUSER, R26
BEQ R26, waskernel
wasuser:
CONST (MACHADDR, R27) /* R27 = m-> */
MOVW 8(R27), R26 /* R26 = m->proc */
MOVW 8(R26), R27 /* R27 = m->proc->kstack */
MOVW SP, R26 /* save user sp */
ADDU $(KSTACK-UREGSIZE-2*BY2WD), R27, SP
MOVW R26, 0x10(SP) /* user SP */
MOVW R31, 0x28(SP)
MOVW R30, 0x2C(SP)
MOVW M(CAUSE), R26
MOVW R(MACH), 0x3C(SP)
MOVW R(USER), 0x40(SP)
AND $(EXCMASK<<2), R26
SUBU $(CSYS<<2), R26
JAL saveregs(SB)
MOVW $setR30(SB), R30
CONST (MACHADDR, R1)
ADDU R1, R(MACH) /* R(MACH) = m-> */
MOVW 8(R(MACH)), R(USER) /* up = m->proc */
MOVW 4(SP), R1 /* first arg for syscall/trap */
BNE R26, notsys
JAL syscall(SB)
MOVW R0, R2
MOVW R0, R3
MOVW R0, R4
MOVW R0, R5
MOVW R0, R6
MOVW R0, R7
MOVW R0, R8
MOVW R0, R9
MOVW R0, R10
MOVW R0, R11
MOVW R0, R12
MOVW R0, R13
MOVW R0, R14
MOVW R0, R15
MOVW R0, R16
MOVW R0, R17
MOVW R0, R18
MOVW R0, R19
MOVW R0, R20
MOVW R0, R21
MOVW R0, R22
MOVW R0, R23
MOVW R0, R24
MOVW R0, R25
MOVW R0, R27
sysrestore:
MOVW 0x28(SP), R31
MOVW 0x08(SP), R26
MOVW 0x2C(SP), R30
MOVW R26, M(STATUS)
WAIT
MOVW 0x0C(SP), R26 /* old pc */
MOVW 0x10(SP), SP
MOVW R26, M(EPC)
NOOP4
ERET
notsys:
JAL trap(SB)
restore:
JAL restregs(SB)
MOVW 0x28(SP), R31
MOVW 0x2C(SP), R30
MOVW 0x3C(SP), R(MACH)
MOVW 0x40(SP), R(USER)
MOVW 0x10(SP), SP
MOVW R26, M(EPC)
NOOP4
ERET
waskernel:
MOVW $1, R26 /* not syscall */
MOVW SP, -(UREGSIZE-16)(SP)
SUBU $UREGSIZE, SP
MOVW R31, 0x28(SP)
JAL saveregs(SB)
MOVW 4(SP), R1 /* first arg for trap */
JAL trap(SB)
JAL restregs(SB)
MOVW 0x28(SP), R31
ADDU $UREGSIZE, SP
MOVW R26, M(EPC)
NOOP4
ERET
TEXT forkret(SB), $0
MOVW R0, R1 /* Fake out system call return */
JMP sysrestore
TEXT saveregs(SB), $-4
MOVW R1, 0x9C(SP)
MOVW R2, 0x98(SP)
ADDU $8, SP, R1
MOVW R1, 0x04(SP) /* arg to base of regs */
MOVW M(STATUS), R1
MOVW M(EPC), R2
WAIT
MOVW R1, 0x08(SP)
MOVW R2, 0x0C(SP)
MOVW $(~KMODEMASK),R2 /* don't let him use R28 */
AND R2, R1
MOVW R1, M(STATUS)
WAIT
BEQ R26, return /* sys call, don't save */
MOVW M(CAUSE), R1
MOVW M(BADVADDR), R2
NOOP
MOVW R1, 0x14(SP)
MOVW M(TLBVIRT), R1
NOOP
MOVW R2, 0x18(SP)
MOVW R1, 0x1C(SP)
MOVW HI, R1
MOVW LO, R2
MOVW R1, 0x20(SP)
MOVW R2, 0x24(SP)
/* LINK,SB,SP missing */
MOVW R28, 0x30(SP)
/* R27, R26 not saved */
/* R25, R24 missing */
MOVW R23, 0x44(SP)
MOVW R22, 0x48(SP)
MOVW R21, 0x4C(SP)
MOVW R20, 0x50(SP)
MOVW R19, 0x54(SP)
MOVW R18, 0x58(SP)
MOVW R17, 0x5C(SP)
MOVW R16, 0x60(SP)
MOVW R15, 0x64(SP)
MOVW R14, 0x68(SP)
MOVW R13, 0x6C(SP)
MOVW R12, 0x70(SP)
MOVW R11, 0x74(SP)
MOVW R10, 0x78(SP)
MOVW R9, 0x7C(SP)
MOVW R8, 0x80(SP)
MOVW R7, 0x84(SP)
MOVW R6, 0x88(SP)
MOVW R5, 0x8C(SP)
MOVW R4, 0x90(SP)
MOVW R3, 0x94(SP)
return:
RET
TEXT restregs(SB), $-4
/* LINK,SB,SP missing */
MOVW 0x30(SP), R28
/* R27, R26 not saved */
/* R25, R24 missing */
MOVW 0x44(SP), R23
MOVW 0x48(SP), R22
MOVW 0x4C(SP), R21
MOVW 0x50(SP), R20
MOVW 0x54(SP), R19
MOVW 0x58(SP), R18
MOVW 0x5C(SP), R17
MOVW 0x60(SP), R16
MOVW 0x64(SP), R15
MOVW 0x68(SP), R14
MOVW 0x6C(SP), R13
MOVW 0x70(SP), R12
MOVW 0x74(SP), R11
MOVW 0x78(SP), R10
MOVW 0x7C(SP), R9
MOVW 0x80(SP), R8
MOVW 0x84(SP), R7
MOVW 0x88(SP), R6
MOVW 0x8C(SP), R5
MOVW 0x90(SP), R4
MOVW 0x94(SP), R3
MOVW 0x24(SP), R2
MOVW 0x20(SP), R1
MOVW R2, LO
MOVW R1, HI
MOVW 0x08(SP), R1
MOVW 0x98(SP), R2
MOVW R1, M(STATUS)
WAIT
MOVW 0x9C(SP), R1
MOVW 0x0C(SP), R26 /* old pc */
RET
TEXT rfnote(SB), $0
MOVW R1, R26 /* 1st arg is &uregpointer */
SUBU $(BY2WD), R26, SP /* pc hole */
JMP restore
TEXT clrfpintr(SB), $0
MOVW M(STATUS), R3
WAIT
OR $CU1, R3
MOVW R3, M(STATUS)
NOOP
NOOP
NOOP
MOVW FCR31, R1
FCRNOOP
MOVW R1, R2
AND $~(0x3F<<12), R2
MOVW R2, FCR31
AND $~CU1, R3
MOVW R3, M(STATUS)
WAIT
RET
TEXT getstatus(SB), $0
MOVW M(STATUS), R1
WAIT
RET
TEXT savefpregs(SB), $0
MOVW FCR31, R2 /* 3 delays before R2 ok */
MOVW M(STATUS), R3
WAIT
AND $~(0x3F<<12), R2, R4
MOVW R4, FCR31
MOVD F0, 0x00(R1)
MOVD F2, 0x08(R1)
MOVD F4, 0x10(R1)
MOVD F6, 0x18(R1)
MOVD F8, 0x20(R1)
MOVD F10, 0x28(R1)
MOVD F12, 0x30(R1)
MOVD F14, 0x38(R1)
MOVD F16, 0x40(R1)
MOVD F18, 0x48(R1)
MOVD F20, 0x50(R1)
MOVD F22, 0x58(R1)
MOVD F24, 0x60(R1)
MOVD F26, 0x68(R1)
MOVD F28, 0x70(R1)
MOVD F30, 0x78(R1)
MOVW R2, 0x80(R1)
AND $~CU1, R3
MOVW R3, M(STATUS)
WAIT
RET
TEXT restfpregs(SB), $0
MOVW M(STATUS), R3
WAIT
OR $CU1, R3
MOVW R3, M(STATUS)
WAIT
MOVW fpstat+4(FP), R2
NOOP
MOVD 0x00(R1), F0
MOVD 0x08(R1), F2
MOVD 0x10(R1), F4
MOVD 0x18(R1), F6
MOVD 0x20(R1), F8
MOVD 0x28(R1), F10
MOVD 0x30(R1), F12
MOVD 0x38(R1), F14
MOVD 0x40(R1), F16
MOVD 0x48(R1), F18
MOVD 0x50(R1), F20
MOVD 0x58(R1), F22
MOVD 0x60(R1), F24
MOVD 0x68(R1), F26
MOVD 0x70(R1), F28
MOVD 0x78(R1), F30
MOVW R2, FCR31
AND $~CU1, R3
MOVW R3, M(STATUS)
WAIT
RET
TEXT fcr31(SB), $0
MOVW FCR31, R1 /* 3 delays before using R1 */
MOVW M(STATUS), R3
WAIT
AND $~CU1, R3
MOVW R3, M(STATUS)
WAIT
RET
TEXT prid(SB), $0
MOVW M(PRID), R1
WAIT
RET
/*
* Emulate 68020 test and set: load linked / store conditional
*/
TEXT tas(SB), $0
MOVW R1, R2 /* address of key */
tas1:
MOVW $1, R3
LL(2, 1)
NOOP
SC(2, 3)
NOOP
BEQ R3, tas1
RET
/*
* cache manipulation
*/
#define CACHE BREAK /* overloaded op-code */
#define PI R((0 /* primary I cache */
#define PD R((1 /* primary D cache */
#define SD R((3 /* secondary combined I/D cache */
#define IWBI (0<<2))) /* index write-back invalidate */
#define ILT (1<<2))) /* index load tag */
#define IST (2<<2))) /* index store tag */
#define CDE (3<<2))) /* create dirty exclusive */
#define HI (4<<2))) /* hit invalidate */
#define HWBI (5<<2))) /* hit write back invalidate */
#define HWB (6<<2))) /* hit write back */
#define HSV (7<<2))) /* hit set virtual */
/*
* we avoid using R4, R5, R6, and R7 so gotopc can call us without saving them
*/
TEXT icflush(SB), $-4 /* icflush(virtaddr, count) */
MOVW M(STATUS), R10
WAIT
MOVW 4(FP), R9
MOVW $0, M(STATUS)
WAIT
icflush1: /* primary cache line size is 16 bytes */
/*
* Due to a challenge bug PD+HWB DOES NOT WORK - philw
*/
WAIT
WAIT
CACHE SD+HWBI, (R1)
WAIT
WAIT
SUBU $128, R9
ADDU $128, R1
BGTZ R9, icflush1
MOVW R10, M(STATUS)
WAIT
RET
TEXT dcinvalidate(SB), $-4 /* dcinvalidate(virtaddr, count) */
MOVW M(STATUS), R10
WAIT
MOVW $0, M(STATUS)
WAIT
MOVW 4(FP), R9
dcinval: /* secondary cache line size is 128 bytes */
CACHE SD+HWBI, 0x00(R1)
SUBU $128, R9
ADDU $128, R1
BGTZ R9, dcinval
MOVW R10, M(STATUS)
WAIT
RET
TEXT cleancache(SB), $-4
MOVW $KZERO, R1
MOVW M(STATUS), R10
WAIT
MOVW $0, M(STATUS)
WAIT
MOVW $(4*1024*1024), R9
ccache:
CACHE SD+IWBI, 0x00(R1)
SUBU $128, R9
ADDU $128, R1
BGTZ R9, ccache
MOVW R10, M(STATUS)
WAIT
RET
TEXT getcallerpc(SB), $0
MOVW 0(SP), R1
RET
TEXT rdcount(SB), $0
MOVW M(COUNT), R1
NOOP
RET
TEXT wrcompare(SB), $0
MOVW R1, M(COMPARE)
RET
TEXT busprobe(SB), $-4
NOOP
MOVW (R1), R2
MOVW $0, R1
NOOP
RET
TEXT uvmove(SB), $-4
AND $7, R1, R2
MOVW 4(FP), R3
BNE R2, uvgetuna
/* alligned load */
LD (1,2)
WAIT
MOVW R2, R1
DSLL (16,1,1)
DSLL (16,1,1)
DSRA (16,1,1)
DSRA (16,1,1)
uvput:
AND $7, R3, R4
BNE R4, uvputuna
/* alligned store */
STD (2,3)
NOP
RET
/* unalligned load */
uvgetuna:
MOVW 0(R1),R2
MOVW 4(R1),R1
DSLL (16,2,2)
DSLL (16,2,2)
OR R1, R2
JMP uvput
/* unalligned store */
uvputuna:
DSRA (16,2,2)
DSRA (16,2,2)
MOVW R2, 0(R3)
MOVW R1, 4(R3)
RET
TEXT hack(SB), $-4
MOVW M(CONFIG), R1
NOP
RET
.
## diffname carrera/l.s 1993/0904
## diff -e /n/fornaxdump/1993/0903/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/0904/sys/src/brazil/carrera/l.s
787,789c
CACHE PD+IWBI, 0x00(R1)
WAIT
CACHE PI+IWBI, 0x00(R1)
WAIT
SUBU $16, R9
ADDU $16, R1
.
785c
MOVW $(32*1024), R9
.
748,757c
CACHE PD+HWB, 0x00(R8)
CACHE PI+HI, 0x00(R8)
CACHE PD+HWB, 0x10(R8)
CACHE PI+HI, 0x10(R8)
CACHE PD+HWB, 0x20(R8)
CACHE PI+HI, 0x20(R8)
CACHE PD+HWB, 0x30(R8)
CACHE PI+HI, 0x30(R8)
SUB $0x40, R9
ADD $0x40, R8
.
746a
ADDU R1, R9 /* R9 = last address */
MOVW $(~0x3f), R8
AND R1, R8 /* R8 = first address, rounded down */
ADD $0x3f, R9
AND $(~0x3f), R9 /* round last address up */
SUB R8, R9 /* R9 = revised count */
.
420c
MOVW R1, R(MACH) /* R(MACH) = m-> */
.
## diffname carrera/l.s 1993/0907
## diff -e /n/fornaxdump/1993/0904/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/0907/sys/src/brazil/carrera/l.s
781a
WAIT
WAIT
.
776,780c
MOVW $0, M(STATUS)
WAIT
ADDU R1, R9 /* R9 = last address */
MOVW $(~0x3f), R8
AND R1, R8 /* R8 = first address, rounded down */
ADD $0x3f, R9
AND $(~0x3f), R9 /* round last address up */
SUB R8, R9 /* R9 = revised count */
icdirty1: /* primary cache line size is 16 bytes */
CACHE PI+HI, 0x00(R8)
CACHE PI+HI, 0x10(R8)
CACHE PI+HI, 0x20(R8)
CACHE PI+HI, 0x30(R8)
SUB $0x40, R9
ADD $0x40, R8
BGTZ R9, icdirty1
.
774a
WAIT
.
773d
769c
TEXT icdirty(SB), $-4 /* icdirty(virtaddr, count) */
.
766a
WAIT
WAIT
.
746a
WAIT
WAIT
.
741d
## diffname carrera/l.s 1993/0918
## diff -e /n/fornaxdump/1993/0907/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/0918/sys/src/brazil/carrera/l.s
796,797d
794c
BGTZ R9, dcflush1
.
791a
CACHE PD+HWB, 0x00(R8)
CACHE PD+HWB, 0x10(R8)
CACHE PD+HWB, 0x20(R8)
CACHE PD+HWB, 0x30(R8)
.
787c
dcflush1: /* primary cache line size is 16 bytes */
.
776,777d
772c
TEXT dcflush(SB), $-4 /* dcflush(virtaddr, count) */
.
## diffname carrera/l.s 1993/1208
## diff -e /n/fornaxdump/1993/0918/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1208/sys/src/brazil/carrera/l.s
215c
TEXT puttlbxx(SB), $0
.
## diffname carrera/l.s 1993/1209
## diff -e /n/fornaxdump/1993/1208/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1209/sys/src/brazil/carrera/l.s
312a
CONST ((0xA0090000), R27)
MOVW M(EPC), R26
MOVW R26, 0(R27)
MOVW M(BADVADDR), R26
MOVW R26, 4(R27)
MOVW M(CAUSE), R26
MOVW R26, 8(R27)
MOVW M(TLBVIRT), R26
MOVW R26, 12(R27)
MOVW M(17), R26
MOVW R26, 16(R27)
.
## diffname carrera/l.s 1993/1210
## diff -e /n/fornaxdump/1993/1209/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1210/sys/src/brazil/carrera/l.s
781a
MOVW $0xA0090008, R10
MOVW $2002, R9
MOVW R9, (R10)
.
752a
MOVW $0xA0090008, R10
MOVW $2001, R9
MOVW R9, (R10)
.
215c
TEXT puttlbx(SB), $0
.
## diffname carrera/l.s 1993/1211
## diff -e /n/fornaxdump/1993/1210/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1211/sys/src/brazil/carrera/l.s
808,811c
CACHE PD+HWBI, 0x00(R8)
CACHE PD+HWBI, 0x10(R8)
CACHE PD+HWBI, 0x20(R8)
CACHE PD+HWBI, 0x30(R8)
.
785,787d
753,755d
401a
RDBGSV
.
394a
RDBGSV
.
313,324d
311a
CONST (MACHADDR, R26) /* R26 = m-> */
MOVW 16(R26), R27
ADDU $1, R27
MOVW R27, 16(R26) /* m->tlbfault++ */
.
307a
RDBGSV
.
14a
#define RDBGSV CONST(0x80020000, R26); MOVW R29, 0(R26); MOVW M(EPC), R27; MOVW R27, 4(R26); MOVW R31, 8(R26)
.
## diffname carrera/l.s 1993/1212
## diff -e /n/fornaxdump/1993/1211/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1212/sys/src/brazil/carrera/l.s
435,459d
## diffname carrera/l.s 1993/1217
## diff -e /n/fornaxdump/1993/1212/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1217/sys/src/brazil/carrera/l.s
15c
#define RDBGSV CONST(0x80020000, R26); \
MOVW R29, 0(R26); \
MOVW M(EPC), R27; \
MOVW R27, 4(R26); \
MOVW R31, 8(R26); \
MOVW M(CAUSE), R27; \
MOVW R27, 12(R26); \
MOVW M(STATUS), R27; \
MOVW R27, 16(R26); \
MOVW M(BADVADDR), R27; \
MOVW R27, 20(R26)
.
## diffname carrera/l.s 1993/1220
## diff -e /n/fornaxdump/1993/1217/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1220/sys/src/brazil/carrera/l.s
25c
MOVW R27, 20(R26);
.
## diffname carrera/l.s 1993/1231
## diff -e /n/fornaxdump/1993/1220/sys/src/brazil/carrera/l.s /n/fornaxdump/1993/1231/sys/src/brazil/carrera/l.s
788,789c
SUBU $0x40, R9
ADDU $0x40, R8
.
778c
SUBU R8, R9 /* R9 = revised count */
.
776c
ADDU $0x3f, R9
.
757,758c
SUBU $0x40, R9
ADDU $0x40, R8
.
747c
SUBU R8, R9 /* R9 = revised count */
.
745c
ADDU $0x3f, R9
.
## diffname carrera/l.s 1994/0207
## diff -e /n/fornaxdump/1993/1231/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0207/sys/src/brazil/carrera/l.s
861c
/* unaligned load */
.
856c
/* aligned store */
.
844c
/* aligned load */
.
31c
#define STD(rt, base) WORD $((077<<26)|((base)<<21)|((rt)<<16))
.
## diffname carrera/l.s 1994/0209
## diff -e /n/fornaxdump/1994/0207/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0209/sys/src/brazil/carrera/l.s
857c
STD (2, 0,(3))
.
845c
LD (0,(1), 2)
.
577a
/* restore 64-bit R5, R6 */
ADDU $(UREGSIZE-16), SP, R1
MOVW $~7, R2 /* don't let him use R28 */
AND R2, R1
LD (0,(1), 5)
LD (8,(1), 6)
.
570,571c
/*
* restored below
* MOVW 0x88(SP), R6
* MOVW 0x8C(SP), R5
*/
.
493a
/* save R5, R6 as 64 bits */
ADDU $(UREGSIZE-16), SP, R1
MOVW $~7, R2 /* don't let him use R28 */
AND R2, R1
STD (5, 0,(1))
STD (6, 8,(1))
.
30,31c
#define LD(offset, base, rt) WORD $((067<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
#define STD(rt, offset, base) WORD $((077<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
.
7c
#define FCRNOOP NOOP; NOOP; NOOP
.
5c
#define PROM (KSEG1+0x1C000000)
.
3c
#define SP R29
.
## diffname carrera/l.s 1994/0228
## diff -e /n/fornaxdump/1994/0209/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0228/sys/src/brazil/carrera/l.s
891,896d
870d
858d
854d
845,852d
841d
835d
794c
dcflush1: /* primary cache line is 16 bytes */
.
782d
706,711d
703d
696d
663d
418d
405d
397d
317d
304d
275d
255d
248d
228d
189d
176d
169d
162d
158d
154d
147,152d
139d
127d
117d
111d
94d
30,31c
#define LD(offset, base, rt) WORD $((067<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
#define STD(rt, offset, base) WORD $((077<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
.
## diffname carrera/l.s 1994/0307
## diff -e /n/fornaxdump/1994/0228/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0307/sys/src/brazil/carrera/l.s
842a
TEXT uvld(SB), $-4 /* uvld(address, dst) */
MOVV 0(R1), R5
MOVW 4(FP), R2
MOVW R5, 4(R2)
DSRA (16,5,5)
DSRA (16,5,5)
MOVW R5, 0(R2)
RET
TEXT uvst(SB), $-4 /* uvst(address, src) */
MOVW 4(FP), R2
MOVW 0(R2), R5
DSLL (16,5,5)
DSLL (16,5,5)
MOVW 4(R2), R2
OR R2, R5
MOVV R5, 0(R1)
RET
.
## diffname carrera/l.s 1994/0308
## diff -e /n/fornaxdump/1994/0307/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0308/sys/src/brazil/carrera/l.s
855,859c
MOVV 0(R2), R5
.
847,850c
MOVV 0(R1), R5
MOVV R5, 0(R2)
.
845d
## diffname carrera/l.s 1994/0309
## diff -e /n/fornaxdump/1994/0308/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0309/sys/src/brazil/carrera/l.s
853a
RET
TEXT fwblock(SB), $-4 /* wblock(void*port, void *block, csum) */
MOVW 4(FP), R2
MOVW 8(FP), R3
MOVW $64, R4
fwloop:
MOVV 0(R2), R5
MOVV R5, 0(R1)
ADDU R5, R3
SRLV $32, R5
ADDU R5, R3
ADD $8, R2
SUB $1, R4
BNE R4, fwloop
MOVW R3, R1
.
807,843d
794d
## diffname carrera/l.s 1994/0311
## diff -e /n/fornaxdump/1994/0309/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0311/sys/src/brazil/carrera/l.s
832a
MOVW R3, R1
RET
TEXT frblock(SB), $-4 /* frblock(void*port, void *block, csum) */
MOVW 4(FP), R2
MOVW 8(FP), R3
MOVW $64, R4
frloop:
MOVV 0(R1), R5
MOVV R5, 0(R2)
ADDU R5, R3
SRLV $32, R5
ADDU R5, R3
ADD $8, R2
SUB $1, R4
BNE R4, frloop
.
818c
TEXT fwblock(SB), $-4 /* fwblock(void*port, void *block, csum) */
.
## diffname carrera/l.s 1994/0312
## diff -e /n/fornaxdump/1994/0311/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0312/sys/src/brazil/carrera/l.s
847c
XOR R5, R3
.
845c
XOR R5, R3
.
828c
XOR R5, R3
.
826c
XOR R5, R3
.
## diffname carrera/l.s 1994/0322
## diff -e /n/fornaxdump/1994/0312/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0322/sys/src/brazil/carrera/l.s
458d
443d
434c
RDBGSV
.
429d
366d
361d
106d
11c
#define ERET NOOP4;NOOP4;NOOP4;WORD $0x42000018;NOOP4;NOOP4;NOOP4
.
## diffname carrera/l.s 1994/0330
## diff -e /n/fornaxdump/1994/0322/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0330/sys/src/brazil/carrera/l.s
784a
MOVW M(CONFIG), R1
OR $((1<<4)|(1<<5)), R1
MOVW R1, M(CONFIG)
.
## diffname carrera/l.s 1994/0417
## diff -e /n/fornaxdump/1994/0330/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0417/sys/src/brazil/carrera/l.s
839a
MOVW $50, R10
xx: SUB $1, R10
BNE R10, xx
.
## diffname carrera/l.s 1994/0418
## diff -e /n/fornaxdump/1994/0417/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0418/sys/src/brazil/carrera/l.s
855c
MOVW R6, R1
SRLV $32, R6
XOR R6, R1
.
847,852c
XOR R5, R6
MOVV 0(R1), R5
MOVV R5, 8(R2)
XOR R5, R6
ADD $16, R2
SUB $2, R4
.
840,844d
836c
MOVW 8(FP), R6
.
831c
MOVW R6, R1
SRLV $32, R6
XOR R6, R1
.
827,828c
ADD $16, R2
SUB $2, R4
.
823,825c
XOR R5, R6
MOVV 8(R2), R5
MOVV R5, 0(R1)
XOR R5, R6
.
817c
MOVW 8(FP), R6
.
## diffname carrera/l.s 1994/0420
## diff -e /n/fornaxdump/1994/0418/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0420/sys/src/brazil/carrera/l.s
850c
SUB $1, R4
.
841c
MOVW $32, R4
.
829c
SUB $1, R4
.
819c
MOVW $32, R4
.
## diffname carrera/l.s 1994/0504
## diff -e /n/fornaxdump/1994/0420/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0504/sys/src/brazil/carrera/l.s
430d
380d
373d
296d
15,26d
12d
10d
## diffname carrera/l.s 1994/0505
## diff -e /n/fornaxdump/1994/0504/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0505/sys/src/brazil/carrera/l.s
539c
MOVW $~7, R2 /* don't let him use R28 */
.
446c
MOVW $~7, R2 /* don't let him use R28 */
.
347d
## diffname carrera/l.s 1994/0519
## diff -e /n/fornaxdump/1994/0505/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0519/sys/src/brazil/carrera/l.s
837a
TEXT getprid(SB), $0
MOVW M(PRID), R1
RET
.
## diffname carrera/l.s 1994/0520
## diff -e /n/fornaxdump/1994/0519/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0520/sys/src/brazil/carrera/l.s
838,841d
## diffname carrera/l.s 1994/0522
## diff -e /n/fornaxdump/1994/0520/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0522/sys/src/brazil/carrera/l.s
63a
DBG(0x55aa0004)
.
60a
DBG(0x55aa0011)
.
59a
DBG(0x55aa0010)
MOVW R(MACH),4(R20)
.
55a
DBG(0x55aa0003)
.
34a
DBG(0x55aa0002)
.
31a
DBG(0x55aa0001)
.
29c
MOVW $(BEV|DE|CU1|INTR7|INTR6|INTR5|INTR4|INTR3|INTR2|INTR1|INTR0), R1
.
27a
DBG(0x55aa0000)
.
22a
#define DBG(S) CONST(0xa0001000, R20);CONST(S, R21);MOVW R21,(R20)
.
## diffname carrera/l.s 1994/0524
## diff -e /n/fornaxdump/1994/0522/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0524/sys/src/brazil/carrera/l.s
32c
MOVW $(CU1|INTR7|INTR6|INTR5|INTR4|INTR3|INTR2|INTR1|INTR0), R1
.
## diffname carrera/l.s 1994/0528
## diff -e /n/fornaxdump/1994/0524/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0528/sys/src/brazil/carrera/l.s
105,107c
MOVW $0xE000D004, R1
MOVW R0, 0(R1)
firm:
JMP firm
.
5d
## diffname carrera/l.s 1994/0609
## diff -e /n/fornaxdump/1994/0528/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0609/sys/src/brazil/carrera/l.s
560c
TEXT rfnote(SB), $-4
.
556,557c
MOVV Ureg_r1(SP), R1
MOVV Ureg_pc(SP), R26 /* old pc */
.
546,553c
MOVW Ureg_status(SP), R1
MOVV Ureg_r2(SP), R2
.
518,543c
MOVV Ureg_r23(SP), R23
MOVV Ureg_r22(SP), R22
MOVV Ureg_r21(SP), R21
MOVV Ureg_r20(SP), R20
MOVV Ureg_r19(SP), R19
MOVV Ureg_r18(SP), R18
MOVV Ureg_r17(SP), R17
MOVV Ureg_r16(SP), R16
MOVV Ureg_r15(SP), R15
MOVV Ureg_r14(SP), R14
MOVV Ureg_r13(SP), R13
MOVV Ureg_r12(SP), R12
MOVV Ureg_r11(SP), R11
MOVV Ureg_r10(SP), R10
MOVV Ureg_r9(SP), R9
MOVV Ureg_r8(SP), R8
MOVV Ureg_r7(SP), R7
MOVV Ureg_r6(SP), R6
MOVV Ureg_r5(SP), R5
MOVV Ureg_r4(SP), R4
MOVV Ureg_r3(SP), R3
MOVV Ureg_lo(SP), R2
MOVV Ureg_hi(SP), R1
.
515c
MOVV Ureg_r28(SP), R28
.
489,509c
MOVV R23, Ureg_r23(SP)
MOVV R22, Ureg_r22(SP)
MOVV R21, Ureg_r21(SP)
MOVV R20, Ureg_r20(SP)
MOVV R19, Ureg_r19(SP)
MOVV R18, Ureg_r18(SP)
MOVV R17, Ureg_r17(SP)
MOVV R16, Ureg_r16(SP)
MOVV R15, Ureg_r15(SP)
MOVV R14, Ureg_r14(SP)
MOVV R13, Ureg_r13(SP)
MOVV R12, Ureg_r12(SP)
MOVV R11, Ureg_r11(SP)
MOVV R10, Ureg_r10(SP)
MOVV R9, Ureg_r9(SP)
MOVV R8, Ureg_r8(SP)
MOVV R7, Ureg_r7(SP)
MOVV R6, Ureg_r6(SP)
MOVV R5, Ureg_r5(SP)
MOVV R4, Ureg_r4(SP)
MOVV R3, Ureg_r3(SP)
.
486c
MOVV R28, Ureg_r28(SP)
.
483,484c
MOVV R1, Ureg_hi(SP)
MOVV R2, Ureg_lo(SP)
.
479,480c
MOVV R2, Ureg_badvaddr(SP)
MOVV R1, Ureg_tlbvirt(SP)
.
476,477c
MOVW R1, Ureg_cause(SP)
MOVV M(TLBVIRT), R1
.
474c
MOVV M(BADVADDR), R2
.
464,465c
MOVW R1, Ureg_status(SP)
MOVV R2, Ureg_pc(SP)
.
462c
MOVV M(EPC), R2
.
451,460c
MOVV R1, Ureg_r1(SP) /* save early to use as temp */
MOVV R2, Ureg_r2(SP)
ADDU $Uoffset,SP, R1
MOVW R1, 4(SP) /* arg to base of regs */
.
446,447c
TEXT forkret(SB), $-4
MOVV R0, R1 /* Fake out system call return */
.
441,443c
MOVV Ureg_r31(SP), R31
MOVV Ureg_sp(SP), SP
MOVV R26, M(EPC)
.
436c
OR $7, SP
XOR $7, SP
MOVV R26, Ureg_sp(SP)
MOVV R31, Ureg_r31(SP)
MOVW $1, R26 /* not syscall */
.
433,434c
MOVV SP, R26
.
424,429c
MOVV Ureg_r31(SP), R31
MOVV Ureg_r30(SP), R30
MOVV Ureg_r25(SP), R25 /* R(USER), R(MACH) */
MOVV Ureg_r24(SP), R24
MOVV Ureg_sp(SP), SP
MOVV R26, M(EPC)
.
415,417c
MOVV Ureg_pc(SP), R26 /* old pc */
MOVV Ureg_sp(SP), SP
MOVV R26, M(EPC)
.
410,412c
MOVV Ureg_r31(SP), R31
MOVW Ureg_status(SP), R26
MOVV Ureg_r30(SP), R30
.
401,402c
CONST (MACHADDR, R(MACH)) /* R(MACH) = m-> */
.
393,394c
MOVV R25, Ureg_r25(SP) /* R(USER), R(MACH) */
MOVV R24, Ureg_r24(SP)
.
389,391c
MOVV R26, Ureg_sp(SP) /* user SP */
MOVV R31, Ureg_r31(SP)
MOVV R30, Ureg_r30(SP)
.
386,387c
MOVV SP, R26 /* save user sp */
ADDU $(KSTACK-UREGSIZE), R27, SP
.
381a
.
375d
288a
/* also vector80 */
.
100c
MOVV R2, M(EPC)
.
96c
OR $(KUSER|EXL|IE|UX), R4
.
72d
68d
65,66d
60d
38d
34d
29d
15,18d
## diffname carrera/l.s 1994/0610
## diff -e /n/fornaxdump/1994/0609/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0610/sys/src/brazil/carrera/l.s
539c
TEXT rfnote(SB), $0
.
535,536c
MOVW 0x9C(SP), R1
MOVW 0x0C(SP), R26 /* old pc */
.
530,532c
/* restore 64-bit R5, R6 */
ADDU $(UREGSIZE-16), SP, R1
MOVW $~7, R2 /* don't let him use R28 */
AND R2, R1
LD (0,(1), 5)
LD (8,(1), 6)
MOVW 0x08(SP), R1
MOVW 0x98(SP), R2
.
504,527c
MOVW 0x44(SP), R23
MOVW 0x48(SP), R22
MOVW 0x4C(SP), R21
MOVW 0x50(SP), R20
MOVW 0x54(SP), R19
MOVW 0x58(SP), R18
MOVW 0x5C(SP), R17
MOVW 0x60(SP), R16
MOVW 0x64(SP), R15
MOVW 0x68(SP), R14
MOVW 0x6C(SP), R13
MOVW 0x70(SP), R12
MOVW 0x74(SP), R11
MOVW 0x78(SP), R10
MOVW 0x7C(SP), R9
MOVW 0x80(SP), R8
MOVW 0x84(SP), R7
/*
* restored below
* MOVW 0x88(SP), R6
* MOVW 0x8C(SP), R5
*/
MOVW 0x90(SP), R4
MOVW 0x94(SP), R3
MOVW 0x24(SP), R2
MOVW 0x20(SP), R1
.
501c
MOVW 0x30(SP), R28
.
475,495c
MOVW R23, 0x44(SP)
MOVW R22, 0x48(SP)
MOVW R21, 0x4C(SP)
MOVW R20, 0x50(SP)
MOVW R19, 0x54(SP)
MOVW R18, 0x58(SP)
MOVW R17, 0x5C(SP)
MOVW R16, 0x60(SP)
MOVW R15, 0x64(SP)
MOVW R14, 0x68(SP)
MOVW R13, 0x6C(SP)
MOVW R12, 0x70(SP)
MOVW R11, 0x74(SP)
MOVW R10, 0x78(SP)
MOVW R9, 0x7C(SP)
MOVW R8, 0x80(SP)
MOVW R7, 0x84(SP)
MOVW R6, 0x88(SP)
MOVW R5, 0x8C(SP)
MOVW R4, 0x90(SP)
MOVW R3, 0x94(SP)
.
472c
MOVW R28, 0x30(SP)
.
469,470c
MOVW R1, 0x20(SP)
MOVW R2, 0x24(SP)
.
465,466c
MOVW R2, 0x18(SP)
MOVW R1, 0x1C(SP)
.
462,463c
MOVW R1, 0x14(SP)
MOVW M(TLBVIRT), R1
.
460c
MOVW M(BADVADDR), R2
.
450,451c
MOVW R1, 0x08(SP)
MOVW R2, 0x0C(SP)
.
448c
MOVW M(EPC), R2
.
442,446c
MOVW R1, 0x9C(SP)
MOVW R2, 0x98(SP)
/* save R5, R6 as 64 bits */
ADDU $(UREGSIZE-16), SP, R1
MOVW $~7, R2 /* don't let him use R28 */
AND R2, R1
STD (5, 0,(1))
STD (6, 8,(1))
ADDU $8, SP, R1
MOVW R1, 0x04(SP) /* arg to base of regs */
.
437,438c
TEXT forkret(SB), $0
MOVW R0, R1 /* Fake out system call return */
.
432,434c
MOVW 0x28(SP), R31
ADDU $UREGSIZE, SP
MOVW R26, M(EPC)
.
427a
MOVW SP, -(UREGSIZE-16)(SP)
SUBU $UREGSIZE, SP
MOVW R31, 0x28(SP)
.
421,426d
412,417c
MOVW 0x28(SP), R31
MOVW 0x2C(SP), R30
MOVW 0x3C(SP), R(MACH)
MOVW 0x40(SP), R(USER)
MOVW 0x10(SP), SP
MOVW R26, M(EPC)
.
403,405c
MOVW 0x0C(SP), R26 /* old pc */
MOVW 0x10(SP), SP
MOVW R26, M(EPC)
.
398,400c
MOVW 0x28(SP), R31
MOVW 0x08(SP), R26
MOVW 0x2C(SP), R30
.
390c
CONST (MACHADDR, R1)
MOVW R1, R(MACH) /* R(MACH) = m-> */
.
382,383c
MOVW R(MACH), 0x3C(SP)
MOVW R(USER), 0x40(SP)
.
378,380c
MOVW R26, 0x10(SP) /* user SP */
MOVW R31, 0x28(SP)
MOVW R30, 0x2C(SP)
.
375,376c
MOVW SP, R26 /* save user sp */
ADDU $(KSTACK-UREGSIZE-2*BY2WD), R27, SP
.
370d
363a
NOP
.
277d
88c
MOVW R2, M(EPC)
.
60a
DBG(0x55aa0004)
.
57a
DBG(0x55aa0011)
.
56a
DBG(0x55aa0010)
MOVW R(MACH),4(R20)
.
52a
DBG(0x55aa0003)
.
31a
DBG(0x55aa0002)
.
28a
DBG(0x55aa0001)
.
24a
DBG(0x55aa0000)
.
14a
#define LD(offset, base, rt) WORD $((067<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
#define STD(rt, offset, base) WORD $((077<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
#define DSLL(sa, rt, rd) WORD $(((rt)<<16)|((rd)<<11)|((sa)<<6)|070)
#define DSRA(sa, rt, rd) WORD $(((rt)<<16)|((rd)<<11)|((sa)<<6)|073)
.
## diffname carrera/l.s 1994/0611
## diff -e /n/fornaxdump/1994/0610/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0611/sys/src/brazil/carrera/l.s
96c
OR $(KUSER|EXL|IE), R4
.
## diffname carrera/l.s 1994/0612
## diff -e /n/fornaxdump/1994/0611/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0612/sys/src/brazil/carrera/l.s
556,557c
MOVV Ureg_r1(SP), R1
MOVW Ureg_pc(SP), R26
.
518,553c
MOVV Ureg_r23(SP), R23
MOVV Ureg_r22(SP), R22
MOVV Ureg_r21(SP), R21
MOVV Ureg_r20(SP), R20
MOVV Ureg_r19(SP), R19
MOVV Ureg_r18(SP), R18
MOVV Ureg_r17(SP), R17
MOVV Ureg_r16(SP), R16
MOVV Ureg_r15(SP), R15
MOVV Ureg_r14(SP), R14
MOVV Ureg_r13(SP), R13
MOVV Ureg_r12(SP), R12
MOVV Ureg_r11(SP), R11
MOVV Ureg_r10(SP), R10
MOVV Ureg_r9(SP), R9
MOVV Ureg_r8(SP), R8
MOVV Ureg_r7(SP), R7
MOVV Ureg_r6(SP), R6
MOVV Ureg_r5(SP), R5
MOVV Ureg_r4(SP), R4
MOVV Ureg_r3(SP), R3
MOVV Ureg_lo(SP), R2
MOVV Ureg_hi(SP), R1
MOVV R2, LO
MOVV R1, HI
MOVW Ureg_status(SP), R1
MOVV Ureg_r2(SP), R2
.
515c
MOVV Ureg_r28(SP), R28
.
489,509c
MOVV R23, Ureg_r23(SP)
MOVV R22, Ureg_r22(SP)
MOVV R21, Ureg_r21(SP)
MOVV R20, Ureg_r20(SP)
MOVV R19, Ureg_r19(SP)
MOVV R18, Ureg_r18(SP)
MOVV R17, Ureg_r17(SP)
MOVV R16, Ureg_r16(SP)
MOVV R15, Ureg_r15(SP)
MOVV R14, Ureg_r14(SP)
MOVV R13, Ureg_r13(SP)
MOVV R12, Ureg_r12(SP)
MOVV R11, Ureg_r11(SP)
MOVV R10, Ureg_r10(SP)
MOVV R9, Ureg_r9(SP)
MOVV R8, Ureg_r8(SP)
MOVV R7, Ureg_r7(SP)
MOVV R6, Ureg_r6(SP)
MOVV R5, Ureg_r5(SP)
MOVV R4, Ureg_r4(SP)
MOVV R3, Ureg_r3(SP)
.
486c
MOVV R28, Ureg_r28(SP)
.
479,484c
MOVW R2, Ureg_badvaddr(SP)
MOVW R1, Ureg_tlbvirt(SP)
MOVV HI, R1
MOVV LO, R2
MOVV R1, Ureg_hi(SP)
MOVV R2, Ureg_lo(SP)
.
476c
MOVW R1, Ureg_cause(SP)
.
464,465c
MOVW R1, Ureg_status(SP)
MOVW R2, Ureg_pc(SP)
.
451,460c
MOVV R1, Ureg_r1(SP)
MOVV R2, Ureg_r2(SP)
MOVV R5, Ureg_r5(SP)
MOVV R6, Ureg_r6(SP)
ADDU $Uoffset, SP, R1
MOVW R1, 4(SP) /* arg to base of regs */
.
441,442c
MOVV Ureg_r31(SP), R31
MOVW Ureg_sp(SP), SP
.
436c
OR $7, SP
XOR $7, SP
MOVW R26, Ureg_sp(SP)
MOVV R31, Ureg_r31(SP)
MOVW $1, R26 /* not syscall */
.
433,434c
MOVW SP, R26
.
424,428c
MOVV Ureg_r31(SP), R31
MOVV Ureg_r30(SP), R30
MOVV Ureg_r25(SP), R(MACH)
MOVV Ureg_r24(SP), R(USER)
MOVW Ureg_sp(SP), SP
.
415,416c
MOVW Ureg_pc(SP), R26 /* old pc */
MOVW Ureg_sp(SP), SP
.
410,412c
MOVV Ureg_r31(SP), R31
MOVW Ureg_status(SP), R26
MOVV Ureg_r30(SP), R30
.
393,394c
MOVV R(MACH), Ureg_r25(SP)
MOVV R(USER), Ureg_r24(SP)
.
389,391c
MOVW R26, Ureg_sp(SP) /* user SP */
MOVV R31, Ureg_r31(SP)
MOVV R30, Ureg_r30(SP)
.
387c
ADDU $(KSTACK-UREGSIZE), R27, SP
.
96c
OR $(KUSER|EXL|IE|UX), R4
.
72d
68d
65,66d
60d
38d
34d
29d
22,23d
15,18d
## diffname carrera/l.s 1994/0613
## diff -e /n/fornaxdump/1994/0612/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0613/sys/src/brazil/carrera/l.s
434,437d
405a
TEXT forkret(SB), $0
MOVW R0, R1 /* Fake out system call return */
JMP sysrestore
.
## diffname carrera/l.s 1994/0614
## diff -e /n/fornaxdump/1994/0613/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0614/sys/src/brazil/carrera/l.s
533c
MOVW Ureg_r1(SP), R1
.
530c
MOVW Ureg_r2(SP), R2
.
504,528c
MOVW Ureg_r23(SP), R23
MOVW Ureg_r22(SP), R22
MOVW Ureg_r21(SP), R21
MOVW Ureg_r20(SP), R20
MOVW Ureg_r19(SP), R19
MOVW Ureg_r18(SP), R18
MOVW Ureg_r17(SP), R17
MOVW Ureg_r16(SP), R16
MOVW Ureg_r15(SP), R15
MOVW Ureg_r14(SP), R14
MOVW Ureg_r13(SP), R13
MOVW Ureg_r12(SP), R12
MOVW Ureg_r11(SP), R11
MOVW Ureg_r10(SP), R10
MOVW Ureg_r9(SP), R9
MOVW Ureg_r8(SP), R8
MOVW Ureg_r7(SP), R7
/*
* restored below
* MOVW Ureg_r6(SP), R6
* MOVW Ureg_r5(SP), R5
*/
MOVW Ureg_r4(SP), R4
MOVW Ureg_r3(SP), R3
MOVW Ureg_lo(SP), R2
MOVW Ureg_hi(SP), R1
MOVW R2, LO
MOVW R1, HI
/* restore 64-bit R5, R6 */
ADDU $(UREGSIZE-16), SP, R1
MOVW $~7, R2 /* don't let him use R28 */
AND R2, R1
LD (0,(1), 5)
LD (8,(1), 6)
.
501c
MOVW Ureg_r28(SP), R28
.
475,495c
MOVW R23, Ureg_r23(SP)
MOVW R22, Ureg_r22(SP)
MOVW R21, Ureg_r21(SP)
MOVW R20, Ureg_r20(SP)
MOVW R19, Ureg_r19(SP)
MOVW R18, Ureg_r18(SP)
MOVW R17, Ureg_r17(SP)
MOVW R16, Ureg_r16(SP)
MOVW R15, Ureg_r15(SP)
MOVW R14, Ureg_r14(SP)
MOVW R13, Ureg_r13(SP)
MOVW R12, Ureg_r12(SP)
MOVW R11, Ureg_r11(SP)
MOVW R10, Ureg_r10(SP)
MOVW R9, Ureg_r9(SP)
MOVW R8, Ureg_r8(SP)
MOVW R7, Ureg_r7(SP)
MOVW R6, Ureg_r6(SP)
MOVW R5, Ureg_r5(SP)
MOVW R4, Ureg_r4(SP)
MOVW R3, Ureg_r3(SP)
.
472c
MOVW R28, Ureg_r28(SP)
.
466,470c
MOVW HI, R1
MOVW LO, R2
MOVW R1, Ureg_hi(SP)
MOVW R2, Ureg_lo(SP)
.
440,443c
MOVW R1, Ureg_r1(SP)
MOVW R2, Ureg_r2(SP)
/* save R5, R6 as 64 bits */
ADDU $(UREGSIZE-16), SP, R1
MOVW $~7, R2 /* don't let him use R28 */
AND R2, R1
STD (5, 0,(1))
STD (6, 8,(1))
.
438a
TEXT forkret(SB), $0
MOVW R0, R1 /* Fake out system call return */
JMP sysrestore
.
434c
MOVW Ureg_r31(SP), R31
.
428c
MOVW R31, Ureg_r31(SP)
.
414,417c
MOVW Ureg_r31(SP), R31
MOVW Ureg_r30(SP), R30
MOVW Ureg_r25(SP), R(MACH)
MOVW Ureg_r24(SP), R(USER)
.
406,409d
398c
MOVW Ureg_r30(SP), R30
.
396c
MOVW Ureg_r31(SP), R31
.
379,380c
MOVW R(MACH), Ureg_r25(SP)
MOVW R(USER), Ureg_r24(SP)
.
376,377c
MOVW R31, Ureg_r31(SP)
MOVW R30, Ureg_r30(SP)
.
14a
#define LD(offset, base, rt) WORD $((067<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
#define STD(rt, offset, base) WORD $((077<<26)|((base)<<21)|((rt)<<16)|((offset)&0xFFFF))
#define DSLL(sa, rt, rd) WORD $(((rt)<<16)|((rd)<<11)|((sa)<<6)|070)
#define DSRA(sa, rt, rd) WORD $(((rt)<<16)|((rd)<<11)|((sa)<<6)|073)
.
## diffname carrera/l.s 1994/0617
## diff -e /n/fornaxdump/1994/0614/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0617/sys/src/brazil/carrera/l.s
549,550c
MOVW 0x9C(SP), R1
MOVW 0x0C(SP), R26 /* old pc */
.
545,546c
MOVW 0x08(SP), R1
MOVW 0x98(SP), R2
.
533,536c
MOVW 0x90(SP), R4
MOVW 0x94(SP), R3
MOVW 0x24(SP), R2
MOVW 0x20(SP), R1
.
530,531c
* MOVW 0x88(SP), R6
* MOVW 0x8C(SP), R5
.
511,527c
MOVW 0x44(SP), R23
MOVW 0x48(SP), R22
MOVW 0x4C(SP), R21
MOVW 0x50(SP), R20
MOVW 0x54(SP), R19
MOVW 0x58(SP), R18
MOVW 0x5C(SP), R17
MOVW 0x60(SP), R16
MOVW 0x64(SP), R15
MOVW 0x68(SP), R14
MOVW 0x6C(SP), R13
MOVW 0x70(SP), R12
MOVW 0x74(SP), R11
MOVW 0x78(SP), R10
MOVW 0x7C(SP), R9
MOVW 0x80(SP), R8
MOVW 0x84(SP), R7
.
508c
MOVW 0x30(SP), R28
.
482,502c
MOVW R23, 0x44(SP)
MOVW R22, 0x48(SP)
MOVW R21, 0x4C(SP)
MOVW R20, 0x50(SP)
MOVW R19, 0x54(SP)
MOVW R18, 0x58(SP)
MOVW R17, 0x5C(SP)
MOVW R16, 0x60(SP)
MOVW R15, 0x64(SP)
MOVW R14, 0x68(SP)
MOVW R13, 0x6C(SP)
MOVW R12, 0x70(SP)
MOVW R11, 0x74(SP)
MOVW R10, 0x78(SP)
MOVW R9, 0x7C(SP)
MOVW R8, 0x80(SP)
MOVW R7, 0x84(SP)
MOVW R6, 0x88(SP)
MOVW R5, 0x8C(SP)
MOVW R4, 0x90(SP)
MOVW R3, 0x94(SP)
.
479c
MOVW R28, 0x30(SP)
.
476,477c
MOVW R1, 0x20(SP)
MOVW R2, 0x24(SP)
.
472,473c
MOVW R2, 0x18(SP)
MOVW R1, 0x1C(SP)
.
469c
MOVW R1, 0x14(SP)
.
457,458c
MOVW R1, 0x08(SP)
MOVW R2, 0x0C(SP)
.
452,453c
ADDU $8, SP, R1
MOVW R1, 0x04(SP) /* arg to base of regs */
.
444,445c
MOVW R1, 0x9C(SP)
MOVW R2, 0x98(SP)
.
434,435c
MOVW 0x28(SP), R31
ADDU $UREGSIZE, SP
.
429a
MOVW SP, -(UREGSIZE-16)(SP)
SUBU $UREGSIZE, SP
MOVW R31, 0x28(SP)
.
423,428d
414,418c
MOVW 0x28(SP), R31
MOVW 0x2C(SP), R30
MOVW 0x3C(SP), R(MACH)
MOVW 0x40(SP), R(USER)
MOVW 0x10(SP), SP
.
405,406c
MOVW 0x0C(SP), R26 /* old pc */
MOVW 0x10(SP), SP
.
400,402c
MOVW 0x28(SP), R31
MOVW 0x08(SP), R26
MOVW 0x2C(SP), R30
.
383,384c
MOVW R(MACH), 0x3C(SP)
MOVW R(USER), 0x40(SP)
.
379,381c
MOVW R26, 0x10(SP) /* user SP */
MOVW R31, 0x28(SP)
MOVW R30, 0x2C(SP)
.
377c
ADDU $(KSTACK-UREGSIZE-2*BY2WD), R27, SP
.
86c
OR $(KUSER|EXL|IE), R4
.
62a
DBG(0x55aa0004)
.
59a
DBG(0x55aa0011)
.
58a
DBG(0x55aa0010)
MOVW R(MACH),4(R20)
.
54a
DBG(0x55aa0003)
.
33a
DBG(0x55aa0002)
.
30a
DBG(0x55aa0001)
.
26a
DBG(0x55aa0000)
.
21a
#define DBG(S) CONST(0xa0001000, R20);CONST(S, R21);MOVW R21,(R20)
.
## diffname carrera/l.s 1994/0619
## diff -e /n/fornaxdump/1994/0617/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0619/sys/src/brazil/carrera/l.s
556,557c
MOVV (Ureg_r1-4)(SP), R1 /* BOTCH */
MOVW Ureg_pc(SP), R26
.
518,553c
MOVV (Ureg_r23-4)(SP), R23
MOVV (Ureg_r22-4)(SP), R22
MOVV (Ureg_r21-4)(SP), R21
MOVV (Ureg_r20-4)(SP), R20
MOVV (Ureg_r19-4)(SP), R19
MOVV (Ureg_r18-4)(SP), R18
MOVV (Ureg_r17-4)(SP), R17
MOVV (Ureg_r16-4)(SP), R16
MOVV (Ureg_r15-4)(SP), R15
MOVV (Ureg_r14-4)(SP), R14
MOVV (Ureg_r13-4)(SP), R13
MOVV (Ureg_r12-4)(SP), R12
MOVV (Ureg_r11-4)(SP), R11
MOVV (Ureg_r10-4)(SP), R10
MOVV (Ureg_r9-4)(SP), R9
MOVV (Ureg_r8-4)(SP), R8
MOVV (Ureg_r7-4)(SP), R7
MOVV (Ureg_r6-4)(SP), R6
MOVV (Ureg_r5-4)(SP), R5
MOVV (Ureg_r4-4)(SP), R4
MOVV (Ureg_r3-4)(SP), R3
MOVV (Ureg_lo-4)(SP), R2
MOVV (Ureg_hi-4)(SP), R1
MOVV R2, LO
MOVV R1, HI
MOVW Ureg_status(SP), R1
MOVV (Ureg_r2-4)(SP), R2
.
515c
MOVV (Ureg_r28-4)(SP), R28
.
489,509c
MOVV R23, (Ureg_r23-4)(SP)
MOVV R22, (Ureg_r22-4)(SP)
MOVV R21, (Ureg_r21-4)(SP)
MOVV R20, (Ureg_r20-4)(SP)
MOVV R19, (Ureg_r19-4)(SP)
MOVV R18, (Ureg_r18-4)(SP)
MOVV R17, (Ureg_r17-4)(SP)
MOVV R16, (Ureg_r16-4)(SP)
MOVV R15, (Ureg_r15-4)(SP)
MOVV R14, (Ureg_r14-4)(SP)
MOVV R13, (Ureg_r13-4)(SP)
MOVV R12, (Ureg_r12-4)(SP)
MOVV R11, (Ureg_r11-4)(SP)
MOVV R10, (Ureg_r10-4)(SP)
MOVV R9, (Ureg_r9-4)(SP)
MOVV R8, (Ureg_r8-4)(SP)
MOVV R7, (Ureg_r7-4)(SP)
MOVV R4, (Ureg_r4-4)(SP)
MOVV R3, (Ureg_r3-4)(SP)
.
486c
MOVV R28, (Ureg_r28-4)(SP)
.
479,484c
MOVW R2, Ureg_badvaddr(SP)
MOVW R1, Ureg_tlbvirt(SP)
MOVV HI, R1
MOVV LO, R2
MOVV R1, (Ureg_hi-4)(SP)
MOVV R2, (Ureg_lo-4)(SP)
.
476c
MOVW R1, Ureg_cause(SP)
.
464,465c
MOVW R1, Ureg_status(SP)
MOVW R2, Ureg_pc(SP)
.
451,460c
MOVV R1, (Ureg_r1-4)(SP)
MOVV R2, (Ureg_r2-4)(SP)
MOVV R6, (Ureg_r6-4)(SP)
MOVV R5, (Ureg_r5-4)(SP)
ADDU $Uoffset, SP, R1
MOVW R1, 4(SP) /* arg to base of regs */
.
441,442c
MOVV (Ureg_r31-4)(SP), R31
MOVW Ureg_sp(SP), SP
.
436c
OR $7, SP
XOR $7, SP
MOVW R26, Ureg_sp(SP)
MOVV R31, (Ureg_r31-4)(SP)
MOVW $1, R26 /* not syscall */
.
433,434c
MOVW SP, R26
.
424,428c
MOVV (Ureg_r31-4)(SP), R31
MOVV (Ureg_r30-4)(SP), R30
MOVV (Ureg_r25-4)(SP), R(MACH)
MOVV (Ureg_r24-4)(SP), R(USER)
MOVW Ureg_sp(SP), SP
.
415,416c
MOVW Ureg_pc(SP), R26 /* old pc */
MOVW Ureg_sp(SP), SP
.
410,412c
MOVV (Ureg_r31-4)(SP), R31
MOVW Ureg_status(SP), R26
MOVV (Ureg_r30-4)(SP), R30
.
393,394c
MOVV R(MACH), (Ureg_r25-4)(SP)
MOVV R(USER), (Ureg_r24-4)(SP)
.
389,391c
MOVW R26, Ureg_sp(SP) /* user SP */
MOVV R31, (Ureg_r31-4)(SP)
MOVV R30, (Ureg_r30-4)(SP)
.
387c
ADDU $(KSTACK-UREGSIZE), R27, SP
.
96c
OR $(KUSER|EXL|IE|UX), R4
.
72d
68d
65,66d
60d
38d
34d
29d
22,23d
15,18d
## diffname carrera/l.s 1994/0729
## diff -e /n/fornaxdump/1994/0619/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0729/sys/src/brazil/carrera/l.s
507a
RET
TEXT restreg2(SB), $-4
/* LINK,SB,SP missing */
MOVV (Ureg_r28-4)(SP), R28
/* R27, R26 not saved */
/* R25, R24 missing */
/* R19- R23 restored in rest1 */
.
498,502c
TEXT restreg1(SB), $-4
.
495d
492a
MOVV R6, (Ureg_r6-4)(SP)
MOVV R5, (Ureg_r5-4)(SP)
.
476,480c
/* R23- R19 saved in save1 */
.
463c
MOVW R26, Ureg_cause(SP)
.
460c
MOVV R23, (Ureg_r23-4)(SP)
MOVV R22, (Ureg_r22-4)(SP)
MOVV R21, (Ureg_r21-4)(SP)
MOVV R20, (Ureg_r20-4)(SP)
MOVV R19, (Ureg_r19-4)(SP)
MOVW R1, Ureg_pc(SP)
RET
/*
* all other registers.
* called with M(CAUSE) in R26
*/
TEXT savereg2(SB), $-4
MOVV R2, (Ureg_r2-4)(SP)
.
454,458c
MOVW M(EPC), R1
MOVW M(CAUSE), R26
.
446,452c
MOVW R26, Ureg_status(SP) /* status */
MOVW R27, Ureg_sp(SP) /* user SP */
.
443,444c
MOVW $(~KMODEMASK),R1 /* don't use R28 */
AND R26, R1
MOVW R1, M(STATUS)
.
441d
439c
/*
* save manditory registers.
* called with old M(STATUS) in R26.
* called with old SP in R27
* returns with M(CAUSE) in R26
*/
TEXT savereg1(SB), $-4
.
429c
JAL restreg1(SB)
JAL restreg2(SB)
.
425,427c
JAL savereg1(SB)
JAL savereg2(SB)
ADDU $Uoffset, SP, R1 /* first arg for trap */
.
423d
419c
MOVW SP, R27
.
411a
MOVV (Ureg_r31-4)(SP), R31
.
409,410c
JAL restreg1(SB)
JAL restreg2(SB)
.
407a
.
406a
JAL savereg2(SB)
ADDU $Uoffset, SP, R1 /* first arg for trap */
.
395a
JAL restreg1(SB)
.
392a
AND $(EXCMASK<<2), R26, R1
SUBU $(CSYS<<2), R1
BNE R1, notsys
ADDU $Uoffset, SP, R1 /* first arg for syscall */
.
390,391d
384,385d
381,382d
378d
376a
JAL savereg1(SB)
.
375c
wasuser:
MOVW SP, R27
CONST (MACHADDR, SP) /* R27 = m-> */
MOVW 8(SP), SP /* R26 = m->proc */
MOVW 8(SP), SP /* R27 = m->proc->kstack */
ADDU $(KSTACK-UREGSIZE), SP
.
366,373c
AND $KUSER, R26, R27
BEQ R27, waskernel
.
## diffname carrera/l.s 1994/0810
## diff -e /n/fornaxdump/1994/0729/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0810/sys/src/brazil/carrera/l.s
567d
384,385c
CONST (MACHADDR, R(MACH)) /* R(MACH) = m-> */
.
371,373c
CONST (MACHADDR, SP) /* m-> */
MOVW 8(SP), SP /* m->proc */
MOVW 8(SP), SP /* m->proc->kstack */
MOVW M(STATUS), R26 /* redundant test */
.
## diffname carrera/l.s 1994/0824
## diff -e /n/fornaxdump/1994/0810/sys/src/brazil/carrera/l.s /n/fornaxdump/1994/0824/sys/src/brazil/carrera/l.s
831a
SLLV $32, R6
SRLV $32, R6 /* zero extend */
.
809a
SLLV $32, R6
SRLV $32, R6 /* zero extend */
.
## diffname carrera/l.s 1995/0113
## diff -e /n/fornaxdump/1994/0824/sys/src/brazil/carrera/l.s /n/fornaxdump/1995/0113/sys/src/brazil/carrera/l.s
842,845c
MOVV 0(R1), R7
MOVV R7, 8(R2)
XOR R7, R6
MOVV 0(R1), R8
MOVV R8, 16(R2)
XOR R8, R6
MOVV 0(R1), R9
MOVV R9, 24(R2)
XOR R9, R6
ADD $32, R2
.
837c
MOVW $16, R4
.
822c
ADD $32, R2
.
818,820c
MOVV 8(R2), R7
MOVV R7, 0(R1)
XOR R7, R6
MOVV 16(R2), R8
MOVV R8, 0(R1)
XOR R8, R6
MOVV 24(R2), R9
MOVV R9, 0(R1)
XOR R9, R6
.
813c
MOVW $16, R4
.
## diffname carrera/l.s 1997/0327
## diff -e /n/fornaxdump/1995/0113/sys/src/brazil/carrera/l.s /n/emeliedump/1997/0327/sys/src/brazil/carrera/l.s
793,864d
141,152d
125a
TEXT islo(SB), $0
MOVW M(STATUS), R1
AND $IE, R1
WAIT
RET
.
## diffname carrera/l.s 1998/0606
## diff -e /n/emeliedump/1997/0327/sys/src/brazil/carrera/l.s /n/emeliedump/1998/0606/sys/src/brazil/carrera/l.s
105a
TEXT splxpc(SB), $0 /* for iunlock */
.
## diffname carrera/l.s 1998/0610
## diff -e /n/emeliedump/1998/0606/sys/src/brazil/carrera/l.s /n/emeliedump/1998/0610/sys/src/brazil/carrera/l.s
775a
WAIT
.
774c
WAIT
AND $~0x3f, R1
OR $((1<<4)|(1<<5)|(PTECOHERXCLW>>3)), R1
.
772a
/*
* set up 32 byte primary cache line sizes,
* kseg0 cache mode,
* and store conditional using tlb cache mode
*/
.
## diffname carrera/l.s 1999/0121
## diff -e /n/emeliedump/1998/0610/sys/src/brazil/carrera/l.s /n/emeliedump/1999/0121/sys/src/brazil/carrera/l.s
105a
/* fall though */
.
## diffname carrera/l.s 1999/0327
## diff -e /n/emeliedump/1999/0121/sys/src/brazil/carrera/l.s /n/emeliedump/1999/0327/sys/src/brazil/carrera/l.s
799a
TEXT rdcompare(SB), $0
MOVW M(COMPARE), R1
NOP
RET
.
## diffname carrera/l.s 1999/0714
## diff -e /n/emeliedump/1999/0327/sys/src/brazil/carrera/l.s /n/emeliedump/1999/0714/sys/src/brazil/carrera/l.s
788,791d
## diffname carrera/l.s 2000/0929
## diff -e /n/emeliedump/1999/0714/sys/src/brazil/carrera/l.s /n/emeliedump/2000/0929/sys/src/9/carrera/l.s
30a
/* setfcr(FPPDBL|FPRNR|FPINVAL|FPZDIV|FPOVFL) */
/* bit 24 is R4000-specific; underflow goes to zero */
.
## diffname carrera/l.s 2001/0527 # deleted
## diff -e /n/emeliedump/2000/0929/sys/src/9/carrera/l.s /n/emeliedump/2001/0527/sys/src/9/carrera/l.s
1,802d
|