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

Reply via email to