Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/boot
In directory usw-pr-cvs1:/tmp/cvs-serv28164
Modified Files:
head.S
Log Message:
PCB initialisation code prior to VM start.
Index: head.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/head.S,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- head.S 2001/06/24 19:34:56 1.10
+++ head.S 2001/07/02 12:09:24 1.11
@@ -3,6 +3,10 @@
# start of boot. entry point
# this assumes vmb has does most of the hard work (ie uvax rom vmb)
# save useful registers. jump to c in boot.c
+#
+# TBD: Some of this stuff could do with being rewritten in C
+# Some of this stuff could be in .init sections and thrown away.
+#
#include <asm/mtpr.h> /* Processor register definitions */
#include <asm/mv.h> /* machine vector definitions */
@@ -252,11 +256,21 @@
movl r7, 20(r0)
mtpr 16(r0), $PR_SBR # set SBR
mtpr r7, $PR_SLR # set SLR
+# PCBB
+# set up the process control block. Some machines need a valid PCB for
+# mm to work properly.
+# We should use the pcb for the init task for this, but Since this bit
+# should be done in C, rather than hardwiring offsets, I have put a fake
+# PCB in a throwaway .init section below.
+ moval fake_pcb,r9
+ movl $PAGE_OFFSET,88(r9) # p1br
+ mtpr r9, $PR_PCBB
# no need to TBIA - memory mapping not enabled
+# ready to turn on VM
moval msg_starting_vm, r10
jsb printstr
jsb crlf
- calls $0, VAX_start_mm
+ calls $0, VAX_start_mm # do that ole black magic
# made it
moval swapper_pg_dir, r0
addl2 $PAGE_OFFSET, 16(r0) # fix up our reference to the system page tbl.
@@ -371,3 +385,8 @@
cpu_type: .int 0x00000000
prom_sidex: .int 0x00000000
+# our dummy pcb
+.section .data.init
+.globl fake_pcb
+fake_pcb: .fill 24,4,0x00000000
+
|