> +/* > + * This needs to use 'idt_table' rather than 'idt', and > + * thus use the _nonmapped_ version of the IDT, as the > + * Pentium F0 0F bugfix can have resulted in the mapped > + * IDT being write-protected. > + */ > +void set_intr_gate(unsigned int n, void *addr) > +{ > + _set_gate(idt_table+n,14,0,addr,__KERNEL_CS); > +} No need to duplicate the various set_*_gate functions into the subarchs. > +static void __init set_task_gate(unsigned int n, unsigned int gdt_entry) > +{ > + /* _set_gate(n, 5, 0, 0, (gdt_entry<<3)); */ > +} Looks weird, but can be handled in the low level function. -Andi