shithub: mc

Download patch

ref: 0f831d24c57a8770c1c45275d689b1703b52be1b
parent: 4ba62b6b2635f3acbd88a4ebd029ce83cac2aec7
author: Ori Bernstein <[email protected]>
date: Thu Aug 2 10:57:10 EDT 2012

'syscall', not 'sysenter'. Use the right instruciton.

--- a/sys-linux.myr
+++ b/sys-linux.myr
@@ -368,23 +368,23 @@
 	const Sysprocess_vm_readv	: scno = 310
 	const Sysprocess_vm_writev	: scno = 311
 
-	extern const syscall : (sc:scno, args:... -> int)
+	extern const syscall : (sc:scno, args:... -> int64)
 
-	const exit	: (status:int -> int)
-	const getpid	: ( -> int)
-	const kill	: (pid:int, sig:int -> int)
-	const open	: (path:byte[,], opts:fdopt, mode:int -> int)
-	const close	: (fd:int -> int)
-	const creat	: (path:byte[,], mode:int -> int)
-	const read	: (fd:int, buf:byte[,] -> int)
-	const write	: (fd:int, buf:byte[,] -> int)
-	const lseek	: (fd:int, off:uint, whence:int -> int)
-	const fstat	: (fd:int, sb:statbuf* -> int)
-	const munmap	: (addr:byte*, len:size -> int)
-	const mmap	: (addr:byte*, len:size, prot:mprot, flags:mopt, fd:int, off:off -> byte*)
+	const exit	: (status:int64 -> void)
+	const getpid	: ( -> int64)
+	const kill	: (pid:int64, sig:int64 -> int64)
+	const open	: (path:byte[,], opts:fdopt, mode:int64 -> int64)
+	const close	: (fd:int64 -> int64)
+	const creat	: (path:byte[,], mode:int64 -> int64)
+	const read	: (fd:int64, buf:byte[,] -> int64)
+	const write	: (fd:int64, buf:byte[,] -> int64)
+	const lseek	: (fd:int64, off:uint64, whence:int64 -> int64)
+	const fstat	: (fd:int64, sb:statbuf* -> int64)
+	const munmap	: (addr:byte*, len:size -> int64)
+	const mmap	: (addr:byte*, len:size, prot:mprot, flags:mopt, fd:int64, off:off -> byte*)
 ;;
 
-const exit	= {status;		-> syscall(Sysexit, 1);}
+const exit	= {status;		syscall(Sysexit, 1);}
 const getpid	= {;			-> syscall(Sysgetpid, 1);}
 const kill	= {pid, sig;		-> syscall(Syskill, pid, sig);}
 const open	= {path, opts, mode;	-> syscall(Sysopen, path castto(char*), opts);}
--- a/syscall-linux.s
+++ b/syscall-linux.s
@@ -16,7 +16,7 @@
 	movq 56(%rsp),%r8
 	movq 64(%rsp),%r9
 
-	sysenter
+	syscall
 
 	popq %rbp
 	ret