summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/arch/arm/arm/locore.S4
-rw-r--r--sys/arch/arm/include/machdep.h4
-rw-r--r--sys/arch/armv7/armv7/armv7_machdep.c9
-rw-r--r--sys/arch/armv7/armv7/armv7_start.S5
4 files changed, 13 insertions, 9 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);
diff --git a/sys/arch/armv7/armv7/armv7_machdep.c b/sys/arch/armv7/armv7/armv7_machdep.c
index afd7ca2e36d..e869c2c6f70 100644
--- a/sys/arch/armv7/armv7/armv7_machdep.c
+++ b/sys/arch/armv7/armv7/armv7_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: armv7_machdep.c,v 1.39 2016/09/01 09:05:37 kettenis Exp $ */
+/* $OpenBSD: armv7_machdep.c,v 1.40 2016/09/24 13:43:25 kettenis Exp $ */
/* $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */
/*
@@ -376,13 +376,12 @@ copy_io_area_map(pd_entry_t *new_pd)
* Setting up page tables for the kernel.
*/
u_int
-initarm(void *arg0, void *arg1, void *arg2)
+initarm(void *arg0, void *arg1, void *arg2, paddr_t loadaddr)
{
int loop, loop1, i, physsegs = VM_PHYSSEG_MAX;
u_int l1pagetable;
pv_addr_t kernel_l1pt;
pv_addr_t fdt;
- paddr_t loadaddr;
struct fdt_reg reg;
paddr_t memstart;
psize_t memsize;
@@ -397,7 +396,9 @@ initarm(void *arg0, void *arg1, void *arg2)
int (*map_func_save)(void *, bus_addr_t, bus_size_t, int,
bus_space_handle_t *);
- loadaddr = (paddr_t)arg0;
+ if (arg0)
+ esym = (uint32_t)arg0;
+
board_id = (uint32_t)arg1;
/*
* u-boot has decided the top four bits are
diff --git a/sys/arch/armv7/armv7/armv7_start.S b/sys/arch/armv7/armv7/armv7_start.S
index 922a7aed2d1..4f96d770fee 100644
--- a/sys/arch/armv7/armv7/armv7_start.S
+++ b/sys/arch/armv7/armv7/armv7_start.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: armv7_start.S,v 1.9 2016/08/26 11:59:04 kettenis Exp $ */
+/* $OpenBSD: armv7_start.S,v 1.10 2016/09/24 13:43:25 kettenis Exp $ */
/* $NetBSD: lubbock_start.S,v 1.1 2003/06/18 10:51:15 bsh Exp $ */
/*
@@ -161,9 +161,10 @@ _C_LABEL(bootstrap_start):
CPWAIT(r0)
/* Restore U-Boot arguments */
- mov r0, r9
+ mov r0, r6
mov r1, r7
mov r2, r8
+ mov r3, r9
/* Jump to kernel code in TRUE VA */
adr r6, Lstart