
From: Andi Kleen <ak@suse.de>

- Make it compile again on UP
- Fix 32bit IPC  (got broken in previous patch) 
- Tell BIOS we run in long mode
(this is a nop currently, but will help with some future boxes) 



 arch/x86_64/boot/setup.S         |    5 +++++
 arch/x86_64/ia32/ipc32.c         |    8 ++++----
 arch/x86_64/kernel/x8664_ksyms.c |    2 ++
 3 files changed, 11 insertions(+), 4 deletions(-)

diff -puN arch/x86_64/boot/setup.S~x86_64-critical-fixes arch/x86_64/boot/setup.S
--- 25/arch/x86_64/boot/setup.S~x86_64-critical-fixes	2003-07-10 18:47:11.000000000 -0700
+++ 25-akpm/arch/x86_64/boot/setup.S	2003-07-10 18:47:11.000000000 -0700
@@ -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
diff -puN arch/x86_64/ia32/ipc32.c~x86_64-critical-fixes arch/x86_64/ia32/ipc32.c
--- 25/arch/x86_64/ia32/ipc32.c~x86_64-critical-fixes	2003-07-10 18:47:11.000000000 -0700
+++ 25-akpm/arch/x86_64/ia32/ipc32.c	2003-07-10 18:47:11.000000000 -0700
@@ -271,7 +271,7 @@ semctl32 (int first, int second, int thi
 		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 *u
 	      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 *u
 	      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 *u
 	      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)
diff -puN arch/x86_64/kernel/x8664_ksyms.c~x86_64-critical-fixes arch/x86_64/kernel/x8664_ksyms.c
--- 25/arch/x86_64/kernel/x8664_ksyms.c~x86_64-critical-fixes	2003-07-10 18:47:11.000000000 -0700
+++ 25-akpm/arch/x86_64/kernel/x8664_ksyms.c	2003-07-10 18:47:11.000000000 -0700
@@ -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

_
