diff options
author | Michal Simek <monstr@monstr.eu> | 2010-02-04 05:42:24 -0500 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2010-03-11 08:08:55 -0500 |
commit | 137d0795a72786fa33e6900cb2ac2eae81f4b6ee (patch) | |
tree | 71b95d3a4e4d926b19b5ef28822eb784571475b7 /arch/microblaze/kernel/head.S | |
parent | d79f3b06a9e40b382bd5d5ae8dea9b3210eda9ce (diff) |
microblaze: Change temp register for cmdline
For copy was used r7 register when CONFIG_CMDLINE_BOOL option
is enabled. But r7 stores pointer to fdt that's why machine_early_init
not detect compiled-in DTB.
I also moved kernel PID setup to have TLB init in one block
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze/kernel/head.S')
-rw-r--r-- | arch/microblaze/kernel/head.S | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/microblaze/kernel/head.S b/arch/microblaze/kernel/head.S index 30916193fcc7..cb7815cfe5ab 100644 --- a/arch/microblaze/kernel/head.S +++ b/arch/microblaze/kernel/head.S | |||
@@ -99,8 +99,8 @@ no_fdt_arg: | |||
99 | tophys(r4,r4) /* convert to phys address */ | 99 | tophys(r4,r4) /* convert to phys address */ |
100 | ori r3, r0, COMMAND_LINE_SIZE - 1 /* number of loops */ | 100 | ori r3, r0, COMMAND_LINE_SIZE - 1 /* number of loops */ |
101 | _copy_command_line: | 101 | _copy_command_line: |
102 | lbu r7, r5, r6 /* r7=r5+r6 - r5 contain pointer to command line */ | 102 | lbu r2, r5, r6 /* r7=r5+r6 - r5 contain pointer to command line */ |
103 | sb r7, r4, r6 /* addr[r4+r6]= r7*/ | 103 | sb r2, r4, r6 /* addr[r4+r6]= r7*/ |
104 | addik r6, r6, 1 /* increment counting */ | 104 | addik r6, r6, 1 /* increment counting */ |
105 | bgtid r3, _copy_command_line /* loop for all entries */ | 105 | bgtid r3, _copy_command_line /* loop for all entries */ |
106 | addik r3, r3, -1 /* descrement loop */ | 106 | addik r3, r3, -1 /* descrement loop */ |
@@ -136,6 +136,11 @@ _invalidate: | |||
136 | addik r3, r3, -1 | 136 | addik r3, r3, -1 |
137 | /* sync */ | 137 | /* sync */ |
138 | 138 | ||
139 | /* Setup the kernel PID */ | ||
140 | mts rpid,r0 /* Load the kernel PID */ | ||
141 | nop | ||
142 | bri 4 | ||
143 | |||
139 | /* | 144 | /* |
140 | * We should still be executing code at physical address area | 145 | * We should still be executing code at physical address area |
141 | * RAM_BASEADDR at this point. However, kernel code is at | 146 | * RAM_BASEADDR at this point. However, kernel code is at |
@@ -146,10 +151,6 @@ _invalidate: | |||
146 | addik r3,r0, CONFIG_KERNEL_START /* Load the kernel virtual address */ | 151 | addik r3,r0, CONFIG_KERNEL_START /* Load the kernel virtual address */ |
147 | tophys(r4,r3) /* Load the kernel physical address */ | 152 | tophys(r4,r3) /* Load the kernel physical address */ |
148 | 153 | ||
149 | mts rpid,r0 /* Load the kernel PID */ | ||
150 | nop | ||
151 | bri 4 | ||
152 | |||
153 | /* | 154 | /* |
154 | * Configure and load two entries into TLB slots 0 and 1. | 155 | * Configure and load two entries into TLB slots 0 and 1. |
155 | * In case we are pinning TLBs, these are reserved in by the | 156 | * In case we are pinning TLBs, these are reserved in by the |