]> git.zerfleddert.de Git - linexec-j720/blame - asm/asm.asm
Initial import of xdadeveloper linexec sources
[linexec-j720] / asm / asm.asm
CommitLineData
77a37381 1 TTL C:\pocket\test\asm.cpp\r
2\r
3 AREA |.drectve|, DRECTVE\r
4 DCB "-defaultlib:coredll.lib "\r
5 DCB "-defaultlib:corelibc.lib "\r
6\r
7 EXPORT |?do_it@@YAXXZ| ; do_it\r
8 AREA |.pdata|, PDATA\r
9|$T222| DCD |?do_it@@YAXXZ|\r
10 DCD 0x40000100\r
11 AREA |.text|, CODE\r
12|?do_it@@YAXXZ| PROC ; do_it\r
13|$M220|\r
14\r
15\r
16 mcr p15, 0, r0, c7, c5, 0 ;/* invalidate i cache & BTB */\r
17 mrc p15, 0, r0, c2, c0, 0\r
18 mov r0, r0\r
19 sub pc, pc, #4 \r
20\r
21\r
22; turn off LCD controller...\r
23; I couldn't figure out how to use armasm.exe conditional with variables\r
24; #if xscale\r
25; ldr r9, =0x44000000\r
26; ldr r8, [r9]\r
27; orr r8, r8, #0x400\r
28; str r8, [r9]\r
29\r
30; #elif strongarm\r
31 ldr r9, =0xb0100000\r
32 ldr r8, [r9]\r
33 bic r8, r8, #1\r
34 str r8, [r9]\r
35\r
36; turn off unused serial ports\r
37\r
38 mov r8, #0\r
39 ldr r9, =0x80010000\r
40 str r8, [r9, #0xC]\r
41 ldr r9, =0x80050000\r
42 str r8, [r9, #0xC]\r
43\r
44; #endif\r
45\r
46 add r9, r1, #0x100\r
47\r
48; #if xscale\r
49; ldr r5, =0xa0000100\r
50; ldr r7, =0xa0400000\r
51\r
52; #elif strongarm\r
53 ldr r5, =0xc0000100\r
54 ldr r7, =0xc0400000\r
55; #endif\r
56\r
57\r
58label ldr r8, [r9]\r
59 str r8, [r5]\r
60 add r9, r9, #4 \r
61 add r5, r5, #4 \r
62 cmp r5, r7\r
63 blt label\r
64\r
65; #if xscale\r
66; MOV r4, #0xA0000000\r
67\r
68; #elif strongarm\r
69 MOV r4, #0xc0000000\r
70; #endif\r
71\r
72 add r11,r4,#0x8000\r
73\r
74 mov r10,r2 ;machine number passed from DRAMloader\r
75\r
76 mcr p15, 0, r0, c8, c7, 0x00 ;/* invalidate I+D TLB */\r
77 mrc p15, 0, r0, c2, c0, 0\r
78 mov r0, r0\r
79 sub pc, pc, #4 \r
80\r
81; they skipped this, unnecessary? seems like we need to do this\r
82\r
83 mcr p15, 0, r0, c7, c5, 0 ;/* invalidate i cache & BTB */\r
84 \r
85 mov r0, #0\r
86 mcr p15, 0, r0, c13, c0, 0\r
87 mrc p15, 0, r0, c2, c0, 0\r
88 mov r0, r0\r
89 sub pc, pc, #4 \r
90\r
91 mov r0, #0\r
92 mov r1, r10\r
93 ldr r2, [r2, #0]\r
94 mov r2, #0\r
95\r
96; Jump into the kernel:\r
97 mov pc, r11 \r
98\r
99\r
100|$M221|\r
101 ENDP ; |?do_it@@YAXXZ|, do_it\r
102 END\r
103\r
Impressum, Datenschutz