--- dyngen.c.orig 2005-04-30 11:59:05.000000000 +0100 +++ dyngen.c 2005-04-30 12:00:11.000000000 +0100 @@ -1396,11 +1395,13 @@ void gen_code(const char *name, host_ulo #elif defined(HOST_PPC) { uint8_t *p; + uint32_t insn; p = (void *)(p_end - 4); if (p == p_start) error("empty code for %s", name); - if (get32((uint32_t *)p) != 0x4e800020) - error("blr expected at the end of %s", name); + insn = get32((uint32_t *)p); + if (insn != 0x4e800020 && (insn & 0xfc000002) != 0x48000000) + error("blr or b expected at the end of %s", name); copy_size = p - p_start; } #elif defined(HOST_S390)