svn commit: r261663 - in head/sys/arm: arm include
Andrew Turner
andrew at FreeBSD.org
Sun Feb 9 15:54:32 UTC 2014
Author: andrew
Date: Sun Feb 9 15:54:31 2014
New Revision: 261663
URL: http://svnweb.freebsd.org/changeset/base/261663
Log:
Pass the pagetable used from locore.S to initarm to allow it to map data
in as required.
Modified:
head/sys/arm/arm/locore.S
head/sys/arm/include/cpu.h
Modified: head/sys/arm/arm/locore.S
==============================================================================
--- head/sys/arm/arm/locore.S Sun Feb 9 15:48:49 2014 (r261662)
+++ head/sys/arm/arm/locore.S Sun Feb 9 15:54:31 2014 (r261663)
@@ -221,7 +221,7 @@ mmu_done:
ldr pc, .Lvirt_done
virt_done:
- mov r1, #24 /* loader info size is 24 bytes also second arg */
+ mov r1, #28 /* loader info size is 28 bytes also second arg */
subs sp, sp, r1 /* allocate arm_boot_params struct on stack */
bic sp, sp, #7 /* align stack to 8 bytes */
mov r0, sp /* loader info pointer is first arg */
@@ -232,6 +232,8 @@ virt_done:
str fp, [r0, #16] /* store r3 from boot loader */
ldr r5, =KERNPHYSADDR /* load KERNPHYSADDR as the physical address */
str r5, [r0, #20] /* store the physical address */
+ ldr r5, Lstartup_pagetable
+ str r5, [r0, #24] /* store the pagetable address */
mov fp, #0 /* trace back starts here */
bl _C_LABEL(initarm) /* Off we go */
Modified: head/sys/arm/include/cpu.h
==============================================================================
--- head/sys/arm/include/cpu.h Sun Feb 9 15:48:49 2014 (r261662)
+++ head/sys/arm/include/cpu.h Sun Feb 9 15:54:31 2014 (r261663)
@@ -35,6 +35,11 @@ get_cyclecount(void)
extern vm_offset_t vector_page;
+/*
+ * Params passed into initarm. If you change the size of this you will
+ * need to update locore.S to allocate more memory on the stack before
+ * it calls initarm.
+ */
struct arm_boot_params {
register_t abp_size; /* Size of this structure */
register_t abp_r0; /* r0 from the boot loader */
@@ -42,6 +47,7 @@ struct arm_boot_params {
register_t abp_r2; /* r2 from the boot loader */
register_t abp_r3; /* r3 from the boot loader */
vm_offset_t abp_physaddr; /* The kernel physical address */
+ vm_offset_t abp_pagetable; /* The early page table */
};
void arm_vector_init(vm_offset_t, int);
More information about the svn-src-head
mailing list