summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-05-15 02:41:23 +0000
committerian <ian@FreeBSD.org>2014-05-15 02:41:23 +0000
commit25ba02d795dd37d50898996cf19659d1da1659a5 (patch)
treeaf11a63cc5a0d26b2e708bd24e28a5015c4714df /sys
parentfa1497d7f781e064f21c3688b3d51c5571812a00 (diff)
downloadFreeBSD-src-25ba02d795dd37d50898996cf19659d1da1659a5.zip
FreeBSD-src-25ba02d795dd37d50898996cf19659d1da1659a5.tar.gz
MFC r261252, r261279, r261304, r261305, r261322, r261336, r261337, r261338,
r261353 Fix the name of the dts file for the HL201... When mapping an address, the bsh needs the same offset we do for other things. Add explicit depends on bus_if.h and device_if.h to avoid a chicken and egg problem in some compilation environments. Switch to using PAs rather than VAs for the addresses we map for devices. This is a nop, except for what's reported by atmelbus for the resources. Comment cleanups. Move things around for diff reduction against FDT work.
Diffstat (limited to 'sys')
-rw-r--r--sys/arm/allwinner/a20/std.a202
-rw-r--r--sys/arm/allwinner/std.a102
-rw-r--r--sys/arm/arm/genassym.c1
-rw-r--r--sys/arm/arm/locore.S32
-rw-r--r--sys/arm/at91/at91.c32
-rw-r--r--sys/arm/at91/at91_machdep.c46
-rw-r--r--sys/arm/at91/at91rm92reg.h8
-rw-r--r--sys/arm/at91/at91sam9260reg.h8
-rw-r--r--sys/arm/at91/at91sam9g20reg.h13
-rw-r--r--sys/arm/at91/at91sam9g45reg.h12
-rw-r--r--sys/arm/at91/std.bwct1
-rw-r--r--sys/arm/at91/std.eb92001
-rw-r--r--sys/arm/at91/std.ethernut51
-rw-r--r--sys/arm/at91/std.hl2001
-rw-r--r--sys/arm/at91/std.hl2011
-rw-r--r--sys/arm/at91/std.kb920x1
-rw-r--r--sys/arm/at91/std.qila9g201
-rw-r--r--sys/arm/at91/std.sam9260ek1
-rw-r--r--sys/arm/at91/std.sam9g20ek1
-rw-r--r--sys/arm/at91/std.sam9x25ek1
-rw-r--r--sys/arm/at91/std.sn9g451
-rw-r--r--sys/arm/at91/std.tsc43701
-rw-r--r--sys/arm/broadcom/bcm2835/std.rpi1
-rw-r--r--sys/arm/conf/ATMEL1
-rw-r--r--sys/arm/conf/CNS11XXNAS1
-rw-r--r--sys/arm/conf/CRB1
-rw-r--r--sys/arm/conf/EP802191
-rw-r--r--sys/arm/conf/GUMSTIX1
-rw-r--r--sys/arm/conf/HL2012
-rw-r--r--sys/arm/conf/IQ312441
-rw-r--r--sys/arm/conf/NSLU1
-rw-r--r--sys/arm/conf/VERSATILEPB1
-rw-r--r--sys/arm/econa/std.econa1
-rw-r--r--sys/arm/freescale/imx/std.imx511
-rw-r--r--sys/arm/freescale/imx/std.imx531
-rw-r--r--sys/arm/freescale/imx/std.imx61
-rw-r--r--sys/arm/freescale/vybrid/std.vybrid2
-rw-r--r--sys/arm/lpc/std.lpc1
-rw-r--r--sys/arm/mv/armadaxp/std.armadaxp1
-rw-r--r--sys/arm/mv/discovery/std.db78xxx1
-rw-r--r--sys/arm/mv/kirkwood/std.kirkwood1
-rw-r--r--sys/arm/mv/orion/std.db88f5xxx1
-rw-r--r--sys/arm/mv/orion/std.ts78001
-rw-r--r--sys/arm/rockchip/std.rk30xx2
-rw-r--r--sys/arm/s3c2xx0/std.ln2410sbc1
-rw-r--r--sys/arm/samsung/exynos/std.exynos52
-rw-r--r--sys/arm/tegra/std.tegra22
-rw-r--r--sys/arm/ti/am335x/std.am335x2
-rw-r--r--sys/arm/ti/omap4/std.omap42
-rw-r--r--sys/arm/xilinx/std.zynq71
-rw-r--r--sys/arm/xscale/ixp425/std.avila1
-rw-r--r--sys/conf/Makefile.arm3
-rw-r--r--sys/conf/ldscript.arm6
-rw-r--r--sys/conf/options.arm1
54 files changed, 97 insertions, 117 deletions
diff --git a/sys/arm/allwinner/a20/std.a20 b/sys/arm/allwinner/a20/std.a20
index 851308c..f582e91 100644
--- a/sys/arm/allwinner/a20/std.a20
+++ b/sys/arm/allwinner/a20/std.a20
@@ -16,8 +16,6 @@ options KERNPHYSADDR=0x40200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
-options STARTUP_PAGETABLE_ADDR=0x48000000
-
options ARM_L2_PIPT
options IPI_IRQ_START=0
diff --git a/sys/arm/allwinner/std.a10 b/sys/arm/allwinner/std.a10
index f698b34..11ef732 100644
--- a/sys/arm/allwinner/std.a10
+++ b/sys/arm/allwinner/std.a10
@@ -16,6 +16,4 @@ options KERNPHYSADDR=0x40200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
-options STARTUP_PAGETABLE_ADDR=0x48000000
-
files "../allwinner/files.a10"
diff --git a/sys/arm/arm/genassym.c b/sys/arm/arm/genassym.c
index beae190..8ddb05e 100644
--- a/sys/arm/arm/genassym.c
+++ b/sys/arm/arm/genassym.c
@@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
#include <sys/proc.h>
#include <sys/mbuf.h>
#include <sys/vmmeter.h>
+#include <sys/bus.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
#include <vm/pmap.h>
diff --git a/sys/arm/arm/locore.S b/sys/arm/arm/locore.S
index 209839a..8a36741 100644
--- a/sys/arm/arm/locore.S
+++ b/sys/arm/arm/locore.S
@@ -144,9 +144,15 @@ disable_mmu:
nop
mov pc, r7
Lunmapped:
-#ifdef STARTUP_PAGETABLE_ADDR
- /* build page table from scratch */
- ldr r0, Lstartup_pagetable
+ /*
+ * Build page table from scratch.
+ */
+
+ /* Load the page tables physical address */
+ ldr r1, Lstartup_pagetable
+ ldr r2, =(KERNVIRTADDR - KERNPHYSADDR)
+ sub r0, r1, r2
+
adr r4, mmu_init_table
b 3f
@@ -197,7 +203,6 @@ Lunmapped:
nop
CPWAIT(r0)
-#endif
mmu_done:
nop
adr r1, .Lstart
@@ -231,7 +236,6 @@ virt_done:
adr r0, .Lmainreturned
b _C_LABEL(panic)
/* NOTREACHED */
-#ifdef STARTUP_PAGETABLE_ADDR
#define MMU_INIT(va,pa,n_sec,attr) \
.word n_sec ; \
.word 4*((va)>>L1_S_SHIFT) ; \
@@ -246,7 +250,7 @@ Lreal_start:
Lend:
.word _edata
Lstartup_pagetable:
- .word STARTUP_PAGETABLE_ADDR
+ .word pagetable
#ifdef SMP
Lstartup_pagetable_secondary:
.word temp_pagetable
@@ -261,9 +265,9 @@ mmu_init_table:
MMU_INIT(PHYSADDR, PHYSADDR, 64, L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW))
/* map VA 0xc0000000..0xc3ffffff to PA */
MMU_INIT(KERNBASE, PHYSADDR, 64, L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW))
-#if defined(SOCDEV_PA) && defined(SOCKDEV_VA)
+#if defined(SOCDEV_PA) && defined(SOCDEV_VA)
/* Map in 0x04000000 worth of the SoC's devices for bootstrap debugging */
- MMU_INIT(SOCKDEV_VA, SOCDEV_PA, 64, L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW))
+ MMU_INIT(SOCDEV_VA, SOCDEV_PA, 64, L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW))
#endif
#else
MMU_INIT(PHYSADDR, PHYSADDR , 64, L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW))
@@ -272,10 +276,9 @@ mmu_init_table:
MMU_INIT(0x48000000, 0x48000000, 1, L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW))
#endif /* SMP */
.word 0 /* end of table */
-#endif
.Lstart:
.word _edata
- .word _end
+ .word _ebss
.word svcstk + INIT_ARM_STACK_SIZE
.Lvirt_done:
@@ -293,6 +296,15 @@ mmu_init_table:
svcstk:
.space INIT_ARM_STACK_SIZE
+/*
+ * Memory for the initial pagetable. We are unable to place this in
+ * the bss as this will be cleared after the table is loaded.
+ */
+ .section ".init_pagetable"
+ .align 14 /* 16KiB aligned */
+pagetable:
+ .space L1_TABLE_SIZE
+
.text
.align 0
diff --git a/sys/arm/at91/at91.c b/sys/arm/at91/at91.c
index 0ad4888..dce1f93 100644
--- a/sys/arm/at91/at91.c
+++ b/sys/arm/at91/at91.c
@@ -74,7 +74,7 @@ at91_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
}
endpa = round_page(bpa + size);
- *bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa);
+ *bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa) + (bpa - pa);
return (0);
}
@@ -260,7 +260,6 @@ static int
at91_attach(device_t dev)
{
struct at91_softc *sc = device_get_softc(dev);
- const struct arm_devmap_entry *pdevmap;
int i;
arm_post_filter = at91_eoi;
@@ -281,11 +280,15 @@ at91_attach(device_t dev)
sc->sc_mem_rman.rm_descr = "AT91 Memory";
if (rman_init(&sc->sc_mem_rman) != 0)
panic("at91_attach: failed to set up memory rman");
- for (pdevmap = at91_devmap; pdevmap->pd_va != 0; pdevmap++) {
- if (rman_manage_region(&sc->sc_mem_rman, pdevmap->pd_va,
- pdevmap->pd_va + pdevmap->pd_size - 1) != 0)
- panic("at91_attach: failed to set up memory rman");
- }
+ /*
+ * Manage the physical space, defined as being everything that isn't
+ * DRAM.
+ */
+ if (rman_manage_region(&sc->sc_mem_rman, 0, PHYSADDR - 1) != 0)
+ panic("at91_attach: failed to set up memory rman");
+ if (rman_manage_region(&sc->sc_mem_rman, PHYSADDR + (256 << 20),
+ 0xfffffffful) != 0)
+ panic("at91_attach: failed to set up memory rman");
/*
* Setup the interrupt table.
@@ -330,6 +333,7 @@ at91_alloc_resource(device_t dev, device_t child, int type, int *rid,
struct resource_list_entry *rle;
struct at91_ivar *ivar = device_get_ivars(child);
struct resource_list *rl = &ivar->resources;
+ bus_space_handle_t bsh;
if (device_get_parent(child) != dev)
return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child,
@@ -355,8 +359,10 @@ at91_alloc_resource(device_t dev, device_t child, int type, int *rid,
rle->res = rman_reserve_resource(&sc->sc_mem_rman,
start, end, count, flags, child);
if (rle->res != NULL) {
+ bus_space_map(&at91_bs_tag, start,
+ rman_get_size(rle->res), 0, &bsh);
rman_set_bustag(rle->res, &at91_bs_tag);
- rman_set_bushandle(rle->res, start);
+ rman_set_bushandle(rle->res, bsh);
}
break;
}
@@ -538,8 +544,14 @@ at91_add_child(device_t dev, int prio, const char *name, int unit,
bus_set_resource(kid, SYS_RES_IRQ, 1, irq1, 1);
if (irq2 != 0)
bus_set_resource(kid, SYS_RES_IRQ, 2, irq2, 1);
- if (addr != 0 && addr < AT91_BASE)
- addr += AT91_BASE;
+ /*
+ * Special case for on-board devices. These have their address
+ * defined relative to AT91_PA_BASE in all the register files we
+ * have. We could change this, but that's a lot of effort which
+ * will be obsoleted when FDT arrives.
+ */
+ if (addr != 0 && addr < 0x10000000 && addr >= 0x0f000000)
+ addr += AT91_PA_BASE;
if (addr != 0)
bus_set_resource(kid, SYS_RES_MEMORY, 0, addr, size);
}
diff --git a/sys/arm/at91/at91_machdep.c b/sys/arm/at91/at91_machdep.c
index 2eb00a1d..ad38410 100644
--- a/sys/arm/at91/at91_machdep.c
+++ b/sys/arm/at91/at91_machdep.c
@@ -116,36 +116,22 @@ extern u_int undefined_handler_address;
struct pv_addr kernel_pt_table[NUM_KERNEL_PTS];
-/* Physical and virtual addresses for some global pages */
-
-vm_paddr_t phys_avail[10];
-vm_paddr_t dump_avail[4];
-
-struct pv_addr systempage;
-struct pv_addr msgbufpv;
-struct pv_addr irqstack;
-struct pv_addr undstack;
-struct pv_addr abtstack;
-struct pv_addr kernelstack;
-
/* Static device mappings. */
const struct arm_devmap_entry at91_devmap[] = {
/*
- * Map the on-board devices VA == PA so that we can access them
- * with the MMU on or off.
+ * Map the critical on-board devices. The interrupt vector at
+ * 0xffff0000 makes it impossible to map them PA == VA, so we map all
+ * 0xfffxxxxx addresses to 0xdffxxxxx. This covers all critical devices
+ * on all members of the AT91SAM9 and AT91RM9200 families.
*/
{
- /*
- * This at least maps the interrupt controller, the UART
- * and the timer. Other devices should use newbus to
- * map their memory anyway.
- */
0xdff00000,
0xfff00000,
0x00100000,
VM_PROT_READ|VM_PROT_WRITE,
PTE_NOCACHE,
},
+ /* There's a notion that we should do the rest of these lazily. */
/*
* We can't just map the OHCI registers VA == PA, because
* AT91xx_xxx_BASE belongs to the userland address space.
@@ -163,16 +149,16 @@ const struct arm_devmap_entry at91_devmap[] = {
* on this chip select for a VA/PA mapping.
*/
/* Internal Memory 1MB */
+ AT91RM92_OHCI_VA_BASE,
AT91RM92_OHCI_BASE,
- AT91RM92_OHCI_PA_BASE,
0x00100000,
VM_PROT_READ|VM_PROT_WRITE,
PTE_NOCACHE,
},
{
/* CompactFlash controller. Portion of EBI CS4 1MB */
+ AT91RM92_CF_VA_BASE,
AT91RM92_CF_BASE,
- AT91RM92_CF_PA_BASE,
0x00100000,
VM_PROT_READ|VM_PROT_WRITE,
PTE_NOCACHE,
@@ -183,16 +169,16 @@ const struct arm_devmap_entry at91_devmap[] = {
*/
{
/* Internal Memory 1MB */
+ AT91SAM9G20_OHCI_VA_BASE,
AT91SAM9G20_OHCI_BASE,
- AT91SAM9G20_OHCI_PA_BASE,
0x00100000,
VM_PROT_READ|VM_PROT_WRITE,
PTE_NOCACHE,
},
{
/* EBI CS3 256MB */
+ AT91SAM9G20_NAND_VA_BASE,
AT91SAM9G20_NAND_BASE,
- AT91SAM9G20_NAND_PA_BASE,
AT91SAM9G20_NAND_SIZE,
VM_PROT_READ|VM_PROT_WRITE,
PTE_NOCACHE,
@@ -202,8 +188,8 @@ const struct arm_devmap_entry at91_devmap[] = {
*/
{
/* Internal Memory 1MB */
+ AT91SAM9G45_OHCI_VA_BASE,
AT91SAM9G45_OHCI_BASE,
- AT91SAM9G45_OHCI_PA_BASE,
0x00100000,
VM_PROT_READ|VM_PROT_WRITE,
PTE_NOCACHE,
@@ -211,6 +197,18 @@ const struct arm_devmap_entry at91_devmap[] = {
{ 0, 0, 0, 0, 0, }
};
+/* Physical and virtual addresses for some global pages */
+
+vm_paddr_t phys_avail[10];
+vm_paddr_t dump_avail[4];
+
+struct pv_addr systempage;
+struct pv_addr msgbufpv;
+struct pv_addr irqstack;
+struct pv_addr undstack;
+struct pv_addr abtstack;
+struct pv_addr kernelstack;
+
#ifdef LINUX_BOOT_ABI
extern int membanks;
extern int memstart[];
diff --git a/sys/arm/at91/at91rm92reg.h b/sys/arm/at91/at91rm92reg.h
index 66fad34..5db3d7e 100644
--- a/sys/arm/at91/at91rm92reg.h
+++ b/sys/arm/at91/at91rm92reg.h
@@ -255,12 +255,12 @@
* other * soc's so phyical and vm address
* mapping are unique. XXX
*/
-#define AT91RM92_OHCI_BASE 0xdfe00000
-#define AT91RM92_OHCI_PA_BASE 0x00300000
+#define AT91RM92_OHCI_VA_BASE 0xdfe00000
+#define AT91RM92_OHCI_BASE 0x00300000
#define AT91RM92_OHCI_SIZE 0x00100000
-#define AT91RM92_CF_BASE 0xdfd00000
-#define AT91RM92_CF_PA_BASE 0x51400000
+#define AT91RM92_CF_VA_BASE 0xdfd00000
+#define AT91RM92_CF_BASE 0x51400000
#define AT91RM92_CF_SIZE 0x00100000
/* SDRAMC */
diff --git a/sys/arm/at91/at91sam9260reg.h b/sys/arm/at91/at91sam9260reg.h
index e04afb8..5320d8a 100644
--- a/sys/arm/at91/at91sam9260reg.h
+++ b/sys/arm/at91/at91sam9260reg.h
@@ -251,12 +251,12 @@
* other * soc's so phyical and vm address
* mapping are unique. XXX
*/
-#define AT91SAM9260_OHCI_BASE 0xdfc00000
-#define AT91SAM9260_OHCI_PA_BASE 0x00500000
+#define AT91SAM9260_OHCI_VA_BASE 0xdfc00000
+#define AT91SAM9260_OHCI_BASE 0x00500000
#define AT91SAM9260_OHCI_SIZE 0x00100000
-#define AT91SAM9260_NAND_BASE 0xe0000000
-#define AT91SAM9260_NAND_PA_BASE 0x40000000
+#define AT91SAM9260_NAND_VA_BASE 0xe0000000
+#define AT91SAM9260_NAND_BASE 0x40000000
#define AT91SAM9260_NAND_SIZE 0x10000000
diff --git a/sys/arm/at91/at91sam9g20reg.h b/sys/arm/at91/at91sam9g20reg.h
index ab686c3..539d718 100644
--- a/sys/arm/at91/at91sam9g20reg.h
+++ b/sys/arm/at91/at91sam9g20reg.h
@@ -252,14 +252,13 @@
* other * soc's so phyical and vm address
* mapping are unique. XXX
*/
-#define AT91SAM9G20_OHCI_BASE 0xdfc00000
-#define AT91SAM9G20_OHCI_PA_BASE 0x00500000
-#define AT91SAM9G20_OHCI_SIZE 0x00100000
-
-#define AT91SAM9G20_NAND_BASE 0xe0000000
-#define AT91SAM9G20_NAND_PA_BASE 0x40000000
-#define AT91SAM9G20_NAND_SIZE 0x10000000
+#define AT91SAM9G20_OHCI_VA_BASE 0xdfc00000
+#define AT91SAM9G20_OHCI_BASE 0x00500000
+#define AT91SAM9G20_OHCI_SIZE 0x00100000
+#define AT91SAM9G20_NAND_VA_BASE 0xe0000000
+#define AT91SAM9G20_NAND_BASE 0x40000000
+#define AT91SAM9G20_NAND_SIZE 0x10000000
/* SDRAMC */
#define AT91SAM9G20_SDRAMC_BASE 0xfffea00
diff --git a/sys/arm/at91/at91sam9g45reg.h b/sys/arm/at91/at91sam9g45reg.h
index 86574b3..a92e3b9 100644
--- a/sys/arm/at91/at91sam9g45reg.h
+++ b/sys/arm/at91/at91sam9g45reg.h
@@ -243,13 +243,13 @@
* other * soc's so phyical and vm address
* mapping are unique. XXX
*/
-#define AT91SAM9G45_OHCI_BASE 0xdfb00000
-#define AT91SAM9G45_OHCI_PA_BASE 0x00700000
-#define AT91SAM9G45_OHCI_SIZE 0x00100000
+#define AT91SAM9G45_OHCI_VA_BASE 0xdfb00000
+#define AT91SAM9G45_OHCI_BASE 0x00700000
+#define AT91SAM9G45_OHCI_SIZE 0x00100000
-#define AT91SAM9G45_NAND_BASE 0xe0000000
-#define AT91SAM9G45_NAND_PA_BASE 0x40000000
-#define AT91SAM9G45_NAND_SIZE 0x10000000
+#define AT91SAM9G45_NAND_VA_BASE 0xe0000000
+#define AT91SAM9G45_NAND_BASE 0x40000000
+#define AT91SAM9G45_NAND_SIZE 0x10000000
/* DDRSDRC */
diff --git a/sys/arm/at91/std.bwct b/sys/arm/at91/std.bwct
index 6cb7ddd..19e5356 100644
--- a/sys/arm/at91/std.bwct
+++ b/sys/arm/at91/std.bwct
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
diff --git a/sys/arm/at91/std.eb9200 b/sys/arm/at91/std.eb9200
index c1dcd2a..cc8f70f 100644
--- a/sys/arm/at91/std.eb9200
+++ b/sys/arm/at91/std.eb9200
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
diff --git a/sys/arm/at91/std.ethernut5 b/sys/arm/at91/std.ethernut5
index 876b59a..7793a83 100644
--- a/sys/arm/at91/std.ethernut5
+++ b/sys/arm/at91/std.ethernut5
@@ -1,7 +1,6 @@
# $FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.hl200 b/sys/arm/at91/std.hl200
index f48f723..5b5ed22 100644
--- a/sys/arm/at91/std.hl200
+++ b/sys/arm/at91/std.hl200
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20000000
makeoptions KERNPHYSADDR=0x20100000
options KERNPHYSADDR=0x20100000
makeoptions KERNVIRTADDR=0xc0100000
diff --git a/sys/arm/at91/std.hl201 b/sys/arm/at91/std.hl201
index ff27308..6537b27 100644
--- a/sys/arm/at91/std.hl201
+++ b/sys/arm/at91/std.hl201
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.kb920x b/sys/arm/at91/std.kb920x
index 85c8d03..2f52db5 100644
--- a/sys/arm/at91/std.kb920x
+++ b/sys/arm/at91/std.kb920x
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
diff --git a/sys/arm/at91/std.qila9g20 b/sys/arm/at91/std.qila9g20
index e2043b6..f9dbb5f 100644
--- a/sys/arm/at91/std.qila9g20
+++ b/sys/arm/at91/std.qila9g20
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sam9260ek b/sys/arm/at91/std.sam9260ek
index e7d1884..fd4a7da 100644
--- a/sys/arm/at91/std.sam9260ek
+++ b/sys/arm/at91/std.sam9260ek
@@ -1,7 +1,6 @@
# $FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sam9g20ek b/sys/arm/at91/std.sam9g20ek
index cdbecda..160a893 100644
--- a/sys/arm/at91/std.sam9g20ek
+++ b/sys/arm/at91/std.sam9g20ek
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sam9x25ek b/sys/arm/at91/std.sam9x25ek
index 661213b..4536b51 100644
--- a/sys/arm/at91/std.sam9x25ek
+++ b/sys/arm/at91/std.sam9x25ek
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sn9g45 b/sys/arm/at91/std.sn9g45
index e0d7c98..5376955 100644
--- a/sys/arm/at91/std.sn9g45
+++ b/sys/arm/at91/std.sn9g45
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9g45"
-options STARTUP_PAGETABLE_ADDR=0x70800000
makeoptions KERNPHYSADDR=0x70008000
options KERNPHYSADDR=0x70008000
makeoptions KERNVIRTADDR=0xc0008000
diff --git a/sys/arm/at91/std.tsc4370 b/sys/arm/at91/std.tsc4370
index 6c08f8c..6eb25cb 100644
--- a/sys/arm/at91/std.tsc4370
+++ b/sys/arm/at91/std.tsc4370
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/broadcom/bcm2835/std.rpi b/sys/arm/broadcom/bcm2835/std.rpi
index 8bb62c8..af99deb 100644
--- a/sys/arm/broadcom/bcm2835/std.rpi
+++ b/sys/arm/broadcom/bcm2835/std.rpi
@@ -7,6 +7,5 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x00100000
makeoptions KERNPHYSADDR=0x00100000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x01000000
options FREEBSD_BOOT_LOADER
options LINUX_BOOT_ABI
diff --git a/sys/arm/conf/ATMEL b/sys/arm/conf/ATMEL
index 74871eb..93d124d 100644
--- a/sys/arm/conf/ATMEL
+++ b/sys/arm/conf/ATMEL
@@ -10,7 +10,6 @@ include "../at91/std.atmel"
# Typical values for most SoCs and board configurations. Will not work for
# at91sam9g45 or on some boards with non u-boot boot loaders.
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/conf/CNS11XXNAS b/sys/arm/conf/CNS11XXNAS
index cab0682..159bbdf 100644
--- a/sys/arm/conf/CNS11XXNAS
+++ b/sys/arm/conf/CNS11XXNAS
@@ -25,7 +25,6 @@ ident CNS11XXNAS
#options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
#options FLASHADDR=0x50000000
#options LOADERRAMADDR=0x00000000
-#options STARTUP_PAGETABLE_ADDR=0x10000000
include "../econa/std.econa"
diff --git a/sys/arm/conf/CRB b/sys/arm/conf/CRB
index d9b0a4e..850121e 100644
--- a/sys/arm/conf/CRB
+++ b/sys/arm/conf/CRB
@@ -24,7 +24,6 @@ options KERNPHYSADDR=0x00200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
options COUNTS_PER_SEC=400000000
-options STARTUP_PAGETABLE_ADDR=0x00000000
include "../xscale/i8134x/std.crb"
makeoptions MODULES_OVERRIDE=""
diff --git a/sys/arm/conf/EP80219 b/sys/arm/conf/EP80219
index a112fe1..8d2c5bf 100644
--- a/sys/arm/conf/EP80219
+++ b/sys/arm/conf/EP80219
@@ -23,7 +23,6 @@ options PHYSADDR=0xa0000000
options KERNPHYSADDR=0xa0200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
-options STARTUP_PAGETABLE_ADDR=0xa0000000
#options ARM32_NEW_VM_LAYOUT
include "../xscale/i80321/std.ep80219"
makeoptions MODULES_OVERRIDE=""
diff --git a/sys/arm/conf/GUMSTIX b/sys/arm/conf/GUMSTIX
index 11fe6a9..8b9824c 100644
--- a/sys/arm/conf/GUMSTIX
+++ b/sys/arm/conf/GUMSTIX
@@ -30,7 +30,6 @@ options PHYSADDR=0xa0000000
options KERNPHYSADDR=0xa0200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
-options STARTUP_PAGETABLE_ADDR=0xa0000000
include "../xscale/pxa/std.pxa"
makeoptions MODULES_OVERRIDE=""
diff --git a/sys/arm/conf/HL201 b/sys/arm/conf/HL201
index 92c1e07..7f6ea72 100644
--- a/sys/arm/conf/HL201
+++ b/sys/arm/conf/HL201
@@ -126,7 +126,7 @@ device nand # NAND interface on CS3
# Coming soon, but not yet
#options FDT
#options FDT_DTB_STATIC
-#makeoptions FDT_DTS_FILE=at91sam9g20ek.dts
+#makeoptions FDT_DTS_FILE=hl201.dts
options EARLY_PRINTF
options SOCDEV_PA=0xfc000000
diff --git a/sys/arm/conf/IQ31244 b/sys/arm/conf/IQ31244
index 1eb4a20..c1cbc13 100644
--- a/sys/arm/conf/IQ31244
+++ b/sys/arm/conf/IQ31244
@@ -25,7 +25,6 @@ options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
options FLASHADDR=0xf0000000
options LOADERRAMADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0xa0000000
include "../xscale/i80321/std.iq31244"
makeoptions MODULES_OVERRIDE=""
diff --git a/sys/arm/conf/NSLU b/sys/arm/conf/NSLU
index e9b4e28..0b23ee2 100644
--- a/sys/arm/conf/NSLU
+++ b/sys/arm/conf/NSLU
@@ -25,7 +25,6 @@ ident NSLU
#options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
#options FLASHADDR=0x50000000
#options LOADERRAMADDR=0x00000000
-#options STARTUP_PAGETABLE_ADDR=0x10000000
include "../xscale/ixp425/std.ixp425"
# NB: memory mapping is defined in std.avila (see also comment above)
diff --git a/sys/arm/conf/VERSATILEPB b/sys/arm/conf/VERSATILEPB
index 78d0789..6f884d1 100644
--- a/sys/arm/conf/VERSATILEPB
+++ b/sys/arm/conf/VERSATILEPB
@@ -29,7 +29,6 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x00100000
makeoptions KERNPHYSADDR=0x00100000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x01000000
options FREEBSD_BOOT_LOADER
options LINUX_BOOT_ABI
diff --git a/sys/arm/econa/std.econa b/sys/arm/econa/std.econa
index 324caf3..6b1f2d0 100644
--- a/sys/arm/econa/std.econa
+++ b/sys/arm/econa/std.econa
@@ -12,6 +12,5 @@ options KERNPHYSADDR=0x01000000
options KERNVIRTADDR=0xc1000000 # Used in ldscript.arm
options FLASHADDR=0xD0000000
options LOADERRAMADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
options NO_EVENTTIMERS
diff --git a/sys/arm/freescale/imx/std.imx51 b/sys/arm/freescale/imx/std.imx51
index 6c70ef9..a6b6ffa 100644
--- a/sys/arm/freescale/imx/std.imx51
+++ b/sys/arm/freescale/imx/std.imx51
@@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x90100000
makeoptions KERNPHYSADDR=0x90100000
options PHYSADDR=0x90000000
-options STARTUP_PAGETABLE_ADDR=0x91000000
files "../freescale/imx/files.imx51"
diff --git a/sys/arm/freescale/imx/std.imx53 b/sys/arm/freescale/imx/std.imx53
index a7bdba2..40fbb30 100644
--- a/sys/arm/freescale/imx/std.imx53
+++ b/sys/arm/freescale/imx/std.imx53
@@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x70100000
makeoptions KERNPHYSADDR=0x70100000
options PHYSADDR=0x70000000
-options STARTUP_PAGETABLE_ADDR=0x71000000
files "../freescale/imx/files.imx53"
diff --git a/sys/arm/freescale/imx/std.imx6 b/sys/arm/freescale/imx/std.imx6
index abe09e9..c328b22 100644
--- a/sys/arm/freescale/imx/std.imx6
+++ b/sys/arm/freescale/imx/std.imx6
@@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR = 0xc2000000
options KERNPHYSADDR = 0x12000000
makeoptions KERNPHYSADDR = 0x12000000
options PHYSADDR = 0x10000000
-options STARTUP_PAGETABLE_ADDR = 0x11f00000
files "../freescale/imx/files.imx6"
diff --git a/sys/arm/freescale/vybrid/std.vybrid b/sys/arm/freescale/vybrid/std.vybrid
index 92d5a46..2fbd85c 100644
--- a/sys/arm/freescale/vybrid/std.vybrid
+++ b/sys/arm/freescale/vybrid/std.vybrid
@@ -13,8 +13,6 @@ options KERNPHYSADDR=0x80100000
makeoptions KERNVIRTADDR=0xc0100000
options KERNVIRTADDR=0xc0100000
-options STARTUP_PAGETABLE_ADDR=0x81000000
-
options ARM_L2_PIPT
files "../freescale/vybrid/files.vybrid"
diff --git a/sys/arm/lpc/std.lpc b/sys/arm/lpc/std.lpc
index 84995ce..4c0d0d6 100644
--- a/sys/arm/lpc/std.lpc
+++ b/sys/arm/lpc/std.lpc
@@ -8,7 +8,6 @@ cpu CPU_ARM9
machine arm
makeoptions CONF_CFLAGS="-march=armv5te"
options PHYSADDR=0x80000000
-options STARTUP_PAGETABLE_ADDR=0x80000000
makeoptions KERNPHYSADDR=0x80100000
options KERNPHYSADDR=0x80100000
makeoptions KERNVIRTADDR=0xc0100000
diff --git a/sys/arm/mv/armadaxp/std.armadaxp b/sys/arm/mv/armadaxp/std.armadaxp
index d731ad3..d53a803 100644
--- a/sys/arm/mv/armadaxp/std.armadaxp
+++ b/sys/arm/mv/armadaxp/std.armadaxp
@@ -12,6 +12,5 @@ makeoptions KERNVIRTADDR=0xc0200000
options KERNPHYSADDR=0x00200000
options KERNVIRTADDR=0xc0200000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
options ARM_L2_PIPT
diff --git a/sys/arm/mv/discovery/std.db78xxx b/sys/arm/mv/discovery/std.db78xxx
index 7a7d927..70314fd 100644
--- a/sys/arm/mv/discovery/std.db78xxx
+++ b/sys/arm/mv/discovery/std.db78xxx
@@ -9,4 +9,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
diff --git a/sys/arm/mv/kirkwood/std.kirkwood b/sys/arm/mv/kirkwood/std.kirkwood
index 6b74920..abe2ddd 100644
--- a/sys/arm/mv/kirkwood/std.kirkwood
+++ b/sys/arm/mv/kirkwood/std.kirkwood
@@ -12,4 +12,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
diff --git a/sys/arm/mv/orion/std.db88f5xxx b/sys/arm/mv/orion/std.db88f5xxx
index 49c6ae4..7b52d7d 100644
--- a/sys/arm/mv/orion/std.db88f5xxx
+++ b/sys/arm/mv/orion/std.db88f5xxx
@@ -9,4 +9,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
diff --git a/sys/arm/mv/orion/std.ts7800 b/sys/arm/mv/orion/std.ts7800
index 163af16..aa5dcef 100644
--- a/sys/arm/mv/orion/std.ts7800
+++ b/sys/arm/mv/orion/std.ts7800
@@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
options LOADERRAMADDR=0x00000000
options FLASHADDR=0x00008000
diff --git a/sys/arm/rockchip/std.rk30xx b/sys/arm/rockchip/std.rk30xx
index 7b714bb..79ddcc6 100644
--- a/sys/arm/rockchip/std.rk30xx
+++ b/sys/arm/rockchip/std.rk30xx
@@ -17,8 +17,6 @@ options KERNPHYSADDR=0x60400000
makeoptions KERNVIRTADDR=0xc0400000
options KERNVIRTADDR=0xc0400000
-options STARTUP_PAGETABLE_ADDR=0x60200000
-
options ARM_L2_PIPT
options IPI_IRQ_START=0
diff --git a/sys/arm/s3c2xx0/std.ln2410sbc b/sys/arm/s3c2xx0/std.ln2410sbc
index d73d62d..a76a849 100644
--- a/sys/arm/s3c2xx0/std.ln2410sbc
+++ b/sys/arm/s3c2xx0/std.ln2410sbc
@@ -6,6 +6,5 @@ makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x30000000
options KERNVIRTADDR=0xc0000000
options PHYSADDR=0x30000000
-options STARTUP_PAGETABLE_ADDR=0x30800000
options NO_EVENTTIMERS
diff --git a/sys/arm/samsung/exynos/std.exynos5 b/sys/arm/samsung/exynos/std.exynos5
index 58f692c..5f59adc 100644
--- a/sys/arm/samsung/exynos/std.exynos5
+++ b/sys/arm/samsung/exynos/std.exynos5
@@ -13,8 +13,6 @@ options KERNPHYSADDR=0x40f00000
makeoptions KERNVIRTADDR=0xc0f00000
options KERNVIRTADDR=0xc0f00000
-options STARTUP_PAGETABLE_ADDR=0x40100000
-
options ARM_L2_PIPT
options IPI_IRQ_START=0
diff --git a/sys/arm/tegra/std.tegra2 b/sys/arm/tegra/std.tegra2
index 337b85f..e8d5524 100644
--- a/sys/arm/tegra/std.tegra2
+++ b/sys/arm/tegra/std.tegra2
@@ -11,6 +11,4 @@ options KERNPHYSADDR=0x00200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
-options STARTUP_PAGETABLE_ADDR=0x00100000
-
files "../tegra/files.tegra2"
diff --git a/sys/arm/ti/am335x/std.am335x b/sys/arm/ti/am335x/std.am335x
index 1801cee..7bcc746 100644
--- a/sys/arm/ti/am335x/std.am335x
+++ b/sys/arm/ti/am335x/std.am335x
@@ -14,8 +14,6 @@ makeoptions KERNPHYSADDR=0x80200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0200000
-options STARTUP_PAGETABLE_ADDR=0x80000000
-
options SOC_TI_AM335X
options ARM_L2_PIPT
diff --git a/sys/arm/ti/omap4/std.omap4 b/sys/arm/ti/omap4/std.omap4
index bbdd432..27ec5ff 100644
--- a/sys/arm/ti/omap4/std.omap4
+++ b/sys/arm/ti/omap4/std.omap4
@@ -14,8 +14,6 @@ makeoptions KERNPHYSADDR=0x80200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0200000
-options STARTUP_PAGETABLE_ADDR=0x80000000
-
options SOC_OMAP4
options ARM_L2_PIPT
diff --git a/sys/arm/xilinx/std.zynq7 b/sys/arm/xilinx/std.zynq7
index 76a21e2..f387703 100644
--- a/sys/arm/xilinx/std.zynq7
+++ b/sys/arm/xilinx/std.zynq7
@@ -18,6 +18,5 @@ makeoptions KERNPHYSADDR=0x00100000
options KERNVIRTADDR=0xc0100000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0100000
-options STARTUP_PAGETABLE_ADDR=0x000f0000
options ARM_L2_PIPT
diff --git a/sys/arm/xscale/ixp425/std.avila b/sys/arm/xscale/ixp425/std.avila
index 77036ee..9c00e1b 100644
--- a/sys/arm/xscale/ixp425/std.avila
+++ b/sys/arm/xscale/ixp425/std.avila
@@ -19,4 +19,3 @@ options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0200000
options FLASHADDR=0x50000000
options LOADERRAMADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00000000
diff --git a/sys/conf/Makefile.arm b/sys/conf/Makefile.arm
index eacba7b..d3332b4 100644
--- a/sys/conf/Makefile.arm
+++ b/sys/conf/Makefile.arm
@@ -55,6 +55,9 @@ CFLAGS += -mllvm -arm-enable-ehabi
.endif
.endif
+# hack because genassym.c includes sys/bus.h which includes these.
+genassym.o: bus_if.h device_if.h
+
SYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader ${LDFLAGS} \
-warn-common -export-dynamic -dynamic-linker /red/herring -o \
${FULLKERNEL}.noheader -X ${SYSTEM_OBJS} vers.o
diff --git a/sys/conf/ldscript.arm b/sys/conf/ldscript.arm
index 0d1c7ee..353e365 100644
--- a/sys/conf/ldscript.arm
+++ b/sys/conf/ldscript.arm
@@ -107,6 +107,12 @@ SECTIONS
*(.dynbss)
*(.bss)
*(COMMON)
+ . = ALIGN(32 / 8);
+ _ebss = .;
+ /* A section for the initial page table, it doesn't need to be in the
+ kernel file, however unlike normal .bss entries should not be zeroed
+ out as we use it before the .bss section is cleared. */
+ *(.init_pagetable)
}
. = ALIGN(32 / 8);
_end = . ;
diff --git a/sys/conf/options.arm b/sys/conf/options.arm
index 5140dba..5bcc748 100644
--- a/sys/conf/options.arm
+++ b/sys/conf/options.arm
@@ -51,7 +51,6 @@ SOC_OMAP3 opt_global.h
SOC_OMAP4 opt_global.h
SOC_TI_AM335X opt_global.h
SOC_TEGRA2 opt_global.h
-STARTUP_PAGETABLE_ADDR opt_global.h
XSCALE_CACHE_READ_WRITE_ALLOCATE opt_global.h
XSACLE_DISABLE_CCNT opt_timer.h
VERBOSE_INIT_ARM opt_global.h
OpenPOWER on IntegriCloud