📄 rdi_armul.h
字号:
#define PUEvent 0x20000
#define PUEventSel (1 << (PUEvent >> 16))
#define PUEvent_Full 0x20001 /* PU fills causing Idle cycles */
#define PUEvent_Mispredict 0x20002 /* PU incorrectly predicts a branch */
#define PUEvent_Empty 0x20003 /* PU empties causing a stall */
/* Events form ARM8, ARM9 */
#define PipeEvent_Dependency 0x20004
/* Debug events */
#define DebugEvent 0x40000
#define DebugEventSel (1 << (DebugEvent >> 16))
#define DebugEvent_InToDebug 0x40001
#define DebugEvent_OutOfDebug 0x40002
#define DebugEvent_DebuggerChangedPC 0x40003
#define DebugEvent_InToSemihost 0x40004
#define DebugEvent_OutOfSemihost 0x40005
#define DebugEvent_TrickboxRead 0x40006
#define DebugEvent_TrickboxWrite 0x40007
#define DebugEvent_RunCodeSequence 0x40008
#define DebugEvent_EndCodeSequence 0x40009
/* These are very rare events, so we don't want to
* mix them with CoreEvents. */
#define ConfigEvent 0x50000
#define ConfigEventSel (1 << (ConfigEvent >> 16))
#define ConfigEvent_AllLoaded 0x50001
/* Note that ConfigEvent_Reset is sent to all listeners in a
* poorly-defined order. Any model which does something to other models
* (e.g. pagetables) should register an ARMulCallbackID_PrioritisedReset.
*/
#define ConfigEvent_Reset 0x50002
#define ConfigEvent_VectorsLoaded 0x50003 /* from semihost to FPE. */
#ifdef NotYet
# define ConfigEvent_ThingLoaded 0x50004 /* data1 tells which thing. */
#endif
#define ConfigEvent_EndiannessChanged 0x50005
/* This means the plugins are about to be unloaded (lots of closeagent()
* calls are about to happen. It can be used by memory-models which
* want to save their contents before the base-memory-model is removed. */
#define ConfigEvent_AboutToClose 0x50006
#define ConfigEvent_RouteLinks 0x50007 /* data1:0=>make, data1:1=>check. */
#define ConfigEvent_HighVecChanged 0x50008
/* Trace events */
#define TraceEvent 0x60000
#define TraceEventSel (1 << (TraceEvent >> 16))
#define TraceEvent_TraceLine 0x60001
/* Signals, in the same order as RDIPropID_ARMSignal_RESET ...
* (see rdi_priv.h)
* NB These are signals into the core.
*/
#define SignalEvent 0x7000
#define SignalEventSel (1 << (SignalEvent >> 16))
#define SignalEvent_RESET 0x7001
#define SignalEvent_UNDEF 0x7002
#define SignalEvent_SWI 0x7003 /
#define SignalEvent_PABORT 0x7004
#define SignalEvent_DABORT 0x7005
#define SignalEvent_SE 0x7006
#define SignalEvent_IRQ 0x7007
#define SignalEvent_FIQ 0x7008
#define SignalEvent_BreakPt 0x7009
#define SignalEvent_WatchPt 0x700A
#define SignalEvent_Stop 0x700B
/* There may be more, later. */
/* Sent by cycle-callable core models. */
#define CoreEvent_Dependency PipeEvent_Dependency
/* User defined events */
#define UserEvent_Base 0x100000
#define UserEventSel (1 << (UserEvent_Base >> 16))
#define UserEvent_Top 0x10ffff
/* EventSel's are restricted to 32 bits */
#define SelectableEvent_Max 0x1fFFFF
/*
* Function: RDIInfo_RegisterRDIInfoExtension
* Purpose: Register an "unknown" RDI info handler.
*
* Handle: Module or Agent.
*
* Params:
* In: (RDI_InfoProc *)arg1 - the infoproc.
* (void*)arg2 - the handle.
*
* Returns: RDIError_NoError: Callback registered
* RDIError_UnimplementedMessage: Callback not registered
*/
/*
* Function: RDIInfo_AllLoaded
* Purpose: Announce that all models have been instantiated,
* and all links have been created,
* and memory can be written by PageTables or Demon.
* Handle: Agent or Module.
* Params: none.
* Returns: RDIError_UnableToInitialise: Fatal error.
* anything else: Ok.
* NB Each SORDI target contains its own Agent, and it is the responsiblity
* of that agent to pass this call on to all sub-agents it has loaded.
* An Agent may pass the call on to the modules it created, but for
* simple peripherals it services the call itself.
* This call is sent as the last action of ARMulator's OpenAgent.
*/
#define RDIInfo_AllLoaded (ARMulInfo_Base+7) /*0x0767*/
#define RDIInfo_InstallRDIInfoExtension (ARMulInfo_Base+8) /*0x0768*/
#define RDIInfo_RemoveRDIInfoExtension (ARMulInfo_Base+9) /*0x0769*/
#define RDIInfo_AddARMulPropertyDesc (ARMulInfo_Base+10) /*0x076A*/
/*
* Sent by the top-level agent to all the plugin agents it owns just before
* CloseAgent is called on them all.
* (in armiss/armrdi.c, and armul810/multirdi.c - should it be there?).
* Allows them to shut down cleanly before all links become invalid.
* I don't want plugin-agents to have to register to get this.
*/
#define RDIInfo_AboutToClose (ARMulInfo_Base+11) /*0x076B*/
/*
* Function: RDIInfo_QueryMethod
* Purpose: asks the target module or agent for an ARMul_Method
* (see armulif/armul_method.h).
*
* Handle: Module or Agent.
*
* Params:
* In: (char const *)arg1 - "name:type" of requested method.
* Out: *(ARMul_Method*)arg2 - Method.
*
* Returns: RDIError_NoError: *arg2 filled in.
* RDIError_UnimplementedMessage: requested method not found.
*/
#define RDIInfo_QueryMethod (ARMulInfo_Base+12) /*0x076C*/
/*
* Function: RDIInfo_RouteLinks
* Called twice before 'AllLoaded' but after all instances created.
* *arg1 is
* 0 : Create links.
* 1 : Check all expected links are created.
*/
#define RDIInfo_RouteLinks (ARMulInfo_Base+13) /*0x076D*/
/*
* Function: RDIInfo_DebuggerChanged
* Handle: Module or Agent.
*
* Params:
* In: *(ARMWord *)arg1 - what changed - see enum below.
* (void*)arg2 - pointer to new data.
*
* Returns: RDIError_UnimplementedMessage ( we want to pass this
* everywhere we can ).
*
* So far, this is only called when the debugger gives the core a different
* RDI_HostosInterface during RDI_Open from the one it gave us during
* OpenAgent. (armsd doesn't do that, but AXD does).
*/
#define RDIInfo_DebuggerChanged (ARMulInfo_Base+14) /*0x076E*/
enum DebuggerChanged_Enum {
DebuggerChanged_Hostif = 0,
DebuggerChanged_Config,
DebuggerChanged_DebuggerEndianness
};
/*
* Function: RDIInfo_SimRdiRegistration
* Handle: Agent/Module
*
* Params:
* In: *(ARMword*)arg1 - == SIMRDI_REGISTRATION_SIGNATURE
* (SimRdiRegistrationProcVec*)arg2 - pointer to registration proc vec
*
* Returns: RDIError_UnimplementedMessage ( we want to pass this
* everywhere we can ).
*
* This is broadcast to all modules, the proc vec passed in arg2
* should be used to register what capabilities it can. See the
* header file armulif/simrdi_registration.h
*/
#define RDIInfo_SimRdiRegistration (ARMulInfo_Base+15) /*0x076F*/
/* #define RDIInfo_ */
/* Extra index words are cpnum, coproif, cpreg. */
/* #ARMulProp_CoproRegisterAccess (RDIPropID_ARMulProp_Base+2) */
#if defined(__cplusplus) && !defined(CLX_CPP_LINKAGE)
}
#endif
#endif /* def rdi_armul__h */
/* EOF rdi_armul.h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -