diff options
author | Stephen Warren <swarren@nvidia.com> | 2012-11-16 14:21:10 -0500 |
---|---|---|
committer | Stephen Warren <swarren@nvidia.com> | 2012-11-16 14:21:10 -0500 |
commit | 9a2ab3f1fa01a146a395197153af0ae586e6a682 (patch) | |
tree | 65c6ead4de0b1bd53e7a4715ecf9dc4bf209fe47 /arch | |
parent | 2658ef15b27e0fb166f4b7b997b027a223cd0793 (diff) | |
parent | e5c5f2adeb370559f4b221d57214db85858b786a (diff) |
Merge remote-tracking branch 'korg_arm-soc/devel/debug_ll_init' into for-3.8/single-zimage
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/mach/map.h | 7 | ||||
-rw-r--r-- | arch/arm/kernel/debug.S | 14 | ||||
-rw-r--r-- | arch/arm/mm/mmu.c | 16 |
3 files changed, 37 insertions, 0 deletions
diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h index 195ac2f9d3d3..2fe141fcc8d6 100644 --- a/arch/arm/include/asm/mach/map.h +++ b/arch/arm/include/asm/mach/map.h | |||
@@ -40,6 +40,13 @@ extern void iotable_init(struct map_desc *, int); | |||
40 | extern void vm_reserve_area_early(unsigned long addr, unsigned long size, | 40 | extern void vm_reserve_area_early(unsigned long addr, unsigned long size, |
41 | void *caller); | 41 | void *caller); |
42 | 42 | ||
43 | #ifdef CONFIG_DEBUG_LL | ||
44 | extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr); | ||
45 | extern void debug_ll_io_init(void); | ||
46 | #else | ||
47 | static inline void debug_ll_io_init(void) {} | ||
48 | #endif | ||
49 | |||
43 | struct mem_type; | 50 | struct mem_type; |
44 | extern const struct mem_type *get_mem_type(unsigned int type); | 51 | extern const struct mem_type *get_mem_type(unsigned int type); |
45 | /* | 52 | /* |
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index 66f711b2e0e8..6809200c31fb 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S | |||
@@ -100,6 +100,13 @@ ENTRY(printch) | |||
100 | b 1b | 100 | b 1b |
101 | ENDPROC(printch) | 101 | ENDPROC(printch) |
102 | 102 | ||
103 | ENTRY(debug_ll_addr) | ||
104 | addruart r2, r3, ip | ||
105 | str r2, [r0] | ||
106 | str r3, [r1] | ||
107 | mov pc, lr | ||
108 | ENDPROC(debug_ll_addr) | ||
109 | |||
103 | #else | 110 | #else |
104 | 111 | ||
105 | ENTRY(printascii) | 112 | ENTRY(printascii) |
@@ -119,4 +126,11 @@ ENTRY(printch) | |||
119 | mov pc, lr | 126 | mov pc, lr |
120 | ENDPROC(printch) | 127 | ENDPROC(printch) |
121 | 128 | ||
129 | ENTRY(debug_ll_addr) | ||
130 | mov r2, #0 | ||
131 | str r2, [r0] | ||
132 | str r2, [r1] | ||
133 | mov pc, lr | ||
134 | ENDPROC(debug_ll_addr) | ||
135 | |||
122 | #endif | 136 | #endif |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 941dfb9e9a78..39719bb93caa 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -876,6 +876,22 @@ static void __init pci_reserve_io(void) | |||
876 | #define pci_reserve_io() do { } while (0) | 876 | #define pci_reserve_io() do { } while (0) |
877 | #endif | 877 | #endif |
878 | 878 | ||
879 | #ifdef CONFIG_DEBUG_LL | ||
880 | void __init debug_ll_io_init(void) | ||
881 | { | ||
882 | struct map_desc map; | ||
883 | |||
884 | debug_ll_addr(&map.pfn, &map.virtual); | ||
885 | if (!map.pfn || !map.virtual) | ||
886 | return; | ||
887 | map.pfn = __phys_to_pfn(map.pfn); | ||
888 | map.virtual &= PAGE_MASK; | ||
889 | map.length = PAGE_SIZE; | ||
890 | map.type = MT_DEVICE; | ||
891 | create_mapping(&map); | ||
892 | } | ||
893 | #endif | ||
894 | |||
879 | static void * __initdata vmalloc_min = | 895 | static void * __initdata vmalloc_min = |
880 | (void *)(VMALLOC_END - (240 << 20) - VMALLOC_OFFSET); | 896 | (void *)(VMALLOC_END - (240 << 20) - VMALLOC_OFFSET); |
881 | 897 | ||