[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/arm macros.h,1.2,1.3

Chris Apers chrilith at users.sourceforge.net
Fri Dec 10 06:45:07 CET 2004


Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src/arm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23345

Modified Files:
	macros.h 
Log Message:
Revamped ARM stuffs

Index: macros.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/arm/macros.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- macros.h	6 Oct 2004 09:33:26 -0000	1.2
+++ macros.h	10 Dec 2004 14:43:56 -0000	1.3
@@ -5,26 +5,29 @@
 	// macros for ARM calls
 	#define ARM_START(TYPE) \
 			if (OPTIONS_TST(kOptDeviceARM)) { \
-				TYPE data;
+				TYPE dataARM;
 
 	#define ARM_CHECK_EXEC(test)	if (test) {
 	#define ARM_CHECK_END()			}
 
-	#define ARM_ADDP(member)		data.member = &member;
-	#define ARM_ADDM(member)		data.member = member;
-	#define ARM_ADDV(member, var)	data.member = var;
-//	#define ARM_INIT(id)			data.funcID = id;
+	#define ARM_ADDP(member)		dataARM.member = &member;
+	#define ARM_ADDM(member)		dataARM.member = member;
+	#define ARM_ADDV(member, var)	dataARM.member = var;
+	#define ARM_INIT(id)			PnoType pno = { id, &dataARM };
+	
+	#define ARM_GETM(member)		member = dataARM.member;
+	#define ARM_GETV(member, var)	var = dataARM.member;
 
-	#define ARM_DATA()		&data
+	#define PNO_DATA()		&pno
 	#define ARM_CONTINUE()	} else
 	#define ARM_END()		return; \
 						}
 
-	#define PNO_CALL(pno, data)				_PnoCall(&ARM(pno).pnoDesc, data);
-	#define PNO_CALL_RETURN(pno, data, var)	var  = _PnoCall(&ARM(pno).pnoDesc, data);
+	#define ARM_CALL(rsc, data)				ARM(rsc).alignedHeader->userDataP = (UInt32)data; \
+											PceNativeCall(ARM(rsc).pnoDesc.entry, ARM(rsc).alignedHeader);
 
-	#define PCE_CALL(pno, data)				_PceCall(ARM(pno).pnoPtr, data);
-	#define PCE_CALL_RETURN(pno, data, var)	var  = _PceCall(ARM(pno).pnoPtr, data);
+	#define ARM_CALL_RETURN(rsc, data, var)		ARM(rsc).alignedHeader->userDataP = (UInt32)data; \
+												var = PceNativeCall(ARM(rsc).pnoDesc.entry, ARM(rsc).alignedHeader);
 
 #else
 	// no ARM = empty definition
@@ -36,18 +39,15 @@
 	#define ARM_ADDP(member)
 	#define ARM_ADDM(member)
 	#define ARM_ADDV(member, var)
-//	#define ARM_INIT(id)
+	#define ARM_INIT(id)
 
 	#define ARM_DATA()
 	#define ARM_CONTINUE()
 	#define ARM_END()
 
-	#define PNO_CALL(data)
-	#define PNO_CALL_RETURN(data, var)
+	#define ARM_CALL(data)
+	#define ARM_CALL_RETURN(data, var)
 
-	#define PCE_CALL(data)
-	#define PCE_CALL_RETURN(data, var)
-	
 #endif
 
 	// Data access
@@ -63,6 +63,8 @@
 	#define  _GET8(ptr, base, member, type)		(type)((byte *)ptr + OffsetOf(base, member))[0]
 	#define  _SET8(base, member, type, var)		type var = _GET8(userData68KP, base, member, type);
 
+	#define  _MEMBER(base, member)		((byte *)userData68KP + OffsetOf(base, member))
+
 	// convenient macros to ease data access
 	#ifdef MAIN_TYPE 
 	#	define SETPTRV(type, member, var)	_SETPTR(MAIN_TYPE, member, type, var)
@@ -70,6 +72,8 @@
 	#	define SET32(type, member)			_SET32 (MAIN_TYPE, member, type, member)
 	#	define SET16(type, member)			_SET16 (MAIN_TYPE, member, type, member)
 	#	define SET8(type, member)			_SET8  (MAIN_TYPE, member, type, member)
+
+	#	define RETVAL(member)				WriteUnaligned32(_MEMBER(MAIN_TYPE, member), member)
 	#endif
 
 #endif





More information about the Scummvm-git-logs mailing list