summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-02-04 15:49:00 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-02-04 15:49:00 +0100
commitda5fe0ba470283b384760c4976815fc20c1d45bd (patch)
tree11f2a08de885570d5d8c453f0c8b384427c666c0 /arch
parentaacd51bfd2d20138b6f9c549fb4f1aa66e88243b (diff)
parent195310fd7b48e2c1198f216f9b4122d8f63e620e (diff)
downloadbarebox-da5fe0ba470283b384760c4976815fc20c1d45bd.tar.gz
barebox-da5fe0ba470283b384760c4976815fc20c1d45bd.tar.xz
Merge branch 'for-next/misc'
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/configs/archosg9_xload_defconfig2
-rw-r--r--arch/arm/configs/omap3530_beagle_xload_defconfig2
-rw-r--r--arch/arm/configs/panda_xload_defconfig2
-rw-r--r--arch/arm/configs/pcm049_xload_defconfig2
-rw-r--r--arch/arm/configs/phycard_a_l1_xload_defconfig2
-rw-r--r--arch/arm/configs/phycard_a_xl2_xload_defconfig2
-rw-r--r--arch/arm/cpu/mmu.c43
-rw-r--r--arch/arm/include/asm/mmu.h17
-rw-r--r--arch/arm/lib/barebox.lds.S2
-rw-r--r--arch/blackfin/boards/ipe337/barebox.lds.S2
-rw-r--r--arch/blackfin/include/asm/mmu.h18
-rw-r--r--arch/mips/include/asm/mmu.h18
-rw-r--r--arch/mips/lib/barebox.lds.S2
-rw-r--r--arch/nios2/cpu/barebox.lds.S1
-rw-r--r--arch/nios2/include/asm/mmu.h18
-rw-r--r--arch/openrisc/include/asm/mmu.h18
-rw-r--r--arch/ppc/boards/freescale-p2020rdb/barebox.lds.S1
-rw-r--r--arch/ppc/boards/pcm030/barebox.lds.S1
-rw-r--r--arch/ppc/include/asm/mmu.h18
-rw-r--r--arch/sandbox/include/asm/mmu.h18
-rw-r--r--arch/x86/include/asm/mmu.h18
-rw-r--r--arch/x86/lib/barebox.lds.S2
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*);