1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_SH_CPU_SH5_REGISTERS_H
3 #define __ASM_SH_CPU_SH5_REGISTERS_H
4 
5 /*
6  * include/asm-sh/cpu-sh5/registers.h
7  *
8  * Copyright (C) 2000, 2001  Paolo Alberelli
9  * Copyright (C) 2004  Richard Curnow
10  */
11 
12 #ifdef __ASSEMBLY__
13 /* =====================================================================
14 **
15 ** Section 1: acts on assembly sources pre-processed by GPP ( <source.S>).
16 **	      Assigns symbolic names to control & target registers.
17 */
18 
19 /*
20  * Define some useful aliases for control registers.
21  */
22 #define SR	cr0
23 #define SSR	cr1
24 #define PSSR	cr2
25 			/* cr3 UNDEFINED */
26 #define INTEVT	cr4
27 #define EXPEVT	cr5
28 #define PEXPEVT	cr6
29 #define TRA	cr7
30 #define SPC	cr8
31 #define PSPC	cr9
32 #define RESVEC	cr10
33 #define VBR	cr11
34 			/* cr12 UNDEFINED */
35 #define TEA	cr13
36 			/* cr14-cr15 UNDEFINED */
37 #define DCR	cr16
38 #define KCR0	cr17
39 #define KCR1	cr18
40 			/* cr19-cr31 UNDEFINED */
41 			/* cr32-cr61 RESERVED */
42 #define CTC	cr62
43 #define USR	cr63
44 
45 /*
46  * ABI dependent registers (general purpose set)
47  */
48 #define RET	r2
49 #define ARG1	r2
50 #define ARG2	r3
51 #define ARG3	r4
52 #define ARG4	r5
53 #define ARG5	r6
54 #define ARG6	r7
55 #define SP	r15
56 #define LINK	r18
57 #define ZERO	r63
58 
59 /*
60  * Status register defines: used only by assembly sources (and
61  * 			    syntax independednt)
62  */
63 #define SR_RESET_VAL	0x0000000050008000
64 #define SR_HARMLESS	0x00000000500080f0	/* Write ignores for most */
65 #define SR_ENABLE_FPU	0xffffffffffff7fff	/* AND with this */
66 
67 #if defined (CONFIG_SH64_SR_WATCH)
68 #define SR_ENABLE_MMU	0x0000000084000000	/* OR with this */
69 #else
70 #define SR_ENABLE_MMU	0x0000000080000000	/* OR with this */
71 #endif
72 
73 #define SR_UNBLOCK_EXC	0xffffffffefffffff	/* AND with this */
74 #define SR_BLOCK_EXC	0x0000000010000000	/* OR with this */
75 
76 #else	/* Not __ASSEMBLY__ syntax */
77 
78 /*
79 ** Stringify reg. name
80 */
81 #define __str(x)  #x
82 
83 /* Stringify control register names for use in inline assembly */
84 #define __SR __str(SR)
85 #define __SSR __str(SSR)
86 #define __PSSR __str(PSSR)
87 #define __INTEVT __str(INTEVT)
88 #define __EXPEVT __str(EXPEVT)
89 #define __PEXPEVT __str(PEXPEVT)
90 #define __TRA __str(TRA)
91 #define __SPC __str(SPC)
92 #define __PSPC __str(PSPC)
93 #define __RESVEC __str(RESVEC)
94 #define __VBR __str(VBR)
95 #define __TEA __str(TEA)
96 #define __DCR __str(DCR)
97 #define __KCR0 __str(KCR0)
98 #define __KCR1 __str(KCR1)
99 #define __CTC __str(CTC)
100 #define __USR __str(USR)
101 
102 #endif /* __ASSEMBLY__ */
103 #endif /* __ASM_SH_CPU_SH5_REGISTERS_H */
104