1#ifndef _NSEEL_GLUE_PPC_H_
2#define _NSEEL_GLUE_PPC_H_
4#define GLUE_MAX_FPSTACK_SIZE 0
5#define GLUE_MAX_JMPSIZE 30000
11#define GLUE_JMP_SET_OFFSET(endOfInstruction,offset) (((short *)(endOfInstruction))[-1] = ((offset) + 4) & 0xFFFC)
27#define GLUE_MOV_PX_DIRECTVALUE_SIZE 8
30 static const unsigned short tab[3][2] = {
35 unsigned int uv=(
unsigned int)
v;
36 unsigned short *
p=(
unsigned short *)
b;
39 *
p++ = (uv>>16)&0xffff;
48#define GLUE_FUNC_ENTER_SIZE 8
53const static unsigned int GLUE_FUNC_LEAVE[3] = { 0x80A10000, 0x38210010, 0x7CA803A6 };
54#define GLUE_FUNC_LEAVE_SIZE 12
56const static unsigned int GLUE_RET[]={0x4E800020};
60 const static unsigned int GLUE_SET_WTP_FROM_R17=0x7E308B78;
61 if (
out)
memcpy(
out,&GLUE_SET_WTP_FROM_R17,
sizeof(GLUE_SET_WTP_FROM_R17));
62 return sizeof(GLUE_SET_WTP_FROM_R17);
72#define GLUE_POP_PX_SIZE 8
75 static const unsigned int tab[3] ={
80 ((
unsigned int *)
b)[0] = tab[wv];
81 ((
unsigned int *)
b)[1] = 0x38210010;
84#define GLUE_SET_PX_FROM_P1_SIZE 4
87 static const unsigned int tab[3]={
92 *(
unsigned int *)
b = tab[wv];
109 unsigned int *bufptr = (
unsigned int *)buf;
110 *bufptr++ = 0xC8410000;
111 *bufptr++ = 0x38210010;
114 *bufptr++ = 0xd8430000;
127 unsigned int *bufptr = (
unsigned int *)buf;
128 *bufptr++ = 0xc8430000;
131 *bufptr++ = 0xd8430000;
140 static const double consttab[] = {
165 ::
"r" (
cp),
"r" (bp),
"r" (
rt),
"r" (consttab));
171 unsigned int *
p=(
unsigned int *)_p;
172 while ((
p[0]&0x0000FFFF) != 0x0000dead &&
173 (
p[1]&0x0000FFFF) != 0x0000beef)
p++;
174 p[0] = (
p[0]&0xFFFF0000) | (((newv)>>16)&0xFFFF);
175 p[1] = (
p[1]&0xFFFF0000) | ((newv)&0xFFFF);
177 return (
unsigned char *)(
p+1);
180 #define GLUE_SET_PX_FROM_WTP_SIZE sizeof(int)
183 static const unsigned int tab[3]={
188 *(
unsigned int *)
b = tab[wv];
196 unsigned int *bufptr = (
unsigned int *)buf;
200 *bufptr++ = 0xD8230000;
204 #define GLUE_POP_FPSTACK_SIZE 0
215 #define GLUE_PUSH_VAL_AT_PX_TO_FPSTACK_SIZE 4
218 static const unsigned int tab[3] = {
223 *(
unsigned int *)
b = tab[wv];
226#define GLUE_POP_FPSTACK_TO_WTP_TO_PX_SIZE (sizeof(GLUE_POP_FPSTACK_TO_WTP) + GLUE_SET_PX_FROM_WTP_SIZE)
243 static const unsigned char sig[12] = { 0x7c, 0x00, 0x03, 0x78, 0x7c, 0x21, 0x0b, 0x78, 0x7c, 0x42, 0x13, 0x78 };
244 unsigned char *
p = (
unsigned char *)
fn;
246 while (memcmp(
p,sig,
sizeof(sig)))
p+=4;
250 while (memcmp(
p,sig,
sizeof(sig)))
p+=4;
251 *
size =
p - (
unsigned char *)
fn;
255 #define GLUE_STORE_P1_TO_STACK_AT_OFFS_SIZE(x) 4
259 *(
unsigned int *)
b = 0x90610000 + (offs&0xffff);
262 #define GLUE_MOVE_PX_STACKPTR_SIZE 4
265 static const unsigned int tab[3] =
271 * (
unsigned int *)
b = tab[wv];
274 #define GLUE_MOVE_STACK_SIZE 4
278 ((
unsigned int *)
b)[0] = 0x38210000 + (amt&0xffff);
unsigned v[N_MAX]
Definition inflate.c:1584
static const unsigned int GLUE_PUSH_P1PTR_AS_VALUE[]
Definition glue_aarch64.h:183
static const unsigned int GLUE_POP_FPSTACK_TOSTACK[]
Definition glue_aarch64.h:303
static const unsigned int GLUE_POP_FPSTACK[1]
Definition glue_aarch64.h:301
static const unsigned int GLUE_FUNC_LEAVE[1]
Definition glue_aarch64.h:106
static const unsigned int GLUE_POP_FPSTACK_TO_WTP[]
Definition glue_aarch64.h:308
#define GLUE_MOV_PX_DIRECTVALUE_SIZE
Definition glue_aarch64.h:86
static const unsigned int GLUE_JMP_NC[]
Definition glue_aarch64.h:72
static const unsigned int GLUE_JMP_IF_P1_NZ[]
Definition glue_aarch64.h:79
static const unsigned int GLUE_FUNC_ENTER[2]
Definition glue_aarch64.h:104
static const unsigned int GLUE_SET_P1_Z[]
Definition glue_aarch64.h:325
static const unsigned int GLUE_RET[]
Definition glue_aarch64.h:108
static const unsigned int GLUE_JMP_IF_P1_Z[]
Definition glue_aarch64.h:74
#define GLUE_CALL_CODE(bp, cp, rt)
Definition glue_aarch64.h:217
static const unsigned int GLUE_PUSH_P1[1]
Definition glue_aarch64.h:118
static const unsigned int GLUE_SET_P1_NZ[]
Definition glue_aarch64.h:326
INT_PTR INT_PTR rt
Definition glue_arm.h:222
static unsigned char GLUE_POP_STACK_TO_FPSTACK[1]
Definition glue_port.h:341
static void GLUE_MOVE_STACK(void *b, int amt)
Definition glue_ppc.h:275
static void GLUE_SET_PX_FROM_WTP(void *b, int wv)
Definition glue_ppc.h:181
static void GLUE_POP_FPSTACK_TO_WTP_TO_PX(unsigned char *buf, int wv)
Definition glue_ppc.h:227
static void GLUE_MOV_PX_DIRECTVALUE_GEN(void *b, INT_PTR v, int wv)
Definition glue_ppc.h:28
static void * GLUE_realAddress(void *fn, int *size)
Definition glue_ppc.h:240
static int GLUE_RESET_WTP(unsigned char *out, void *ptr)
Definition glue_ppc.h:58
static int GLUE_POP_VALUE_TO_ADDR(unsigned char *buf, void *destptr)
Definition glue_ppc.h:101
static void GLUE_MOVE_PX_STACKPTR_GEN(void *b, int wv)
Definition glue_ppc.h:263
static void GLUE_STORE_P1_TO_STACK_AT_OFFS(void *b, int offs)
Definition glue_ppc.h:256
static void GLUE_POP_PX(void *b, int wv)
Definition glue_ppc.h:73
static int GLUE_POP_FPSTACK_TO_PTR(unsigned char *buf, void *destptr)
Definition glue_ppc.h:190
static unsigned char * EEL_GLUE_set_immediate(void *_p, INT_PTR newv)
Definition glue_ppc.h:168
static void GLUE_PUSH_VAL_AT_PX_TO_FPSTACK(void *b, int wv)
Definition glue_ppc.h:216
static void GLUE_SET_PX_FROM_P1(void *b, int wv)
Definition glue_ppc.h:85
static int GLUE_COPY_VALUE_AT_P1_TO_PTR(unsigned char *buf, void *destptr)
Definition glue_ppc.h:119
float out
Definition lilv_test.c:1461
#define NSEEL_CLOSEFACTOR
Definition ns-eel-int.h:101
const char const char const char const char char * fn
Definition swell-functions.h:168
intptr_t INT_PTR
Definition swell-types.h:42
uch * p
Definition crypt.c:594
memcpy(hh, h, RAND_HEAD_LEN)
char * cp
Definition unix.c:513
typedef int(UZ_EXP MsgFn)()