feat(idt): add idt_entry, idt and idt_r structs
This commit is contained in:
		
							parent
							
								
									60800e71fd
								
							
						
					
					
						commit
						1e0e16d290
					
				
							
								
								
									
										35
									
								
								k/idt.h
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										35
									
								
								k/idt.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					#ifndef IDT_H
 | 
				
			||||||
 | 
					#define IDT_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IDT_NB_ENTRIES 32
 | 
				
			||||||
 | 
					#define IDT_SIZE (IDT_NB_ENTRIES * sizeof(struct idt_entry))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct idt_entry
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    uint16_t offset_1   : 16;
 | 
				
			||||||
 | 
					    uint16_t selector   : 16;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    uint8_t zero        : 8;    // unused, set to 0
 | 
				
			||||||
 | 
					    uint8_t type        : 3;    // gate type
 | 
				
			||||||
 | 
					    uint8_t size        : 1;
 | 
				
			||||||
 | 
					    uint8_t zero_2      : 1;    // set to 0 for interrupt and trap gates
 | 
				
			||||||
 | 
					    uint8_t desc_priv   : 2;    // Descriptor privilege
 | 
				
			||||||
 | 
					    uint8_t present     : 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    uint16_t offset_2   : 16;
 | 
				
			||||||
 | 
					} __attribute__ ((packed));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct idt
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    struct idt_entry entries[IDT_NB_ENTRIES];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct idt_r
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    uint16_t limit;
 | 
				
			||||||
 | 
					    uint32_t addr;
 | 
				
			||||||
 | 
					} __attribute__ ((packed));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif  /* !IDT_H */
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user