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 long *canon_data_src = (void*)0xFFB95410;
27 long *canon_data_dst = (void*)0x1900;
28 long canon_data_len = 0xCBF0;
29 long *canon_bss_start = (void*)0xE4F0;
30 long canon_bss_len = 0xBF650 - 0xE4F0;
31 long i;
32
33 asm volatile (
34 "MRC p15, 0, R0,c1,c0\n"
35 "ORR R0, R0, #0x1000\n"
36 "ORR R0, R0, #4\n"
37 "ORR R0, R0, #1\n"
38 "MCR p15, 0, R0,c1,c0\n"
39 :::"r0");
40
41 for(i=0;i<canon_data_len/4;i++)
42 canon_data_dst[i]=canon_data_src[i];
43
44 for(i=0;i<canon_bss_len/4;i++)
45 canon_bss_start[i]=0;
46
47 asm volatile (
48 "MRC p15, 0, R0,c1,c0\n"
49 "ORR R0, R0, #0x1000\n"
50 "BIC R0, R0, #4\n"
51 "ORR R0, R0, #1\n"
52 "MCR p15, 0, R0,c1,c0\n"
53 :::"r0");
54
55 h_usrInit();
56 }
57
58
59
60
61 void h_usrInit()
62 {
63 asm volatile (
64 "STR LR, [SP,#-4]!\n"
65 "BL sub_FF811968\n"
66 "MOV R0, #2\n"
67 "MOV R1, R0\n"
68 "BL sub_FF924148\n"
69 "BL sub_FF918240\n"
70 "BL sub_FF8111C4\n"
71 "BL sub_FF811728\n"
72 "LDR LR, [SP],#4\n"
73 "B h_usrKernelInit\n"
74 );
75 }
76
77
78
79
80 void h_usrKernelInit()
81 {
82 asm volatile (
83 "STMFD SP!, {R4,LR}\n"
84 "SUB SP, SP, #8\n"
85 "BL sub_FF924648\n"
86 "BL sub_FF934774\n"
87 "LDR R3, =0x5AD0\n"
88 "LDR R2, =0xBC6C0\n"
89 "LDR R1, [R3]\n"
90 "LDR R0, =0xBD310\n"
91 "MOV R3, #0x100\n"
92 "BL sub_FF930364\n"
93 "LDR R3, =0x5A90\n"
94 "LDR R0, =0x5E30\n"
95 "LDR R1, [R3]\n"
96 "BL sub_FF930364\n"
97 "LDR R3, =0x5B4C\n"
98 "LDR R0, =0xBD2E4\n"
99 "LDR R1, [R3]\n"
100 "BL sub_FF930364\n"
101 "BL sub_FF938B30\n"
102 "BL sub_FF8112AC\n"
103 "MOV R4, #0\n"
104 "MOV R3, R0\n"
105 "MOV R12, #0x800\n"
106 "LDR R0, =h_usrRoot\n"
107 "MOV R1, #0x4000\n"
108 );
109
110 asm volatile (
111 "LDR R2, =new_sa\n"
112 "LDR R2, [R2]\n"
113 );
114 asm volatile (
115 "STR R12, [SP]\n"
116 "STR R4, [SP,#4]\n"
117 "BL sub_FF9319B4\n"
118 "ADD SP, SP, #8\n"
119 "LDMFD SP!, {R4,PC}\n"
120 );
121 }
122
123
124
125
126 void h_usrRoot()
127 {
128 asm volatile (
129 "STMFD SP!, {R4,R5,LR}\n"
130 "MOV R5, R0\n"
131 "MOV R4, R1\n"
132 "BL sub_FF8119D0\n"
133 "MOV R1, R4\n"
134 "MOV R0, R5\n"
135 "BL sub_FF929100\n"
136 "MOV R1, R4\n"
137 "MOV R0, R5\n"
138 "BL sub_FF929B78\n"
139 "BL sub_FF8117E8\n"
140 "BL sub_FF811704\n"
141 "BL sub_FF811A0C\n"
142 "BL sub_FF8119F0\n"
143 "BL sub_FF811A38\n"
144 "BL sub_FF8119C4\n"
145 );
146
147 _taskCreateHookAdd(createHook);
148 _taskDeleteHookAdd(deleteHook);
149
150 drv_self_hide();
151
152 asm volatile (
153 "LDMFD SP!, {R4,R5,LR}\n"
154 "B sub_FF81136C\n"
155 );
156 }
157