diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 9d52ca661317..e8dd52a4a274 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -327,62 +327,1209 @@ static void main_cpu_reset(void *opaque) CPUState *cs = CPU(cpu); cpu_reset(cs); - cpu->env.aregs[7] = ldl_phys(cs->as, 0); - cpu->env.pc = ldl_phys(cs->as, 4); -} - -static void rerandomize_rng_seed(void *opaque) -{ - struct bi_record *rng_seed = opaque; - qemu_guest_getrandom_nofail((void *)rng_seed->data + 2, - be16_to_cpu(*(uint16_t *)rng_seed->data)); + cpu->env.aregs[7] = 0x1000; + cpu->env.pc = MACROM_ADDR + (100 * 56); } static uint8_t fake_mac_rom[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - /* offset: 0xa - mac_reset */ - - /* via2[vDirB] |= VIA2B_vPower */ - 0x20, 0x7C, 0x50, 0xF0, 0x24, 0x00, /* moveal VIA2_BASE+vDirB,%a0 */ - 0x10, 0x10, /* moveb %a0@,%d0 */ - 0x00, 0x00, 0x00, 0x04, /* orib #4,%d0 */ - 0x10, 0x80, /* moveb %d0,%a0@ */ - - /* via2[vBufB] &= ~VIA2B_vPower */ - 0x20, 0x7C, 0x50, 0xF0, 0x20, 0x00, /* moveal VIA2_BASE+vBufB,%a0 */ - 0x10, 0x10, /* moveb %a0@,%d0 */ - 0x02, 0x00, 0xFF, 0xFB, /* andib #-5,%d0 */ - 0x10, 0x80, /* moveb %d0,%a0@ */ + /* + * fmodrem test table taken from real 68040. Format is: + * 12 bytes: FP0 + * 12 bytes: FP1 + * 12 bytes: result of fremx %fp0, %fp2 + * 4 bytes: FPSR after fremx + * 12 bytes: result of fmodx %fp0, %fp3 + * 4 bytes: FPSR after fmodx + * + * Total entry size: 56 bytes + * + * The test program below hangs when it completes and the exit + * condition can be determined using the monitor via "info + * registers" command as follows: + * + * D7 is the test number (0-99) + * D6 is the error code + * 0 = no error + * 1 = frem result incorrect + * 2 = frem fpsr result incorrect + * 3 = fmod result incorrect + * 4 = fmod fpsr result incorrect + * D2 is the actual result of the long comparison + * D1 is the expected result of the long comparison + * + * A successful termination of the test program is when D7 == 100 + * and D6 == 0. + */ - /* while (true) ; */ - 0x60, 0xFE /* bras [self] */ + /*** 0: -2.35619449019234493000 % -1.57079632679489662000 ***/ + 0xC0,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.78539816339744830980, quotient = +2 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x38, + 0x00,0x02,0x00,0x00, + /* fmod = -0.78539816339744831000, quotient = +1 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3C, + 0x08,0x01,0x00,0x00, + + /*** 1: -1.57079632679489662000 % -1.57079632679489662000 ***/ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.00000000000000000000, quotient = +1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x01,0x00,0x00, + /* fmod = -0.00000000000000000000, quotient = +1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x01,0x00,0x00, + + /*** 2: -1.00000000000000000000 % -1.57079632679489662000 ***/ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.57079632679489661980, quotient = +1 */ + 0x3F,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x00,0x01,0x00,0x00, + /* fmod = -1.00000000000000000000, quotient = +0 */ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00, + + /*** 3: -0.78539816339744830990 % -1.57079632679489662000 ***/ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.78539816339744830990, quotient = +0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x00,0x00,0x00, + /* fmod = -0.78539816339744830990, quotient = +0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x00,0x00,0x00, + + /*** 4: 0.00000000000000000000 % -1.57079632679489662000 ***/ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = -0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x80,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = -0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x80,0x00,0x00, + + /*** 5: 0.78539816339744830990 % -1.57079632679489662000 ***/ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.78539816339744830990, quotient = -0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x80,0x00,0x00, + /* fmod = 0.78539816339744830990, quotient = -0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x80,0x00,0x00, + + /*** 6: 1.00000000000000000000 % -1.57079632679489662000 ***/ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.57079632679489661980, quotient = -1 */ + 0xBF,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x08,0x81,0x00,0x00, + /* fmod = 1.00000000000000000000, quotient = -0 */ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x00,0x00, + + /*** 7: 1.57079632679489662000 % -1.57079632679489662000 ***/ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = -1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x81,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = -1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x81,0x00,0x00, + + /*** 8: 2.35619449019234493000 % -1.57079632679489662000 ***/ + 0x40,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.78539816339744830980, quotient = -2 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x38, + 0x08,0x82,0x00,0x00, + /* fmod = 0.78539816339744831000, quotient = -1 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3C, + 0x00,0x81,0x00,0x00, + + /*** 9: 3.14159265358979324000 % -1.57079632679489662000 ***/ + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = -2 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x82,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = -2 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x82,0x00,0x00, + + /*** 10: 4.39822971502571053500 % -1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0x8C,0xBE,0x4C,0x3E,0x4A,0x96,0x21,0x8F, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.31415926535897932400, quotient = -3 */ + 0xBF,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x08,0x83,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = -2 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x82,0x00,0x00, + + /*** 11: 4.71238898038468986000 % -1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000022, quotient = -3 */ + 0x3F,0xC1,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x83,0x00,0x00, + /* fmod = 0.00000000000000000022, quotient = -3 */ + 0x3F,0xC1,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x83,0x00,0x00, + + /*** 12: 5.02654824574366918300 % -1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932400, quotient = -3 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x83,0x00,0x00, + /* fmod = 0.31415926535897932400, quotient = -3 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x83,0x00,0x00, + + /*** 13: 5.65486677646162783100 % -1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xB4,0xF4,0xAB,0x2B,0x84,0x77,0xE2,0x01, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.62831853071795864790, quotient = -4 */ + 0xBF,0xFE,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x08,0x84,0x00,0x00, + /* fmod = 0.94247779607693797190, quotient = -3 */ + 0x3F,0xFE,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAC, + 0x00,0x83,0x00,0x00, + + /*** 14: 6.59734457253856580300 % -1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xD3,0x1D,0x72,0x5D,0x6F,0xE1,0x32,0x56, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932370, quotient = -4 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC0, + 0x00,0x84,0x00,0x00, + /* fmod = 0.31415926535897932370, quotient = -4 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC0, + 0x00,0x84,0x00,0x00, + + /*** 15: 7.53982236861550377500 % -1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAD, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.31415926535897932350, quotient = -5 */ + 0xBF,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB8, + 0x08,0x85,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = -4 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xCC, + 0x00,0x84,0x00,0x00, + + /*** 16: 8.16814089933346242300 % -1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x82,0xB0,0xB4,0x82,0xFC,0x1D,0xB1,0x72, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932350, quotient = -5 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB8, + 0x00,0x85,0x00,0x00, + /* fmod = 0.31415926535897932350, quotient = -5 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB8, + 0x00,0x85,0x00,0x00, + + /*** 17: 9.11061869541040039500 % -1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x91,0xC5,0x18,0x1B,0xF1,0xD2,0x59,0x9E, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.31415926535897932330, quotient = -6 */ + 0xBF,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x08,0x86,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = -5 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xCE, + 0x00,0x85,0x00,0x00, + + /*** 18: 9.42477796076937971900 % -1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000043, quotient = -6 */ + 0x3F,0xC2,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x86,0x00,0x00, + /* fmod = 0.00000000000000000043, quotient = -6 */ + 0x3F,0xC2,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x86,0x00,0x00, + + /*** 19: 9.73893722612835904200 % -1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x9B,0xD2,0xAF,0xD7,0x40,0x4A,0xC9,0xB9, + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932330, quotient = -6 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x00,0x86,0x00,0x00, + /* fmod = 0.31415926535897932330, quotient = -6 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x00,0x86,0x00,0x00, + + /*** 20: -2.35619449019234493000 % -1.00000000000000000000 ***/ + 0xC0,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.35619449019234492980, quotient = +2 */ + 0xBF,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x08,0x02,0x00,0x00, + /* fmod = -0.35619449019234492980, quotient = +2 */ + 0xBF,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x08,0x02,0x00,0x00, + + /*** 21: -1.57079632679489662000 % -1.00000000000000000000 ***/ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.42920367320510338020, quotient = +2 */ + 0x3F,0xFD,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x00,0x02,0x00,0x00, + /* fmod = -0.57079632679489661980, quotient = +1 */ + 0xBF,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x08,0x01,0x00,0x00, + + /*** 22: -1.00000000000000000000 % -1.00000000000000000000 ***/ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.00000000000000000000, quotient = +1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x01,0x00,0x00, + /* fmod = -0.00000000000000000000, quotient = +1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x01,0x00,0x00, + + /*** 23: -0.78539816339744830990 % -1.00000000000000000000 ***/ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.21460183660255169010, quotient = +1 */ + 0x3F,0xFC,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x00,0x01,0x00,0x00, + /* fmod = -0.78539816339744830990, quotient = +0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x00,0x00,0x00, + + /*** 24: 0.00000000000000000000 % -1.00000000000000000000 ***/ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.00000000000000000000, quotient = -0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x80,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = -0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x80,0x00,0x00, + + /*** 25: 0.78539816339744830990 % -1.00000000000000000000 ***/ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.21460183660255169010, quotient = -1 */ + 0xBF,0xFC,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x08,0x81,0x00,0x00, + /* fmod = 0.78539816339744830990, quotient = -0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x80,0x00,0x00, + + /*** 26: 1.00000000000000000000 % -1.00000000000000000000 ***/ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.00000000000000000000, quotient = -1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x81,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = -1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x81,0x00,0x00, + + /*** 27: 1.57079632679489662000 % -1.00000000000000000000 ***/ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.42920367320510338020, quotient = -2 */ + 0xBF,0xFD,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x08,0x82,0x00,0x00, + /* fmod = 0.57079632679489661980, quotient = -1 */ + 0x3F,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x00,0x81,0x00,0x00, + + /*** 28: 2.35619449019234493000 % -1.00000000000000000000 ***/ + 0x40,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.35619449019234492980, quotient = -2 */ + 0x3F,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x00,0x82,0x00,0x00, + /* fmod = 0.35619449019234492980, quotient = -2 */ + 0x3F,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x00,0x82,0x00,0x00, + + /*** 29: 3.14159265358979324000 % -1.00000000000000000000 ***/ + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.14159265358979323960, quotient = -3 */ + 0x3F,0xFC,0x00,0x00,0x90,0xFD,0xAA,0x22,0x16,0x8C,0x23,0xA0, + 0x00,0x83,0x00,0x00, + /* fmod = 0.14159265358979323960, quotient = -3 */ + 0x3F,0xFC,0x00,0x00,0x90,0xFD,0xAA,0x22,0x16,0x8C,0x23,0xA0, + 0x00,0x83,0x00,0x00, + + /*** 30: 4.39822971502571053500 % -1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0x8C,0xBE,0x4C,0x3E,0x4A,0x96,0x21,0x8F, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.39822971502571053540, quotient = -4 */ + 0x3F,0xFD,0x00,0x00,0xCB,0xE4,0xC3,0xE4,0xA9,0x62,0x18,0xF0, + 0x00,0x84,0x00,0x00, + /* fmod = 0.39822971502571053540, quotient = -4 */ + 0x3F,0xFD,0x00,0x00,0xCB,0xE4,0xC3,0xE4,0xA9,0x62,0x18,0xF0, + 0x00,0x84,0x00,0x00, + + /*** 31: 4.71238898038468986000 % -1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.28761101961531014040, quotient = -5 */ + 0xBF,0xFD,0x00,0x00,0x93,0x41,0xC0,0x66,0x6F,0x16,0xE5,0x40, + 0x08,0x85,0x00,0x00, + /* fmod = 0.71238898038468985960, quotient = -4 */ + 0x3F,0xFE,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x00,0x84,0x00,0x00, + + /*** 32: 5.02654824574366918300 % -1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.02654824574366918336, quotient = -5 */ + 0x3F,0xF9,0x00,0x00,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8,0x00, + 0x00,0x85,0x00,0x00, + /* fmod = 0.02654824574366918336, quotient = -5 */ + 0x3F,0xF9,0x00,0x00,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8,0x00, + 0x00,0x85,0x00,0x00, + + /*** 33: 5.65486677646162783100 % -1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xB4,0xF4,0xAB,0x2B,0x84,0x77,0xE2,0x01, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.34513322353837216870, quotient = -6 */ + 0xBF,0xFD,0x00,0x00,0xB0,0xB5,0x4D,0x47,0xB8,0x81,0xDF,0xF0, + 0x08,0x86,0x00,0x00, + /* fmod = 0.65486677646162783130, quotient = -5 */ + 0x3F,0xFE,0x00,0x00,0xA7,0xA5,0x59,0x5C,0x23,0xBF,0x10,0x08, + 0x00,0x85,0x00,0x00, + + /*** 34: 6.59734457253856580300 % -1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xD3,0x1D,0x72,0x5D,0x6F,0xE1,0x32,0x56, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.40265542746143419710, quotient = -7 */ + 0xBF,0xFD,0x00,0x00,0xCE,0x28,0xDA,0x29,0x01,0xEC,0xDA,0xA0, + 0x08,0x87,0x00,0x00, + /* fmod = 0.59734457253856580290, quotient = -6 */ + 0x3F,0xFE,0x00,0x00,0x98,0xEB,0x92,0xEB,0x7F,0x09,0x92,0xB0, + 0x00,0x86,0x00,0x00, + + /*** 35: 7.53982236861550377500 % -1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAD, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.46017763138449622450, quotient = -8 */ + 0xBF,0xFD,0x00,0x00,0xEB,0x9C,0x67,0x0A,0x4B,0x57,0xD5,0x30, + 0x08,0x88,0x00,0x00, + /* fmod = 0.53982236861550377550, quotient = -7 */ + 0x3F,0xFE,0x00,0x00,0x8A,0x31,0xCC,0x7A,0xDA,0x54,0x15,0x68, + 0x00,0x87,0x00,0x00, + + /*** 36: 8.16814089933346242300 % -1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x82,0xB0,0xB4,0x82,0xFC,0x1D,0xB1,0x72, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.16814089933346242250, quotient = -8 */ + 0x3F,0xFC,0x00,0x00,0xAC,0x2D,0x20,0xBF,0x07,0x6C,0x5C,0x80, + 0x00,0x88,0x00,0x00, + /* fmod = 0.16814089933346242250, quotient = -8 */ + 0x3F,0xFC,0x00,0x00,0xAC,0x2D,0x20,0xBF,0x07,0x6C,0x5C,0x80, + 0x00,0x88,0x00,0x00, + + /*** 37: 9.11061869541040039500 % -1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x91,0xC5,0x18,0x1B,0xF1,0xD2,0x59,0x9E, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.11061869541040039550, quotient = -9 */ + 0x3F,0xFB,0x00,0x00,0xE2,0x8C,0x0D,0xF8,0xE9,0x2C,0xCF,0x00, + 0x00,0x89,0x00,0x00, + /* fmod = 0.11061869541040039550, quotient = -9 */ + 0x3F,0xFB,0x00,0x00,0xE2,0x8C,0x0D,0xF8,0xE9,0x2C,0xCF,0x00, + 0x00,0x89,0x00,0x00, + + /*** 38: 9.42477796076937971900 % -1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.42477796076937971920, quotient = -9 */ + 0x3F,0xFD,0x00,0x00,0xD9,0x7C,0x7F,0x33,0x21,0xD2,0x35,0x80, + 0x00,0x89,0x00,0x00, + /* fmod = 0.42477796076937971920, quotient = -9 */ + 0x3F,0xFD,0x00,0x00,0xD9,0x7C,0x7F,0x33,0x21,0xD2,0x35,0x80, + 0x00,0x89,0x00,0x00, + + /*** 39: 9.73893722612835904200 % -1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x9B,0xD2,0xAF,0xD7,0x40,0x4A,0xC9,0xB9, + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.26106277387164095790, quotient = -10 */ + 0xBF,0xFD,0x00,0x00,0x85,0xAA,0x05,0x17,0xF6,0xA6,0xC8,0xE0, + 0x08,0x8A,0x00,0x00, + /* fmod = 0.73893722612835904210, quotient = -9 */ + 0x3F,0xFE,0x00,0x00,0xBD,0x2A,0xFD,0x74,0x04,0xAC,0x9B,0x90, + 0x00,0x89,0x00,0x00, + + /*** 40: -2.35619449019234493000 % 1.00000000000000000000 ***/ + 0xC0,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.35619449019234492980, quotient = -2 */ + 0xBF,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x08,0x82,0x00,0x00, + /* fmod = -0.35619449019234492980, quotient = -2 */ + 0xBF,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x08,0x82,0x00,0x00, + + /*** 41: -1.57079632679489662000 % 1.00000000000000000000 ***/ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.42920367320510338020, quotient = -2 */ + 0x3F,0xFD,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x00,0x82,0x00,0x00, + /* fmod = -0.57079632679489661980, quotient = -1 */ + 0xBF,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x08,0x81,0x00,0x00, + + /*** 42: -1.00000000000000000000 % 1.00000000000000000000 ***/ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.00000000000000000000, quotient = -1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x81,0x00,0x00, + /* fmod = -0.00000000000000000000, quotient = -1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x81,0x00,0x00, + + /*** 43: -0.78539816339744830990 % 1.00000000000000000000 ***/ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.21460183660255169010, quotient = -1 */ + 0x3F,0xFC,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x00,0x81,0x00,0x00, + /* fmod = -0.78539816339744830990, quotient = -0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x80,0x00,0x00, + + /*** 44: 0.00000000000000000000 % 1.00000000000000000000 ***/ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.00000000000000000000, quotient = +0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = +0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00, + + /*** 45: 0.78539816339744830990 % 1.00000000000000000000 ***/ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.21460183660255169010, quotient = +1 */ + 0xBF,0xFC,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x08,0x01,0x00,0x00, + /* fmod = 0.78539816339744830990, quotient = +0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x00,0x00,0x00, + + /*** 46: 1.00000000000000000000 % 1.00000000000000000000 ***/ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.00000000000000000000, quotient = +1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x01,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = +1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x01,0x00,0x00, + + /*** 47: 1.57079632679489662000 % 1.00000000000000000000 ***/ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.42920367320510338020, quotient = +2 */ + 0xBF,0xFD,0x00,0x00,0xDB,0xC0,0x95,0x77,0x7A,0x5C,0xF7,0x18, + 0x08,0x02,0x00,0x00, + /* fmod = 0.57079632679489661980, quotient = +1 */ + 0x3F,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x00,0x01,0x00,0x00, + + /*** 48: 2.35619449019234493000 % 1.00000000000000000000 ***/ + 0x40,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.35619449019234492980, quotient = +2 */ + 0x3F,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x00,0x02,0x00,0x00, + /* fmod = 0.35619449019234492980, quotient = +2 */ + 0x3F,0xFD,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x00,0x02,0x00,0x00, + + /*** 49: 3.14159265358979324000 % 1.00000000000000000000 ***/ + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.14159265358979323960, quotient = +3 */ + 0x3F,0xFC,0x00,0x00,0x90,0xFD,0xAA,0x22,0x16,0x8C,0x23,0xA0, + 0x00,0x03,0x00,0x00, + /* fmod = 0.14159265358979323960, quotient = +3 */ + 0x3F,0xFC,0x00,0x00,0x90,0xFD,0xAA,0x22,0x16,0x8C,0x23,0xA0, + 0x00,0x03,0x00,0x00, + + /*** 50: 4.39822971502571053500 % 1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0x8C,0xBE,0x4C,0x3E,0x4A,0x96,0x21,0x8F, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.39822971502571053540, quotient = +4 */ + 0x3F,0xFD,0x00,0x00,0xCB,0xE4,0xC3,0xE4,0xA9,0x62,0x18,0xF0, + 0x00,0x04,0x00,0x00, + /* fmod = 0.39822971502571053540, quotient = +4 */ + 0x3F,0xFD,0x00,0x00,0xCB,0xE4,0xC3,0xE4,0xA9,0x62,0x18,0xF0, + 0x00,0x04,0x00,0x00, + + /*** 51: 4.71238898038468986000 % 1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.28761101961531014040, quotient = +5 */ + 0xBF,0xFD,0x00,0x00,0x93,0x41,0xC0,0x66,0x6F,0x16,0xE5,0x40, + 0x08,0x05,0x00,0x00, + /* fmod = 0.71238898038468985960, quotient = +4 */ + 0x3F,0xFE,0x00,0x00,0xB6,0x5F,0x1F,0xCC,0xC8,0x74,0x8D,0x60, + 0x00,0x04,0x00,0x00, + + /*** 52: 5.02654824574366918300 % 1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.02654824574366918336, quotient = +5 */ + 0x3F,0xF9,0x00,0x00,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8,0x00, + 0x00,0x05,0x00,0x00, + /* fmod = 0.02654824574366918336, quotient = +5 */ + 0x3F,0xF9,0x00,0x00,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8,0x00, + 0x00,0x05,0x00,0x00, + + /*** 53: 5.65486677646162783100 % 1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xB4,0xF4,0xAB,0x2B,0x84,0x77,0xE2,0x01, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.34513322353837216870, quotient = +6 */ + 0xBF,0xFD,0x00,0x00,0xB0,0xB5,0x4D,0x47,0xB8,0x81,0xDF,0xF0, + 0x08,0x06,0x00,0x00, + /* fmod = 0.65486677646162783130, quotient = +5 */ + 0x3F,0xFE,0x00,0x00,0xA7,0xA5,0x59,0x5C,0x23,0xBF,0x10,0x08, + 0x00,0x05,0x00,0x00, + + /*** 54: 6.59734457253856580300 % 1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xD3,0x1D,0x72,0x5D,0x6F,0xE1,0x32,0x56, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.40265542746143419710, quotient = +7 */ + 0xBF,0xFD,0x00,0x00,0xCE,0x28,0xDA,0x29,0x01,0xEC,0xDA,0xA0, + 0x08,0x07,0x00,0x00, + /* fmod = 0.59734457253856580290, quotient = +6 */ + 0x3F,0xFE,0x00,0x00,0x98,0xEB,0x92,0xEB,0x7F,0x09,0x92,0xB0, + 0x00,0x06,0x00,0x00, + + /*** 55: 7.53982236861550377500 % 1.00000000000000000000 ***/ + 0x40,0x01,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAD, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.46017763138449622450, quotient = +8 */ + 0xBF,0xFD,0x00,0x00,0xEB,0x9C,0x67,0x0A,0x4B,0x57,0xD5,0x30, + 0x08,0x08,0x00,0x00, + /* fmod = 0.53982236861550377550, quotient = +7 */ + 0x3F,0xFE,0x00,0x00,0x8A,0x31,0xCC,0x7A,0xDA,0x54,0x15,0x68, + 0x00,0x07,0x00,0x00, + + /*** 56: 8.16814089933346242300 % 1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x82,0xB0,0xB4,0x82,0xFC,0x1D,0xB1,0x72, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.16814089933346242250, quotient = +8 */ + 0x3F,0xFC,0x00,0x00,0xAC,0x2D,0x20,0xBF,0x07,0x6C,0x5C,0x80, + 0x00,0x08,0x00,0x00, + /* fmod = 0.16814089933346242250, quotient = +8 */ + 0x3F,0xFC,0x00,0x00,0xAC,0x2D,0x20,0xBF,0x07,0x6C,0x5C,0x80, + 0x00,0x08,0x00,0x00, + + /*** 57: 9.11061869541040039500 % 1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x91,0xC5,0x18,0x1B,0xF1,0xD2,0x59,0x9E, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.11061869541040039550, quotient = +9 */ + 0x3F,0xFB,0x00,0x00,0xE2,0x8C,0x0D,0xF8,0xE9,0x2C,0xCF,0x00, + 0x00,0x09,0x00,0x00, + /* fmod = 0.11061869541040039550, quotient = +9 */ + 0x3F,0xFB,0x00,0x00,0xE2,0x8C,0x0D,0xF8,0xE9,0x2C,0xCF,0x00, + 0x00,0x09,0x00,0x00, + + /*** 58: 9.42477796076937971900 % 1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = 0.42477796076937971920, quotient = +9 */ + 0x3F,0xFD,0x00,0x00,0xD9,0x7C,0x7F,0x33,0x21,0xD2,0x35,0x80, + 0x00,0x09,0x00,0x00, + /* fmod = 0.42477796076937971920, quotient = +9 */ + 0x3F,0xFD,0x00,0x00,0xD9,0x7C,0x7F,0x33,0x21,0xD2,0x35,0x80, + 0x00,0x09,0x00,0x00, + + /*** 59: 9.73893722612835904200 % 1.00000000000000000000 ***/ + 0x40,0x02,0x00,0x00,0x9B,0xD2,0xAF,0xD7,0x40,0x4A,0xC9,0xB9, + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + /* frem = -0.26106277387164095790, quotient = +10 */ + 0xBF,0xFD,0x00,0x00,0x85,0xAA,0x05,0x17,0xF6,0xA6,0xC8,0xE0, + 0x08,0x0A,0x00,0x00, + /* fmod = 0.73893722612835904210, quotient = +9 */ + 0x3F,0xFE,0x00,0x00,0xBD,0x2A,0xFD,0x74,0x04,0xAC,0x9B,0x90, + 0x00,0x09,0x00,0x00, + + /*** 60: -2.35619449019234493000 % 1.57079632679489662000 ***/ + 0xC0,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.78539816339744830980, quotient = -2 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x38, + 0x00,0x82,0x00,0x00, + /* fmod = -0.78539816339744831000, quotient = -1 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3C, + 0x08,0x81,0x00,0x00, + + /*** 61: -1.57079632679489662000 % 1.57079632679489662000 ***/ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.00000000000000000000, quotient = -1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x81,0x00,0x00, + /* fmod = -0.00000000000000000000, quotient = -1 */ + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0C,0x81,0x00,0x00, + + /*** 62: -1.00000000000000000000 % 1.57079632679489662000 ***/ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.57079632679489661980, quotient = -1 */ + 0x3F,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x00,0x81,0x00,0x00, + /* fmod = -1.00000000000000000000, quotient = -0 */ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x80,0x00,0x00, + + /*** 63: -0.78539816339744830990 % 1.57079632679489662000 ***/ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.78539816339744830990, quotient = -0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x80,0x00,0x00, + /* fmod = -0.78539816339744830990, quotient = -0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x80,0x00,0x00, + + /*** 64: 0.00000000000000000000 % 1.57079632679489662000 ***/ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = +0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = +0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00, + + /*** 65: 0.78539816339744830990 % 1.57079632679489662000 ***/ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.78539816339744830990, quotient = +0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x00,0x00,0x00, + /* fmod = 0.78539816339744830990, quotient = +0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x00,0x00,0x00, + + /*** 66: 1.00000000000000000000 % 1.57079632679489662000 ***/ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.57079632679489661980, quotient = +1 */ + 0xBF,0xFE,0x00,0x00,0x92,0x1F,0xB5,0x44,0x42,0xD1,0x84,0x74, + 0x08,0x01,0x00,0x00, + /* fmod = 1.00000000000000000000, quotient = +0 */ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, + + /*** 67: 1.57079632679489662000 % 1.57079632679489662000 ***/ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = +1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x01,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = +1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x01,0x00,0x00, + + /*** 68: 2.35619449019234493000 % 1.57079632679489662000 ***/ + 0x40,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.78539816339744830980, quotient = +2 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x38, + 0x08,0x02,0x00,0x00, + /* fmod = 0.78539816339744831000, quotient = +1 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3C, + 0x00,0x01,0x00,0x00, + + /*** 69: 3.14159265358979324000 % 1.57079632679489662000 ***/ + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = +2 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x02,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = +2 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x02,0x00,0x00, + + /*** 70: 4.39822971502571053500 % 1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0x8C,0xBE,0x4C,0x3E,0x4A,0x96,0x21,0x8F, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.31415926535897932400, quotient = +3 */ + 0xBF,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x08,0x03,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = +2 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x02,0x00,0x00, + + /*** 71: 4.71238898038468986000 % 1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000022, quotient = +3 */ + 0x3F,0xC1,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x00, + /* fmod = 0.00000000000000000022, quotient = +3 */ + 0x3F,0xC1,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x00, + + /*** 72: 5.02654824574366918300 % 1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932400, quotient = +3 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x03,0x00,0x00, + /* fmod = 0.31415926535897932400, quotient = +3 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x03,0x00,0x00, + + /*** 73: 5.65486677646162783100 % 1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xB4,0xF4,0xAB,0x2B,0x84,0x77,0xE2,0x01, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.62831853071795864790, quotient = +4 */ + 0xBF,0xFE,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x08,0x04,0x00,0x00, + /* fmod = 0.94247779607693797190, quotient = +3 */ + 0x3F,0xFE,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAC, + 0x00,0x03,0x00,0x00, + + /*** 74: 6.59734457253856580300 % 1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xD3,0x1D,0x72,0x5D,0x6F,0xE1,0x32,0x56, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932370, quotient = +4 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC0, + 0x00,0x04,0x00,0x00, + /* fmod = 0.31415926535897932370, quotient = +4 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC0, + 0x00,0x04,0x00,0x00, + + /*** 75: 7.53982236861550377500 % 1.57079632679489662000 ***/ + 0x40,0x01,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAD, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.31415926535897932350, quotient = +5 */ + 0xBF,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB8, + 0x08,0x05,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = +4 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xCC, + 0x00,0x04,0x00,0x00, + + /*** 76: 8.16814089933346242300 % 1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x82,0xB0,0xB4,0x82,0xFC,0x1D,0xB1,0x72, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932350, quotient = +5 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB8, + 0x00,0x05,0x00,0x00, + /* fmod = 0.31415926535897932350, quotient = +5 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB8, + 0x00,0x05,0x00,0x00, + + /*** 77: 9.11061869541040039500 % 1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x91,0xC5,0x18,0x1B,0xF1,0xD2,0x59,0x9E, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.31415926535897932330, quotient = +6 */ + 0xBF,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x08,0x06,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = +5 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xCE, + 0x00,0x05,0x00,0x00, + + /*** 78: 9.42477796076937971900 % 1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000043, quotient = +6 */ + 0x3F,0xC2,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x06,0x00,0x00, + /* fmod = 0.00000000000000000043, quotient = +6 */ + 0x3F,0xC2,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x06,0x00,0x00, + + /*** 79: 9.73893722612835904200 % 1.57079632679489662000 ***/ + 0x40,0x02,0x00,0x00,0x9B,0xD2,0xAF,0xD7,0x40,0x4A,0xC9,0xB9, + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932330, quotient = +6 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x00,0x06,0x00,0x00, + /* fmod = 0.31415926535897932330, quotient = +6 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x00,0x06,0x00,0x00, + + /*** 80: -2.35619449019234493000 % 3.14159265358979324000 ***/ + 0xC0,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.78539816339744830980, quotient = -1 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x38, + 0x00,0x81,0x00,0x00, + /* fmod = -2.35619449019234493000, quotient = -0 */ + 0xC0,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x08,0x80,0x00,0x00, + + /*** 81: -1.57079632679489662000 % 3.14159265358979324000 ***/ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -1.57079632679489662000, quotient = -0 */ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x80,0x00,0x00, + /* fmod = -1.57079632679489662000, quotient = -0 */ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x80,0x00,0x00, + + /*** 82: -1.00000000000000000000 % 3.14159265358979324000 ***/ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -1.00000000000000000000, quotient = -0 */ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x80,0x00,0x00, + /* fmod = -1.00000000000000000000, quotient = -0 */ + 0xBF,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x80,0x00,0x00, + + /*** 83: -0.78539816339744830990 % 3.14159265358979324000 ***/ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.78539816339744830990, quotient = -0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x80,0x00,0x00, + /* fmod = -0.78539816339744830990, quotient = -0 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x08,0x80,0x00,0x00, + + /*** 84: 0.00000000000000000000 % 3.14159265358979324000 ***/ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = +0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = +0 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00, + + /*** 85: 0.78539816339744830990 % 3.14159265358979324000 ***/ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.78539816339744830990, quotient = +0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x00,0x00,0x00, + /* fmod = 0.78539816339744830990, quotient = +0 */ + 0x3F,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x00,0x00,0x00, + + /*** 86: 1.00000000000000000000 % 3.14159265358979324000 ***/ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 1.00000000000000000000, quotient = +0 */ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, + /* fmod = 1.00000000000000000000, quotient = +0 */ + 0x3F,0xFF,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, + + /*** 87: 1.57079632679489662000 % 3.14159265358979324000 ***/ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 1.57079632679489662000, quotient = +0 */ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x00,0x00,0x00, + /* fmod = 1.57079632679489662000, quotient = +0 */ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x00,0x00,0x00,0x00, + + /*** 88: 2.35619449019234493000 % 3.14159265358979324000 ***/ + 0x40,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.78539816339744830980, quotient = +1 */ + 0xBF,0xFE,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x38, + 0x08,0x01,0x00,0x00, + /* fmod = 2.35619449019234493000, quotient = +0 */ + 0x40,0x00,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x00,0x00,0x00,0x00, + + /*** 89: 3.14159265358979324000 % 3.14159265358979324000 ***/ + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000000, quotient = +1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x01,0x00,0x00, + /* fmod = 0.00000000000000000000, quotient = +1 */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x01,0x00,0x00, + + /*** 90: 4.39822971502571053500 % 3.14159265358979324000 ***/ + 0x40,0x01,0x00,0x00,0x8C,0xBE,0x4C,0x3E,0x4A,0x96,0x21,0x8F, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 1.25663706143591729600, quotient = +1 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x01,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = +1 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x01,0x00,0x00, + + /*** 91: 4.71238898038468986000 % 3.14159265358979324000 ***/ + 0x40,0x01,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -1.57079632679489662000, quotient = +2 */ + 0xBF,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x38, + 0x08,0x02,0x00,0x00, + /* fmod = 1.57079632679489662000, quotient = +1 */ + 0x3F,0xFF,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3C, + 0x00,0x01,0x00,0x00, + + /*** 92: 5.02654824574366918300 % 3.14159265358979324000 ***/ + 0x40,0x01,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -1.25663706143591729600, quotient = +2 */ + 0xBF,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x08,0x02,0x00,0x00, + /* fmod = 1.88495559215387594400, quotient = +1 */ + 0x3F,0xFF,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAC, + 0x00,0x01,0x00,0x00, + + /*** 93: 5.65486677646162783100 % 3.14159265358979324000 ***/ + 0x40,0x01,0x00,0x00,0xB4,0xF4,0xAB,0x2B,0x84,0x77,0xE2,0x01, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.62831853071795864790, quotient = +2 */ + 0xBF,0xFE,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x08,0x02,0x00,0x00, + /* fmod = 2.51327412287183459200, quotient = +1 */ + 0x40,0x00,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC8, + 0x00,0x01,0x00,0x00, + + /*** 94: 6.59734457253856580300 % 3.14159265358979324000 ***/ + 0x40,0x01,0x00,0x00,0xD3,0x1D,0x72,0x5D,0x6F,0xE1,0x32,0x56, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932370, quotient = +2 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC0, + 0x00,0x02,0x00,0x00, + /* fmod = 0.31415926535897932370, quotient = +2 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xC0, + 0x00,0x02,0x00,0x00, + + /*** 95: 7.53982236861550377500 % 3.14159265358979324000 ***/ + 0x40,0x01,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xAD, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 1.25663706143591729600, quotient = +2 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xCC, + 0x00,0x02,0x00,0x00, + /* fmod = 1.25663706143591729600, quotient = +2 */ + 0x3F,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xCC, + 0x00,0x02,0x00,0x00, + + /*** 96: 8.16814089933346242300 % 3.14159265358979324000 ***/ + 0x40,0x02,0x00,0x00,0x82,0xB0,0xB4,0x82,0xFC,0x1D,0xB1,0x72, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -1.25663706143591729600, quotient = +3 */ + 0xBF,0xFF,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xCC, + 0x08,0x03,0x00,0x00, + /* fmod = 1.88495559215387594300, quotient = +2 */ + 0x3F,0xFF,0x00,0x00,0xF1,0x46,0x39,0x8F,0x5B,0x4A,0x82,0xA8, + 0x00,0x02,0x00,0x00, + + /*** 97: 9.11061869541040039500 % 3.14159265358979324000 ***/ + 0x40,0x02,0x00,0x00,0x91,0xC5,0x18,0x1B,0xF1,0xD2,0x59,0x9E, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = -0.31415926535897932330, quotient = +3 */ + 0xBF,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x08,0x03,0x00,0x00, + /* fmod = 2.82743338823081391600, quotient = +2 */ + 0x40,0x00,0x00,0x00,0xB4,0xF4,0xAB,0x2B,0x84,0x77,0xE2,0x04, + 0x00,0x02,0x00,0x00, + + /*** 98: 9.42477796076937971900 % 3.14159265358979324000 ***/ + 0x40,0x02,0x00,0x00,0x96,0xCB,0xE3,0xF9,0x99,0x0E,0x91,0xAC, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.00000000000000000043, quotient = +3 */ + 0x3F,0xC2,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x00, + /* fmod = 0.00000000000000000043, quotient = +3 */ + 0x3F,0xC2,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x00, + + /*** 99: 9.73893722612835904200 % 3.14159265358979324000 ***/ + 0x40,0x02,0x00,0x00,0x9B,0xD2,0xAF,0xD7,0x40,0x4A,0xC9,0xB9, + 0x40,0x00,0x00,0x00,0xC9,0x0F,0xDA,0xA2,0x21,0x68,0xC2,0x3A, + /* frem = 0.31415926535897932330, quotient = +3 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x00,0x03,0x00,0x00, + /* fmod = 0.31415926535897932330, quotient = +3 */ + 0x3F,0xFD,0x00,0x00,0xA0,0xD9,0x7B,0xB4,0xE7,0x87,0x01,0xB0, + 0x00,0x03,0x00,0x00, + + /* End of fmodrem test table */ + + /* Start of test program */ + 0x70, 0x00, /* moveq #0, %d0 */ + 0xf2, 0x00, 0x90, 0x00, /* fmovel %d0, %fpcr */ + 0x20, 0x7c, 0x40, 0x80, 0x00, 0x00, /* moveal #0x40800000, %a0 */ + + /* :loop */ + /* Load FP0 */ + 0x22, 0x48, /* moveal %a0, %a1 */ + 0xd2, 0xfc, 0x00, 0x0c, /* addaw #12, %a1 */ + 0x2f, 0x21, /* movel %a1@-, %sp@- */ + 0x2f, 0x21, /* movel %a1@-, %sp@- */ + 0x2f, 0x21, /* movel %a1@-, %sp@- */ + 0xf2, 0x1f, 0x48, 0x00, /* fmovex %sp@+, %fp0 */ + + /* Load FP1 */ + 0x22, 0x48, /* moveal %a0, %a1 */ + 0xd2, 0xfc, 0x00, 0x18, /* addaw #24, %a1 */ + 0x2f, 0x21, /* movel %a1@-, %sp@- */ + 0x2f, 0x21, /* movel %a1@-, %sp@- */ + 0x2f, 0x21, /* movel %a1@-, %sp@- */ + 0xf2, 0x1f, 0x48, 0x80, /* fmovex %sp@+, %fp1 */ + + /* fremx result to FP2 */ + 0xf2, 0x00, 0x88, 0x00, /* fmovel %d0, %fpsr */ + 0xf2, 0x00, 0x05, 0x00, /* fmovex %fp1, %fp2 */ + 0xf2, 0x00, 0x01, 0x25, /* fremx %fp0, %fp2 */ + + /* Compare fremx result with expected: %d6 non-zero if error */ + 0x7c, 0x00, /* moveq #0, %d6 */ + 0x22, 0x48, /* moveal %a0, %a1 */ + 0xd2, 0xfc, 0x00, 0x18, /* addaw #24, %a1 */ + 0xf2, 0x27, 0x69, 0x00, /* fmovex %fp2, %sp@- */ + + /* Bytes 0-3 */ + 0x24, 0x1f, /* movel %sp@+, %d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x01, /* moveq #1, %d6 (error 1) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* Bytes 4-7 */ + 0x24, 0x1f, /* movel %sp@+, %d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x01, /* moveq #1,%d6 (error 1) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* Bytes 8-11 */ + 0x24, 0x1f, /* movel %sp@+, %d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x01, /* moveq #1,%d6 (error 1) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* Compare fremx fpsr with expected: %d6 non-zero if error */ + 0x22, 0x48, /* moveal %a0, %a1 */ + 0xd2, 0xfc, 0x00, 0x24, /* addaw #36, %a1 */ + 0xf2, 0x02, 0xa8, 0x00, /* fmovel %fpsr,%d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x02, /* moveq #2, %d6 (error 2) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* fmodx result to FP3 */ + 0xf2, 0x00, 0x88, 0x00, /* fmovel %d0, %fpsr */ + 0xf2, 0x00, 0x05, 0x80, /* fmovex %fp1, %fp3 */ + 0xf2, 0x00, 0x01, 0xa1, /* fmodx %fp0, %fp3 */ + + /* Compare fremx result with expected: %d6 non-zero if error */ + 0x22, 0x48, /* moveal %a0, %a1 */ + 0xd2, 0xfc, 0x00, 0x28, /* addaw #40, %a1 */ + 0xf2, 0x27, 0x69, 0x80, /* fmovex %fp3, %sp@- */ + + /* Bytes 0-3 */ + 0x24, 0x1f, /* movel %sp@+, %d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x03, /* moveq #1, %d6 (error 3) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* Bytes 4-7 */ + 0x24, 0x1f, /* movel %sp@+, %d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x03, /* moveq #1, %d6 (error 3) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* Bytes 8-11 */ + 0x24, 0x1f, /* movel %sp@+, %d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x03, /* moveq #1, %d6 (error 3) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* Compare fmodx fpsr with expected: %d6 non-zero if error */ + 0x22, 0x48, /* moveal %a0, %a1 */ + 0xd2, 0xfc, 0x00, 0x34, /* addaw #52, %a1 */ + 0xf2, 0x02, 0xa8, 0x00, /* fmovel %fpsr,%d2 */ + 0x22, 0x19, /* movel %a1@+, %d1 */ + + 0xb4, 0x81, /* cmpl %d1, %d2 */ + 0x67, 0x04, /* beqs +0x4 */ + 0x7c, 0x04, /* moveq 42, %d6 (error 4) */ +#if 1 + 0x60, 0xfe, /* bras -2 (loop forever) */ +#else + 0x4e, 0x71, /* nop, carry on */ +#endif + + /* Move to next test */ + 0xd0, 0xfc, 0x00, 0x38, /* addaw #56, %a0 */ + + /* Check to see if we have completed all 100 tests */ + 0x06, 0x47, 0x00, 0x01, /* addiw #1, %d7 */ + 0x0c, 0x87, 0x00, 0x00, 0x00, 0x63, /* cmpil #99, %d7 */ + 0x6f, 0x00, 0xff, 0x32, /* blew :loop */ + + /* Done! */ + 0x60, 0xfe, /* bras -2 (loop forever) */ }; static void q800_init(MachineState *machine) { M68kCPU *cpu = NULL; - int linux_boot; - int32_t kernel_size; - uint64_t elf_entry; - char *filename; - int bios_size; - ram_addr_t initrd_base; - int32_t initrd_size; MemoryRegion *rom; MemoryRegion *io; MemoryRegion *dp8393x_prom = g_new(MemoryRegion, 1); uint8_t *prom; const int io_slice_nb = (IO_SIZE / IO_SLICE) - 1; int i, checksum; - MacFbMode *macfb_mode; ram_addr_t ram_size = machine->ram_size; - const char *kernel_filename = machine->kernel_filename; - const char *initrd_filename = machine->initrd_filename; - const char *kernel_cmdline = machine->kernel_cmdline; - const char *bios_name = machine->firmware ?: MACROM_FILENAME; - hwaddr parameters_base; - CPUState *cs; DeviceState *dev; DeviceState *via1_dev, *via2_dev; DeviceState *escc_orgate; @@ -393,9 +1540,6 @@ static void q800_init(MachineState *machine) NubusBus *nubus; DeviceState *glue; DriveInfo *dinfo; - uint8_t rng_seed[32]; - - linux_boot = (kernel_filename != NULL); if (ram_size > 1 * GiB) { error_report("Too much memory for this machine: %" PRId64 " MiB, " @@ -600,121 +1744,12 @@ static void q800_init(MachineState *machine) } qdev_realize_and_unref(dev, BUS(nubus), &error_fatal); - macfb_mode = (NUBUS_MACFB(dev)->macfb).mode; - cs = CPU(cpu); - if (linux_boot) { - uint64_t high; - void *param_blob, *param_ptr, *param_rng_seed; - - if (kernel_cmdline) { - param_blob = g_malloc(strlen(kernel_cmdline) + 1024); - } else { - param_blob = g_malloc(1024); - } - - kernel_size = load_elf(kernel_filename, NULL, NULL, NULL, - &elf_entry, NULL, &high, NULL, 1, - EM_68K, 0, 0); - if (kernel_size < 0) { - error_report("could not load kernel '%s'", kernel_filename); - exit(1); - } - stl_phys(cs->as, 4, elf_entry); /* reset initial PC */ - parameters_base = (high + 1) & ~1; - param_ptr = param_blob; - - BOOTINFO1(param_ptr, BI_MACHTYPE, MACH_MAC); - BOOTINFO1(param_ptr, BI_FPUTYPE, FPU_68040); - BOOTINFO1(param_ptr, BI_MMUTYPE, MMU_68040); - BOOTINFO1(param_ptr, BI_CPUTYPE, CPU_68040); - BOOTINFO1(param_ptr, BI_MAC_CPUID, CPUB_68040); - BOOTINFO1(param_ptr, BI_MAC_MODEL, MAC_MODEL_Q800); - BOOTINFO1(param_ptr, - BI_MAC_MEMSIZE, ram_size >> 20); /* in MB */ - BOOTINFO2(param_ptr, BI_MEMCHUNK, 0, ram_size); - BOOTINFO1(param_ptr, BI_MAC_VADDR, - VIDEO_BASE + macfb_mode->offset); - BOOTINFO1(param_ptr, BI_MAC_VDEPTH, graphic_depth); - BOOTINFO1(param_ptr, BI_MAC_VDIM, - (graphic_height << 16) | graphic_width); - BOOTINFO1(param_ptr, BI_MAC_VROW, macfb_mode->stride); - BOOTINFO1(param_ptr, BI_MAC_SCCBASE, SCC_BASE); - - rom = g_malloc(sizeof(*rom)); - memory_region_init_ram_ptr(rom, NULL, "m68k_fake_mac.rom", - sizeof(fake_mac_rom), fake_mac_rom); - memory_region_set_readonly(rom, true); - memory_region_add_subregion(get_system_memory(), MACROM_ADDR, rom); - - if (kernel_cmdline) { - BOOTINFOSTR(param_ptr, BI_COMMAND_LINE, - kernel_cmdline); - } - - /* Pass seed to RNG. */ - param_rng_seed = param_ptr; - qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed)); - BOOTINFODATA(param_ptr, BI_RNG_SEED, - rng_seed, sizeof(rng_seed)); - - /* load initrd */ - if (initrd_filename) { - initrd_size = get_image_size(initrd_filename); - if (initrd_size < 0) { - error_report("could not load initial ram disk '%s'", - initrd_filename); - exit(1); - } - - initrd_base = (ram_size - initrd_size) & TARGET_PAGE_MASK; - load_image_targphys(initrd_filename, initrd_base, - ram_size - initrd_base); - BOOTINFO2(param_ptr, BI_RAMDISK, initrd_base, - initrd_size); - } else { - initrd_base = 0; - initrd_size = 0; - } - BOOTINFO0(param_ptr, BI_LAST); - rom_add_blob_fixed_as("bootinfo", param_blob, param_ptr - param_blob, - parameters_base, cs->as); - qemu_register_reset_nosnapshotload(rerandomize_rng_seed, - rom_ptr_for_as(cs->as, parameters_base, - param_ptr - param_blob) + - (param_rng_seed - param_blob)); - g_free(param_blob); - } else { - uint8_t *ptr; - /* allocate and load BIOS */ - rom = g_malloc(sizeof(*rom)); - memory_region_init_rom(rom, NULL, "m68k_mac.rom", MACROM_SIZE, - &error_abort); - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); - memory_region_add_subregion(get_system_memory(), MACROM_ADDR, rom); - - /* Load MacROM binary */ - if (filename) { - bios_size = load_image_targphys(filename, MACROM_ADDR, MACROM_SIZE); - g_free(filename); - } else { - bios_size = -1; - } - - /* Remove qtest_enabled() check once firmware files are in the tree */ - if (!qtest_enabled()) { - if (bios_size <= 0 || bios_size > MACROM_SIZE) { - error_report("could not load MacROM '%s'", bios_name); - exit(1); - } - - ptr = rom_ptr(MACROM_ADDR, bios_size); - assert(ptr != NULL); - stl_phys(cs->as, 0, ldl_p(ptr)); /* reset initial SP */ - stl_phys(cs->as, 4, - MACROM_ADDR + ldl_p(ptr + 4)); /* reset initial PC */ - } - } + rom = g_malloc(sizeof(*rom)); + memory_region_init_ram_ptr(rom, NULL, "m68k_fake_mac.rom", + sizeof(fake_mac_rom), fake_mac_rom); + memory_region_set_readonly(rom, true); + memory_region_add_subregion(get_system_memory(), MACROM_ADDR, rom); } static GlobalProperty hw_compat_q800[] = {