From a8a7bf342f2d9c63fed5f18612afc340aac30461 Mon Sep 17 00:00:00 2001 From: ragge Date: Sat, 20 May 2000 13:22:39 +0000 Subject: [PATCH] New arguments to the rom routines. Adapt srt0 to new world also. --- sys/arch/vax/boot/common/romread.s | 36 ++++++++++++++--------------- sys/arch/vax/boot/common/srt0.s | 37 ++++++++++-------------------- 2 files changed, 29 insertions(+), 44 deletions(-) diff --git a/sys/arch/vax/boot/common/romread.s b/sys/arch/vax/boot/common/romread.s index f9846c03c691..de0fa770cbbb 100644 --- a/sys/arch/vax/boot/common/romread.s +++ b/sys/arch/vax/boot/common/romread.s @@ -1,4 +1,4 @@ -/* $NetBSD: romread.s,v 1.1 1999/03/06 16:36:06 ragge Exp $ */ +/* $NetBSD: romread.s,v 1.2 2000/05/20 13:22:39 ragge Exp $ */ /* * Copyright (c) 1995 Ludd, University of Lule}, Sweden. * All rights reserved. @@ -58,36 +58,34 @@ ENTRY(read750, 0xFFE) ret /* - * romread_uvax (int lbn, int size, void *buf, int *regs) + * romread_uvax (int lbn, int size, void *buf, struct rpb *rpb) */ ENTRY(romread_uvax, 0xFFE) - movl 16(ap), r11 # array of bootregs - movl 44(r11), r11 # restore boot-contents of r11 (rpb) + movl 16(ap),r11 # restore boot-contents of r11 (rpb) movl 52(r11), r7 # load iovec/bqo into r7 addl3 (r7), r7, r6 # load qio into r6 - pushl r11 # base of rpb - pushl $0 # virtual-flag - pushl $33 # read-logical-block - pushl 4(ap) # lbn to start reading - pushl 8(ap) # number of bytes to read - pushl 12(ap) # buffer-address + pushl r11 # base of rpb + pushl $0 # virtual-flag + pushl $33 # read-logical-block + pushl 4(ap) # lbn to start reading + pushl 8(ap) # number of bytes to read + pushl 12(ap) # buffer-address calls $6, (r6) # call the qio-routine ret # r0 holds the result /* - * romwrite_uvax (int lbn, int size, void *buf, int *regs) + * romwrite_uvax (int lbn, int size, void *buf, struct rpb *rpb) */ ENTRY(romwrite_uvax, 0xFFE) - movl 16(ap), r11 # array of bootregs - movl 44(r11), r11 # restore boot-contents of r11 (rpb) + movl 16(ap), r11 # restore boot-contents of r11 (rpb) movl 52(r11), r7 # load iovec/bqo into r7 addl3 (r7), r7, r6 # load qio into r6 - pushl r11 # base of rpb - pushl $0 # virtual-flag - pushl $32 # write-logical-block - pushl 4(ap) # lbn to start reading - pushl 8(ap) # number of bytes to read - pushl 12(ap) # buffer-address + pushl r11 # base of rpb + pushl $0 # virtual-flag + pushl $32 # write-logical-block + pushl 4(ap) # lbn to start reading + pushl 8(ap) # number of bytes to read + pushl 12(ap) # buffer-address calls $6, (r6) # call the qio-routine ret # r0 holds the result diff --git a/sys/arch/vax/boot/common/srt0.s b/sys/arch/vax/boot/common/srt0.s index edaea5bee3ea..7db90f9559aa 100644 --- a/sys/arch/vax/boot/common/srt0.s +++ b/sys/arch/vax/boot/common/srt0.s @@ -1,4 +1,4 @@ -/* $NetBSD: srt0.s,v 1.2 1999/05/23 21:58:19 ragge Exp $ */ +/* $NetBSD: srt0.s,v 1.3 2000/05/20 13:22:39 ragge Exp $ */ /* * Copyright (c) 1994 Ludd, University of Lule}, Sweden. * All rights reserved. @@ -32,6 +32,8 @@ /* All bugs are subject to removal without further notice */ #include "../include/asm.h" + +#define JSBENTRY(x) .globl x ; .align 2 ; x : /* * Auto-moving startup code for standalone programs. Can be loaded * (almost) anywhere in memory but moves itself to the position @@ -43,18 +45,9 @@ nisse: .set nisse,0 # pass -e nisse to ld gives OK start addr .globl nisse -_start: .globl _start - nop;nop; # If we get called by calls, or something - - movl r8, _memsz # If we come from disk, save memsize - cmpl ap, $-1 # Check if we are net-booted. XXX - kludge - beql 2f # jump if not - ashl $9,76(r11),_memsz # got memsize from rpb - movzbl 102(r11), r10 # Get bootdev from rpb. - movzwl 48(r11), r11 # Get howto - -2: movl $_start, sp # Probably safe place for stack - subl2 $52, sp # do not overwrite saved boot-registers +JSBENTRY(_start) + nop;nop; + movl $_start, sp # Probably safe place for stack subl3 $_start, $_edata, r0 movab _start, r1 @@ -67,22 +60,16 @@ _start: .globl _start 1: movl $relocated, (sp) # return-address on top of stack rsb # can be replaced with new address relocated: # now relocation is done !!! - movl r10,_bootdev # Save bootdev early - movl r11,_howto # howto also... - movl sp, _bootregs - calls $0, _Xmain # Were here! + pushl r11 # RPB is copied here. + + calls $1, _Xmain # Were here! halt # no return ENTRY(machdep_start, 0) mtpr $0x1f,$0x12 # Block all interrupts mtpr $0,$0x18 # stop real time interrupt clock movl 4(ap), r6 - movl _howto, r11 - movl _opendev, r10 - movl 20(ap), r9 - movl _memsz, r8 - calls $0,(r6) + movl 20(ap), r9 # end of symbol table + movab _bootrpb,-(sp) + calls $1,(r6) ret - - .globl _memsz -_memsz: .long 0x0