@@ 2,7 2,6 @@
#define SP R29
-#define PROM (KSEG1+0x1C000000)
#define NOOP WORD $0x27
#define FCRNOOP NOOP; NOOP; NOOP
#define WAIT NOOP; NOOP
@@ 102,9 101,10 @@ TEXT touser(SB), $-4
ERET
TEXT firmware(SB), $0
- SLL $3, R1
- MOVW $(PROM+0x774), R1
- JMP (R1)
+ MOVW $0xE000D004, R1
+ MOVW R0, 0(R1)
+firm:
+ JMP firm
TEXT splhi(SB), $0
MOVW R31, 12(R(MACH)) /* save PC in m->splpc */
@@ 409,7 409,7 @@ exit(long type)
USED(type);
spllo();
- print("cpu %d exiting\n", m->machno);
+ print("cpu%d exiting\n", m->machno);
while(consactive())
delay(10);
@@ 417,8 417,8 @@ exit(long type)
/* Turn off the NMI hander for the debugger */
vec = (uchar*)0xA0000420;
vec[0] = 0;
- /* Call the prom */
- ((void(*)(void))0xBFC00000)();
+
+ firmware(type);
}
void
@@ 587,7 587,7 @@ setscreen(int maxx, int maxy, int ldepth)
switch(ldepth){
case 3:
for(i = 0; i < 256; i++)
- setcolor(i, xnto32(i>>5, 3), xnto32(i>>2, 3), xnto32(i<<1, 2));
+ setcolor(i, xnto32(i>>5, 3), xnto32(i>>2, 3), xnto32(i, 2));
setcolor(0x55, xnto32(0x15, 6), xnto32(0x15, 6), xnto32(0x15, 6));
setcolor(0xaa, xnto32(0x2a, 6), xnto32(0x2a, 6), xnto32(0x2a, 6));
setcolor(0xff, xnto32(0x3f, 6), xnto32(0x3f, 6), xnto32(0x3f, 6));