]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_R4_RM48_TMS570_CCS5/startup/sys_core.asm
Complete RM4x and TMS570 demo.
[freertos] / FreeRTOS / Demo / CORTEX_R4_RM48_TMS570_CCS5 / startup / sys_core.asm
1 ;-------------------------------------------------------------------------------\r
2 ; sys_core.asm\r
3 ;\r
4 ; (c) Texas Instruments 2009, All rights reserved.\r
5 ;\r
6 \r
7         .text\r
8         .arm\r
9 \r
10 ;-------------------------------------------------------------------------------\r
11 ; Initialize CPU Registers\r
12 \r
13         .def     _coreInitRegisters\r
14 \r
15 _coreInitRegisters:\r
16         mov   r0,         lr\r
17         mov   r1,         #0x0000\r
18         mov   r2,         #0x0000\r
19         mov   r3,         #0x0000\r
20         mov   r4,         #0x0000\r
21         mov   r5,         #0x0000\r
22         mov   r6,         #0x0000\r
23         mov   r7,         #0x0000\r
24         mov   r8,         #0x0000\r
25         mov   r9,         #0x0000\r
26         mov   r10,        #0x0000\r
27         mov   r11,        #0x0000\r
28         mov   r12,        #0x0000\r
29         mov   r13,        #0x0000\r
30         cps   #0x11  \r
31         mov   lr,         r0\r
32         mov   r8,         #0x0000\r
33         mov   r9,         #0x0000\r
34         mov   r10,        #0x0000\r
35         mov   r11,        #0x0000\r
36         mov   r12,        #0x0000\r
37         mov   r13,        #0x0000\r
38         cps   #0x12  \r
39         mov   r13,        #0x0000\r
40         mov   lr,         r0\r
41         cps   #0x17\r
42         mov   r13,        #0x0000\r
43         mov   lr,         r0\r
44         cps   #0x1B\r
45         mov   r13,        #0x0000\r
46         mov   lr,         r0\r
47         cps   #0x13\r
48         mov   r13,        #0x0000\r
49 \r
50         .if (__TI_VFPV3D16_SUPPORT__)\r
51         fmdrr d0,        r1,     r1\r
52         fmdrr d1,        r1,     r1\r
53         fmdrr d2,        r1,     r1\r
54         fmdrr d3,        r1,     r1\r
55         fmdrr d4,        r1,     r1\r
56         fmdrr d5,        r1,     r1\r
57         fmdrr d6,        r1,     r1\r
58         fmdrr d7,        r1,     r1\r
59         fmdrr d8,        r1,     r1\r
60         fmdrr d9,        r1,     r1\r
61         fmdrr d10,       r1,     r1\r
62         fmdrr d11,       r1,     r1\r
63         fmdrr d12,       r1,     r1\r
64         fmdrr d13,       r1,     r1\r
65         fmdrr d14,       r1,     r1\r
66         fmdrr d15,       r1,     r1\r
67     .endif\r
68 \r
69         bl    $+4\r
70         bl    $+4\r
71         bl    $+4\r
72         bl    $+4\r
73         bx    r0\r
74 \r
75 \r
76 ;-------------------------------------------------------------------------------\r
77 ; Initialize Stack Pointers\r
78 \r
79         .def     _coreInitStackPointer\r
80 \r
81 _coreInitStackPointer:\r
82         msr   cpsr_c,   #0xD1\r
83         ldr   sp,       fiqSp\r
84         msr   cpsr_c,   #0xD2\r
85         ldr   sp,       irqSp\r
86         msr   cpsr_c,   #0xD7\r
87         ldr   sp,       abortSp\r
88         msr   cpsr_c,   #0xDB\r
89         ldr   sp,       undefSp\r
90         msr   cpsr_c,   #0xDF\r
91         ldr   sp,       userSp\r
92         msr   cpsr_c,   #0xD3\r
93         ldr   sp,       svcSp\r
94         bx    lr\r
95 \r
96 userSp  .word 0x00000000+0x00000000\r
97 svcSp   .word 0x08000000+0x00000100\r
98 fiqSp   .word 0x00000000+0x00000000\r
99 irqSp   .word 0x08000100+0x00000100\r
100 abortSp .word 0x00000000+0x00000000\r
101 undefSp .word 0x00000000+0x00000000\r
102 \r
103 \r
104 ;-------------------------------------------------------------------------------\r
105 ; Enable VFP Unit\r
106 \r
107         .def     _coreEnableVfp\r
108 \r
109 _coreEnableVfp:\r
110         .if (__TI_VFPV3D16_SUPPORT__)\r
111         mrc   p15, #0x00, r0, c1, c0, #0x02\r
112         orr   r0, r0, #0xF00000\r
113         mcr   p15, #0x00, r0, c1, c0, #0x02\r
114         mov   r0, #0x40000000\r
115         fmxr  fpexc, r0\r
116         .endif\r
117         bx    lr\r
118 \r
119 \r
120 ;-------------------------------------------------------------------------------\r
121 ; Enable Event Bus Export\r
122 \r
123         .def  _coreEnableEventBusExport\r
124 \r
125 _coreEnableEventBusExport:\r
126         mrc   p15, #0x00, r0, c9, c12, #0x00\r
127         orr   r0,  r0, #0x10\r
128         mcr   p15, #0x00, r0, c9, c12, #0x00\r
129         bx    lr\r
130 \r
131 ;-------------------------------------------------------------------------------\r
132 ; Enable RAM ECC Support\r
133 \r
134         .def  _coreEnableRamEcc\r
135 \r
136 _coreEnableRamEcc:\r
137         mrc   p15, #0x00, r0, c1, c0,  #0x01\r
138         orr   r0,  r0, #0x0C000000\r
139         mcr   p15, #0x00, r0, c1, c0,  #0x01\r
140         bx    lr\r
141 \r
142 ;-------------------------------------------------------------------------------\r
143 ; Enable Flash ECC Support\r
144 \r
145         .def  _coreEnableFlashEcc\r
146 \r
147 _coreEnableFlashEcc:\r
148         mrc   p15, #0x00, r0, c1, c0,  #0x01\r
149         orr   r0,  r0, #0x02000000\r
150         mcr   p15, #0x00, r0, c1, c0,  #0x01\r
151         bx    lr\r
152 \r
153 ;-------------------------------------------------------------------------------\r
154 ; Enable Offset via Vic controller\r
155 \r
156         .def  _coreEnableIrqVicOffset\r
157 \r
158 _coreEnableIrqVicOffset:\r
159         mrc   p15, #0, r0, c1, c0,  #0\r
160         orr   r0,  r0, #0x01000000\r
161         mcr   p15, #0, r0, c1, c0,  #0\r
162         bx    lr\r
163     \r
164 ;-------------------------------------------------------------------------------\r
165 \r