OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-sh64/] [registers.h] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
#ifndef __ASM_SH64_REGISTERS_H
2
#define __ASM_SH64_REGISTERS_H
3
 
4
/*
5
 * This file is subject to the terms and conditions of the GNU General Public
6
 * License.  See the file "COPYING" in the main directory of this archive
7
 * for more details.
8
 *
9
 * include/asm-sh64/registers.h
10
 *
11
 * Copyright (C) 2000, 2001  Paolo Alberelli
12
 *
13
 */
14
 
15
#ifdef __ASSEMBLY__
16
/* =====================================================================
17
**
18
** Section 1: acts on assembly sources pre-processed by GPP ( <source.S>).
19
**            Assigns symbolic names to control & target registers.
20
*/
21
 
22
/*
23
 * Concerning registers name, the assembly sources follows the
24
 * CDC naming convention.
25
 * This section converts CDC registers names into RedHat style.
26
 */
27
 
28
/*
29
 * Control Registers.
30
 */
31
#define SR      cr0
32
#define SSR     cr1
33
#define PSSR    cr2
34
                        /* cr3 UNDEFINED */
35
#define INTEVT  cr4
36
#define EXPEVT  cr5
37
#define PEXPEVT cr6
38
#define TRA     cr7
39
#define SPC     cr8
40
#define PSPC    cr9
41
#define RESVEC  cr10
42
#define VBR     cr11
43
                        /* cr12 UNDEFINED */
44
#define TEA     cr13
45
                        /* cr14-cr15 UNDEFINED */
46
#define DCR     cr16
47
#define KCR0    cr17
48
#define KCR1    cr18
49
                        /* cr19-cr31 UNDEFINED */
50
                        /* cr32-cr61 RESERVED */
51
#define CTC     cr62
52
#define USR     cr63
53
 
54
/*
55
 * ABI dependent registers (general purpose set)
56
 * Note: this set of registers name could be shared by the
57
 *       CDC and RedHat toolchain
58
 */
59
#define RET     r2
60
#define ARG1    r2
61
#define ARG2    r3
62
#define ARG3    r4
63
#define ARG4    r5
64
#define ARG5    r6
65
#define ARG6    r7
66
#define FBP     r14
67
#define SP      r15
68
#define GVDT    r26
69
#define GCDT    r27
70
#define LINK    r18
71
#define OS      r40
72
#define ZERO    r63
73
 
74
/*
75
 * Target registers need name convertion...
76
 * (defines only those used by assembly code)
77
 */
78
#define t0      tr0
79
#define t1      tr1
80
#define t2      tr2
81
#define t3      tr3
82
#define t4      tr4
83
#define t5      tr5
84
#define t6      tr6
85
#define t7      tr7
86
 
87
/*
88
** RedHat style compatibility macros:
89
**
90
**   _loada: loads the address the address  of the symbol (first
91
**           argument) into the general purpose register (second
92
**           argument)
93
*/
94
        .macro  _loada   symbol, gp_reg
95
         movi   \symbol, \gp_reg
96
        .endm
97
 
98
        .macro  _ptar    symbol, tr_reg
99
         pt     \symbol, \tr_reg
100
        .endm
101
 
102
        .macro  _ptaru   symbol, tr_reg
103
         pt/u   \symbol, \tr_reg
104
        .endm
105
 
106
        .macro  _pta    disp_b,  tr_reg
107
         pta    $+\disp_b, \tr_reg
108
        .endm
109
 
110
/*
111
 * Status register defines: used only by assembly sources (and
112
 *                          syntax independednt)
113
 */
114
#define SR_RESET_VAL    0x0000000050008000
115
#define SR_HARMLESS     0x00000000500080f0      /* Write ignores for most */
116
#define SR_ENABLE_FPU   0xffffffffffff7fff      /* AND with this */
117
 
118
#ifdef ST_DEBUG
119
#define SR_ENABLE_MMU   0x0000000084000000      /* OR with this */
120
#else
121
#define SR_ENABLE_MMU   0x0000000080000000      /* OR with this */
122
#endif
123
 
124
#define SR_UNBLOCK_EXC  0xffffffffefffffff      /* AND with this */
125
#define SR_BLOCK_EXC    0x0000000010000000      /* OR with this */
126
 
127
#else   /* Not __ASSEMBLY__ syntax */
128
 
129
/* =====================================================================
130
**
131
** Section 2: this is required to manage __asm__ statement expanded
132
**            by "C" compiler
133
*/
134
        /*
135
        ** RedHat style symbolic address resolution inside "asm" blocks
136
        */
137
        asm ("\t.macro  _loada   symbol, gp_reg\n"
138
             "\tmovi    \\symbol, \\gp_reg\n"
139
             "\t.endm\n"
140
             "\n"
141
             "\t.macro  _ptar    symbol, tr_reg\n"
142
             "\tpt      \\symbol, \\tr_reg\n"
143
             "\t.endm\n"
144
             "\n"
145
             "\t.macro  _pta    disp_b, tr_reg\n"
146
             "\tpta     $+\\disp_b, \\tr_reg\n"
147
             "\t.endm\n"
148
             "\n"
149
             "\t.macro  _fgetscr  f_reg63\n"
150
             "\tfgetscr \\f_reg63\n"
151
             "\t.endm\n"
152
             "\n"
153
             "\t.macro  _fputscr  f_reg63\n"
154
             "\tfputscr \\f_reg63\n"
155
             "\t.endm\n"
156
             "\n"
157
            );
158
 
159
        /*
160
        ** RedHat style target register name inside "asm" blocks
161
        */
162
#       define __t0     __str(tr0)
163
#       define __t1     __str(tr1)
164
#       define __t2     __str(tr2)
165
#       define __t3     __str(tr3)
166
#       define __t4     __str(tr4)
167
#       define __t5     __str(tr5)
168
#       define __t6     __str(tr6)
169
#       define __t7     __str(tr7)
170
 
171
        /*
172
        ** RedHat style control register name inside "asm" blocks
173
        */
174
#       define __c0     __str(cr0)              /* SR       */
175
#       define __c1     __str(cr1)              /* SSR      */
176
#       define __c2     __str(cr2)              /* PSSR     */
177
#       define __c4     __str(cr4)              /* INTEVT   */
178
#       define __c5     __str(cr5)              /* EXPEVT   */
179
#       define __c6     __str(cr6)              /* PEXPEVT  */
180
#       define __c8     __str(cr8)              /* SPC      */
181
#       define __c9     __str(cr9)              /* PSPC     */
182
#       define __c13    __str(cr13)             /* TEA      */
183
#       define __c17    __str(cr17)             /* KCR0     */
184
#       define __c18    __str(cr18)             /* KCR1     */
185
 
186
        /*
187
        ** RedHat style float and double register name inside "asm" blocks
188
        ** defines below are used only in .../arch/sh5/kernel/fpu.c
189
        */
190
#       define __f(x)   __str(fr##x)
191
#       define __p(x)   __str(fp##x)
192
#       define __d(x)   __str(dr##x)
193
 
194
        /*
195
        ** Stringify reg. name (common for CDC & RedHat)
196
        */
197
#       define __str(x)  #x
198
 
199
#endif /* __ASSEMBLY__ */
200
#endif /* __ASM_SH64_REGISTERS_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.