From 07901302d7fca46dbfe7d34a9f00cce09d880097 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 22 Jul 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-07-22 --- port/devscc.c | 15 +++++++++++++++ ss/l.s | 32 ++++++++++++++++---------------- ss/main.c | 6 ++++-- ss/mem.h | 10 +++++++--- ss/mmu.c | 8 ++++---- 5 files changed, 46 insertions(+), 25 deletions(-) diff --git a/port/devscc.c b/port/devscc.c index d65dad92168bfe104041c1797a2bac23aec6369d..d744fcfd6bd492e94900970ed50fd3de61307ee9 100644 --- a/port/devscc.c +++ b/port/devscc.c @@ -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*); diff --git a/ss/l.s b/ss/l.s index 27065a9b57630e7379f8ae7ef1e4ae3c63a3ed1a..9f99a00f07d73673323812520a7c37717e69346b 100644 --- a/ss/l.s +++ b/ss/l.s @@ -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 diff --git a/ss/main.c b/ss/main.c index 0fe0cf597592c90e2ef585eeb341b4bc3e60651d..0afac6130aed236f6b47e5b53dbcfe561947c561 100644 --- a/ss/main.c +++ b/ss/main.c @@ -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"); diff --git a/ss/mem.h b/ss/mem.h index cee5ba43f1efa65979a02447dc7e91125035c9a1..310fb692859d9a8290f07699885b573f31bd57bb 100644 --- a/ss/mem.h +++ b/ss/mem.h @@ -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 diff --git a/ss/mmu.c b/ss/mmu.c index 8ad3491fde26af9b5a6ca73586d6448be38f85bf..34f9777ef2e739c5167fd3ce227a2fcede753ff0 100644 --- a/ss/mmu.c +++ b/ss/mmu.c @@ -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