diff options
author | ian <ian@FreeBSD.org> | 2014-05-15 02:41:23 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2014-05-15 02:41:23 +0000 |
commit | 25ba02d795dd37d50898996cf19659d1da1659a5 (patch) | |
tree | af11a63cc5a0d26b2e708bd24e28a5015c4714df /sys | |
parent | fa1497d7f781e064f21c3688b3d51c5571812a00 (diff) | |
download | FreeBSD-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')
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 |