diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-02-04 15:49:00 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-02-04 15:49:00 +0100 |
commit | da5fe0ba470283b384760c4976815fc20c1d45bd (patch) | |
tree | 11f2a08de885570d5d8c453f0c8b384427c666c0 /arch | |
parent | aacd51bfd2d20138b6f9c549fb4f1aa66e88243b (diff) | |
parent | 195310fd7b48e2c1198f216f9b4122d8f63e620e (diff) | |
download | barebox-da5fe0ba470283b384760c4976815fc20c1d45bd.tar.gz barebox-da5fe0ba470283b384760c4976815fc20c1d45bd.tar.xz |
Merge branch 'for-next/misc'
Diffstat (limited to 'arch')
22 files changed, 188 insertions, 21 deletions
diff --git a/arch/arm/configs/archosg9_xload_defconfig b/arch/arm/configs/archosg9_xload_defconfig index 6c6782f8ea..83743fa944 100644 --- a/arch/arm/configs/archosg9_xload_defconfig +++ b/arch/arm/configs/archosg9_xload_defconfig @@ -15,7 +15,7 @@ CONFIG_MALLOC_SIZE=0x2000000 CONFIG_SHELL_NONE=y # CONFIG_ERRNO_MESSAGES is not set # CONFIG_TIMESTAMP is not set -# CONFIG_CONSOLE_FULL is not set +CONFIG_CONSOLE_SIMPLE=y # CONFIG_DEFAULT_ENVIRONMENT is not set CONFIG_DRIVER_SERIAL_OMAP4_USBBOOT=y # CONFIG_SPI is not set diff --git a/arch/arm/configs/omap3530_beagle_xload_defconfig b/arch/arm/configs/omap3530_beagle_xload_defconfig index d951b1c98b..244891b3c8 100644 --- a/arch/arm/configs/omap3530_beagle_xload_defconfig +++ b/arch/arm/configs/omap3530_beagle_xload_defconfig @@ -14,7 +14,7 @@ CONFIG_PROMPT="X-load Beagle>" CONFIG_SHELL_NONE=y # CONFIG_ERRNO_MESSAGES is not set # CONFIG_TIMESTAMP is not set -# CONFIG_CONSOLE_FULL is not set +CONFIG_CONSOLE_SIMPLE=y # CONFIG_DEFAULT_ENVIRONMENT is not set CONFIG_DRIVER_SERIAL_NS16550=y CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y diff --git a/arch/arm/configs/panda_xload_defconfig b/arch/arm/configs/panda_xload_defconfig index fec09cec94..1ed20a157d 100644 --- a/arch/arm/configs/panda_xload_defconfig +++ b/arch/arm/configs/panda_xload_defconfig @@ -14,7 +14,7 @@ CONFIG_PROMPT="barebox> " CONFIG_SHELL_NONE=y # CONFIG_ERRNO_MESSAGES is not set # CONFIG_TIMESTAMP is not set -# CONFIG_CONSOLE_FULL is not set +CONFIG_CONSOLE_SIMPLE=y # CONFIG_DEFAULT_ENVIRONMENT is not set CONFIG_DRIVER_SERIAL_NS16550=y CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y diff --git a/arch/arm/configs/pcm049_xload_defconfig b/arch/arm/configs/pcm049_xload_defconfig index b6d3a7a376..9dfc30d953 100644 --- a/arch/arm/configs/pcm049_xload_defconfig +++ b/arch/arm/configs/pcm049_xload_defconfig @@ -17,7 +17,7 @@ CONFIG_PROMPT="barebox> " CONFIG_SHELL_NONE=y # CONFIG_ERRNO_MESSAGES is not set # CONFIG_TIMESTAMP is not set -# CONFIG_CONSOLE_FULL is not set +CONFIG_CONSOLE_SIMPLE=y # CONFIG_DEFAULT_ENVIRONMENT is not set CONFIG_DRIVER_SERIAL_NS16550=y CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y diff --git a/arch/arm/configs/phycard_a_l1_xload_defconfig b/arch/arm/configs/phycard_a_l1_xload_defconfig index 30253cba1c..5901ed10ab 100644 --- a/arch/arm/configs/phycard_a_l1_xload_defconfig +++ b/arch/arm/configs/phycard_a_l1_xload_defconfig @@ -20,7 +20,7 @@ CONFIG_CBSIZE=128 CONFIG_SHELL_NONE=y # CONFIG_ERRNO_MESSAGES is not set # CONFIG_TIMESTAMP is not set -# CONFIG_CONSOLE_FULL is not set +CONFIG_CONSOLE_SIMPLE=y # CONFIG_DEFAULT_ENVIRONMENT is not set CONFIG_DRIVER_SERIAL_NS16550=y CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y diff --git a/arch/arm/configs/phycard_a_xl2_xload_defconfig b/arch/arm/configs/phycard_a_xl2_xload_defconfig index 797522065a..84160e3418 100644 --- a/arch/arm/configs/phycard_a_xl2_xload_defconfig +++ b/arch/arm/configs/phycard_a_xl2_xload_defconfig @@ -17,7 +17,7 @@ CONFIG_PROMPT="barebox> " CONFIG_SHELL_NONE=y # CONFIG_ERRNO_MESSAGES is not set # CONFIG_TIMESTAMP is not set -# CONFIG_CONSOLE_FULL is not set +CONFIG_CONSOLE_SIMPLE=y # CONFIG_DEFAULT_ENVIRONMENT is not set CONFIG_DRIVER_SERIAL_NS16550=y CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y diff --git a/arch/arm/cpu/mmu.c b/arch/arm/cpu/mmu.c index 4b6db37d4b..8f9a43e040 100644 --- a/arch/arm/cpu/mmu.c +++ b/arch/arm/cpu/mmu.c @@ -73,11 +73,25 @@ extern int arm_architecture; #define PTE_FLAGS_CACHED_V4 (PTE_SMALL_AP_UNO_SRW | PTE_BUFFERABLE | PTE_CACHEABLE) #define PTE_FLAGS_UNCACHED_V4 PTE_SMALL_AP_UNO_SRW -static uint32_t PTE_FLAGS_CACHED; -static uint32_t PTE_FLAGS_UNCACHED; +/* + * PTE flags to set cached and uncached areas. + * This will be determined at runtime. + */ +static uint32_t pte_flags_cached; +static uint32_t pte_flags_uncached; #define PTE_MASK ((1 << 12) - 1) +uint32_t mmu_get_pte_cached_flags() +{ + return pte_flags_cached; +} + +uint32_t mmu_get_pte_uncached_flags() +{ + return pte_flags_uncached; +} + /* * Create a second level translation table for the given virtual address. * We initially create a flat uncached mapping on it. @@ -93,7 +107,7 @@ static u32 *arm_create_pte(unsigned long virt) ttb[virt >> 20] = (unsigned long)table | PMD_TYPE_TABLE; for (i = 0; i < 256; i++) { - table[i] = virt | PTE_TYPE_SMALL | PTE_FLAGS_UNCACHED; + table[i] = virt | PTE_TYPE_SMALL | pte_flags_uncached; virt += PAGE_SIZE; } @@ -114,7 +128,7 @@ static u32 *find_pte(unsigned long adr) return &table[(adr >> PAGE_SHIFT) & 0xff]; } -static void remap_range(void *_start, size_t size, uint32_t flags) +void remap_range(void *_start, size_t size, uint32_t flags) { unsigned long start = (unsigned long)_start; u32 *p; @@ -176,7 +190,7 @@ static int arm_mmu_remap_sdram(struct memory_bank *bank) for (i = 0; i < num_ptes; i++) { ptes[i] = (phys + i * 4096) | PTE_TYPE_SMALL | - PTE_FLAGS_CACHED; + pte_flags_cached; } pte = 0; @@ -238,9 +252,10 @@ static void vectors_init(void) memcpy(vectors, __exceptions_start, __exceptions_stop - __exceptions_start); if (cr & CR_V) - exc[256 - 16] = (u32)vectors | PTE_TYPE_SMALL | PTE_FLAGS_CACHED; + exc[256 - 16] = (u32)vectors | PTE_TYPE_SMALL | + pte_flags_cached; else - exc[0] = (u32)vectors | PTE_TYPE_SMALL | PTE_FLAGS_CACHED; + exc[0] = (u32)vectors | PTE_TYPE_SMALL | pte_flags_cached; } /* @@ -254,11 +269,11 @@ static int mmu_init(void) arm_set_cache_functions(); if (cpu_architecture() >= CPU_ARCH_ARMv7) { - PTE_FLAGS_CACHED = PTE_FLAGS_CACHED_V7; - PTE_FLAGS_UNCACHED = PTE_FLAGS_UNCACHED_V7; + pte_flags_cached = PTE_FLAGS_CACHED_V7; + pte_flags_uncached = PTE_FLAGS_UNCACHED_V7; } else { - PTE_FLAGS_CACHED = PTE_FLAGS_CACHED_V4; - PTE_FLAGS_UNCACHED = PTE_FLAGS_UNCACHED_V4; + pte_flags_cached = PTE_FLAGS_CACHED_V4; + pte_flags_uncached = PTE_FLAGS_UNCACHED_V4; } ttb = memalign(0x10000, 0x4000); @@ -315,8 +330,6 @@ void mmu_disable(void) __mmu_cache_off(); } -#define PAGE_ALIGN(s) (((s) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) - void *dma_alloc_coherent(size_t size) { void *ret; @@ -326,7 +339,7 @@ void *dma_alloc_coherent(size_t size) dma_inv_range((unsigned long)ret, (unsigned long)ret + size); - remap_range(ret, size, PTE_FLAGS_UNCACHED); + remap_range(ret, size, pte_flags_uncached); return ret; } @@ -343,7 +356,7 @@ void *phys_to_virt(unsigned long phys) void dma_free_coherent(void *mem, size_t size) { - remap_range(mem, size, PTE_FLAGS_CACHED); + remap_range(mem, size, pte_flags_cached); free(mem); } diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h index a66da8c0a8..f32cea639d 100644 --- a/arch/arm/include/asm/mmu.h +++ b/arch/arm/include/asm/mmu.h @@ -41,7 +41,10 @@ void dma_flush_range(unsigned long, unsigned long); void dma_inv_range(unsigned long, unsigned long); unsigned long virt_to_phys(void *virt); void *phys_to_virt(unsigned long phys); +void remap_range(void *_start, size_t size, uint32_t flags); void *map_io_sections(unsigned long physaddr, void *start, size_t size); +uint32_t mmu_get_pte_cached_flags(void); +uint32_t mmu_get_pte_uncached_flags(void); #else static inline void *dma_alloc_coherent(size_t size) @@ -76,11 +79,25 @@ static inline void dma_inv_range(unsigned long s, unsigned long e) { } +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + static inline void *map_io_sections(unsigned long phys, void *start, size_t size) { return (void *)phys; } +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} + #endif #ifdef CONFIG_CACHE_L2X0 diff --git a/arch/arm/lib/barebox.lds.S b/arch/arm/lib/barebox.lds.S index bac1a04f87..e5aee8cd82 100644 --- a/arch/arm/lib/barebox.lds.S +++ b/arch/arm/lib/barebox.lds.S @@ -66,6 +66,7 @@ SECTIONS } #endif _etext = .; /* End of text and rodata section */ + _sdata = .; . = ALIGN(4); .data : { *(.data*) } @@ -87,6 +88,7 @@ SECTIONS __usymtab : { BAREBOX_SYMS } __usymtab_end = .; + _edata = .; . = ALIGN(4); __bss_start = .; .bss : { *(.bss*) } diff --git a/arch/blackfin/boards/ipe337/barebox.lds.S b/arch/blackfin/boards/ipe337/barebox.lds.S index 6a07b43a1c..21a91eeb0a 100644 --- a/arch/blackfin/boards/ipe337/barebox.lds.S +++ b/arch/blackfin/boards/ipe337/barebox.lds.S @@ -55,6 +55,7 @@ SECTIONS .rodata : { *(.rodata) } __etext = .; /* End of text and rodata section */ + __sdata = .; . = ALIGN(4); .data : { *(.data) } @@ -79,6 +80,7 @@ SECTIONS __usymtab : { BAREBOX_SYMS } ___usymtab_end = .; + __edata = .; . = ALIGN(4); ___bss_start = .; .bss : { *(.bss) } diff --git a/arch/blackfin/include/asm/mmu.h b/arch/blackfin/include/asm/mmu.h new file mode 100644 index 0000000000..bf654206ac --- /dev/null +++ b/arch/blackfin/include/asm/mmu.h @@ -0,0 +1,18 @@ +#ifndef __ASM_MMU_H +#define __ASM_MMU_H + +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} + +#endif /* __ASM_MMU_H */ diff --git a/arch/mips/include/asm/mmu.h b/arch/mips/include/asm/mmu.h new file mode 100644 index 0000000000..bf654206ac --- /dev/null +++ b/arch/mips/include/asm/mmu.h @@ -0,0 +1,18 @@ +#ifndef __ASM_MMU_H +#define __ASM_MMU_H + +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} + +#endif /* __ASM_MMU_H */ diff --git a/arch/mips/lib/barebox.lds.S b/arch/mips/lib/barebox.lds.S index 0cbf2d71ee..5b3d45dc3c 100644 --- a/arch/mips/lib/barebox.lds.S +++ b/arch/mips/lib/barebox.lds.S @@ -44,6 +44,7 @@ SECTIONS .rodata : { *(.rodata*) } _etext = .; /* End of text and rodata section */ + _sdata = .; . = ALIGN(4); .data : { *(.data*) } @@ -68,6 +69,7 @@ SECTIONS __usymtab : { BAREBOX_SYMS } __usymtab_end = .; + _edata = .; . = ALIGN(4); __bss_start = .; .bss : { *(.bss*) } diff --git a/arch/nios2/cpu/barebox.lds.S b/arch/nios2/cpu/barebox.lds.S index af7be4de3c..943c507531 100644 --- a/arch/nios2/cpu/barebox.lds.S +++ b/arch/nios2/cpu/barebox.lds.S @@ -74,6 +74,7 @@ SECTIONS * adjacent to simplify the startup code -- and provide * the global pointer for gp-relative access. */ + _sdata = .; _data = .; .data : { diff --git a/arch/nios2/include/asm/mmu.h b/arch/nios2/include/asm/mmu.h new file mode 100644 index 0000000000..bf654206ac --- /dev/null +++ b/arch/nios2/include/asm/mmu.h @@ -0,0 +1,18 @@ +#ifndef __ASM_MMU_H +#define __ASM_MMU_H + +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} + +#endif /* __ASM_MMU_H */ diff --git a/arch/openrisc/include/asm/mmu.h b/arch/openrisc/include/asm/mmu.h new file mode 100644 index 0000000000..bf654206ac --- /dev/null +++ b/arch/openrisc/include/asm/mmu.h @@ -0,0 +1,18 @@ +#ifndef __ASM_MMU_H +#define __ASM_MMU_H + +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} + +#endif /* __ASM_MMU_H */ diff --git a/arch/ppc/boards/freescale-p2020rdb/barebox.lds.S b/arch/ppc/boards/freescale-p2020rdb/barebox.lds.S index 95033d4904..85a864ec85 100644 --- a/arch/ppc/boards/freescale-p2020rdb/barebox.lds.S +++ b/arch/ppc/boards/freescale-p2020rdb/barebox.lds.S @@ -41,6 +41,7 @@ SECTIONS _etext = .; PROVIDE (etext = .); + _sdata = .; .rodata : { diff --git a/arch/ppc/boards/pcm030/barebox.lds.S b/arch/ppc/boards/pcm030/barebox.lds.S index cc86d82db6..20ac0d8a06 100644 --- a/arch/ppc/boards/pcm030/barebox.lds.S +++ b/arch/ppc/boards/pcm030/barebox.lds.S @@ -69,6 +69,7 @@ SECTIONS . = (. + 0x0FFF) & 0xFFFFF000; _etext = .; PROVIDE (erotext = .); + _sdata = .; .reloc : { *(.got) diff --git a/arch/ppc/include/asm/mmu.h b/arch/ppc/include/asm/mmu.h index b2dd0b7b2b..179ec2b1a9 100644 --- a/arch/ppc/include/asm/mmu.h +++ b/arch/ppc/include/asm/mmu.h @@ -540,4 +540,22 @@ extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower); (rt<<21)|(ra<<16)|(ws<<11)|(946<<1) #endif + +#ifndef __ASSEMBLY__ + +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} +#endif + #endif /* _PPC_MMU_H_ */ diff --git a/arch/sandbox/include/asm/mmu.h b/arch/sandbox/include/asm/mmu.h new file mode 100644 index 0000000000..bf654206ac --- /dev/null +++ b/arch/sandbox/include/asm/mmu.h @@ -0,0 +1,18 @@ +#ifndef __ASM_MMU_H +#define __ASM_MMU_H + +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} + +#endif /* __ASM_MMU_H */ diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h new file mode 100644 index 0000000000..bf654206ac --- /dev/null +++ b/arch/x86/include/asm/mmu.h @@ -0,0 +1,18 @@ +#ifndef __ASM_MMU_H +#define __ASM_MMU_H + +static inline void remap_range(void *_start, size_t size, uint32_t flags) +{ +} + +static inline uint32_t mmu_get_pte_cached_flags(void) +{ + return 0; +} + +static inline uint32_t mmu_get_pte_uncached_flags(void) +{ + return 0; +} + +#endif /* __ASM_MMU_H */ diff --git a/arch/x86/lib/barebox.lds.S b/arch/x86/lib/barebox.lds.S index 8bd2a7b30e..05d0f778e5 100644 --- a/arch/x86/lib/barebox.lds.S +++ b/arch/x86/lib/barebox.lds.S @@ -153,6 +153,7 @@ SECTIONS } > barebox BAREBOX_BARE_INIT_SIZE + _sdata = .; .data : AT ( LOADADDR(.text) + SIZEOF(.text) ) { *(.data*) . = ALIGN(4); @@ -191,6 +192,7 @@ SECTIONS . = ALIGN(4); } > barebox + _edata = .; .bss : { __bss_start = .; *(.bss*); |