#include "mem.h" #define SP R30 TEXT _main(SB), $-8 MOVQ $setSB(SB), R29 MOVQ $edata(SB), R1 MOVQ $end(SB), R2 loop2: MOVQ R31, (R1) ADDQ $8, R1 CMPUGT R1, R2, R3 BEQ R3, loop2 JSR main(SB) TEXT firmware(SB), $-8 CALL_PAL $PALhalt MOVQ $_divq(SB), R31 /* touch _divq etc.; doesn't need to execute */ MOVQ $_divl(SB), R31 /* touch _divl etc.; doesn't need to execute */ RET TEXT mb(SB), $-8 MB RET TEXT icflush(SB), $-8 CALL_PAL $PALimb RET TEXT tlbflush(SB), $-8 CALL_PAL $PALmtpr_tbia RET TEXT gendispatch(SB), $-8 MOVQ 8(FP), R16 MOVQ 16(FP), R17 MOVQ 24(FP), R18 MOVQ 32(FP), R19 MOVQ 40(FP), R20 MOVQ R26, R1 JSR (R0) MOVQ R1, R26 RET /* 7a bug: should be RET (R1) */ TEXT rdv(SB), $-8 MOVQ (R0), R0 RET TEXT wrv(SB), $-8 MOVQ 8(FP), R1 MOVQ R1, (R0) RET TEXT ipl(SB), $-8 CALL_PAL $PALmfpr_ipl RET TEXT mces(SB), $-8 CALL_PAL $PALmfpr_mces RET TEXT setipl(SB), $-8 MOVQ R0, R16 CALL_PAL $PALmtpr_ipl RET TEXT setmces(SB), $-8 MOVQ R0, R16 CALL_PAL $PALmtpr_mces RET TEXT ldqp(SB), $-8 MOVQ R0, R16 CALL_PAL $PALldqp RET TEXT stqp(SB), $-8 MOVQ R0, R16 MOVQ 8(FP), R17 CALL_PAL $PALstqp RET TEXT getptbr(SB), $-8 CALL_PAL $PALmfpr_ptbr RET TEXT swppal(SB), $-8 MOVQ R0, R16 /* which PALcode */ MOVQ 8(FP), R17 /* new PC */ MOVQ 16(FP), R18 /* PCBB (physical) */ MOVQ 24(FP), R19 /* VPTB */ MOVQ 32(FP), R20 /* new KSP */ CALL_PAL $PALswppal RET TEXT pcc_cnt(SB), $-8 MOVQ PCC, R1 MOVL R1, R0 RET