summaryrefslogtreecommitdiff
path: root/sys/arch/arm
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2016-09-24 13:43:26 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2016-09-24 13:43:26 +0000
commit3692b64d575f468f6f2d796a62aa2c9cb7924a8e (patch)
tree2a1202fd2dfd200d7ded83caf908abe1ffa5b0c6 /sys/arch/arm
parentf07f96ab40c87fd2ac7c668c8a9e0d9fc8b46f71 (diff)
If the value of r0 upon entering the kernel is zero, interpret this as the
address of the end of the symbol table. This will make it possible to get rid of the code in the bootloader that patches up the kernel with the updated esym value. ok tom@, patrick@
Diffstat (limited to 'sys/arch/arm')
-rw-r--r--sys/arch/arm/arm/locore.S4
-rw-r--r--sys/arch/arm/include/machdep.h4
2 files changed, 5 insertions, 3 deletions
diff --git a/sys/arch/arm/arm/locore.S b/sys/arch/arm/arm/locore.S
index a1532f63d6d..a142476f2ed 100644
--- a/sys/arch/arm/arm/locore.S
+++ b/sys/arch/arm/arm/locore.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.S,v 1.11 2016/09/21 11:33:05 kettenis Exp $ */
+/* $OpenBSD: locore.S,v 1.12 2016/09/24 13:43:25 kettenis Exp $ */
/* $NetBSD: locore.S,v 1.14 2003/04/20 16:21:40 thorpej Exp $ */
/*
@@ -56,6 +56,7 @@ ENTRY_NP(kernel_text)
ASENTRY_NP(start)
mov r5, r1
mov r6, r2
+ mov r7, r3
adr r1, .Lstart
ldmia r1, {r1, r2, r8, sp} /* Set initial stack and */
@@ -74,6 +75,7 @@ ASENTRY_NP(start)
mov fp, #0x00000000 /* trace back starts here */
mov r1, r5
mov r2, r6
+ mov r3, r7
bl _C_LABEL(initarm) /* Off we go */
/* init arm will return the new stack pointer. */
diff --git a/sys/arch/arm/include/machdep.h b/sys/arch/arm/include/machdep.h
index b7f035675ed..d5f06623e05 100644
--- a/sys/arch/arm/include/machdep.h
+++ b/sys/arch/arm/include/machdep.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.h,v 1.4 2011/10/19 20:18:31 drahn Exp $ */
+/* $OpenBSD: machdep.h,v 1.5 2016/09/24 13:43:25 kettenis Exp $ */
/* $NetBSD: machdep.h,v 1.7 2002/02/21 02:52:21 thorpej Exp $ */
#ifndef _ARM_MACHDEP_H_
@@ -16,7 +16,7 @@ void dumpsys (void);
* note that we use void * as all the platforms have different ideas on what
* the structure is
*/
-u_int initarm (void *, void *, void *);
+u_int initarm (void *, void *, void *, paddr_t);
/* from arm/arm/intr.c */
void dosoftints (void);