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