#include <inline/stub.h>
#ifndef BASE_EXT_DECL
#define BASE_EXT_DECL extern struct FifoBase * FifoBase;
#endif
#ifndef BASE_PAR_DECL
#define BASE_PAR_DECL
#define BASE_PAR_DECL0
#endif
#ifndef BASE_NAME
#define BASE_NAME FifoBase
#endif
__inline static void* OpenFifo(BASE_PAR_DECL const char* name, long bytes, long flags)
{
	BASE_EXT_DECL
	register void* res __asm("d0");
	register void *a6 __asm ("a6");
	register const char* d0 __asm("d0");
	register long d1 __asm("d1");
	register long a0 __asm("a0");

	a6 = BASE_NAME;
	d0 = name;
	d1 = bytes;
	a0 = flags;
	__asm volatile ("
	jsr a6@(-0x1e)"
	: "=r" (res)
	: "r" (a6), "r" (d0), "r" (d1), "r" (a0)
	: "d0", "d1", "a0", "a1");
	return res;
}
__inline static void CloseFifo(BASE_PAR_DECL void* fifo, long flags)
{
	BASE_EXT_DECL
	register void *a6 __asm ("a6");
	register void* d0 __asm("d0");
	register long d1 __asm("d1");

	a6 = BASE_NAME;
	d0 = fifo;
	d1 = flags;
	__asm volatile ("
	jsr a6@(-0x24)"
	: /* no output */
	: "r" (a6), "r" (d0), "r" (d1)
	: "d0", "d1", "a0", "a1");
	*(char *)d0 = *(char *)d0;
}
__inline static long ReadFifo(BASE_PAR_DECL void* fifo, char** buf, long bytes)
{
	BASE_EXT_DECL
	register long res __asm("d0");
	register void *a6 __asm ("a6");
	register void* d0 __asm("d0");
	register char** d1 __asm("d1");
	register long a0 __asm("a0");

	a6 = BASE_NAME;
	d0 = fifo;
	d1 = buf;
	a0 = bytes;
	__asm volatile ("
	jsr a6@(-0x2a)"
	: "=r" (res)
	: "r" (a6), "r" (d0), "r" (d1), "r" (a0)
	: "d0", "d1", "a0", "a1");
	*(char *)d0 = *(char *)d0; *d1=*d1;
	return res;
}
__inline static long WriteFifo(BASE_PAR_DECL void* fifo, const void* buf, long bytes)
{
	BASE_EXT_DECL
	register long res __asm("d0");
	register void *a6 __asm ("a6");
	register void* d0 __asm("d0");
	register const void* d1 __asm("d1");
	register long a0 __asm("a0");

	a6 = BASE_NAME;
	d0 = fifo;
	d1 = buf;
	a0 = bytes;
	__asm volatile ("
	jsr a6@(-0x30)"
	: "=r" (res)
	: "r" (a6), "r" (d0), "r" (d1), "r" (a0)
	: "d0", "d1", "a0", "a1");
	*(char *)d0 = *(char *)d0;
	return res;
}
__inline static void RequestFifo(BASE_PAR_DECL void* fifo, struct Message* msg, long req)
{
	BASE_EXT_DECL
	register void *a6 __asm ("a6");
	register void* d0 __asm("d0");
	register struct Message* d1 __asm("d1");
	register long a0 __asm("a0");

	a6 = BASE_NAME;
	d0 = fifo;
	d1 = msg;
	a0 = req;
	__asm volatile ("
	jsr a6@(-0x36)"
	: /* no output */
	: "r" (a6), "r" (d0), "r" (d1), "r" (a0)
	: "d0", "d1", "a0", "a1");
	*(char *)d0 = *(char *)d0;*d1=*d1;
}
__inline static long BufSizeFifo(BASE_PAR_DECL void* fifo)
{
	BASE_EXT_DECL
	register long res __asm("d0");
	register void *a6 __asm ("a6");
	register void* d0 __asm("d0");

	a6 = BASE_NAME;
	d0 = fifo;
	__asm volatile ("
	jsr a6@(-0x3c)"
	: "=r" (res)
	: "r" (a6), "r" (d0)
	: "d0", "d1", "a0", "a1");
	*(char *)d0 = *(char *)d0;
	return res;
}
#undef BASE_EXT_DECL
#undef BASE_PAR_DECL
#undef BASE_PAR_DECL0
#undef BASE_NAME
