aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-11-16 14:21:10 -0500
committerStephen Warren <swarren@nvidia.com>2012-11-16 14:21:10 -0500
commit9a2ab3f1fa01a146a395197153af0ae586e6a682 (patch)
tree65c6ead4de0b1bd53e7a4715ecf9dc4bf209fe47 /arch
parent2658ef15b27e0fb166f4b7b997b027a223cd0793 (diff)
parente5c5f2adeb370559f4b221d57214db85858b786a (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.h7
-rw-r--r--arch/arm/kernel/debug.S14
-rw-r--r--arch/arm/mm/mmu.c16
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);
40extern void vm_reserve_area_early(unsigned long addr, unsigned long size, 40extern void vm_reserve_area_early(unsigned long addr, unsigned long size,
41 void *caller); 41 void *caller);
42 42
43#ifdef CONFIG_DEBUG_LL
44extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr);
45extern void debug_ll_io_init(void);
46#else
47static inline void debug_ll_io_init(void) {}
48#endif
49
43struct mem_type; 50struct mem_type;
44extern const struct mem_type *get_mem_type(unsigned int type); 51extern 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
101ENDPROC(printch) 101ENDPROC(printch)
102 102
103ENTRY(debug_ll_addr)
104 addruart r2, r3, ip
105 str r2, [r0]
106 str r3, [r1]
107 mov pc, lr
108ENDPROC(debug_ll_addr)
109
103#else 110#else
104 111
105ENTRY(printascii) 112ENTRY(printascii)
@@ -119,4 +126,11 @@ ENTRY(printch)
119 mov pc, lr 126 mov pc, lr
120ENDPROC(printch) 127ENDPROC(printch)
121 128
129ENTRY(debug_ll_addr)
130 mov r2, #0
131 str r2, [r0]
132 str r2, [r1]
133 mov pc, lr
134ENDPROC(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
880void __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
879static void * __initdata vmalloc_min = 895static void * __initdata vmalloc_min =
880 (void *)(VMALLOC_END - (240 << 20) - VMALLOC_OFFSET); 896 (void *)(VMALLOC_END - (240 << 20) - VMALLOC_OFFSET);
881 897