/* Automatically generated header! Do not edit! */

#ifndef _PPCINLINE_PPC_H
#define _PPCINLINE_PPC_H

#ifndef __PPCINLINE_MACROS_H
#include <powerup/ppcinline/macros.h>
#endif /* !__PPCINLINE_MACROS_H */

#ifndef PPC_BASE_NAME
#define PPC_BASE_NAME PPCLibBase
#endif /* !PPC_BASE_NAME */

#define PPCAddPortList(PPCPortList, PPCPort) \
	LP2(0x17a, BOOL, PPCAddPortList, void*, PPCPortList, a0, void*, PPCPort, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCAllocMem(size, attributes) \
	LP2(0x30, void*, PPCAllocMem, ULONG, size, d0, ULONG, attributes, d1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCAllocPooled(poolHeader, memSize) \
	LP2(0xf6, void*, PPCAllocPooled, void*, poolHeader, a0, ULONG, memSize, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCAllocVec(byteSize, attributes) \
	LP2(0x3c, void*, PPCAllocVec, ULONG, byteSize, d0, ULONG, attributes, d1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCAllocVecPooled(Pool, byteSize) \
	LP2(0x102, void*, PPCAllocVecPooled, void*, Pool, a0, ULONG, byteSize, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCCacheClearE(address, length, caches) \
	LP3NR(0x156, PPCCacheClearE, void*, address, a0, ULONG, length, d0, ULONG, caches, d1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCCacheInvalidE(address, length, caches) \
	LP3NR(0x15c, PPCCacheInvalidE, void*, address, a0, ULONG, length, d0, ULONG, caches, d1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCCacheTrashE(address, length, caches) \
	LP3NR(0x1b0, PPCCacheTrashE, void*, address, a0, ULONG, length, d0, ULONG, caches, d1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCCreateMessage(PPCPort, Length) \
	LP2(0x126, void*, PPCCreateMessage, void*, PPCPort, a0, ULONG, Length, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCCreatePool(memFlags, puddleSize, threshSize) \
	LP3(0xea, void*, PPCCreatePool, ULONG, memFlags, d0, ULONG, puddleSize, d1, ULONG, threshSize, d2, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCCreatePort(Tags) \
	LP1(0x10e, void*, PPCCreatePort, struct TagItem*, Tags, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCCreatePortTags(tags...) \
	({ULONG _tags[] = { tags }; PPCCreatePort((struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCCreatePortList(PPCPortArray, ExtSignals) \
	LP2(0x16e, void*, PPCCreatePortList, void**, PPCPortArray, a0, ULONG, ExtSignals, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCCreateTask(ElfObject, Tags) \
	LP2(0x54, void	*, PPCCreateTask, void*, ElfObject, a0, struct TagItem*, Tags, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCCreateTaskTags(a0, tags...) \
	({ULONG _tags[] = { tags }; PPCCreateTask((a0), (struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCDeleteMessage(PPCMessage) \
	LP1NR(0x12c, PPCDeleteMessage, void*, PPCMessage, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCDeletePool(poolHeader) \
	LP1(0xf0, BOOL, PPCDeletePool, void*, poolHeader, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCDeletePort(PPCPort) \
	LP1(0x114, BOOL, PPCDeletePort, void*, PPCPort, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCDeletePortList(PPCPortList) \
	LP1NR(0x174, PPCDeletePortList, void*, PPCPortList, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCDeleteTask(TaskObject) \
	LP1(0x5a, BOOL, PPCDeleteTask, void*, TaskObject, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCFindTask(Name) \
	LP1(0x66, void	*, PPCFindTask, char	*, Name, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCFindTaskObject(TaskObject) \
	LP1(0x90, void	*, PPCFindTaskObject, void*, TaskObject, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCFreeMem(Memory, size) \
	LP2NR(0x36, PPCFreeMem, void*, Memory, a1, ULONG, size, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCFreePooled(poolHeader, memory, memSize) \
	LP3NR(0xfc, PPCFreePooled, void*, poolHeader, a0, APTR, memory, a1, ULONG, memSize, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCFreeVec(memoryBlock) \
	LP1(0x42, void*, PPCFreeVec, void*, memoryBlock, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCFreeVecPooled(Pool, memoryBlock) \
	LP2NR(0x108, PPCFreeVecPooled, void*, Pool, a0, void*, memoryBlock, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCGetAttrs(Tags) \
	LP1(0x8a, ULONG, PPCGetAttrs, struct TagItem*, Tags, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCGetAttrsTags(tags...) \
	({ULONG _tags[] = { tags }; PPCGetAttrs((struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCGetMessage(PPCPort) \
	LP1(0x138, void*, PPCGetMessage, void*, PPCPort, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCGetMessageAttr(PPCMessage, Attr) \
	LP2(0x132, ULONG, PPCGetMessageAttr, void*, PPCMessage, a0, ULONG, Attr, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCGetObjectAttrs(ElfObject, PPCObjectInfo_, Tags) \
	LP3(0xc6, ULONG, PPCGetObjectAttrs, void*, ElfObject, a0, struct PPCObjectInfo*, PPCObjectInfo_, a1, struct TagItem*, Tags, a2, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCGetObjectAttrsTags(a0, a1, tags...) \
	({ULONG _tags[] = { tags }; PPCGetObjectAttrs((a0), (a1), (struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCGetPortListAttr(PPCPortList, Attr) \
	LP2(0x18c, ULONG, PPCGetPortListAttr, void*, PPCPortList, a0, ULONG, Attr, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCGetTaskAttrs(TaskObject, Tags) \
	LP2(0x84, ULONG, PPCGetTaskAttrs, void*, TaskObject, a0, struct TagItem*, Tags, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCGetTaskAttrsTags(a0, tags...) \
	({ULONG _tags[] = { tags }; PPCGetTaskAttrs((a0), (struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCLoadObject(Name) \
	LP1(0x1e, APTR, PPCLoadObject, char*, Name, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCLoadObjectTagList(Tags) \
	LP1(0x198, APTR, PPCLoadObjectTagList, struct TagItem*, Tags, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCLoadObjectTags(tags...) \
	({ULONG _tags[] = { tags }; PPCLoadObjectTagList((struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCObtainPort(Tags) \
	LP1(0x11a, void*, PPCObtainPort, struct TagItem*, Tags, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCObtainPortTags(tags...) \
	({ULONG _tags[] = { tags }; PPCObtainPort((struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCReadByte(Address) \
	LP1(0xde, UBYTE, PPCReadByte, UBYTE*, Address, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCReadLong(Address) \
	LP1(0x9c, ULONG, PPCReadLong, ULONG*, Address, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCReadWord(Address) \
	LP1(0xd2, UWORD, PPCReadWord, UWORD*, Address, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCReleasePort(PPCPort) \
	LP1(0x120, BOOL, PPCReleasePort, void*, PPCPort, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCRemPortList(PPCPortList, PPCPort) \
	LP2NR(0x180, PPCRemPortList, void*, PPCPortList, a0, void*, PPCPort, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCReplyMessage(PPCMessage) \
	LP1(0x144, BOOL, PPCReplyMessage, void*, PPCMessage, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCRunKernelObject(a, b) \
	LP2(0x72, ULONG, PPCRunKernelObject, void*, a, a0, struct ModuleArgs*, b, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCRunKernelObjectFPU() \
	LP0(0x96, DOUBLE, PPCRunKernelObjectFPU, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCRunObject(ElfObject, Argument) \
	LP2(0x2a, ULONG, PPCRunObject, void*, ElfObject, a0, void*, Argument, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCSendMessage(PPCPort, PPCMessage, Data, Length, MsgID) \
	LP5(0x14a, BOOL, PPCSendMessage, void*, PPCPort, a0, void*, PPCMessage, a1, void*, Data, a2, ULONG, Length, d0, ULONG, MsgID, d1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCSetAttrs(Tags) \
	LP1(0x19e, BOOL, PPCSetAttrs, struct TagItem*, Tags, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCSetAttrsTags(tags...) \
	({ULONG _tags[] = { tags }; PPCSetAttrs((struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCSetPortListAttr(PPCPortList, Attr) \
	LP2NR(0x192, PPCSetPortListAttr, void*, PPCPortList, a0, ULONG, Attr, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCSetTaskAttrs(TaskObject, Tags) \
	LP2(0xc0, ULONG, PPCSetTaskAttrs, void*, TaskObject, a0, struct TagItem*, Tags, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCSetTaskAttrsTags(a0, tags...) \
	({ULONG _tags[] = { tags }; PPCSetTaskAttrs((a0), (struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCSignalTask(TaskObject, SignalMask) \
	LP2NR(0x60, PPCSignalTask, void*, TaskObject, a0, ULONG, SignalMask, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCStartTask(TaskObject, Tags) \
	LP2(0xb4, BOOL, PPCStartTask, void*, TaskObject, a0, struct TagItem*, Tags, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCStartTaskTags(a0, tags...) \
	({ULONG _tags[] = { tags }; PPCStartTask((a0), (struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCStopTask(TaskObject, Tags) \
	LP2(0xba, BOOL, PPCStopTask, void*, TaskObject, a0, struct TagItem*, Tags, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define PPCStopTaskTags(a0, tags...) \
	({ULONG _tags[] = { tags }; PPCStopTask((a0), (struct TagItem*)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define PPCUnLoadObject(Object) \
	LP1NR(0x24, PPCUnLoadObject, void*, Object, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCWaitPort(PPCPort) \
	LP1(0x150, void*, PPCWaitPort, void*, PPCPort, a0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCWaitPortList(PPCPortList) \
	LP1(0x186, void*, PPCWaitPortList, void*, PPCPortList, a1, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCWriteByte(Address, Value) \
	LP2NR(0xe4, PPCWriteByte, UBYTE*, Address, a0, UBYTE, Value, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCWriteLong(Address, Value) \
	LP2NR(0xa2, PPCWriteLong, ULONG*, Address, a0, ULONG, Value, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCWriteLongFlush(Address, Value) \
	LP2NR(0xcc, PPCWriteLongFlush, ULONG*, Address, a0, ULONG, Value, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define PPCWriteWord(Address, Value) \
	LP2NR(0xd8, PPCWriteWord, UWORD*, Address, a0, UWORD, Value, d0, \
	, PPC_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#endif /* !_PPCINLINE_PPC_H */
