📄 cp0.h
字号:
/* * Copyright (C) 1996-1998 by the Board of Trustees * of Leland Stanford Junior University. * * This file is part of the SimOS distribution. * See LICENSE file for terms of the license. * *//***************************************************************** * cp0.h * * Definitions for CP0 - TLB and exception handling * Written for BIG ENDIAN!!! * * $Author: bosch $ * $Date: 1998/02/10 00:30:18 $ *****************************************************************/#ifndef CP0_H#define CP0_H/* These two codes are used in mem_driver_simos.c to alert it to *//* backdoor references */#define NORMAL_CODE 0#define BACKDOOR_CODE 0x100#define EXCEPTION_CODE 0x200/* This can only take on values up to NTLBENTRIES, but use of *//* registers, and possible problems with sign extension make using a *//* whole word make the most sense */typedef uint IDX ;extern int exceptionDuringBackdoor; /* This is called to allow access to the hash talbe */IDX Tlb_Lookup( int cpuNum, uint region, VPN, ASID );/* This is called after Tlb_Init when we are jumping into Embra to set *//* up the entries in the TLB hash table, and the quick check*/extern void Em_Tlb_Init( int cpuNum, int swtch );/* This is called when we switch out of mshade, so we don't have stale data*//* if/when we re-enter mshade */extern void Em_Tlb_Clear( int cpuNum );/* Global CP0 Functions *//* These are called from translated code */C_LINK void Em_RestoreFromException(int cpuNum, VA restoreAddr);C_LINK uint Em_ProbeTLB(int cpuNum);C_LINK uint Em_ReadTLBEntry(int cpuNum);C_LINK uint Em_WriteRandomTLBEntry(int cpuNum);C_LINK uint Em_WriteTLBEntry(int cpuNum);C_LINK uint Em_MoveToC0(int cpuNum, Inst instr, VA nextPC );/*C_LINK void MoveFromC0(int cpuNum, unsigned gp_reg, unsigned co_reg );*//* Is this entry writable (dirty) in the TLB? */int Em_Is_Tlb_Writable( int cpuNum, VA vAddr, ASID asid );/* Is this entry readable (valid) in the TLB? */int Em_Is_Tlb_Readable( int cpuNum, VA vAddr, ASID asid );void Em_RaiseC1Unusable( int cpuNum );void Em_EXCEPTION(int cpuNum, int, int);C_LINK void Em_RaiseEXCEPTION(int cpuNum, int code, int ce);typedef enum {ACT_DWRITE, ACT_DREAD, ACT_IREAD} Em_accesstype;extern uint Em_TranslateVirtual(int cpuNum, VA, PA*, Em_accesstype);struct PgMaskStruct{ Reg mask; uint loBit; uint offset_mask;};extern struct PgMaskStruct PgSz[];#endif /* CP0_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -