Subversion Repositories freemyipod

Rev

Rev 704 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 704 Rev 732
Line 39... Line 39...
39
	b	_start
39
	b	_start
40
 
40
 
41
.section .initcode,"ax",%progbits
41
.section .initcode,"ax",%progbits
42
.global _start
42
.global _start
43
_start:
43
_start:
-
 
44
	mrc	p15, 0, r0,c1,c0
-
 
45
	bic	r0, r0, #0x200
-
 
46
	orr	r0, r0, #0x100
-
 
47
	mcr	p15, 0, r0,c1,c0
-
 
48
	mov	r0, #0x7fffffff
-
 
49
	mcr	p15, 0, r0,c3,c0
-
 
50
	mov	r0, #0x22000000
-
 
51
	orr	r1, r0, #0x00000100
-
 
52
	orr	r0, r0, #0x0003c000
-
 
53
	orr	r1, r1, #0x000000fe
-
 
54
	add	r2, r0, #0x200
-
 
55
	mov	r3, #0
-
 
56
	str	r1, [r0], #4
-
 
57
.mmuloop1:
-
 
58
	str	r3, [r0], #4
-
 
59
	cmp	r0, r2
-
 
60
	bne	.mmuloop1
44
	ldr	r0, =0x00450878
61
	add	r0, r0, #0x080
-
 
62
	add	r2, r0, #0x580
-
 
63
.mmuloop2:
-
 
64
	str	r3, [r0], #4
-
 
65
	cmp	r0, r2
-
 
66
	bne	.mmuloop2
-
 
67
	add	r0, r0, #0x4
-
 
68
	add	r2, r0, #0x7c
-
 
69
.mmuloop3:
-
 
70
	str	r3, [r0], #4
-
 
71
	cmp	r0, r2
-
 
72
	bne	.mmuloop3
-
 
73
	add	r0, r0, #0x4
-
 
74
	add	r2, r0, #0x500
-
 
75
	add	r2, r2, #0x7c
-
 
76
.mmuloop4:
-
 
77
	str	r3, [r0], #4
-
 
78
	cmp	r0, r2
-
 
79
	bne	.mmuloop4
-
 
80
	add	r0, r0, #0x200
-
 
81
	add	r2, r0, #0x3000
-
 
82
.mmuloop5:
-
 
83
	str	r3, [r0], #4
-
 
84
	cmp	r0, r2
-
 
85
	bne	.mmuloop5
-
 
86
	mrc	p15, 0, r0,c1,c0
-
 
87
	orr	r0, r0, #5
45
	mcr	p15, 0, r0,c1,c0,0
88
	mcr	p15, 0, r0,c1,c0
46
	ldr	r0, =_sramsource
89
	ldr	r0, =_sramsource
47
	ldr	r1, =_sramstart
90
	ldr	r1, =_sramstart
48
	ldr	r2, =_sramend
91
	ldr	r2, =_sramend
49
.copysram:
92
.copysram:
50
	cmp	r2, r1
93
	cmp	r2, r1
Line 70... Line 113...
70
	ldr	r1, =_bssend
113
	ldr	r1, =_bssend
71
.clearbss:
114
.clearbss:
72
	cmp	r1, r0
115
	cmp	r1, r0
73
	strhi	r2, [r0], #4
116
	strhi	r2, [r0], #4
74
	bhi	.clearbss
117
	bhi	.clearbss
75
	ldr	r1, =0x38200000
-
 
76
	ldr	r0, [r1]
-
 
77
	orr	r0, r0, #1
-
 
78
	bic	r0, r0, #0x10000
-
 
79
	str	r0, [r1]
-
 
80
	mov	r0, #0
118
	mov	r0, #0
81
	mcr	p15, 0, r0,c7,c5,0
119
	mcr	p15, 0, r0,c7,c10,0 @ clean data cache
-
 
120
	mcr	p15, 0, r0,c7,c10,4 @ drain write buffer
-
 
121
	mcr	p15, 0, r0,c7,c5,0  @ invalidate instruction cache
-
 
122
	mcr	p15, 0, r0,c7,c5,4  @ flush prefetch buffer
82
	add	r1, r1, #0x00c00000
123
	ldr	r1, =0x38e00000
83
	add	r2, r1, #0x00001000
