changeset 257eb95aead3 in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=257eb95aead3 description: Makefile cleanup, no seperate middle preprocessing steps anymore
diffstat: system/alpha/console/Makefile | 42 ++---- system/alpha/console/dbmentry.S | 242 +++++++++++++++++++++++++++++++++++++ system/alpha/console/dbmentry.s | 242 ------------------------------------- system/alpha/console/paljtokern.S | 156 +++++++++++++++++++++++ system/alpha/console/paljtokern.s | 156 ----------------------- system/alpha/console/paljtoslave.S | 151 +++++++++++++++++++++++ system/alpha/console/paljtoslave.s | 151 ----------------------- 7 files changed, 564 insertions(+), 576 deletions(-) diffs (truncated from 1199 to 300 lines): diff -r 013cbe16f1d6 -r 257eb95aead3 system/alpha/console/Makefile --- a/system/alpha/console/Makefile Tue Nov 23 03:20:27 2004 -0500 +++ b/system/alpha/console/Makefile Tue Nov 23 03:40:32 2004 -0500 @@ -1,9 +1,5 @@ DBMENTRY = fffffc0000010000 -INCLUDES = -I$(PALCODE) -I$(INCLUDEH) -I$(M5)/dev - -SOURDIR = ./ -PALCODE = ../palcode -INCLUDEH = ../h +CFLAGS=-I . -I ../h -I$(M5)/dev -nostdinc++ -Wa,-m21164 ARCHNAME=$(shell uname -m) @@ -11,10 +7,13 @@ ifneq ($(ARCHNAME), alpha) CC=alpha-unknown-linux-gnu-gcc AS=alpha-unknown-linux-gnu-as -CXX=alpha-unknown-linux-gnu-g++ LD=alpha-unknown-linux-gnu-ld endif +OBJS=dbmentry.o printf.o paljtokern.o paljtoslave.o +TLOBJS+=$(OBJS) console_tl.o +TSOBJS+=$(OBJS) console_ts.o + ### Make sure that the M5 variable is set ### ifndef M5 $(error The M5 variable must be set) @@ -22,37 +21,26 @@ all: console_tl console_ts -dbmentry.o: dbmentry.s - g++ -I ../h -I ../palcode -E -P -nostdinc -nostdinc++ -x c++ dbmentry.s | \ - $(AS) -m 21164 -o dbmentry.s.o +%.o: %.S + $(CC) $(CFLAGS) -nostdinc -o $@ -c $< console_ts.o: console.c - $(CC) -g3 $(INCLUDES) -D _TIME_T -D TSUNAMI -nostdinc++ -o console_ts.o -c console.c + $(CC) -g3 $(CFLAGS) -D _TIME_T -D TSUNAMI -o $@ -c $< console_tl.o: console.c - $(CC) -g3 $(INCLUDES) -D _TIME_T -D TLASER -nostdinc++ -o console_tl.o -c console.c + $(CC) -g3 $(CFLAGS) -D _TIME_T -D TLASER -o $@ -c $< printf.o: printf.c - $(CC) -g3 $(INCLUDES) -nostdinc++ -o $*.o -c $*.c + $(CC) -g3 $(CFLAGS) -o $@ -c $< -paljtokern.s.o: paljtokern.s - g++ -I ../h -E -P -nostdinc -nostdinc++ -x c++ paljtokern.s | \ - $(AS) -m 21164 -o paljtokern.s.o +console_ts: $(TSOBJS) + $(LD) -o console_ts -N -Ttext $(DBMENTRY) -non_shared $(TSOBJS) -lc -paljtoslave.s.o: paljtoslave.s - g++ -I ../h -E -P -nostdinc -nostdinc++ -x c++ paljtoslave.s | \ - $(AS) -m 21164 -o paljtoslave.s.o - -console_ts: console_ts.o dbmentry.o printf.o paljtokern.s.o paljtoslave.s.o - $(LD) -o console_ts -N -Ttext $(DBMENTRY) -non_shared \ - dbmentry.s.o console_ts.o printf.o paljtokern.s.o paljtoslave.s.o -lc - -console_tl: console_tl.o dbmentry.o printf.o paljtokern.s.o paljtoslave.s.o - $(LD) -o console_tl -N -Ttext $(DBMENTRY) -non_shared \ - dbmentry.s.o console_tl.o printf.o paljtokern.s.o paljtoslave.s.o -lc +console_tl: $(TLOBJS) + $(LD) -o console_tl -N -Ttext $(DBMENTRY) -non_shared $(TLOBJS) -lc install: console scp console zizzer.eecs.umich.edu:/z/m5/system/testing/binaries/console clean: - rm -f *.o console *.strip paljtokern.c paljtoslave.c + rm -f *.o console_t? diff -r 013cbe16f1d6 -r 257eb95aead3 system/alpha/console/dbmentry.S --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system/alpha/console/dbmentry.S Tue Nov 23 03:40:32 2004 -0500 @@ -0,0 +1,242 @@ + +/* taken from ebfw/rom/dbmentry.s */ + +#define EB164 +/*#ifndef LINT +.data +.asciiz "$Id: dbmentry.s,v 1.1.1.1 1997/10/30 23:27:12 verghese Exp $" +.text +#endif +*/ +/* + * Debug Monitor Entry code + */ + +#ifndef MAKEDEPEND +#include "ev5_impure.h" +#include "cserve.h" +#include "fromHudsonOsf.h" +#endif + +//#include "paldefs.h" +#include "regdefs.h" +#include "eb164.h" +//#include "ledcodes.h" + + .text + +/* return address and padding to octaword align */ +#define STARTFRM 16 + + .globl __start + .ent __start, 0 +__start: +_entry: + br t0, 2f # get the current PC +2: ldgp gp, 0(t0) # init gp + + +#ifdef original_xxm + lda a2, CSERVE_K_RD_IMPURE + call_pal PAL_CSERVE_ENTRY + lda v0, CNS_Q_BASE(v0) + + # Add KSEG offset to the impure area + subq zero, 1, t0 + sll t0, 42, t0 + addq t0, v0, v0 + + lda t0, CNS_Q_SIGNATURE(v0) + bic t0, 0x07, t0 # Clear bottom 3 bits to avoid + # allignment errors if the + # impure area is total rubbish + ldq t0, 0x00(t0) + srl t0, 16, t0 # Shift signature into bottom 16 bits. + lda t6, 0xDECB(zero) # Load the expected valid signature. + zap t6, 0xFC, t6 # Clear the upper bits. + cmpeq t0, t6, t0 # Is this a valid signature? + beq t0, 1f # Not valid, don't trust input params. + +/* + * Init the stack at the first 8K boundary + * below the top of memory. + */ + lda t0, CNS_Q_MEM_SIZE(v0) + ldq t0, 0x00(t0) # Load memory size. + subq t0, 1, t0 # Last address in memory + srl t0, 13, t0 # Align to first 8KB boundary + sll t0, 13, sp # below the top of memory. + br zero, 2f + +/* + * If memory size was not passed in via the + * PALcode impure data use the system specific + * MINIMUM_SYSTEM_MEMORY definition. + */ +1: + lda sp, (MINIMUM_SYSTEM_MEMORY&0xffff)(zero) + ldah sp, ((MINIMUM_SYSTEM_MEMORY+0x8000)>>16)(sp) + lda t0, (8*1024)(zero) # Allow for 8KB guard page. + subq sp, t0, sp + +2: + +#endif /* original_xxm */ + + + /* + * SimOS. Stack pointer is start of a valid phys or KSEG page + */ + + bis sp,sp,s0 /* save sp */ + +slave: lda v0,(8*1024)(sp) /* end of page */ + + subq zero, 1, t0 + sll t0, 42, t0 + bis t0, v0, sp + +#ifdef original_xxm + # Add KSEG offset to the stack pointer + subq zero, 1, t0 + sll t0, 42, t0 + addq t0, sp, sp +#endif + + lda sp, -STARTFRM(sp) # Create a stack frame + stq ra, 0(sp) # Place return address on the stack + + .mask 0x84000000, -8 + .frame sp, STARTFRM, ra + +/* + * Enable the Floating Point Unit + */ + lda a0, 1(zero) + call_pal PAL_WRFEN_ENTRY + +/* + * Every good C program has a main() + */ + + beq s0,master + + call_pal PAL_WHAMI_ENTRY + bis v0,v0,a0 + jsr ra, SlaveLoop +master: + jsr ra, main + + + +/* + * The Debug Monitor should never return. + * However, just incase... + */ + ldgp gp, 0(ra) + bsr zero, _exit + +.end __start + + + + .globl _exit + .ent _exit, 0 +_exit: + + ldq ra, 0(sp) # restore return address + lda sp, STARTFRM(sp) # prune back the stack + ret zero, (ra) # Back from whence we came +.end _exit + + .globl cServe + .ent cServe 2 +cServe: + .option O1 + .frame sp, 0, ra + call_pal PAL_CSERVE_ENTRY + ret zero, (ra) + .end cServe + + .globl wrfen + .ent wrfen 2 +wrfen: + .option O1 + .frame sp, 0, ra + call_pal PAL_WRFEN_ENTRY + ret zero, (ra) + .end wrfen + .globl consoleCallback + .ent consoleCallback 2 +consoleCallback: + br t0, 2f # get the current PC +2: ldgp gp, 0(t0) # init gp + lda sp,-64(sp) + stq ra,0(sp) + jsr CallBackDispatcher + ldq ra,0(sp) + lda sp,64(sp) + ret zero,(ra) + .end consoleCallback + + + .globl consoleFixup + .ent consoleFixup 2 +consoleFixup: + br t0, 2f # get the current PC +2: ldgp gp, 0(t0) # init gp + lda sp,-64(sp) + stq ra,0(sp) + jsr CallBackFixup + ldq ra,0(sp) + lda sp,64(sp) + ret zero,(ra) + .end consoleFixup + + + + .globl SpinLock + .ent SpinLock 2 +SpinLock: +1: + ldq_l a1,0(a0) # interlock complete lock state + subl ra,3,v0 # get calling addr[31:0] + 1 + blbs a1,2f # branch if lock is busy + stq_c v0,0(a0) # attempt to acquire lock + beq v0,2f # branch if lost atomicity + mb # ensure memory coherence + ret zero,(ra) # return to caller (v0 is 1) +2: + br zero,1b + .end SpinLock + + .globl loadContext + .ent loadContext 2 +loadContext: + .option O1 + .frame sp, 0, ra + call_pal PAL_SWPCTX_ENTRY + ret zero, (ra) _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev