Version 2.0.0-0

idt Reference

File
core/xeos/include/xeos/hal/idt.h
Date
Wednesday, June 25, 2014
Includes

Tasks

XEOS_HAL_IDT_GetISREntry Top

Gets an ISR entry

XEOS_HAL_IDT_ISREntryRef XEOS_HAL_IDT_GetISREntry( uint8_t isr );

Parameters
  • isr
    The ISR number
Return value

The ISR entry or NULL

XEOS_HAL_IDT_Init Top

Initializes the Interrupt Descriptor Table (IDT)

void XEOS_HAL_IDT_Init( void );

XEOS_HAL_IDT_ISREntryGetHandler Top

Gets the function handler of an ISR entry

XEOS_HAL_IDT_ISRHandler XEOS_HAL_IDT_ISREntryGetHandler( XEOS_HAL_IDT_ISREntryRef entry );

Parameters
  • entry
    The ISR entry
Return value

The function handler of the ISR entry or NULL

XEOS_HAL_IDT_ISREntryGetIndex Top

Gets the index of an ISR entry in the IDT

int XEOS_HAL_IDT_ISREntryGetIndex( XEOS_HAL_IDT_ISREntryRef entry );

Parameters
  • entry
    The ISR entry
Return value

THe ISR entry index

XEOS_HAL_IDT_ISREntryGetPresent Top

Gets the present flag of an ISR entry

bool XEOS_HAL_IDT_ISREntryGetPresent( XEOS_HAL_IDT_ISREntryRef entry );

Parameters
  • entry
    The ISR entry
Return value

The present flag of the ISR entry

XEOS_HAL_IDT_ISREntryGetPrivilegeLevel Top

Gets the privilege level of an ISR entry

XEOS_HAL_IDT_ISREntryPrivilegeLevel XEOS_HAL_IDT_ISREntryGetPrivilegeLevel( XEOS_HAL_IDT_ISREntryRef entry );

Parameters
  • entry
    The ISR entry
Return value

The privilege level of the ISR entry

XEOS_HAL_IDT_ISREntryGetSelector Top

Gets the code segment selector of an ISR entry

uint16_t XEOS_HAL_IDT_ISREntryGetSelector( XEOS_HAL_IDT_ISREntryRef entry );

Parameters
  • entry
    The ISR entry
Return value

The code segment selector of the ISR entry

XEOS_HAL_IDT_ISREntryGetType Top

Gets the type of an ISR entry

XEOS_HAL_IDT_ISREntryType XEOS_HAL_IDT_ISREntryGetType( XEOS_HAL_IDT_ISREntryRef entry );

Parameters
  • entry
    The ISR entry
Return value

The type of the ISR entry

XEOS_HAL_IDT_ISREntryPrivilegeLevel Top

Gets the privilege level of an ISR entry

XEOS_HAL_IDT_ISREntryPrivilegeLevel XEOS_HAL_IDT_ISREntryGetPrivilegeLevel( XEOS_HAL_IDT_ISREntryRef entry );

Parameters
  • entry
    The ISR entry
Return value

The privilege level of the ISR entry

XEOS_HAL_IDT_ISREntrySetHandler Top

Sets the function handler for an ISR entry

void XEOS_HAL_IDT_ISREntrySetHandler( XEOS_HAL_IDT_ISREntryRef entry, XEOS_HAL_IDT_ISRHandler handler );

Parameters
  • entry
    The ISR entry
  • handler
    The ISR function handler

XEOS_HAL_IDT_ISREntrySetPresent Top

Sets the present flag for an ISR entry

void XEOS_HAL_IDT_ISREntrySetPresent( XEOS_HAL_IDT_ISREntryRef entry, bool present );

Parameters
  • entry
    The ISR entry
  • present
    The present flag

XEOS_HAL_IDT_ISREntrySetPrivilegeLevel Top

Sets the privilege level of an ISR entry

void XEOS_HAL_IDT_ISREntrySetPrivilegeLevel( XEOS_HAL_IDT_ISREntryRef entry, XEOS_HAL_IDT_ISREntryPrivilegeLevel level );

Parameters
  • entry
    The ISR entry
  • level
    The privilege level

XEOS_HAL_IDT_ISREntrySetSelector Top

Sets the code segment selector of an ISR entry

void XEOS_HAL_IDT_ISREntrySetSelector( XEOS_HAL_IDT_ISREntryRef entry, uint16_t selector );

Parameters
  • entry
    The ISR entry
  • selector
    The code segment selector

XEOS_HAL_IDT_ISREntrySetType Top

Sets the type of an ISR entry

void XEOS_HAL_IDT_ISREntrySetType( XEOS_HAL_IDT_ISREntryRef entry, XEOS_HAL_IDT_ISREntryType type );

Parameters
  • entry
    The ISR entry
  • type
    The ISR entry type

XEOS_HAL_IDT_Reload Top

Installs/Reload the Interrupt Descriptor Table (IDT)

void XEOS_HAL_IDT_Reload( void );

XEOS_HAL_IDT_SetISREntry Top

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 );

Parameters
  • isr
    The ISR number
  • selector
    The code segment selector
  • type
    The ISR entry type
  • level
    The privilege level
  • present
    The present flag
  • handler
    The ISR function handler

Types

XEOS_HAL_IDT_ISREntryPrivilegeLevel Top

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;

Constants
  • XEOS_HAL_IDT_ISREntryPrivilegeLevelRing0
    Ring 0
  • XEOS_HAL_IDT_ISREntryPrivilegeLevelRing1
    Ring 1
  • XEOS_HAL_IDT_ISREntryPrivilegeLevelRing2
    Ring 2
  • XEOS_HAL_IDT_ISREntryPrivilegeLevelRing3
    Ring 3

XEOS_HAL_IDT_ISREntryRef Top

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

XEOS_HAL_IDT_ISREntryType Top

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;

Constants
  • XEOS_HAL_IDT_ISREntryTypeUnknown
    Unknown ISR entry
  • XEOS_HAL_IDT_ISREntryTypeTask32
    32 bits task gate
  • XEOS_HAL_IDT_ISREntryTypeInterrupt16
    16 bits interrupt gate
  • XEOS_HAL_IDT_ISREntryTypeTrap16
    16 bits trap gate
  • XEOS_HAL_IDT_ISREntryTypeInterrupt32
    32 bits interrupt gate
  • XEOS_HAL_IDT_ISREntryTypeTrap32
    32 bits trap gate

XEOS_HAL_IDT_ISRHandler Top

Handler function for an ISR entry

typedef void ( *XEOS_HAL_IDT_ISRHandler )( uint8_t isr, XEOS_HAL_CPU_Registers *registers );

Parameters
  • isr
    The ISR number
  • registers
    The processor registers

Macros

__XEOS_HAL_IDT_H__ Top

#define __XEOS_HAL_IDT_H__

XEOS_HAL_IDT_MAX_DESCRIPTORS Top

The maximum number of descriptors in the IDT

#define XEOS_HAL_IDT_MAX_DESCRIPTORS 256