summaryrefslogtreecommitdiffstats
path: root/sys/ia64/ia64/locore.s
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2001-09-12 08:38:13 +0000
committerjulian <julian@FreeBSD.org>2001-09-12 08:38:13 +0000
commit5596676e6c6c1e81e899cd0531f9b1c28a292669 (patch)
treeb1a19fcdf05759281fab0d89efb13f0fdf42102e /sys/ia64/ia64/locore.s
parent83e00d4274950d2b531c24692cd123538ffbddb9 (diff)
downloadFreeBSD-src-5596676e6c6c1e81e899cd0531f9b1c28a292669.zip
FreeBSD-src-5596676e6c6c1e81e899cd0531f9b1c28a292669.tar.gz
KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
Diffstat (limited to 'sys/ia64/ia64/locore.s')
-rw-r--r--sys/ia64/ia64/locore.s24
1 files changed, 11 insertions, 13 deletions
diff --git a/sys/ia64/ia64/locore.s b/sys/ia64/ia64/locore.s
index 6aed337..55c0816 100644
--- a/sys/ia64/ia64/locore.s
+++ b/sys/ia64/ia64/locore.s
@@ -64,9 +64,9 @@
#endif
.section .data.proc0,"aw"
- .global proc0paddr
+ .global kstack
.align PAGE_SIZE
-proc0paddr: .space UPAGES * PAGE_SIZE
+kstack: .space KSTACK_PAGES * PAGE_SIZE
.text
@@ -80,23 +80,19 @@ ENTRY(__start, 1)
;;
mov cr.iva=r8
mov cr.pta=r9
- movl r10=proc0
;;
- add r10=P_ADDR,r10
- movl r11=proc0paddr
+ movl r11=kstack
;;
- st8 [r10]=r11
srlz.i
;;
srlz.d
- mov r9=UPAGES*PAGE_SIZE-16
+ mov r9=KSTACK_PAGES*PAGE_SIZE-SIZEOF_PCB-16
;;
movl gp=__gp // find kernel globals
add sp=r9,r11 // proc0's stack
- add r10=SIZEOF_USER,r11 // proc0's backing store
mov ar.rsc=0 // turn off rse
;;
- mov ar.bspstore=r10 // switch backing store
+ mov ar.bspstore=r11 // switch backing store
;;
loadrs // invalidate regs
;;
@@ -105,17 +101,19 @@ ENTRY(__start, 1)
br.call.sptk.many rp=ia64_init
/*
- * switch to proc0 and then initialise the rest of the kernel.
+ * switch to thread0 and then initialise the rest of the kernel.
*/
alloc r16=ar.pfs,0,0,1,0
;;
- movl out0=proc0
+ movl out0=thread0
;;
- add out0=P_ADDR,out0
+ ld8 out0=[out0]
+ ;;
+ add out0=TD_PCB,out0
;;
ld8 out0=[out0]
;;
- add r16=U_PCB_B0,out0 // return to mi_startup
+ add r16=PCB_B0,out0 // return to mi_startup
movl r17=mi_startup
;;
st8 [r16]=r17
OpenPOWER on IntegriCloud