diff packages/hal/powerpc/arch/current/include/ppc_regs.h @ 0:3111d98ba7b3 ecos-v1_1-release

Initial commit of eCos version 1.1
author jlarmour
date Tue, 11 May 1999 11:16:07 +0000
parents
children 443894e2e912
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/hal/powerpc/arch/current/include/ppc_regs.h
@@ -0,0 +1,169 @@
+#ifndef CYGONCE_HAL_PPC_REGS_H
+#define CYGONCE_HAL_PPC_REGS_H
+
+// ppc_regs.h - register defines for PowerPC processors
+// 
+// Copyright (c) 1998 Cygnus Support
+//
+// The authors hereby grant permission to use, copy, modify, distribute,
+// and license this software and its documentation for any purpose, provided
+// that existing copyright notices are retained in all copies and that this
+// notice is included verbatim in any distributions. No written agreement,
+// license, or royalty fee is required for any of the authorized uses.
+// Modifications to this software may be copyrighted by their authors
+// and need not follow the licensing terms described here, provided that
+// the new terms are clearly indicated on the first page of each file where
+// they apply.
+
+// PPC registers, numbered in the order in which gdb expects to see them.
+
+#define R0              0
+#define R1              1
+#define R2              2
+#define R3              3
+#define R4              4
+#define R5              5
+#define R6              6
+#define R7              7
+#define R8              8
+#define R9              9
+#define R10             10
+#define R11             11
+#define R12             12
+#define R13             13
+#define R14             14
+#define R15             15
+#define R16             16
+#define R17             17
+#define R18             18
+#define R19             19
+#define R20             20
+#define R21             21
+#define R22             22
+#define R23             23
+#define R24             24
+#define R25             25
+#define R26             26
+#define R27             27
+#define R28             28
+#define R29             29
+#define R30             30
+#define R31             31
+
+#define F0              32
+#define F1              33
+#define F2              34
+#define F3              35
+#define F4              36
+#define F5              37
+#define F6              38
+#define F7              39
+#define F8              40
+#define F9              41
+#define F10             42
+#define F11             43
+#define F12             44
+#define F13             45
+#define F14             46
+#define F15             47
+#define F16             48
+#define F17             49
+#define F18             50
+#define F19             51
+#define F20             52
+#define F21             53
+#define F22             54
+#define F23             55
+#define F24             56
+#define F25             57
+#define F26             58
+#define F27             59
+#define F28             60
+#define F29             61
+#define F30             62
+#define F31             63
+
+#define PC              64
+#define PS              65
+#define CND             66
+#define LR              67
+#define CNT             68
+#define XER             69
+#define MQ              70
+
+// For convenience
+#define SP              R1
+
+#ifdef CYG_HAL_POWERPC_MP860
+// General purpose registers. No floating point registers on MP860.
+#define FIRST_GP_REG    R0
+#define LAST_GP_REG     R31
+
+// CPU state registers.
+#define FIRST_CS_REG    PC
+#define LAST_CS_REG     MQ
+#endif
+
+
+// MSR bits
+#define MSR_LE          0x00000001      // little-endian mode enable
+#define MSR_RI          0x00000002      // recoverable exception
+#define MSR_DR          0x00000010      // data address translation
+#define MSR_IR          0x00000020      // instruction address translation
+#define MSR_IP          0x00000040      // exception prefix
+#define MSR_FE1         0x00000100      // floating-point exception mode 1
+#define MSR_BE          0x00000200      // branch trace enable
+#define MSR_SE          0x00000400      // single-step trace enable
+#define MSR_FE0         0x00000800      // floating-point exception mode 0
+#define MSR_ME          0x00001000      // machine check enable
+#define MSR_FP          0x00002000      // floating-point available
+#define MSR_PR          0x00004000      // privilege level
+#define MSR_EE          0x00008000      // external interrupt enable
+#define MSR_ILE         0x00010000      // exception little-endian mode
+#define MSR_POW         0x00040000      // power management enable
+
+
+
+#ifdef CYG_HAL_POWERPC_MP860
+// Instruction cache control.
+#define IC_CST          560
+#define IC_ADR          561
+#define IC_DAT          562
+
+#define IC_CMD_CE       0x02000000      // cache enable
+#define IC_CMD_CD       0x04000000      // cache disable
+#define IC_CMD_LL       0x06000000      // load & lock
+#define IC_CMD_UL       0x08000000      // unlock line
+#define IC_CMD_UA       0x0a000000      // unlock all
+#define IC_CMD_IA       0x0c000000      // invalidate all
+
+// Data cache control.
+#define DC_CST          568
+#define DC_ADR          569
+#define DC_DAT          570
+
+#define DC_CMD_CE       0x02000000      // cache enable
+#define DC_CMD_CD       0x04000000      // cache disable
+#define DC_CMD_LL       0x06000000      // lock line
+#define DC_CMD_UL       0x08000000      // unlock line
+#define DC_CMD_UA       0x0a000000      // unlock all
+#define DC_CMD_IA       0x0c000000      // invalidate all
+#define DC_CMD_FL       0x0e000000      // flush line
+#define DC_CMD_SW       0x01000000      // set writethrough
+#define DC_CMD_CW       0x03000000      // clear writethrough
+#define DC_CMD_SS       0x05000000      // set little endian swap
+#define DC_CMD_CS       0x07000000      // clear little endian swap
+
+
+// Internal Memory Map
+#define IMM_BASE        0xff000000      // The 860 internal memory map base
+
+#define IMM_SIPEND      (IMM_BASE + 0x010) // Interrupt Pend Register
+#define IMM_SIMASK      (IMM_BASE + 0x014) // Interrupt Mask
+#define IMM_SIEL        (IMM_BASE + 0x018) // Interrupt Edge Level Mask
+#define IMM_SIVEC       (IMM_BASE + 0x01c) // Interrupt Vector
+
+#define IMM_TBSCR       (IMM_BASE + 0x200) // Timebase Status and Control
+#endif
+
+#endif // ifdef CYGONCE_HAL_PPC_REGS_H