diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2004-11-23 03:40:32 -0500 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2004-11-23 03:40:32 -0500 |
commit | 66b80038edaabb1fd757a62e4cbf04094262c116 (patch) | |
tree | 1f3ee3d714dca0da708d7365447928d89db66c5c /system/alpha/console/dbmentry.s | |
parent | 8d148125f2d4af2892fe192656b58748af2a76b1 (diff) | |
download | gem5-66b80038edaabb1fd757a62e4cbf04094262c116.tar.xz |
Makefile cleanup, no seperate middle preprocessing steps anymore
Diffstat (limited to 'system/alpha/console/dbmentry.s')
-rw-r--r-- | system/alpha/console/dbmentry.s | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/system/alpha/console/dbmentry.s b/system/alpha/console/dbmentry.s deleted file mode 100644 index 7a718928b..000000000 --- a/system/alpha/console/dbmentry.s +++ /dev/null @@ -1,242 +0,0 @@ - -/* 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) - .end loadContext - - - .globl SlaveSpin # Very carefully spin wait - .ent SlaveSpin 2 # and swap context without -SlaveSpin: # using any stack space - .option O1 - .frame sp, 0, ra - mov a0, t0 # cpu number - mov a1, t1 # cpu rpb pointer (virtual) - mov a2, t2 # what to spin on - -test: ldl t3, 0(t2) - beq t3, test - zapnot t1,0x1f,a0 # make rpb physical - call_pal PAL_SWPCTX_ENTRY # switch to pcb - mov t0, a0 # setup args for SlaveCmd - mov t1, a1 - jsr SlaveCmd # call SlaveCmd - ret zero, (ra) # Should never be reached - .end SlaveSpin - - |