#include <ucontext.h>
#include <limits.h>
#include <mach-o/dyld.h>
-#include "bsd-os.h"
+#include "arch.h"
+#include "interr.h" /* for declaration of lose */
#ifdef LISP_FEATURE_SB_THREAD
#error "Define threading support functions"
os_context_register_t *
os_context_register_addr(os_context_t *context, int offset)
{
- ppc_saved_state_t *state = &context->uc_mcontext->ss;
+ ppc_ss_struct_t *state = &context->uc_mcontext->PPC_DARWIN_REGIFY(ss);
switch(offset) {
case 0:
- return &state->r0;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r0);
case 1:
- return &state->r1;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r1);
case 2:
- return &state->r2;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r2);
case 3:
- return &state->r3;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r3);
case 4:
- return &state->r4;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r4);
case 5:
- return &state->r5;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r5);
case 6:
- return &state->r6;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r6);
case 7:
- return &state->r7;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r7);
case 8:
- return &state->r8;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r8);
case 9:
- return &state->r9;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r9);
case 10:
- return &state->r10;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r10);
case 11:
- return &state->r11;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r11);
case 12:
- return &state->r12;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r12);
case 13:
- return &state->r13;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r13);
case 14:
- return &state->r14;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r14);
case 15:
- return &state->r15;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r15);
case 16:
- return &state->r16;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r16);
case 17:
- return &state->r17;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r17);
case 18:
- return &state->r18;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r18);
case 19:
- return &state->r19;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r19);
case 20:
- return &state->r20;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r20);
case 21:
- return &state->r21;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r21);
case 22:
- return &state->r22;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r22);
case 23:
- return &state->r23;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r23);
case 24:
- return &state->r24;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r24);
case 25:
- return &state->r25;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r25);
case 26:
- return &state->r26;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r26);
case 27:
- return &state->r27;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r27);
case 28:
- return &state->r28;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r28);
case 29:
- return &state->r29;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r29);
case 30:
- return &state->r30;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r30);
case 31:
- return &state->r31;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r31);
case 41:
/* PT_DAR */
- return &context->uc_mcontext->es.dar;
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(es).PPC_DARWIN_REGIFY(dar);
case 42:
/* PT_DSISR */
- return &context->uc_mcontext->es.dsisr;
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(es).PPC_DARWIN_REGIFY(dsisr);
+ default:
+ lose("bad offset to os_context_register_addr");
}
}
os_context_register_t *
os_context_lr_addr(os_context_t *context)
{
- return &context->uc_mcontext->ss.lr;
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(lr);
+}
+
+os_context_register_t *
+os_context_ctr_addr(os_context_t *context)
+{
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(ctr);
+}
+
+os_context_register_t *
+os_context_cr_addr(os_context_t *context)
+{
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(cr);
+}
+
+os_context_register_t *
+os_context_pc_addr(os_context_t *context)
+{
+ return &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(srr0);
}
void