source: svn/newcon3bcm2_21bu/rockford/bsp/bcm97552/no-os/src/sde/bmips.h

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 5.9 KB
Line 
1
2#ifndef __BMIPS_H__
3#define __BMIPS_H__
4
5/**********************************************************************
6 *  Bitfield macros
7 ********************************************************************* */
8
9/*
10 * Make a mask for 1 bit at position 'n'
11 */
12
13#define _MM_MAKEMASK1(n) (1 << (n))
14
15/*
16 * Make a mask for 'v' bits at position 'n'
17 */
18
19#define _MM_MAKEMASK(v,n) (((1<<(v))-1) << (n))
20
21/*
22 * Make a value at 'v' at bit position 'n'
23 */
24
25#define _MM_MAKEVALUE(v,n) ((v) << (n))
26
27/*
28 * Retrieve a value from 'v' at bit position 'n' with 'm' mask bits
29 */
30
31#define _MM_GETVALUE(v,n,m) (((v) & (m)) >> (n))
32
33
34
35#if defined(__ASSEMBLER__)
36#define zero    $0
37#define AT              $1              /* assembler temporaries */
38#define v0              $2              /* value holders */
39#define v1              $3
40#define a0              $4              /* arguments */
41#define a1              $5
42#define a2              $6
43#define a3              $7
44#define t0              $8              /* temporaries */
45#define t1              $9
46#define t2              $10
47#define t3              $11
48#define t4              $12
49#define t5              $13
50#define t6              $14
51#define t7              $15
52#define ta0             $12
53#define ta1             $13
54#define ta2             $14
55#define ta3             $15
56#define s0              $16             /* saved registers */
57#define s1              $17
58#define s2              $18
59#define s3              $19
60#define s4              $20
61#define s5              $21
62#define s6              $22
63#define s7              $23
64#define t8              $24             /* temporaries */
65#define t9              $25
66#define k0              $26             /* kernel registers */
67#define k1              $27
68#define gp              $28             /* global pointer */
69#define sp              $29             /* stack pointer */
70#define s8              $30             /* saved register */
71#define fp              $30             /* frame pointer */
72#define ra              $31             /* return address */
73#endif
74
75
76
77
78/*  *********************************************************************
79    *  Macros for generating assembly language routines
80    ********************************************************************* */
81
82#if defined(__ASSEMBLER__)
83
84/* global leaf function (does not call other functions) */
85#define LEAF(name)              \
86        .globl  name;           \
87        .ent    name;           \
88name:
89
90/* global alternate entry to (local or global) leaf function */
91#define XLEAF(name)             \
92        .globl  name;           \
93        .aent   name;           \
94name:
95
96/* end of a global function */
97#define END(name)               \
98        .size   name,.-name;    \
99        .end    name
100
101/* local leaf function (does not call other functions) */
102#define SLEAF(name)             \
103        .ent    name;           \
104name:
105
106/* local alternate entry to (local or global) leaf function */
107#define SXLEAF(name)            \
108        .aent   name;           \
109name:
110
111/* end of a local function */
112#define SEND(name)              \
113        END(name)
114
115/* define & export a symbol */
116#define EXPORT(name)            \
117        .globl name;            \
118name:
119
120/* import a symbol */
121#define IMPORT(name, size)      \
122        .extern name,size
123
124/* define a zero-fill common block (BSS if not overridden) with a global name */
125#define COMM(name,size)         \
126        .comm   name,size
127
128/* define a zero-fill common block (BSS if not overridden) with a local name */
129#define LCOMM(name,size)                \
130        .lcomm  name,size
131
132#endif
133
134
135/*
136 * Primary Cache operations
137 */
138#define Index_Invalidate_I               0x0         /* 0       0 */
139#define Index_Writeback_Inv_D            0x1         /* 0       1 */
140#define Index_Invalidate_SI              0x2         /* 0       2 */
141#define Index_Writeback_Inv_SD           0x3         /* 0       3 */
142#define Index_Load_Tag_I                 0x4         /* 1       0 */
143#define Index_Load_Tag_D                 0x5         /* 1       1 */
144#define Index_Load_Tag_SI                0x6         /* 1       2 */
145#define Index_Load_Tag_SD                0x7         /* 1       3 */
146#define Index_Store_Tag_I                0x8         /* 2       0 */
147#define Index_Store_Tag_D                0x9         /* 2       1 */
148#define Index_Store_Tag_SI               0xA         /* 2       2 */
149#define Index_Store_Tag_SD               0xB         /* 2       3 */
150#define Create_Dirty_Exc_D               0xD         /* 3       1 */
151#define Create_Dirty_Exc_SD              0xF         /* 3       3 */
152#define Hit_Invalidate_I                 0x10        /* 4       0 */
153#define Hit_Invalidate_D                 0x11        /* 4       1 */
154#define Hit_Invalidate_SI                0x12        /* 4       2 */
155#define Hit_Invalidate_SD                0x13        /* 4       3 */
156#define Fill_I                           0x14        /* 5       0 */
157#define Hit_Writeback_Inv_D              0x15        /* 5       1 */
158#define Hit_Writeback_Inv_SD             0x17        /* 5       3 */
159#define Hit_Writeback_I                  0x18        /* 6       0 */
160#define Hit_Writeback_D                  0x19        /* 6       1 */
161#define Hit_Writeback_SD                 0x1B        /* 6       3 */
162#define Hit_Set_Virtual_SI               0x1E        /* 7       2 */
163#define Hit_Set_Virtual_SD               0x1F        /* 7       3 */
164
165/*
166#************************************************************************
167#* KSEG Mapping Definitions and Macro's
168#************************************************************************
169*/
170#define K0_BASE          0x80000000
171#define K0_SIZE          0x20000000
172#define K1_BASE          0xa0000000
173#define K1_SIZE          0x20000000
174#define K2_BASE          0xc0000000
175
176#define PHYS_TO_K0(x)   ((x) | 0x80000000)
177#define PHYS_TO_K1(x)   ((x) | 0xa0000000)
178#define K0_TO_PHYS(x)   ((x) & 0x1fffffff)
179#define K1_TO_PHYS(x)   (K0_TO_PHYS(x))
180#define K0_TO_K1(x)     ((x) | 0x20000000)
181#define K1_TO_K0(x)     ((x) & 0xdfffffff)
182
183#define T_VEC           K0_BASE                 /* tlbmiss vector */
184#define X_VEC           (K0_BASE+0x80)          /* xtlbmiss vector */
185#define C_VEC           (K1_BASE+0x100)         /* cache exception vector */
186#define E_VEC           (K0_BASE+0x180)         /* exception vector */
187#define R_VEC           (K1_BASE+0x1fc00000)    /* reset vector */
188
189#define REG_ADDR(X)     PHYS_TO_K1(BCHP_PHYSICAL_OFFSET+X)
190
191
192#define K0_WRITE_THROGH                 (0x0)           
193#define K0_WRITE_BACK                   (0x3)
194#define K0_UNCACHED                             (0x2)
195
196
197#define cacheop(kva, size, linesize, op)        \
198                .set noreorder                          ;               \
199                addu            t1, kva, size   ;               \
200        subu            t2, linesize, 1 ;               \
201        not                     t2              ;               \
202        and                     t0, kva, t2     ;               \
203        addiu           t1, t1, -1      ;       \
204        and                     t1, t2          ;               \
2059:     cache            op, 0(t0)       ;               \
206        bne                     t0, t1, 9b     ;                \
207        addu            t0, linesize    ;               \
208        .set reorder                            ;               
209               
210
211
212#endif
Note: See TracBrowser for help on using the repository browser.