diff options
-rw-r--r-- | system/alpha/console/Makefile | 7 | ||||
-rw-r--r-- | system/alpha/console/dbmentry.S | 9 | ||||
-rw-r--r-- | system/alpha/console/printf.c | 4 |
3 files changed, 14 insertions, 6 deletions
diff --git a/system/alpha/console/Makefile b/system/alpha/console/Makefile index e29c02b1a..7f705dd8c 100644 --- a/system/alpha/console/Makefile +++ b/system/alpha/console/Makefile @@ -35,8 +35,8 @@ AS=$(CROSS_COMPILE)as LD=$(CROSS_COMPILE)ld DBMENTRY= fffffc0000010000 -CFLAGS=-I . -I ../h -I$(M5)/dev -fno-builtin -Wa,-m21164 -OBJS=dbmentry.o printf.o paljtokern.o paljtoslave.o console.o +CFLAGS=-I . -I ../h -I$(M5)/dev -I$(M5)/util/m5/ -fno-builtin -Wa,-m21164 +OBJS=dbmentry.o printf.o paljtokern.o paljtoslave.o console.o m5op.o ### Make sure that the M5 variable is set ### ifndef M5 @@ -45,6 +45,9 @@ endif all: console +m5op.o: $(M5)/util/m5/m5op.S + $(CC) $(CFLAGS) -nostdinc -o $@ -c $< + %.o: %.S $(CC) $(CFLAGS) -nostdinc -o $@ -c $< diff --git a/system/alpha/console/dbmentry.S b/system/alpha/console/dbmentry.S index c8a3691e3..e8316390f 100644 --- a/system/alpha/console/dbmentry.S +++ b/system/alpha/console/dbmentry.S @@ -81,7 +81,9 @@ _entry: bis zero,8,t4 mulq t4,v0,t4 addq t3,t4,t3 -cpuwait: ldq t4, 0(t3) + ldah a0, 3(zero) # load arg0 with 65536*3 +cpuwait: .long 0x6000002 # jsr quiesceNs + ldq t4, 0(t3) beq t4, cpuwait bis t4,t4,sp @@ -220,8 +222,9 @@ SlaveSpin: # using any stack space mov a0, t0 # cpu number mov a1, t1 # cpu rpb pointer (virtual) mov a2, t2 # what to spin on - -test: ldl t3, 0(t2) + ldah a0, 3(zero) # load arg0 with 65536 +test: .long 0x6000002 # jsr quiesceNs # wait 65us*3 + ldl t3, 0(t2) beq t3, test zapnot t1,0x1f,a0 # make rpb physical call_pal PAL_SWPCTX_ENTRY # switch to pcb diff --git a/system/alpha/console/printf.c b/system/alpha/console/printf.c index 0e665a434..b958476fb 100644 --- a/system/alpha/console/printf.c +++ b/system/alpha/console/printf.c @@ -54,6 +54,8 @@ #include <sys/types.h> #include <stdarg.h> +#include <stdint.h> +#include "m5op.h" /* The string s is terminated by a '\0' */ void @@ -320,5 +322,5 @@ panic(const char *f, ...) } va_end(ap); /* clean up */ - while(1); + m5_panic(); } |