/*
 * Copyright (c) 2026, Chloe M.
 * Provided under the BSD-3 clause.
 *
 * Description: Interrupt gate management
 * Author:      Chloe M.
 */

#ifndef _MACHINE_IDT_H_
#define _MACHINE_IDT_H_ 1

#define IDT_INT_GATE    0x8E
#define IDT_TRAP_GATE   0x8F
#define IDT_USER_GATE   0xEE

#ifndef __ASSEMBLER__
/*
 * Set an IDT entry
 *
 * @Vector:  Interrupt vector to set
 * @IsrBase: ISR base to set
 * @Type:    Gate type
 * @Ist:     Interrupt stack table index
 */
VOID MdIdtSetEntry(UCHAR Vector, UPTR IsrBase, UCHAR Type, UCHAR Ist);

/*
 * Load the IDT
 */
VOID MdIdtLoad(VOID);

#endif  /* !__ASSEMBLER__ */
#endif  /* !_MACHINE_IDT_H_ */
