📄 cpu_403.h
字号:
/* * %W% %E% * * Copyright (c) 1998-1999 Lucent Technologies, Inc. All Rights Reserved. * * This software is the confidential and proprietary information of Lucent * Technologies, Inc. ("Confidential Information"). You shall not disclose * such Confidential Information and shall use it only in accordance with * the terms of the license agreement you entered into with Lucent. * * LUCENT TECHNOLOGIES MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE * SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT * NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR * A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. LUCENT TECHNOLOGIES SHALL * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, * MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. *//********************************************************************************* cpu403.h** CPU definitions for the Power PC PPC403GCX.** May 1998 S. McCaskill* Mar 1999 R. Snyder Add cpu.s functions as asm macros* May 1999 R. Snyder Add more serial port definitions** This file includes rewrites of some of the functions from Scott McCaskill's* cpu.s file. See cpu403.c for the others. It implements functions to* access the PowerPC's special purpose and device control registers. The* Diab/Data assembler does not support a "repeat" directive, so Scott's* cpu.s file could not be assembled.** The following functions are provided:** value = CPU_Read_SPR(index)* value = CPU_Read_DCR(index)** return the value of the register whose index is specified.** CPU_Write_SPR(index,value)* CPU_Write_DCR(index,value)** write a value into the register whose index is specified.** WARNING, unlike Scott's routines, reading from a non-existent register or* writing to a non-existent register have undefined/undesired effects.** For additional information, consult chapter 12 of the "IBM* PPC403GCX Embedded Controller User's Manual".********************************************************************************/#ifndef CPU403_H#define CPU403_H/** Declare access functions in cpu.s*/#if 0asm unsigned long CPU_Read_SPR(unsigned int reg){% con reg mfspr r3, reg}asm void CPU_Write_SPR(unsigned int reg, unsigned long value){% con reg; reg value mtspr reg, value}asm unsigned long CPU_Read_DCR(unsigned int reg){% con reg mfdcr r3, reg}asm void CPU_Write_DCR(unsigned int reg, unsigned long value){% con reg; reg value mtdcr reg, value}asm unsigned long CPU_Read_MSR(){ mfmsr r3}asm void CPU_Write_MSR(unsigned long value){% reg value mtmsr r3}extern void CPU_Read_TB(unsigned long *pTimeBase);extern void CPU_uwait(unsigned long uSecs);extern unsigned long CPU_usec_Ticks();#endif/** Special Purpose Registers.*/#define CPU_SPR_XER 0x001 /* Fixed point exception register */#define CPU_SPR_LR 0x008 /* Link register */#define CPU_SPR_CTR 0x009 /* Count register */#define CPU_SPR_SRR0 0x01a /* Save/restore register 0 */#define CPU_SPR_SRR1 0x01b /* Save/restore register 1 */#define CPU_SPR_SPRG0 0x110 /* Special general register 0 */#define CPU_SPR_SPRG1 0x111 /* Special general register 1 */#define CPU_SPR_SPRG2 0x112 /* Special general register 2 */#define CPU_SPR_SPRG3 0x113 /* Special general register 3 */#define CPU_SPR_PVR 0x11f /* Processor version register */#define CPU_SPR_ZPR 0x3b0 /* Zone protection register */#define CPU_SPR_PID 0x3b1 /* Process ID */#define CPU_SPR_SGR 0x3b9 /* Storage guarded register */#define CPU_SPR_DCWR 0x3ba /* Data cache write-through register */#define CPU_SPR_TBHU 0x3cc /* Time base high user-mode */#define CPU_SPR_TBLU 0x3cd /* Time base low user-mode */#define CPU_SPR_ICDBDR 0x3d3 /* Inst cache debug data register */#define CPU_SPR_ESR 0x3d4 /* Exception syndrome register */#define CPU_SPR_DEAR 0x3d5 /* Data error address register */#define CPU_SPR_EVPR 0x3d6 /* Exception vector prefix register */#define CPU_SPR_CDBCR 0x3d7 /* Cache debug control register */#define CPU_SPR_TSR 0x3d8 /* Timer status register */#define CPU_SPR_TCR 0x3da /* Timer control register */#define CPU_SPR_PIT 0x3db /* Programmable interval timer */#define CPU_SPR_TBHI 0x3dc /* Time base high */#define CPU_SPR_TBLO 0x3dd /* Time base low */#define CPU_SPR_SRR2 0x3de /* Save/restore register 2 */#define CPU_SPR_SRR3 0x3df /* Save/restore register 3 */#define CPU_SPR_DBSR 0x3f0 /* Debug status register */#define CPU_SPR_DBCR 0x3f2 /* Debug control register */#define CPU_SPR_IAC1 0x3f4 /* Instruction address compare 1 */#define CPU_SPR_IAC2 0x3f5 /* Instruction address compare 2 */#define CPU_SPR_DAC1 0x3f6 /* Data address compare 1 */#define CPU_SPR_DAC2 0x3f7 /* Data address compare 2 */#define CPU_SPR_DCCR 0x3fa /* Data cache cacheability register */#define CPU_SPR_ICCR 0x3fb /* Inst cache cacheability register */#define CPU_SPR_PBL1 0x3fc /* Protection bound lower 1 */#define CPU_SPR_PBU1 0x3fd /* Protection bound upper 1 */#define CPU_SPR_PBL2 0x3fe /* Protection bound lower 2 */#define CPU_SPR_PBU2 0x3ff /* Protection bound upper 2 *//** Device Control Registers.*/#define CPU_DCR_EXISR 0x040 /* External interrupt status register */#define CPU_DCR_EXIER 0x042 /* External interrupt enable register */#define CPU_DCR_BRH0 0x070 /* Bank register high 0 */#define CPU_DCR_BRH1 0x071 /* Bank register high 1 */#define CPU_DCR_BRH2 0x072 /* Bank register high 2 */#define CPU_DCR_BRH3 0x073 /* Bank register high 3 */#define CPU_DCR_BRH4 0x074 /* Bank register high 4 */#define CPU_DCR_BRH5 0x075 /* Bank register high 5 */#define CPU_DCR_BRH6 0x076 /* Bank register high 6 */#define CPU_DCR_BRH7 0x077 /* Bank register high 7 */#define CPU_DCR_BR0 0x080 /* Bank register 0 */#define CPU_DCR_BR1 0x081 /* Bank register 1 */#define CPU_DCR_BR2 0x082 /* Bank register 2 */#define CPU_DCR_BR3 0x083 /* Bank register 3 */#define CPU_DCR_BR4 0x084 /* Bank register 4 */#define CPU_DCR_BR5 0x085 /* Bank register 5 */#define CPU_DCR_BR6 0x086 /* Bank register 6 */#define CPU_DCR_BR7 0x087 /* Bank register 7 */#define CPU_DCR_BEAR 0x090 /* Bus error address register */#define CPU_DCR_BESR 0x091 /* Bus error syndrome register */#define CPU_DCR_IOCR 0x0a0 /* I/O configuration register */#define CPU_DCR_DMACR0 0x0c0 /* DMA channel control register 0 */#define CPU_DCR_DMACT0 0x0c1 /* DMA count register 0 */#define CPU_DCR_DMADA0 0x0c2 /* DMA destination address register 0 */#define CPU_DCR_DMASA0 0x0c3 /* DMA source address register 0 */#define CPU_DCR_DMACC0 0x0c4 /* DMA chained count 0 */#define CPU_DCR_DMACR1 0x0c8 /* DMA channel control register 1 */#define CPU_DCR_DMACT1 0x0c9 /* DMA count register 1 */#define CPU_DCR_DMADA1 0x0ca /* DMA destination address register 1 */#define CPU_DCR_DMASA1 0x0cb /* DMA source address register 1 */#define CPU_DCR_DMACC1 0x0cc /* DMA chained count 1 */#define CPU_DCR_DMACR2 0x0d0 /* DMA channel control register 2 */#define CPU_DCR_DMACT2 0x0d1 /* DMA count register 2 */#define CPU_DCR_DMADA2 0x0d2 /* DMA destination address register 2 */#define CPU_DCR_DMASA2 0x0d3 /* DMA source address register 2 */#define CPU_DCR_DMACC2 0x0d4 /* DMA chained count 2 */#define CPU_DCR_DMACR3 0x0d8 /* DMA channel control register 3 */#define CPU_DCR_DMACT3 0x0d9 /* DMA count register 3 */#define CPU_DCR_DMADA3 0x0da /* DMA destination address register 3 */#define CPU_DCR_DMASA3 0x0db /* DMA source address register 3 */#define CPU_DCR_DMACC3 0x0dc /* DMA chained count 3 */#define CPU_DCR_DMASR 0x0e0 /* DMA status register *//** BESR definitions.*/#define CPU_BESR_DSES 0x80000000 /* Data-side error */#define CPU_BESR_DMES 0x40000000 /* DMA operation error */#define CPU_BESR_RWS 0x20000000 /* Read/write status */#define CPU_BESR_ET 0x1c000000 /* Error type mask */#define CPU_BESR_ET_PROT 0x00000000 /* Protection violation */#define CPU_BESR_ET_PARITY 0x04000000 /* Parity error */#define CPU_BESR_ET_NOTCONFIG 0x08000000 /* Access not configured */#define CPU_BESR_ET_BUS 0x10000000 /* Bus error */#define CPU_BESR_ET_TIMEOUT 0x18000000 /* Bus timeout *//** Bank Register common definitions.** Note that only BR4..BR7 may be used for DRAM. BR0..BR3 are* hard-wired for SRAM; their CPU_BR_SD bits are ignored when* written, and return zero when read.*/#define CPU_BR_BAS 0xff000000 /* Base address of bank */#define CPU_BR_BS 0x00e00000 /* Bank size */#define CPU_BR_BU_WRITE 0x00100000 /* Bank is writeable */#define CPU_BR_BU_READ 0x00080000 /* Bank is readable */#define CPU_BR_SLF 0x00040000 /* Sequential line fill */#define CPU_BR_BW 0x00018000 /* Bus width */#define CPU_BR_SD 0x00000001 /* Set for SRAM */#define CPU_BR_BASE_ADDR(n) (((n)&0x0ff00000)<<4) /* Macro to set base addr *//** Bank Register bank size definitions.*/#define CPU_BR_BS_1MB 0x00000000#define CPU_BR_BS_2MB 0x00200000#define CPU_BR_BS_4MB 0x00400000#define CPU_BR_BS_8MB 0x00600000#define CPU_BR_BS_16MB 0x00800000#define CPU_BR_BS_32MB 0x00a00000#define CPU_BR_BS_64MB 0x00c00000/** Bank Register bus width definitions.*/#define CPU_BR_BW_8 0x00000000 /* 8-bit bus */#define CPU_BR_BW_16 0x00008000 /* 16-bit bus */#define CPU_BR_BW_32 0x00010000 /* 32-bit bus *//** Bank Register SRAM definitions.*/#define CPU_BR_SRAM_SLF 0x00040000 /* Sequential line fill */#define CPU_BR_SRAM_BME 0x00020000 /* Burst mode enable */#define CPU_BR_SRAM_RE 0x00004000 /* Ready enable */#define CPU_BR_SRAM_TWT 0x00003f00 /* Transfer wait */#define CPU_BR_SRAM_CSN 0x00000080 /* Chip select timing */#define CPU_BR_SRAM_OEN 0x00000040 /* Output enable timing */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -