/*
** ppc.library emulation
** (c)1998-2001 Frank Wille <frank@phoenix.owl.de>
**
** WarpOS PPC protos and inlines
**
** V0.6  (11.04.1999) phx
**       Another V15 function: RawDoFmtPPC().
** V0.5d (27.03.1999) phx
**       Included powerpc.library V15 prototypes.
** V0.1  (15.11.1998) phx
**       First partially working ppc.library emulation. Synchronous PPC
**       tasks, started by runelf, which only use the basic PowerUp kernel
**       functions for I/O, memory and context-switch seem to work fine.
** V0.0  (14.11.1998) phx
**       created
*/

#ifndef WARPOS_PROTOS_H
#define WARPOS_PROTOS_H


#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif
#ifndef DEVICES_TIMER_H
#include <devices/timer.h>
#endif
#ifndef POWERPC_PORTSPPC_H
#include <powerpc/portsPPC.h>
#endif
#ifndef POWERPC_TASKS_H
#include <powerpc/tasksPPC.h>
#endif
#ifndef POWERPC_SEMAPHORES_H
#include <powerpc/semaphoresppc.h>
#endif


ULONG __Run68K(struct PPCBase *,struct PPCArgs *) = "\tlwz\tr0,-298(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __WaitFor68K(struct PPCBase *,struct PPCArgs *) = "\tlwz\tr0,-304(r3)\n\tmtlr\tr0\n\tblrl";
VOID __SPrintF(struct PPCBase *,STRPTR, APTR) = "\tlwz\tr0,-310(r3)\n\tmtlr\tr0\n\tblrl";
APTR __RawDoFmtPPC(struct PPCBase *,STRPTR,APTR,void (*)(),APTR) = "\tlwz\tr0,-838(r3)\n\tmtlr\tr0\n\tblrl";
APTR __AllocVecPPC(struct PPCBase *,ULONG, ULONG, ULONG) = "\tlwz\tr0,-322(r3)\n\tmtlr\tr0\n\tblrl";
LONG __FreeVecPPC(struct PPCBase *,APTR) = "\tlwz\tr0,-328(r3)\n\tmtlr\tr0\n\tblrl";
VOID __GetSysTimePPC(struct PPCBase *,struct timeval *) = "\tlwz\tr0,-682(r3)\n\tmtlr\tr0\n\tblrl";
VOID __AddTimePPC(struct PPCBase *,struct timeval *, struct timeval *) = "\tlwz\tr0,-688(r3)\n\tmtlr\tr0\n\tblrl";
VOID __SubTimePPC(struct PPCBase *,struct timeval *, struct timeval *) = "\tlwz\tr0,-694(r3)\n\tmtlr\tr0\n\tblrl";
LONG __CmpTimePPC(struct PPCBase *,struct timeval *, struct timeval *) = "\tlwz\tr0,-700(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __SnoopTask(struct PPCBase *,struct TagItem *) = "\tlwz\tr0,-712(r3)\n\tmtlr\tr0\n\tblrl";
VOID __EndSnoopTask(struct PPCBase *,ULONG) = "\tlwz\tr0,-718(r3)\n\tmtlr\tr0\n\tblrl";
VOID __FreeAllMem(struct PPCBase *) = "\tlwz\tr0,-652(r3)\n\tmtlr\tr0\n\tblrl";
VOID __CopyMemPPC(struct PPCBase *,APTR, APTR, ULONG) = "\tlwz\tr0,-658(r3)\n\tmtlr\tr0\n\tblrl";
VOID *__CreatePoolPPC(struct PPCBase *,ULONG, ULONG, ULONG) = "\tlwz\tr0,-814(r3)\n\tmtlr\tr0\n\tblrl";
VOID __DeletePoolPPC(struct PPCBase *,VOID*) = "\tlwz\tr0,-820(r3)\n\tmtlr\tr0\n\tblrl";
VOID *__AllocPooledPPC(struct PPCBase *,VOID*, ULONG) = "\tlwz\tr0,-826(r3)\n\tmtlr\tr0\n\tblrl";
VOID __FreePooledPPC(struct PPCBase *,VOID*, VOID*, ULONG) = "\tlwz\tr0,-832(r3)\n\tmtlr\tr0\n\tblrl";
VOID __AddHeadPPC(struct PPCBase *,struct List *, struct Node *) = "\tlwz\tr0,-406(r3)\n\tmtlr\tr0\n\tblrl";
VOID __AddTailPPC(struct PPCBase *,struct List *, struct Node *) = "\tlwz\tr0,-412(r3)\n\tmtlr\tr0\n\tblrl";
VOID __EnqueuePPC(struct PPCBase *,struct List *, struct Node *) = "\tlwz\tr0,-436(r3)\n\tmtlr\tr0\n\tblrl";
struct Node *__FindNamePPC(struct PPCBase *,struct List *, STRPTR) = "\tlwz\tr0,-442(r3)\n\tmtlr\tr0\n\tblrl";
VOID __InsertPPC(struct PPCBase *,struct Node *, struct Node *) = "\tlwz\tr0,-400(r3)\n\tmtlr\tr0\n\tblrl";
struct Node *__RemHeadPPC(struct PPCBase *,struct List *) = "\tlwz\tr0,-424(r3)\n\tmtlr\tr0\n\tblrl";
VOID __RemovePPC(struct PPCBase *,struct Node *) = "\tlwz\tr0,-418(r3)\n\tmtlr\tr0\n\tblrl";
struct Node *__RemTailPPC(struct PPCBase *,struct Node *) = "\tlwz\tr0,-430(r3)\n\tmtlr\tr0\n\tblrl";
VOID __NewListPPC(struct PPCBase *,struct List*) = "\tlwz\tr0,-772(r3)\n\tmtlr\tr0\n\tblrl";
LONG __AddSemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-364(r3)\n\tmtlr\tr0\n\tblrl";
LONG __AttemptSemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-382(r3)\n\tmtlr\tr0\n\tblrl";
struct SignalSemaphorePPC *__FindSemaphorePPC(struct PPCBase *,STRPTR) = "\tlwz\tr0,-394(r3)\n\tmtlr\tr0\n\tblrl";
VOID __FreeSemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-358(r3)\n\tmtlr\tr0\n\tblrl";
LONG __InitSemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-352(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ObtainSemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-376(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ReleaseSemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-388(r3)\n\tmtlr\tr0\n\tblrl";
VOID __RemSemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-370(r3)\n\tmtlr\tr0\n\tblrl";
LONG __TrySemaphorePPC(struct PPCBase *,struct SignalSemaphorePPC *, ULONG) = "\tlwz\tr0,-748(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ObtainSemaphoreSharedPPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-784(r3)\n\tmtlr\tr0\n\tblrl";
LONG __AttemptSemaphoreSharedPPC(struct PPCBase *,struct SignalSemaphorePPC *) = "\tlwz\tr0,-790(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ProcurePPC(struct PPCBase *,struct SignalSemaphorePPC *, struct SemaphoreMessage *) = "\tlwz\tr0,-796(r3)\n\tmtlr\tr0\n\tblrl";
VOID __VacatePPC(struct PPCBase *,struct SignalSemaphorePPC *, struct SemaphoreMessage *) = "\tlwz\tr0,-802(r3)\n\tmtlr\tr0\n\tblrl";
LONG __AllocSignalPPC(struct PPCBase *,LONG) = "\tlwz\tr0,-466(r3)\n\tmtlr\tr0\n\tblrl";
VOID __FreeSignalPPC(struct PPCBase *,LONG) = "\tlwz\tr0,-472(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __SetSignalPPC(struct PPCBase *,ULONG, ULONG) = "\tlwz\tr0,-478(r3)\n\tmtlr\tr0\n\tblrl";
VOID __SignalPPC(struct PPCBase *,struct TaskPPC *, ULONG) = "\tlwz\tr0,-484(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __WaitPPC(struct PPCBase *,ULONG) = "\tlwz\tr0,-490(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __WaitTime(struct PPCBase *,ULONG, ULONG) = "\tlwz\tr0,-550(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __SetExceptPPC(struct PPCBase *,ULONG, ULONG, ULONG) = "\tlwz\tr0,-778(r3)\n\tmtlr\tr0\n\tblrl";
struct TaskPPC *__CreateTaskPPC(struct PPCBase *,struct TagItem *) = "\tlwz\tr0,-334(r3)\n\tmtlr\tr0\n\tblrl";
VOID __DeleteTaskPPC(struct PPCBase *,struct TaskPPC *) = "\tlwz\tr0,-340(r3)\n\tmtlr\tr0\n\tblrl";
struct TaskPPC *__FindTaskPPC(struct PPCBase *,STRPTR) = "\tlwz\tr0,-346(r3)\n\tmtlr\tr0\n\tblrl";
struct TaskPtr *__LockTaskList(struct PPCBase *) = "\tlwz\tr0,-562(r3)\n\tmtlr\tr0\n\tblrl";
LONG __SetTaskPriPPC(struct PPCBase *,struct TaskPPC *, LONG) = "\tlwz\tr0,-496(r3)\n\tmtlr\tr0\n\tblrl";
VOID __UnLockTaskList(struct PPCBase *) = "\tlwz\tr0,-568(r3)\n\tmtlr\tr0\n\tblrl";
struct TaskPPC *__FindTaskByID(struct PPCBase *,LONG) = "\tlwz\tr0,-736(r3)\n\tmtlr\tr0\n\tblrl";
LONG __SetNiceValue(struct PPCBase *,struct TaskPPC *, LONG) = "\tlwz\tr0,-742(r3)\n\tmtlr\tr0\n\tblrl";
VOID __AddPortPPC(struct PPCBase *,struct MsgPortPPC *) = "\tlwz\tr0,-610(r3)\n\tmtlr\tr0\n\tblrl";
struct MsgPortPPC *__CreateMsgPortPPC(struct PPCBase *) = "\tlwz\tr0,-598(r3)\n\tmtlr\tr0\n\tblrl";
VOID __DeleteMsgPortPPC(struct PPCBase *,struct MsgPortPPC *) = "\tlwz\tr0,-604(r3)\n\tmtlr\tr0\n\tblrl";
struct MsgPortPPC *__FindPortPPC(struct PPCBase *,STRPTR) = "\tlwz\tr0,-622(r3)\n\tmtlr\tr0\n\tblrl";
struct Message *__GetMsgPPC(struct PPCBase *,struct MsgPortPPC *) = "\tlwz\tr0,-640(r3)\n\tmtlr\tr0\n\tblrl";
VOID __PutMsgPPC(struct PPCBase *,struct MsgPortPPC *, struct Message *) = "\tlwz\tr0,-634(r3)\n\tmtlr\tr0\n\tblrl";
struct Message *__WaitPortPPC(struct PPCBase *,struct MsgPortPPC *) = "\tlwz\tr0,-628(r3)\n\tmtlr\tr0\n\tblrl";
VOID __RemPortPPC(struct PPCBase *,struct MsgPortPPC *) = "\tlwz\tr0,-616(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ReplyMsgPPC(struct PPCBase *,struct Message *) = "\tlwz\tr0,-646(r3)\n\tmtlr\tr0\n\tblrl";
struct Message *__AllocXMsgPPC(struct PPCBase *,ULONG, struct MsgPortPPC *) = "\tlwz\tr0,-664(r3)\n\tmtlr\tr0\n\tblrl";
VOID __FreeXMsgPPC(struct PPCBase *,struct Message *) = "\tlwz\tr0,-670(r3)\n\tmtlr\tr0\n\tblrl";
VOID __PutXMsgPPC(struct PPCBase *,struct MsgPort *, struct Message *) = "\tlwz\tr0,-676(r3)\n\tmtlr\tr0\n\tblrl";
struct MsgPortPPC *__SetReplyPortPPC(struct PPCBase *,struct Message *, struct MsgPortPPC *) = "\tlwz\tr0,-706(r3)\n\tmtlr\tr0\n\tblrl";
struct TagItem *__FindTagItemPPC(struct PPCBase *,ULONG, struct TagItem *) = "\tlwz\tr0,-448(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __GetTagDataPPC(struct PPCBase *,ULONG, ULONG, struct TagItem *) = "\tlwz\tr0,-454(r3)\n\tmtlr\tr0\n\tblrl";
struct TagItem *__NextTagItemPPC(struct PPCBase *,struct TagItem **) = "\tlwz\tr0,-460(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ChangeMMU(struct PPCBase *,ULONG) = "\tlwz\tr0,-586(r3)\n\tmtlr\tr0\n\tblrl";
VOID __GetInfo(struct PPCBase *,struct TagItem *) = "\tlwz\tr0,-592(r3)\n\tmtlr\tr0\n\tblrl";
VOID __SetCache(struct PPCBase *,ULONG, APTR, ULONG) = "\tlwz\tr0,-508(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __SetHardware(struct PPCBase *,ULONG, APTR) = "\tlwz\tr0,-538(r3)\n\tmtlr\tr0\n\tblrl";
VOID __GetHALInfo(struct PPCBase *,struct TagItem *) = "\tlwz\tr0,-724(r3)\n\tmtlr\tr0\n\tblrl";
VOID __SetScheduling(struct PPCBase *,struct TagItem *) = "\tlwz\tr0,-730(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ModifyFPExc(struct PPCBase *,ULONG) = "\tlwz\tr0,-544(r3)\n\tmtlr\tr0\n\tblrl";
VOID __RemExcHandler(struct PPCBase *,APTR) = "\tlwz\tr0,-520(r3)\n\tmtlr\tr0\n\tblrl";
APTR __SetExcHandler(struct PPCBase *,struct TagItem *) = "\tlwz\tr0,-514(r3)\n\tmtlr\tr0\n\tblrl";
VOID __SetExcMMU(struct PPCBase *) = "\tlwz\tr0,-574(r3)\n\tmtlr\tr0\n\tblrl";
VOID __ClearExcMMU(struct PPCBase *) = "\tlwz\tr0,-580(r3)\n\tmtlr\tr0\n\tblrl";
VOID __CauseInterrupt(struct PPCBase *) = "\tlwz\tr0,-808(r3)\n\tmtlr\tr0\n\tblrl";
ULONG __Super(struct PPCBase *) = "\tlwz\tr0,-526(r3)\n\tmtlr\tr0\n\tblrl";
VOID __User(struct PPCBase *,ULONG) = "\tlwz\tr0,-532(r3)\n\tmtlr\tr0\n\tblrl";
VOID __Signal68K(struct PPCBase *,struct Task *, ULONG) = "\tlwz\tr0,-502(r3)\n\tmtlr\tr0\n\tblrl";


#endif /* WARPOS_PROTOS_H */
