| #ifndef __ASM_SH64_REGISTERS_H |
| #define __ASM_SH64_REGISTERS_H |
| |
| /* |
| * This file is subject to the terms and conditions of the GNU General Public |
| * License. See the file "COPYING" in the main directory of this archive |
| * for more details. |
| * |
| * include/asm-sh64/registers.h |
| * |
| * Copyright (C) 2000, 2001 Paolo Alberelli |
| * Copyright (C) 2004 Richard Curnow |
| */ |
| |
| #ifdef __ASSEMBLY__ |
| /* ===================================================================== |
| ** |
| ** Section 1: acts on assembly sources pre-processed by GPP ( <source.S>). |
| ** Assigns symbolic names to control & target registers. |
| */ |
| |
| /* |
| * Define some useful aliases for control registers. |
| */ |
| #define SR cr0 |
| #define SSR cr1 |
| #define PSSR cr2 |
| /* cr3 UNDEFINED */ |
| #define INTEVT cr4 |
| #define EXPEVT cr5 |
| #define PEXPEVT cr6 |
| #define TRA cr7 |
| #define SPC cr8 |
| #define PSPC cr9 |
| #define RESVEC cr10 |
| #define VBR cr11 |
| /* cr12 UNDEFINED */ |
| #define TEA cr13 |
| /* cr14-cr15 UNDEFINED */ |
| #define DCR cr16 |
| #define KCR0 cr17 |
| #define KCR1 cr18 |
| /* cr19-cr31 UNDEFINED */ |
| /* cr32-cr61 RESERVED */ |
| #define CTC cr62 |
| #define USR cr63 |
| |
| /* |
| * ABI dependent registers (general purpose set) |
| */ |
| #define RET r2 |
| #define ARG1 r2 |
| #define ARG2 r3 |
| #define ARG3 r4 |
| #define ARG4 r5 |
| #define ARG5 r6 |
| #define ARG6 r7 |
| #define SP r15 |
| #define LINK r18 |
| #define ZERO r63 |
| |
| /* |
| * Status register defines: used only by assembly sources (and |
| * syntax independednt) |
| */ |
| #define SR_RESET_VAL 0x0000000050008000 |
| #define SR_HARMLESS 0x00000000500080f0 /* Write ignores for most */ |
| #define SR_ENABLE_FPU 0xffffffffffff7fff /* AND with this */ |
| |
| #if defined (CONFIG_SH64_SR_WATCH) |
| #define SR_ENABLE_MMU 0x0000000084000000 /* OR with this */ |
| #else |
| #define SR_ENABLE_MMU 0x0000000080000000 /* OR with this */ |
| #endif |
| |
| #define SR_UNBLOCK_EXC 0xffffffffefffffff /* AND with this */ |
| #define SR_BLOCK_EXC 0x0000000010000000 /* OR with this */ |
| |
| #else /* Not __ASSEMBLY__ syntax */ |
| |
| /* |
| ** Stringify reg. name |
| */ |
| #define __str(x) #x |
| |
| /* Stringify control register names for use in inline assembly */ |
| #define __SR __str(SR) |
| #define __SSR __str(SSR) |
| #define __PSSR __str(PSSR) |
| #define __INTEVT __str(INTEVT) |
| #define __EXPEVT __str(EXPEVT) |
| #define __PEXPEVT __str(PEXPEVT) |
| #define __TRA __str(TRA) |
| #define __SPC __str(SPC) |
| #define __PSPC __str(PSPC) |
| #define __RESVEC __str(RESVEC) |
| #define __VBR __str(VBR) |
| #define __TEA __str(TEA) |
| #define __DCR __str(DCR) |
| #define __KCR0 __str(KCR0) |
| #define __KCR1 __str(KCR1) |
| #define __CTC __str(CTC) |
| #define __USR __str(USR) |
| |
| #endif /* __ASSEMBLY__ */ |
| #endif /* __ASM_SH64_REGISTERS_H */ |