string: factorize skip_spaces and export it to be generally available
[safe/jmp/linux-2.6] / arch / x86 / kernel / doublefault_32.c
index 40978af..37250fe 100644 (file)
@@ -17,7 +17,7 @@ static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE];
 
 static void doublefault_fn(void)
 {
-       struct Xgt_desc_struct gdt_desc = {0, 0};
+       struct desc_ptr gdt_desc = {0, 0};
        unsigned long gdt, tss;
 
        store_gdt(&gdt_desc);
@@ -27,20 +27,19 @@ static void doublefault_fn(void)
 
        if (ptr_ok(gdt)) {
                gdt += GDT_ENTRY_TSS << 3;
-               tss = *(u16 *)(gdt+2);
-               tss += *(u8 *)(gdt+4) << 16;
-               tss += *(u8 *)(gdt+7) << 24;
+               tss = get_desc_base((struct desc_struct *)gdt);
                printk(KERN_EMERG "double fault, tss at %08lx\n", tss);
 
                if (ptr_ok(tss)) {
-                       struct i386_hw_tss *t = (struct i386_hw_tss *)tss;
+                       struct x86_hw_tss *t = (struct x86_hw_tss *)tss;
 
-                       printk(KERN_EMERG "eip = %08lx, esp = %08lx\n", t->eip, t->esp);
+                       printk(KERN_EMERG "eip = %08lx, esp = %08lx\n",
+                              t->ip, t->sp);
 
                        printk(KERN_EMERG "eax = %08lx, ebx = %08lx, ecx = %08lx, edx = %08lx\n",
-                               t->eax, t->ebx, t->ecx, t->edx);
+                               t->ax, t->bx, t->cx, t->dx);
                        printk(KERN_EMERG "esi = %08lx, edi = %08lx\n",
-                               t->esi, t->edi);
+                               t->si, t->di);
                }
        }
 
@@ -50,21 +49,21 @@ static void doublefault_fn(void)
 
 struct tss_struct doublefault_tss __cacheline_aligned = {
        .x86_tss = {
-               .esp0           = STACK_START,
+               .sp0            = STACK_START,
                .ss0            = __KERNEL_DS,
                .ldt            = 0,
                .io_bitmap_base = INVALID_IO_BITMAP_OFFSET,
 
-               .eip            = (unsigned long) doublefault_fn,
+               .ip             = (unsigned long) doublefault_fn,
                /* 0x2 bit is always set */
-               .eflags         = X86_EFLAGS_SF | 0x2,
-               .esp            = STACK_START,
+               .flags          = X86_EFLAGS_SF | 0x2,
+               .sp             = STACK_START,
                .es             = __USER_DS,
                .cs             = __KERNEL_CS,
                .ss             = __KERNEL_DS,
                .ds             = __USER_DS,
                .fs             = __KERNEL_PERCPU,
 
-               .__cr3          = __pa(swapper_pg_dir)
+               .__cr3          = __pa_nodebug(swapper_pg_dir),
        }
 };