microblaze.inc
3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
* File : microblaze.inc
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006, RT-Thread Development Team
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
*
* Change Logs:
* Date Author Notes
* 2011-12-17 nl1031 first implementation for MicroBlaze.
*
*/
.equ STACK_RMSR, 0x00
.equ STACK_R02, 0x04
.equ STACK_R03, 0x08
.equ STACK_R04, 0x0C
.equ STACK_R05, 0x10
.equ STACK_R06, 0x14
.equ STACK_R07, 0x18
.equ STACK_R08, 0x1C
.equ STACK_R09, 0x20
.equ STACK_R10, 0x24
.equ STACK_R11, 0x28
.equ STACK_R12, 0x2C
.equ STACK_R13, 0x30
.equ STACK_R14, 0x34
.equ STACK_R15, 0x38
.equ STACK_R17, 0x3C
.equ STACK_R18, 0x40
.equ STACK_R19, 0x44
.equ STACK_R20, 0x48
.equ STACK_R21, 0x4C
.equ STACK_R22, 0x50
.equ STACK_R23, 0x54
.equ STACK_R24, 0x58
.equ STACK_R25, 0x5C
.equ STACK_R26, 0x60
.equ STACK_R27, 0x64
.equ STACK_R28, 0x68
.equ STACK_R29, 0x6C
.equ STACK_R30, 0x70
.equ STACK_R31, 0x74
.equ STACK_SIZE, 0x78
.equ IE_BIT, 0x02
.macro PUSH_ALL
ADDIK r1, r1, -STACK_SIZE
SWI r2, r1, STACK_R02
SWI r3, r1, STACK_R03
SWI r4, r1, STACK_R04
SWI r5, r1, STACK_R05
SWI r6, r1, STACK_R06
SWI r7, r1, STACK_R07
SWI r8, r1, STACK_R08
SWI r9, r1, STACK_R09
SWI r10, r1, STACK_R10
SWI r11, r1, STACK_R11
SWI r12, r1, STACK_R12
SWI r13, r1, STACK_R13
SWI r14, r1, STACK_R14
SWI r15, r1, STACK_R15
SWI r17, r1, STACK_R17
SWI r18, r1, STACK_R18
SWI r19, r1, STACK_R19
SWI r20, r1, STACK_R20
SWI r21, r1, STACK_R21
SWI r22, r1, STACK_R22
SWI r23, r1, STACK_R23
SWI r24, r1, STACK_R24
SWI r25, r1, STACK_R25
SWI r26, r1, STACK_R26
SWI r27, r1, STACK_R27
SWI r28, r1, STACK_R28
SWI r29, r1, STACK_R29
SWI r30, r1, STACK_R30
SWI r31, r1, STACK_R31
.endm
.macro POP_ALL
LWI r31, r1, STACK_R31
LWI r30, r1, STACK_R30
LWI r29, r1, STACK_R29
LWI r28, r1, STACK_R28
LWI r27, r1, STACK_R27
LWI r26, r1, STACK_R26
LWI r25, r1, STACK_R25
LWI r24, r1, STACK_R24
LWI r23, r1, STACK_R23
LWI r22, r1, STACK_R22
LWI r21, r1, STACK_R21
LWI r20, r1, STACK_R20
LWI r19, r1, STACK_R19
LWI r18, r1, STACK_R18
LWI r17, r1, STACK_R17
LWI r15, r1, STACK_R15
LWI r14, r1, STACK_R14
LWI r13, r1, STACK_R13
LWI r12, r1, STACK_R12
LWI r11, r1, STACK_R11
LWI r10, r1, STACK_R10
LWI r9, r1, STACK_R09
LWI r8, r1, STACK_R08
LWI r7, r1, STACK_R07
LWI r6, r1, STACK_R06
LWI r5, r1, STACK_R05
LWI r4, r1, STACK_R04
LWI r3, r1, STACK_R03
LWI r2, r1, STACK_R02
.endm