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
 |