ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/include/macos_util.h
(Generate patch)

Comparing SheepShaver/src/include/macos_util.h (file contents):
Revision 1.2 by gbeauche, 2003-09-29T20:30:21Z vs.
Revision 1.3 by gbeauche, 2003-12-04T17:26:38Z

# Line 22 | Line 22
22   #define MACOS_UTIL_H
23  
24   #include "cpu_emulation.h"
25 + #include "thunks.h"
26 + #include <stddef.h>
27  
28  
29   /*
# Line 303 | Line 305 | enum {
305   typedef uint32 ProcInfoType;
306   typedef int8 ISAType;
307   typedef uint16 RoutineFlagsType;
308 < typedef long (*ProcPtr)();
308 > typedef uint32 ProcPtr;
309   typedef uint8 RDFlagsType;
310  
311   struct RoutineRecord {
# Line 327 | Line 329 | struct RoutineDescriptor {
329          RoutineRecord                                   routineRecords[1];                      /* The individual routines */
330   };
331  
332 < #define BUILD_PPC_ROUTINE_DESCRIPTOR(procInfo, procedure)                                                       \
333 <        {                                                                                                                                                               \
334 <                htons(0xAAFE),                                                          /* Mixed Mode A-Trap */                 \
335 <                7,                                                                                      /* version */                                   \
336 <                0,                                                                                      /* RD Flags - not dispatched */ \
337 <                0,                                                                                      /* reserved 1 */                                \
338 <                0,                                                                                      /* reserved 2 */                                \
339 <                0,                                                                                      /* selector info */                             \
340 <                0,                                                                                      /* number of routines */                \
341 <                {                                                                                       /* It's an array */                             \
342 <                        {                                                                               /* It's a struct */                             \
343 <                                htonl(procInfo),                                        /* the ProcInfo */                              \
344 <                                0,                                                                      /* reserved */                                  \
345 <                                1,                                                                      /* ISA and RTA */                               \
344 <                                htons(0 |                                                       /* Flags - it's absolute addr */\
345 <                                0 |                                                                     /* It's prepared */                             \
346 <                                4 ),                                                            /* Always use native ISA */             \
347 <                                (ProcPtr)htonl((uint32)procedure),      /* the procedure */                             \
348 <                                0,                                                                      /* reserved */                                  \
349 <                                0                                                                       /* Not dispatched */                    \
350 <                        }                                                                                                                                               \
351 <                }                                                                                                                                                       \
332 > struct SheepRoutineDescriptor
333 >        : public SheepVar
334 > {
335 >        SheepRoutineDescriptor(ProcInfoType procInfo, uint32 procedure)
336 >                : SheepVar(sizeof(RoutineDescriptor))
337 >        {
338 >                const uintptr desc = addr();
339 >                Mac_memset(desc, 0, sizeof(RoutineDescriptor));
340 >                WriteMacInt16(desc + offsetof(RoutineDescriptor, goMixedModeTrap), 0xAAFE);
341 >                WriteMacInt8 (desc + offsetof(RoutineDescriptor, version), 7);
342 >                WriteMacInt32(desc + offsetof(RoutineDescriptor, routineRecords[0].procInfo), procInfo);
343 >                WriteMacInt8 (desc + offsetof(RoutineDescriptor, routineRecords[0].ISA), 1);
344 >                WriteMacInt16(desc + offsetof(RoutineDescriptor, routineRecords[0].routineFlags), 0 | 0 | 4);
345 >                WriteMacInt32(desc + offsetof(RoutineDescriptor, routineRecords[0].procDescriptor), procedure);
346          }
347 + };
348  
349  
350   // Functions

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines