You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#include "ioapic.h"
|
|
|
|
namespace IOAPIC {
|
|
/*! \brief IOAPIC registers memory mapped into the CPU's address space.
|
|
*
|
|
* Access to the actual IOAPIC registers can be obtained by performing the
|
|
* following steps:
|
|
* 1. Write the number of the IOAPIC register to the address stored in
|
|
* `IOREGSEL_REG`
|
|
* 2. Read the value from / write the value to the address referred to by
|
|
* `IOWIN_REG`.
|
|
*
|
|
* \see [IO-APIC manual](intel_ioapic.pdf#page=8)
|
|
*/
|
|
volatile Index *IOREGSEL_REG = reinterpret_cast<volatile Index *>(0xfec00000);
|
|
/// \copydoc IOREGSEL_REG
|
|
volatile Register *IOWIN_REG =
|
|
reinterpret_cast<volatile Register *>(0xfec00010);
|
|
|
|
// IOAPIC manual, p. 8
|
|
const Index IOAPICID_IDX = 0x00;
|
|
const Index IOREDTBL_IDX = 0x10;
|
|
|
|
const uint8_t slot_max = 24;
|
|
|
|
void init() {}
|
|
|
|
void config(uint8_t slot, Core::Interrupt::Vector vector,
|
|
TriggerMode trigger_mode, Polarity polarity) {
|
|
(void)slot;
|
|
(void)vector;
|
|
(void)trigger_mode;
|
|
(void)polarity;
|
|
}
|
|
|
|
void allow(uint8_t slot) { (void)slot; }
|
|
|
|
void forbid(uint8_t slot) { (void)slot; }
|
|
|
|
bool status(uint8_t slot) {
|
|
(void)slot;
|
|
return false;
|
|
}
|
|
} // namespace IOAPIC
|