aboutsummaryrefslogtreecommitdiff
path: root/backends/PalmOS/Src/init_arm.cpp
blob: 77aea25ceef4dd228f408432bfca97515b21d4d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <PalmOS.h>
#include "globals.h"
#include "init_arm.h"

static void PnoInit(DmResID resID,PNOInitType *pnoP) {
	// Load and allocate PNO
	MemHandle armH = DmGetResource('ARMC', resID);
	MemPtr armP = MemHandleLock(armH);
	PnoLoad(&pnoP->pnoDesc, armP);
	MemPtrUnlock(armP);
	DmReleaseResource(armH);
	
	// Init PNO
	PnoEntryHeader *header = (PnoEntryHeader *)ALIGN_4BYTE(pnoP->headerBuffer); 
	pnoP->alignedHeader = header;

	header->r10Value		= pnoP->pnoDesc.r10Value;
	header->pnoMainAddress	= pnoP->pnoDesc.pnoMainAddress;
}

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 ARMRelease() {
	PnoUnload(&ARM(ARM_ENGINE).pnoDesc);
	PnoUnload(&ARM(ARM_COMMON).pnoDesc);
}