Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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];
}
Пример #5
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];
}
Пример #6
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];
}
Пример #7
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];
}
Пример #8
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];
}
Пример #9
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];
}
Пример #10
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];
}
Пример #11
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];
}
Пример #12
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);
}
Пример #13
0
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;
}