Gets an ISR entry
XEOS_HAL_IDT_ISREntryRef XEOS_HAL_IDT_GetISREntry(
uint8_t isr );
The ISR entry or NULL
Initializes the Interrupt Descriptor Table (IDT)
void XEOS_HAL_IDT_Init(
void );
Gets the function handler of an ISR entry
XEOS_HAL_IDT_ISRHandler XEOS_HAL_IDT_ISREntryGetHandler(
XEOS_HAL_IDT_ISREntryRef entry );
The function handler of the ISR entry or NULL
Gets the index of an ISR entry in the IDT
int XEOS_HAL_IDT_ISREntryGetIndex(
XEOS_HAL_IDT_ISREntryRef entry );
THe ISR entry index
Gets the present flag of an ISR entry
bool XEOS_HAL_IDT_ISREntryGetPresent(
XEOS_HAL_IDT_ISREntryRef entry );
The present flag of the ISR entry
Gets the privilege level of an ISR entry
XEOS_HAL_IDT_ISREntryPrivilegeLevel XEOS_HAL_IDT_ISREntryGetPrivilegeLevel(
XEOS_HAL_IDT_ISREntryRef entry );
The privilege level of the ISR entry
Gets the code segment selector of an ISR entry
uint16_t XEOS_HAL_IDT_ISREntryGetSelector(
XEOS_HAL_IDT_ISREntryRef entry );
The code segment selector of the ISR entry
Gets the type of an ISR entry
XEOS_HAL_IDT_ISREntryType XEOS_HAL_IDT_ISREntryGetType(
XEOS_HAL_IDT_ISREntryRef entry );
The type of the ISR entry
Gets the privilege level of an ISR entry
XEOS_HAL_IDT_ISREntryPrivilegeLevel XEOS_HAL_IDT_ISREntryGetPrivilegeLevel(
XEOS_HAL_IDT_ISREntryRef entry );
The privilege level of the ISR entry
Sets the function handler for an ISR entry
void XEOS_HAL_IDT_ISREntrySetHandler(
XEOS_HAL_IDT_ISREntryRef entry,
XEOS_HAL_IDT_ISRHandler handler );
Sets the present flag for an ISR entry
void XEOS_HAL_IDT_ISREntrySetPresent(
XEOS_HAL_IDT_ISREntryRef entry,
bool present );
Sets the privilege level of an ISR entry
void XEOS_HAL_IDT_ISREntrySetPrivilegeLevel(
XEOS_HAL_IDT_ISREntryRef entry,
XEOS_HAL_IDT_ISREntryPrivilegeLevel level );
Sets the code segment selector of an ISR entry
void XEOS_HAL_IDT_ISREntrySetSelector(
XEOS_HAL_IDT_ISREntryRef entry,
uint16_t selector );
Sets the type of an ISR entry
void XEOS_HAL_IDT_ISREntrySetType(
XEOS_HAL_IDT_ISREntryRef entry,
XEOS_HAL_IDT_ISREntryType type );
Installs/Reload the Interrupt Descriptor Table (IDT)
void XEOS_HAL_IDT_Reload(
void );
Gets an ISR entry
void XEOS_HAL_IDT_SetISREntry(
uint8_t isr,
uint16_t selector,
XEOS_HAL_IDT_ISREntryType type,
XEOS_HAL_IDT_ISREntryPrivilegeLevel level,
bool present,
XEOS_HAL_IDT_ISRHandler handler );
Privilege level of an ISR entry
typedef enum {
XEOS_HAL_IDT_ISREntryPrivilegeLevelRing0 = 0x00,
XEOS_HAL_IDT_ISREntryPrivilegeLevelRing1 = 0x01,
XEOS_HAL_IDT_ISREntryPrivilegeLevelRing2 = 0x02,
XEOS_HAL_IDT_ISREntryPrivilegeLevelRing3 = 0x03
} XEOS_HAL_IDT_ISREntryPrivilegeLevel;
Opaque type for an ISR entry
#ifdef __LP64__
typedef struct __XEOS_HAL_IDT_ISREntry64 * XEOS_HAL_IDT_ISREntryRef;
#else
typedef struct __XEOS_HAL_IDT_ISREntry32 * XEOS_HAL_IDT_ISREntryRef;
#endif
Type for an ISR entry
typedef enum {
XEOS_HAL_IDT_ISREntryTypeUnknown = 0x00,
XEOS_HAL_IDT_ISREntryTypeTask32 = 0x05,
XEOS_HAL_IDT_ISREntryTypeInterrupt16 = 0x06,
XEOS_HAL_IDT_ISREntryTypeTrap16 = 0x07,
XEOS_HAL_IDT_ISREntryTypeInterrupt32 = 0x0E,
XEOS_HAL_IDT_ISREntryTypeTrap32 = 0x0F
} XEOS_HAL_IDT_ISREntryType;
Handler function for an ISR entry
typedef void ( *XEOS_HAL_IDT_ISRHandler )(
uint8_t isr,
XEOS_HAL_CPU_Registers *registers );
The maximum number of descriptors in the IDT
#define XEOS_HAL_IDT_MAX_DESCRIPTORS 256