| plan 9 kernel history: overview | file list | diff list |
1991/0425/power/l.s (diff list | history)
| 1990/0227/sys/src/9/power/l.s:141,146 – 1990/0419/sys/src/9/power/l.s:141,152 (short | long) | ||
| 1990/0227 | MOVW 4(R2), R29 RET | |
| 1990/0419 | TEXT gotopc(SB), $0 MOVW 0(FP), R2 JAL (R2) RET /* shouldn't get here */ | |
| 1990/0227 | TEXT puttlb(SB), $4 JAL splhi(SB) | |
| 1990/0419/sys/src/9/power/l.s:50,55 – 1990/0424/sys/src/9/power/l.s:50,58 (short | long) | ||
| 1990/0227 | ADDU $1, R1 BNE R1, R2, clrbss | |
| 1990/0424 | MOVW R4, _argc(SB) MOVW R5, _argv(SB) MOVW R6, _env(SB) | |
| 1990/0227 | JAL main(SB) JMP (R0) | |
| 1990/0424/sys/src/9/power/l.s:61,71 – 1990/0427/sys/src/9/power/l.s:61,72 (short | long) | ||
| 1990/0227 | */ TEXT touser(SB), $-4 | |
| 1990/0427 | ||
| 1990/0227 | MOVW M(STATUS), R1 OR $(KUP|IEP), R1 MOVW R1, M(STATUS) NOOP | |
| 1990/0427 | MOVW 0(FP), SP | |
| 1990/0227 | MOVW $(UTZERO+32), R26 /* header appears in text */ RFE (R26) | |
| 1990/0424/sys/src/9/power/l.s:146,152 – 1990/0427/sys/src/9/power/l.s:147,156 | ||
| 1990/0227 | ||
| 1990/0419 | TEXT gotopc(SB), $0 | |
| 1990/0427 | MOVW $0, R0 | |
| 1990/0419 | MOVW 0(FP), R2 | |
| 1990/0427 | MOVW _argc(SB), R4 MOVW _argv(SB), R5 | |
| 1990/0419 | JAL (R2) RET /* shouldn't get here */ | |
| 1990/0427/sys/src/9/power/l.s:8,13 – 1990/0430/sys/src/9/power/l.s:8,14 (short | long) | ||
| 1990/0227 | /* * Boot first processor | |
| 1990/0430 | * - why is the processor number loaded from R0 ????? | |
| 1990/0227 | */ TEXT start(SB), $-4 | |
| 1990/0427/sys/src/9/power/l.s:58,63 – 1990/0430/sys/src/9/power/l.s:59,65 | ||
| 1990/0227 | /* * Take first processor into user mode | |
| 1990/0430 | * - argument is stack pointer to user | |
| 1990/0227 | */ TEXT touser(SB), $-4 | |
| 1990/0427/sys/src/9/power/l.s:145,159 – 1990/0430/sys/src/9/power/l.s:147,194 | ||
| 1990/0227 | MOVW 4(R2), R29 RET | |
| 1990/0419 |
| |
| 1990/0430 | TEXT gotopc(SB), $-4 | |
| 1990/0419 | ||
| 1990/0427 |
| |
| 1990/0419 |
| |
| 1990/0430 | MOVW 0(FP), R7 /* save arguments for later */ | |
| 1990/0427 | MOVW _argc(SB), R4 MOVW _argv(SB), R5 | |
| 1990/0419 |
| |
| 1990/0430 | MOVW $WBFLUSH, R1 /* flush write buffer */ MOVW 0(R1), R1 NOOP MOVW $KSEG1, R3 /* change to uncached address space */ MOVW $gotopc0(SB), R2 OR R3, R2 JMP (R2) TEXT gotopc0(SB), $-4 MOVW $(SWC|ISC), R1 /* swap and isolate cache, stay splhi */ MOVW R1, M(STATUS) NOOP MOVW $gotopc1(SB), R2 /* change back to cached address space */ JMP (R2) TEXT gotopc1(SB), $-4 MOVW $KSEG0, R6 /* init loop variables */ MOVW $(64*1024), R8 _gotopc1: MOVBU R0, 0x00(R6) SUB $0x4, R8 ADD $0x4, R6 BGTZ R8, _gotopc1 MOVW $gotopc2(SB), R2 /* change to uncached address space */ OR R3, R2 JMP (R2) TEXT gotopc2(SB), $-4 MOVW R0, M(STATUS) /* put caches back, still splhi */ NOOP JMP (R7) | |
| 1990/0227 | TEXT puttlb(SB), $4 JAL splhi(SB) | |
| 1990/0427/sys/src/9/power/l.s:438,443 – 1990/0430/sys/src/9/power/l.s:473,479 | ||
| 1990/0227 | RET TEXT restfpregs(SB), $0 | |
| 1990/0430 | ||
| 1990/0227 | MOVW M(STATUS), R3 MOVW 0(FP), R1 OR $CU1, R3 | |
| 1990/0427/sys/src/9/power/l.s:464,467 – 1990/0430/sys/src/9/power/l.s:500,598 | ||
| 1990/0227 | MOVW R2, FCR31 AND $~CU1, R3 MOVW R3, M(STATUS) | |
| 1990/0430 | RET TEXT icflush(SB), $-4 /* icflush(physaddr, nbytes) */ MOVW M(STATUS), R6 MOVW 0(FP), R4 MOVW 4(FP), R5 MOVW $KSEG0, R3 OR R3, R4 MOVW $0, M(STATUS) MOVW $WBFLUSH, R1 /* wbflush */ MOVW 0(R1), R1 NOOP MOVW $KSEG1, R3 MOVW $icflush0(SB), R2 /* make sure PC is in uncached address space */ MOVW $(SWC|ISC), R1 OR R3, R2 JMP (R2) TEXT icflush0(SB), $-4 MOVW R1, M(STATUS) /* swap and isolate cache, splhi */ MOVW $icflush1(SB), R2 JMP (R2) TEXT icflush1(SB), $-4 _icflush1: MOVBU R0, 0x00(R4) MOVBU R0, 0x04(R4) MOVBU R0, 0x08(R4) MOVBU R0, 0x0C(R4) MOVBU R0, 0x10(R4) MOVBU R0, 0x14(R4) MOVBU R0, 0x18(R4) MOVBU R0, 0x1C(R4) MOVBU R0, 0x20(R4) MOVBU R0, 0x24(R4) MOVBU R0, 0x28(R4) MOVBU R0, 0x2C(R4) MOVBU R0, 0x30(R4) MOVBU R0, 0x34(R4) MOVBU R0, 0x38(R4) MOVBU R0, 0x3C(R4) SUB $0x40, R5 ADD $0x40, R4 BGTZ R5, _icflush1 MOVW $icflush2(SB), R2 /* make sure PC is in uncached address space */ OR R3, R2 JMP (R2) TEXT icflush2(SB), $-4 MOVW $0, M(STATUS) /* swap back caches, de-isolate them, and stay splhi */ NOOP /* +++ */ MOVW R6, M(STATUS) RET TEXT dcflush(SB), $-4 /* dcflush(physaddr, nbytes) */ MOVW M(STATUS), R6 MOVW 0(FP), R4 MOVW 4(FP), R5 MOVW $KSEG0, R3 OR R3, R4 MOVW $0, M(STATUS) MOVW $WBFLUSH, R1 MOVW 0(R1), R1 NOOP MOVW $ISC, R1 MOVW R1, M(STATUS) _dcflush0: MOVBU R0, 0x00(R4) MOVBU R0, 0x04(R4) MOVBU R0, 0x08(R4) MOVBU R0, 0x0C(R4) MOVBU R0, 0x10(R4) MOVBU R0, 0x14(R4) MOVBU R0, 0x18(R4) MOVBU R0, 0x1C(R4) MOVBU R0, 0x20(R4) MOVBU R0, 0x24(R4) MOVBU R0, 0x28(R4) MOVBU R0, 0x2C(R4) MOVBU R0, 0x30(R4) MOVBU R0, 0x34(R4) MOVBU R0, 0x38(R4) MOVBU R0, 0x3C(R4) SUB $0x40, R5 ADD $0x40, R4 BGTZ R5, _dcflush0 MOVW $0, M(STATUS) NOOP /* +++ */ MOVW R6, M(STATUS) | |
| 1990/0227 | RET | |
| 1990/0430/sys/src/9/power/l.s:147,192 – 1990/0504/sys/src/9/power/l.s:147,162 (short | long) | ||
| 1990/0227 | MOVW 4(R2), R29 RET | |
| 1990/0430 |
| |
| 1990/0504 | TEXT gotopc(SB), $8 | |
| 1990/0419 | ||
| 1990/0430 | MOVW 0(FP), R7 /* save arguments for later */ | |
| 1990/0427 | MOVW _argc(SB), R4 MOVW _argv(SB), R5 | |
| 1990/0419 | ||
| 1990/0430 |
| |
| 1990/0504 | MOVW _env(SB), R6 MOVW R0, 4(SP) MOVW $(64*1024), R1 MOVW R1, 8(SP) JAL icflush(SB) | |
| 1990/0430 | JMP (R7) | |
| 1990/0227 | TEXT puttlb(SB), $4 | |
| 1990/0430/sys/src/9/power/l.s:502,515 – 1990/0504/sys/src/9/power/l.s:472,487 | ||
| 1990/0227 | MOVW R3, M(STATUS) | |
| 1990/0430 | RET | |
| 1990/0504 | /* * we avoid using R4, R5, R6, and R7 so gotopc can call us without saving them */ | |
| 1990/0430 | TEXT icflush(SB), $-4 /* icflush(physaddr, nbytes) */ | |
| 1990/0504 | MOVW M(STATUS), R10 MOVW 0(FP), R8 MOVW 4(FP), R9 | |
| 1990/0430 | MOVW $KSEG0, R3 | |
| 1990/0504 | OR R3, R8 | |
| 1990/0430 | MOVW $0, M(STATUS) MOVW $WBFLUSH, R1 /* wbflush */ MOVW 0(R1), R1 | |
| 1990/0430/sys/src/9/power/l.s:529,553 – 1990/0504/sys/src/9/power/l.s:501,525 | ||
| 1990/0430 | TEXT icflush1(SB), $-4 _icflush1: | |
| 1990/0504 | MOVBU R0, 0x00(R8) MOVBU R0, 0x04(R8) MOVBU R0, 0x08(R8) MOVBU R0, 0x0C(R8) MOVBU R0, 0x10(R8) MOVBU R0, 0x14(R8) MOVBU R0, 0x18(R8) MOVBU R0, 0x1C(R8) MOVBU R0, 0x20(R8) MOVBU R0, 0x24(R8) MOVBU R0, 0x28(R8) MOVBU R0, 0x2C(R8) MOVBU R0, 0x30(R8) MOVBU R0, 0x34(R8) MOVBU R0, 0x38(R8) MOVBU R0, 0x3C(R8) SUB $0x40, R9 ADD $0x40, R8 BGTZ R9, _icflush1 | |
| 1990/0430 | MOVW $icflush2(SB), R2 /* make sure PC is in uncached address space */ OR R3, R2 JMP (R2) | |
| 1990/0430/sys/src/9/power/l.s:556,562 – 1990/0504/sys/src/9/power/l.s:528,534 | ||
| 1990/0430 | MOVW $0, M(STATUS) /* swap back caches, de-isolate them, and stay splhi */ NOOP /* +++ */ | |
| 1990/0504 | MOVW R10, M(STATUS) | |
| 1990/0430 | RET TEXT dcflush(SB), $-4 /* dcflush(physaddr, nbytes) */ | |
| 1990/0504/sys/src/9/power/l.s:405,411 – 1990/1113/sys/src/9/power/l.s:405,411 (short | long) | ||
| 1990/0227 | TEXT rfnote(SB), $0 MOVW 0(FP), R26 /* 1st arg is &uregpointer */ SUBU $(BY2WD), R26, SP /* pc hole */ | |
| 1990/1113 | JMP restore | |
| 1990/0227 | TEXT clrfpintr(SB), $0 | |
| 1990/1113/sys/src/9/power/l.s:8,14 – 1991/01151/sys/src/9/power/l.s:8,13 (short | long) | ||
| 1990/0227 | /* * Boot first processor | |
| 1990/0430 |
| |
| 1990/0227 | */ TEXT start(SB), $-4 | |
| 1991/01151/sys/src/9/power/l.s:448,453 – 1991/0118/sys/src/9/power/l.s:448,454 (short | long) | ||
| 1990/0227 | OR $CU1, R3 MOVW R3, M(STATUS) MOVW 0x80(R1), R2 | |
| 1991/0118 | NOOP | |
| 1990/0227 | MOVD 0x00(R1), F0 MOVD 0x08(R1), F2 | |
| 1991/0118/sys/src/9/power/l.s:130,136 – 1991/0126/sys/src/9/power/l.s:130,136 (short | long) | ||
| 1990/0227 | MOVW 0(R1), R1 RET | |
| 1991/0126 | TEXT setlabel(SB), $-4 | |
| 1990/0227 | MOVW 0(FP), R2 MOVW $0, R1 | |
| 1991/0118/sys/src/9/power/l.s:138,144 – 1991/0126/sys/src/9/power/l.s:138,144 | ||
| 1990/0227 | MOVW R29, 4(R2) RET | |
| 1991/0126 | TEXT gotolabel(SB), $-4 | |
| 1990/0227 | MOVW 0(FP), R2 MOVW $1, R1 | |
| 1991/0126/sys/src/9/power/l.s:447,453 – 1991/0314/sys/src/9/power/l.s:447,453 (short | long) | ||
| 1990/0227 | MOVW 0(FP), R1 OR $CU1, R3 MOVW R3, M(STATUS) | |
| 1991/0314 | MOVW fpstat+4(FP), R2 | |
| 1991/0118 | NOOP | |
| 1990/0227 | MOVD 0x00(R1), F0 | |
| 1991/0126/sys/src/9/power/l.s:470,475 – 1991/0314/sys/src/9/power/l.s:470,480 | ||
| 1990/0227 | MOVW R2, FCR31 AND $~CU1, R3 MOVW R3, M(STATUS) | |
| 1991/0314 | RET TEXT fcr31(SB), $0 MOVW FCR31, R1 | |
| 1990/0430 | RET | |
| 1990/0504 | /* | |
| 1991/0314/sys/src/9/power/l.s:175,180 – 1991/0425/sys/src/9/power/l.s:175,181 (short | long) | ||
| 1990/0227 | NOOP JAL splx(SB) RET | |
| 1991/0425 | ||
| 1990/0227 | index: TLBWI NOOP | |
| 1991/0314/sys/src/9/power/l.s:238,243 – 1991/0425/sys/src/9/power/l.s:239,290 | ||
| 1990/0227 | TEXT vector80(SB), $-4 | |
| 1991/0425 | MOVW $exception(SB), R26 JMP (R26) TEXT vector0(SB), $-4 MOVW $utlbmiss(SB), R26 MOVW M(TLBVIRT), R27 SLL $(STLBLOG-9), R27 /* delay slot fodder */ JMP (R26) TEXT utlbmiss(SB), $-4 SRL $(STLBLOG), R27, R26 XOR R26, R27 AND $((STLBSIZE-1)<<3), R27 MOVW R27, M(TLBPHYS) /* scratch register, store */ MOVW $((MACHADDR+4) & 0xffff0000), R26 MOVW $MPID, R27 MOVB 3(R27), R27 AND $7, R27 SLL $PGSHIFT, R27 ADDU R27, R26 MOVW M(TLBPHYS), R27 /* scratch register, load */ MOVW ((MACHADDR+4) & 0xffff)(R26), R26 ADDU R26, R27 MOVW 4(R27), R26 MOVW R26, M(TLBPHYS) MOVW M(TLBVIRT), R26 MOVW (R27), R27 BNE R26, R27, stlbm TLBP MOVW M(EPC), R27 MOVW M(INDEX), R26 BGEZ R26, uind TLBWR NOOP RFE (R27) uind: TLBWI NOOP RFE (R27) stlbm: | |
| 1990/0227 | MOVW $exception(SB), R26 JMP (R26) | |
| 1991/0425/sys/src/9/power/l.s:246,257 – 1991/0426/sys/src/9/power/l.s:246,258 (short | long) | ||
| 1991/0425 | MOVW $utlbmiss(SB), R26 MOVW M(TLBVIRT), R27 | |
| 1991/0426 | SRL $(6-3), R27 /* delay slot fodder, right adjust */ | |
| 1991/0425 | JMP (R26) TEXT utlbmiss(SB), $-4 | |
| 1991/0426 | SRL $6, R27, R26 /* right adjusted vpn */ SLL $(STLBLOG-6), R27 /* left adjusted pid */ | |
| 1991/0425 | XOR R26, R27 AND $((STLBSIZE-1)<<3), R27 MOVW R27, M(TLBPHYS) /* scratch register, store */ | |
| 1991/0425/sys/src/9/power/l.s:273,289 – 1991/0426/sys/src/9/power/l.s:274,283 | ||
| 1991/0425 | MOVW (R27), R27 BNE R26, R27, stlbm | |
| 1991/0426 | MOVW M(EPC), R27 | |
| 1991/0425 | RFE (R27) | |
| 1991/0426 | ||
| 1991/0425 | stlbm: | |
| 1990/0227 | MOVW $exception(SB), R26 JMP (R26) | |
| 1991/0426/sys/src/9/power/l.s:160,169 – 1991/0607/sys/src/9/power/l.s:160,167 (short | long) | ||
| 1990/0430 | ||
| 1990/0227 | TEXT puttlb(SB), $4 | |
| 1991/0426/sys/src/9/power/l.s:173,179 – 1991/0607/sys/src/9/power/l.s:171,176 | ||
| 1990/0227 | BGEZ R4, index TLBWR NOOP | |
| 1991/0425 | ||
| 1990/0227 | index: | |
| 1991/0607/sys/src/9/power/l.s:148,161 – 1991/0705/sys/src/9/power/l.s:148,161 (short | long) | ||
| 1990/0227 | ||
| 1990/0504 | TEXT gotopc(SB), $8 | |
| 1990/0419 | ||
| 1991/0705 | MOVW $(64*1024), R1 MOVW R1, 8(SP) JAL icflush(SB) | |
| 1990/0430 | MOVW 0(FP), R7 /* save arguments for later */ | |
| 1990/0427 | MOVW _argc(SB), R4 MOVW _argv(SB), R5 | |
| 1990/0504 | MOVW _env(SB), R6 MOVW R0, 4(SP) | |
| 1990/0430 | JMP (R7) | |
| 1990/0227 | TEXT puttlb(SB), $4 | |
| 1991/0607/sys/src/9/power/l.s:515,613 – 1991/0705/sys/src/9/power/l.s:515,726 | ||
| 1991/0314 | MOVW FCR31, R1 | |
| 1990/0430 | RET | |
| 1990/0504 |
| |
| 1990/0430 |
| |
| 1991/0705 | #define NOP WORD $0x0 | |
| 1990/0430 | ||
| 1990/0504 |
| |
| 1990/0430 |
| |
| 1990/0504 |
| |
| 1990/0430 |
| |
| 1991/0705 | TEXT icflush(SB), $-4 MOVW 0(FP), R4 MOVW 4(FP), R5 MOVW $icflush0(SB), R2 /* Jump to uncache space */ MOVW $0xA0000000, R1 OR R1, R2 | |
| 1990/0430 | JMP (R2) | |
| 1991/0705 | NOP | |
| 1990/0430 | TEXT icflush0(SB), $-4 | |
| 1991/0705 | MOVW $833, R12 /* cache_pass magic */ MOVW $0x10000, R9 /* icache size */ MOVW $0, R13 MOVW M(STATUS), R11 BEQ R9, R0, _icflush3 MOVW $0x30000, R2 /* swap and isolate */ NOP NOP NOP NOP NOP MOVW R2, M(STATUS) NOP NOP NOP NOP NOP MOVW R4, R8 MOVW R5, R9 AND $0xFFFC, R8 MOVW $0x9F200000, R1 OR R1, R8 | |
| 1990/0430 | MOVW $icflush1(SB), R2 JMP (R2) | |
| 1991/0705 | NOP | |
| 1990/0430 | TEXT icflush1(SB), $-4 | |
| 1990/0504 |
| |
| 1991/0705 | SGT R12, R13, R1 BNE R1, _icflush2 MOVW $0, R13 MOVW R11, M(STATUS) MOVW $0x30000, R2 /* swap and isolate */ NOP NOP NOP NOP NOP MOVW R2, M(STATUS) NOP NOP NOP NOP NOP _icflush2: MOVW R0, 0(R8) MOVW R0, 4(R8) MOVW R0, 8(R8) MOVW R0, 12(R8) MOVW R0, 16(R8) MOVW R0, 20(R8) MOVW R0, 24(R8) MOVW R0, 28(R8) ADDU $-32, R9 ADDU $1, R13 ADDU $32, R8 | |
| 1990/0504 | BGTZ R9, _icflush1 | |
| 1990/0430 |
| |
| 1991/0705 | MOVW $icflush3(SB), R2 /* Jump to uncache space */ MOVW $0xA0000000, R1 OR R1, R2 | |
| 1990/0430 | JMP (R2) | |
| 1991/0705 | NOP | |
| 1990/0430 |
| |
| 1991/0705 | TEXT icflush3(SB), $-4 _icflush3: NOP NOP NOP NOP NOP MOVW R11, M(STATUS) NOP NOP NOP NOP NOP | |
| 1990/0430 |
| |
| 1990/0504 |
| |
| 1991/0705 | MOVW $icflush4(SB), R2 JMP (R2) NOP TEXT icflush4(SB), $-4 | |
| 1990/0430 | RET | |
| 1991/0705 | TEXT dcflush(SB), $-4 | |
| 1990/0430 | MOVW 0(FP), R4 MOVW 4(FP), R5 | |
| 1991/0705 | MOVW $dcflush0(SB), R2 /* Jump to uncache space */ MOVW $0xA0000000, R1 OR R1, R2 JMP (R2) NOP TEXT dcflush0(SB), $-4 MOVW $833, R12 /* cache_pass magdc */ MOVW $0x10000, R9 /* dcache size */ MOVW $0, R13 MOVW M(STATUS), R11 BEQ R9, R0, _dcflush3 MOVW $0x10000, R2 /* isolate data cache */ NOP NOP NOP NOP NOP MOVW R2, M(STATUS) NOP NOP NOP NOP NOP MOVW R4, R8 MOVW R5, R9 AND $0xFFFC, R8 MOVW $0x9F200000, R1 OR R1, R8 MOVW $dcflush1(SB), R2 JMP (R2) NOP TEXT dcflush1(SB), $-4 _dcflush1: SGT R12, R13, R1 BNE R1, _dcflush2 MOVW $0, R13 MOVW R11, M(STATUS) MOVW $0x10000, R2 /* isolate data cache */ NOP NOP NOP NOP NOP MOVW R2, M(STATUS) NOP NOP NOP NOP NOP _dcflush2: MOVW R0, 0(R8) MOVW R0, 4(R8) MOVW R0, 8(R8) MOVW R0, 12(R8) MOVW R0, 16(R8) MOVW R0, 20(R8) MOVW R0, 24(R8) MOVW R0, 28(R8) ADDU $-32, R9 ADDU $1, R13 ADDU $32, R8 BGTZ R9, _dcflush1 MOVW $dcflush3(SB), R2 /* Jump to uncache space */ MOVW $0xA0000000, R1 OR R1, R2 JMP (R2) NOP TEXT dcflush3(SB), $-4 _dcflush3: NOP NOP NOP NOP NOP MOVW R11, M(STATUS) NOP NOP NOP NOP NOP MOVW $dcflush4(SB), R2 JMP (R2) NOP TEXT dcflush4(SB), $-4 | |
| 1990/0227 | RET | |
| 1991/0705/sys/src/9/power/l.s:243,261 – 1991/0711/sys/src/9/power/l.s:243,264 (short | long) | ||
| 1991/0425 | MOVW $utlbmiss(SB), R26 MOVW M(TLBVIRT), R27 | |
| 1991/0426 |
| |
| 1991/0425 | JMP (R26) TEXT utlbmiss(SB), $-4 | |
| 1991/0426 |
| |
| 1991/0711 | MOVW R27, R26 SLL $1, R26 SRL $12, R27 | |
| 1991/0425 | XOR R26, R27 | |
| 1991/0711 | AND $(STLBSIZE-1), R27 SLL $8, R27 /* R27 = (((tlbvirt<<1)^(tlbvirt>>12)) & (STLBSIZE-1)) << 8 (8 to clear zero in TLBPHYS) */ | |
| 1991/0425 | MOVW R27, M(TLBPHYS) /* scratch register, store */ | |
| 1991/0711 | MOVW $((MACHADDR+4) & 0xffff0000), R26 /* get &mach[0].stb BUG */ OR $((MACHADDR+4) & 0xffff), R26 MOVW $MPID, R27 /* add BY2PG*machno */ | |
| 1991/0425 | MOVB 3(R27), R27 AND $7, R27 SLL $PGSHIFT, R27 | |
| 1991/0705/sys/src/9/power/l.s:262,268 – 1991/0711/sys/src/9/power/l.s:265,272 | ||
| 1991/0425 | ADDU R27, R26 MOVW M(TLBPHYS), R27 /* scratch register, load */ | |
| 1991/0711 | MOVW (R26), R26 SRL $5, R27 /* R27 is now index * 8 */ | |
| 1991/0425 | ADDU R26, R27 MOVW 4(R27), R26 MOVW R26, M(TLBPHYS) | |
| 1991/0705/sys/src/9/power/l.s:278,283 – 1991/0711/sys/src/9/power/l.s:282,288 | ||
| 1991/0425 | stlbm: | |
| 1990/0227 | MOVW $exception(SB), R26 JMP (R26) | |
| 1991/0711 | ||
| 1990/0227 | TEXT exception(SB), $-4 | |
| 1991/0711/sys/src/9/power/l.s:146,151 – 1991/0726/sys/src/9/power/l.s:146,156 (short | long) | ||
| 1990/0227 | MOVW 4(R2), R29 RET | |
| 1991/0726 | TEXT getcallerpc(SB), $0 MOVW (SP), R1 RET | |
| 1990/0504 | TEXT gotopc(SB), $8 | |
| 1990/0419 | ||
| 1991/0705 | MOVW $(64*1024), R1 | |
| 1991/0726/sys/src/9/power/l.s:99,104 – 1991/1011/sys/src/9/power/l.s:99,105 (short | long) | ||
| 1990/0227 | TEXT splhi(SB), $0 | |
| 1991/1011 | MOVW R31, 8(R(MACH)) /* save PC in m->splpc */ | |
| 1990/0227 | MOVW M(STATUS), R1 AND $~IEC, R1, R2 MOVW R2, M(STATUS) | |
| 1991/0726/sys/src/9/power/l.s:105,120 – 1991/1011/sys/src/9/power/l.s:106,114 | ||
| 1990/0227 | NOOP RET | |
| 1991/1011 | MOVW R31, 8(R(MACH)) /* save PC in m->splpc */ | |
| 1990/0227 | MOVW 0(FP), R1 MOVW M(STATUS), R2 AND $IEC, R1 | |
| 1991/0726/sys/src/9/power/l.s:122,127 – 1991/1011/sys/src/9/power/l.s:116,133 | ||
| 1990/0227 | OR R2, R1 MOVW R1, M(STATUS) NOOP | |
| 1991/1011 | RET TEXT spllo(SB), $0 MOVW M(STATUS), R1 OR $IEC, R1, R2 MOVW R2, M(STATUS) NOOP RET TEXT spldone(SB), $0 | |
| 1990/0227 | RET TEXT wbflush(SB), $-4 | |
| 1991/1011/sys/src/9/power/l.s:63,73 – 1991/1208/sys/src/9/power/l.s:63,73 (short | long) | ||
| 1990/0227 | TEXT touser(SB), $-4 | |
| 1990/0427 | ||
| 1991/1208 | MOVW R1, SP | |
| 1990/0227 | MOVW M(STATUS), R1 OR $(KUP|IEP), R1 MOVW R1, M(STATUS) NOOP | |
| 1990/0427 |
| |
| 1990/0227 | MOVW $(UTZERO+32), R26 /* header appears in text */ RFE (R26) | |
| 1991/1011/sys/src/9/power/l.s:109,115 – 1991/1208/sys/src/9/power/l.s:109,114 | ||
| 1990/0227 | TEXT splx(SB), $0 | |
| 1991/1011 | MOVW R31, 8(R(MACH)) /* save PC in m->splpc */ | |
| 1990/0227 |
| |
| 1991/1011/sys/src/9/power/l.s:138,155 – 1991/1208/sys/src/9/power/l.s:137,152 | ||
| 1990/0227 | ||
| 1991/0126 | TEXT setlabel(SB), $-4 | |
| 1990/0227 |
| |
| 1991/1208 | MOVW R31, 0(R1) MOVW R29, 4(R1) | |
| 1990/0227 | MOVW $0, R1 | |
| 1991/0126 | TEXT gotolabel(SB), $-4 | |
| 1990/0227 |
| |
| 1991/1208 | MOVW 0(R1), R31 MOVW 4(R1), R29 | |
| 1990/0227 | MOVW $1, R1 | |
| 1991/0726 | TEXT getcallerpc(SB), $0 | |
| 1991/1011/sys/src/9/power/l.s:159,168 – 1991/1208/sys/src/9/power/l.s:156,166 | ||
| 1991/0726 | ||
| 1990/0504 | TEXT gotopc(SB), $8 | |
| 1990/0419 | ||
| 1991/0705 |
| |
| 1991/1208 | MOVW R1, 0(FP) /* save arguments for later */ MOVW $(64*1024), R7 MOVW R7, 8(SP) | |
| 1991/0705 | JAL icflush(SB) | |
| 1990/0430 |
| |
| 1991/1208 | MOVW 0(FP), R7 | |
| 1990/0427 | MOVW _argc(SB), R4 MOVW _argv(SB), R5 | |
| 1990/0504 | MOVW _env(SB), R6 | |
| 1991/1011/sys/src/9/power/l.s:171,185 – 1991/1208/sys/src/9/power/l.s:169,182 | ||
| 1990/0430 | ||
| 1990/0227 | TEXT puttlb(SB), $4 | |
| 1991/1208 | MOVW 4(FP), R2 MOVW R1, M(TLBVIRT) MOVW R2, M(TLBPHYS) | |
| 1990/0227 | NOOP TLBP NOOP | |
| 1991/1208 | MOVW M(INDEX), R3 BGEZ R3, index | |
| 1990/0227 | TLBWR NOOP RET | |
| 1991/1011/sys/src/9/power/l.s:187,204 – 1991/1208/sys/src/9/power/l.s:184,199 | ||
| 1990/0227 | index: TLBWI NOOP | |
| 1991/1208 | SLL $8, R1 | |
| 1990/0227 | MOVW R2, M(TLBVIRT) MOVW R3, M(TLBPHYS) | |
| 1991/1208 | MOVW R1, M(INDEX) | |
| 1990/0227 | NOOP TLBWI NOOP | |
| 1991/1011/sys/src/9/power/l.s:219,228 – 1991/1208/sys/src/9/power/l.s:214,222 | ||
| 1990/0227 | TEXT gettlb(SB), $0 | |
| 1991/1208 | SLL $8, R1 MOVW R1, M(INDEX) | |
| 1990/0227 | NOOP TLBR NOOP | |
| 1991/1011/sys/src/9/power/l.s:235,243 – 1991/1208/sys/src/9/power/l.s:229,236 | ||
| 1990/0227 | TEXT gettlbvirt(SB), $0 | |
| 1991/1208 | SLL $8, R1 MOVW R1, M(INDEX) | |
| 1990/0227 | NOOP TLBR NOOP | |
| 1991/1011/sys/src/9/power/l.s:329,334 – 1991/1208/sys/src/9/power/l.s:322,328 | ||
| 1990/0227 | AND $7, R1 SLL $PGSHIFT, R1 ADDU R1, R(MACH) /* add offset for mach # */ | |
| 1991/1208 | MOVW 4(SP), R1 /* first arg for syscall, trap */ | |
| 1990/0227 | BNE R26, notsys | |
| 1991/1011/sys/src/9/power/l.s:361,366 – 1991/1208/sys/src/9/power/l.s:355,361 | ||
| 1990/0227 | SUB $0xA0, SP MOVW R31, 0x28(SP) JAL saveregs(SB) | |
| 1991/1208 | MOVW 4(SP), R1 /* first arg for trap */ | |
| 1990/0227 | JAL trap(SB) JAL restregs(SB) MOVW 0x28(SP), R31 | |
| 1991/1011/sys/src/9/power/l.s:456,466 – 1991/1208/sys/src/9/power/l.s:451,460 | ||
| 1990/0227 | RET TEXT rfnote(SB), $0 | |
| 1991/1208 | MOVW R1, R26 /* 1st arg is &uregpointer */ | |
| 1990/0227 | SUBU $(BY2WD), R26, SP /* pc hole */ | |
| 1990/1113 | JMP restore | |
| 1990/0227 |
| |
| 1991/1011/sys/src/9/power/l.s:470,476 – 1991/1208/sys/src/9/power/l.s:464,469 | ||
| 1990/0227 | TEXT savefpregs(SB), $0 MOVW M(STATUS), R3 | |
| 1991/1011/sys/src/9/power/l.s:498,504 – 1991/1208/sys/src/9/power/l.s:491,496 | ||
| 1990/0227 | TEXT restfpregs(SB), $0 | |
| 1990/0430 | ||
| 1990/0227 | MOVW M(STATUS), R3 | |
| 1991/0314 | MOVW fpstat+4(FP), R2 | |
| 1991/1011/sys/src/9/power/l.s:534,540 – 1991/1208/sys/src/9/power/l.s:526,532 | ||
| 1991/0705 | #define NOP WORD $0x0 | |
| 1990/0430 | ||
| 1991/0705 | TEXT icflush(SB), $-4 | |
| 1991/1208 | MOVW R1, R4 | |
| 1991/0705 | MOVW 4(FP), R5 MOVW $icflush0(SB), R2 /* Jump to uncache space */ MOVW $0xA0000000, R1 | |
| 1991/1011/sys/src/9/power/l.s:638,644 – 1991/1208/sys/src/9/power/l.s:630,636 | ||
| 1990/0430 | RET | |
| 1991/0705 | TEXT dcflush(SB), $-4 | |
| 1990/0430 |
| |
| 1991/1208 | MOVW R1, R4 | |
| 1990/0430 | MOVW 4(FP), R5 | |
| 1991/0705 | MOVW $dcflush0(SB), R2 /* Jump to uncache space */ MOVW $0xA0000000, R1 | |
| 1991/1208/sys/src/9/power/l.s:151,157 – 1992/0222/sys/src/9/power/l.s:151,157 (short | long) | ||
| 1990/0227 | ||
| 1991/0726 | TEXT getcallerpc(SB), $0 | |
| 1992/0222 | MOVW 4(SP), R1 | |
| 1991/0726 | RET | |
| 1990/0504 | TEXT gotopc(SB), $8 | |
| 1992/0222/sys/src/9/power/l.s:63,69 – 1992/0318/sys/src/9/power/l.s:63,69 (short | long) | ||
| 1990/0227 | TEXT touser(SB), $-4 | |
| 1990/0427 | ||
| 1991/1208 |
| |
| 1992/0318 | MOVW R1, SP /* user stack pointer */ | |
| 1990/0227 | MOVW M(STATUS), R1 OR $(KUP|IEP), R1 MOVW R1, M(STATUS) | |
| 1992/0318/sys/src/9/power/l.s:151,157 – 1992/0319/sys/src/9/power/l.s:151,157 (short | long) | ||
| 1990/0227 | ||
| 1991/0726 | TEXT getcallerpc(SB), $0 | |
| 1992/0222 |
| |
| 1992/0319 | MOVW 0(SP), R1 | |
| 1991/0726 | RET | |
| 1990/0504 | TEXT gotopc(SB), $8 | |
| 1992/0319/sys/src/9/power/l.s:93,100 – 1992/0610/sys/src/9/power/l.s:93,100 (short | long) | ||
| 1990/0227 | TEXT firmware(SB), $0 | |
| 1992/0610 | SLL $3, R1 ADD $PROM, R1 | |
| 1990/0227 | JMP (R1) TEXT splhi(SB), $0 | |
| 1992/0610/sys/src/9/power/l.s:125,130 – 1992/0629/sys/src/9/power/l.s:125,156 (short | long) | ||
| 1991/1011 | NOOP RET | |
| 1992/0629 | TEXT muxlock(SB),$0 MOVW R1, R2 /* sbsem */ MOVW 4(FP), R3 /* lk->val */ MOVW M(STATUS), R5 /* splhi */ AND $~IEC, R5, R4 MOVW R4, M(STATUS) MOVW 0(R2),R4 /* grab sbsem */ AND $1, R4 BNE R4, f1 MOVW 0(R3),R4 BNE R4, f0 MOVW $1, R1 MOVW R1, 0(R3) /* lk->val = 1 */ MOVW R0, 0(R2) /* *sbsem = 0 */ MOVW R5, M(STATUS) /* splx */ RET f0: MOVW R0, 0(R2) /* *sbsem = 0 */ f1: MOVW R5, M(STATUS) /* splx */ MOVW R0, R1 /* return 0 */ RET | |
| 1991/1011 | TEXT spldone(SB), $0 | |
| 1990/0227 | RET | |
| 1992/0629/sys/src/9/power/l.s:163,177 – 1992/0819/sys/src/9/power/l.s:163,177 (short | long) | ||
| 1990/0227 | ||
| 1991/0126 | TEXT setlabel(SB), $-4 | |
| 1990/0227 | ||
| 1991/1208 |
| |
| 1992/0819 | MOVW R29, 0(R1) MOVW R31, 4(R1) | |
| 1990/0227 | MOVW $0, R1 RET | |
| 1991/0126 | TEXT gotolabel(SB), $-4 | |
| 1990/0227 | ||
| 1991/1208 |
| |
| 1992/0819 | MOVW 0(R1), R29 MOVW 4(R1), R31 | |
| 1990/0227 | MOVW $1, R1 RET | |
| 1992/0819/sys/src/9/power/l.s:271,276 – 1992/0907/sys/src/9/power/l.s:271,282 (short | long) | ||
| 1991/0425 | TEXT vector0(SB), $-4 | |
| 1992/0907 | MOVW $((MACHADDR+368) & 0xffff0000), R26 /* get m->tlbfault BUG */ OR $((MACHADDR+368) & 0xffff), R26 MOVW (R26), R27 ADD $1, R27 MOVW R27, (R26) | |
| 1991/0425 | MOVW $utlbmiss(SB), R26 MOVW M(TLBVIRT), R27 JMP (R26) | |
| Too many diffs (26 > 25). Stopping. | ||