Go to the documentation of this file.
20 #ifndef __HANDLER_UTILS_H__
21 #define __HANDLER_UTILS_H__
28 #define LS_SIZE 0x40000
29 #define LS_ADDR_MASK (LS_SIZE - 1)
32 #define __PRINTF(fmt, args...) { fprintf(stderr,fmt , ## args); }
34 #define DEBUG_PRINTF(fmt, args...) __PRINTF(fmt , ## args)
36 #define DEBUG_PRINTF(fmt, args...)
39 #define LS_ARG_ADDR(_index) \
40 (&((struct spe_reg128 *) ((char *) ls + ls_args))[_index])
43 struct spe_reg128 *ret = LS_ARG_ADDR(0)
45 #define GET_LS_PTR(_off) \
46 (void *) ((char *) ls + ((_off) & LS_ADDR_MASK))
48 #define GET_LS_PTR_NULL(_off) \
49 ((_off) ? GET_LS_PTR(_off) : NULL)
51 #define DECL_0_ARGS() \
52 unsigned int ls_args = (opdata & 0xffffff)
54 #define DECL_1_ARGS() \
56 struct spe_reg128 *arg0 = LS_ARG_ADDR(0)
58 #define DECL_2_ARGS() \
60 struct spe_reg128 *arg1 = LS_ARG_ADDR(1)
62 #define DECL_3_ARGS() \
64 struct spe_reg128 *arg2 = LS_ARG_ADDR(2)
66 #define DECL_4_ARGS() \
68 struct spe_reg128 *arg3 = LS_ARG_ADDR(3)
70 #define DECL_5_ARGS() \
72 struct spe_reg128 *arg4 = LS_ARG_ADDR(4)
74 #define DECL_6_ARGS() \
76 struct spe_reg128 *arg5 = LS_ARG_ADDR(5)
78 #define PUT_LS_RC(_a, _b, _c, _d) \
79 ret->slot[0] = (unsigned int) (_a); \
80 ret->slot[1] = (unsigned int) (_b); \
81 ret->slot[2] = (unsigned int) (_c); \
82 ret->slot[3] = (unsigned int) (_d); \
83 __asm__ __volatile__ ("sync" : : : "memory")