xref: /linux/arch/x86/kernel/idt.c (revision 16bc18d895cee95f12bd722e5a3016676dfcf084)
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