]> git.hungrycats.org Git - linux/commitdiff
[PATCH] x86-64 fixes for 2.5.75
authorAndi Kleen <ak@muc.de>
Sat, 12 Jul 2003 02:46:02 +0000 (19:46 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Sat, 12 Jul 2003 02:46:02 +0000 (19:46 -0700)
Some minimum critical fixes for x86-64:

- Make it compile for uni processor again
- Tell BIOS about long mode
- Fix 32bit IPC (broken by earlier patch)

arch/x86_64/boot/setup.S
arch/x86_64/ia32/ipc32.c
arch/x86_64/kernel/x8664_ksyms.c

index 1e10ed979dc26b284f6753350f7caa19c0b0debc..927358f007d19d8585bdd2b1640ca2c0d3a2420b 100644 (file)
@@ -350,6 +350,11 @@ long_mode_panic:
 sse_ok:
        popw    %ds
        
+# tell BIOS we want to go to long mode
+       movl  $0xec00,%eax      # declare target operating mode
+       movl  $2,%ebx           # long mode
+       int $0x15                       
+       
 # Get memory size (extended mem, kB)
 
        xorl    %eax, %eax
index 07e6a33b47f3bd5069528b30c8426413cd101218..cb83ac7c67c66fc25ad252d0cab600bf8bb7fb45 100644 (file)
@@ -271,7 +271,7 @@ semctl32 (int first, int second, int third, void *uptr)
                fourth.__pad = &s;
                old_fs = get_fs();
                set_fs(KERNEL_DS);
-               err = sys_semctl(first, second, third|IPC_64, fourth);
+               err = sys_semctl(first, second, third, fourth);
                set_fs(old_fs);
                if (!err)
                        err = put_semid((void *)A(pad), &s, version);
@@ -396,7 +396,7 @@ msgctl32 (int first, int second, void *uptr)
              case MSG_STAT:
                old_fs = get_fs();
                set_fs(KERNEL_DS);
-               err = sys_msgctl(first, second|IPC_64, (void *) &m64);
+               err = sys_msgctl(first, second, (void *) &m64);
                set_fs(old_fs);
                if (version == IPC_64) {
                        if (!access_ok(VERIFY_WRITE, up64, sizeof(*up64))) {
@@ -529,7 +529,7 @@ shmctl32 (int first, int second, void *uptr)
              case IPC_INFO:
                old_fs = get_fs();
                set_fs(KERNEL_DS);
-               err = sys_shmctl(first, second|IPC_64, (struct shmid_ds *)&smi);
+               err = sys_shmctl(first, second, (struct shmid_ds *)&smi);
                set_fs(old_fs);
 
                if (version == IPC_64) {
@@ -587,7 +587,7 @@ shmctl32 (int first, int second, void *uptr)
              case SHM_STAT:
                old_fs = get_fs();
                set_fs(KERNEL_DS);
-               err = sys_shmctl(first, second|IPC_64, (void *) &s64);
+               err = sys_shmctl(first, second, (void *) &s64);
                set_fs(old_fs);
                
                if (err < 0)
index 39bed8f71c07eefb0d6a48a077991995c5769159..4297388cd1cc9a6c3f33fd2fcd91029b177368c4 100644 (file)
@@ -214,5 +214,7 @@ EXPORT_SYMBOL(fake_node);
 
 EXPORT_SYMBOL(clear_page);
 
+#ifdef CONFIG_SMP
 EXPORT_SYMBOL(flush_tlb_page);
 EXPORT_SYMBOL_GPL(flush_tlb_all);
+#endif