Thomas Gleixner | d8ed9d4 | 2017-08-28 08:47:43 +0200 | [diff] [blame] | 1 | /* |
| 2 | * Interrupt descriptor table related code |
| 3 | * |
| 4 | * This file is licensed under the GPL V2 |
| 5 | */ |
| 6 | #include <linux/interrupt.h> |
| 7 | |
| 8 | #include <asm/desc.h> |
| 9 | |
| 10 | /* Must be page-aligned because the real IDT is used in a fixmap. */ |
| 11 | gate_desc idt_table[IDT_ENTRIES] __page_aligned_bss; |
| 12 | |
Thomas Gleixner | 16bc18d | 2017-08-28 08:47:44 +0200 | [diff] [blame^] | 13 | struct desc_ptr idt_descr __ro_after_init = { |
| 14 | .size = (IDT_ENTRIES * 2 * sizeof(unsigned long)) - 1, |
| 15 | .address = (unsigned long) idt_table, |
| 16 | }; |
| 17 | |
Thomas Gleixner | d8ed9d4 | 2017-08-28 08:47:43 +0200 | [diff] [blame] | 18 | #ifdef CONFIG_X86_64 |
| 19 | /* No need to be aligned, but done to keep all IDTs defined the same way. */ |
| 20 | gate_desc debug_idt_table[IDT_ENTRIES] __page_aligned_bss; |
| 21 | |
Thomas Gleixner | d8ed9d4 | 2017-08-28 08:47:43 +0200 | [diff] [blame] | 22 | const struct desc_ptr debug_idt_descr = { |
| 23 | .size = IDT_ENTRIES * 16 - 1, |
| 24 | .address = (unsigned long) debug_idt_table, |
| 25 | }; |
| 26 | #endif |