aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-bf533/head.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin/mach-bf533/head.S')
-rw-r--r--arch/blackfin/mach-bf533/head.S30
1 files changed, 17 insertions, 13 deletions
diff --git a/arch/blackfin/mach-bf533/head.S b/arch/blackfin/mach-bf533/head.S
index 4db9e6240906..7e2aa8d0f44f 100644
--- a/arch/blackfin/mach-bf533/head.S
+++ b/arch/blackfin/mach-bf533/head.S
@@ -28,6 +28,7 @@
28 */ 28 */
29 29
30#include <linux/linkage.h> 30#include <linux/linkage.h>
31#include <linux/init.h>
31#include <asm/blackfin.h> 32#include <asm/blackfin.h>
32#if CONFIG_BFIN_KERNEL_CLOCK 33#if CONFIG_BFIN_KERNEL_CLOCK
33#include <asm/mach/mem_init.h> 34#include <asm/mach/mem_init.h>
@@ -45,19 +46,19 @@
45 46
46#define INITIAL_STACK 0xFFB01000 47#define INITIAL_STACK 0xFFB01000
47 48
48.text 49__INIT
49 50
50ENTRY(__start) 51ENTRY(__start)
51ENTRY(__stext)
52 /* R0: argument of command line string, passed from uboot, save it */ 52 /* R0: argument of command line string, passed from uboot, save it */
53 R7 = R0; 53 R7 = R0;
54 /* Set the SYSCFG register */ 54 /* Set the SYSCFG register:
55 * Enable Cycle Counter and Nesting Of Interrupts (3rd Bit)
56 */
55 R0 = 0x36; 57 R0 = 0x36;
56 /*Enable Cycle Counter and Nesting Of Interrupts(3rd Bit)*/
57 SYSCFG = R0; 58 SYSCFG = R0;
58 R0 = 0; 59 R0 = 0;
59 60
60 /*Clear Out All the data and pointer Registers*/ 61 /* Clear Out All the data and pointer Registers */
61 R1 = R0; 62 R1 = R0;
62 R2 = R0; 63 R2 = R0;
63 R3 = R0; 64 R3 = R0;
@@ -79,7 +80,7 @@ ENTRY(__stext)
79 L2 = r0; 80 L2 = r0;
80 L3 = r0; 81 L3 = r0;
81 82
82 /* Clear Out All the DAG Registers*/ 83 /* Clear Out All the DAG Registers */
83 B0 = r0; 84 B0 = r0;
84 B1 = r0; 85 B1 = r0;
85 B2 = r0; 86 B2 = r0;
@@ -265,6 +266,7 @@ ENTRY(__stext)
265 266
266.LWAIT_HERE: 267.LWAIT_HERE:
267 jump .LWAIT_HERE; 268 jump .LWAIT_HERE;
269ENDPROC(__start)
268 270
269ENTRY(_real_start) 271ENTRY(_real_start)
270 [ -- sp ] = reti; 272 [ -- sp ] = reti;
@@ -303,7 +305,7 @@ ENTRY(_real_start)
303.L_clear_zero: 305.L_clear_zero:
304 W[p1++] = r0; 306 W[p1++] = r0;
305 307
306/* pass the uboot arguments to the global value command line */ 308 /* pass the uboot arguments to the global value command line */
307 R0 = R7; 309 R0 = R7;
308 call _cmdline_init; 310 call _cmdline_init;
309 311
@@ -322,7 +324,7 @@ ENTRY(_real_start)
322 [p1] = r1; 324 [p1] = r1;
323 325
324 /* 326 /*
325 * load the current thread pointer and stack 327 * load the current thread pointer and stack
326 */ 328 */
327 r1.l = _init_thread_union; 329 r1.l = _init_thread_union;
328 r1.h = _init_thread_union; 330 r1.h = _init_thread_union;
@@ -333,9 +335,10 @@ ENTRY(_real_start)
333 sp = r1; 335 sp = r1;
334 usp = sp; 336 usp = sp;
335 fp = sp; 337 fp = sp;
336 call _start_kernel; 338 jump.l _start_kernel;
337.L_exit: 339ENDPROC(_real_start)
338 jump.s .L_exit; 340
341__FINIT
339 342
340.section .l1.text 343.section .l1.text
341#if CONFIG_BFIN_KERNEL_CLOCK 344#if CONFIG_BFIN_KERNEL_CLOCK
@@ -439,12 +442,13 @@ ENTRY(_start_dma_code)
439 442
440 p0.h = hi(SIC_IWR); 443 p0.h = hi(SIC_IWR);
441 p0.l = lo(SIC_IWR); 444 p0.l = lo(SIC_IWR);
442 r0.l = lo(IWR_ENABLE_ALL) 445 r0.l = lo(IWR_ENABLE_ALL);
443 r0.h = hi(IWR_ENABLE_ALL) 446 r0.h = hi(IWR_ENABLE_ALL);
444 [p0] = r0; 447 [p0] = r0;
445 SSYNC; 448 SSYNC;
446 449
447 RTS; 450 RTS;
451ENDPROC(_start_dma_code)
448#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 452#endif /* CONFIG_BFIN_KERNEL_CLOCK */
449 453
450ENTRY(_bfin_reset) 454ENTRY(_bfin_reset)