Commit 4ad938aa authored by Andi Kleen's avatar Andi Kleen Committed by Linus Torvalds

[PATCH] x86-64 fixes for 2.5.75

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)
parent 209f0abb
...@@ -350,6 +350,11 @@ long_mode_panic: ...@@ -350,6 +350,11 @@ long_mode_panic:
sse_ok: sse_ok:
popw %ds 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) # Get memory size (extended mem, kB)
xorl %eax, %eax xorl %eax, %eax
......
...@@ -271,7 +271,7 @@ semctl32 (int first, int second, int third, void *uptr) ...@@ -271,7 +271,7 @@ semctl32 (int first, int second, int third, void *uptr)
fourth.__pad = &s; fourth.__pad = &s;
old_fs = get_fs(); old_fs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
err = sys_semctl(first, second, third|IPC_64, fourth); err = sys_semctl(first, second, third, fourth);
set_fs(old_fs); set_fs(old_fs);
if (!err) if (!err)
err = put_semid((void *)A(pad), &s, version); err = put_semid((void *)A(pad), &s, version);
...@@ -396,7 +396,7 @@ msgctl32 (int first, int second, void *uptr) ...@@ -396,7 +396,7 @@ msgctl32 (int first, int second, void *uptr)
case MSG_STAT: case MSG_STAT:
old_fs = get_fs(); old_fs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
err = sys_msgctl(first, second|IPC_64, (void *) &m64); err = sys_msgctl(first, second, (void *) &m64);
set_fs(old_fs); set_fs(old_fs);
if (version == IPC_64) { if (version == IPC_64) {
if (!access_ok(VERIFY_WRITE, up64, sizeof(*up64))) { if (!access_ok(VERIFY_WRITE, up64, sizeof(*up64))) {
...@@ -529,7 +529,7 @@ shmctl32 (int first, int second, void *uptr) ...@@ -529,7 +529,7 @@ shmctl32 (int first, int second, void *uptr)
case IPC_INFO: case IPC_INFO:
old_fs = get_fs(); old_fs = get_fs();
set_fs(KERNEL_DS); 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); set_fs(old_fs);
if (version == IPC_64) { if (version == IPC_64) {
...@@ -587,7 +587,7 @@ shmctl32 (int first, int second, void *uptr) ...@@ -587,7 +587,7 @@ shmctl32 (int first, int second, void *uptr)
case SHM_STAT: case SHM_STAT:
old_fs = get_fs(); old_fs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
err = sys_shmctl(first, second|IPC_64, (void *) &s64); err = sys_shmctl(first, second, (void *) &s64);
set_fs(old_fs); set_fs(old_fs);
if (err < 0) if (err < 0)
......
...@@ -214,5 +214,7 @@ EXPORT_SYMBOL(fake_node); ...@@ -214,5 +214,7 @@ EXPORT_SYMBOL(fake_node);
EXPORT_SYMBOL(clear_page); EXPORT_SYMBOL(clear_page);
#ifdef CONFIG_SMP
EXPORT_SYMBOL(flush_tlb_page); EXPORT_SYMBOL(flush_tlb_page);
EXPORT_SYMBOL_GPL(flush_tlb_all); EXPORT_SYMBOL_GPL(flush_tlb_all);
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment