[Openmcl-cvs-notifications] r13207 - in /trunk/source/lisp-kernel: lisptypes.h ppc-exceptions.c ppc-exceptions.h
rme at clozure.com
rme at clozure.com
Mon Nov 16 20:55:48 UTC 2009
Author: rme
Date: Mon Nov 16 20:55:48 2009
New Revision: 13207
Log:
Changes to make Darwin/ppc lisp kernels build with 10.5 SDK.
This involves using the "__"-prefixed member names for
thread state structs, and providing compatibility #defines on
10.4 systems.
Modified:
trunk/source/lisp-kernel/lisptypes.h
trunk/source/lisp-kernel/ppc-exceptions.c
trunk/source/lisp-kernel/ppc-exceptions.h
Modified: trunk/source/lisp-kernel/lisptypes.h
=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/lisptypes.h (original)
+++ trunk/source/lisp-kernel/lisptypes.h Mon Nov 16 20:55:48 2009
@@ -85,6 +85,33 @@
#include <AvailabilityMacros.h>
=
#ifdef PPC
+#if MAC_OS_X_VERSION_MIN_REQUIRED <=3D MAC_OS_X_VERSION_10_4
+#define __ss ss
+#define __es es
+#define __fs fs
+
+#define __srr0 srr0
+#define __srr1 srr1
+#define __r0 r0
+#define __r1 r1
+#define __r3 r3
+#define __r4 r4
+#define __r5 r5
+#define __r6 r6
+#define __r13 r13
+#define __cr cr
+#define __xer xer
+#define __lr lr
+#define __ctr ctr
+
+#define __dar dar
+#define __dsisr dsisr
+#define __exception exception
+
+#define __fpregs fpregs
+#define __fpscr fpscr
+#endif
+
#if WORD_SIZE =3D=3D 64
#ifdef _STRUCT_UCONTEXT64
typedef _STRUCT_UCONTEXT64 ExceptionInformation;
Modified: trunk/source/lisp-kernel/ppc-exceptions.c
=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/ppc-exceptions.c (original)
+++ trunk/source/lisp-kernel/ppc-exceptions.c Mon Nov 16 20:55:48 2009
@@ -2472,7 +2472,7 @@
/* Set the thread's FP state from the pseudosigcontext */
kret =3D thread_set_state(thread,
PPC_FLOAT_STATE,
- (thread_state_t)&(mc->fs),
+ (thread_state_t)&(mc->__fs),
PPC_FLOAT_STATE_COUNT);
=
MACH_CHECK_ERROR("setting thread FP state", kret);
@@ -2481,12 +2481,12 @@
#ifdef PPC64
kret =3D thread_set_state(thread,
PPC_THREAD_STATE64,
- (thread_state_t)&(mc->ss),
+ (thread_state_t)&(mc->__ss),
PPC_THREAD_STATE64_COUNT);
#else
kret =3D thread_set_state(thread, =
MACHINE_THREAD_STATE,
- (thread_state_t)&(mc->ss),
+ (thread_state_t)&(mc->__ss),
MACHINE_THREAD_STATE_COUNT);
#endif
MACH_CHECK_ERROR("setting thread state", kret);
@@ -2558,7 +2558,7 @@
get_tcr(true);
Bug(NULL, "Exception thread can't obtain thread state, Mach result =3D=
%d", result);
}
- stackp =3D ts.r1;
+ stackp =3D ts.__r1;
backlink =3D stackp;
stackp =3D TRUNC_DOWN(stackp, C_REDZONE_LEN, C_STK_ALIGN);
stackp -=3D sizeof(*pseudosigcontext);
@@ -2566,12 +2566,12 @@
=
stackp =3D TRUNC_DOWN(stackp, sizeof(*mc), C_STK_ALIGN);
mc =3D (MCONTEXT_T) ptr_from_lispobj(stackp);
- memmove(&(mc->ss),&ts,sizeof(ts));
+ memmove(&(mc->__ss),&ts,sizeof(ts));
=
thread_state_count =3D PPC_FLOAT_STATE_COUNT;
thread_get_state(thread,
PPC_FLOAT_STATE,
- (thread_state_t)&(mc->fs),
+ (thread_state_t)&(mc->__fs),
&thread_state_count);
=
=
@@ -2586,7 +2586,7 @@
#else
PPC_EXCEPTION_STATE,
#endif
- (thread_state_t)&(mc->es),
+ (thread_state_t)&(mc->__es),
&thread_state_count);
=
=
@@ -2649,18 +2649,18 @@
args) when the thread's resumed.
*/
=
- ts.srr0 =3D (natural) handler_address;
- ts.srr1 =3D (int) xpMSR(pseudosigcontext) & ~MSR_FE0_FE1_MASK;
- ts.r1 =3D stackp;
- ts.r3 =3D signum;
- ts.r4 =3D (natural)pseudosigcontext;
- ts.r5 =3D (natural)tcr;
- ts.r6 =3D (natural)old_valence;
- ts.lr =3D (natural)pseudo_sigreturn;
+ ts.__srr0 =3D (natural) handler_address;
+ ts.__srr1 =3D (int) xpMSR(pseudosigcontext) & ~MSR_FE0_FE1_MASK;
+ ts.__r1 =3D stackp;
+ ts.__r3 =3D signum;
+ ts.__r4 =3D (natural)pseudosigcontext;
+ ts.__r5 =3D (natural)tcr;
+ ts.__r6 =3D (natural)old_valence;
+ ts.__lr =3D (natural)pseudo_sigreturn;
=
=
#ifdef PPC64
- ts.r13 =3D xpGPR(pseudosigcontext,13);
+ ts.__r13 =3D xpGPR(pseudosigcontext,13);
thread_set_state(thread,
PPC_THREAD_STATE64,
(thread_state_t)&ts,
@@ -2709,9 +2709,9 @@
(thread_state_t)&ts,
&thread_state_count);
if (enabled) {
- ts.srr1 |=3D MSR_FE0_FE1_MASK;
+ ts.__srr1 |=3D MSR_FE0_FE1_MASK;
} else {
- ts.srr1 &=3D ~MSR_FE0_FE1_MASK;
+ ts.__srr1 &=3D ~MSR_FE0_FE1_MASK;
}
/* =
Hack-o-rama warning (isn't it about time for such a warning?):
@@ -2729,14 +2729,14 @@
just adjust ts.srr0 to skip over the UUO.
*/
{
- lisp_frame *tos =3D (lisp_frame *)ts.r1,
+ lisp_frame *tos =3D (lisp_frame *)ts.__r1,
*next_frame =3D tos->backlink;
=
if (tos =3D=3D (next_frame -1)) {
- ts.srr0 =3D tos->savelr;
- ts.r1 =3D (LispObj) next_frame;
+ ts.__srr0 =3D tos->savelr;
+ ts.__r1 =3D (LispObj) next_frame;
} else {
- ts.srr0 +=3D 4;
+ ts.__srr0 +=3D 4;
}
}
thread_set_state(thread, =
Modified: trunk/source/lisp-kernel/ppc-exceptions.h
=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/ppc-exceptions.h (original)
+++ trunk/source/lisp-kernel/ppc-exceptions.h Mon Nov 16 20:55:48 2009
@@ -69,21 +69,21 @@
#endif
=
#ifdef DARWIN
-#define xpGPRvector(x) (&(UC_MCONTEXT(x)->ss.r0))
+#define xpGPRvector(x) (&(UC_MCONTEXT(x)->__ss.__r0))
#define xpGPR(x,gprno) ((xpGPRvector(x))[gprno])
#define set_xpGPR(x,gpr,new) xpGPR((x),(gpr)) =3D (UInt32)(new)
-#define xpPC(x) (*((pc*) &(UC_MCONTEXT(x)->ss.srr0)))
+#define xpPC(x) (*((pc*) &(UC_MCONTEXT(x)->__ss.__srr0)))
#define set_xpPC(x,new) (xpPC(x) =3D (pc)(new))
-#define xpLR(x) (*((pc*)(&(UC_MCONTEXT(x)->ss.lr))))
-#define xpCTR(x) (*(pc*)(&(UC_MCONTEXT(x)->ss.ctr)))
-#define xpXER(x) (UC_MCONTEXT(x)->ss.xer)
-#define xpCCR(x) (UC_MCONTEXT(x)->ss.cr)
-#define xpMSR(x) (UC_MCONTEXT(x)->ss.srr1)
-#define xpDSISR(x) (UC_MCONTEXT(x)->es.dsisr)
-#define xpDAR(x) (UC_MCONTEXT(x)->es.dar)
-#define xpTRAP(x) (UC_MCONTEXT(x)->es.exception)
-#define xpFPSCR(x) (UC_MCONTEXT(x)->fs.fpscr)
-#define xpFPRvector(x) (UC_MCONTEXT(x)->fs.fpregs)
+#define xpLR(x) (*((pc*)(&(UC_MCONTEXT(x)->__ss.__lr))))
+#define xpCTR(x) (*(pc*)(&(UC_MCONTEXT(x)->__ss.__ctr)))
+#define xpXER(x) (UC_MCONTEXT(x)->__ss.__xer)
+#define xpCCR(x) (UC_MCONTEXT(x)->__ss.__cr)
+#define xpMSR(x) (UC_MCONTEXT(x)->__ss.__srr1)
+#define xpDSISR(x) (UC_MCONTEXT(x)->__es.__dsisr)
+#define xpDAR(x) (UC_MCONTEXT(x)->__es.__dar)
+#define xpTRAP(x) (UC_MCONTEXT(x)->__es.__exception)
+#define xpFPSCR(x) (UC_MCONTEXT(x)->__fs.__fpscr)
+#define xpFPRvector(x) (UC_MCONTEXT(x)->__fs.__fpregs)
#define xpFPR(x,fprno) (xpFPRvector(x)[fprno])
/* There's a bug in some versions of Darwin on G5 processors: FP context
isn't restored correctly on exit from a signal handler if the integer
@@ -127,7 +127,7 @@
#ifdef PPC64
#define DarwinSigReturn(x)
#else
-#define DarwinSigReturn(x) (UC_MCONTEXT(x)->ss.xer)^=3D0x80
+#define DarwinSigReturn(x) (UC_MCONTEXT(x)->__ss.__xer)^=3D0x80
#endif
#define SIGRETURN(context) DarwinSigReturn(context)
#endif
More information about the Openmcl-cvs-notifications
mailing list