extern "ASM" void ITextureCleanup__P09IM_TTABLE(void *arg1) { struct PPCArgs ppc = { }; static void (*_68kData_ITextureCleanup__P09IM_TTABLE)(void) = _68kStub_ITextureCleanup__P09IM_TTABLE; ppc.PP_Code = _68kData_ITextureCleanup__P09IM_TTABLE; long args[1]; args[0] = (long) arg1; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); }
extern "ASM" void Cooperate__Pv(void *arg1) { struct PPCArgs ppc = { }; static void (*_68kData_Cooperate__Pv)(void) = _68kStub_Cooperate__Pv; ppc.PP_Code = _68kData_Cooperate__Pv; long args[1]; args[0] = (long) arg1; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); }
extern "ASM" void WriteLog__PvPc(void *arg1,void *arg2) { struct PPCArgs ppc = { }; static void (*_68kData_WriteLog__PvPc)(void) = _68kStub_WriteLog__PvPc; ppc.PP_Code = _68kData_WriteLog__PvPc; long args[2]; args[0] = (long) arg1; args[1] = (long) arg2; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); }
extern "ASM" short CheckCancel__Pv(void *arg1) { struct PPCArgs ppc = { }; static void (*_68kData_CheckCancel__Pv)(void) = _68kStub_CheckCancel__Pv; ppc.PP_Code = _68kData_CheckCancel__Pv; long args[1]; args[0] = (long) arg1; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (short) ppc.PP_Regs[0]; }
extern "ASM" long GetType__P07TEXTURE(void *arg1) { struct PPCArgs ppc = { }; static void (*_68kData_GetType__P07TEXTURE)(void) = _68kStub_GetType__P07TEXTURE; ppc.PP_Code = _68kData_GetType__P07TEXTURE; long args[1]; args[0] = (long) arg1; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (long) ppc.PP_Regs[0]; }
extern "ASM" void *GetNext__P14TEXTURE_OBJECT(void *arg1) { struct PPCArgs ppc = { }; static void (*_68kData_GetNext__P14TEXTURE_OBJECT)(void) = _68kStub_GetNext__P14TEXTURE_OBJECT; ppc.PP_Code = _68kData_GetNext__P14TEXTURE_OBJECT; long args[1]; args[0] = (long) arg1; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (void *) ppc.PP_Regs[0]; }
extern "ASM" void *ITextureInit__PFP09IM_TTABLEjp(void *arg1) { struct PPCArgs ppc = { }; static void (*_68kData_ITextureInit__PFP09IM_TTABLEjp)(void) = _68kStub_ITextureInit__PFP09IM_TTABLEjp; ppc.PP_Code = _68kData_ITextureInit__PFP09IM_TTABLEjp; long args[1]; args[0] = (long) arg1; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (void *) ppc.PP_Regs[0]; }
extern "ASM" void *MUI_MakeObjectAPPC__UjPUj(unsigned long arg1,void *arg2) { struct PPCArgs ppc = { }; static void (*_68kData_MUI_MakeObjectAPPC__UjPUj)(void) = _68kStub_MUI_MakeObjectAPPC__UjPUj; ppc.PP_Code = _68kData_MUI_MakeObjectAPPC__UjPUj; long args[2]; args[0] = (long) arg1; args[1] = (long) arg2; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (void *) ppc.PP_Regs[0]; }
extern "ASM" void *MUI_NewObjectAPPC__PcP07TagItem(void *arg1,void *arg2) { struct PPCArgs ppc = { }; static void (*_68kData_MUI_NewObjectAPPC__PcP07TagItem)(void) = _68kStub_MUI_NewObjectAPPC__PcP07TagItem; ppc.PP_Code = _68kData_MUI_NewObjectAPPC__PcP07TagItem; long args[2]; args[0] = (long) arg1; args[1] = (long) arg2; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (void *) ppc.PP_Regs[0]; }
ULONG DoMethodPPC(Object *obj, Tag tag, ...) { struct PPCArgs ppc = { }; static void (*_68kData_DoMethodAPPC__PUjP00)(void) = _68kStub_DoMethodAPPC__PUjP00; ppc.PP_Code = _68kData_DoMethodAPPC__PUjP00; long args[2]; args[0] = (long) obj; args[1] = (long) &tag; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (unsigned long) ppc.PP_Regs[0]; }
extern "ASM" unsigned long DoMethodAPPC__PUjP00(void *arg1,void *arg2) { struct PPCArgs ppc = { }; static void (*_68kData_DoMethodAPPC__PUjP00)(void) = _68kStub_DoMethodAPPC__PUjP00; ppc.PP_Code = _68kData_DoMethodAPPC__PUjP00; long args[2]; args[0] = (long) arg1; args[1] = (long) arg2; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); return (unsigned long) ppc.PP_Regs[0]; }
extern "ASM" void ITextureWork__P09IM_TTABLEPfP08IM_PATCHP06VECTORPf(void *arg1,void *arg2,void *arg3,void *arg4,void *arg5) { struct PPCArgs ppc = { }; static void (*_68kData_ITextureWork__P09IM_TTABLEPfP08IM_PATCHP06VECTORPf)(void) = _68kStub_ITextureWork__P09IM_TTABLEPfP08IM_PATCHP06VECTORPf; ppc.PP_Code = _68kData_ITextureWork__P09IM_TTABLEPfP08IM_PATCHP06VECTORPf; long args[5]; args[0] = (long) arg1; args[1] = (long) arg2; args[2] = (long) arg3; args[3] = (long) arg4; args[4] = (long) arg5; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); }
extern "ASM" void UpdateStatus__PvffiiP14rsiSMALL_COLOR(void *arg1,float arg2,float arg3,long arg4,long arg5,void *arg6) { struct PPCArgs ppc = { }; static void (*_68kData_UpdateStatus__PvffiiP14rsiSMALL_COLOR)(void) = _68kStub_UpdateStatus__PvffiiP14rsiSMALL_COLOR; ppc.PP_Code = _68kData_UpdateStatus__PvffiiP14rsiSMALL_COLOR; long args[6]; args[0] = (long) arg1; *((float *) &args[1]) = arg2; *((float *) &args[2]) = arg3; args[3] = (long) arg4; args[4] = (long) arg5; args[5] = (long) arg6; ppc.PP_Regs[8] = (ULONG) args; Run68K(&ppc); }
char *platform_get_amigaos3_runtime_cpu(void) { #ifdef IS_POWERUP struct Caos *MyCaos = NULL; #endif #ifdef IS_WARPOS struct PPCArgs *pa = NULL; struct TagItem ti_cputype[] = {{GETINFO_CPU, 0}, {TAG_END, 0}}; int cpu_type = 0; #endif UWORD attn = 0; char *ppc = NULL; char *m68k = NULL; if (!got_cpu) { #ifdef IS_POWERUP if (MyCaos = (struct Caos*)PPCAllocVec(sizeof(struct Caos), MEMF_PUBLIC|MEMF_CLEAR)) { MyCaos->caos_Un.Function = (APTR)&M68kGetAttn; MyCaos->M68kCacheMode = IF_CACHEFLUSHNO; MyCaos->PPCCacheMode = IF_CACHEFLUSHNO; PPCCallM68k(MyCaos); attn = (UWORD)MyCaos->d0; PPCFreeVec(MyCaos); } switch (PPCGetAttr(PPCINFOTAG_CPU)) { case CPU_603: ppc = "PPC603"; break; case CPU_604: ppc = "PPC604"; break; case CPU_602: ppc = "PPC602"; break; case CPU_603e: ppc = "PPC603e"; break; case CPU_603p: ppc = "PPC603p"; break; case CPU_604e: ppc = "PPC604e"; break; default: ppc = "PPC"; } #else #ifdef IS_WARPOS if (pa = (struct PPCArgs*)AllocVecPPC(sizeof(struct PPCArgs), MEMF_PUBLIC|MEMF_CLEAR, 0)) { pa->PP_Code = (APTR)&M68kGetAttn; Run68K(pa); WaitFor68K(pa); attn = (UWORD)pa->PP_Regs[PPREG_D0]; FreeVecPPC(pa); } GetInfo(ti_cputype); cpu_type = ti_cputype[0].ti_Data; switch (cpu_type) { case CPUF_620: ppc = "PPC620"; break; case CPUF_604E: ppc = "PPC604e"; break; case CPUF_604: ppc = "PPC604"; break; case CPUF_603E: ppc = "PPC603e"; break; case CPUF_603: ppc = "PPC603"; break; default: ppc = "PPC"; } #else attn = SysBase->AttnFlags; if (attn & AFF_4XX) { ppc = "PPC4xx"; } else if (attn & AFF_7400) { ppc = "PPC7400"; } else if (attn & AFF_750) { ppc = "PPC750"; } else if (attn & AFF_604) { ppc = "PPC604"; } else if (attn & AFF_603) { ppc = "PPC603"; } #endif #endif if (attn & AFF_68060) { m68k = "68060"; } else if (attn & AFF_68040) { m68k = "68040"; } else if (attn & AFF_68030) { m68k = "68030"; } else if (attn & AFF_68020) { m68k = "68020"; } else if (attn & AFF_68010) { m68k = "68010"; } else { m68k = "68000"; } if (ppc) { #if defined(IS_POWERUP) || defined(IS_WARPOS) sprintf(cpu_retval, "%s (m68k code on %s)", ppc, m68k); #else sprintf(cpu_retval, "%s (emulated on %s)", m68k, ppc); #endif } else { sprintf(cpu_retval, "%s", m68k); } got_cpu = 1; } return cpu_retval; }
char *platform_get_amigaos3_runtime_os(void) { #ifdef IS_POWERUP struct Caos *MyCaos = NULL; #endif #ifdef IS_WARPOS struct PPCArgs *pa = NULL; #endif #if defined(IS_POWERUP) || defined(IS_WARPOS) ULONG wb_version = 0; ULONG ks_version = 0; ULONG ks_softver = 0; #endif #ifdef IS_POWERUP if (!wbretval) { if (MyCaos = (struct Caos*)PPCAllocVec(sizeof(struct Caos), MEMF_PUBLIC|MEMF_CLEAR)) { MyCaos->caos_Un.Function = (APTR)&M68kGetWB; MyCaos->M68kCacheMode = IF_CACHEFLUSHNO; MyCaos->PPCCacheMode = IF_CACHEFLUSHNO; PPCCallM68k(MyCaos); wb_version = (ULONG)MyCaos->d0; PPCFreeVec(MyCaos); MyCaos = NULL; } wbretval = number2workbench(wb_version >> 16, wb_version & 0xffff); } if (!ksretval) { if (MyCaos = (struct Caos*)PPCAllocVec(sizeof(struct Caos), MEMF_PUBLIC|MEMF_CLEAR)) { MyCaos->caos_Un.Function = (APTR)&M68kGetKS; MyCaos->M68kCacheMode = IF_CACHEFLUSHNO; MyCaos->PPCCacheMode = IF_CACHEFLUSHNO; PPCCallM68k(MyCaos); ks_version = (ULONG)MyCaos->d0; ks_softver = (ULONG)MyCaos->d1; PPCFreeVec(MyCaos); } ksretval = number2kickstart(ks_version >> 16, ks_version & 0xffff, ks_softver); } #else #ifdef IS_WARPOS if (!wbretval) { if (pa = (struct PPCArgs*)AllocVecPPC(sizeof(struct PPCArgs), MEMF_PUBLIC|MEMF_CLEAR, 0)) { pa->PP_Code = (APTR)&M68kGetWB; Run68K(pa); WaitFor68K(pa); wb_version = (ULONG)pa->PP_Regs[PPREG_D0]; FreeVecPPC(pa); pa = NULL; } wbretval = number2workbench(wb_version >> 16, wb_version & 0xffff); } if (!ksretval) { if (pa = (struct PPCArgs*)AllocVecPPC(sizeof(struct PPCArgs), MEMF_PUBLIC|MEMF_CLEAR, 0)) { pa->PP_Code = (APTR)&M68kGetKS; Run68K(pa); WaitFor68K(pa); ks_version = (ULONG)pa->PP_Regs[PPREG_D0]; ks_softver = (ULONG)pa->PP_Regs[PPREG_D1]; FreeVecPPC(pa); } ksretval = number2kickstart(ks_version >> 16, ks_version & 0xffff, ks_softver); } #else if (!wbretval) { /* arosc.library only opens if the aros kernel is used */ if (WorkbenchBase = OpenLibrary("arosc.library", 0)) { wbretval = "AROS"; } else { if (VersionBase = OpenLibrary("version.library", 0)) { wbretval = number2workbench(VersionBase->lib_Version, VersionBase->lib_Revision); if (!wbretval) { printf("WB major: %d, minor: %d\n", VersionBase->lib_Version, VersionBase->lib_Revision); } } else { wbretval = "1.0"; } } if (VersionBase) { CloseLibrary(VersionBase); } } if (!ksretval) { ksretval = number2kickstart(SysBase->LibNode.lib_Version, SysBase->LibNode.lib_Revision, SysBase->SoftVer); } #endif #endif if (wbretval && wbretval[0] == 'A') { sprintf(osretval, "AROS"); } else if (ksretval && ksretval[0] == 'A') { sprintf(osretval, "WorkBench %s (AROS KickStart ROM)", wbretval ? wbretval : "Unknown"); } else if (ksretval && ksretval[0] == 'O') { sprintf(osretval, "WorkBench %s (BlackBox/Petunia)", wbretval ? wbretval : "Unknown"); } else { sprintf(osretval, "WorkBench %s (KickStart %s)", wbretval ? wbretval : "Unknown", ksretval ? ksretval : "Unknown"); } return osretval; }