From 1865821ab4a1ed85445ddca66de17fcd26eabfe7 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 21 Aug 2001 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2001-08-21 --- bitsy/l.s | 42 ++++++++++++++++-------------------------- bitsy/power.c | 49 ++----------------------------------------------- pc/sdata.c | 2 +- port/page.c | 4 ++-- 4 files changed, 21 insertions(+), 76 deletions(-) diff --git a/bitsy/l.s b/bitsy/l.s index 63b014d68ae4d1f1fe8db28e10dc4096d0fd4293..6adc62422c16c75f12149d285430079eaee613af 100644 --- a/bitsy/l.s +++ b/bitsy/l.s @@ -473,11 +473,11 @@ TEXT gotolabel(SB), $-4 MOVW $1, R0 RET -/* save the state machine in power_resume[] for an upcoming suspend +/* save the state machine in power_state[] for an upcoming suspend */ TEXT setpowerlabel(SB), $-4 - MOVW $power_resume+0(SB), R0 - /* svc */ /* power_resume[]: what */ + MOVW $power_state+0(SB), R0 + /* svc */ /* power_state[]: what */ MOVW R1, 0(R0) MOVW R2, 4(R0) MOVW R3, 8(R0) @@ -558,7 +558,7 @@ TEXT setpowerlabel(SB), $-4 /* Entered after a resume from suspend state. * The bootldr jumps here after a processor reset. */ -TEXT sa1100_power_resume(SB), $-4 +TEXT power_resume(SB), $-4 MOVW $setR12(SB), R12 /* load the SB */ /* SVC mode, interrupts disabled */ MOVW $(PsrDirq|PsrDfiq|PsrMsvc), R1 @@ -566,7 +566,7 @@ TEXT sa1100_power_resume(SB), $-4 /* gotopowerlabel() */ /* svc */ - MOVW $power_resume+0(SB), R0 + MOVW $power_state+0(SB), R0 MOVW 56(R0), R1 /* R1: SPSR, R2: CPSR */ MOVW 60(R0), R2 MOVW R1, SPSR @@ -677,9 +677,9 @@ TEXT power_down(SB), $-4 MOVW gpioregs+0(SB),R6 MOVW memconfregs+0(SB),R5 MOVW powerregs+0(SB),R3 - MOVW 0x1c(R5),R1 - ORR $0x30400000,R1 - MOVW R1,refr-4(SP) + MOVW 0x1c(R5),R4 + ORR $0x30400000,R4 + AND $(~0xfff0),R4 MOVW $0x80000003,R2 MOVW R2,0xc(R3) MOVW $15,R2 @@ -688,7 +688,7 @@ TEXT power_down(SB), $-4 MOVW R2,0x10(R3) MOVW $0,R2 MOVW R2,0x18(R3) - MOVW $sa1100_power_resume+0(SB),R2 + MOVW $power_resume+0(SB),R2 MOVW R2,0x8(R3) MOVW $0,R2 MOVW R2,0x4(R6) @@ -705,44 +705,34 @@ l13: SUB $1,R0 l14: SUB $1,R0 BGT l14 MOVW powerregs+0(SB),R5 - MOVW refr-4(SP),R4 - AND $(~0xfff0),R4 ORR $0x80000000,R4,R6 AND $(~0x80100000),R6,R11 MOVW memconfregs+0(SB),R3 - MOVW (R3),R12 + MOVW 0x0(R3),R12 AND $(~0x30003),R12 MOVW 0x10(R3),R2 - AND $0xfffcfffc,R2 + AND $(~0x00030003),R2 MOVW R2,0x10(R3) MOVW 0x14(R3),R2 - AND $0xfffcfffc,R2 + AND $(~0x00030003),R2 MOVW R2,0x14(R3) MOVW 0x2c(R3),R2 - AND $0xfffcfffc,R2 + AND $(~0x00030003),R2 MOVW R2,0x2c(R3) + MOVW R0,R0 /* filler */ MOVW $1,R2 MOVW R4,0x1c(R3) // MOVW R6,0x1c(R3) -// MOVW R12,(R3) + MOVW R12,0x0(R3) // MOVW R11,0x1c(R3) - MOVW R2,0(R5) + MOVW R2,0x0(R5) slloop: B slloop /* loop waiting for sleep */ -TEXT coma(SB), $-4 - MOVW $1,R1 - MOVW $(MEMCONFREGS+0x1c),R2 - MOVW $(POWERREGS+0x0),R3 -// MOVW R0,(R2) - MOVW R1,(R3) -comaloop: - B comaloop - /* The first MCR instruction of this function needs to be on a cache-line * boundary; to make this happen, it will be copied (in trap.c). * diff --git a/bitsy/power.c b/bitsy/power.c index 08ad4442444361bf55441e2b5a659ac6a779dfbe..0f4e907a22a1ade10c87a52d13a1082a19f6566f 100644 --- a/bitsy/power.c +++ b/bitsy/power.c @@ -13,11 +13,11 @@ * it's only used up to 164/4. * it's only used by routines in l.s */ -ulong power_resume[200/4]; +ulong power_state[200/4]; Rendez powerr; ulong powerflag = 0; /* set to start power-off sequence */ -extern void sa1100_power_resume(void); +extern void power_resume(void); extern int setpowerlabel(void); extern void _start(void); extern Uart sa1110uart[]; @@ -143,50 +143,6 @@ gpiorestore(GPIOregs *to, GPIOregs *from) void (*restart)(void) = nil; -static void -sa1100_power_off(void) -{ - ulong refr; - - /* Set KAPD and EAPD bits */ - refr = memconfregs->mdrefr; - refr |= 1<pwer = 1 << IRQrtc | 1 << IRQgpio0 | 1 << IRQgpio1; - - /* clear previous reset status */ - resetregs->rcsr = RCSR_all; - - /* disable internal oscillator, float CS lines */ - powerregs->pcfr = PCFR_opde|PCFR_fp|PCFR_fs; - powerregs->pgsr = 0; - /* set resume address. The loader jumps to it */ - powerregs->pspr = (ulong)sa1100_power_resume; - - /* set all GPIOs to input mode */ - gpioregs->direction = 0; - - /* set lowest clock; delay to avoid resume hangs on fast sa1110 */ - memconfregs->mdrefr |= 1<<22; - µdelay(90); - powerregs->ppcr = 0; - µdelay(90); - - memconfregs->msc0 &= ~0x30003; - memconfregs->msc1 &= ~0x30003; - memconfregs->msc2 &= ~0x30003; - refr &= ~0xfff0; - memconfregs->mdrefr = refr; /* Clear dri 0 ⋯ 11 */ - refr |= 1<mdrefr = refr; /* Set selfrefresh */ - powerregs->pmcr = PCFR_suspend; - for(;;); -} - static int bitno(ulong x) { @@ -262,7 +218,6 @@ deepsleep(void) { cacheflush(); delay(100); power_down(); -// sa1100_power_off(); /* no return */ } diff --git a/pc/sdata.c b/pc/sdata.c index d518e1d10d46946a9e502a43a789c334a1153511..604b36c6684af060d0345194a286e933baa571e8 100644 --- a/pc/sdata.c +++ b/pc/sdata.c @@ -606,7 +606,7 @@ retry: atadmamode(drive); if(DEBUG & DbgCONFIG){ - print("dev %2.2uX port %uX config %4.4uX capabilities %4.4uX", + print("dev %2.2uX port %uX config %4.4uX cap %4.4uX", dev, cmdport, iconfig, drive->info[Icapabilities]); print(" mwdma %4.4uX", drive->info[Imwdma]); diff --git a/port/page.c b/port/page.c index 793533e5ead334a318840372486df802389de6ec..0df601ed01270169d81f6fe570b924a344a70d19 100644 --- a/port/page.c +++ b/port/page.c @@ -57,8 +57,8 @@ pageinit(void) swapalloc.highwater = (palloc.user*5)/100; swapalloc.headroom = swapalloc.highwater + (swapalloc.highwater/4); - print("%lud free pages\n", palloc.user); - print("%ludK bytes\n", pm); + print("%lud free pages, ", palloc.user); + print("%ludK bytes, ", pm); print("%ludK swap\n", vm); }