124
	add	r2, r1, #0x00001000
84
	add	r3, r1, #0x00002000
125
	add	r3, r1, #0x00002000
85
	sub	r4, r0, #1
126
	mov	r4, #-1
86
	str	r4, [r1,#0x14]
127
	str	r4, [r1,#0x14]
87
	str	r4, [r2,#0x14]
128
	str	r4, [r2,#0x14]
88
	str	r4, [r1,#0xf00]
129
	str	r4, [r1,#0xf00]
89
	str	r4, [r2,#0xf00]
130
	str	r4, [r2,#0xf00]
90
	str	r4, [r3,#0x08]
131
	str	r4, [r3,#0x08]
91
	str	r4, [r3,#0x0c]
132
	str	r4, [r3,#0x0c]
92
	str	r0, [r1,#0x14]
-
 
93
	str	r0, [r2,#0x14]
-
 
94
	mov	r0, #0
-
 
95
	ldr	r1, =0x3c500000
-
 
96
	str	r0, [r1,#0x48]
-
 
97
	str	r0, [r1,#0x4c]
-
 
98
	msr	cpsr_c, #0xd2
133
	msr	cpsr_c, #0xd2
99
	ldr	sp, =_irqstackend
134
	ldr	sp, =_irqstackend
100
	msr	cpsr_c, #0xd7
135
	msr	cpsr_c, #0xd7
101
	ldr	sp, =_abortstackend
136
	ldr	sp, =_abortstackend
102
	msr	cpsr_c, #0xdb
137
	msr	cpsr_c, #0xdb
Line 125... Line 160...
125
	mov	r0, #0x100000
160
	mov	r0, #0x100000
126
	mov	r1, #0x3c800000
161
	mov	r1, #0x3c800000
127
	str	r0, [r1]
162
	str	r0, [r1]
128
hang:
163
hang:
129
	msr	cpsr_c, #0xd3
164
	msr	cpsr_c, #0xd3
-
 
165
	mov	r0, #0
130
	mcr	p15, 0, r0,c7,c0,4
166
	mcr	p15, 0, r0,c7,c0,4
131
	b	hang
167
	b	hang
132
.size reset, .-reset
168
.size reset, .-reset
133
.size hang, .-hang
169
.size hang, .-hang
134
 
170
 
Line 190... Line 226...
190
	msr	cpsr_c, r4
226
	msr	cpsr_c, r4
191
	stmia	sp!, {r0-r3}
227
	stmia	sp!, {r0-r3}
192
	sub	sp, sp, #0x44
228
	sub	sp, sp, #0x44
193
	mov	r0, #0
229
	mov	r0, #0
194
	adr	r1, prefetch_abort_text
230
	adr	r1, prefetch_abort_text
195
	mrc	p15, 0, r3,c5,c0,1
231
	mrc	p15, 0, r3,c5,c0
196
	mov	r4, r3,lsr#4
232
	mov	r4, r3,lsr#4
197
	and	r4, r4, #0xf
233
	and	r4, r4, #0xf
198
	and	r5, r3, #0xf
234
	and	r5, r3, #0xf
199
	stmfd	sp!, {r4-r5}
235
	stmfd	sp!, {r4-r5}
200
	b	panicf
236
	b	panicf
Line 290... Line 326...
290
 
326
 
291
.global read_usec_timer
327
.global read_usec_timer
292
.type read_usec_timer, %function
328
.type read_usec_timer, %function
293
read_usec_timer:
329
read_usec_timer:
294
	ldr	r0, val_3c700000
330
	ldr	r0, val_3c700000
295
	ldr	r1, [r0,#0x80]
-
 
296
	ldr	r0, [r0,#0x84]
331
	ldr	r0, [r0,#0xb4]
297
	mov	r0, r0,lsr#5
-
 
298
	orr	r0, r0, r1,lsl#27
-
 
299
	add	r0, r0, r0,asr#2
-
 
300
	add	r0, r0, r0,asr#6
-
 
301
	bx	lr
332
	bx	lr
302
.size read_usec_timer, .-read_usec_timer
333
.size read_usec_timer, .-read_usec_timer
303
 
334
 
304
val_3c700000:
335
val_3c700000:
305
	.word	0x3c700000
336
	.word	0x3c700000