#ifndef OSTYPES_H
 #define OSTYPES_H

 #include <HYS/libkern/OSTypes.h>
#include <stdint.h> //hys
#include <bits/types.h>//hys


typedef int8_t SInt8;
typedef __int16_t  SInt16;
typedef __int32_t  SInt32;
typedef __int64_t  SInt64;
typedef uint8_t  UInt8;
typedef uint16_t  UInt16;
typedef uint32_t  UInt32;


/*A second data type, AbsoluteTime, is used to specify absolute times in system-defined units 64 bits long. As discussed in Time Base, the real duration of AbsoluteTime units must be calculated.
typedef struct AbsoluteTime
{
    unsigned long   hi;
    unsigned long   lo;
} AbsoluteTime;*/


typedef struct AbsoluteTime
{
    unsigned long   hi;
    unsigned long   lo;
} AbsoluteTime;


/*Data Types
typedef unsigned long         ExceptionKind;    /kind of exception*
typedef unsigned long         MemoryReferenceKind;
typedef void                  *Ref;
typedef Ref                   AreaID;
typedef Ref                   LogicalAddress;
sdtruct UnsignedWide {
   unsigned long              hi;
   unsigned long              lo;
};
typedef struct UnsignedWide UnsignedWide;
struct RegisterInformation {
   UnsignedWide         R0;
   UnsignedWide         R1;
   UnsignedWide         R2;
   UnsignedWide         R3;
   UnsignedWide         R4;
   UnsignedWide         R5;
   UnsignedWide         R6;
   UnsignedWide         R7;
   UnsignedWide         R8;
   UnsignedWide         R9;
   UnsignedWide         R10;
   UnsignedWide         R11;
   UnsignedWide         R12;
   UnsignedWide         R13;
   UnsignedWide         R14;
   UnsignedWide         R15;
   UnsignedWide         R16;
   UnsignedWide         R17;
   UnsignedWide         R18;
   UnsignedWide         R19;
   UnsignedWide         R20;
   UnsignedWide         R21;
   UnsignedWide         R22;
   UnsignedWide         R23;
   UnsignedWide         R24;
   UnsignedWide         R25;
   UnsignedWide         R26;
   UnsignedWide         R27;
   UnsignedWide         R28;
   UnsignedWide         R29;
   UnsignedWide         R30;
   UnsignedWide         R31;
};
typedef struct RegisterInformation RegisterInformation;
typedef long                  OSStatus;
typedef OSStatus (*ExceptionHandler) (ExceptionInformation *theException);
struct MachineInformation {
   UnsignedWide                     CTR;  /Count Register*
   UnsignedWide                     LR;   /Link Register/
   UnsignedWide                     PC;   /Program Counter Register/
   unsigned long                    CR;   /Condition Register/
   unsigned long                    XER;  /Fixed-Point Exception Register/
   unsigned long                    MSR;  /Machine State Register/
};
typedef struct MachineInformation MachineInformation;
struct FPUInformation {
   UnsignedWide                     Registers[32]; /FPU registers/
   unsigned long                    FPSCR;         /status/control reg/
};
typedef struct FPUInformation FPUInformation;
struct MemoryExceptionInformation {
   AreaID                           theArea;
   LogicalAddress                   theAddress;
   OSStatus                         theError;
   MemoryReferenceKind              theReference;
};
typedef struct MemoryExceptionInformation MemoryExceptionInformation;
struct ExceptionInformation {
   ExceptionKind                    theKind;
   MachineInformation               *machineState;
   RegisterInformation              *registerImage;
   FPUInformation                   *FPUImage;
   union {
      MemoryExceptionInformation    *memoryInfo;
   } info;
};
typedef struct ExceptionInformation ExceptionInformation;*/
#ifndef MACTYPES_H
struct UnsignedWide {
   unsigned long              hi;
   unsigned long              lo;
};
typedef struct UnsignedWide UnsignedWide;
typedef UnsignedWide                    UInt64;
#endif

#endif