static inline void setup_percpu_segment(int cpu) { #ifdef CONFIG_X86_32 struct desc_struct d = GDT_ENTRY_INIT(0x8092, per_cpu_offset(cpu), 0xFFFFF); write_gdt_entry(get_cpu_gdt_rw(cpu), GDT_ENTRY_PERCPU, &d, DESCTYPE_S); #endif }
" pushl %ecx \n" " pushl %ebx \n" " pushl %eax \n" " lcallw *pnp_bios_callpoint\n" " addl $16, %esp \n" " lret \n" ".previous \n"); #define Q2_SET_SEL(cpu, selname, address, size) \ do { \ struct desc_struct *gdt = get_cpu_gdt_table((cpu)); \ set_desc_base(&gdt[(selname) >> 3], (u32)(address)); \ set_desc_limit(&gdt[(selname) >> 3], (size) - 1); \ } while(0) static const struct desc_struct bad_bios_desc = GDT_ENTRY_INIT(0x4093, (unsigned long)__va(0x400UL), PAGE_SIZE - 0x400 - 1); /* * At some point we want to use this stack frame pointer to unwind * after PnP BIOS oopses. */ __visible u32 pnp_bios_fault_esp; __visible u32 pnp_bios_fault_eip; __visible u32 pnp_bios_is_utter_crap = 0; static spinlock_t pnp_bios_lock; /* * Support Functions */