]>
Commit | Line | Data |
---|---|---|
c1a144d7 AJ |
1 | ; |
2 | ; Port on Texas Instruments TMS320C6x architecture | |
3 | ; | |
4 | ; Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | |
5 | ; Author: Aurelien Jacquiot ([email protected]) | |
6 | ; | |
7 | ; This program is free software; you can redistribute it and/or modify | |
8 | ; it under the terms of the GNU General Public License version 2 as | |
9 | ; published by the Free Software Foundation. | |
10 | ; | |
11 | #include <linux/linkage.h> | |
12 | #include <linux/of_fdt.h> | |
13 | #include <asm/asm-offsets.h> | |
14 | ||
15 | __HEAD | |
16 | ENTRY(_c_int00) | |
17 | ;; Save magic and pointer | |
18 | MV .S1 A4,A10 | |
19 | MV .S2 B4,B10 | |
20 | MVKL .S2 __bss_start,B5 | |
21 | MVKH .S2 __bss_start,B5 | |
22 | MVKL .S2 __bss_stop,B6 | |
23 | MVKH .S2 __bss_stop,B6 | |
24 | SUB .L2 B6,B5,B6 ; bss size | |
25 | ||
26 | ;; Set the stack pointer | |
27 | MVKL .S2 current_ksp,B0 | |
28 | MVKH .S2 current_ksp,B0 | |
29 | LDW .D2T2 *B0,B15 | |
30 | ||
31 | ;; clear bss | |
32 | SHR .S2 B6,3,B0 ; number of dwords to clear | |
33 | ZERO .L2 B13 | |
34 | ZERO .L2 B12 | |
35 | bss_loop: | |
36 | BDEC .S2 bss_loop,B0 | |
37 | NOP 3 | |
38 | CMPLT .L2 B0,0,B1 | |
39 | [!B1] STDW .D2T2 B13:B12,*B5++[1] | |
40 | ||
41 | NOP 4 | |
42 | AND .D2 ~7,B15,B15 | |
43 | ||
44 | ;; Clear GIE and PGIE | |
45 | MVC .S2 CSR,B2 | |
46 | CLR .S2 B2,0,1,B2 | |
47 | MVC .S2 B2,CSR | |
48 | MVC .S2 TSR,B2 | |
49 | CLR .S2 B2,0,1,B2 | |
50 | MVC .S2 B2,TSR | |
51 | MVC .S2 ITSR,B2 | |
52 | CLR .S2 B2,0,1,B2 | |
53 | MVC .S2 B2,ITSR | |
54 | MVC .S2 NTSR,B2 | |
55 | CLR .S2 B2,0,1,B2 | |
56 | MVC .S2 B2,NTSR | |
57 | ||
58 | ;; pass DTB pointer to machine_init (or zero if none) | |
59 | MVKL .S1 OF_DT_HEADER,A0 | |
60 | MVKH .S1 OF_DT_HEADER,A0 | |
61 | CMPEQ .L1 A10,A0,A0 | |
62 | [A0] MV .S1X B10,A4 | |
63 | [!A0] MVK .S1 0,A4 | |
64 | ||
65 | #ifdef CONFIG_C6X_BIG_KERNEL | |
66 | MVKL .S1 machine_init,A0 | |
67 | MVKH .S1 machine_init,A0 | |
68 | B .S2X A0 | |
69 | ADDKPC .S2 0f,B3,4 | |
70 | 0: | |
71 | #else | |
72 | CALLP .S2 machine_init,B3 | |
73 | #endif | |
74 | ||
75 | ;; Jump to Linux init | |
76 | #ifdef CONFIG_C6X_BIG_KERNEL | |
77 | MVKL .S1 start_kernel,A0 | |
78 | MVKH .S1 start_kernel,A0 | |
79 | B .S2X A0 | |
80 | #else | |
81 | B .S2 start_kernel | |
82 | #endif | |
83 | NOP 5 | |
84 | L1: BNOP .S2 L1,5 |