M port/devscc.c => port/devscc.c +15 -0
@@ 486,6 486,21 @@ sccspecial(int port, IOQ *oq, IOQ *iq, int baud)
}
}
+void
+sccrawput(int port, int c)
+{
+ SCC *sp = scc[port];
+
+ if(c == '\n') {
+ sccrawput(port, '\r');
+ delay(100);
+ }
+
+ while((*sp->ptr&TxReady)==0)
+ ;
+ *sp->data = c;
+}
+
static void sccstopen(Queue*, Stream*);
static void sccstclose(Queue*);
static void sccoput(Queue*, Block*);
M ss/l.s => ss/l.s +16 -16
@@ 324,7 324,7 @@ TEXT putcxsegm(SB), $0
MOVW R7, R8 /* context */
MOVW 4(FP), R9 /* segment addr */
MOVW 8(FP), R10 /* segment value */
- MOVW $0xFFE80118, R7
+ MOVW $PUTCXSEGM, R7
JMPL (R7)
RETURN
@@ 388,35 388,35 @@ TEXT putwD16(SB), $0
MOVW 4(FP), R8
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
- ADD $(1<<4), R7
+ ADD $VACLINESZ, R7
MOVW R8, (R7, 0xD)
RETURN
M ss/main.c => ss/main.c +4 -2
@@ 74,7 74,7 @@ ioinit(void)
{
KMap *k;
- /* tell scc driver it's addresses */
+ /* tell scc driver its addresses */
k = kmappa(KMDUART, PTEIO|PTENOCACHE);
sccsetup((void*)(k->va), KMFREQ);
k = kmappa(EIADUART, PTEIO|PTENOCACHE);
@@ 96,12 96,14 @@ init0(void)
u->p->state = Running;
u->p->mach = m;
spllo();
-
+print("init0:\n"); prflush();
+
u->slash = (*devtab[0].attach)(0);
u->dot = clone(u->slash, 0);
kproc("alarm", alarmkproc, 0);
chandevinit();
+print("alarmkp:\n"); prflush();
if(!waserror()){
ksetterm("sun %s");
M ss/mem.h => ss/mem.h +7 -3
@@ 71,7 71,7 @@
#define SCREENSEGM 0xFFF80000
#define SCREENPMEG 0x7E
#define ROMSEGM 0xFFE80000
-#define ROMEND 0xFFEA0000
+#define ROMEND 0xFFEC0000
#define PG2ROM ((ROMEND-ROMSEGM)/BY2PG)
#define IOSEGM0 ROMSEGM /* see mmuinit() */
#define NIOSEGM ((SCREENSEGM-ROMSEGM)/BY2SEGM)
@@ 112,6 112,8 @@
#define ENAB 0x40000000 /* ASI 2 */
#define ENABCACHE 0x10
#define ENABRESET 0x04
+#define VACLINESZ 16 /* cache line size */
+#define VACSIZE (1<<16) /* total cache size */
/*
* Virtual addresses
@@ 119,8 121,10 @@
#define VTAG(va) ((va>>22)&0x03F)
#define VPN(va) ((va>>13)&0x1FF)
-#define PARAM ((char*)0x40500000)
-#define TLBFLUSH_ 0x01
+/*
+ * Rom addresses
+ */
+#define PUTCXSEGM 0xFFE80118
/*
* Address spaces
M ss/mmu.c => ss/mmu.c +4 -4
@@ 142,9 142,9 @@ mmuinit(void)
ulong ktop, l, i, j, c, pte;
/*
- * TEMP: just map the first 4M of bank 0 for the kernel - philw
+ * TEMP: just map the first 8M of bank 0 for the kernel - philw
*/
- ktop = 4*1024*1024;
+ ktop = 8*1024*1024;
/*
* First map lots of memory as kernel addressable in all contexts
*/
@@ 270,8 270,8 @@ putpmeg(ulong virt, ulong phys)
/*
* Flush old entries from cache
*/
- for(i=0; i<0x100; i+=16)
- putwD16(virt+(i<<4), 0);
+ for(i=0; i<VACSIZE; i+=16*VACLINESZ)
+ putwD16(virt+i, 0);
putw4(virt, phys);
}