Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 * mips 24k machine assist for routerboard rb450g (minimal for reboot)
3
 */
4
#include "mem.h"
5
#include "mips.s"
6
 
7
	NOSCHED
8
 
9
TEXT	_main(SB), $0
10
	MOVW	$setR30(SB), R30
11
	JMP	main(SB)
12
 
13
/* target for JALRHB in BARRIERS */
14
TEXT ret(SB), $-4
15
	JMP	(R22)
16
	NOP
17
 
18
TEXT	setsp(SB), $-4
19
	MOVW	R1, SP
20
	RETURN
21
 
22
TEXT	coherence(SB), $-4
23
	BARRIERS(7, R7, cohhb)
24
	SYNC
25
	EHB
26
	RETURN
27
 
28
/*
29
 *  cache manipulation
30
 */
31
 
32
/* the i and d caches may be different sizes, so clean them separately */
33
TEXT	cleancache(SB), $-4
34
	DI(10)				/* intrs off, old status -> R10 */
35
	SYNC
36
	EHB
37
 
38
	MOVW	R0, R1			/* index, not address */
39
	MOVW	$ICACHESIZE, R9
40
iccache:
41
	CACHE	PI+IWBI, (R1)		/* flush & invalidate I by index */
42
	SUBU	$CACHELINESZ, R9
43
	ADDU	$CACHELINESZ, R1
44
	BGTZ	R9, iccache
45
	NOP
46
 
47
	MOVW	R0, R1			/* index, not address */
48
	MOVW	$DCACHESIZE, R9
49
dccache:
50
	CACHE	PD+IWBI, (R1)		/* flush & invalidate D by index */
51
	SUBU	$CACHELINESZ, R9
52
	ADDU	$CACHELINESZ, R1
53
	BGTZ	R9, dccache
54
	NOP
55
 
56
	SYNC
57
	MOVW	R10, M(STATUS)
58
	JRHB(31)			/* return and clear all hazards */
59
 
60
	SCHED