summaryrefslogtreecommitdiff
path: root/sys/arch/mvme68k/stand/libsa/SRT0.S
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1995-11-07 08:51:15 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1995-11-07 08:51:15 +0000
commit506a9f45b3b4659876b3bd29f6bff4027e18cc16 (patch)
tree5112bfaf7bce58daff20db3789e6d38592cacffe /sys/arch/mvme68k/stand/libsa/SRT0.S
parentf94d56a7c698d9fd5de7b39ee39c61289a0e0f77 (diff)
$Id$ throughout
update many copyrights
Diffstat (limited to 'sys/arch/mvme68k/stand/libsa/SRT0.S')
-rw-r--r--sys/arch/mvme68k/stand/libsa/SRT0.S104
1 files changed, 74 insertions, 30 deletions
diff --git a/sys/arch/mvme68k/stand/libsa/SRT0.S b/sys/arch/mvme68k/stand/libsa/SRT0.S
index b2114fc3447..376a4597141 100644
--- a/sys/arch/mvme68k/stand/libsa/SRT0.S
+++ b/sys/arch/mvme68k/stand/libsa/SRT0.S
@@ -1,5 +1,34 @@
-| $NetBSD: SRT0.S,v 1.1.1.1 1995/07/25 23:12:21 chuck Exp $
+# $Id: SRT0.S,v 1.2 1995/11/07 08:50:40 deraadt Exp $
+| Copyright (c) 1995 Theo de Raadt
+|
+| Redistribution and use in source and binary forms, with or without
+| modification, are permitted provided that the following conditions
+| are met:
+| 1. Redistributions of source code must retain the above copyright
+| notice, this list of conditions and the following disclaimer.
+| 2. Redistributions in binary form must reproduce the above copyright
+| notice, this list of conditions and the following disclaimer in the
+| documentation and/or other materials provided with the distribution.
+| 3. All advertising materials mentioning features or use of this software
+| must display the following acknowledgement:
+| This product includes software developed under OpenBSD by
+| Theo de Raadt for Willowglen Singapore.
+| 4. The name of the author may not be used to endorse or promote products
+| derived from this software without specific prior written permission.
+|
+| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+| OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+| ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+| DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+| OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+| HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+| OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+| SUCH DAMAGE.
+|
| Copyright (c) 1995 Gordon W. Ross
| All rights reserved.
|
@@ -29,58 +58,73 @@
| THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
| SRT0.S - Stand-alone Run-Time startup code, part 0
- .file "SRT0.S"
- .text
- .globl __estack
+ .file "SRT0.S"
+ .text
+ .globl __estack
__estack:
- .globl start
+ .globl start
start:
| Check to see if the code is located correctly.
| This SHOULD do a PC-relative load into a0, but...
-| lea start, a0 | current location (0x4000)
+| lea start, a0 | current location (0x4000)
| XXX - GAS version 1.93 gets the above lea wrong!
- .word 0x41fa
- .word 0xfffe
+ .word 0x41fa
+ .word 0xfffe
| Now force a long (not PC-relative) load to a1 and compare.
- lea start:l, a1 | desired location (LINKADDR)
- cmpl a0, a1
- beqs restart
+ lea start:l, a1 | desired location (LINKADDR)
+ cmpl a0, a1
+ beqs restart
| Relocate the code and data to where they belong.
- movl #_edata,d0 | Desired end of program
- subl a1,d0 | Calculate length, round up.
- lsrl #2,d0
-Lcp:
- movl a0@+, a1@+
- dbra d0, Lcp
+ movl #_edata,d2 | Desired end of program
+ subl a1,d2 | Calculate length, round up.
+ lsrl #2,d2
+Lcp: movl a0@+, a1@+
+ dbra d2, Lcp
| Force a long jump to the relocated code (not pc-relative)
- lea restart:l, a0
- jmp a0@
+ lea restart:l, a0
+ jmp a0@
restart:
| now in the relocated code
- movl a6@(8), __cmd_buf | get cmd_line from sboot
-
| Set up stack (just before relocated text)
- lea __estack:l, a0
- movl a0, sp
- subl a6, a6
+ lea __estack:l, a0
+ movl a0, sp
+ subl a6, a6
+
+ movl d0, _devlun
+ movl d1, _ctrlun
+ movl a3, _oparg
+ movl a4, _opargend
| Call the run-time startup C code, which will:
| initialize, call main, call exit
- jsr __start:l
+ jsr __start:l
| If _start returns, fall into abort.
- .globl _abort
+ .globl _abort
_abort:
- jsr 0x4000
+ trap #0
| If abort returns, fall into reset.
- .globl _reset
+ .globl _reset
_reset:
- reset
- jmp _reset
+ reset
+ jmp _reset
+
+| function to get the vector base register
+ .globl _getvbr
+_getvbr:
+ movc vbr, d0
+ rts
| The end.
+
+ .data
+ .globl _devlun, _ctrlun, _oparg, _opargend
+_devlun: .long 0
+_ctrlun: .long 0
+_oparg: .long 0
+_opargend: .long 0