⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysl1icacheparity.s

📁 MPC8560 for vxwork BSP
💻 S
字号:
/* Copyright 1984-2004 Wind River Systems, Inc. *//*modification history--------------------01a,10jun04,dtr  L1 Errata Fix created.*/	FUNC_EXPORT(sysIParityHandler)	FUNC_EXPORT(sysIParityHandlerEnd)	DATA_IMPORT(instrParityCount)	_WRS_TEXT_SEG_START#define DETECT_EXCHDL_ADRS(ivor)  \        mfspr   p0, IVPR;         \        mfspr   p1, ivor;         \        or      p1, p1, p0;       \        mfspr   p0, MCSRR0;       \        cmpw    p0, p1;           \        beq     faultDetected;/********************************************************************* * * sysIParityHandler - This routine is call for a machine check.  * This routine will invalidate the instruction cache for the address  * in MCSRRO. If only instruction parity error then it will return from * machine check else it will go to standard machine check handler. */ FUNC_BEGIN(sysIParityHandler)        /* Save registers used */             mtspr   SPRG4_W ,p0        mtspr   SPRG5_W ,p1        mfcr    p0        mtspr   SPRG6_W ,p0                    /* check for ICPERR */        mfspr   p1, MCSR        andis.  p1, p1, 0x4000        beq     ppcE500Mch_norm        /* check if mcsrr0 is pointing to 1st instr of exception handler */        DETECT_EXCHDL_ADRS(IVOR0)        DETECT_EXCHDL_ADRS(IVOR1)        DETECT_EXCHDL_ADRS(IVOR2)        DETECT_EXCHDL_ADRS(IVOR3)        DETECT_EXCHDL_ADRS(IVOR4)        DETECT_EXCHDL_ADRS(IVOR5)        DETECT_EXCHDL_ADRS(IVOR6)        DETECT_EXCHDL_ADRS(IVOR8)        DETECT_EXCHDL_ADRS(IVOR10)        DETECT_EXCHDL_ADRS(IVOR11)        DETECT_EXCHDL_ADRS(IVOR12)        DETECT_EXCHDL_ADRS(IVOR13)        DETECT_EXCHDL_ADRS(IVOR14)        DETECT_EXCHDL_ADRS(IVOR15)        DETECT_EXCHDL_ADRS(IVOR32)        DETECT_EXCHDL_ADRS(IVOR33)        DETECT_EXCHDL_ADRS(IVOR34)        DETECT_EXCHDL_ADRS(IVOR35)        /* p0 here has mcsrr0 value, round to cache line boundary */        rlwinm  p0, p0, 0, 0, 31 - CACHE_ALIGN_SHIFT         /* invalidate instruction cache */        icbi    r0, p0        isync#ifdef INCLUDE_SHOW_ROUTINES        /* Add 1 to instrParityCount to measure no of parity errors */         lis     p0, HIADJ(instrParityCount)        addi    p0, p0, LO(instrParityCount)        lwz     p1, 0(p0)        addi    p1, p1, 1        stw     p1, 0(p0)#endif        /* return after invalidate */        mfspr   p0, SPRG6_R        mtcr    p0        mfspr   p0, SPRG4_R        mfspr   p1, SPRG5_R        isync             rfmci /*.long   0x4c00004c*/ppcE500Mch_norm:        mfspr   p0, SPRG6_R        mtcr    p0        mfspr   p0, SPRG4_R        mfspr   p1, SPRG5_R        ba      0x200       /* _EXC_OFF_MACH */faultDetected:        /* rebooting, no need to save regs */        bl      chipErrataCpu29Print        li      p0, BOOT_NORMAL        b       sysToMonitor      /* reset */FUNC_END(sysIParityHandler)FUNC_LABEL(sysIParityHandlerEnd)	/* Branch to above handler copied to _EXC_OFF_END */FUNC_BEGIN(jumpIParity)	ba     sysIParityHandlerFUNC_END(jumpIParity)	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -