diff options
author | julian <julian@FreeBSD.org> | 2001-09-12 08:38:13 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 2001-09-12 08:38:13 +0000 |
commit | 5596676e6c6c1e81e899cd0531f9b1c28a292669 (patch) | |
tree | b1a19fcdf05759281fab0d89efb13f0fdf42102e /sys/ia64/ia64/locore.s | |
parent | 83e00d4274950d2b531c24692cd123538ffbddb9 (diff) | |
download | FreeBSD-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.s | 24 |
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 |