[Openmcl-cvs-notifications] r11564 - in /trunk/source/lisp-kernel: x86-asmutils32.s x86-asmutils64.s

gb at clozure.com gb at clozure.com
Tue Dec 30 19:36:30 EST 2008


Author: gb
Date: Tue Dec 30 19:36:30 2008
New Revision: 11564

Log:
Getting closer to the bug that I've been looking for (for > 2 weeks ...):
provide glue routines for sigreturn on Darwin.  Note that sigreturn
is incorrectly prototyped on Darwin - it actually wants a second =

('infostyle') argument.  The little stub functions here exist solely
to provide the same value (0x1e) of that argument that sigtramp uses,
and to let the sigreturn() glue code deal with the syscall arcana.

Modified:
    trunk/source/lisp-kernel/x86-asmutils32.s
    trunk/source/lisp-kernel/x86-asmutils64.s

Modified: trunk/source/lisp-kernel/x86-asmutils32.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-asmutils32.s (original)
+++ trunk/source/lisp-kernel/x86-asmutils32.s Tue Dec 30 19:36:30 2008
@@ -173,6 +173,18 @@
         __(jmp C(sigreturn))
 _endfn
         __endif
+
+        __ifdef([DARWIN])
+        .globl C(sigreturn)
+_exportfn(C(darwin_sigreturn))
+/* Need to set the sigreturn 'infostyle' argument, which is mostly
+   undocumented.  On x8632 Darwin, sigtramp() sets it to 0x1e, and
+   since we're trying to do what sigtramp() would do if we'd returned
+   to it ... */
+        __(movl $0x1e,%esi)
+        __(jmp C(sigreturn))
+_endfn
+        __endif        =

 		=

 _exportfn(C(get_vector_registers))
 	__(ret)

Modified: trunk/source/lisp-kernel/x86-asmutils64.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-asmutils64.s (original)
+++ trunk/source/lisp-kernel/x86-asmutils64.s Tue Dec 30 19:36:30 2008
@@ -168,6 +168,16 @@
 	__(syscall)				=

 _exportfn(C(get_vector_registers))
 _endfn
+
+_exportfn(C(darwin_sigreturn))
+        .globl C(sigreturn)
+/* Need to set the sigreturn 'infostyle' argument, which is mostly
+   undocumented.  On x8664 Darwin, sigtramp() sets it to 0x1e, and
+   since we're trying to do what sigtramp() would do if we'd returned
+   to it ... */
+        __(movl $0x1e,%esi)
+        __(jmp C(sigreturn))
+_endfn            =

 =

 _exportfn(C(put_vector_registers))
 _endfn				=




More information about the Openmcl-cvs-notifications mailing list