• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/arch/score/include/asm/
1#ifndef _ASM_SCORE_ASMMACRO_H
2#define _ASM_SCORE_ASMMACRO_H
3
4#include <asm/asm-offsets.h>
5
6#ifdef __ASSEMBLY__
7
8.macro	SAVE_ALL
9	mfcr	r30, cr0
10	mv	r31, r0
11	nop
12	/* if UMs == 1, change stack. */
13	slli.c	r30, r30, 28
14	bpl	1f
15	la	r31, kernelsp
16	lw	r31, [r31]
171:
18	mv	r30, r0
19	addri	r0, r31, -PT_SIZE
20
21	sw	r30, [r0, PT_R0]
22	.set	r1
23	sw	r1, [r0, PT_R1]
24	.set	nor1
25	sw	r2, [r0, PT_R2]
26	sw	r3, [r0, PT_R3]
27	sw	r4, [r0, PT_R4]
28	sw	r5, [r0, PT_R5]
29	sw	r6, [r0, PT_R6]
30	sw	r7, [r0, PT_R7]
31
32	sw	r8, [r0, PT_R8]
33	sw	r9, [r0, PT_R9]
34	sw	r10, [r0, PT_R10]
35	sw	r11, [r0, PT_R11]
36	sw	r12, [r0, PT_R12]
37	sw	r13, [r0, PT_R13]
38	sw	r14, [r0, PT_R14]
39	sw	r15, [r0, PT_R15]
40
41	sw	r16, [r0, PT_R16]
42	sw	r17, [r0, PT_R17]
43	sw	r18, [r0, PT_R18]
44	sw	r19, [r0, PT_R19]
45	sw	r20, [r0, PT_R20]
46	sw	r21, [r0, PT_R21]
47	sw	r22, [r0, PT_R22]
48	sw	r23, [r0, PT_R23]
49
50	sw	r24, [r0, PT_R24]
51	sw	r25, [r0, PT_R25]
52	sw	r25, [r0, PT_R25]
53	sw	r26, [r0, PT_R26]
54	sw	r27, [r0, PT_R27]
55
56	sw	r28, [r0, PT_R28]
57	sw	r29, [r0, PT_R29]
58	orri	r28, r0, 0x1fff
59	li	r31, 0x00001fff
60	xor	r28, r28, r31
61
62	mfcehl	r30, r31
63	sw	r30, [r0, PT_CEH]
64	sw	r31, [r0, PT_CEL]
65
66	mfcr	r31, cr0
67	sw	r31, [r0, PT_PSR]
68
69	mfcr	r31, cr1
70	sw	r31, [r0, PT_CONDITION]
71
72	mfcr	r31, cr2
73	sw	r31, [r0, PT_ECR]
74
75	mfcr	r31, cr5
76	srli	r31, r31, 1
77	slli	r31, r31, 1
78	sw	r31, [r0, PT_EPC]
79.endm
80
81.macro	RESTORE_ALL_AND_RET
82	mfcr	r30, cr0
83	srli	r30, r30, 1
84	slli	r30, r30, 1
85	mtcr	r30, cr0
86	nop
87	nop
88	nop
89	nop
90	nop
91
92	.set	r1
93	ldis	r1, 0x00ff
94	and	r30, r30, r1
95	not	r1, r1
96	lw	r31, [r0, PT_PSR]
97	and	r31, r31, r1
98	.set	nor1
99	or	r31, r31, r30
100	mtcr	r31, cr0
101	nop
102	nop
103	nop
104	nop
105	nop
106
107	lw	r30, [r0, PT_CONDITION]
108	mtcr	r30, cr1
109	nop
110	nop
111	nop
112	nop
113	nop
114
115	lw	r30, [r0, PT_CEH]
116	lw	r31, [r0, PT_CEL]
117	mtcehl	r30, r31
118
119	.set	r1
120	lw	r1, [r0, PT_R1]
121	.set	nor1
122	lw	r2, [r0, PT_R2]
123	lw	r3, [r0, PT_R3]
124	lw	r4, [r0, PT_R4]
125	lw	r5, [r0, PT_R5]
126	lw	r6, [r0, PT_R6]
127	lw	r7, [r0, PT_R7]
128
129	lw	r8, [r0, PT_R8]
130	lw	r9, [r0, PT_R9]
131	lw	r10, [r0, PT_R10]
132	lw	r11, [r0, PT_R11]
133	lw	r12, [r0, PT_R12]
134	lw	r13, [r0, PT_R13]
135	lw	r14, [r0, PT_R14]
136	lw	r15, [r0, PT_R15]
137
138	lw	r16, [r0, PT_R16]
139	lw	r17, [r0, PT_R17]
140	lw	r18, [r0, PT_R18]
141	lw	r19, [r0, PT_R19]
142	lw	r20, [r0, PT_R20]
143	lw	r21, [r0, PT_R21]
144	lw	r22, [r0, PT_R22]
145	lw	r23, [r0, PT_R23]
146
147	lw	r24, [r0, PT_R24]
148	lw	r25, [r0, PT_R25]
149	lw	r26, [r0, PT_R26]
150	lw	r27, [r0, PT_R27]
151	lw	r28, [r0, PT_R28]
152	lw	r29, [r0, PT_R29]
153
154	lw	r30, [r0, PT_EPC]
155	lw	r0, [r0, PT_R0]
156	mtcr	r30, cr5
157	rte
158.endm
159
160#endif /* __ASSEMBLY__ */
161#endif /* _ASM_SCORE_ASMMACRO_H */
162