changeset 36c59449dc93 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=36c59449dc93
description:
change from bootStrap* to using the cpuStack array for setting up
other processor stacks
diffstat:
system/alpha/console/console.c | 5 +----
system/alpha/console/dbmentry.S | 23 +++++++++++++++++++----
2 files changed, 20 insertions(+), 8 deletions(-)
diffs (70 lines):
diff -r 15bece33379b -r 36c59449dc93 system/alpha/console/console.c
--- a/system/alpha/console/console.c Thu Aug 18 13:34:03 2005 -0400
+++ b/system/alpha/console/console.c Thu Feb 23 15:00:04 2006 -0500
@@ -187,8 +187,6 @@
m5Conf.diskOperation = m5AlphaAccess->diskOperation;
m5Conf.outputChar = m5AlphaAccess->outputChar;
m5Conf.inputChar = m5AlphaAccess->inputChar;
- m5Conf.bootStrapImpure = m5AlphaAccess->bootStrapImpure;
- m5Conf.bootStrapCPU = m5AlphaAccess->bootStrapCPU;
if (m5Conf.version != ALPHA_ACCESS_VERSION) {
panic("Console version mismatch. Console expects %d. has %d \n",
@@ -743,8 +741,7 @@
for (i = 1; i < m5Conf.numCPUs; i++) {
ulong stack = (ulong)unix_boot_alloc(1);
printf_lock("Bootstraping CPU %d with sp=0x%x\n", i, stack);
- m5AlphaAccess->bootStrapImpure = stack;
- m5AlphaAccess->bootStrapCPU = i;
+ m5AlphaAccess->cpuStack[i] = stack;
}
/*
diff -r 15bece33379b -r 36c59449dc93 system/alpha/console/dbmentry.S
--- a/system/alpha/console/dbmentry.S Thu Aug 18 13:34:03 2005 -0400
+++ b/system/alpha/console/dbmentry.S Thu Feb 23 15:00:04 2006 -0500
@@ -56,6 +56,7 @@
*/
#include "fromHudsonOsf.h"
+ .extern myAlphaAccess
.text
/* return address and padding to octaword align */
@@ -68,11 +69,24 @@
br t0, 2f # get the current PC
2: ldgp gp, 0(t0) # init gp
- /*
- * SimOS. Stack pointer is start of a valid phys or KSEG page
- */
+/* Processor 0 start stack frame is begining of physical memory (0)
+ Other processors spin here waiting to get their stacks from
+ Processor 0, then they can progress as normal.
+*/
+ call_pal PAL_WHAMI_ENTRY
+ beq v0, cpuz
+ ldq t3, m5AlphaAccess
+ addq t3,0x70,t3 # *** If offset in console alpha access struct changes
+ # This must be changed as well!
+ bis zero,8,t4
+ mulq t4,v0,t4
+ addq t3,t4,t3
+cpuwait: ldq t4, 0(t3)
+ beq t4, cpuwait
+ bis t4,t4,sp
- bis sp,sp,s0 /* save sp */
+
+cpuz: bis sp,sp,s0 /* save sp */
slave: lda v0,(8*1024)(sp) /* end of page */
@@ -96,6 +110,7 @@
* Every good C program has a main()
*/
+/* If stack pointer was 0, then this is CPU0*/
beq s0,master
call_pal PAL_WHAMI_ENTRY
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev