Advertisement
Guest User

Untitled

a guest
Mar 30th, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.03 KB | None | 0 0
  1. diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
  2. index c5d6025..7ceeff2 100644
  3. --- a/arch/arm/boot/compressed/head.S
  4. +++ b/arch/arm/boot/compressed/head.S
  5. @@ -458,6 +458,9 @@ not_relocated: mov r0, #0
  6. bl decompress_kernel
  7. bl cache_clean_flush
  8. bl cache_off
  9. + mov r0, #0x8e0000
  10. + mov r1, #0x41
  11. + str r1,[r0]
  12. mov r0, #0 @ must be zero
  13. mov r1, r7 @ restore architecture number
  14. mov r2, r8 @ restore atags pointer
  15. diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
  16. index 9275828..6c363c1 100644
  17. --- a/arch/arm/include/asm/io.h
  18. +++ b/arch/arm/include/asm/io.h
  19. @@ -83,6 +83,11 @@ extern void __iomem *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, uns
  20. extern void __iomem *__arm_ioremap(unsigned long, size_t, unsigned int);
  21. extern void __iomem *__arm_ioremap_exec(unsigned long, size_t, bool cached);
  22. extern void __iounmap(volatile void __iomem *addr);
  23. +extern void __arm_iounmap(volatile void __iomem *addr);
  24. +
  25. +extern void __iomem * (*arch_ioremap_caller)(unsigned long, size_t,
  26. + unsigned int, void *);
  27. +extern void (*arch_iounmap)(volatile void __iomem *);
  28.  
  29. /*
  30. * Bad read/write accesses...
  31. @@ -266,7 +271,7 @@ extern void _memset_io(volatile void __iomem *, int, size_t);
  32. */
  33. #ifndef __arch_ioremap
  34. #define __arch_ioremap __arm_ioremap
  35. -#define __arch_iounmap __iounmap
  36. +#define __arch_iounmap __arm_iounmap
  37. #endif
  38.  
  39. #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE)
  40. diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
  41. index 6d57911..3cde1b0 100644
  42. --- a/arch/arm/kernel/head.S
  43. +++ b/arch/arm/kernel/head.S
  44. @@ -129,6 +129,10 @@ ENTRY(stext)
  45. #endif
  46. bl __create_page_tables
  47.  
  48. + ldr r12, =0x8e0004
  49. + mov r13, #0x42
  50. + str r13,[r12]
  51. +
  52. /*
  53. * The following calls CPU specific code in a position independent
  54. * manner. See arch/arm/mm/proc-*.S for details. r10 = base of
  55. @@ -311,6 +315,16 @@ __create_page_tables:
  56. orr r3, r7, #0x7c000000
  57. str r3, [r0]
  58. #endif
  59. +
  60. +//#if defined(CONFIG_ARCH_NETWINDER) || defined(CONFIG_ARCH_CATS)
  61. + /*
  62. + * Map in some SMI memory
  63. + */
  64. + add r0, r4, #0x00800000 >> (SECTION_SHIFT - PMD_ORDER)
  65. + orr r3, r7, #0x00800000
  66. + str r3, [r0]
  67. +//#endif
  68. +
  69. #ifdef CONFIG_ARCH_RPC
  70. /*
  71. * Map in screen at 0x02000000 & SCREEN2_BASE
  72. @@ -456,6 +470,11 @@ ENTRY(__turn_mmu_on)
  73. instr_sync
  74. mov r3, r3
  75. mov r3, r13
  76. +
  77. + ldr r12, =0x8e0008
  78. + mov r13, #0x43
  79. + str r13,[r12]
  80. +
  81. mov pc, r3
  82. __turn_mmu_on_end:
  83. ENDPROC(__turn_mmu_on)
  84. diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
  85. index caae7fe..e5f99e3 100644
  86. --- a/arch/arm/kernel/setup.c
  87. +++ b/arch/arm/kernel/setup.c
  88. @@ -923,9 +923,11 @@ void __init setup_arch(char **cmdline_p)
  89. struct machine_desc *mdesc;
  90.  
  91. setup_processor();
  92. + *((unsigned char*)0x8e0001) = 'a';
  93. mdesc = setup_machine_fdt(__atags_pointer);
  94. if (!mdesc)
  95. mdesc = setup_machine_tags(machine_arch_type);
  96. + *((unsigned char*)0x8e0005) = 'b';
  97. machine_desc = mdesc;
  98. machine_name = mdesc->name;
  99.  
  100. @@ -937,7 +939,7 @@ void __init setup_arch(char **cmdline_p)
  101. #endif
  102. if (mdesc->restart_mode)
  103. reboot_setup(&mdesc->restart_mode);
  104. -
  105. + *((unsigned char*)0x8e0009) = 'c';
  106. init_mm.start_code = (unsigned long) _text;
  107. init_mm.end_code = (unsigned long) _etext;
  108. init_mm.end_data = (unsigned long) _edata;
  109. @@ -948,27 +950,36 @@ void __init setup_arch(char **cmdline_p)
  110. *cmdline_p = cmd_line;
  111.  
  112. parse_early_param();
  113. -
  114. + *((unsigned char*)0x8e000d) = 'd';
  115. sort(&meminfo.bank, meminfo.nr_banks, sizeof(meminfo.bank[0]), meminfo_cmp, NULL);
  116. sanity_check_meminfo();
  117. + *((unsigned char*)0x8e0011) = 'e';
  118. arm_memblock_init(&meminfo, mdesc);
  119. -
  120. + *((unsigned char*)0x8e0015) = 'f';
  121. paging_init(mdesc);
  122. + *((unsigned char*)0x8e0019) = 'g';
  123. request_standard_resources(mdesc);
  124. + *((unsigned char*)0x8e001d) = 'h';
  125.  
  126. if (mdesc->restart)
  127. arm_pm_restart = mdesc->restart;
  128.  
  129. unflatten_device_tree();
  130. + *((unsigned char*)0x8e0021) = 'i';
  131.  
  132. #ifdef CONFIG_SMP
  133. if (is_smp())
  134. smp_init_cpus();
  135. #endif
  136. + *((unsigned char*)0x8e0025) = 'j';
  137. +
  138. reserve_crashkernel();
  139. + *((unsigned char*)0x8e0029) = 'k';
  140.  
  141. tcm_init();
  142.  
  143. + *((unsigned char*)0x8e002d) = 'l';
  144. +
  145. #ifdef CONFIG_MULTI_IRQ_HANDLER
  146. handle_arch_irq = mdesc->handle_irq;
  147. #endif
  148. @@ -981,6 +992,7 @@ void __init setup_arch(char **cmdline_p)
  149. #endif
  150. #endif
  151. early_trap_init();
  152. + *((unsigned char*)0x8e0031) = 'h';
  153.  
  154. if (mdesc->init_early)
  155. mdesc->init_early();
  156. diff --git a/arch/arm/mach-msm/board-htcrhodium.c b/arch/arm/mach-msm/board-htcrhodium.c
  157. index 50e8386..7b416f9 100644
  158. --- a/arch/arm/mach-msm/board-htcrhodium.c
  159. +++ b/arch/arm/mach-msm/board-htcrhodium.c
  160. @@ -1382,7 +1382,9 @@ static void __init htcrhodium_init(void)
  161.  
  162. static void __init htcrhodium_map_io(void)
  163. {
  164. + *((unsigned char*)0x8e000f) = 'd';
  165. msm_map_common_io();
  166. + *((unsigned char*)0x8e0013) = 'e';
  167. // iotable_init(trout_io_desc, ARRAY_SIZE(trout_io_desc));
  168.  
  169. #ifdef CONFIG_MSM_DEBUG_UART3
  170. diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
  171. index 80632e8..0246290 100644
  172. --- a/arch/arm/mm/ioremap.c
  173. +++ b/arch/arm/mm/ioremap.c
  174. @@ -306,11 +306,15 @@ __arm_ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,
  175. }
  176. EXPORT_SYMBOL(__arm_ioremap_pfn);
  177.  
  178. +void __iomem * (*arch_ioremap_caller)(unsigned long, size_t,
  179. + unsigned int, void *) =
  180. + __arm_ioremap_caller;
  181. +
  182. void __iomem *
  183. __arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype)
  184. {
  185. - return __arm_ioremap_caller(phys_addr, size, mtype,
  186. - __builtin_return_address(0));
  187. + return arch_ioremap_caller(phys_addr, size, mtype,
  188. + __builtin_return_address(0));
  189. }
  190. EXPORT_SYMBOL(__arm_ioremap);
  191.  
  192. @@ -369,4 +373,11 @@ void __iounmap(volatile void __iomem *io_addr)
  193.  
  194. vunmap(addr);
  195. }
  196. -EXPORT_SYMBOL(__iounmap);
  197. +
  198. +void (*arch_iounmap)(volatile void __iomem *) = __iounmap;
  199. +
  200. +void __arm_iounmap(volatile void __iomem *io_addr)
  201. +{
  202. + arch_iounmap(io_addr);
  203. +}
  204. +EXPORT_SYMBOL(__arm_iounmap);
  205. diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
  206. index 94c5a0c..3cab3c6 100644
  207. --- a/arch/arm/mm/mmu.c
  208. +++ b/arch/arm/mm/mmu.c
  209. @@ -933,7 +933,7 @@ static inline void prepare_page_table(void)
  210. * Clear out all the mappings below the kernel image.
  211. */
  212. for (addr = 0; addr < MODULES_VADDR; addr += PMD_SIZE)
  213. - pmd_clear(pmd_off_k(addr));
  214. + {}//TODO: hack will break the kernel once it starts running processes: pmd_clear(pmd_off_k(addr));
  215.  
  216. #ifdef CONFIG_XIP_KERNEL
  217. /* The XIP kernel is mapped in the module area -- skip over it */
  218. @@ -1036,6 +1036,8 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
  219. create_mapping(&map);
  220. #endif
  221.  
  222. + *((unsigned char*)0x8e0003) = 'a';
  223. +
  224. /*
  225. * Create a mapping for the machine vectors at the high-vectors
  226. * location (0xffff0000). If we aren't using high-vectors, also
  227. @@ -1047,12 +1049,14 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
  228. map.type = MT_HIGH_VECTORS;
  229. create_mapping(&map);
  230.  
  231. + *((unsigned char*)0x8e0007) = 'b';
  232. if (!vectors_high()) {
  233. map.virtual = 0;
  234. map.type = MT_LOW_VECTORS;
  235. create_mapping(&map);
  236. }
  237.  
  238. + *((unsigned char*)0x8e000b) = 'c';
  239. /*
  240. * Ask the machine support to map in the statically mapped devices.
  241. */
  242. @@ -1109,21 +1113,26 @@ void __init paging_init(struct machine_desc *mdesc)
  243. {
  244. void *zero_page;
  245.  
  246. + *((unsigned char*)0x8e0002) = 'a';
  247. memblock_set_current_limit(lowmem_limit);
  248. -
  249. + *((unsigned char*)0x8e0006) = 'b';
  250. build_mem_type_table();
  251. + *((unsigned char*)0x8e000a) = 'c';
  252. prepare_page_table();
  253. + *((unsigned char*)0x8e000e) = 'd';
  254. map_lowmem();
  255. - devicemaps_init(mdesc);
  256. + *((unsigned char*)0x8e0012) = 'e';
  257. + devicemaps_init(mdesc);
  258. + *((unsigned char*)0x8e0016) = 'f';
  259. kmap_init();
  260. -
  261. + *((unsigned char*)0x8e001a) = 'g';
  262. top_pmd = pmd_off_k(0xffff0000);
  263.  
  264. /* allocate the zero page. */
  265. zero_page = early_alloc(PAGE_SIZE);
  266.  
  267. bootmem_init();
  268. -
  269. + *((unsigned char*)0x8e001e) = 'h';
  270. empty_zero_page = virt_to_page(zero_page);
  271. __flush_dcache_page(NULL, empty_zero_page);
  272. }
  273. diff --git a/init/main.c b/init/main.c
  274. index ff49a6d..9478f8b 100644
  275. --- a/init/main.c
  276. +++ b/init/main.c
  277. @@ -465,21 +465,34 @@ asmlinkage void __init start_kernel(void)
  278. char * command_line;
  279. extern const struct kernel_param __start___param[], __stop___param[];
  280.  
  281. + *((unsigned long*)0x8e000c) = 'D';
  282. +
  283. /*
  284. * Need to run as early as possible, to initialize the
  285. * lockdep hash:
  286. */
  287. lockdep_init();
  288. + *((unsigned long*)0x8e0010) = 'E';
  289. +
  290. smp_setup_processor_id();
  291. +
  292. + *((unsigned long*)0x8e0014) = 'F';
  293. +
  294. debug_objects_early_init();
  295.  
  296. + *((unsigned long*)0x8e0018) = 'G';
  297. +
  298. /*
  299. * Set up the the initial canary ASAP:
  300. */
  301. boot_init_stack_canary();
  302.  
  303. + *((unsigned long*)0x8e001C) = 'H';
  304. +
  305. cgroup_init_early();
  306.  
  307. + *((unsigned long*)0x8e0020) = 'I';
  308. +
  309. local_irq_disable();
  310. early_boot_irqs_disabled = true;
  311.  
  312. @@ -487,20 +500,32 @@ asmlinkage void __init start_kernel(void)
  313. * Interrupts are still disabled. Do necessary setups, then
  314. * enable them
  315. */
  316. + *((unsigned long*)0x8e0024) = 'J';
  317. tick_init();
  318. + *((unsigned long*)0x8e0028) = 'K';
  319. boot_cpu_init();
  320. + *((unsigned long*)0x8e002C) = 'L';
  321. page_address_init();
  322. + *((unsigned long*)0x8e0030) = 'M';
  323. printk(KERN_NOTICE "%s", linux_banner);
  324. setup_arch(&command_line);
  325. + *((unsigned long*)0x8e0034) = 'N';
  326. mm_init_owner(&init_mm, &init_task);
  327. + *((unsigned long*)0x8e0038) = 'O';
  328. mm_init_cpumask(&init_mm);
  329. + *((unsigned long*)0x8e003c) = 'P';
  330. setup_command_line(command_line);
  331. + *((unsigned long*)0x8e0040) = 'Q';
  332. setup_nr_cpu_ids();
  333. + *((unsigned long*)0x8e0044) = 'R';
  334. setup_per_cpu_areas();
  335. + *((unsigned long*)0x8e0048) = 'S';
  336. smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
  337. -
  338. + *((unsigned long*)0x8e004c) = 'T';
  339. build_all_zonelists(NULL);
  340. + *((unsigned long*)0x8e0050) = 'U';
  341. page_alloc_init();
  342. + *((unsigned long*)0x8e0054) = 'V';
  343.  
  344. printk(KERN_NOTICE "Kernel command line: %s\n", boot_command_line);
  345. parse_early_param();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement