source: svn/trunk/newcon3bcm2_21bu/dta/src/ucos_ii/bcm_mips.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 6.7 KB
Line 
1/***************************************************************
2**
3** Broadcom Corp. Confidential
4** Copyright 1998-2000 Broadcom Corp. All Rights Reserved.
5**
6** THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED
7** SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM.
8** YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT
9** SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
10**
11** File:                bcm_mips.h
12** Description:  MIPS definitions.
13**
14****************************************************************/
15#ifndef __BCM_MIPS__
16#define __BCM_MIPS__
17
18#define zero    $0      /* wired zero */
19#define AT      $1      /* assembler temp  - uppercase because of ".set at" */
20#define v0      $2      /* return value */
21#define v1      $3
22#define a0      $4      /* argument registers */
23#define a1      $5
24#define a2      $6
25#define a3      $7
26#define t0      $8      /* caller saved */
27#define t1      $9
28#define t2      $10
29#define t3      $11
30#define t4      $12
31#define t5      $13
32#define t6      $14
33#define t7      $15
34#define s0      $16     /* callee saved */
35#define s1      $17
36#define s2      $18
37#define s3      $19
38#define s4      $20
39#define s5      $21
40#define s6      $22
41#define s7      $23
42#define t8      $24     /* caller saved */
43#define t9      $25
44#define jp      $25     /* PIC jump register */
45#define k0      $26     /* kernel scratch */
46#define k1      $27
47#define gp      $28     /* global pointer */
48#define sp      $29     /* stack pointer */
49#define fp      $30     /* frame pointer */
50#define s8      $30     /* same like fp! */
51#define ra      $31     /* return address */
52
53/*
54 * Coprocessor 0 register names
55 */
56#define CP0_INDEX $0
57#define CP0_RANDOM $1
58#define CP0_ENTRYLO0 $2
59#define CP0_ENTRYLO1 $3
60#define CP0_CONF $3
61#define CP0_CONTEXT $4
62#define CP0_PAGEMASK $5
63#define CP0_WIRED $6
64#define CP0_INFO $7
65#define CP0_BADVADDR $8
66#define CP0_COUNT $9
67#define CP0_ENTRYHI $10
68#define CP0_COMPARE $11
69#define CP0_STATUS $12
70#define CP0_CAUSE $13
71#define CP0_EPC $14
72#define CP0_PRID $15
73#define CP0_CONFIG $16
74#define CP0_LLADDR $17
75#define CP0_WATCHLO $18
76#define CP0_WATCHHI $19
77#define CP0_XCONTEXT $20
78#define CP0_FRAMEMASK $21
79#define CP0_DIAGNOSTIC $22
80#define CP0_DEBUG $23
81#define CP0_DEPC $24
82#define CP0_PERFORMANCE $25
83#define CP0_ECC $26
84#define CP0_CACHEERR $27
85#define CP0_TAGLO $28
86#define CP0_DATALO $28,1
87#define CP0_TAGHI $29
88#define CP0_ERROREPC $30
89#define CP0_DESAVE $31
90
91
92#define ST0_CU0                 0x10000000
93#define ST0_BEV                 0x00400000
94#define ST0_IE                  0x00000001
95#define ST0_EXL                 0x00000002
96#define ST0_ERL                 0x00000004
97#define ST0_KSU                 0x00000018
98#  define KSU_USER              0x00000010
99#  define KSU_SUPERVISOR        0x00000008
100#  define KSU_KERNEL            0x00000000
101#define ST0_UX                  0x00000020
102#define ST0_SX                  0x00000040
103#define ST0_KX                  0x00000080
104#define ST0_DE                  0x00010000
105#define ST0_CE                  0x00020000
106#define ST0_IM                          0x0000ff00
107#define  STATUSB_IP0            8
108#define  STATUSF_IP0            (1UL <<  8)
109#define  STATUSB_IP1            9
110#define  STATUSF_IP1            (1UL <<  9)
111#define  STATUSB_IP2            10
112#define  STATUSF_IP2            (1UL << 10)
113#define  STATUSB_IP3            11
114#define  STATUSF_IP3            (1UL << 11)
115#define  STATUSB_IP4            12
116#define  STATUSF_IP4            (1UL << 12)
117#define  STATUSB_IP5            13
118#define  STATUSF_IP5            (1UL << 13)
119#define  STATUSB_IP6            14
120#define  STATUSF_IP6            (1UL << 14)
121#define  STATUSB_IP7            15
122#define  STATUSF_IP7            (1UL << 15)
123
124
125#define  CAUSEB_EXCCODE         2
126#define  CAUSEF_EXCCODE         (31UL  <<  2)
127#define  CAUSEB_IP              8
128#define  CAUSEF_IP              (255UL <<  8)
129#define  CAUSEB_IP0             8
130#define  CAUSEF_IP0             (1UL   <<  8)
131#define  CAUSEB_IP1             9
132#define  CAUSEF_IP1             (1UL   <<  9)
133#define  CAUSEB_IP2             10
134#define  CAUSEF_IP2             (1UL   << 10)
135#define  CAUSEB_IP3             11
136#define  CAUSEF_IP3             (1UL   << 11)
137#define  CAUSEB_IP4             12
138#define  CAUSEF_IP4             (1UL   << 12)
139#define  CAUSEB_IP5             13
140#define  CAUSEF_IP5             (1UL   << 13)
141#define  CAUSEB_IP6             14
142#define  CAUSEF_IP6             (1UL   << 14)
143#define  CAUSEB_IP7             15
144#define  CAUSEF_IP7             (1UL   << 15)
145#define  CAUSEB_IV              23
146#define  CAUSEF_IV              (1UL   << 23)
147
148/* Location of pointer to the current exception handler */
149
150#define VECTOR_START    0x8000017C
151
152/*
153 * Some debug CP0 Register locations within saved register space
154 */
155#define ROFF_NUM_REG    (48)    /* Size of register space in bytes */
156#define ROFF_REG_SPACE  (ROFF_NUM_REG   * 4)    /* Size of register space in bytes */
157#define ROFF_SP                 29              /* word offset to sp */
158#define ROFF_RA                 31              /* word offset to ra */
159#define ROFF_SR                 32              /* word offset to CP0_STATUS */
160#define ROFF_LO                 33              /* word offset to LO */
161#define ROFF_HI                 34              /* word offset to HI */
162#define ROFF_BADVA                      35              /* word offset to CP0_BADVADDR */
163#define ROFF_CAUSE                      36              /* word offset to CP0_CAUSE */
164#define ROFF_PC                 37              /* word offset to CP0_EPC */
165#define ROFF_START_PC           38              /* word offset to new task PC */
166#define ROFF_ERROR_PC           39              /* word offset to ErrorPC */ 
167#define ROFF_START_A0           40              /* word offset to startup a0 */ 
168
169/* Macros */
170#define BCM_SAVE(reg) \
171        sw AT, 1*4(reg) ; \
172        .set at         ; \
173    sw $0, 0(reg)   ; \
174        sw v0, 2*4(reg) ; \
175        sw v1, 3*4(reg) ; \
176        sw a0, 4*4(reg) ; \
177        sw a1, 5*4(reg) ; \
178        sw a2, 6*4(reg) ; \
179        sw a3, 7*4(reg) ; \
180        sw t0, 8*4(reg) ; \
181        sw t1, 9*4(reg) ; \
182        sw t2,10*4(reg) ; \
183        sw t3,11*4(reg) ; \
184        sw t4,12*4(reg) ; \
185        sw t5,13*4(reg) ; \
186        sw t6,14*4(reg) ; \
187        sw t7,15*4(reg) ; \
188        sw s0,16*4(reg) ; \
189        sw s1,17*4(reg) ; \
190        sw s2,18*4(reg) ; \
191        sw s3,19*4(reg) ; \
192        sw s4,20*4(reg) ; \
193        sw s5,21*4(reg) ; \
194        sw s6,22*4(reg) ; \
195        sw s7,23*4(reg) ; \
196        sw t8,24*4(reg) ; \
197        sw t9,25*4(reg) ; \
198        sw gp,28*4(reg) ; \
199        sw sp,29*4(reg) ; \
200        sw s8,30*4(reg) ; \
201        sw ra,31*4(reg) ; \
202        mfc0 t0,CP0_BADVADDR ; \
203        mfc0 t1,CP0_STATUS ; \
204        mfc0 a1,CP0_CAUSE ; \
205        mfc0 t2,CP0_EPC ; \
206        mflo t3 ; \
207        mfhi t4 ; \
208        mfc0 t5, CP0_ERROREPC; \
209        sw t0, ROFF_BADVA * 4(reg) ; \
210        sw t1, ROFF_SR * 4(reg) ; \
211        sw a1, ROFF_CAUSE * 4(reg) ; \
212        sw t2, ROFF_PC * 4(reg) ; \
213        sw t3, ROFF_LO * 4(reg) ; \
214        sw t4, ROFF_HI * 4(reg) ; \
215        sw t5, ROFF_ERROR_PC * 4(reg) ;
216       
217   
218#define BCM_RESTORE(reg) \
219        lw t0,ROFF_SR * 4(reg)  ; \
220        mtc0 t0,CP0_STATUS      ; \
221        lw t1,ROFF_PC * 4(reg)  ; \
222        mtc0 t1,CP0_EPC ; \
223        lw t0,ROFF_LO * 4(reg)  ; \
224        lw t1,ROFF_HI * 4(reg)  ; \
225        mtlo t0 ; \
226        mthi t1 ; \
227        .set noat       ; \
228        lw AT, 1*4(reg) ; \
229        .set at ; \
230        lw v0, 2*4(reg) ; \
231        lw v1, 3*4(reg) ; \
232        lw a0, 4*4(reg) ; \
233        lw a1, 5*4(reg) ; \
234        lw a2, 6*4(reg) ; \
235        lw a3, 7*4(reg) ; \
236        lw t0, 8*4(reg) ; \
237        lw t1, 9*4(reg) ; \
238        lw t2,10*4(reg) ; \
239        lw t3,11*4(reg) ; \
240        lw t4,12*4(reg) ; \
241        lw t5,13*4(reg) ; \
242        lw t6,14*4(reg) ; \
243        lw t7,15*4(reg) ; \
244        lw s0,16*4(reg) ; \
245        lw s1,17*4(reg) ; \
246        lw s2,18*4(reg) ; \
247        lw s3,19*4(reg) ; \
248        lw s4,20*4(reg) ; \
249        lw s5,21*4(reg) ; \
250        lw s6,22*4(reg) ; \
251        lw s7,23*4(reg) ; \
252        lw t8,24*4(reg) ; \
253        lw t9,25*4(reg) ; \
254        lw gp,28*4(reg) ; \
255        lw sp,29*4(reg) ; \
256        lw s8,30*4(reg) ; \
257        lw ra,31*4(reg) ;
258
259
260
261#define K0BASE          0x80000000
262#define K1BASE          0xa0000000
263
264#endif /* __BCM_MIPS__ */
265
Note: See TracBrowser for help on using the repository browser.