Mercurial > ecos
diff packages/hal/powerpc/arch/current/include/ppc_regs.h @ 70:c5536bad4c24 ecos-sw-2000-02-11
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
| author | jlarmour |
|---|---|
| date | Fri, 11 Feb 2000 16:47:32 +0000 |
| parents | f74b2666b30d |
| children | 435cced73e2f |
line wrap: on
line diff
--- a/packages/hal/powerpc/arch/current/include/ppc_regs.h +++ b/packages/hal/powerpc/arch/current/include/ppc_regs.h @@ -52,6 +52,9 @@ #include <pkgconf/hal.h> +#include <cyg/hal/var_regs.h> + + //-------------------------------------------------------------------------- // SPR access macros. #define CYGARC_MTSPR(_spr_, _v_) \ @@ -67,7 +70,7 @@ asm volatile ("mftb %0, %1;" : "=r" (_v_) : "I" (_tbr_)); //-------------------------------------------------------------------------- -// Generic Definitions +// Generic PowerPC Family Definitions //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- @@ -131,350 +134,6 @@ #define TBU_R CYGARC_REG_TBU_R #endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS -//-------------------------------------------------------------------------- -// MPC603 Specific Definitions -//-------------------------------------------------------------------------- -#ifdef CYGPKG_HAL_POWERPC_MPC603 - -//-------------------------------------------------------------------------- -// Cache -#define CYGARC_REG_HID0 1008 - -#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS -#define HID0 CYGARC_REG_HID0 -#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - - -//-------------------------------------------------------------------------- -// BATs -#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS -#define IBAT0U 528 -#define IBAT0L 529 -#define IBAT1U 530 -#define IBAT1L 531 -#define IBAT2U 532 -#define IBAT2L 533 -#define IBAT3U 534 -#define IBAT3L 535 - -#define DBAT0U 536 -#define DBAT0L 537 -#define DBAT1U 538 -#define DBAT1L 539 -#define DBAT2U 540 -#define DBAT2L 541 -#define DBAT3U 542 -#define DBAT3L 543 - -#define UBAT_BEPIMASK 0xfffe0000 // effective address mask -#define UBAT_BLMASK 0x00001ffc // block length mask -#define UBAT_VS 0x00000002 // supervisor mode valid bit -#define UBAT_VP 0x00000001 // problem mode valid bit - -#define LBAT_BRPNMASK 0xfffe0000 // real address mask -#define LBAT_W 0x00000040 // write-through -#define LBAT_I 0x00000020 // caching-inhibited -#define LBAT_M 0x00000010 // memory coherence -#define LBAT_G 0x00000008 // guarded - -#define LBAT_PP_NA 0x00000000 // no access -#define LBAT_PP_RO 0x00000001 // read-only -#define LBAT_PP_RW 0x00000002 // read/write -#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - -#endif // ifdef CYGPKG_HAL_POWERPC_MPC603 - -//-------------------------------------------------------------------------- -// MPC8xx Generic Definitions -//-------------------------------------------------------------------------- -#ifdef CYGPKG_HAL_POWERPC_MPC8xx - -//-------------------------------------------------------------------------- -// Instruction cache control. -#define CYGARC_REG_IC_CST 560 -#define CYGARC_REG_IC_ADR 561 -#define CYGARC_REG_IC_DAT 562 - -#define CYGARC_REG_IC_CMD_CE 0x02000000 // cache enable -#define CYGARC_REG_IC_CMD_CD 0x04000000 // cache disable -#define CYGARC_REG_IC_CMD_LL 0x06000000 // load & lock -#define CYGARC_REG_IC_CMD_UL 0x08000000 // unlock line -#define CYGARC_REG_IC_CMD_UA 0x0a000000 // unlock all -#define CYGARC_REG_IC_CMD_IA 0x0c000000 // invalidate all - -#define CYGARC_REG_IC_ADR_SETID_SHIFT 4 // set id is bits 21-27 -#define CYGARC_REG_IC_ADR_WAY0 0x00000000 // select way0 -#define CYGARC_REG_IC_ADR_WAY1 0x00001000 // select way1 - -#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS -#define IC_CST CYGARC_REG_IC_CST -#define IC_ADR CYGARC_REG_IC_ADR -#define IC_DAT CYGARC_REG_IC_DAT - -#define IC_CMD_CE CYGARC_REG_IC_CMD_CE -#define IC_CMD_CD CYGARC_REG_IC_CMD_CD -#define IC_CMD_LL CYGARC_REG_IC_CMD_LL -#define IC_CMD_UL CYGARC_REG_IC_CMD_UL -#define IC_CMD_UA CYGARC_REG_IC_CMD_UA -#define IC_CMD_IA CYGARC_REG_IC_CMD_IA - -#define IC_ADR_SETID_SHIFT CYGARC_REG_IC_ADR_SETID_SHIFT -#define IC_ADR_WAY0 CYGARC_REG_IC_ADR_WAY0 -#define IC_ADR_WAY1 CYGARC_REG_IC_ADR_WAY1 -#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - -//-------------------------------------------------------------------------- -// Data cache control. -#define CYGARC_REG_DC_CST 568 -#define CYGARC_REG_DC_ADR 569 -#define CYGARC_REG_DC_DAT 570 - -#define CYGARC_REG_DC_CMD_CE 0x02000000 // cache enable -#define CYGARC_REG_DC_CMD_CD 0x04000000 // cache disable -#define CYGARC_REG_DC_CMD_LL 0x06000000 // lock line -#define CYGARC_REG_DC_CMD_UL 0x08000000 // unlock line -#define CYGARC_REG_DC_CMD_UA 0x0a000000 // unlock all -#define CYGARC_REG_DC_CMD_IA 0x0c000000 // invalidate all -#define CYGARC_REG_DC_CMD_FL 0x0e000000 // flush line -#define CYGARC_REG_DC_CMD_SW 0x01000000 // set writethrough -#define CYGARC_REG_DC_CMD_CW 0x03000000 // clear writethrough -#define CYGARC_REG_DC_CMD_SS 0x05000000 // set little endian swap -#define CYGARC_REG_DC_CMD_CS 0x07000000 // clear little endian swap - -#define CYGARC_REG_DC_ADR_SETID_SHIFT 4 // set id is bits 21-27 -#define CYGARC_REG_DC_ADR_WAY0 0x00000000 // select way0 -#define CYGARC_REG_DC_ADR_WAY1 0x00001000 // select way1 - -#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS -#define DC_CST CYGARC_REG_DC_CST -#define DC_ADR CYGARC_REG_DC_ADR -#define DC_DAT CYGARC_REG_DC_DAT - -#define DC_CMD_CE CYGARC_REG_DC_CMD_CE -#define DC_CMD_CD CYGARC_REG_DC_CMD_CD -#define DC_CMD_LL CYGARC_REG_DC_CMD_LL -#define DC_CMD_UL CYGARC_REG_DC_CMD_UL -#define DC_CMD_UA CYGARC_REG_DC_CMD_UA -#define DC_CMD_IA CYGARC_REG_DC_CMD_IA -#define DC_CMD_FL CYGARC_REG_DC_CMD_FL -#define DC_CMD_SW CYGARC_REG_DC_CMD_SW -#define DC_CMD_CW CYGARC_REG_DC_CMD_CW -#define DC_CMD_SS CYGARC_REG_DC_CMD_SS -#define DC_CMD_CS CYGARC_REG_DC_CMD_CS - -#define DC_ADR_SETID_SHIFT CYGARC_REG_DC_ADR_SETID_SHIFT -#define DC_ADR_WAY0 CYGARC_REG_DC_ADR_WAY0 -#define DC_ADR_WAY1 CYGARC_REG_DC_ADR_WAY1 -#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - -//-------------------------------------------------------------------------- -// MMU control. -#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS -#define M_CASID 793 // current address space id register - -#define MI_CTR 784 // instruction MMU control -#define MI_EPN 787 // instruction MMU effective page num -#define MI_TWC 789 // instruction MMU tablewalk count -#define MI_RPN 790 // instruction MMU real page num -#define MI_DCAM 816 // instruction MMU CAM read -#define MI_DRAM0 817 // instruction MMU RAM read 0 -#define MI_DRAM1 818 // instruction MMU RAM read 1 - -#define MI_EPN_EPNMASK 0xfffff000 // effective page no mask -#define MI_EPN_EV 0x00000200 // entry valid - -#define MI_RPN_RPNMASK 0xfffff000 // real page no mask -#define MI_RPN_PPRWRW 0x000008f0 // page protection (rw/rw, page valid) -#define MI_RPN_LPS 0x00000008 // large page size -#define MI_RPN_SH 0x00000004 // shared page (1 = no ASID cmp) -#define MI_RPN_CI 0x00000002 // cache inhibited -#define MI_RPN_V 0x00000001 // entry valid - -#define MI_TWC_PS8MB 0x0000000c // page size = 8MB -#define MI_TWC_G 0x00000010 // guarded -#define MI_TWC_WT 0x00000002 // writethrough -#define MI_TWC_V 0x00000001 // entry valid - -#define MI_CTR_INDX_SHIFT 8 // the ITLB_INDX starts at bit 23 - -#define MD_CTR 792 // data MMU control -#define MD_EPN 795 // data MMU effective page num -#define MD_TWC 797 // data MMU tablewalk count -#define MD_RPN 798 // data MMU real page num -#define MD_DCAM 824 // data MMU CAM read -#define MD_DRAM0 825 // data MMU RAM read 0 -#define MD_DRAM1 826 // data MMU RAM read 1 - -#define MD_RPN_CHANGED 0x00000100 // page changed -#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - -//-------------------------------------------------------------------------- -// Internal Memory Map. -#define CYGARC_REG_IMMR 638 // internal memory map base register -#define CYGARC_REG_IMMR_BASEMASK 0xffff0000 // imm base location mask (rw) -#define CYGARC_REG_IMMR_PARTNUM 0x0000ff00 // part number mask (ro) -#define CYGARC_REG_IMMR_MASKNUM 0x000000ff // mask number mask (ro) - -#define CYGARC_REG_IMM_BASE 0xff000000 // the internal memory map base - -// system protection control -#define CYGARC_REG_IMM_SYPCR (CYGARC_REG_IMM_BASE + 0x004) -#define CYGARC_REG_IMM_SYPCR_SWTC_MASK 0xffff0000 -#define CYGARC_REG_IMM_SYPCR_BMT_MASK 0x0000ff00 -#define CYGARC_REG_IMM_SYPCR_BME 0x00000080 -#define CYGARC_REG_IMM_SYPCR_SWF 0x00000008 -#define CYGARC_REG_IMM_SYPCR_SWE 0x00000004 -#define CYGARC_REG_IMM_SYPCR_SWRI 0x00000002 -#define CYGARC_REG_IMM_SYPCR_SWP 0x00000001 - -// interrupt pend register -#define CYGARC_REG_IMM_SIPEND (CYGARC_REG_IMM_BASE + 0x010) -#define CYGARC_REG_IMM_SIPEND_IRQ0 0x80000000 // irq0 is bit 0... - -// interrupt mask -#define CYGARC_REG_IMM_SIMASK (CYGARC_REG_IMM_BASE + 0x014) -#define CYGARC_REG_IMM_SIMASK_IRQ0 0x80000000 // ... irq n is bit n*2 - -// interrupt edge level mask -#define CYGARC_REG_IMM_SIEL (CYGARC_REG_IMM_BASE + 0x018) -#define CYGARC_REG_IMM_SIEL_IRQ0 0x80000000 - -// interrupt vector -#define CYGARC_REG_IMM_SIVEC (CYGARC_REG_IMM_BASE + 0x01c) - -// memory controller -#define CYGARC_REG_IMM_BR0 (CYGARC_REG_IMM_BASE + 0x100) -#define CYGARC_REG_IMM_OR0 (CYGARC_REG_IMM_BASE + 0x104) -#define CYGARC_REG_IMM_BR1 (CYGARC_REG_IMM_BASE + 0x108) -#define CYGARC_REG_IMM_OR1 (CYGARC_REG_IMM_BASE + 0x10c) -#define CYGARC_REG_IMM_BR2 (CYGARC_REG_IMM_BASE + 0x110) -#define CYGARC_REG_IMM_OR2 (CYGARC_REG_IMM_BASE + 0x114) -#define CYGARC_REG_IMM_BR3 (CYGARC_REG_IMM_BASE + 0x118) -#define CYGARC_REG_IMM_OR3 (CYGARC_REG_IMM_BASE + 0x11c) -#define CYGARC_REG_IMM_BR4 (CYGARC_REG_IMM_BASE + 0x120) -#define CYGARC_REG_IMM_OR4 (CYGARC_REG_IMM_BASE + 0x124) -#define CYGARC_REG_IMM_BR5 (CYGARC_REG_IMM_BASE + 0x128) -#define CYGARC_REG_IMM_OR5 (CYGARC_REG_IMM_BASE + 0x12c) -#define CYGARC_REG_IMM_BR6 (CYGARC_REG_IMM_BASE + 0x130) -#define CYGARC_REG_IMM_OR6 (CYGARC_REG_IMM_BASE + 0x134) -#define CYGARC_REG_IMM_BR7 (CYGARC_REG_IMM_BASE + 0x138) -#define CYGARC_REG_IMM_OR7 (CYGARC_REG_IMM_BASE + 0x13c) - -#define CYGARC_REG_IMM_BR_BA_MASK 0xffff8000 // base address -#define CYGARC_REG_IMM_BR_AT_MASK 0x00007000 // address type -#define CYGARC_REG_IMM_BR_PS_8 0x00000400 // port size 8 bits -#define CYGARC_REG_IMM_BR_PS_16 0x00000800 // port size 16 bits -#define CYGARC_REG_IMM_BR_PS_32 0x00000000 // port size 32 bits -#define CYGARC_REG_IMM_BR_PARE 0x00000200 // parity enable -#define CYGARC_REG_IMM_BR_WP 0x00000100 // write protect -#define CYGARC_REG_IMM_BR_MS_GPCM 0x00000000 // machine select G.P.C.M -#define CYGARC_REG_IMM_BR_MS_UPMA 0x00000080 // machine select U.P.M.A -#define CYGARC_REG_IMM_BR_MS_UPMB 0x000000c0 // machine select U.P.M.B -#define CYGARC_REG_IMM_BR_V 0x00000001 // valid bit - -#define CYGARC_REG_IMM_OR_AM 0xffff8000 // address mask -#define CYGARC_REG_IMM_OR_ATM 0x00007000 // address type mask -#define CYGARC_REG_IMM_OR_CSNT 0x00000800 // GPCM:chip select negation time -#define CYGARC_REG_IMM_OR_SAM 0x00000800 // UPMx:start address multiplex -#define CYGARC_REG_IMM_OR_ACS_0 0x00000000 // GPCM:CS output immediately -#define CYGARC_REG_IMM_OR_ACS_4 0x00000400 // GPCM:CS output 1/4 clock later -#define CYGARC_REG_IMM_OR_ACS_2 0x00000600 // GPCM:CS output 1/2 clock later -#define CYGARC_REG_IMM_OR_G5LA 0x00000400 // UPMx:general-purpose line 5 A -#define CYGARC_REG_IMM_OR_G5LS 0x00000200 // UPMx:general-purpose line 5 S -#define CYGARC_REG_IMM_OR_BI 0x00000100 // burst inhibit -#define CYGARC_REG_IMM_OR_SCY_MASK 0x000000f0 // cycle length in clocks -#define CYGARC_REG_IMM_OR_SCY_SHIFT 4 -#define CYGARC_REG_IMM_OR_SETA 0x00000008 // external transfer ack -#define CYGARC_REG_IMM_OR_TRLX 0x00000004 // timing relaxed -#define CYGARC_REG_IMM_OR_EHTR 0x00000002 // extended hold time on read - -// timebase status and control -#define CYGARC_REG_IMM_TBSCR (CYGARC_REG_IMM_BASE + 0x200) -#define CYGARC_REG_IMM_TBSCR_REFA 0x0080 // reference interrupt status A -#define CYGARC_REG_IMM_TBSCR_REFB 0x0040 // reference interrupt status B -#define CYGARC_REG_IMM_TBSCR_REFAE 0x0008 // reference interrupt enable A -#define CYGARC_REG_IMM_TBSCR_REFBE 0x0004 // reference interrupt enable B -#define CYGARC_REG_IMM_TBSCR_TBF 0x0002 // timebase freeze -#define CYGARC_REG_IMM_TBSCR_TBE 0x0001 // timebase enable -#define CYGARC_REG_IMM_TBSCR_IRQ0 0x8000 // highest interrupt level -#define CYGARC_REG_IMM_TBSCR_IRQMASK 0xff00 // irq priority mask - -// timebase reference register 0 -#define CYGARC_REG_IMM_TBREF0 (CYGARC_REG_IMM_BASE + 0x204) -// timebase reference register 1 -#define CYGARC_REG_IMM_TBREF1 (CYGARC_REG_IMM_BASE + 0x208) - -// real time clock -#define CYGARC_REG_IMM_RTCSC (CYGARC_REG_IMM_BASE + 0x220) -#define CYGARC_REG_IMM_RTCSC_SEC 0x0080 // once per second interrupt -#define CYGARC_REG_IMM_RTCSC_ALR 0x0040 // alarm interrupt -#define CYGARC_REG_IMM_RTCSC_38K 0x0010 // source select -#define CYGARC_REG_IMM_RTCSC_SIE 0x0008 // second interrupt enable -#define CYGARC_REG_IMM_RTCSC_ALE 0x0004 // alarm interrupt enable -#define CYGARC_REG_IMM_RTCSC_RTF 0x0002 // real time clock freeze -#define CYGARC_REG_IMM_RTCSC_RTE 0x0001 // real time clock enable -#define CYGARC_REG_IMM_RTCSC_IRQ0 0x8000 // highest interrupt level -#define CYGARC_REG_IMM_RTCSC_IRQMASK 0xff00 // irq priority mask - -// periodic interrupt status & ctrl -#define CYGARC_REG_IMM_PISCR (CYGARC_REG_IMM_BASE + 0x240) -#define CYGARC_REG_IMM_PISCR_PS 0x0080 // periodic interrupt status -#define CYGARC_REG_IMM_PISCR_PIE 0x0004 // periodic interrupt enable -#define CYGARC_REG_IMM_PISCR_PITF 0x0002 // periodic interrupt timer freeze -#define CYGARC_REG_IMM_PISCR_PTE 0x0001 // periodic timer enable -#define CYGARC_REG_IMM_PISCR_IRQ0 0x8000 // highest interrupt level -#define CYGARC_REG_IMM_PISCR_IRQMASK 0xff00 // irq priority mask - -// periodic interrupt timer count -#define CYGARC_REG_IMM_PITC (CYGARC_REG_IMM_BASE + 0x244) -#define CYGARC_REG_IMM_PITC_COUNT_SHIFT 16 // count is stored in bits 0-15 - -// system clock control -#define CYGARC_REG_IMM_SCCR (CYGARC_REG_IMM_BASE + 0x280) -#define CYGARC_REG_IMM_SCCR_TBS 0x02000000 // timebase source -#define CYGARC_REG_IMM_SCCR_RTDIV 0x01000000 // rtc clock divide -#define CYGARC_REG_IMM_SCCR_RTSEL 0x00800000 // rtc clock select - -// CPM interrupt vector register -#define CYGARC_REG_IMM_CIVR (CYGARC_REG_IMM_BASE + 0x930) -#define CYGARC_REG_IMM_CIVR_IACK 0x0001 // set this to update register -#define CYGARC_REG_IMM_CIVR_VECTOR_SHIFT 11 // vector is at bits 0-4 - -// CPM interrupt configuration reg -#define CYGARC_REG_IMM_CICR (CYGARC_REG_IMM_BASE + 0x940) -#define CYGARC_REG_IMM_CICR_IEN 0x00000080 // interrupt enable -#define CYGARC_REG_IMM_CICR_IRQMASK 0x0000e000 // irq priority mask -#define CYGARC_REG_IMM_CICR_IRQ_SHIFT 13 - -// CPM interrupt mask register -#define CYGARC_REG_IMM_CIMR (CYGARC_REG_IMM_BASE + 0x948) -// CPM interrupt in-service register -#define CYGARC_REG_IMM_CISR (CYGARC_REG_IMM_BASE + 0x94C) - - -#define CYGARC_SIU_PRIORITY_LOW 7 // the lowest irq priority -#define CYGARC_SIU_PRIORITY_HIGH 0 // the highest irq priority - -#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - -#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - //----------------------------------------------------------------------------- -// Development Support. -#define CYGARC_REG_DER 149 - -#define CYGARC_REG_ICTRL 158 // instruction support control reg -#define CYGARC_REG_ICTRL_SERSHOW 0x00000000 // serialized, show cycles -#define CYGARC_REG_ICTRL_NOSERSHOW 0x00000007 //non-serialized&no show cycles - -#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS -#define DER CYGARC_REG_DER - -#define ICTRL CYGARC_REG_ICTRL -#define ICTRL_SERSHOW CYGARC_REG_ICTRL_SERSHOW -#define ICTRL_NOSERSHOW CYGARC_REG_ICTRL_NOSERSHOW -#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS - -#endif // ifdef CYGPKG_HAL_POWERPC_MPC8xx - #endif // ifdef CYGONCE_HAL_PPC_REGS_H +// End of ppc_regs.h
