psl1ght
A free SDK for Sony's PS3 console
Loading...
Searching...
No Matches
rsx_function_macros.h
Go to the documentation of this file.
1#ifdef RSX_FUNCTION_MACROS
2
3#if RSX_UNSAFE
4 #define RSX_FUNC(func) rsx##func##Unsafe
5#else
6 #define RSX_FUNC(func) rsx##func
7#endif
8
9#if RSX_INTERNAL
10
11#if RSX_UNSAFE
12 #define RSX_FUNC_INTERNAL(func) __rsx##func##Unsafe
13 #define RSX_CONTEXT_CURRENT_BEGIN(count) do {} while(0)
14#else
15 s32 __attribute__((noinline)) rsxContextCallback(gcmContextData *context,u32 count)
16 {
17 register s32 result asm("r3");
18 __asm__ __volatile__ (
19 "stdu 1,-128(1)\n"
20 "mr 31,2\n"
21 "lwz 0,0(%3)\n"
22 "lwz 2,4(%3)\n"
23 "mtctr 0\n"
24 "bctrl\n"
25 "mr 2,31\n"
26 "addi 1,1,128\n"
27 : "+r"(result)
28 : "r"(context), "r"(count), "b"(context->callback)
29 : "r31", "r0", "lr"
30 );
31 return result;
32 }
33
34 #define RSX_FUNC_INTERNAL(func) __rsx##func
35 #define RSX_CONTEXT_CURRENT_BEGIN(count) do { \
36 if((context->current + (count)) > context->end) { \
37 if(rsxContextCallback(context,(count))!=0) return; \
38 } \
39 } while(0)
40#endif
41
42#endif
43
44#endif
45
46#ifndef RSX_FUNCTION_MACROS
47#undef RSX_CONTEXT_CURRENT_BEGIN
48#undef RSX_FUNC
49#undef RSX_FUNC_INTERNAL
50#endif
struct _heap_cntrl_t __attribute__
RSX Context data structure.
Definition gcm_sys.h:723