@@ 50,9 50,12 @@
MOVW $setSB(SB), R2
/* save SPR(SPRG3), or else we can't go back to firmware! */
- MOVW SPR(SAVEXX), R3
+ MOVW SPR(SPRG3), R3
MOVW R3, initsprg3(SB)
+ /* debugger sets R1 to top of usable memory +1 */
+ MOVW R1, memsize(SB)
+
/* set up Mach */
MOVW $mach0(SB), R(MACH)
ADD $(MACHSIZE-8), R(MACH), R1 /* set stack */
@@ 66,6 69,7 @@
GLOBL mach0(SB), $(MAXMACH*BY2PG)
GLOBL initsprg3(SB), $4
+GLOBL memsize(SB), $4
/*
* on return from this function we will be running in virtual mode.
@@ 236,7 240,7 @@ tas0:
TEXT firmware(SB), $0
MOVW initsprg3(SB), R3
- MOVW R3, SPR(SAVEXX)
+ MOVW R3, SPR(SPRG3)
MOVW $MSR_IP, R4
MOVW R4, SPR(SRR1)
MOVW $0xfff00100, R5
@@ 218,7 218,7 @@ exit(int ispanic)
if(active.ispanic && m->machno == 0){
if(cpuserver)
delay(10000);
- else
+ else if(conf.monitor)
for(;;);
}
else
@@ 248,16 248,15 @@ procsave(Proc *p)
void
confinit(void)
{
- int nbytes;
ulong pa;
+ extern ulong memsize; /* passed in from ROM monitor */
conf.nmach = 1; /* processors */
- conf.nproc = 60; /* processes */
+ conf.nproc = 60; /* processes */
pa = PGROUND(PADDR(end));
- nbytes = 256*1024*1024; // hard wire for now
-
- conf.npage0 = nbytes/BY2PG;
+
+ conf.npage0 = memsize/BY2PG;
conf.base0 = pa;
conf.npage1 = 0;