This source file includes following definitions.
- boot
- h_usrInit
- h_usrKernelInit
- h_usrRoot
1 #include "lolevel.h"
2 #include "platform.h"
3 #include "core.h"
4
5 const char * const new_sa = &_end;
6
7
8 extern long wrs_kernel_bss_start;
9 extern long wrs_kernel_bss_end;
10 extern void createHook (void *pNewTcb);
11 extern void deleteHook (void *pTcb);
12
13
14 void boot();
15
16
17 void __attribute__((naked,noinline)) h_usrInit();
18 void __attribute__((naked,noinline)) h_usrKernelInit();
19 void __attribute__((naked,noinline)) h_usrRoot();
20
21
22
23 void boot()
24 {
25
26
27
28 long *canon_data_src = (void*)0xFFAEB320;
29 long *canon_data_dst = (void*)0x1900;
30
31 long canon_data_len = 0xEA00;
32
33 long *canon_bss_start = (void*)(0x1900+0xEA00);
34
35 long canon_bss_len = 0xA87D0 - (long)canon_bss_start;
36 long i;
37
38
39 asm volatile (
40 "MRC p15, 0, R0,c1,c0\n"
41 "ORR R0, R0, #0x1000\n"
42 "ORR R0, R0, #4\n"
43 "ORR R0, R0, #1\n"
44 "MCR p15, 0, R0,c1,c0\n"
45 :::"r0");
46
47 for(i=0;i<canon_data_len/4;i++)
48 canon_data_dst[i]=canon_data_src[i];
49
50 for(i=0;i<canon_bss_len/4;i++)
51 canon_bss_start[i]=0;
52
53 asm volatile (
54 "MRC p15, 0, R0,c1,c0\n"
55 "ORR R0, R0, #0x1000\n"
56 "BIC R0, R0, #4\n"
57 "ORR R0, R0, #1\n"
58 "MCR p15, 0, R0,c1,c0\n"
59 :::"r0");
60
61 h_usrInit();
62 }
63
64
65 void h_usrInit()
66 {
67 asm volatile (
68 "STR LR, [SP,#-4]!\n"
69 "BL sub_FF81196C\n"
70 "MOV R0, #2\n"
71 "MOV R1, R0\n"
72 "BL sub_FFACEF78\n"
73 "BL sub_FFABB650\n"
74 "BL sub_FF8111C4\n"
75 "BL sub_FF81172C\n"
76 "LDR LR, [SP],#4\n"
77 "B h_usrKernelInit\n"
78 );
79 }
80
81 void h_usrKernelInit()
82 {
83 asm volatile (
84 "STMFD SP!, {R4,LR}\n"
85 "SUB SP, SP, #8\n"
86 "BL sub_FFACF478\n"
87 "BL sub_FFAE4764\n"
88 "LDR R3, =0xF294\n"
89 "LDR R2, =0xA5400\n"
90 "LDR R1, [R3]\n"
91 "LDR R0, =0xA8190\n"
92 "MOV R3, #0x100\n"
93 "BL sub_FFADD5B4\n"
94 "LDR R3, =0xF254\n"
95 "LDR R0, =0xFB1C\n"
96 "LDR R1, [R3]\n"
97 "BL sub_FFADD5B4\n"
98 "LDR R3, =0xF310\n"
99 "LDR R0, =0xA8164\n"
100 "LDR R1, [R3]\n"
101 "BL sub_FFADD5B4\n"
102 "BL sub_FFAE92E4\n"
103 "BL sub_FF8112B0\n"
104 "MOV R4, #0\n"
105 "MOV R3, R0\n"
106 "MOV R12, #0x800\n"
107 "LDR R0, =h_usrRoot\n"
108 "MOV R1, #0x4000\n"
109 );
110
111 asm volatile (
112 "LDR R2, =new_sa\n"
113 "LDR R2, [R2]\n"
114 );
115 asm volatile (
116 "STR R12, [SP]\n"
117 "STR R4, [SP,#4]\n"
118 "BL sub_FFAE19A4\n"
119 "ADD SP, SP, #8\n"
120 "LDMFD SP!, {R4,PC}\n"
121 );
122 };
123
124
125 void h_usrRoot()
126 {
127 asm volatile (
128 "STMFD SP!, {R4,R5,LR}\n"
129 "MOV R5, R0\n"
130 "MOV R4, R1\n"
131 "BL sub_FF8119D4\n"
132 "MOV R1, R4\n"
133 "MOV R0, R5\n"
134 "BL sub_FFAD55F4\n"
135 "MOV R1, R4\n"
136 "MOV R0, R5\n"
137 "BL sub_FFAD606C\n"
138 "BL sub_FF811708\n"
139 "MOV R0, #0x32\n"
140 "BL sub_FFAD8010\n"
141 "BL sub_FF811A18\n"
142 "BL sub_FF8119F8\n"
143 "BL sub_FF811A44\n"
144 "BL sub_FFAD78D0\n"
145 "BL sub_FF8119C8\n"
146 );
147
148 _taskCreateHookAdd(createHook);
149 _taskDeleteHookAdd(deleteHook);
150
151 drv_self_hide();
152
153 asm volatile (
154 "LDMFD SP!, {R4,R5,LR}\n"
155 "B sub_FF811370\n"
156 );
157 }
158