| plan 9 kernel history: overview | file list | diff list |
1991/1113/ss/l.s (diff list | history)
| 1991/1106/sys/src/9/ss/l.s:1,6 – 1991/1113/sys/src/9/ss/l.s:1,7 (short | long | prev | next) | ||
| 1990/1223 | #include "mem.h" | |
| 1991/0112 |
| |
| 1991/1113 | #define SYSPSR (SPL(0x0)|PSREF|PSRSUPER|0) #define NOOP OR R0, R0; OR R0, R0; OR R0, R0 | |
| 1990/1226 | ||
| 1990/1223 | TEXT start(SB), $-4 | |
| 1991/1106/sys/src/9/ss/l.s:16,21 – 1991/1113/sys/src/9/ss/l.s:17,23 | ||
| 1990/1226 | MOVW $setSB(SB), R2 MOVW $startvirt(SB), R7 JMPL (R7) | |
| 1991/1113 | MOVW $_mul(SB), R0 /* touch _mul etc.; doesn't need to execute */ | |
| 1990/1223 | RETURN /* can't get here */ TEXT startvirt(SB), $-4 | |
| 1991/1106/sys/src/9/ss/l.s:47,54 – 1991/1113/sys/src/9/ss/l.s:49,56 | ||
| 1991/01151 | FMOVD F24, F22 | |
| 1990/1223 | MOVW $mach0(SB), R(MACH) | |
| 1990/1226 |
| |
| 1991/1113 | /* MOVW $0x8, R7 /**/ MOVW R0, WIM | |
| 1990/1223 | JMPL main(SB) | |
| 1991/0115 | MOVW (R0), R0 | |
| 1990/1223 | RETURN | |
| 1991/1106/sys/src/9/ss/l.s:71,79 – 1991/1113/sys/src/9/ss/l.s:73,79 | ||
| 1990/1226 | MOVW R9, R10 AND $~PSRET, R10 /* BUG: book says this is buggy */ MOVW R10, PSR | |
| 1991/1113 | NOOP | |
| 1991/1105 | MOVW (R7), R7 | |
| 1990/1226 | CMP R7, R0 BNE was1 | |
| 1991/1106/sys/src/9/ss/l.s:89,97 – 1991/1113/sys/src/9/ss/l.s:89,95 | ||
| 1990/1226 | MOVW R7, R10 OR $PSRET, R10 MOVW R10, PSR | |
| 1991/1113 | NOOP | |
| 1990/1226 | RETURN TEXT splhi(SB), $0 | |
| 1991/1106/sys/src/9/ss/l.s:101,109 – 1991/1113/sys/src/9/ss/l.s:99,105 | ||
| 1990/1226 | MOVW R7, R10 AND $~PSRET, R10 /* BUG: book says this is buggy */ MOVW R10, PSR | |
| 1991/1113 | NOOP | |
| 1990/1226 | RETURN TEXT splx(SB), $0 | |
| 1991/1106/sys/src/9/ss/l.s:110,118 – 1991/1113/sys/src/9/ss/l.s:106,112 | ||
| 1990/1226 | ||
| 1991/1006 | MOVW R15, 4(R(MACH)) /* save PC in m->splpc */ | |
| 1990/1226 | MOVW R7, PSR /* BUG: book says this is buggy */ | |
| 1991/1113 | NOOP | |
| 1991/1006 | RETURN TEXT spldone(SB), $0 | |
| 1991/1106/sys/src/9/ss/l.s:122,130 – 1991/1113/sys/src/9/ss/l.s:116,122 | ||
| 1991/1106 | TEXT touser(SB), $0 | |
| 1991/1105 | MOVW $(SYSPSR&~PSREF), R8 MOVW R8, PSR | |
| 1990/1226 |
| |
| 1991/1113 | NOOP | |
| 1991/0712 | ||
| 1991/1105 | MOVW R7, R1 | |
| 1990/1226 | SAVE R0, R0 /* RETT is implicit RESTORE */ | |
| 1991/1106/sys/src/9/ss/l.s:143,148 – 1991/1113/sys/src/9/ss/l.s:135,141 | ||
| 1990/1226 | /* R8 to R23 are free to play with */ /* R17 contains PC, R18 contains nPC */ /* R19 has PSR loaded from vector code */ | |
| 1991/1113 | ||
| 1990/1226 | ANDCC $PSRPSUPER, R19, R0 BE usertrap | |
| 1991/1106/sys/src/9/ss/l.s:191,199 – 1991/1113/sys/src/9/ss/l.s:184,190 | ||
| 1990/1226 | SUB $8, R1 | |
| 1991/1106 | MOVW $SYSPSR, R8 MOVW R8, PSR | |
| 1990/1226 |
| |
| 1991/1113 | NOOP | |
| 1991/01151 | JMPL trap(SB) | |
| 1990/1226 | ADD $8, R1 | |
| 1991/1106/sys/src/9/ss/l.s:200,208 – 1991/1113/sys/src/9/ss/l.s:191,197 | ||
| 1991/0112 | restore: MOVW (4*(32+2))(R1), R8 /* PSR */ MOVW R8, PSR | |
| 1990/1226 |
| |
| 1991/1113 | NOOP | |
| 1990/1226 | ||
| 1991/0112 | MOVD (4*30)(R1), R30 MOVD (4*28)(R1), R28 | |
| 1991/1106/sys/src/9/ss/l.s:250,255 – 1991/1113/sys/src/9/ss/l.s:239,245 | ||
| 1990/1226 | /* R17 contains PC, R18 contains nPC */ /* R19 has PSR loaded from vector code */ /* assume user did it; syscall checks */ | |
| 1991/1113 | ||
| 1990/1226 | MOVW R1, R8 MOVW R2, R9 MOVW $setSB(SB), R2 | |
| 1991/1106/sys/src/9/ss/l.s:282,290 – 1991/1113/sys/src/9/ss/l.s:272,278 | ||
| 1990/1226 | ADD $8, R1 MOVW (4*(32+2))(R1), R8 /* PSR */ MOVW R8, PSR | |
| 1991/1113 | NOOP | |
| 1990/1226 | MOVW (4*15)(R1), R15 SAVE R0, R0 | |
| 1991/1106/sys/src/9/ss/l.s:299,307 – 1991/1113/sys/src/9/ss/l.s:287,293 | ||
| 1990/1226 | TEXT puttbr(SB), $0 MOVW R7, TBR | |
| 1991/1113 | NOOP | |
| 1990/1226 | RETURN TEXT gettbr(SB), $0 | |
| 1991/1106/sys/src/9/ss/l.s:342,347 – 1991/1113/sys/src/9/ss/l.s:328,338 | ||
| 1990/1226 | JMPL (R7) | |
| 1990/1223 | RETURN | |
| 1991/1113 | TEXT getpsr(SB), $0 MOVW PSR, R7 RETURN | |
| 1990/1231 | TEXT putcxreg(SB), $0 | |
| 1990/1226 | ||
| 1991/1105 | MOVW $CONTEXT, R8 | |
| 1991/1106/sys/src/9/ss/l.s:376,381 – 1991/1113/sys/src/9/ss/l.s:367,377 | ||
| 1990/1227 | MOVW R8, (R7, 4) | |
| 1990/1226 | RETURN | |
| 1991/1113 | TEXT getw4(SB), $0 MOVW (R7, 4), R7 RETURN | |
| 1990/1227 | TEXT putwC(SB), $0 | |
| 1990/1226 | MOVW 4(FP), R8 | |
| 1991/1106/sys/src/9/ss/l.s:475,484 – 1991/1113/sys/src/9/ss/l.s:471,478 | ||
| 1991/01151 | TEXT savefpregs(SB), $0 MOVW FSR, 0(R7) | |
| 1991/1113 | ADD $4, R7 /* assumes R7 is now MOVD-aligned */ | |
| 1991/01151 |
| |
| 1991/1106/sys/src/9/ss/l.s:507,516 – 1991/1113/sys/src/9/ss/l.s:501,510 | ||
| 1991/01151 | OR $PSREF, R8 MOVW R8, PSR | |
| 1991/1113 | NOOP | |
| 1991/01151 |
| |
| 1991/1113 | MOVW (R7), FSR ADD $4, R7 /* assumes R7 is now MOVD-aligned */ | |
| 1991/01151 | MOVD (0*4)(R7), F0 MOVD (2*4)(R7), F2 | |