* [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol
@ 2007-11-14 7:04 Shaddy Baddah
2007-11-14 8:10 ` [Qemu-devel] now ppc build failure: dyngen: empty code for op_splatw_T1_64 Shaddy Baddah
2007-11-15 20:01 ` [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol Blue Swirl
0 siblings, 2 replies; 14+ messages in thread
From: Shaddy Baddah @ 2007-11-14 7:04 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 2289 bytes --]
Hi,
I am building qemu from CVS, on a sun4u machine. I have used the
following configure command to ensure a sun4m userland build:
../qemu/configure --prefix=/opt/qemu-cvs --sparc_cpu=v8
I get the following message confirming the use of GCC 3:
Looking for gcc 3.x
Found "gcc-3.4"
Eventually, I get the error I have included at the base of this email. I
have attached the op.h generated. As you will be able to see from the
line below, a nameless symbol is being referenced (after the &):
op.h:24: *(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t
*)(gen_code_ptr + 0)) & ~0x3fffff) | ((((long)(&) + 0) >> 10) & 0x3fffff);
^
I've followed the dyngen code as best as I can, and AFAICT that code is
right. The symbol referenced is nameless in the ELF symbol table.
I've also got a patch suggestion that just makes the code a little
neater, as was probably intended with the addition of the
get_rel_sym_name function. I'm not 100% sure that it is right, and I
haven't covered all compile cases. Just a suggestion.
The original error follows:
../dyngen -o op.h op.o
../dyngen -c -o opc.h op.o
gcc-3.4 -Wall -O2 -g -fno-strict-aliasing -I. -I..
-I/home/shaddy/qemu-cvs/qemu/target-alpha -I/home/shaddy/qemu-cvs/qemu
-MMD -MP -DNEED_CPU_H -I/home/shaddy/qemu-cvs/qemu/linux-user
-I/home/shaddy/qemu-cvs/qemu/linux-user/alpha -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-I/home/shaddy/qemu-cvs/qemu/fpu -I/home/shaddy/qemu-cvs/qemu/slirp
-ffixed-g2 -ffixed-g3 -ffixed-g1 -ffixed-g6 -m32 -mcpu=v8
-D__sparc_v8__ -c -o translate-op.o
/home/shaddy/qemu-cvs/qemu/translate-op.c
In file included from /home/shaddy/qemu-cvs/qemu/translate-op.c:36:
./op.h: In function `dyngen_code':
./op.h:24: error: syntax error before ')' token
./op.h:25: error: syntax error before ')' token
./op.h:198: error: syntax error before ')' token
./op.h:199: error: syntax error before ')' token
./op.h:372: error: syntax error before ')' token
./op.h:373: error: syntax error before ')' token
make[1]: *** [translate-op.o] Error 1
make[1]: Leaving directory
`/home/shaddy/qemu-cvs/qemu-build/alpha-linux-user'
make: *** [subdir-alpha-linux-user] Error 2
TIA,
Shaddy
[-- Attachment #2: qemu-dyngen-neatness.patch --]
[-- Type: text/x-patch, Size: 2072 bytes --]
Index: dyngen.c
===================================================================
RCS file: /sources/qemu/qemu/dyngen.c,v
retrieving revision 1.57
diff -r1.57 dyngen.c
1929c1929
< sym_name = strtab + symtab[ELFW(R_SYM)(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
1963c1963
< sym_name = strtab + symtab[ELFW(R_SYM)(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2105c2105
< sym_name = strtab + symtab[ELFW(R_SYM)(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2137c2137
< sym_name = strtab + symtab[ELF64_R_SYM(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2187d2186
< unsigned long sym_idx;
2194d2192
< sym_idx = ELF64_R_SYM(rel->r_info);
2198c2196
< sym_name = (strtab + symtab[sym_idx].st_name);
---
> sym_name = get_rel_sym_name(rel);
2269c2267
< sym_name = strtab + symtab[ELF32_R_SYM(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2332c2330
< sym_name = strtab + symtab[ELF64_R_SYM(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2463c2461
< sym_name = strtab + symtab[ELFW(R_SYM)(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2499c2497
< sym_name = strtab + symtab[ELFW(R_SYM)(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2530c2528
< sym_name = strtab + symtab[ELF32_R_SYM(rel->r_info)].st_name;
---
> sym_name = get_rel_sym_name(rel);
2724d2721
< unsigned long sym_idx;
2731,2732c2728
< sym_idx = ELF64_R_SYM(rel->r_info);
< sym_name = (strtab + symtab[sym_idx].st_name);
---
> sym_name = get_rel_sym_name(rel);
2753,2754c2749
< sym_idx = ELF64_R_SYM(rel->r_info);
< sym_name = (strtab + symtab[sym_idx].st_name);
---
> sym_name = get_rel_sym_name(rel);
[-- Attachment #3: op.h --]
[-- Type: text/x-chdr, Size: 134996 bytes --]
int dyngen_code(uint8_t *gen_code_buf,
uint16_t *label_offsets, uint16_t *jmp_offsets,
const uint16_t *opc_buf, const uint32_t *opparam_buf, const long *gen_labels)
{
uint8_t *gen_code_ptr;
const uint16_t *opc_ptr;
const uint32_t *opparam_ptr;
gen_code_ptr = gen_code_buf;
opc_ptr = opc_buf;
opparam_ptr = opparam_buf;
for(;;) {
switch(*opc_ptr++) {
case INDEX_op_reset_T0: {
extern void op_reset_T0();
memcpy(gen_code_ptr, (void *)((char *)&op_reset_T0+0), 16);
gen_code_ptr += 16;
}
break;
case INDEX_op_reset_FT0: {
extern void op_reset_FT0();
memcpy(gen_code_ptr, (void *)((char *)&op_reset_FT0+0), 16);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | ((((long)(&) + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | (((long)(&) + 0) & 0x3ff);
gen_code_ptr += 16;
}
break;
case INDEX_op_set_s16_T0: {
long param1;
extern void op_set_s16_T0();
memcpy(gen_code_ptr, (void *)((char *)&op_set_s16_T0+0), 28);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 28;
}
break;
case INDEX_op_set_u16_T0: {
long param1;
extern void op_set_u16_T0();
memcpy(gen_code_ptr, (void *)((char *)&op_set_u16_T0+0), 28);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 28;
}
break;
case INDEX_op_set_s32_T0: {
long param1;
extern void op_set_s32_T0();
memcpy(gen_code_ptr, (void *)((char *)&op_set_s32_T0+0), 24);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 24;
}
break;
case INDEX_op_set_u32_T0: {
long param1;
extern void op_set_u32_T0();
memcpy(gen_code_ptr, (void *)((char *)&op_set_u32_T0+0), 24);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 24;
}
break;
case INDEX_op_set_64_T0: {
long param1, param2;
extern void op_set_64_T0();
memcpy(gen_code_ptr, (void *)((char *)&op_set_64_T0+0), 48);
param1 = *opparam_ptr++;
param2 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
*(uint32_t *)(gen_code_ptr + 12) = ((*(uint32_t *)(gen_code_ptr + 12)) & ~0x3fffff) | (((param2 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16)) & ~0x3ff) | ((param2 + 0) & 0x3ff);
gen_code_ptr += 48;
}
break;
case INDEX_op_load_T0_ir0: {
extern void op_load_T0_ir0();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir0: {
extern void op_load_T1_ir0();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir0: {
extern void op_load_T2_ir0();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir0: {
extern void op_store_T0_ir0();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir0: {
extern void op_store_T1_ir0();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir0: {
extern void op_store_T2_ir0();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir0: {
extern void op_cmov_ir0();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir0+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir0: {
extern void op_load_FT0_fir0();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir0: {
extern void op_load_FT1_fir0();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir0: {
extern void op_load_FT2_fir0();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir0: {
extern void op_store_FT0_fir0();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir0: {
extern void op_store_FT1_fir0();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir0: {
extern void op_store_FT2_fir0();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir0+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir0: {
extern void op_cmov_fir0();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir0+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_reset_T1: {
extern void op_reset_T1();
memcpy(gen_code_ptr, (void *)((char *)&op_reset_T1+0), 16);
gen_code_ptr += 16;
}
break;
case INDEX_op_reset_FT1: {
extern void op_reset_FT1();
memcpy(gen_code_ptr, (void *)((char *)&op_reset_FT1+0), 16);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | ((((long)(&) + 8) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | (((long)(&) + 8) & 0x3ff);
gen_code_ptr += 16;
}
break;
case INDEX_op_set_s16_T1: {
long param1;
extern void op_set_s16_T1();
memcpy(gen_code_ptr, (void *)((char *)&op_set_s16_T1+0), 28);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 28;
}
break;
case INDEX_op_set_u16_T1: {
long param1;
extern void op_set_u16_T1();
memcpy(gen_code_ptr, (void *)((char *)&op_set_u16_T1+0), 28);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 28;
}
break;
case INDEX_op_set_s32_T1: {
long param1;
extern void op_set_s32_T1();
memcpy(gen_code_ptr, (void *)((char *)&op_set_s32_T1+0), 24);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 24;
}
break;
case INDEX_op_set_u32_T1: {
long param1;
extern void op_set_u32_T1();
memcpy(gen_code_ptr, (void *)((char *)&op_set_u32_T1+0), 24);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 24;
}
break;
case INDEX_op_set_64_T1: {
long param1, param2;
extern void op_set_64_T1();
memcpy(gen_code_ptr, (void *)((char *)&op_set_64_T1+0), 48);
param1 = *opparam_ptr++;
param2 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
*(uint32_t *)(gen_code_ptr + 12) = ((*(uint32_t *)(gen_code_ptr + 12)) & ~0x3fffff) | (((param2 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16)) & ~0x3ff) | ((param2 + 0) & 0x3ff);
gen_code_ptr += 48;
}
break;
case INDEX_op_load_T0_ir1: {
extern void op_load_T0_ir1();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir1: {
extern void op_load_T1_ir1();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir1: {
extern void op_load_T2_ir1();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir1: {
extern void op_store_T0_ir1();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir1: {
extern void op_store_T1_ir1();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir1: {
extern void op_store_T2_ir1();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir1: {
extern void op_cmov_ir1();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir1+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir1: {
extern void op_load_FT0_fir1();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir1: {
extern void op_load_FT1_fir1();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir1: {
extern void op_load_FT2_fir1();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir1: {
extern void op_store_FT0_fir1();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir1: {
extern void op_store_FT1_fir1();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir1: {
extern void op_store_FT2_fir1();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir1+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir1: {
extern void op_cmov_fir1();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir1+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_reset_T2: {
extern void op_reset_T2();
memcpy(gen_code_ptr, (void *)((char *)&op_reset_T2+0), 16);
gen_code_ptr += 16;
}
break;
case INDEX_op_reset_FT2: {
extern void op_reset_FT2();
memcpy(gen_code_ptr, (void *)((char *)&op_reset_FT2+0), 16);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | ((((long)(&) + 16) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | (((long)(&) + 16) & 0x3ff);
gen_code_ptr += 16;
}
break;
case INDEX_op_set_s16_T2: {
long param1;
extern void op_set_s16_T2();
memcpy(gen_code_ptr, (void *)((char *)&op_set_s16_T2+0), 28);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 28;
}
break;
case INDEX_op_set_u16_T2: {
long param1;
extern void op_set_u16_T2();
memcpy(gen_code_ptr, (void *)((char *)&op_set_u16_T2+0), 28);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 28;
}
break;
case INDEX_op_set_s32_T2: {
long param1;
extern void op_set_s32_T2();
memcpy(gen_code_ptr, (void *)((char *)&op_set_s32_T2+0), 24);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 24;
}
break;
case INDEX_op_set_u32_T2: {
long param1;
extern void op_set_u32_T2();
memcpy(gen_code_ptr, (void *)((char *)&op_set_u32_T2+0), 24);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 24;
}
break;
case INDEX_op_set_64_T2: {
long param1, param2;
extern void op_set_64_T2();
memcpy(gen_code_ptr, (void *)((char *)&op_set_64_T2+0), 48);
param1 = *opparam_ptr++;
param2 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
*(uint32_t *)(gen_code_ptr + 12) = ((*(uint32_t *)(gen_code_ptr + 12)) & ~0x3fffff) | (((param2 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16)) & ~0x3ff) | ((param2 + 0) & 0x3ff);
gen_code_ptr += 48;
}
break;
case INDEX_op_load_T0_ir2: {
extern void op_load_T0_ir2();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir2: {
extern void op_load_T1_ir2();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir2: {
extern void op_load_T2_ir2();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir2: {
extern void op_store_T0_ir2();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir2: {
extern void op_store_T1_ir2();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir2: {
extern void op_store_T2_ir2();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir2: {
extern void op_cmov_ir2();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir2+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir2: {
extern void op_load_FT0_fir2();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir2: {
extern void op_load_FT1_fir2();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir2: {
extern void op_load_FT2_fir2();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir2: {
extern void op_store_FT0_fir2();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir2: {
extern void op_store_FT1_fir2();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir2: {
extern void op_store_FT2_fir2();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir2+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir2: {
extern void op_cmov_fir2();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir2+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir3: {
extern void op_load_T0_ir3();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir3: {
extern void op_load_T1_ir3();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir3: {
extern void op_load_T2_ir3();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir3: {
extern void op_store_T0_ir3();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir3: {
extern void op_store_T1_ir3();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir3: {
extern void op_store_T2_ir3();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir3: {
extern void op_cmov_ir3();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir3+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir3: {
extern void op_load_FT0_fir3();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir3: {
extern void op_load_FT1_fir3();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir3: {
extern void op_load_FT2_fir3();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir3: {
extern void op_store_FT0_fir3();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir3: {
extern void op_store_FT1_fir3();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir3: {
extern void op_store_FT2_fir3();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir3+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir3: {
extern void op_cmov_fir3();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir3+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir4: {
extern void op_load_T0_ir4();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir4: {
extern void op_load_T1_ir4();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir4: {
extern void op_load_T2_ir4();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir4: {
extern void op_store_T0_ir4();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir4: {
extern void op_store_T1_ir4();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir4: {
extern void op_store_T2_ir4();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir4: {
extern void op_cmov_ir4();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir4+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir4: {
extern void op_load_FT0_fir4();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir4: {
extern void op_load_FT1_fir4();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir4: {
extern void op_load_FT2_fir4();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir4: {
extern void op_store_FT0_fir4();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir4: {
extern void op_store_FT1_fir4();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir4: {
extern void op_store_FT2_fir4();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir4+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir4: {
extern void op_cmov_fir4();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir4+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir5: {
extern void op_load_T0_ir5();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir5: {
extern void op_load_T1_ir5();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir5: {
extern void op_load_T2_ir5();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir5: {
extern void op_store_T0_ir5();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir5: {
extern void op_store_T1_ir5();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir5: {
extern void op_store_T2_ir5();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir5: {
extern void op_cmov_ir5();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir5+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir5: {
extern void op_load_FT0_fir5();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir5: {
extern void op_load_FT1_fir5();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir5: {
extern void op_load_FT2_fir5();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir5: {
extern void op_store_FT0_fir5();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir5: {
extern void op_store_FT1_fir5();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir5: {
extern void op_store_FT2_fir5();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir5+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir5: {
extern void op_cmov_fir5();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir5+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir6: {
extern void op_load_T0_ir6();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir6: {
extern void op_load_T1_ir6();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir6: {
extern void op_load_T2_ir6();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir6: {
extern void op_store_T0_ir6();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir6: {
extern void op_store_T1_ir6();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir6: {
extern void op_store_T2_ir6();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir6: {
extern void op_cmov_ir6();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir6+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir6: {
extern void op_load_FT0_fir6();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir6: {
extern void op_load_FT1_fir6();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir6: {
extern void op_load_FT2_fir6();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir6: {
extern void op_store_FT0_fir6();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir6: {
extern void op_store_FT1_fir6();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir6: {
extern void op_store_FT2_fir6();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir6+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir6: {
extern void op_cmov_fir6();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir6+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir7: {
extern void op_load_T0_ir7();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir7: {
extern void op_load_T1_ir7();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir7: {
extern void op_load_T2_ir7();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir7: {
extern void op_store_T0_ir7();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir7: {
extern void op_store_T1_ir7();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir7: {
extern void op_store_T2_ir7();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir7: {
extern void op_cmov_ir7();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir7+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir7: {
extern void op_load_FT0_fir7();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir7: {
extern void op_load_FT1_fir7();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir7: {
extern void op_load_FT2_fir7();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir7: {
extern void op_store_FT0_fir7();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir7: {
extern void op_store_FT1_fir7();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir7: {
extern void op_store_FT2_fir7();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir7+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir7: {
extern void op_cmov_fir7();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir7+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir8: {
extern void op_load_T0_ir8();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir8: {
extern void op_load_T1_ir8();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir8: {
extern void op_load_T2_ir8();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir8: {
extern void op_store_T0_ir8();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir8: {
extern void op_store_T1_ir8();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir8: {
extern void op_store_T2_ir8();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir8: {
extern void op_cmov_ir8();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir8+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir8: {
extern void op_load_FT0_fir8();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir8: {
extern void op_load_FT1_fir8();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir8: {
extern void op_load_FT2_fir8();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir8: {
extern void op_store_FT0_fir8();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir8: {
extern void op_store_FT1_fir8();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir8: {
extern void op_store_FT2_fir8();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir8+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir8: {
extern void op_cmov_fir8();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir8+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir9: {
extern void op_load_T0_ir9();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir9: {
extern void op_load_T1_ir9();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir9: {
extern void op_load_T2_ir9();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir9: {
extern void op_store_T0_ir9();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir9: {
extern void op_store_T1_ir9();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir9: {
extern void op_store_T2_ir9();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir9: {
extern void op_cmov_ir9();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir9+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir9: {
extern void op_load_FT0_fir9();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir9: {
extern void op_load_FT1_fir9();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir9: {
extern void op_load_FT2_fir9();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir9: {
extern void op_store_FT0_fir9();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir9: {
extern void op_store_FT1_fir9();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir9: {
extern void op_store_FT2_fir9();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir9+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir9: {
extern void op_cmov_fir9();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir9+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir10: {
extern void op_load_T0_ir10();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir10: {
extern void op_load_T1_ir10();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir10: {
extern void op_load_T2_ir10();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir10: {
extern void op_store_T0_ir10();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir10: {
extern void op_store_T1_ir10();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir10: {
extern void op_store_T2_ir10();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir10: {
extern void op_cmov_ir10();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir10+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir10: {
extern void op_load_FT0_fir10();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir10: {
extern void op_load_FT1_fir10();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir10: {
extern void op_load_FT2_fir10();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir10: {
extern void op_store_FT0_fir10();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir10: {
extern void op_store_FT1_fir10();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir10: {
extern void op_store_FT2_fir10();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir10+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir10: {
extern void op_cmov_fir10();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir10+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir11: {
extern void op_load_T0_ir11();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir11: {
extern void op_load_T1_ir11();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir11: {
extern void op_load_T2_ir11();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir11: {
extern void op_store_T0_ir11();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir11: {
extern void op_store_T1_ir11();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir11: {
extern void op_store_T2_ir11();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir11: {
extern void op_cmov_ir11();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir11+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir11: {
extern void op_load_FT0_fir11();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir11: {
extern void op_load_FT1_fir11();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir11: {
extern void op_load_FT2_fir11();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir11: {
extern void op_store_FT0_fir11();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir11: {
extern void op_store_FT1_fir11();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir11: {
extern void op_store_FT2_fir11();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir11+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir11: {
extern void op_cmov_fir11();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir11+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir12: {
extern void op_load_T0_ir12();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir12: {
extern void op_load_T1_ir12();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir12: {
extern void op_load_T2_ir12();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir12: {
extern void op_store_T0_ir12();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir12: {
extern void op_store_T1_ir12();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir12: {
extern void op_store_T2_ir12();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir12: {
extern void op_cmov_ir12();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir12+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir12: {
extern void op_load_FT0_fir12();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir12: {
extern void op_load_FT1_fir12();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir12: {
extern void op_load_FT2_fir12();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir12: {
extern void op_store_FT0_fir12();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir12: {
extern void op_store_FT1_fir12();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir12: {
extern void op_store_FT2_fir12();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir12+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir12: {
extern void op_cmov_fir12();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir12+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir13: {
extern void op_load_T0_ir13();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir13: {
extern void op_load_T1_ir13();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir13: {
extern void op_load_T2_ir13();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir13: {
extern void op_store_T0_ir13();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir13: {
extern void op_store_T1_ir13();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir13: {
extern void op_store_T2_ir13();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir13: {
extern void op_cmov_ir13();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir13+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir13: {
extern void op_load_FT0_fir13();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir13: {
extern void op_load_FT1_fir13();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir13: {
extern void op_load_FT2_fir13();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir13: {
extern void op_store_FT0_fir13();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir13: {
extern void op_store_FT1_fir13();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir13: {
extern void op_store_FT2_fir13();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir13+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir13: {
extern void op_cmov_fir13();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir13+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir14: {
extern void op_load_T0_ir14();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir14: {
extern void op_load_T1_ir14();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir14: {
extern void op_load_T2_ir14();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir14: {
extern void op_store_T0_ir14();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir14: {
extern void op_store_T1_ir14();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir14: {
extern void op_store_T2_ir14();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir14: {
extern void op_cmov_ir14();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir14+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir14: {
extern void op_load_FT0_fir14();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir14: {
extern void op_load_FT1_fir14();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir14: {
extern void op_load_FT2_fir14();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir14: {
extern void op_store_FT0_fir14();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir14: {
extern void op_store_FT1_fir14();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir14: {
extern void op_store_FT2_fir14();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir14+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir14: {
extern void op_cmov_fir14();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir14+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir15: {
extern void op_load_T0_ir15();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir15: {
extern void op_load_T1_ir15();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir15: {
extern void op_load_T2_ir15();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir15: {
extern void op_store_T0_ir15();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir15: {
extern void op_store_T1_ir15();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir15: {
extern void op_store_T2_ir15();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir15: {
extern void op_cmov_ir15();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir15+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir15: {
extern void op_load_FT0_fir15();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir15: {
extern void op_load_FT1_fir15();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir15: {
extern void op_load_FT2_fir15();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir15: {
extern void op_store_FT0_fir15();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir15: {
extern void op_store_FT1_fir15();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir15: {
extern void op_store_FT2_fir15();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir15+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir15: {
extern void op_cmov_fir15();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir15+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir16: {
extern void op_load_T0_ir16();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir16: {
extern void op_load_T1_ir16();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir16: {
extern void op_load_T2_ir16();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir16: {
extern void op_store_T0_ir16();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir16: {
extern void op_store_T1_ir16();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir16: {
extern void op_store_T2_ir16();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir16: {
extern void op_cmov_ir16();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir16+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir16: {
extern void op_load_FT0_fir16();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir16: {
extern void op_load_FT1_fir16();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir16: {
extern void op_load_FT2_fir16();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir16: {
extern void op_store_FT0_fir16();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir16: {
extern void op_store_FT1_fir16();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir16: {
extern void op_store_FT2_fir16();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir16+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir16: {
extern void op_cmov_fir16();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir16+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir17: {
extern void op_load_T0_ir17();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir17: {
extern void op_load_T1_ir17();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir17: {
extern void op_load_T2_ir17();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir17: {
extern void op_store_T0_ir17();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir17: {
extern void op_store_T1_ir17();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir17: {
extern void op_store_T2_ir17();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir17: {
extern void op_cmov_ir17();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir17+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir17: {
extern void op_load_FT0_fir17();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir17: {
extern void op_load_FT1_fir17();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir17: {
extern void op_load_FT2_fir17();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir17: {
extern void op_store_FT0_fir17();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir17: {
extern void op_store_FT1_fir17();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir17: {
extern void op_store_FT2_fir17();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir17+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir17: {
extern void op_cmov_fir17();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir17+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir18: {
extern void op_load_T0_ir18();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir18: {
extern void op_load_T1_ir18();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir18: {
extern void op_load_T2_ir18();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir18: {
extern void op_store_T0_ir18();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir18: {
extern void op_store_T1_ir18();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir18: {
extern void op_store_T2_ir18();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir18: {
extern void op_cmov_ir18();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir18+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir18: {
extern void op_load_FT0_fir18();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir18: {
extern void op_load_FT1_fir18();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir18: {
extern void op_load_FT2_fir18();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir18: {
extern void op_store_FT0_fir18();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir18: {
extern void op_store_FT1_fir18();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir18: {
extern void op_store_FT2_fir18();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir18+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir18: {
extern void op_cmov_fir18();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir18+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir19: {
extern void op_load_T0_ir19();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir19: {
extern void op_load_T1_ir19();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir19: {
extern void op_load_T2_ir19();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir19: {
extern void op_store_T0_ir19();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir19: {
extern void op_store_T1_ir19();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir19: {
extern void op_store_T2_ir19();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir19: {
extern void op_cmov_ir19();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir19+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir19: {
extern void op_load_FT0_fir19();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir19: {
extern void op_load_FT1_fir19();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir19: {
extern void op_load_FT2_fir19();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir19: {
extern void op_store_FT0_fir19();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir19: {
extern void op_store_FT1_fir19();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir19: {
extern void op_store_FT2_fir19();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir19+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir19: {
extern void op_cmov_fir19();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir19+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir20: {
extern void op_load_T0_ir20();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir20: {
extern void op_load_T1_ir20();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir20: {
extern void op_load_T2_ir20();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir20: {
extern void op_store_T0_ir20();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir20: {
extern void op_store_T1_ir20();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir20: {
extern void op_store_T2_ir20();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir20: {
extern void op_cmov_ir20();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir20+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir20: {
extern void op_load_FT0_fir20();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir20: {
extern void op_load_FT1_fir20();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir20: {
extern void op_load_FT2_fir20();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir20: {
extern void op_store_FT0_fir20();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir20: {
extern void op_store_FT1_fir20();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir20: {
extern void op_store_FT2_fir20();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir20+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir20: {
extern void op_cmov_fir20();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir20+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir21: {
extern void op_load_T0_ir21();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir21: {
extern void op_load_T1_ir21();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir21: {
extern void op_load_T2_ir21();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir21: {
extern void op_store_T0_ir21();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir21: {
extern void op_store_T1_ir21();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir21: {
extern void op_store_T2_ir21();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir21: {
extern void op_cmov_ir21();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir21+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir21: {
extern void op_load_FT0_fir21();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir21: {
extern void op_load_FT1_fir21();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir21: {
extern void op_load_FT2_fir21();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir21: {
extern void op_store_FT0_fir21();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir21: {
extern void op_store_FT1_fir21();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir21: {
extern void op_store_FT2_fir21();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir21+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir21: {
extern void op_cmov_fir21();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir21+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir22: {
extern void op_load_T0_ir22();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir22: {
extern void op_load_T1_ir22();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir22: {
extern void op_load_T2_ir22();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir22: {
extern void op_store_T0_ir22();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir22: {
extern void op_store_T1_ir22();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir22: {
extern void op_store_T2_ir22();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir22: {
extern void op_cmov_ir22();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir22+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir22: {
extern void op_load_FT0_fir22();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir22: {
extern void op_load_FT1_fir22();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir22: {
extern void op_load_FT2_fir22();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir22: {
extern void op_store_FT0_fir22();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir22: {
extern void op_store_FT1_fir22();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir22: {
extern void op_store_FT2_fir22();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir22+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir22: {
extern void op_cmov_fir22();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir22+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir23: {
extern void op_load_T0_ir23();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir23: {
extern void op_load_T1_ir23();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir23: {
extern void op_load_T2_ir23();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir23: {
extern void op_store_T0_ir23();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir23: {
extern void op_store_T1_ir23();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir23: {
extern void op_store_T2_ir23();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir23: {
extern void op_cmov_ir23();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir23+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir23: {
extern void op_load_FT0_fir23();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir23: {
extern void op_load_FT1_fir23();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir23: {
extern void op_load_FT2_fir23();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir23: {
extern void op_store_FT0_fir23();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir23: {
extern void op_store_FT1_fir23();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir23: {
extern void op_store_FT2_fir23();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir23+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir23: {
extern void op_cmov_fir23();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir23+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir24: {
extern void op_load_T0_ir24();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir24: {
extern void op_load_T1_ir24();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir24: {
extern void op_load_T2_ir24();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir24: {
extern void op_store_T0_ir24();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir24: {
extern void op_store_T1_ir24();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir24: {
extern void op_store_T2_ir24();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir24: {
extern void op_cmov_ir24();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir24+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir24: {
extern void op_load_FT0_fir24();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir24: {
extern void op_load_FT1_fir24();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir24: {
extern void op_load_FT2_fir24();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir24: {
extern void op_store_FT0_fir24();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir24: {
extern void op_store_FT1_fir24();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir24: {
extern void op_store_FT2_fir24();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir24+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir24: {
extern void op_cmov_fir24();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir24+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir25: {
extern void op_load_T0_ir25();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir25: {
extern void op_load_T1_ir25();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir25: {
extern void op_load_T2_ir25();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir25: {
extern void op_store_T0_ir25();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir25: {
extern void op_store_T1_ir25();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir25: {
extern void op_store_T2_ir25();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir25: {
extern void op_cmov_ir25();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir25+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir25: {
extern void op_load_FT0_fir25();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir25: {
extern void op_load_FT1_fir25();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir25: {
extern void op_load_FT2_fir25();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir25: {
extern void op_store_FT0_fir25();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir25: {
extern void op_store_FT1_fir25();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir25: {
extern void op_store_FT2_fir25();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir25+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir25: {
extern void op_cmov_fir25();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir25+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir26: {
extern void op_load_T0_ir26();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir26: {
extern void op_load_T1_ir26();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir26: {
extern void op_load_T2_ir26();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir26: {
extern void op_store_T0_ir26();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir26: {
extern void op_store_T1_ir26();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir26: {
extern void op_store_T2_ir26();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir26: {
extern void op_cmov_ir26();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir26+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir26: {
extern void op_load_FT0_fir26();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir26: {
extern void op_load_FT1_fir26();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir26: {
extern void op_load_FT2_fir26();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir26: {
extern void op_store_FT0_fir26();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir26: {
extern void op_store_FT1_fir26();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir26: {
extern void op_store_FT2_fir26();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir26+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir26: {
extern void op_cmov_fir26();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir26+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir27: {
extern void op_load_T0_ir27();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir27: {
extern void op_load_T1_ir27();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir27: {
extern void op_load_T2_ir27();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir27: {
extern void op_store_T0_ir27();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir27: {
extern void op_store_T1_ir27();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir27: {
extern void op_store_T2_ir27();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir27: {
extern void op_cmov_ir27();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir27+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir27: {
extern void op_load_FT0_fir27();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir27: {
extern void op_load_FT1_fir27();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir27: {
extern void op_load_FT2_fir27();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir27: {
extern void op_store_FT0_fir27();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir27: {
extern void op_store_FT1_fir27();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir27: {
extern void op_store_FT2_fir27();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir27+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir27: {
extern void op_cmov_fir27();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir27+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir28: {
extern void op_load_T0_ir28();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir28: {
extern void op_load_T1_ir28();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir28: {
extern void op_load_T2_ir28();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir28: {
extern void op_store_T0_ir28();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir28: {
extern void op_store_T1_ir28();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir28: {
extern void op_store_T2_ir28();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir28: {
extern void op_cmov_ir28();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir28+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir28: {
extern void op_load_FT0_fir28();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir28: {
extern void op_load_FT1_fir28();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir28: {
extern void op_load_FT2_fir28();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir28: {
extern void op_store_FT0_fir28();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir28: {
extern void op_store_FT1_fir28();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir28: {
extern void op_store_FT2_fir28();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir28+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir28: {
extern void op_cmov_fir28();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir28+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir29: {
extern void op_load_T0_ir29();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir29: {
extern void op_load_T1_ir29();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir29: {
extern void op_load_T2_ir29();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir29: {
extern void op_store_T0_ir29();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir29: {
extern void op_store_T1_ir29();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir29: {
extern void op_store_T2_ir29();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir29: {
extern void op_cmov_ir29();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir29+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir29: {
extern void op_load_FT0_fir29();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir29: {
extern void op_load_FT1_fir29();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir29: {
extern void op_load_FT2_fir29();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir29: {
extern void op_store_FT0_fir29();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir29: {
extern void op_store_FT1_fir29();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir29: {
extern void op_store_FT2_fir29();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir29+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir29: {
extern void op_cmov_fir29();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir29+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_load_T0_ir30: {
extern void op_load_T0_ir30();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T0_ir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T1_ir30: {
extern void op_load_T1_ir30();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T1_ir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_T2_ir30: {
extern void op_load_T2_ir30();
memcpy(gen_code_ptr, (void *)((char *)&op_load_T2_ir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T0_ir30: {
extern void op_store_T0_ir30();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T0_ir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T1_ir30: {
extern void op_store_T1_ir30();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T1_ir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_T2_ir30: {
extern void op_store_T2_ir30();
memcpy(gen_code_ptr, (void *)((char *)&op_store_T2_ir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_ir30: {
extern void op_cmov_ir30();
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_ir30+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_load_FT0_fir30: {
extern void op_load_FT0_fir30();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT0_fir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT1_fir30: {
extern void op_load_FT1_fir30();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT1_fir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_FT2_fir30: {
extern void op_load_FT2_fir30();
memcpy(gen_code_ptr, (void *)((char *)&op_load_FT2_fir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT0_fir30: {
extern void op_store_FT0_fir30();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT0_fir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT1_fir30: {
extern void op_store_FT1_fir30();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT1_fir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_FT2_fir30: {
extern void op_store_FT2_fir30();
memcpy(gen_code_ptr, (void *)((char *)&op_store_FT2_fir30+0), 12);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmov_fir30: {
extern void op_cmov_fir30();
extern char helper_cmov_fir;
memcpy(gen_code_ptr, (void *)((char *)&op_cmov_fir30+4), 16);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_cmov_fir) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 16;
}
break;
case INDEX_op_no_op: {
extern void op_no_op();
memcpy(gen_code_ptr, (void *)((char *)&op_no_op+0), 4);
gen_code_ptr += 4;
}
break;
case INDEX_op_tb_flush: {
extern void op_tb_flush();
extern char helper_tb_flush;
memcpy(gen_code_ptr, (void *)((char *)&op_tb_flush+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_tb_flush) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_ldbu_raw: {
extern void op_ldbu_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldbu_raw+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_stb_raw: {
extern void op_stb_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stb_raw+0), 16);
gen_code_ptr += 16;
}
break;
case INDEX_op_ldwu_raw: {
extern void op_ldwu_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldwu_raw+0), 36);
gen_code_ptr += 36;
}
break;
case INDEX_op_stw_raw: {
extern void op_stw_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stw_raw+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_ldl_raw: {
extern void op_ldl_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldl_raw+0), 60);
gen_code_ptr += 60;
}
break;
case INDEX_op_stl_raw: {
extern void op_stl_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stl_raw+0), 40);
gen_code_ptr += 40;
}
break;
case INDEX_op_ldq_raw: {
extern void op_ldq_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldq_raw+0), 116);
gen_code_ptr += 116;
}
break;
case INDEX_op_stq_raw: {
extern void op_stq_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stq_raw+0), 84);
gen_code_ptr += 84;
}
break;
case INDEX_op_ldq_u_raw: {
extern void op_ldq_u_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldq_u_raw+0), 116);
gen_code_ptr += 116;
}
break;
case INDEX_op_stq_u_raw: {
extern void op_stq_u_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stq_u_raw+0), 84);
gen_code_ptr += 84;
}
break;
case INDEX_op_ldl_l_raw: {
extern void op_ldl_l_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldl_l_raw+0), 64);
gen_code_ptr += 64;
}
break;
case INDEX_op_ldq_l_raw: {
extern void op_ldq_l_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldq_l_raw+0), 72);
gen_code_ptr += 72;
}
break;
case INDEX_op_stl_c_raw: {
extern void op_stl_c_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stl_c_raw+0), 120);
gen_code_ptr += 120;
}
break;
case INDEX_op_stq_c_raw: {
extern void op_stq_c_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stq_c_raw+4), 160);
gen_code_ptr += 160;
}
break;
case INDEX_op_ldt_raw: {
extern void op_ldt_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_ldt_raw+4), 112);
gen_code_ptr += 112;
}
break;
case INDEX_op_stt_raw: {
extern void op_stt_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_stt_raw+4), 96);
gen_code_ptr += 96;
}
break;
case INDEX_op_lds_raw: {
extern void op_lds_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_lds_raw+4), 64);
gen_code_ptr += 64;
}
break;
case INDEX_op_sts_raw: {
extern void op_sts_raw();
memcpy(gen_code_ptr, (void *)((char *)&op_sts_raw+4), 52);
gen_code_ptr += 52;
}
break;
case INDEX_op_ldf_raw: {
extern void op_ldf_raw();
extern char helper_ldff_raw;
memcpy(gen_code_ptr, (void *)((char *)&op_ldf_raw+4), 20);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_ldff_raw) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 20;
}
break;
case INDEX_op_stf_raw: {
extern void op_stf_raw();
extern char helper_stff_raw;
memcpy(gen_code_ptr, (void *)((char *)&op_stf_raw+4), 20);
*(uint32_t *)(gen_code_ptr + 8) = ((*(uint32_t *)(gen_code_ptr + 8)) & ~0x3fffffff) | (((((long)(&helper_stff_raw) + 0) - (long)(gen_code_ptr + 8))>>2) & 0x3fffffff);
gen_code_ptr += 20;
}
break;
case INDEX_op_ldg_raw: {
extern void op_ldg_raw();
extern char helper_ldfg_raw;
memcpy(gen_code_ptr, (void *)((char *)&op_ldg_raw+4), 20);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffffff) | (((((long)(&helper_ldfg_raw) + 0) - (long)(gen_code_ptr + 4))>>2) & 0x3fffffff);
gen_code_ptr += 20;
}
break;
case INDEX_op_stg_raw: {
extern void op_stg_raw();
extern char helper_stfg_raw;
memcpy(gen_code_ptr, (void *)((char *)&op_stg_raw+4), 20);
*(uint32_t *)(gen_code_ptr + 8) = ((*(uint32_t *)(gen_code_ptr + 8)) & ~0x3fffffff) | (((((long)(&helper_stfg_raw) + 0) - (long)(gen_code_ptr + 8))>>2) & 0x3fffffff);
gen_code_ptr += 20;
}
break;
case INDEX_op_n7: {
extern void op_n7();
memcpy(gen_code_ptr, (void *)((char *)&op_n7+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_excp: {
long param1, param2;
extern void op_excp();
extern char helper_excp;
memcpy(gen_code_ptr, (void *)((char *)&op_excp+4), 28);
param1 = *opparam_ptr++;
param2 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3fffff) | (((param2 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 8) = ((*(uint32_t *)(gen_code_ptr + 8)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
*(uint32_t *)(gen_code_ptr + 12) = ((*(uint32_t *)(gen_code_ptr + 12)) & ~0x3ff) | ((param2 + 0) & 0x3ff);
*(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16)) & ~0x3fffffff) | (((((long)(&helper_excp) + 0) - (long)(gen_code_ptr + 16))>>2) & 0x3fffffff);
gen_code_ptr += 28;
}
break;
case INDEX_op_load_amask: {
extern void op_load_amask();
extern char helper_amask;
memcpy(gen_code_ptr, (void *)((char *)&op_load_amask+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_amask) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_pcc: {
extern void op_load_pcc();
extern char helper_load_pcc;
memcpy(gen_code_ptr, (void *)((char *)&op_load_pcc+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_load_pcc) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_implver: {
extern void op_load_implver();
extern char helper_load_implver;
memcpy(gen_code_ptr, (void *)((char *)&op_load_implver+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_load_implver) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_fpcr: {
extern void op_load_fpcr();
extern char helper_load_fpcr;
memcpy(gen_code_ptr, (void *)((char *)&op_load_fpcr+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_load_fpcr) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_store_fpcr: {
extern void op_store_fpcr();
extern char helper_store_fpcr;
memcpy(gen_code_ptr, (void *)((char *)&op_store_fpcr+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_store_fpcr) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_load_irf: {
extern void op_load_irf();
extern char helper_load_irf;
memcpy(gen_code_ptr, (void *)((char *)&op_load_irf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_load_irf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_set_irf: {
extern void op_set_irf();
extern char helper_set_irf;
memcpy(gen_code_ptr, (void *)((char *)&op_set_irf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_set_irf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_clear_irf: {
extern void op_clear_irf();
extern char helper_clear_irf;
memcpy(gen_code_ptr, (void *)((char *)&op_clear_irf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_clear_irf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_exit_tb: {
extern void op_exit_tb();
memcpy(gen_code_ptr, (void *)((char *)&op_exit_tb+0), 8);
gen_code_ptr += 8;
}
break;
case INDEX_op_addq: {
extern void op_addq();
memcpy(gen_code_ptr, (void *)((char *)&op_addq+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_addqv: {
extern void op_addqv();
extern char helper_addqv;
memcpy(gen_code_ptr, (void *)((char *)&op_addqv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_addqv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_addl: {
extern void op_addl();
memcpy(gen_code_ptr, (void *)((char *)&op_addl+0), 28);
gen_code_ptr += 28;
}
break;
case INDEX_op_addlv: {
extern void op_addlv();
extern char helper_addlv;
memcpy(gen_code_ptr, (void *)((char *)&op_addlv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_addlv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_subq: {
extern void op_subq();
memcpy(gen_code_ptr, (void *)((char *)&op_subq+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_subqv: {
extern void op_subqv();
extern char helper_subqv;
memcpy(gen_code_ptr, (void *)((char *)&op_subqv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_subqv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_subl: {
extern void op_subl();
memcpy(gen_code_ptr, (void *)((char *)&op_subl+0), 28);
gen_code_ptr += 28;
}
break;
case INDEX_op_sublv: {
extern void op_sublv();
extern char helper_sublv;
memcpy(gen_code_ptr, (void *)((char *)&op_sublv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_sublv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_s4: {
extern void op_s4();
memcpy(gen_code_ptr, (void *)((char *)&op_s4+0), 28);
gen_code_ptr += 28;
}
break;
case INDEX_op_s8: {
extern void op_s8();
memcpy(gen_code_ptr, (void *)((char *)&op_s8+0), 28);
gen_code_ptr += 28;
}
break;
case INDEX_op_mull: {
extern void op_mull();
memcpy(gen_code_ptr, (void *)((char *)&op_mull+0), 28);
gen_code_ptr += 28;
}
break;
case INDEX_op_mullv: {
extern void op_mullv();
extern char helper_mullv;
memcpy(gen_code_ptr, (void *)((char *)&op_mullv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mullv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mulq: {
extern void op_mulq();
memcpy(gen_code_ptr, (void *)((char *)&op_mulq+0), 40);
gen_code_ptr += 40;
}
break;
case INDEX_op_mulqv: {
extern void op_mulqv();
extern char helper_mulqv;
memcpy(gen_code_ptr, (void *)((char *)&op_mulqv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mulqv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_umulh: {
extern void op_umulh();
extern char mulu64;
memcpy(gen_code_ptr, (void *)((char *)&op_umulh+4), 36);
*(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16)) & ~0x3fffffff) | (((((long)(&mulu64) + 0) - (long)(gen_code_ptr + 16))>>2) & 0x3fffffff);
gen_code_ptr += 36;
}
break;
case INDEX_op_and: {
extern void op_and();
memcpy(gen_code_ptr, (void *)((char *)&op_and+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_bic: {
extern void op_bic();
memcpy(gen_code_ptr, (void *)((char *)&op_bic+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_bis: {
extern void op_bis();
memcpy(gen_code_ptr, (void *)((char *)&op_bis+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_eqv: {
extern void op_eqv();
memcpy(gen_code_ptr, (void *)((char *)&op_eqv+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_ornot: {
extern void op_ornot();
memcpy(gen_code_ptr, (void *)((char *)&op_ornot+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_xor: {
extern void op_xor();
memcpy(gen_code_ptr, (void *)((char *)&op_xor+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_sll: {
extern void op_sll();
extern char __ashldi3;
memcpy(gen_code_ptr, (void *)((char *)&op_sll+4), 24);
*(uint32_t *)(gen_code_ptr + 8) = ((*(uint32_t *)(gen_code_ptr + 8)) & ~0x3fffffff) | (((((long)(&__ashldi3) + 0) - (long)(gen_code_ptr + 8))>>2) & 0x3fffffff);
gen_code_ptr += 24;
}
break;
case INDEX_op_srl: {
extern void op_srl();
extern char __lshrdi3;
memcpy(gen_code_ptr, (void *)((char *)&op_srl+4), 24);
*(uint32_t *)(gen_code_ptr + 8) = ((*(uint32_t *)(gen_code_ptr + 8)) & ~0x3fffffff) | (((((long)(&__lshrdi3) + 0) - (long)(gen_code_ptr + 8))>>2) & 0x3fffffff);
gen_code_ptr += 24;
}
break;
case INDEX_op_sra: {
extern void op_sra();
extern char __ashrdi3;
memcpy(gen_code_ptr, (void *)((char *)&op_sra+4), 24);
*(uint32_t *)(gen_code_ptr + 8) = ((*(uint32_t *)(gen_code_ptr + 8)) & ~0x3fffffff) | (((((long)(&__ashrdi3) + 0) - (long)(gen_code_ptr + 8))>>2) & 0x3fffffff);
gen_code_ptr += 24;
}
break;
case INDEX_op_sextb: {
extern void op_sextb();
memcpy(gen_code_ptr, (void *)((char *)&op_sextb+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_sextw: {
extern void op_sextw();
memcpy(gen_code_ptr, (void *)((char *)&op_sextw+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_ctpop: {
extern void op_ctpop();
extern char helper_ctpop;
memcpy(gen_code_ptr, (void *)((char *)&op_ctpop+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_ctpop) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_ctlz: {
extern void op_ctlz();
extern char helper_ctlz;
memcpy(gen_code_ptr, (void *)((char *)&op_ctlz+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_ctlz) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cttz: {
extern void op_cttz();
extern char helper_cttz;
memcpy(gen_code_ptr, (void *)((char *)&op_cttz+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cttz) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mskbl: {
extern void op_mskbl();
extern char helper_mskbl;
memcpy(gen_code_ptr, (void *)((char *)&op_mskbl+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mskbl) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_extbl: {
extern void op_extbl();
extern char helper_extbl;
memcpy(gen_code_ptr, (void *)((char *)&op_extbl+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_extbl) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_insbl: {
extern void op_insbl();
extern char helper_insbl;
memcpy(gen_code_ptr, (void *)((char *)&op_insbl+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_insbl) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mskwl: {
extern void op_mskwl();
extern char helper_mskwl;
memcpy(gen_code_ptr, (void *)((char *)&op_mskwl+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mskwl) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_extwl: {
extern void op_extwl();
extern char helper_extwl;
memcpy(gen_code_ptr, (void *)((char *)&op_extwl+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_extwl) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_inswl: {
extern void op_inswl();
extern char helper_inswl;
memcpy(gen_code_ptr, (void *)((char *)&op_inswl+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_inswl) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mskll: {
extern void op_mskll();
extern char helper_mskll;
memcpy(gen_code_ptr, (void *)((char *)&op_mskll+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mskll) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_extll: {
extern void op_extll();
extern char helper_extll;
memcpy(gen_code_ptr, (void *)((char *)&op_extll+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_extll) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_insll: {
extern void op_insll();
extern char helper_insll;
memcpy(gen_code_ptr, (void *)((char *)&op_insll+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_insll) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_zap: {
extern void op_zap();
extern char helper_zap;
memcpy(gen_code_ptr, (void *)((char *)&op_zap+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_zap) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_zapnot: {
extern void op_zapnot();
extern char helper_zapnot;
memcpy(gen_code_ptr, (void *)((char *)&op_zapnot+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_zapnot) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mskql: {
extern void op_mskql();
extern char helper_mskql;
memcpy(gen_code_ptr, (void *)((char *)&op_mskql+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mskql) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_extql: {
extern void op_extql();
extern char helper_extql;
memcpy(gen_code_ptr, (void *)((char *)&op_extql+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_extql) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_insql: {
extern void op_insql();
extern char helper_insql;
memcpy(gen_code_ptr, (void *)((char *)&op_insql+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_insql) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mskwh: {
extern void op_mskwh();
extern char helper_mskwh;
memcpy(gen_code_ptr, (void *)((char *)&op_mskwh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mskwh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_inswh: {
extern void op_inswh();
extern char helper_inswh;
memcpy(gen_code_ptr, (void *)((char *)&op_inswh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_inswh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_extwh: {
extern void op_extwh();
extern char helper_extwh;
memcpy(gen_code_ptr, (void *)((char *)&op_extwh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_extwh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_msklh: {
extern void op_msklh();
extern char helper_msklh;
memcpy(gen_code_ptr, (void *)((char *)&op_msklh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_msklh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_inslh: {
extern void op_inslh();
extern char helper_inslh;
memcpy(gen_code_ptr, (void *)((char *)&op_inslh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_inslh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_extlh: {
extern void op_extlh();
extern char helper_extlh;
memcpy(gen_code_ptr, (void *)((char *)&op_extlh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_extlh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mskqh: {
extern void op_mskqh();
extern char helper_mskqh;
memcpy(gen_code_ptr, (void *)((char *)&op_mskqh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mskqh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_insqh: {
extern void op_insqh();
extern char helper_insqh;
memcpy(gen_code_ptr, (void *)((char *)&op_insqh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_insqh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_extqh: {
extern void op_extqh();
extern char helper_extqh;
memcpy(gen_code_ptr, (void *)((char *)&op_extqh+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_extqh) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpult: {
extern void op_cmpult();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpult+0), 84);
gen_code_ptr += 84;
}
break;
case INDEX_op_cmpule: {
extern void op_cmpule();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpule+0), 84);
gen_code_ptr += 84;
}
break;
case INDEX_op_cmpeq: {
extern void op_cmpeq();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpeq+0), 72);
gen_code_ptr += 72;
}
break;
case INDEX_op_cmplt: {
extern void op_cmplt();
memcpy(gen_code_ptr, (void *)((char *)&op_cmplt+0), 84);
gen_code_ptr += 84;
}
break;
case INDEX_op_cmple: {
extern void op_cmple();
memcpy(gen_code_ptr, (void *)((char *)&op_cmple+0), 84);
gen_code_ptr += 84;
}
break;
case INDEX_op_cmpbge: {
extern void op_cmpbge();
extern char helper_cmpbge;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpbge+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpbge) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpeqz: {
extern void op_cmpeqz();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpeqz+0), 52);
gen_code_ptr += 52;
}
break;
case INDEX_op_cmpnez: {
extern void op_cmpnez();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpnez+0), 52);
gen_code_ptr += 52;
}
break;
case INDEX_op_cmpltz: {
extern void op_cmpltz();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpltz+0), 48);
gen_code_ptr += 48;
}
break;
case INDEX_op_cmplez: {
extern void op_cmplez();
memcpy(gen_code_ptr, (void *)((char *)&op_cmplez+0), 76);
gen_code_ptr += 76;
}
break;
case INDEX_op_cmpgtz: {
extern void op_cmpgtz();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpgtz+0), 76);
gen_code_ptr += 76;
}
break;
case INDEX_op_cmpgez: {
extern void op_cmpgez();
memcpy(gen_code_ptr, (void *)((char *)&op_cmpgez+0), 48);
gen_code_ptr += 48;
}
break;
case INDEX_op_cmplbs: {
extern void op_cmplbs();
memcpy(gen_code_ptr, (void *)((char *)&op_cmplbs+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_cmplbc: {
extern void op_cmplbc();
memcpy(gen_code_ptr, (void *)((char *)&op_cmplbc+0), 28);
gen_code_ptr += 28;
}
break;
case INDEX_op_branch: {
extern void op_branch();
memcpy(gen_code_ptr, (void *)((char *)&op_branch+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_addq1: {
extern void op_addq1();
memcpy(gen_code_ptr, (void *)((char *)&op_addq1+0), 24);
gen_code_ptr += 24;
}
break;
case INDEX_op_bcond: {
long param1, param2;
extern void op_bcond();
memcpy(gen_code_ptr, (void *)((char *)&op_bcond+4), 80);
param1 = *opparam_ptr++;
param2 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
*(uint32_t *)(gen_code_ptr + 8) = ((*(uint32_t *)(gen_code_ptr + 8)) & ~0x3fffff) | (((param2 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 12) = ((*(uint32_t *)(gen_code_ptr + 12)) & ~0x3ff) | ((param2 + 0) & 0x3ff);
gen_code_ptr += 80;
}
break;
case INDEX_op_update_pc: {
long param1, param2;
extern void op_update_pc();
memcpy(gen_code_ptr, (void *)((char *)&op_update_pc+0), 48);
param1 = *opparam_ptr++;
param2 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
*(uint32_t *)(gen_code_ptr + 12) = ((*(uint32_t *)(gen_code_ptr + 12)) & ~0x3fffff) | (((param2 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 16) = ((*(uint32_t *)(gen_code_ptr + 16)) & ~0x3ff) | ((param2 + 0) & 0x3ff);
gen_code_ptr += 48;
}
break;
case INDEX_op_update_pc32: {
long param1;
extern void op_update_pc32();
memcpy(gen_code_ptr, (void *)((char *)&op_update_pc32+0), 24);
param1 = *opparam_ptr++;
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffff) | (((param1 + 0) >> 10) & 0x3fffff);
*(uint32_t *)(gen_code_ptr + 4) = ((*(uint32_t *)(gen_code_ptr + 4)) & ~0x3ff) | ((param1 + 0) & 0x3ff);
gen_code_ptr += 24;
}
break;
case INDEX_op_adds: {
extern void op_adds();
memcpy(gen_code_ptr, (void *)((char *)&op_adds+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_subs: {
extern void op_subs();
memcpy(gen_code_ptr, (void *)((char *)&op_subs+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_muls: {
extern void op_muls();
memcpy(gen_code_ptr, (void *)((char *)&op_muls+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_divs: {
extern void op_divs();
memcpy(gen_code_ptr, (void *)((char *)&op_divs+0), 32);
gen_code_ptr += 32;
}
break;
case INDEX_op_sqrts: {
extern void op_sqrts();
extern char helper_sqrts;
memcpy(gen_code_ptr, (void *)((char *)&op_sqrts+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_sqrts) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cpys: {
extern void op_cpys();
extern char helper_cpys;
memcpy(gen_code_ptr, (void *)((char *)&op_cpys+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cpys) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cpysn: {
extern void op_cpysn();
extern char helper_cpysn;
memcpy(gen_code_ptr, (void *)((char *)&op_cpysn+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cpysn) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cpyse: {
extern void op_cpyse();
extern char helper_cpyse;
memcpy(gen_code_ptr, (void *)((char *)&op_cpyse+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cpyse) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_itofs: {
extern void op_itofs();
extern char helper_itofs;
memcpy(gen_code_ptr, (void *)((char *)&op_itofs+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_itofs) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_ftois: {
extern void op_ftois();
extern char helper_ftois;
memcpy(gen_code_ptr, (void *)((char *)&op_ftois+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_ftois) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_addt: {
extern void op_addt();
memcpy(gen_code_ptr, (void *)((char *)&op_addt+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_subt: {
extern void op_subt();
memcpy(gen_code_ptr, (void *)((char *)&op_subt+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_mult: {
extern void op_mult();
memcpy(gen_code_ptr, (void *)((char *)&op_mult+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_divt: {
extern void op_divt();
memcpy(gen_code_ptr, (void *)((char *)&op_divt+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_sqrtt: {
extern void op_sqrtt();
extern char helper_sqrtt;
memcpy(gen_code_ptr, (void *)((char *)&op_sqrtt+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_sqrtt) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmptun: {
extern void op_cmptun();
extern char helper_cmptun;
memcpy(gen_code_ptr, (void *)((char *)&op_cmptun+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmptun) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpteq: {
extern void op_cmpteq();
extern char helper_cmpteq;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpteq+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpteq) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmptle: {
extern void op_cmptle();
extern char helper_cmptle;
memcpy(gen_code_ptr, (void *)((char *)&op_cmptle+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmptle) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmptlt: {
extern void op_cmptlt();
extern char helper_cmptlt;
memcpy(gen_code_ptr, (void *)((char *)&op_cmptlt+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmptlt) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_itoft: {
extern void op_itoft();
extern char helper_itoft;
memcpy(gen_code_ptr, (void *)((char *)&op_itoft+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_itoft) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_ftoit: {
extern void op_ftoit();
extern char helper_ftoit;
memcpy(gen_code_ptr, (void *)((char *)&op_ftoit+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_ftoit) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_addf: {
extern void op_addf();
extern char helper_addf;
memcpy(gen_code_ptr, (void *)((char *)&op_addf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_addf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_subf: {
extern void op_subf();
extern char helper_subf;
memcpy(gen_code_ptr, (void *)((char *)&op_subf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_subf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mulf: {
extern void op_mulf();
extern char helper_mulf;
memcpy(gen_code_ptr, (void *)((char *)&op_mulf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mulf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_divf: {
extern void op_divf();
extern char helper_divf;
memcpy(gen_code_ptr, (void *)((char *)&op_divf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_divf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_sqrtf: {
extern void op_sqrtf();
extern char helper_sqrtf;
memcpy(gen_code_ptr, (void *)((char *)&op_sqrtf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_sqrtf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpfeq: {
extern void op_cmpfeq();
extern char helper_cmpfeq;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpfeq+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpfeq) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpfne: {
extern void op_cmpfne();
extern char helper_cmpfne;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpfne+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpfne) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpflt: {
extern void op_cmpflt();
extern char helper_cmpflt;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpflt+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpflt) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpfle: {
extern void op_cmpfle();
extern char helper_cmpfle;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpfle+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpfle) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpfgt: {
extern void op_cmpfgt();
extern char helper_cmpfgt;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpfgt+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpfgt) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpfge: {
extern void op_cmpfge();
extern char helper_cmpfge;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpfge+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpfge) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_itoff: {
extern void op_itoff();
extern char helper_itoff;
memcpy(gen_code_ptr, (void *)((char *)&op_itoff+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_itoff) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_addg: {
extern void op_addg();
extern char helper_addg;
memcpy(gen_code_ptr, (void *)((char *)&op_addg+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_addg) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_subg: {
extern void op_subg();
extern char helper_subg;
memcpy(gen_code_ptr, (void *)((char *)&op_subg+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_subg) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_mulg: {
extern void op_mulg();
extern char helper_mulg;
memcpy(gen_code_ptr, (void *)((char *)&op_mulg+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_mulg) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_divg: {
extern void op_divg();
extern char helper_divg;
memcpy(gen_code_ptr, (void *)((char *)&op_divg+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_divg) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_sqrtg: {
extern void op_sqrtg();
extern char helper_sqrtg;
memcpy(gen_code_ptr, (void *)((char *)&op_sqrtg+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_sqrtg) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpgeq: {
extern void op_cmpgeq();
extern char helper_cmpgeq;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpgeq+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpgeq) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpglt: {
extern void op_cmpglt();
extern char helper_cmpglt;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpglt+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpglt) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cmpgle: {
extern void op_cmpgle();
extern char helper_cmpgle;
memcpy(gen_code_ptr, (void *)((char *)&op_cmpgle+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cmpgle) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtst: {
extern void op_cvtst();
memcpy(gen_code_ptr, (void *)((char *)&op_cvtst+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_cvtqs: {
extern void op_cvtqs();
extern char helper_cvtqs;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtqs+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtqs) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtts: {
extern void op_cvtts();
memcpy(gen_code_ptr, (void *)((char *)&op_cvtts+0), 20);
gen_code_ptr += 20;
}
break;
case INDEX_op_cvttq: {
extern void op_cvttq();
extern char helper_cvttq;
memcpy(gen_code_ptr, (void *)((char *)&op_cvttq+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvttq) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtqt: {
extern void op_cvtqt();
extern char helper_cvtqt;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtqt+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtqt) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtqf: {
extern void op_cvtqf();
extern char helper_cvtqf;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtqf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtqf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtgf: {
extern void op_cvtgf();
extern char helper_cvtgf;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtgf+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtgf) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtgd: {
extern void op_cvtgd();
extern char helper_cvtgd;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtgd+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtgd) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtgq: {
extern void op_cvtgq();
extern char helper_cvtgq;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtgq+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtgq) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtqg: {
extern void op_cvtqg();
extern char helper_cvtqg;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtqg+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtqg) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtdg: {
extern void op_cvtdg();
extern char helper_cvtdg;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtdg+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtdg) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtlq: {
extern void op_cvtlq();
extern char helper_cvtlq;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtlq+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtlq) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtql: {
extern void op_cvtql();
extern char helper_cvtql;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtql+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtql) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtqlv: {
extern void op_cvtqlv();
extern char helper_cvtqlv;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtqlv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtqlv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_cvtqlsv: {
extern void op_cvtqlsv();
extern char helper_cvtqlsv;
memcpy(gen_code_ptr, (void *)((char *)&op_cvtqlsv+4), 12);
*(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t *)(gen_code_ptr + 0)) & ~0x3fffffff) | (((((long)(&helper_cvtqlsv) + 0) - (long)(gen_code_ptr + 0))>>2) & 0x3fffffff);
gen_code_ptr += 12;
}
break;
case INDEX_op_nop:
break;
case INDEX_op_nop1:
opparam_ptr++;
break;
case INDEX_op_nop2:
opparam_ptr += 2;
break;
case INDEX_op_nop3:
opparam_ptr += 3;
break;
default:
goto the_end;
}
}
the_end:
flush_icache_range((unsigned long)gen_code_buf, (unsigned long)gen_code_ptr);
return gen_code_ptr - gen_code_buf;
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] now ppc build failure: dyngen: empty code for op_splatw_T1_64
2007-11-14 7:04 [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol Shaddy Baddah
@ 2007-11-14 8:10 ` Shaddy Baddah
2007-11-14 13:13 ` [Qemu-devel] and now bus error for i386 guest Shaddy Baddah
2007-11-15 20:01 ` [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol Blue Swirl
1 sibling, 1 reply; 14+ messages in thread
From: Shaddy Baddah @ 2007-11-14 8:10 UTC (permalink / raw)
To: qemu-devel
Hi again,
Disabling the failed alpha build (from my previous email) via
--target-list, I now find that the ppc build fails on sun4u (sun4m
userland).
A snip of the error is inlined below:
...
/home/shaddy/qemu-cvs/qemu/target-ppc/op.c:2924: warning: right shift
count >= width of type
../dyngen -o op.h op.o
dyngen: empty code for op_splatw_T1_64
make[1]: *** [op.h] Error 1
make[1]: Leaving directory `/home/shaddy/qemu-cvs/qemu/ppc-linux-user'
make: *** [subdir-ppc-linux-user] Error 2
TIA,
Shaddy
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-11-14 8:10 ` [Qemu-devel] now ppc build failure: dyngen: empty code for op_splatw_T1_64 Shaddy Baddah
@ 2007-11-14 13:13 ` Shaddy Baddah
2007-11-14 20:42 ` Blue Swirl
0 siblings, 1 reply; 14+ messages in thread
From: Shaddy Baddah @ 2007-11-14 13:13 UTC (permalink / raw)
To: qemu-devel
Hi again,
After further culling the target list, I was able to install qemu on my
sun4u host.
However, running it, I get a bus error. See below for details:
$ /opt/qemu-cvs/bin/qemu -m 128 -cdrom
~/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -vnc :1
Bus error
I would really like to be able to get qemu running on this sun4u, so
help would be appreciated.
Thanks in advance,
Shaddy
PS: I am running Debian Lenny/Testing for SPARC. At the moment, I am not
running swap. However, I have 1Gb of memory, so at this stage, I want to
run small memory configs that should fit in the 1Gb.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-11-14 13:13 ` [Qemu-devel] and now bus error for i386 guest Shaddy Baddah
@ 2007-11-14 20:42 ` Blue Swirl
2007-12-04 4:21 ` Shaddy Baddah
2007-12-04 13:23 ` Shaddy Baddah
0 siblings, 2 replies; 14+ messages in thread
From: Blue Swirl @ 2007-11-14 20:42 UTC (permalink / raw)
To: qemu-devel
On 11/14/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
> Hi again,
>
> After further culling the target list, I was able to install qemu on my
> sun4u host.
>
> However, running it, I get a bus error. See below for details:
>
> $ /opt/qemu-cvs/bin/qemu -m 128 -cdrom
> ~/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -vnc :1
> Bus error
For some reason, Sparc Linux host is not working. I think Sparc Solaris is OK.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol
2007-11-14 7:04 [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol Shaddy Baddah
2007-11-14 8:10 ` [Qemu-devel] now ppc build failure: dyngen: empty code for op_splatw_T1_64 Shaddy Baddah
@ 2007-11-15 20:01 ` Blue Swirl
2007-11-15 22:50 ` Paul Brook
1 sibling, 1 reply; 14+ messages in thread
From: Blue Swirl @ 2007-11-15 20:01 UTC (permalink / raw)
To: qemu-devel
On 11/14/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
> Hi,
>
> I am building qemu from CVS, on a sun4u machine. I have used the
> following configure command to ensure a sun4m userland build:
>
> ../qemu/configure --prefix=/opt/qemu-cvs --sparc_cpu=v8
>
> I get the following message confirming the use of GCC 3:
>
> Looking for gcc 3.x
> Found "gcc-3.4"
>
> Eventually, I get the error I have included at the base of this email. I
> have attached the op.h generated. As you will be able to see from the
> line below, a nameless symbol is being referenced (after the &):
>
> op.h:24: *(uint32_t *)(gen_code_ptr + 0) = ((*(uint32_t
> *)(gen_code_ptr + 0)) & ~0x3fffff) | ((((long)(&) + 0) >> 10) & 0x3fffff);
>
> ^
> I've followed the dyngen code as best as I can, and AFAICT that code is
> right. The symbol referenced is nameless in the ELF symbol table.
The problem is in op_reset_FT0. Source is like this:
void OPPROTO glue(op_reset_FT, REG) (void)
{
glue(FT, REG) = 0;
RETURN();
}
The code generated for op_reset_FT0 is like this:
.section .rodata.cst8,"aM",@progbits,8
.align 8
.LLC0:
.long 0
.long 0
.section ".text"
.align 4
.global op_reset_FT0
.type op_reset_FT0, #function
.proc 020
op_reset_FT0:
.LLFB152:
.loc 1 30 0
!#PROLOGUE# 0
!#PROLOGUE# 1
.loc 1 31 0
sethi %hi(.LLC0), %g1
ldd [%g1+%lo(.LLC0)], %f8
std %f8, [%g6+1176]
.loc 1 32 0
nop
retl
nop
.LLFE152:
.size op_reset_FT0, .-op_reset_FT0
So gcc puts the zero constant to .rodata.cst8 and generates code to
load the zero value from this location. This method is not supported
by dyngen for Sparc, but ARM uses similar method for all (?)
constants.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol
2007-11-15 20:01 ` [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol Blue Swirl
@ 2007-11-15 22:50 ` Paul Brook
0 siblings, 0 replies; 14+ messages in thread
From: Paul Brook @ 2007-11-15 22:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl
> So gcc puts the zero constant to .rodata.cst8 and generates code to
> load the zero value from this location. This method is not supported
> by dyngen for Sparc, but ARM uses similar method for all (?)
> constants.
Not quite. ARM puts constant pools inline with the code, not in rodata. This
is a fairly fundamental property of the arm architecture. Unlike most other
risc architectures arm does not really have any other mechanism for loading
addresses/large values. Dyngen has a nontrivial amount of special code to
handle this.
Paul
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-11-14 20:42 ` Blue Swirl
@ 2007-12-04 4:21 ` Shaddy Baddah
2007-12-04 13:23 ` Shaddy Baddah
1 sibling, 0 replies; 14+ messages in thread
From: Shaddy Baddah @ 2007-12-04 4:21 UTC (permalink / raw)
To: qemu-devel
HI,
Blue Swirl wrote:
> On 11/14/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
>> Hi again,
>>
>> After further culling the target list, I was able to install qemu on my
>> sun4u host.
>>
>> However, running it, I get a bus error. See below for details:
>>
>> $ /opt/qemu-cvs/bin/qemu -m 128 -cdrom
>> ~/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -vnc :1
>> Bus error
>
> For some reason, Sparc Linux host is not working. I think Sparc Solaris is OK.
Yes, I do recall that I was able to get this working on Sparc Solaris.
Anyway, when I get more time, I will have a better stab at debugging
this. I got a start on this today, and here is a bit of cut and paste
that may or may not be insightful. The address for env1 looks questionable:
shaddy@localhost:~/qemu-cvs/qemu-build$ gdb --args ./i386-softmmu/qemu
-hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /home/shaddy/qemu-cvs/qemu-build/i386-softmmu/qemu
-hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
[Thread debugging using libthread_db enabled]
[New Thread 0xf7f7b550 (LWP 9363)]
Program received signal SIGBUS, Bus error.
[Switching to Thread 0xf7f7b550 (LWP 9363)]
cpu_x86_exec (env1=0x2) at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
307 if (env->exception_index >= 0) {
(gdb) info threads
* 1 Thread 0xf7f7b550 (LWP 9363) cpu_x86_exec (env1=0x2)
at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
(gdb)
HTH,
Shaddy
PS: couldn't this also be debugged from within qemu VM running Debian
Sparc, for those that don't have access to a real machine? I got a start
on this today as well (because I don't always have access to the Sun
Ultra box). Seems stable, and I was able to get a start on a compile,
that is currently still going.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-11-14 20:42 ` Blue Swirl
2007-12-04 4:21 ` Shaddy Baddah
@ 2007-12-04 13:23 ` Shaddy Baddah
2007-12-04 18:54 ` Blue Swirl
1 sibling, 1 reply; 14+ messages in thread
From: Shaddy Baddah @ 2007-12-04 13:23 UTC (permalink / raw)
To: qemu-devel
HI,
Blue Swirl wrote:
> On 11/14/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
>> Hi again,
>>
>> After further culling the target list, I was able to install qemu on my
>> sun4u host.
>>
>> However, running it, I get a bus error. See below for details:
>>
>> $ /opt/qemu-cvs/bin/qemu -m 128 -cdrom
>> ~/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -vnc :1
>> Bus error
>
> For some reason, Sparc Linux host is not working. I think Sparc Solaris is OK.
Yes, I do recall that I was able to get this working on Sparc Solaris.
Anyway, when I get more time, I will have a better stab at debugging
this. I got a start on this today, and here is a bit of cut and paste
that may or may not be insightful. The address for env1 looks questionable:
shaddy@localhost:~/qemu-cvs/qemu-build$ gdb --args ./i386-softmmu/qemu
-hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /home/shaddy/qemu-cvs/qemu-build/i386-softmmu/qemu
-hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
[Thread debugging using libthread_db enabled]
[New Thread 0xf7f7b550 (LWP 9363)]
Program received signal SIGBUS, Bus error.
[Switching to Thread 0xf7f7b550 (LWP 9363)]
cpu_x86_exec (env1=0x2) at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
307 if (env->exception_index >= 0) {
(gdb) info threads
* 1 Thread 0xf7f7b550 (LWP 9363) cpu_x86_exec (env1=0x2)
at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
(gdb)
HTH,
Shaddy
PS: couldn't this also be debugged from within qemu VM running Debian
Sparc, for those that don't have access to a real machine? I got a start
on this today as well (because I don't always have access to the Sun
Ultra box). Seems stable, and I was able to get a start on a compile,
that is currently still going.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-12-04 13:23 ` Shaddy Baddah
@ 2007-12-04 18:54 ` Blue Swirl
2007-12-05 14:33 ` Shaddy Baddah
0 siblings, 1 reply; 14+ messages in thread
From: Blue Swirl @ 2007-12-04 18:54 UTC (permalink / raw)
To: qemu-devel
On 12/4/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
> HI,
>
> Blue Swirl wrote:
> > On 11/14/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
> >> Hi again,
> >>
> >> After further culling the target list, I was able to install qemu on my
> >> sun4u host.
> >>
> >> However, running it, I get a bus error. See below for details:
> >>
> >> $ /opt/qemu-cvs/bin/qemu -m 128 -cdrom
> >> ~/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -vnc :1
> >> Bus error
> >
> > For some reason, Sparc Linux host is not working. I think Sparc Solaris is OK.
>
> Yes, I do recall that I was able to get this working on Sparc Solaris.
> Anyway, when I get more time, I will have a better stab at debugging
> this. I got a start on this today, and here is a bit of cut and paste
> that may or may not be insightful. The address for env1 looks questionable:
>
> shaddy@localhost:~/qemu-cvs/qemu-build$ gdb --args ./i386-softmmu/qemu
> -hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
> GNU gdb 6.6.90.20070912-debian
> Copyright (C) 2007 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "sparc-linux-gnu"...
> Using host libthread_db library "/lib/libthread_db.so.1".
> (gdb) run
> Starting program: /home/shaddy/qemu-cvs/qemu-build/i386-softmmu/qemu
> -hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
> [Thread debugging using libthread_db enabled]
> [New Thread 0xf7f7b550 (LWP 9363)]
>
> Program received signal SIGBUS, Bus error.
> [Switching to Thread 0xf7f7b550 (LWP 9363)]
> cpu_x86_exec (env1=0x2) at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
> 307 if (env->exception_index >= 0) {
> (gdb) info threads
> * 1 Thread 0xf7f7b550 (LWP 9363) cpu_x86_exec (env1=0x2)
> at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
> (gdb)
My guess is that Linux glibc overwrites global registers at some
point, like in signal handling or setjmp. The generated code looks OK
and it shouldn't be different from what Solaris version would
generate. I've been thinking of different register design (using
locals or outs) but then the op helpers would need to use different
mechanism to access T0/T1/T2. Compiling Qemu against uClibc could also
show something.
> PS: couldn't this also be debugged from within qemu VM running Debian
> Sparc, for those that don't have access to a real machine? I got a start
> on this today as well (because I don't always have access to the Sun
> Ultra box). Seems stable, and I was able to get a start on a compile,
> that is currently still going.
Nice idea! Do you mean full system emulator or user mode?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-12-04 18:54 ` Blue Swirl
@ 2007-12-05 14:33 ` Shaddy Baddah
2007-12-05 21:36 ` Blue Swirl
0 siblings, 1 reply; 14+ messages in thread
From: Shaddy Baddah @ 2007-12-05 14:33 UTC (permalink / raw)
To: qemu-devel
Hi,
Blue Swirl wrote:
> On 12/4/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
>> HI,
>>
>> Blue Swirl wrote:
>>> On 11/14/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
>>>> Hi again,
>>>>
>>>> After further culling the target list, I was able to install qemu on my
>>>> sun4u host.
>>>>
>>>> However, running it, I get a bus error. See below for details:
>>>>
>>>> $ /opt/qemu-cvs/bin/qemu -m 128 -cdrom
>>>> ~/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -vnc :1
>>>> Bus error
>>> For some reason, Sparc Linux host is not working. I think Sparc Solaris is OK.
>> Yes, I do recall that I was able to get this working on Sparc Solaris.
>> Anyway, when I get more time, I will have a better stab at debugging
>> this. I got a start on this today, and here is a bit of cut and paste
>> that may or may not be insightful. The address for env1 looks questionable:
>>
>> shaddy@localhost:~/qemu-cvs/qemu-build$ gdb --args ./i386-softmmu/qemu
>> -hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
>> GNU gdb 6.6.90.20070912-debian
>> Copyright (C) 2007 Free Software Foundation, Inc.
>> License GPLv3+: GNU GPL version 3 or later
>> <http://gnu.org/licenses/gpl.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
>> and "show warranty" for details.
>> This GDB was configured as "sparc-linux-gnu"...
>> Using host libthread_db library "/lib/libthread_db.so.1".
>> (gdb) run
>> Starting program: /home/shaddy/qemu-cvs/qemu-build/i386-softmmu/qemu
>> -hda ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
>> [Thread debugging using libthread_db enabled]
>> [New Thread 0xf7f7b550 (LWP 9363)]
>>
>> Program received signal SIGBUS, Bus error.
>> [Switching to Thread 0xf7f7b550 (LWP 9363)]
>> cpu_x86_exec (env1=0x2) at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
>> 307 if (env->exception_index >= 0) {
>> (gdb) info threads
>> * 1 Thread 0xf7f7b550 (LWP 9363) cpu_x86_exec (env1=0x2)
>> at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:307
>> (gdb)
>
> My guess is that Linux glibc overwrites global registers at some
> point, like in signal handling or setjmp. The generated code looks OK
> and it shouldn't be different from what Solaris version would
> generate. I've been thinking of different register design (using
> locals or outs) but then the op helpers would need to use different
> mechanism to access T0/T1/T2. Compiling Qemu against uClibc could also
> show something.
As I will detail later, this problem looks to me to be at least
partially caused by a bug in the compiler optimizer.
>> PS: couldn't this also be debugged from within qemu VM running Debian
>> Sparc, for those that don't have access to a real machine? I got a start
>> on this today as well (because I don't always have access to the Sun
>> Ultra box). Seems stable, and I was able to get a start on a compile,
>> that is currently still going.
>
> Nice idea! Do you mean full system emulator or user mode?
I meant full system emulator mode. I was able to successfully compile
inside the guest Sparc(32) Debian Lenny system. However, I couldn't
really run qemu successfully inside the guest system. I was getting a
hang, and I traced that down to a call to glibc's timer_create function,
in the dynticks_start_timer function:
printf("timer_create1\n");
if (timer_create(CLOCK_REALTIME, &ev, &host_timer)) {
printf("timer_create\n");
perror("timer_create");
/* disable dynticks */
fprintf(stderr, "Dynamic Ticks disabled\n");
return -1;
}
printf("timer_create2\n");
the bt shows three threads, and two of which are stuck in some type of
pthread suspend functions, and on stuck in a poll function. I don't know
much about the clocks, so I just randomly tried to select clocks via
-clock option. I tried -clock unix, and got a similar bus error. But all
this precludes what I am about to write with regards to my discoveries
on the compiler optimizer.
Back on the real Sun Ultra box, I did a bit of debug. I found the
following bit of failed code, as described in a capture of my gdb session:
$ gdb --args ./i386-softmmu/qemu -cdrom
../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) break vl.c:7362
Breakpoint 1 at 0x1e958: file /home/shaddy/qemu-cvs/qemu/vl.c, line 7362.
(gdb) display /i $pc
(gdb) run
Starting program: /home/shaddy/qemu-cvs/qemu-build/i386-softmmu/qemu
-cdrom ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
[Thread debugging using libthread_db enabled]
[New Thread 0xf7f77550 (LWP 13579)]
[Switching to Thread 0xf7f77550 (LWP 13579)]
Breakpoint 1, main (argc=1430528, argv=0x15d400) at
/home/shaddy/qemu-cvs/qemu/vl.c:7362
7362 env = next_cpu;
1: x/i $pc
0x1e958 <main+13992>: ld [ %l6 + 0x8c ], %l1
(gdb) print /x next_cpu
$1 = 0x1cd1388
(gdb) print /x env
$2 = 0x322e3100
(gdb) stepi
7366 ret = cpu_exec(env);
1: x/i $pc
0x1e95c <main+13996>: call 0xa90b4 <cpu_x86_exec>
0x1e960 <main+14000>: mov %l1, %o0
(gdb) print /x env
$3 = 0x322e3100
(gdb)
as you can see, the assignment is not being effected correctly. So I
tried again, removing optimization by removing -O2 from the CFLAGS, and
again debugging:
$ gdb --args ./i386-softmmu/qemu -cdrom
../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) break vl.c:7362
Breakpoint 1 at 0x240a4: file /home/shaddy/qemu-cvs/qemu/vl.c, line 7362.
(gdb) display /i $pc
(gdb) run
Starting program: /home/shaddy/qemu-cvs/qemu-build/i386-softmmu/qemu
-cdrom ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
[Thread debugging using libthread_db enabled]
[New Thread 0xf7f2f550 (LWP 14336)]
[Switching to Thread 0xf7f2f550 (LWP 14336)]
Breakpoint 1, main_loop () at /home/shaddy/qemu-cvs/qemu/vl.c:7362
7362 env = next_cpu;
1: x/i $pc
0x240a4 <main_loop+152>: sethi %hi(0x258800), %g4
(gdb) print /x next_cpu
$1 = 0x1dcd460
(gdb) print /x env
$2 = 0x258888
(gdb) stepi
0x000240a8 7362 env = next_cpu;
1: x/i $pc
0x240a8 <main_loop+156>: or %g4, 0x4c, %g4 ! 0x25884c
<next_cpu>
(gdb)
0x000240ac 7362 env = next_cpu;
1: x/i $pc
0x240ac <main_loop+160>: ld [ %g4 ], %g4
(gdb)
0x000240b0 7362 env = next_cpu;
1: x/i $pc
0x240b0 <main_loop+164>: st %g4, [ %fp + -20 ]
(gdb)
7366 ret = cpu_exec(env);
1: x/i $pc
0x240b4 <main_loop+168>: ld [ %fp + -20 ], %o0
(gdb) print /x env
$3 = 0x1dcd460
(gdb) stepi
0x000240b8 7366 ret = cpu_exec(env);
1: x/i $pc
0x240b8 <main_loop+172>: call 0x14fa64 <cpu_x86_exec>
0x240bc <main_loop+176>: nop
(gdb) stepi
0x000240bc 7366 ret = cpu_exec(env);
1: x/i $pc
0x240bc <main_loop+176>: nop
(gdb) stepi
cpu_x86_exec (env1=0x1de6530) at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:244
244 {
1: x/i $pc
0x14fa64 <cpu_x86_exec>: add %sp, -264, %sp
(gdb)
Now you can see that the assignment is occurring successfully. But for
reasons that I cannot understand, but suspect to be a compiler bug, the
transference of the value of env as a parameter to cpu_exec is not
occurring correctly. My limited knowledge leads me to believe that the
value for env is being stored at the wrong location in the stack. Am I
right?
I don't know if it has any significance in this, but during the build, I
did see the following suspicious warnings:
In file included from /home/shaddy/qemu-cvs/qemu/target-i386/op.c:22:
/home/shaddy/qemu-cvs/qemu/target-i386/exec.h:46: warning:
call-clobbered register used for global register variable
/home/shaddy/qemu-cvs/qemu/target-i386/exec.h:47: warning:
call-clobbered register used for global register variable
/home/shaddy/qemu-cvs/qemu/target-i386/exec.h:48: warning:
call-clobbered register used for global register variable
Summing up, am I being curtailed by a GCC 3.4 bug, under sparc?
HTH,
Shaddy
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-12-05 14:33 ` Shaddy Baddah
@ 2007-12-05 21:36 ` Blue Swirl
2007-12-06 0:17 ` Shaddy Baddah
0 siblings, 1 reply; 14+ messages in thread
From: Blue Swirl @ 2007-12-05 21:36 UTC (permalink / raw)
To: qemu-devel
On 12/5/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
> 0x1e958 <main+13992>: ld [ %l6 + 0x8c ], %l1
> 0x1e95c <main+13996>: call 0xa90b4 <cpu_x86_exec>
> 0x1e960 <main+14000>: mov %l1, %o0
Maybe you missed the effect of the delay slot. The first argument is
prepared in %l1 and moved to %o0 in the delay slot of the call
instruction.
> 0x240a4 <main_loop+152>: sethi %hi(0x258800), %g4
> 0x240a8 <main_loop+156>: or %g4, 0x4c, %g4 ! 0x25884c
> 0x240ac <main_loop+160>: ld [ %g4 ], %g4
> 0x240b0 <main_loop+164>: st %g4, [ %fp + -20 ]
> 0x240b4 <main_loop+168>: ld [ %fp + -20 ], %o0
> 0x240b8 <main_loop+172>: call 0x14fa64 <cpu_x86_exec>
> 0x240bc <main_loop+176>: nop
This looks like equivalent code, only dumber version using an
intermediate store and not using the delay slot.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-12-05 21:36 ` Blue Swirl
@ 2007-12-06 0:17 ` Shaddy Baddah
2007-12-06 9:10 ` Blue Swirl
0 siblings, 1 reply; 14+ messages in thread
From: Shaddy Baddah @ 2007-12-06 0:17 UTC (permalink / raw)
To: qemu-devel
Hi,
Blue Swirl wrote:
> On 12/5/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
>> 0x1e958 <main+13992>: ld [ %l6 + 0x8c ], %l1
>> 0x1e95c <main+13996>: call 0xa90b4 <cpu_x86_exec>
>> 0x1e960 <main+14000>: mov %l1, %o0
>
> Maybe you missed the effect of the delay slot. The first argument is
> prepared in %l1 and moved to %o0 in the delay slot of the call
> instruction.
You'll have to forgive me... although I know about the delay slot, I
only slightly dabble in assembly, so I am not so confident at reading
it. Reading this to mean that perhaps the assignment would be effected
after execution of a further instruction, I've redone the debugging, and
include it below:
$ gdb --args ./i386-softmmu/qemu -cdrom
../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb)
(gdb) break vl.c:7362
Breakpoint 1 at 0x1e958: file /home/shaddy/qemu-cvs/qemu/vl.c, line 7362.
(gdb) display /i $pc
(gdb) run
Starting program: /home/shaddy/qemu-cvs/qemu-optbuild/i386-softmmu/qemu
-cdrom ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
[Thread debugging using libthread_db enabled]
[New Thread 0xf7f27550 (LWP 15523)]
[Switching to Thread 0xf7f27550 (LWP 15523)]
Breakpoint 1, main (argc=1430528, argv=0x15d400) at
/home/shaddy/qemu-cvs/qemu/vl.c:7362
7362 env = next_cpu;
1: x/i $pc
0x1e958 <main+13992>: ld [ %l6 + 0x8c ], %l1
(gdb) print /x env
$1 = 0x322e3100
(gdb) print /x next_cpu
$2 = 0x1cd13e8
(gdb) stepi
7366 ret = cpu_exec(env);
1: x/i $pc
0x1e95c <main+13996>: call 0xa90b4 <cpu_x86_exec>
0x1e960 <main+14000>: mov %l1, %o0
(gdb)
0x0001e960 7366 ret = cpu_exec(env);
1: x/i $pc
0x1e960 <main+14000>: mov %l1, %o0
(gdb) print /x next_cpu
$3 = 0x1cd13e8
(gdb) print /x env
$4 = 0x322e3100
(gdb) print /x &env
Address requested for identifier "env" which is in register $g6
(gdb) print $g6
$5 = 841888000
(gdb) print /x $g6
$6 = 0x322e3100
(gdb) stepi
cpu_x86_exec (env1=0x117000) at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:244
244 {
1: x/i $pc
0xa90b4 <cpu_x86_exec>: add %sp, -232, %sp
(gdb) print /x $g6
$7 = 0x322e3100
(gdb) stepi
0x000a90b8 in cpu_x86_exec (env1=0x117000) at
/home/shaddy/qemu-cvs/qemu/cpu-exec.c:244
244 {
1: x/i $pc
0xa90b8 <cpu_x86_exec+4>: st %i7, [ %sp + 0x60 ]
(gdb) print /x $g6
$8 = 0x322e3100
(gdb) stepi
0x000a90bc 244 {
1: x/i $pc
0xa90bc <cpu_x86_exec+8>: sub %sp, -232, %i7
(gdb) print /x $g6
$9 = 0x322e3100
(gdb)
I still read that as failing to assign the value. Given my limited
knowledge, how is gdb so adamantly stating that env1=0x117000 when the
value of env1 (i.e. env in the calling function) is only known after the
delay slot instruction is completed? That's more a rhetorical
question... I've got to do a bit of research to be able to know these
things myself.
>> 0x240a4 <main_loop+152>: sethi %hi(0x258800), %g4
>> 0x240a8 <main_loop+156>: or %g4, 0x4c, %g4 ! 0x25884c
>> 0x240ac <main_loop+160>: ld [ %g4 ], %g4
>> 0x240b0 <main_loop+164>: st %g4, [ %fp + -20 ]
>> 0x240b4 <main_loop+168>: ld [ %fp + -20 ], %o0
>> 0x240b8 <main_loop+172>: call 0x14fa64 <cpu_x86_exec>
>> 0x240bc <main_loop+176>: nop
>
> This looks like equivalent code, only dumber version using an
> intermediate store and not using the delay slot.
Sure. However, what do you read of gdb determining that the value for
env in the parameters to the cpu_exec call being different to its value
in the calling function?
Regards,
Shaddy
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-12-06 0:17 ` Shaddy Baddah
@ 2007-12-06 9:10 ` Blue Swirl
2007-12-06 15:19 ` Blue Swirl
0 siblings, 1 reply; 14+ messages in thread
From: Blue Swirl @ 2007-12-06 9:10 UTC (permalink / raw)
To: qemu-devel
On 12/6/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
> Hi,
>
> Blue Swirl wrote:
> > On 12/5/07, Shaddy Baddah <shaddy.baddah@shaddybaddah.name> wrote:
> >> 0x1e958 <main+13992>: ld [ %l6 + 0x8c ], %l1
> >> 0x1e95c <main+13996>: call 0xa90b4 <cpu_x86_exec>
> >> 0x1e960 <main+14000>: mov %l1, %o0
> >
> > Maybe you missed the effect of the delay slot. The first argument is
> > prepared in %l1 and moved to %o0 in the delay slot of the call
> > instruction.
> You'll have to forgive me... although I know about the delay slot, I
> only slightly dabble in assembly, so I am not so confident at reading
> it. Reading this to mean that perhaps the assignment would be effected
> after execution of a further instruction, I've redone the debugging, and
> include it below:
>
> $ gdb --args ./i386-softmmu/qemu -cdrom
> ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
> GNU gdb 6.6.90.20070912-debian
> Copyright (C) 2007 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "sparc-linux-gnu"...
> Using host libthread_db library "/lib/libthread_db.so.1".
> (gdb)
> (gdb) break vl.c:7362
> Breakpoint 1 at 0x1e958: file /home/shaddy/qemu-cvs/qemu/vl.c, line 7362.
> (gdb) display /i $pc
> (gdb) run
> Starting program: /home/shaddy/qemu-cvs/qemu-optbuild/i386-softmmu/qemu
> -cdrom ../../KNOPPIX_V5.1.1CD-2007-01-04-EN.iso -L ../qemu/pc-bios
> [Thread debugging using libthread_db enabled]
> [New Thread 0xf7f27550 (LWP 15523)]
> [Switching to Thread 0xf7f27550 (LWP 15523)]
>
> Breakpoint 1, main (argc=1430528, argv=0x15d400) at
> /home/shaddy/qemu-cvs/qemu/vl.c:7362
> 7362 env = next_cpu;
> 1: x/i $pc
> 0x1e958 <main+13992>: ld [ %l6 + 0x8c ], %l1
> (gdb) print /x env
> $1 = 0x322e3100
> (gdb) print /x next_cpu
> $2 = 0x1cd13e8
> (gdb) stepi
> 7366 ret = cpu_exec(env);
> 1: x/i $pc
> 0x1e95c <main+13996>: call 0xa90b4 <cpu_x86_exec>
> 0x1e960 <main+14000>: mov %l1, %o0
> (gdb)
> 0x0001e960 7366 ret = cpu_exec(env);
> 1: x/i $pc
> 0x1e960 <main+14000>: mov %l1, %o0
> (gdb) print /x next_cpu
> $3 = 0x1cd13e8
> (gdb) print /x env
> $4 = 0x322e3100
> (gdb) print /x &env
> Address requested for identifier "env" which is in register $g6
> (gdb) print $g6
> $5 = 841888000
> (gdb) print /x $g6
> $6 = 0x322e3100
> (gdb) stepi
> cpu_x86_exec (env1=0x117000) at /home/shaddy/qemu-cvs/qemu/cpu-exec.c:244
> 244 {
> 1: x/i $pc
> 0xa90b4 <cpu_x86_exec>: add %sp, -232, %sp
> (gdb) print /x $g6
> $7 = 0x322e3100
> (gdb) stepi
> 0x000a90b8 in cpu_x86_exec (env1=0x117000) at
> /home/shaddy/qemu-cvs/qemu/cpu-exec.c:244
> 244 {
> 1: x/i $pc
> 0xa90b8 <cpu_x86_exec+4>: st %i7, [ %sp + 0x60 ]
> (gdb) print /x $g6
> $8 = 0x322e3100
> (gdb) stepi
> 0x000a90bc 244 {
> 1: x/i $pc
> 0xa90bc <cpu_x86_exec+8>: sub %sp, -232, %i7
> (gdb) print /x $g6
> $9 = 0x322e3100
> (gdb)
>
> I still read that as failing to assign the value. Given my limited
> knowledge, how is gdb so adamantly stating that env1=0x117000 when the
> value of env1 (i.e. env in the calling function) is only known after the
> delay slot instruction is completed? That's more a rhetorical
> question... I've got to do a bit of research to be able to know these
> things myself.
>
> >> 0x240a4 <main_loop+152>: sethi %hi(0x258800), %g4
> >> 0x240a8 <main_loop+156>: or %g4, 0x4c, %g4 ! 0x25884c
> >> 0x240ac <main_loop+160>: ld [ %g4 ], %g4
> >> 0x240b0 <main_loop+164>: st %g4, [ %fp + -20 ]
> >> 0x240b4 <main_loop+168>: ld [ %fp + -20 ], %o0
> >> 0x240b8 <main_loop+172>: call 0x14fa64 <cpu_x86_exec>
> >> 0x240bc <main_loop+176>: nop
> >
> > This looks like equivalent code, only dumber version using an
> > intermediate store and not using the delay slot.
> Sure. However, what do you read of gdb determining that the value for
> env in the parameters to the cpu_exec call being different to its value
> in the calling function?
Maybe the other function uses env which is the global register version
and the other env from paramenters or gdb could be confused.
(gdb) b *0x00074a20
Breakpoint 1 at 0x74a20: file /var/tmp/src/qemu.sparc/cpu-exec.c, line 244.
(gdb) c
[Switching to Thread 16384 (LWP 7110)]
Breakpoint 1, cpu_sparc_exec (env1=0xa9c00)
at /var/tmp/src/qemu.sparc/cpu-exec.c:244
244 {
(gdb) display/i $pc
(gdb) display/x $sp
(gdb) stepi
0x00074a24 in cpu_sparc_exec (env1=0xa9c00)
at /var/tmp/src/qemu.sparc/cpu-exec.c:244
244 {
2: /x $sp = 0xff7e2388
1: x/i $pc 0x74a24 <cpu_sparc_exec+4>: st %i7, [ %sp + 0x60 ]
(gdb)
0x00074a28 244 {
2: /x $sp = 0xff7e2388
1: x/i $pc 0x74a28 <cpu_sparc_exec+8>: sub %sp, -200, %i7
(gdb)
0x00074a2c in cpu_sparc_exec (env1=0xa9c00)
at /var/tmp/src/qemu.sparc/cpu-exec.c:244
244 {
2: /x $sp = 0xff7e2388
1: x/i $pc 0x74a2c <cpu_sparc_exec+12>: st %o7, [ %sp + 0x64 ]
(gdb)
Aborted
Now /proc/7110/maps shows that 0xff7e2388 + 0x64 = 0xff7e23ec is a
valid address:
ff7bc000-ff7e6000 rw-p ff7bc000 00:00 0 [stack]
Also the address is properly aligned, so the store should not fail.
The stack address is a bit odd, I think it should be located below kernel.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] and now bus error for i386 guest
2007-12-06 9:10 ` Blue Swirl
@ 2007-12-06 15:19 ` Blue Swirl
0 siblings, 0 replies; 14+ messages in thread
From: Blue Swirl @ 2007-12-06 15:19 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 261 bytes --]
The first problem was gcc flag -mflat, removing that made the code better.
Then there were these global register mangles. I made a wrapper around
setjmp and longjmp and now the emulators can execute several blocks
until crashing. Some helper calls don't work.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sparc_host_fixes.diff --]
[-- Type: text/x-diff; name=sparc_host_fixes.diff, Size: 5160 bytes --]
Index: qemu/cpu-exec.c
===================================================================
--- qemu.orig/cpu-exec.c 2007-12-06 10:21:29.000000000 +0000
+++ qemu/cpu-exec.c 2007-12-06 14:21:18.000000000 +0000
@@ -40,6 +40,56 @@
//#define DEBUG_EXEC
//#define DEBUG_SIGNAL
+#define SAVE_GLOBALS()
+#define RESTORE_GLOBALS()
+
+#if defined(__sparc__) && !defined(HOST_SOLARIS)
+#include <features.h>
+#if defined(__GLIBC__) && ((__GLIBC__ < 2) || \
+ ((__GLIBC__ == 2) && (__GLIBC_MINOR__ <= 90)))
+// Work around ugly bugs in glibc that mangle global register contents
+
+static volatile void *saved_env;
+static volatile long saved_t0, saved_t1, saved_t2, saved_i7;
+#undef SAVE_GLOBALS
+#define SAVE_GLOBALS() do { \
+ saved_env = env; \
+ saved_t0 = T0; \
+ saved_t1 = T1; \
+ saved_t2 = T2; \
+ asm volatile ("mov %%i7, %0" : "=r" (saved_i7)); \
+ } while(0)
+
+#undef RESTORE_GLOBALS
+#define RESTORE_GLOBALS() do { \
+ env = (void *)saved_env; \
+ T0 = saved_t0; \
+ T1 = saved_t1; \
+ T2 = saved_t2; \
+ asm volatile ("mov %0, %%i7" : : "r" (saved_i7)); \
+ } while(0)
+
+static int sparc_setjmp(jmp_buf buf)
+{
+ int ret;
+
+ SAVE_GLOBALS();
+ ret = setjmp(buf);
+ RESTORE_GLOBALS();
+ return ret;
+}
+#undef setjmp
+#define setjmp(jmp_buf) sparc_setjmp(jmp_buf)
+
+static void sparc_longjmp(jmp_buf buf, int val)
+{
+ SAVE_GLOBALS();
+ longjmp(buf, val);
+}
+#define longjmp(jmp_buf, val) sparc_longjmp(jmp_buf, val)
+#endif
+#endif
+
void cpu_loop_exit(void)
{
/* NOTE: the register at this point must be saved by hand because
@@ -133,7 +183,9 @@
tb->tc_ptr = tc_ptr;
tb->cs_base = cs_base;
tb->flags = flags;
+ SAVE_GLOBALS();
cpu_gen_code(env, tb, CODE_GEN_MAX_SIZE, &code_gen_size);
+ RESTORE_GLOBALS();
code_gen_ptr = (void *)(((unsigned long)code_gen_ptr + code_gen_size + CODE_GEN_ALIGN - 1) & ~(CODE_GEN_ALIGN - 1));
/* check next page if needed */
@@ -232,11 +284,7 @@
return tb;
}
-#if defined(__sparc__) && !defined(HOST_SOLARIS)
-#define BREAK_CHAIN tmp_T0 = 0
-#else
#define BREAK_CHAIN T0 = 0
-#endif
/* main execution loop */
@@ -249,10 +297,6 @@
uint32_t *saved_regwptr;
#endif
#endif
-#if defined(__sparc__) && !defined(HOST_SOLARIS)
- int saved_i7;
- target_ulong tmp_T0;
-#endif
int ret, interrupt_request;
void (*gen_func)(void);
TranslationBlock *tb;
@@ -267,11 +311,6 @@
#define SAVE_HOST_REGS 1
#include "hostregs_helper.h"
env = env1;
-#if defined(__sparc__) && !defined(HOST_SOLARIS)
- /* we also save i7 because longjmp may not restore it */
- asm volatile ("mov %%i7, %0" : "=r" (saved_i7));
-#endif
-
env_to_regs();
#if defined(TARGET_I386)
/* put eflags in CPU temporary format */
@@ -380,10 +419,7 @@
T0 = 0; /* force lookup of first TB */
for(;;) {
-#if defined(__sparc__) && !defined(HOST_SOLARIS)
- /* g1 can be modified by some libc? functions */
- tmp_T0 = T0;
-#endif
+ SAVE_GLOBALS();
interrupt_request = env->interrupt_request;
if (__builtin_expect(interrupt_request, 0)
#if defined(TARGET_I386)
@@ -597,9 +633,7 @@
lookup_symbol(tb->pc));
}
#endif
-#if defined(__sparc__) && !defined(HOST_SOLARIS)
- T0 = tmp_T0;
-#endif
+ RESTORE_GLOBALS();
/* see if we can patch the calling TB. When the TB
spans two pages, we cannot safely do a direct
jump. */
@@ -646,6 +680,7 @@
#else
gen_func();
#endif
+ SAVE_GLOBALS();
env->current_tb = NULL;
/* reset soft MMU for next block (it can currently
only be set by a memory fault) */
@@ -695,9 +730,6 @@
#endif
/* restore global registers */
-#if defined(__sparc__) && !defined(HOST_SOLARIS)
- asm volatile ("mov %0, %%i7" : : "r" (saved_i7));
-#endif
#include "hostregs_helper.h"
/* fail safe : never use cpu_single_env outside cpu_exec() */
Index: qemu/Makefile.target
===================================================================
--- qemu.orig/Makefile.target 2007-12-06 10:22:55.000000000 +0000
+++ qemu/Makefile.target 2007-12-06 12:26:28.000000000 +0000
@@ -161,7 +161,7 @@
OP_CFLAGS+=-fno-omit-frame-pointer
else
BASE_CFLAGS+=-ffixed-g1 -ffixed-g6
- HELPER_CFLAGS=$(CFLAGS) -ffixed-i0 -mflat
+ HELPER_CFLAGS=$(CFLAGS) -ffixed-i0
# -static is used to avoid g1/g3 usage by the dynamic linker
BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
endif
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2007-12-06 15:19 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-14 7:04 [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol Shaddy Baddah
2007-11-14 8:10 ` [Qemu-devel] now ppc build failure: dyngen: empty code for op_splatw_T1_64 Shaddy Baddah
2007-11-14 13:13 ` [Qemu-devel] and now bus error for i386 guest Shaddy Baddah
2007-11-14 20:42 ` Blue Swirl
2007-12-04 4:21 ` Shaddy Baddah
2007-12-04 13:23 ` Shaddy Baddah
2007-12-04 18:54 ` Blue Swirl
2007-12-05 14:33 ` Shaddy Baddah
2007-12-05 21:36 ` Blue Swirl
2007-12-06 0:17 ` Shaddy Baddah
2007-12-06 9:10 ` Blue Swirl
2007-12-06 15:19 ` Blue Swirl
2007-11-15 20:01 ` [Qemu-devel] Alpha build failure: dyngen picking out a nameless symbol Blue Swirl
2007-11-15 22:50 ` Paul Brook
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).