From 7a194532209ce00480bcc11d09fa231e3d322bd3 Mon Sep 17 00:00:00 2001 From: Chris Apers Date: Fri, 10 Dec 2004 15:29:34 +0000 Subject: New ARM call svn-id: r16020 --- backends/PalmOS/Src/init_arm.cpp | 63 ++++++++++++---------------------------- backends/PalmOS/Src/init_arm.h | 11 +------ 2 files changed, 20 insertions(+), 54 deletions(-) diff --git a/backends/PalmOS/Src/init_arm.cpp b/backends/PalmOS/Src/init_arm.cpp index ca98b21a40..77aea25cee 100644 --- a/backends/PalmOS/Src/init_arm.cpp +++ b/backends/PalmOS/Src/init_arm.cpp @@ -2,56 +2,31 @@ #include "globals.h" #include "init_arm.h" -void ARMInit() { - // init global ARM only - MemSet(gVars->arm, sizeof(gVars->arm), 0); - ARM(PNO_COPYRECT ).pnoPtr = _PnoInit(RSC_COPYRECT, &ARM(PNO_COPYRECT).pnoDesc); - ARM(PNO_COSTUMEPROC3).pnoPtr = _PceInit(RSC_COSTUMEPROC3); - ARM(PNO_DRAWSTRIP ).pnoPtr = _PceInit(RSC_DRAWSTRIP); - ARM(PNO_BLIT ).pnoPtr = _PnoInit(RSC_BLIT, &ARM(PNO_BLIT).pnoDesc); -} - -void ARMRelease() { - _PnoFree(&ARM(PNO_BLIT ).pnoDesc, ARM(PNO_BLIT).pnoPtr); - _PceFree(ARM(PNO_DRAWSTRIP ).pnoPtr); - _PceFree(ARM(PNO_COSTUMEPROC3 ).pnoPtr); - _PnoFree(&ARM(PNO_COPYRECT ).pnoDesc, ARM(PNO_COPYRECT).pnoPtr); -} - -MemPtr _PceInit(DmResID resID) { +static void PnoInit(DmResID resID,PNOInitType *pnoP) { + // Load and allocate PNO MemHandle armH = DmGetResource('ARMC', resID); - NativeFuncType *armP = (NativeFuncType *)MemHandleLock(armH); - - return armP; -} - -UInt32 _PceCall(void *armP, void *userDataP) { - return PceNativeCall((NativeFuncType *)armP, userDataP); -} - -void _PceFree(void *armP) { - MemHandle armH = MemPtrRecoverHandle(armP); - + MemPtr armP = MemHandleLock(armH); + PnoLoad(&pnoP->pnoDesc, armP); MemPtrUnlock(armP); DmReleaseResource(armH); -} + + // Init PNO + PnoEntryHeader *header = (PnoEntryHeader *)ALIGN_4BYTE(pnoP->headerBuffer); + pnoP->alignedHeader = header; -MemPtr _PnoInit(DmResID resID, PnoDescriptor *pnoP) { - MemHandle armH = DmGetResource('ARMC', resID); - MemPtr armP = MemHandleLock(armH); - PnoLoad(pnoP, armP); - - return armP; + header->r10Value = pnoP->pnoDesc.r10Value; + header->pnoMainAddress = pnoP->pnoDesc.pnoMainAddress; } -UInt32 _PnoCall(PnoDescriptor *pnoP, void *userDataP) { - return PnoCall(pnoP, userDataP); +void ARMInit() { + // init global ARM only + MemSet(gVars->arm, sizeof(gVars->arm), 0); + PnoInit(RSC_ARMCOMMON, &ARM(ARM_COMMON)); + PnoInit(RSC_ARMENGINE, &ARM(ARM_ENGINE)); } -void _PnoFree(PnoDescriptor *pnoP, MemPtr armP) { - MemHandle armH = MemPtrRecoverHandle(armP); +void ARMRelease() { + PnoUnload(&ARM(ARM_ENGINE).pnoDesc); + PnoUnload(&ARM(ARM_COMMON).pnoDesc); +} - PnoUnload(pnoP); - MemPtrUnlock(armP); - DmReleaseResource(armH); -} \ No newline at end of file diff --git a/backends/PalmOS/Src/init_arm.h b/backends/PalmOS/Src/init_arm.h index 04ffbfc52d..348405035d 100644 --- a/backends/PalmOS/Src/init_arm.h +++ b/backends/PalmOS/Src/init_arm.h @@ -4,13 +4,4 @@ void ARMInit(); void ARMRelease(); -// calls -MemPtr _PceInit(DmResID resID); -UInt32 _PceCall(void *armP, void *userDataP); -void _PceFree(void *armP); - -MemPtr _PnoInit(DmResID resID, PnoDescriptor *pnoP); -UInt32 _PnoCall(PnoDescriptor *pnoP, void *userDataP); -void _PnoFree(PnoDescriptor *pnoP, MemPtr armP); - -#endif \ No newline at end of file +#endif -- cgit v1.2.3