; This file is tricky. Along with the file immediately before it, ; Interrupts.s, it emulates unsupported PowerPC instructions. ; This mechanism is heavily optimized, and the jumping between ; tables (which I have tried to describe as well as I can) is ; very confusing. ; It is called 'FDP' because of a long-ago confusion about what it did. ; Some of the mnemonics might look a bit odd, because I used MPW ; to disassemble instead of ppcdisasm.py or gas. ; The init code puts a pointer to 'FDP' in the part of the KDP that is ; mostly shared with NKv1. Therefore this is probably deep Davidianian ; magic. The tables here contain relative references to other tables ; in Interrupts.s. What a mess. align 11 FDP FDP_panic bl panic FDP_0004 b FDP_024C ; This stuff is for emulating float storage instructions FDP_0008 ; stfs(x) rlwinm r17, r17, 0, 16, 10 FDP_000c ; stfsu(x) crclr cr7_SO b FDP_001C FDP_0014 ; stfd(x), stfiwx rlwinm r17, r17, 0, 16, 10 FDP_0018 ; stfdu(x) crset cr7_SO FDP_001c ; called from above clrrwi r19, r25, 10 rlwimi r19, r17, 14, 24, 28 addi r19, r19, FloatSaveJumpTable - FDP mtlr r19 rlwimi r14, r11, 0, 18, 18 mtmsr r14 isync blr FDP_003c ; Called by the jump table in the previous file ori r11, r11, 0x2000 lwz r20, -0x02E0(r1) lwz r21, -0x02DC(r1) bso cr7, FDP_00E8 extrwi r23, r20, 11, 1 cmpwi r23, 896 insrwi r20, r20, 27, 2 inslwi r20, r21, 3, 29 mr r21, r20 bgt FDP_00E8 cmpwi r23, 874 clrrwi r21, r20, 31 blt FDP_00E8 oris r20, r20, 0x0080 neg r23, r23 clrlwi r20, r20, 8 srw r20, r20, r23 rlwimi r21, r20, 31, 9, 31 b FDP_00E8 FDP_0088 ; stwbrx rlwinm r28, r17, 13, 25, 29 lwbrx r21, r1, r28 b FDP_00E4 FDP_0094 ; sthbrx rlwinm r28, r17, 13, 25, 29 addi r21, r1, 2 lhbrx r21, r21, r28 b FDP_00E4 FDP_00a4 ; sthu(x) rlwinm r28, r17, 13, 25, 29 lwzx r21, r1, r28 b FDP_00E8 FDP_00b0 ; stwcx. rlwinm r28, r17, 13, 25, 29 lwzx r21, r1, r28 FDP_00b8 ; lwarx crset cr5_SO b FDP_00E4 FDP_00c0 ; lbzu(x), stbu(x), lhau(x), stmw clrrwi r18, r18, 4 rlwimi r15, r11, 0, 6, 6 b FDP_00E4 FDP_00cc ; lwzu(x) clrrwi r18, r18, 1 b FDP_00E4 FDP_00d4 ; lbz(x) clrrwi r18, r18, 2 b FDP_00E4 FDP_00dc ; ecowx, sth(x) rlwinm r28, r17, 13, 25, 29 lwzx r21, r1, r28 FDP_00e4 ; eciwx, lwz(x), lbz(x), lhz(x), lha(x), lfs(x), lfd(x) rlwinm r17, r17, 0, 16, 10 FDP_00e8 ; lwbrx, lhbrx, lmw, lhzu(x), lhfsu(x), lfdu(x) extrwi. r22, r17, 5, 26 add r19, r18, r22 b FDP_03AC FDP_00f4 srwi r23, r21, 16 sth r23, -0x0004(r19) subi r17, r17, 4 sth r21, -0x0002(r19) b FDP_011C FDP_0108 lhz r23, -0x0004(r19) subi r17, r17, 4 insrwi r21, r23, 16, 0 FDP_0114 lhz r23, -0x0002(r19) insrwi r21, r23, 16, 16 FDP_011c ; exported, r25 = address of routine in MixedTable li r0, -3 sc bl major_0x03548 rlwinm. r28, r17, 18, 25, 29 mtlr r25 mfsprg r1, 0 cror cr0_EQ, cr0_EQ, cr3_EQ mtsprg 3, r24 beqlr crset cr3_SO stwx r18, r1, r28 blr FDP_014C extsh r21, r21 FDP_0150 rlwinm r28, r17, 13, 25, 29 crset cr3_SO stwx r21, r1, r28 FDP_015C b FDP_0dA0 FDP_0160 slwi r21, r21, 16 FDP_0164 rlwinm r28, r17, 13, 25, 29 crset cr3_SO stwbrx r21, r1, r28 b FDP_0dA0 FDP_0174 b FDP_0fA8 FDP_0178 clrrwi r23, r25, 10 rlwimi r23, r17, 14, 24, 28 addi r23, r23, FloatLoadJumpTable - FDP mtlr r23 stw r20, -0x02E0(r1) stw r21, -0x02DC(r1) rlwimi r14, r11, 0, 18, 18 mtmsr r14 isync ori r11, r11, 0x2000 blr FDP_01a4 rlwinm. r28, r17, 13, 25, 29 rlwinm r23, r17, 18, 25, 29 cmpw cr7, r28, r23 addis r17, r17, 32 beq FDP_01BC beq cr7, FDP_01C0 FDP_01bc stwx r21, r1, r28 FDP_01c0 cmpwi r28, 124 li r22, 9 insrwi r17, r22, 6, 26 addi r19, r19, 4 bne FDP_03AC b FDP_0dA0 FDP_01d8 addis r17, r17, 32 rlwinm. r28, r17, 13, 25, 29 beq FDP_0dA0 lwzx r21, r1, r28 li r22, 8 insrwi r17, r22, 6, 26 addi r19, r19, 4 b FDP_03AC FDP_01f8 ; dcbz lwz r21, -0x0004(r1) lhz r21, 0x0F4A(r21) neg r21, r21 and r19, r18, r21 b FDP_0224 FDP_020c lwz r21, -0x0004(r1) lhz r21, 0x0F4A(r21) subi r21, r21, 8 and. r22, r19, r21 clrrwi r19, r19, 3 beq FDP_0dA0 FDP_0224 li r22, 16 insrwi. r17, r22, 6, 26 addi r19, r19, 8 li r20, 0 li r21, 0 b FDP_03AC FDP_023c rlwinm r16, r16, 0, 28, 25 subi r10, r10, 4 stw r16, -0x0010(r1) b FDP_0dA0 FDP_024c li r8, 18 b ExceptionMemRetried FDP_0254 ; stswi subi r22, r27, 2048 extrwi r22, r22, 5, 16 b FDP_0270 FDP_0260 ; stswx mfxer r22 andi. r22, r22, 0x007F subi r22, r22, 1 beq FDP_0dA0 FDP_0270 rlwimi r17, r22, 4, 21, 25 not r22, r22 insrwi r17, r22, 2, 4 mr r19, r18 b FDP_0e60 FDP_0284 andi. r22, r17, 0x07C0 addis r28, r17, 32 rlwimi r17, r28, 0, 6, 10 subi r17, r17, 64 bne FDP_0e60 b FDP_0dA0 FDP_029c ; lswi subi r22, r27, 2048 extrwi r22, r22, 5, 16 addis r28, r27, 992 rlwimi r17, r28, 22, 16, 20 b FDP_02C4 FDP_02b0 ; lswx mfxer r22 andi. r22, r22, 0x007F rlwimi r17, r27, 0, 16, 20 subi r22, r22, 1 beq FDP_0dA0 FDP_02c4 andis. r23, r17, 0x001F rlwimi r17, r22, 4, 21, 25 not r22, r22 insrwi r17, r22, 2, 4 mr r19, r18 bne FDP_0eC8 rlwimi r17, r17, 5, 11, 15 b FDP_0eC8 FDP_02e4 andi. r22, r17, 0x07C0 rlwinm r28, r17, 13, 25, 29 bne FDP_0e9C rlwinm r22, r17, 9, 27, 28 slw r21, r21, r22 b FDP_0e9C FDP_02fc rlwinm. r22, r17, 28, 25, 29 rlwinm r28, r17, 13, 25, 29 bne FDP_0eF4 rlwinm r23, r17, 9, 27, 28 slw r21, r21, r23 b FDP_0eF4 FDP_0314 ; unknown table entries mfxer r22 FDP_0318 andi. r22, r22, 0x007F rlwimi r17, r27, 0, 16, 20 insrwi r17, r27, 1, 3 cmpw cr7, r27, r22 beq FDP_0f80 subi r22, r22, 1 andis. r23, r17, 0x001F rlwimi r17, r22, 4, 21, 25 not r22, r22 insrwi r17, r22, 2, 4 mr r19, r18 bne FDP_0eC8 rlwimi r17, r17, 5, 11, 15 b FDP_0eC8 FDP_0350 ; stw(x) li r20, 11040 b FDP_1024 FDP_0358 ; stwu(x) clrrwi r18, r18, 1 li r20, 11296 b FDP_1024 FDP_0364 ; stb(x) clrrwi r18, r18, 2 li r20, 11552 b FDP_1024 FDP_0370 subi r23, r1, 736 li r20, 10016 insrwi r23, r18, 4, 28 stb r21, 0x0000(r23) b FDP_1000 FDP_0384 subi r23, r1, 736 li r20, 10272 insrwi r23, r18, 4, 28 sth r21, 0x0000(r23) b FDP_1000 FDP_0398 subi r23, r1, 736 li r20, 10528 insrwi r23, r18, 4, 28 stw r21, 0x0000(r23) b FDP_1000 FDP_03ac lwz r1, -0x0004(r1) clrrwi r25, r25, 10 insrwi r25, r19, 3, 28 insrwi r25, r17, 5, 23 lha r22, 0x0C00(r25) addi r23, r1, 1248 add r22, r22, r25 mfsprg r1, 0 mtlr r22 ori r15, r15, 0x4000 mtsprg 3, r23 mtmsr r15 isync insrwi r25, r26, 8, 22 bnelr b FDP_011C FDP_03ec lbz r23, -0x0008(r19) subi r17, r17, 2 insrwi r20, r23, 8, 0 FDP_03f8 lhz r23, -0x0007(r19) subi r17, r17, 4 insrwi r20, r23, 16, 8 b FDP_0414 FDP_0408 lbz r23, -0x0006(r19) subi r17, r17, 2 insrwi r20, r23, 8, 16 FDP_0414 lwz r23, -0x0005(r19) subi r17, r17, 8 inslwi r20, r23, 8, 24 insrwi r21, r23, 24, 0 b FDP_0490 FDP_0428 lbz r23, -0x0008(r19) subi r17, r17, 2 insrwi r20, r23, 8, 0 FDP_0434 lwz r23, -0x0007(r19) subi r17, r17, 8 inslwi r20, r23, 24, 8 insrwi r21, r23, 8, 0 b FDP_0474 FDP_0448 lbz r23, -0x0006(r19) subi r17, r17, 2 insrwi r20, r23, 8, 16 FDP_0454 lhz r23, -0x0005(r19) subi r17, r17, 4 rlwimi r20, r23, 24, 24, 31 insrwi r21, r23, 8, 0 b FDP_0474 FDP_0468 lbz r23, -0x0004(r19) subi r17, r17, 2 insrwi r21, r23, 8, 0 FDP_0474 lhz r23, -0x0003(r19) subi r17, r17, 4 insrwi r21, r23, 16, 8 b FDP_0490 FDP_0484 lbz r23, -0x0002(r19) subi r17, r17, 2 insrwi r21, r23, 8, 16 FDP_0490 lbz r23, -0x0001(r19) insrwi r21, r23, 8, 24 b FDP_011C FDP_049c lhz r23, -0x0008(r19) subi r17, r17, 4 insrwi r20, r23, 16, 0 b FDP_04B8 FDP_04ac lbz r23, -0x0007(r19) subi r17, r17, 2 insrwi r20, r23, 8, 8 FDP_04b8 lwz r23, -0x0006(r19) subi r17, r17, 8 inslwi r20, r23, 16, 16 insrwi r21, r23, 16, 0 b FDP_0114 FDP_04cc lbz r23, -0x0005(r19) subi r17, r17, 2 insrwi r20, r23, 8, 24 b FDP_0108 FDP_04dc lbz r23, -0x0003(r19) subi r17, r17, 2 insrwi r21, r23, 8, 8 b FDP_0114 FDP_04ec lwz r20, -0x0008(r19) subi r17, r17, 8 lwz r21, -0x0004(r19) b FDP_011C FDP_04fc lbz r23, -0x0007(r19) subi r17, r17, 2 insrwi r20, r23, 8, 8 FDP_0508 lhz r23, -0x0006(r19) subi r17, r17, 4 insrwi r20, r23, 16, 16 lwz r21, -0x0004(r19) b FDP_011C FDP_051c lbz r23, -0x0005(r19) subi r17, r17, 2 insrwi r20, r23, 8, 24 lwz r21, -0x0004(r19) b FDP_011C FDP_0530 bso cr5, FDP_053C lwz r21, -0x0004(r19) b FDP_011C FDP_053c li r23, -4 lwarx r21, r23, r19 b FDP_011C FDP_0548 lwz r20, -0x0008(r19) lwz r21, -0x0004(r19) b FDP_011C FDP_0554 clrrwi r23, r25, 10 rlwimi r23, r17, 14, 24, 28 addi r23, r23, 9760 mtlr r23 mr r23, r18 oris r11, r11, 0x0200 blr FDP_0570 srwi r23, r20, 24 stb r23, -0x0008(r19) subi r17, r17, 2 FDP_057c srwi r23, r20, 8 sth r23, -0x0007(r19) subi r17, r17, 4 b FDP_0598 FDP_058c srwi r23, r20, 8 stb r23, -0x0006(r19) subi r17, r17, 2 FDP_0598 srwi r23, r21, 8 insrwi r23, r20, 8, 0 stw r23, -0x0005(r19) subi r17, r17, 8 stb r21, -0x0001(r19) b FDP_011C FDP_05b0 srwi r23, r20, 24 stb r23, -0x0008(r19) subi r17, r17, 2 FDP_05bc srwi r23, r21, 24 insrwi r23, r20, 24, 0 stw r23, -0x0007(r19) subi r17, r17, 8 b FDP_05FC FDP_05d0 srwi r23, r20, 8 stb r23, -0x0006(r19) subi r17, r17, 2 FDP_05dc srwi r23, r21, 24 insrwi r23, r20, 8, 16 sth r23, -0x0005(r19) subi r17, r17, 4 b FDP_05FC FDP_05f0 srwi r23, r21, 24 stb r23, -0x0004(r19) subi r17, r17, 2 FDP_05fc srwi r23, r21, 8 sth r23, -0x0003(r19) subi r17, r17, 4 stb r21, -0x0001(r19) b FDP_011C FDP_0610 srwi r23, r21, 8 stb r23, -0x0002(r19) subi r17, r17, 2 FDP_061c stb r21, -0x0001(r19) b FDP_011C FDP_0624 srwi r23, r20, 16 sth r23, -0x0008(r19) subi r17, r17, 4 b FDP_0640 FDP_0634 srwi r23, r20, 16 stb r23, -0x0007(r19) subi r17, r17, 2 FDP_0640 srwi r23, r21, 16 insrwi r23, r20, 16, 0 stw r23, -0x0006(r19) subi r17, r17, 8 sth r21, -0x0002(r19) b FDP_011C FDP_0658 stb r20, -0x0005(r19) subi r17, r17, 2 b FDP_00F4 FDP_0664 srwi r23, r21, 16 stb r23, -0x0003(r19) subi r17, r17, 2 FDP_0670 sth r21, -0x0002(r19) b FDP_011C FDP_0678 stw r20, -0x0008(r19) subi r17, r17, 8 stw r21, -0x0004(r19) b FDP_011C FDP_0688 srwi r23, r20, 16 stb r23, -0x0007(r19) subi r17, r17, 2 FDP_0694 sth r20, -0x0006(r19) subi r17, r17, 4 stw r21, -0x0004(r19) b FDP_011C FDP_06a4 stb r20, -0x0005(r19) subi r17, r17, 2 stw r21, -0x0004(r19) b FDP_011C FDP_06b4 bso cr5, FDP_06C0 stw r21, -0x0004(r19) b FDP_011C FDP_06c0 li r23, -4 stwcx. r21, r23, r19 isync mfcr r23 rlwimi r13, r23, 0, 0, 3 b FDP_011C FDP_06d8 stw r20, -0x0008(r19) stw r21, -0x0004(r19) b FDP_011C FDP_06e4 clrrwi r23, r25, 10 rlwimi r23, r17, 14, 24, 28 addi r23, r23, 10784 mtlr r23 mr r23, r18 oris r11, r11, 0x0200 blr ; major_0x05f00 ; Which to use? Probably align. align 9 ; org FDP + 0x800 macro MisalignmentOpcodeTableEntry &hihalf, &primaryfunc, &secondaryfunc dc.w &hihalf dc.b (&primaryfunc - FDP) >> 2 dc.b (&secondaryfunc - FDP) >> 2 endm macro MisalignmentOpcodeTableMacro &FirstTable ; X-form extended opcodes: 0 4 8 12 16 20 24 28 ; lwarx MisalignmentOpcodeTableEntry 0x2540, FDP_00b8, FDP_0150 ; X-form extended opcodes: 64 68 72 76 80 84 88 92 MisalignmentOpcodeTableEntry 0x4550, FDP_panic, FDP_0004 ; X-form extended opcodes: 128 132 136 140 144 148 152 156 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 192 196 200 204 208 212 216 220 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 256 260 264 268 272 276 280 284 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 320 324 328 332 336 340 344 348 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 384 388 392 396 400 404 408 412 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 448 452 456 460 464 468 472 476 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 512 516 520 524 528 532 536 540 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 576 580 584 588 592 596 600 604 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 640 644 648 652 656 660 664 668 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 704 708 712 716 720 724 728 732 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 768 772 776 780 784 788 792 796 MisalignmentOpcodeTableEntry 0x4430, FDP_00e4, FDP_0150 ; X-form extended opcodes: 832 836 840 844 848 852 856 860 MisalignmentOpcodeTableEntry 0x2460, FDP_00e4, FDP_0150 ; X-form extended opcodes: 896 900 904 908 912 916 920 924 MisalignmentOpcodeTableEntry 0x4130, FDP_00dc, FDP_015C ; X-form extended opcodes: 960 964 968 972 976 980 984 988 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 32 36 40 44 48 52 56 60 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 96 100 104 108 112 116 120 124 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 160 164 168 172 176 180 184 188 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 224 228 232 236 240 244 248 252 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 288 292 296 300 304 308 312 316 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 352 356 360 364 368 372 376 380 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 416 420 424 428 432 436 440 444 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 480 484 488 492 496 500 504 508 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 544 548 552 556 560 564 568 572 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 608 612 616 620 624 628 632 636 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 672 676 680 684 688 692 696 700 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 736 740 744 748 752 756 760 764 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 800 804 808 812 816 820 824 828 MisalignmentOpcodeTableEntry 0x4430, FDP_00e8, FDP_0150 ; X-form extended opcodes: 864 868 872 876 880 884 888 892 MisalignmentOpcodeTableEntry 0x45b3, FDP_panic, FDP_0004 ; X-form extended opcodes: 928 932 936 940 944 948 952 956 MisalignmentOpcodeTableEntry 0x4130, FDP_00a4, FDP_015C ; X-form extended opcodes: 992 996 1000 1004 1008 1012 1016 1020 MisalignmentOpcodeTableEntry 0x41f2, FDP_panic, FDP_0004 ; X-form extended opcodes: 1 5 9 13 17 21 25 29 MisalignmentOpcodeTableEntry 0x4430, FDP_00e4, FDP_0150 ; X-form extended opcodes: 65 69 73 77 81 85 89 93 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 129 133 137 141 145 149 153 157 MisalignmentOpcodeTableEntry 0x4130, FDP_00dc, FDP_015C ; X-form extended opcodes: 193 197 201 205 209 213 217 221 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 257 261 265 269 273 277 281 285 MisalignmentOpcodeTableEntry 0x268b, FDP_0314, FDP_02FC ; X-form extended opcodes: 321 325 329 333 337 341 345 349 MisalignmentOpcodeTableEntry 0x2460, FDP_00e4, FDP_0150 ; X-form extended opcodes: 385 389 393 397 401 405 409 413 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 449 453 457 461 465 469 473 477 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; lswx ; X-form extended opcodes: 513 517 521 525 529 533 537 541 MisalignmentOpcodeTableEntry 0x260b, FDP_02b0, FDP_02E4 ; lswi ; X-form extended opcodes: 577 581 585 589 593 597 601 605 MisalignmentOpcodeTableEntry 0x260f, FDP_029c, FDP_02E4 ; stswx ; X-form extended opcodes: 641 645 649 653 657 661 665 669 MisalignmentOpcodeTableEntry 0x2242, FDP_0260, FDP_0284 ; stswi ; X-form extended opcodes: 705 709 713 717 721 725 729 733 MisalignmentOpcodeTableEntry 0x224e, FDP_0254, FDP_0284 ; X-form extended opcodes: 769 773 777 781 785 789 793 797 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 833 837 841 845 849 853 857 861 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 897 901 905 909 913 917 921 925 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 961 965 969 973 977 981 985 989 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 33 37 41 45 49 53 57 61 MisalignmentOpcodeTableEntry 0x4430, FDP_00e8, FDP_0150 ; X-form extended opcodes: 97 101 105 109 113 117 121 125 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 161 165 169 173 177 181 185 189 MisalignmentOpcodeTableEntry 0x4130, FDP_00a4, FDP_015C ; X-form extended opcodes: 225 229 233 237 241 245 249 253 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 289 293 297 301 305 309 313 317 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 353 357 361 365 369 373 377 381 MisalignmentOpcodeTableEntry 0x2460, FDP_00e8, FDP_015C ; X-form extended opcodes: 417 421 425 429 433 437 441 445 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 481 485 489 493 497 501 505 509 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 545 549 553 557 561 565 569 573 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 609 613 617 621 625 629 633 637 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 673 677 681 685 689 693 697 701 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 737 741 745 749 753 757 761 765 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 801 805 809 813 817 821 825 829 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 865 869 873 877 881 885 889 893 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 929 933 937 941 945 949 953 957 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 993 997 1001 1005 1009 1013 1017 1021 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 2 6 10 14 18 22 26 30 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 66 70 74 78 82 86 90 94 MisalignmentOpcodeTableEntry 0x0fe2, FDP_00e8, FDP_023C ; X-form extended opcodes: 130 134 138 142 146 150 154 158 ; stwcx. MisalignmentOpcodeTableEntry 0x2160, FDP_00b0, FDP_015C ; X-form extended opcodes: 194 198 202 206 210 214 218 222 MisalignmentOpcodeTableEntry 0x4170, FDP_panic, FDP_0004 ; X-form extended opcodes: 258 262 266 270 274 278 282 286 MisalignmentOpcodeTableEntry 0x0fe2, FDP_00e8, FDP_023C ; X-form extended opcodes: 322 326 330 334 338 342 346 350 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 386 390 394 398 402 406 410 414 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 450 454 458 462 466 470 474 478 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; lwbrx ; X-form extended opcodes: 514 518 522 526 530 534 538 542 MisalignmentOpcodeTableEntry 0x24a2, FDP_00e8, FDP_0164 ; X-form extended opcodes: 578 582 586 590 594 598 602 606 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; stwbrx ; X-form extended opcodes: 642 646 650 654 658 662 666 670 MisalignmentOpcodeTableEntry 0x2120, FDP_0088, FDP_015C ; X-form extended opcodes: 706 710 714 718 722 726 730 734 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; lhbrx ; X-form extended opcodes: 770 774 778 782 786 790 794 798 MisalignmentOpcodeTableEntry 0x1492, FDP_00e8, FDP_0160 ; X-form extended opcodes: 834 838 842 846 850 854 858 862 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; sthbrx ; X-form extended opcodes: 898 902 906 910 914 918 922 926 MisalignmentOpcodeTableEntry 0x1110, FDP_0094, FDP_015C ; X-form extended opcodes: 962 966 970 974 978 982 986 990 MisalignmentOpcodeTableEntry 0x0fe2, FDP_00e8, FDP_023C ; X-form extended opcodes: 34 38 42 46 50 54 58 62 if &FirstTable MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 else MisalignmentOpcodeTableEntry 0x0fe2, FDP_00e8, FDP_023C endif ; X-form extended opcodes: 98 102 106 110 114 118 122 126 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 162 166 170 174 178 182 186 190 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 226 230 234 238 242 246 250 254 MisalignmentOpcodeTableEntry 0x0fe2, FDP_00e8, FDP_023C ; eciwx ; X-form extended opcodes: 290 294 298 302 306 310 314 318 MisalignmentOpcodeTableEntry 0x07f0, FDP_00e4, FDP_024C ; X-form extended opcodes: 354 358 362 366 370 374 378 382 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; ecowx ; X-form extended opcodes: 418 422 426 430 434 438 442 446 MisalignmentOpcodeTableEntry 0x03f0, FDP_00dc, FDP_024C ; X-form extended opcodes: 482 486 490 494 498 502 506 510 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 546 550 554 558 562 566 570 574 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 610 614 618 622 626 630 634 638 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 674 678 682 686 690 694 698 702 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 738 742 746 750 754 758 762 766 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 802 806 810 814 818 822 826 830 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 866 870 874 878 882 886 890 894 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 930 934 938 942 946 950 954 958 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; dcbz ; X-form extended opcodes: 994 998 1002 1006 1010 1014 1018 1022 MisalignmentOpcodeTableEntry 0x4302, FDP_01f8, FDP_020C ; lwzx ; X-form extended opcodes: 3 7 11 15 19 23 27 31 ; D-form opcodes: 0 32 ; lwz if &FirstTable MisalignmentOpcodeTableEntry 0x0f50, FDP_00e4, FDP_0370 else MisalignmentOpcodeTableEntry 0x2420, FDP_00e4, FDP_0150 endif ; lbzx ; X-form extended opcodes: 67 71 75 79 83 87 91 95 ; D-form opcodes: 2 34 ; lbz if &FirstTable MisalignmentOpcodeTableEntry 0x2770, FDP_00d4, FDP_0398 else MisalignmentOpcodeTableEntry 0x0c00, FDP_00e4, FDP_0150 endif ; stwx ; X-form extended opcodes: 131 135 139 143 147 151 155 159 ; D-form opcodes: 4 36 ; stw if &FirstTable MisalignmentOpcodeTableEntry 0x0b90, FDP_0350, FDP_015C else MisalignmentOpcodeTableEntry 0x2120, FDP_00dc, FDP_015C endif ; stbx ; X-form extended opcodes: 195 199 203 207 211 215 219 223 ; D-form opcodes: 6 38 ; stb if &FirstTable MisalignmentOpcodeTableEntry 0x23b0, FDP_0364, FDP_015C else MisalignmentOpcodeTableEntry 0x0900, FDP_00dc, FDP_015C endif ; lhzx ; X-form extended opcodes: 259 263 267 271 275 279 283 287 ; D-form opcodes: 8 40 ; lhz MisalignmentOpcodeTableEntry 0x1410, FDP_00e4, FDP_0150 ; lhax ; X-form extended opcodes: 323 327 331 335 339 343 347 351 ; D-form opcodes: 10 42 ; lha MisalignmentOpcodeTableEntry 0x1450, FDP_00e4, FDP_014C ; sthx ; X-form extended opcodes: 387 391 395 399 403 407 411 415 ; D-form opcodes: 12 44 ; sth MisalignmentOpcodeTableEntry 0x1110, FDP_00dc, FDP_015C ; X-form extended opcodes: 451 455 459 463 467 471 475 479 ; D-form opcodes: 14 46 ; lmw MisalignmentOpcodeTableEntry 0x25a3, FDP_00e8, FDP_01A4 ; lfsx ; X-form extended opcodes: 515 519 523 527 531 535 539 543 ; D-form opcodes: 16 48 ; lfs MisalignmentOpcodeTableEntry 0x24e0, FDP_00e4, FDP_0174 ; lfdx ; X-form extended opcodes: 579 583 587 591 595 599 603 607 ; D-form opcodes: 18 50 ; lfd MisalignmentOpcodeTableEntry 0x44f0, FDP_00e4, FDP_0178 ; stfsx ; X-form extended opcodes: 643 647 651 655 659 663 667 671 ; D-form opcodes: 20 52 ; stfs MisalignmentOpcodeTableEntry 0x2120, FDP_0008, FDP_015C ; stfdx ; X-form extended opcodes: 707 711 715 719 723 727 731 735 ; D-form opcodes: 22 54 ; stfd MisalignmentOpcodeTableEntry 0x4130, FDP_0014, FDP_015C ; X-form extended opcodes: 771 775 779 783 787 791 795 799 ; D-form opcodes: 24 56 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 835 839 843 847 851 855 859 863 ; D-form opcodes: 26 58 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 899 903 907 911 915 919 923 927 ; D-form opcodes: 28 60 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; stfiwx ; X-form extended opcodes: 963 967 971 975 979 983 987 991 ; D-form opcodes: 30 62 MisalignmentOpcodeTableEntry 0x2120, FDP_0014, FDP_015C ; lwzux ; X-form extended opcodes: 35 39 43 47 51 55 59 63 ; D-form opcodes: 1 33 ; lwzu if &FirstTable MisalignmentOpcodeTableEntry 0x1760, FDP_00cc, FDP_0384 else MisalignmentOpcodeTableEntry 0x2420, FDP_00e8, FDP_0150 endif ; lbzux ; X-form extended opcodes: 99 103 107 111 115 119 123 127 ; D-form opcodes: 3 35 ; lbzu if &FirstTable MisalignmentOpcodeTableEntry 0x8740, FDP_00c0, FDP_015C else MisalignmentOpcodeTableEntry 0x0c00, FDP_00e8, FDP_0150 endif ; stwux ; X-form extended opcodes: 163 167 171 175 179 183 187 191 ; D-form opcodes: 5 37 ; stwu if &FirstTable MisalignmentOpcodeTableEntry 0x23a0, FDP_0358, FDP_015C else MisalignmentOpcodeTableEntry 0x2120, FDP_00a4, FDP_015C endif ; stbux ; X-form extended opcodes: 227 231 235 239 243 247 251 255 ; D-form opcodes: 7 39 ; stbu if &FirstTable MisalignmentOpcodeTableEntry 0x8380, FDP_00c0, FDP_015C else MisalignmentOpcodeTableEntry 0x0900, FDP_00a4, FDP_015C endif ; lhzux ; X-form extended opcodes: 291 295 299 303 307 311 315 319 ; D-form opcodes: 9 41 ; lhzu MisalignmentOpcodeTableEntry 0x1410, FDP_00e8, FDP_0150 ; lhaux ; X-form extended opcodes: 355 359 363 367 371 375 379 383 ; D-form opcodes: 11 43 ; lhau if &FirstTable MisalignmentOpcodeTableEntry 0x8740, FDP_00c0, FDP_015C else MisalignmentOpcodeTableEntry 0x1450, FDP_00e8, FDP_014C endif ; sthux ; X-form extended opcodes: 419 423 427 431 435 439 443 447 ; D-form opcodes: 13 45 ; sthu MisalignmentOpcodeTableEntry 0x1110, FDP_00a4, FDP_015C ; X-form extended opcodes: 483 487 491 495 499 503 507 511 ; D-form opcodes: 15 47 ; stmw if &FirstTable MisalignmentOpcodeTableEntry 0x8380, FDP_00c0, FDP_015C else MisalignmentOpcodeTableEntry 0x21e2, FDP_00a4, FDP_01D8 endif ; lfsux ; X-form extended opcodes: 547 551 555 559 563 567 571 575 ; D-form opcodes: 17 49 ; lfsu MisalignmentOpcodeTableEntry 0x24e0, FDP_00e8, FDP_0174 ; lfdux ; X-form extended opcodes: 611 615 619 623 627 631 635 639 ; D-form opcodes: 19 51 ; lfdu MisalignmentOpcodeTableEntry 0x44f0, FDP_00e8, FDP_0178 ; stfsux ; X-form extended opcodes: 675 679 683 687 691 695 699 703 ; D-form opcodes: 21 53 ; stfsu MisalignmentOpcodeTableEntry 0x2120, FDP_000c, FDP_015C ; stfdux ; X-form extended opcodes: 739 743 747 751 755 759 763 767 ; D-form opcodes: 23 55 ; stfdu MisalignmentOpcodeTableEntry 0x4130, FDP_0018, FDP_015C ; X-form extended opcodes: 803 807 811 815 819 823 827 831 ; D-form opcodes: 25 57 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 867 871 875 879 883 887 891 895 ; D-form opcodes: 27 59 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 931 935 939 943 947 951 955 959 ; D-form opcodes: 29 61 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 ; X-form extended opcodes: 995 999 1003 1007 1011 1015 1019 1023 ; D-form opcodes: 31 63 MisalignmentOpcodeTableEntry 0x07f0, FDP_panic, FDP_0004 endm MisalignmentOpcodeTableMacro 1 MisalignmentOpcodeTableMacro 0 macro HalfWordTableEntry &n, &target @flashback org HalfWordTable + 2*&n dc.w &target - FDP - 2*&n org @flashback endm HalfWordTable ; FDP + 0xc00 dcb.w 144, 0xcafe;(FDP_panic - FDP) - (* - HalfWordTable) HalfWordTableEntry 0, FDP_06e4 HalfWordTableEntry 1, FDP_06e4 HalfWordTableEntry 2, FDP_06e4 HalfWordTableEntry 3, FDP_06e4 HalfWordTableEntry 4, FDP_06e4 HalfWordTableEntry 5, FDP_06e4 HalfWordTableEntry 6, FDP_06e4 HalfWordTableEntry 7, FDP_06e4 HalfWordTableEntry 8, FDP_0554 HalfWordTableEntry 9, FDP_0554 HalfWordTableEntry 10, FDP_0554 HalfWordTableEntry 11, FDP_0554 HalfWordTableEntry 12, FDP_0554 HalfWordTableEntry 13, FDP_0554 HalfWordTableEntry 14, FDP_0554 HalfWordTableEntry 15, FDP_0554 HalfWordTableEntry 16, FDP_061c HalfWordTableEntry 17, FDP_061c HalfWordTableEntry 18, FDP_061c HalfWordTableEntry 19, FDP_061c HalfWordTableEntry 20, FDP_061c HalfWordTableEntry 21, FDP_061c HalfWordTableEntry 22, FDP_061c HalfWordTableEntry 23, FDP_061c HalfWordTableEntry 24, FDP_0490 HalfWordTableEntry 25, FDP_0490 HalfWordTableEntry 26, FDP_0490 HalfWordTableEntry 27, FDP_0490 HalfWordTableEntry 28, FDP_0490 HalfWordTableEntry 29, FDP_0490 HalfWordTableEntry 30, FDP_0490 HalfWordTableEntry 31, FDP_0490 HalfWordTableEntry 32, FDP_0670 HalfWordTableEntry 33, FDP_0610 HalfWordTableEntry 34, FDP_0670 HalfWordTableEntry 35, FDP_0610 HalfWordTableEntry 36, FDP_0670 HalfWordTableEntry 37, FDP_0610 HalfWordTableEntry 38, FDP_0670 HalfWordTableEntry 39, FDP_0610 HalfWordTableEntry 40, FDP_0114 HalfWordTableEntry 41, FDP_0484 HalfWordTableEntry 42, FDP_0114 HalfWordTableEntry 43, FDP_0484 HalfWordTableEntry 44, FDP_0114 HalfWordTableEntry 45, FDP_0484 HalfWordTableEntry 46, FDP_0114 HalfWordTableEntry 47, FDP_0484 HalfWordTableEntry 48, FDP_0664 HalfWordTableEntry 49, FDP_05fc HalfWordTableEntry 50, FDP_0664 HalfWordTableEntry 51, FDP_05fc HalfWordTableEntry 52, FDP_0664 HalfWordTableEntry 53, FDP_05fc HalfWordTableEntry 54, FDP_0664 HalfWordTableEntry 55, FDP_05fc HalfWordTableEntry 56, FDP_04dc HalfWordTableEntry 57, FDP_0474 HalfWordTableEntry 58, FDP_04dc HalfWordTableEntry 59, FDP_0474 HalfWordTableEntry 60, FDP_04dc HalfWordTableEntry 61, FDP_0474 HalfWordTableEntry 62, FDP_04dc HalfWordTableEntry 63, FDP_0474 HalfWordTableEntry 64, FDP_06b4 HalfWordTableEntry 65, FDP_05f0 HalfWordTableEntry 66, FDP_00f4 HalfWordTableEntry 67, FDP_05f0 HalfWordTableEntry 68, FDP_06b4 HalfWordTableEntry 69, FDP_05f0 HalfWordTableEntry 70, FDP_00f4 HalfWordTableEntry 71, FDP_05f0 HalfWordTableEntry 72, FDP_0530 HalfWordTableEntry 73, FDP_0468 HalfWordTableEntry 74, FDP_0108 HalfWordTableEntry 75, FDP_0468 HalfWordTableEntry 76, FDP_0530 HalfWordTableEntry 77, FDP_0468 HalfWordTableEntry 78, FDP_0108 HalfWordTableEntry 79, FDP_0468 HalfWordTableEntry 80, FDP_06a4 HalfWordTableEntry 81, FDP_0598 HalfWordTableEntry 82, FDP_0658 HalfWordTableEntry 83, FDP_05dc HalfWordTableEntry 84, FDP_06a4 HalfWordTableEntry 85, FDP_0598 HalfWordTableEntry 86, FDP_0658 HalfWordTableEntry 87, FDP_05dc HalfWordTableEntry 88, FDP_051c HalfWordTableEntry 89, FDP_0414 HalfWordTableEntry 90, FDP_04cc HalfWordTableEntry 91, FDP_0454 HalfWordTableEntry 92, FDP_051c HalfWordTableEntry 93, FDP_0414 HalfWordTableEntry 94, FDP_04cc HalfWordTableEntry 95, FDP_0454 HalfWordTableEntry 96, FDP_0694 HalfWordTableEntry 97, FDP_058c HalfWordTableEntry 98, FDP_0640 HalfWordTableEntry 99, FDP_05d0 HalfWordTableEntry 100, FDP_0694 HalfWordTableEntry 101, FDP_058c HalfWordTableEntry 102, FDP_0640 HalfWordTableEntry 103, FDP_05d0 HalfWordTableEntry 104, FDP_0508 HalfWordTableEntry 105, FDP_0408 HalfWordTableEntry 106, FDP_04b8 HalfWordTableEntry 107, FDP_0448 HalfWordTableEntry 108, FDP_0508 HalfWordTableEntry 109, FDP_0408 HalfWordTableEntry 110, FDP_04b8 HalfWordTableEntry 111, FDP_0448 HalfWordTableEntry 112, FDP_0688 HalfWordTableEntry 113, FDP_057c HalfWordTableEntry 114, FDP_0634 HalfWordTableEntry 115, FDP_05bc HalfWordTableEntry 116, FDP_0688 HalfWordTableEntry 117, FDP_057c HalfWordTableEntry 118, FDP_0634 HalfWordTableEntry 119, FDP_05bc HalfWordTableEntry 120, FDP_04fc HalfWordTableEntry 121, FDP_03f8 HalfWordTableEntry 122, FDP_04ac HalfWordTableEntry 123, FDP_0434 HalfWordTableEntry 124, FDP_04fc HalfWordTableEntry 125, FDP_03f8 HalfWordTableEntry 126, FDP_04ac HalfWordTableEntry 127, FDP_0434 HalfWordTableEntry 128, FDP_06d8 HalfWordTableEntry 129, FDP_0570 HalfWordTableEntry 130, FDP_0624 HalfWordTableEntry 131, FDP_05b0 HalfWordTableEntry 132, FDP_0678 HalfWordTableEntry 133, FDP_0570 HalfWordTableEntry 134, FDP_0624 HalfWordTableEntry 135, FDP_05b0 HalfWordTableEntry 136, FDP_0548 HalfWordTableEntry 137, FDP_03ec HalfWordTableEntry 138, FDP_049c HalfWordTableEntry 139, FDP_0428 HalfWordTableEntry 140, FDP_04ec HalfWordTableEntry 141, FDP_03ec HalfWordTableEntry 142, FDP_049c HalfWordTableEntry 143, FDP_0428 macro MixedTableEntry &flags, &target dc.b &flags dc.b (&target - FDP) >> 2 endm ; this is the d20 table MixedTable MixedTableEntry %01, FDP_0150 MixedTableEntry %01, FDP_0150 MixedTableEntry %01, FDP_0150 MixedTableEntry %01, FDP_0150 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_014C MixedTableEntry %01, FDP_0150 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %11, FDP_0160 MixedTableEntry %11, FDP_0164 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0174 MixedTableEntry %01, FDP_0178 MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_0150 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %11, FDP_01A4 MixedTableEntry %11, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %11, FDP_01D8 MixedTableEntry %11, FDP_0004 MixedTableEntry %11, FDP_02E4 MixedTableEntry %11, FDP_02E4 MixedTableEntry %11, FDP_02E4 MixedTableEntry %11, FDP_02E4 MixedTableEntry %11, FDP_0284 MixedTableEntry %11, FDP_0284 MixedTableEntry %11, FDP_0284 MixedTableEntry %11, FDP_0284 MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_02FC MixedTableEntry %11, FDP_020C MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_0370 MixedTableEntry %01, FDP_0384 MixedTableEntry %01, FDP_0398 MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_015C MixedTableEntry %01, FDP_0004 MixedTableEntry %01, FDP_0004 MixedTableEntry %11, FDP_023C MixedTableEntry %01, FDP_024C FDP_0DA0 li r0, -3 sc andi. r23, r16, 0x0020 addi r10, r10, 4 mfsprg SP, 0 mtsrr0 r10 mtsrr1 r11 bne FDP_0E30 mtlr r12 bns cr3, FDP_0DFC FDP_0DC8 mtcrf 255, r13 lmw r2, 0x0008(SP) lwz r0, 0x0000(SP) lwz SP, 0x0004(SP) rfi dcb.b 32, 0 FDP_0DFC mtcrf 255, r13 lmw r10, 0x0028(SP) lwz r0, 0x0000(SP) lwz SP, 0x0004(SP) rfi dcb.b 32, 0 FDP_0E30 mfsprg r24, 3 mtsprg 2, r12 rlwinm r16, r16, 0, 27, 25 lwz r12, 0x0034(r24) stw r16, -0x0010(SP) mtcrf 255, r13 mtlr r12 lmw r2, 0x0008(SP) lwz r0, 0x0000(SP) lwz SP, 0x0004(SP) mtsprg 1, SP blrl FDP_0E60 andi. r23, r17, 0x07C0 rlwinm r28, r17, 13, 25, 29 lwzx r21, SP, r28 li r22, 8 insrwi r17, r22, 6, 26 addi r19, r19, 4 bne FDP_03AC rlwinm r22, r17, 9, 27, 28 srw r21, r21, r22 extrwi r22, r17, 2, 4 neg r22, r22 add r19, r19, r22 addi r22, r22, 4 insrwi. r17, r22, 5, 26 b FDP_03AC FDP_0E9C rlwinm r23, r17, 18, 25, 29 cmpw cr7, r28, r23 rlwinm r23, r17, 23, 25, 29 cmpw cr6, r28, r23 beq cr7, FDP_0EB8 beq cr6, FDP_0EB8 stwx r21, SP, r28 FDP_0EB8 addis r28, r17, 32 rlwimi r17, r28, 0, 6, 10 subi r17, r17, 64 beq FDP_0DA0 FDP_0EC8 andi. r23, r17, 0x07C0 li r22, 9 insrwi r17, r22, 6, 26 addi r19, r19, 4 bne FDP_03AC extrwi r22, r17, 2, 4 neg r22, r22 add r19, r19, r22 addi r22, r22, 4 insrwi. r17, r22, 5, 26 b FDP_03AC FDP_0EF4 rlwinm r23, r17, 18, 25, 29 cmpw cr7, r28, r23 rlwinm r23, r17, 23, 25, 29 cmpw cr6, r28, r23 beq cr7, FDP_0F10 beq cr6, FDP_0F10 stwx r21, SP, r28 FDP_0F10 addis r28, r17, 32 rlwimi r17, r28, 0, 6, 10 subi r17, r17, 64 not r22, r22 rlwimi r22, r17, 6, 30, 31 li r28, 1 mfxer r23 extrwi r23, r23, 8, 16 srwi r20, r21, 24 cmpw cr7, r20, r23 add. r22, r22, r28 beq cr7, FDP_0F80 beq FDP_0F80 extrwi r20, r21, 8, 8 cmpw cr7, r20, r23 add. r22, r22, r28 beq cr7, FDP_0F80 beq FDP_0F80 extrwi r20, r21, 8, 16 cmpw cr7, r20, r23 add. r22, r22, r28 beq cr7, FDP_0F80 beq FDP_0F80 clrlwi r20, r21, 24 cmpw cr7, r20, r23 add. r22, r22, r28 beq cr7, FDP_0F80 bne FDP_0EC8 FDP_0F80 rlwinm. r28, r17, 0, 3, 3 mfxer r23 add r22, r22, r23 insrwi r23, r22, 7, 25 mtxer r23 beq FDP_0DA0 mfcr r23 clrlwi r23, r23, 30 insrwi r13, r23, 4, 0 b FDP_0DA0 FDP_0FA8 clrrwi r20, r21, 31 xor. r21, r20, r21 beq FDP_0178 rlwinm. r23, r21, 16, 17, 24 addi r23, r23, 128 rlwimi r20, r21, 29, 5, 31 extsh r23, r23 rlwimi r20, r21, 0, 1, 1 slwi r21, r21, 29 subi r23, r23, 16512 rlwimi r20, r23, 0, 2, 4 bne FDP_0178 srwi r21, r21, 20 insrwi r21, r20, 20, 0 cntlzw r23, r21 slw r21, r21, r23 neg r23, r23 rlwimi r20, r21, 21, 12, 31 addi r23, r23, 896 slwi r21, r21, 21 insrwi r20, r23, 11, 1 b FDP_0178 FDP_1000 clrrwi r21, r25, 10 rlwimi r21, r17, 14, 24, 28 rlwimi r14, r11, 0, 6, 6 add r21, r21, r20 mtmsr r14 mtlr r21 isync oris r11, r11, 0x0200 blr FDP_1024 clrrwi r19, r25, 10 rlwimi r19, r17, 14, 24, 28 add r19, r19, r20 mtlr r19 rlwimi r14, r11, 0, 6, 6 subi r23, SP, 736 mtmsr r14 insrwi r23, r18, 4, 28 isync blr FDP_104c oris r11, r11, 0x0200 lbz r21, 0x0000(r23) b FDP_00E4 FDP_1058 oris r11, r11, 0x0200 lhz r21, 0x0000(r23) b FDP_00E4 FDP_1064 oris r11, r11, 0x0200 lwz r21, 0x0000(r23) b FDP_00E4 ; Called by setup. QEMU naturally complains. ; SPRs: ;MMCR0 equ 952 ; monitor control register 0 MMCR1 equ 956 ; monitor control register 1 MMCR2 equ 944 ; monitor control register 2 ;PMC1 equ 953 ; performance counter 1 ;PMC2 equ 954 ; performance counter 2 PMC3 equ 957 ; performance counter 3 PMC4 equ 958 ; performance counter 4 BAMR equ 951 ; breakpoint address mask register 1 ;SIA equ 955 ; sampled instruction address 1 ;SDA equ 959 ; sampled data address (604 only?) macro TestSPR &dest, &goodgpr, &badgpr, &spr mtspr &spr, &goodgpr not &badgpr, &goodgpr mfspr &badgpr, &spr xor&dot &dest, &goodgpr, &badgpr endm ProbePerfMonitor ; OUTSIDE REFERER ; We will populate r23 with bit fields describing perf monitor capabilities li r23, 0 ; Temporarily disable program interrupts (leave old handler in r20) lwz r21, KDP.PA_NanoKernelCode(r1) lwz r20, KDP.VecBaseSystem + VecTable.ProgramIntVector(r1) llabel r18, IgnoreSoftwareInt add r21, r18, r21 stw r21, KDP.VecBaseSystem + VecTable.ProgramIntVector(r1) ; SET BIT 31 if all the 604 perf monitor registers work li r18, 0 TestSPR r17, r18, r19, MMCR0 TestSPR r19, r18, r19, PMC1 or r17, r17, r19 TestSPR r19, r18, r19, PMC2 or r17, r17, r19 TestSPR r19, r18, r19, SIA or. r17, r17, r19 bne @dont_set_bit_31 _bset r23, r23, 31 @dont_set_bit_31 ; ONLY test for bits 28-30 if bit 31 was just set... mr. r23, r23 beq @stop_testing_perf_monitor ; SET BIT 30 if all the 750 perf monitor registers work TestSPR r17, r18, r19, MMCR1 TestSPR r19, r18, r19, PMC3 or r17, r17, r19 TestSPR r19, r18, r19, PMC4 or. r17, r17, r19 bne @dont_set_bit_30 _bset r23, r23, 30 @dont_set_bit_30 ; SET BIT 29 if SDA (604 but not 750) works li r18, 0xaaa0 TestSPR. r17, r18, r19, SDA beq @dont_set_bit_29 _bset r23, r23, 29 @dont_set_bit_29 ; SET BIT 28 if EVEN MORE perf monitor registers work li r18, 0x00 TestSPR r17, r18, r19, MMCR2 li r18, 0x00 TestSPR r19, r18, r19, BAMR or. r17, r17, r19 bne @dont_set_bit_28 _bset r23, r23, 28 @dont_set_bit_28 @stop_testing_perf_monitor ; Restore program interrupts stw r20, KDP.VecBaseSystem + VecTable.ProgramIntVector(r1) ; Test r23 and save mr. r23, r23 stw r23, KDP.PerfMonitorBits(r1) ; Set HiLevelPerfMonitorBits li r23, 0 _bset r23, r23, 14 _bset r23, r23, 15 ; SET BIT 18 if any perf monitor features present beq * + 8 _bset r23, r23, 18 ; And save stw r23, KDP.HiLevelPerfMonitorBits(r1) ; Now do some insane arithmetic with the decrementer clock. TBE. lisori r20, 0x80587ff3 lisori r21, 0xd62611e3 ; Left-justify the decrementer clock rate lwz r19, KDP.ProcessorInfo + NKProcessorInfo.DecClockRateHz(r1) cntlzw r23, r19 slw r19, r19, r23 cmpw cr1, r20, r19 addi r23, r23, 0x02 xor. r24, r24, r24 bge cr1, ProbePerfMonitor_0x180 addi r23, r23, -0x01 ProbePerfMonitor_0x160 cmpwi cr1, r20, 0x00 slwi r20, r20, 1 rlwimi r20, r21, 1, 31, 31 cmplw cr2, r20, r19 rlwinm. r24, r24, 1, 0, 30 slwi r21, r21, 1 blt cr1, ProbePerfMonitor_0x180 blt cr2, ProbePerfMonitor_0x188 ProbePerfMonitor_0x180 subf r20, r19, r20 ori r24, r24, 0x01 ProbePerfMonitor_0x188 bge ProbePerfMonitor_0x160 stw r24, 0x05bc(r1) stb r23, 0x05b8(r1) li r21, 0x20 subf r21, r23, r21 stb r21, 0x05bb(r1) blr FDPEmulateInstruction mfsprg r1, 0 lwz r8, 0x0104(r6) stw r8, 0x0000(r1) stw r2, 0x0008(r1) stw r3, 0x000c(r1) stw r4, 0x0010(r1) stw r5, 0x0014(r1) stmw r14, 0x0038(r1) mr r16, r7 lwz r7, 0x013c(r6) stw r7, 0x001c(r1) lwz r8, 0x0144(r6) stw r8, 0x0020(r1) lwz r9, 0x014c(r6) stw r9, 0x0024(r1) lwz r23, 0x0154(r6) stw r23, 0x0028(r1) lwz r23, 0x015c(r6) stw r23, 0x002c(r1) lwz r23, 0x0164(r6) stw r23, 0x0030(r1) lwz r23, 0x016c(r6) stw r23, 0x0034(r1) lwz r1, -0x0004(r1) addi r22, r6, 0xc4 lwz r23, 0x0ea0(r1) lwz r25, 0x0650(r1) addi r23, r23, 0x01 stw r23, 0x0ea0(r1) mfsprg r24, 3 addi r23, r1, 0x4e0 mfmsr r14 ori r15, r14, 0x10 mtsprg 3, r23 mtmsr r15 isync lwz r27, 0x0000(r10) mtmsr r14 isync mtsprg 3, r24 srwi r23, r27, 26 cmpwi cr6, r23, 0x09 cmpwi r23, 0x16 cmpwi cr1, r23, 0x1f lwz r20, 0x05b8(r1) rlwinm r21, r16, 15, 14, 14 neg r21, r21 rlwimi r21, r16, 14, 16, 16 or r21, r21, r20 rlwimi r21, r27, 0, 21, 31 rlwimi r16, r16, 27, 26, 26 mfsprg r1, 0 rlwinm r17, r27, 13, 25, 29 rlwinm r18, r27, 18, 25, 29 beq cr6, FDP_1214_0x2b4 mtcrf 0x3f, r21 rlwinm r19, r27, 23, 25, 29 beq FDP_1bd0 bne cr1, FDP_1324 rlwinm r21, r27, 2, 24, 28 add r21, r21, r25 lwz r20, 0x1374(r21) rlwinm r23, r27, 26, 27, 31 lwz r21, 0x1378(r21) rotlw. r20, r20, r23 add r21, r21, r25 mtlr r21 bltlr FDP_1324 ble cr1, FDP_1338 lis r20, 0x5556 ori r20, r20, 0x5500 rotlw. r20, r20, r23 blt FDP_1c18 FDP_1338 mtcrf 0x70, r11 li r8, 0x04 ble cr3, FDP_1354 FDP_1344 mtcrf 0x0f, r11 li r8, 0x04 ble cr4, FDP_1354 li r8, 0x05 FDP_1354 lwz r6, -0x0004(r1) lwz r9, 0x0ea0(r6) lmw r14, 0x0038(r1) addi r9, r9, -0x01 stw r9, 0x0ea0(r6) lwz r6, -0x0014(r1) lwz r7, -0x0010(r1) b Exception ; What the hell is this? ProgramIntTable dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00910091, FDP_148c - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x10301030, 0x0000151c dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00328000, 0x000016d0 dc.l 0x00000000, FDP_1338 - FDP dc.l 0x0080a000, 0x00001c18 dc.l 0x00000000, FDP_1338 - FDP dc.l 0x55545502, 0x00001c20 dc.l 0x0f000f0c, 0x00001ad0 dc.l 0x0a008a08, 0x00001aa8 dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP dc.l 0x80008000, 0x00001b8c dc.l 0x00000000, FDP_1338 - FDP dc.l 0x00000000, FDP_1338 - FDP FDP_1474 stw r20, 0(r22) FDP_1478 bns cr7, FDP_1484 mfcr r23 rlwimi r13, r23, 0, 0, 3 FDP_1484 stwx r21, r1, r17 b FDP_0da0 FDP_148c bns cr2, FDP_1338 lwzx r18, SP, r18 bge cr6, FDP_14EC bgt cr5, FDP_14B0 mr. r21, r18 crxor cr5_SO, cr5_SO, cr0_LT bns cr5, FDP_1478 neg. r21, r18 b FDP_1478 FDP_14b0 li r21, 0 addo. r21, r18, r21 crxor cr5_SO, cr5_SO, cr0_LT bns cr5, FDP_1478 nego. r21, r18 b FDP_1478 FDP_1214_0x2b4 mtcrf 0x3f, r21 bns cr2, FDP_1338 lwzx r18, r1, r18 extsh r19, r27 cmpw cr1, r19, r18 subf r21, r21, r21 blt cr1, FDP_1484 subf r21, r18, r19 b FDP_1484 FDP_14ec lwzx r19, SP, r19 bgt cr5, FDP_1508 cmpw cr1, r19, r18 sub. r21, r21, r21 blt cr1, FDP_1478 sub. r21, r19, r18 b FDP_1478 FDP_1508 cmpw cr1, r19, r18 subo. r21, r21, r21 blt cr1, FDP_1478 subo. r21, r19, r18 b FDP_1478 bge cr2, FDP_1338 lwzx r19, SP, r19 lwzx r18, SP, r18 bne cr5, FDP_16B8 cmpwi cr1, r19, 0 bgt cr6, FDP_1548 lwz r24, 0(r22) srwi r21, r24, 31 add. r21, r21, r18 bne FDP_1590 mr r18, r24 FDP_1548 cmpwi r19, -1 bgt cr5, FDP_1574 beq FDP_1568 beq cr1, FDP_1580 divw r21, r18, r19 FDP_155c mullw r20, r21, r19 sub. r20, r18, r20 b FDP_1474 FDP_1568 neg r21, r18 sub. r20, r18, r18 b FDP_1474 FDP_1574 divwo r21, r18, r19 beq FDP_1568 bne cr1, FDP_155C FDP_1580 rlwinm r23, r18, 2, 30, 30 subi r21, r23, 1 mr. r20, r18 b FDP_1474 FDP_1590 mfxer r26 ; XER = 1 beq cr1, FDP_1698 cmpwi r19, 0 cmpwi cr1, r18, 0 crxor cr1_SO, cr0_LT, cr1_LT bge FDP_15AC neg r19, r19 FDP_15ac bge cr1, FDP_15B8 subfic r24, r24, 0 subfze r18, r18 FDP_15b8 cmplw r18, r19 bge FDP_1698 cntlzw r21, r19 xor r18, r18, r24 slw r19, r19, r21 rotlw r18, r18, r21 slw r24, r24, r21 xor r18, r18, r24 srwi r23, r19, 16 divwu r20, r18, r23 mullw r23, r20, r23 sub r18, r18, r23 slwi r18, r18, 16 inslwi r18, r24, 16, 16 slwi r24, r24, 16 clrlwi r23, r19, 16 mullw r23, r20, r23 subc r18, r18, r23 subfe. r23, r23, r23 add r24, r24, r20 bge FDP_161C FDP_160c addc r18, r18, r19 addze. r23, r23 subi r24, r24, 1 blt FDP_160C FDP_161c srwi r23, r19, 16 divwu r20, r18, r23 mullw r23, r20, r23 sub r18, r18, r23 slwi r18, r18, 16 inslwi r18, r24, 16, 16 slwi r24, r24, 16 clrlwi r23, r19, 16 mullw r23, r20, r23 subc r18, r18, r23 subfe. r23, r23, r23 add r24, r24, r20 bge FDP_1660 FDP_1650 addc r18, r18, r19 addze. r23, r23 subi r24, r24, 1 blt FDP_1650 FDP_1660 srw r20, r18, r21 mr. r21, r24 bge cr1, FDP_1670 neg r20, r20 FDP_1670 bns cr1, FDP_1678 neg. r21, r21 FDP_1678 ble cr5, FDP_168C crxor cr0_LT, cr0_LT, cr1_SO rlwinm r26, r26, 0, 2, 0 bge FDP_168C oris r26, r26, 0xC000 FDP_168c mtxer r26 ; XER = 1 mr. r20, r20 b FDP_1474 FDP_1698 ble cr5, FDP_16A0 oris r26, r26, 0xC000 FDP_16a0 mtxer r26 ; XER = 1 not r21, r18 srwi r23, r18, 31 mr. r20, r24 add r21, r23, r21 b FDP_1474 FDP_16b8 mulhw r21, r18, r19 bgt cr5, FDP_16C8 mullw. r20, r18, r19 b FDP_1474 FDP_16c8 mullwo. r20, r18, r19 b FDP_1474 bgt cr6, FDP_18D8 bgt cr5, FDP_1A64 cmpwi r18, 64 cmpwi cr1, r18, 0 cmpwi cr6, r18, 4 bso cr5, FDP_1938 bge FDP_17F8 crclr cr0_LT beq cr1, FDP_1734 beq cr6, FDP_1740 cmpwi cr1, r18, 20 cmpwi cr6, r18, 24 beq cr1, FDP_1750 beq cr6, FDP_17C8 cmpwi cr1, r18, 32 cmpwi cr6, r18, 36 beq cr1, FDP_17D4 beq cr6, FDP_17E8 cmpwi cr6, r18, 16 lwzx r18, SP, r18 lwzx r19, SP, r19 add. r21, r18, r19 beq cr6, FDP_1750 bne cr3, FDP_1338 b FDP_1B54 FDP_1734 bge cr2, FDP_1338 lwz r21, 0(r22) b FDP_1478 FDP_1740 bne cr3, FDP_1338 mtcrf %10000000, r13 dc.l 0x7EA102A7 ; mfxer r21 | bit 31 b FDP_1478 FDP_1750 ble cr2, FDP_1338 lwz r22, -0x0004(SP) FDP_1758 mftbu r20 mftb r21 mftbu r23 cmplw cr1, r23, r20 bne- cr1, FDP_1758 lwz r23, 0x05BC(r22) lbz r18, 0x05B8(r22) lbz r19, 0x05BB(r22) mullw r22, r20, r23 mulhwu r24, r21, r23 add r22, r22, r24 bne cr6, FDP_17A8 cmplw cr1, r22, r24 srw r22, r22, r19 mulhwu r21, r20, r23 bge+ cr1, FDP_179C addi r21, r21, 1 FDP_179c slw r21, r21, r18 add r21, r21, r22 b FDP_1478 FDP_17a8 mullw r21, r21, r23 srw r21, r21, r19 slw r22, r22, r18 add r21, r21, r22 lis r23, 15258 ori r23, r23, 0xCA00 mulhwu r21, r21, r23 b FDP_1478 FDP_17c8 bne cr2, FDP_1338 mfdec r21 ; DEC = 22 b FDP_1478 FDP_17d4 bne cr3, FDP_1338 mtcrf %10000000, r13 mtlr r12 ; LR = 8 dc.l 0x7EA802A7 ; mflr r21 | bit 31 b FDP_1478 FDP_17e8 bne cr3, FDP_1338 mtcrf %10000000, r13 dc.l 0x7EA902A7 ; mfctr r21 | bit 31 b FDP_1478 FDP_17f8 lwz r23, -0x0004(SP) mtcrf %10000000, r13 lwz r23, 0x05C0(r23) extrwi r19, r27, 10, 11 cmplwi cr1, r19, 0x03E8 beq cr1, FDP_187C clrlslwi r23, r23, 28, 20 bne cr4, FDP_1344 mtcrf 32, r23 cmplwi cr1, r19, 0x031D beq cr1, FDP_1898 cmplwi cr1, r19, 0x033D beq cr1, FDP_18A0 cmplwi cr1, r19, 0x035D beq cr1, FDP_18A8 cmplwi cr1, r19, 0x037D beq cr1, FDP_18B0 bgt cr2, FDP_1848 cmplwi cr1, r19, 0x03FD beq cr1, FDP_18D0 FDP_1848 bne cr2, FDP_1344 cmplwi cr1, r19, 0x039D beq cr1, FDP_18B8 cmplwi cr1, r19, 0x03BD beq cr1, FDP_18C0 cmplwi cr1, r19, 0x03DD beq cr1, FDP_18C8 bge cr2, FDP_1344 cmplwi cr1, r19, 0x021D beq cr1, FDP_1888 cmplwi cr1, r19, 0x02FD beq cr1, FDP_1890 b FDP_1344 FDP_187c ble cr4, FDP_1344 dc.l 0x7EBF42A7 ; mfpvr r21 | bit 31 b FDP_1478 FDP_1888 dc.l 0x7EB0EAA7 ; mfspr r21, MMCR2 | bit 31 b FDP_1478 FDP_1890 dc.l 0x7EB7EAA7 ; mfspr r21, BAMR | bit 31 b FDP_1478 FDP_1898 dc.l 0x7EB8EAA7 ; mfspr r21, MMCR0 | bit 31 b FDP_1478 FDP_18a0 dc.l 0x7EB9EAA7 ; mfspr r21, PMC1 | bit 31 b FDP_1478 FDP_18a8 dc.l 0x7EBAEAA7 ; mfspr r21, PMC2 | bit 31 b FDP_1478 FDP_18b0 dc.l 0x7EBBEAA7 ; mfspr r21, SIA | bit 31 b FDP_1478 FDP_18b8 dc.l 0x7EBCEAA7 ; mfspr r21, MMCR1 | bit 31 b FDP_1478 FDP_18c0 dc.l 0x7EBDEAA7 ; mfspr r21, PMC3 | bit 31 b FDP_1478 FDP_18c8 dc.l 0x7EBEEAA7 ; mfspr r21, PMC4 | bit 31 b FDP_1478 FDP_18d0 dc.l 0x7EBFEAA7 ; mfspr r21, SDA | bit 31 b FDP_1478 FDP_18d8 extrwi r23, r27, 10, 11 cmplwi cr1, r23, 0x0188 cmplwi cr6, r23, 0x01A8 cror cr0_EQ, cr1_EQ, cr6_EQ bne FDP_1338 FDP_18ec DIALECT POWER mfrtcu r20 ; RTCU = 4 mfrtcl r21 ; RTCL = 5 mfrtcu r23 ; RTCU = 4 DIALECT PowerPC xor. r23, r23, r20 lis r23, 15258 ori r23, r23, 0xCA00 bne- FDP_18EC mfspr r24, MQ ; 0 crset cr3_SO mullw r19, r20, r23 mtspr MQ, r24 ; 0 add r21, r21, r19 beq cr1, FDP_1484 cmplw r21, r19 mulhwu r21, r20, r23 mtspr MQ, r24 ; 0 bge FDP_1484 addi r21, r21, 1 b FDP_1484 FDP_1938 lwzx r17, SP, r17 bge FDP_1998 mr. r17, r17 beq cr1, FDP_1964 bne cr3, FDP_1338 beq cr6, FDP_1970 cmpwi cr1, r18, 32 cmpwi cr6, r18, 36 beq cr1, FDP_197C beq cr6, FDP_198C b FDP_1B54 FDP_1964 bge cr2, FDP_1338 stw r17, 0(r22) b FDP_1B54 FDP_1970 mtcrf %10000000, r13 dc.l 0x7E2103A7 ; mtxer r17 | bit 31 b FDP_1B54 FDP_197c mtcrf %10000000, r13 mr r12, r17 dc.l 0x7E2803A7 ; mtlr r17 | bit 31 b FDP_1B54 FDP_198c mtcrf %10000000, r13 dc.l 0x7E2903A7 ; mtctr r17 | bit 31 b FDP_1B54 FDP_1998 lwz r23, -0x0004(SP) bne cr4, FDP_1344 lwz r23, 0x05C0(r23) mtcrf %10000000, r13 clrlslwi r23, r23, 28, 20 extrwi r19, r27, 10, 11 mtcrf 32, r23 cmplwi cr1, r19, 0x031D beq cr1, FDP_1A24 cmplwi cr1, r19, 0x033D beq cr1, FDP_1A2C cmplwi cr1, r19, 0x035D beq cr1, FDP_1A34 cmplwi cr1, r19, 0x037D beq cr1, FDP_1A3C bgt cr2, FDP_19E0 cmplwi cr1, r19, 0x03FD beq cr1, FDP_1A5C FDP_19e0 bne cr2, FDP_1344 cmplwi cr1, r19, 0x039D beq cr1, FDP_1A44 cmplwi cr1, r19, 0x03BD beq cr1, FDP_1A4C cmplwi cr1, r19, 0x03DD beq cr1, FDP_1A54 bge cr2, FDP_1344 cmplwi cr1, r19, 0x021D beq cr1, FDP_1A14 cmplwi cr1, r19, 0x02FD beq cr1, FDP_1A1C b FDP_1344 FDP_1a14 dc.l 0x7E30EBA7 ; mtspr r17, MMCR2 | bit 31 b FDP_1B54 FDP_1a1c dc.l 0x7E37EBA7 ; mtspr r17, BAMR | bit 31 b FDP_1B54 FDP_1a24 dc.l 0x7E38EBA7 ; mtspr r17, MMCR0 | bit 31 b FDP_1B54 FDP_1a2c dc.l 0x7E39EBA7 ; mtspr r17, PMC1 | bit 31 b FDP_1B54 FDP_1a34 dc.l 0x7E3AEBA7 ; mtspr r17, PMC2 | bit 31 b FDP_1B54 FDP_1a3c dc.l 0x7E3BEBA7 ; mtspr r17, SIA | bit 31 b FDP_1B54 FDP_1a44 dc.l 0x7E3CEBA7 ; mtspr r17, MMCR1 | bit 31 b FDP_1B54 FDP_1a4c dc.l 0x7E3DEBA7 ; mtspr r17, PMC3 | bit 31 b FDP_1B54 FDP_1a54 dc.l 0x7E3EEBA7 ; mtspr r17, PMC4 | bit 31 b FDP_1B54 FDP_1a5c dc.l 0x7E3FEBA7 ; mtspr r17, SDA | bit 31 b FDP_1B54 FDP_1a64 lwz r23, -0x0004(SP) bge cr3, FDP_1338 extrwi. r18, r27, 4, 12 rlwinm r21, r27, 16, 28, 30 cmpwi cr1, r21, 10 addi r18, r18, 6808 lbzx r18, r25, r18 addi r21, r23, 3872 beq cr1, FDP_1A90 lhzx r21, r21, r18 b FDP_1478 FDP_1a90 lwzx r21, r21, r18 b FDP_1478 DIALECT POWER dozi SP, r4, 9252 dozi r17, r8, 10784 dc.l 0x2c2e1814 ; cmpdi r14, 6164 DIALECT PowerPC subfic r17, r4, 9252 lwzx r19, SP, r19 clrlwi r19, r19, 27 bso cr5, FDP_1B1C bns cr2, FDP_1338 lwzx r17, SP, r17 lis r23, -32768 lwzx r21, SP, r18 srw r23, r23, r19 srw r17, r17, r19 b FDP_1C08 bgt cr6, FDP_1B18 lwzx r19, SP, r19 clrlwi r19, r19, 26 bge cr6, FDP_1B1C cmpwi r19, 31 crnot cr5_SO, cr5_SO ble FDP_1B1C bge cr2, FDP_1338 lwz r20, 0(r22) li r23, -1 clrlwi r19, r19, 27 bgt cr5, FDP_1B0C slw r23, r23, r19 and. r21, r20, r23 b FDP_1B50 FDP_1b0c srw r23, r23, r19 and. r21, r20, r23 b FDP_1B50 FDP_1b18 extrwi r19, r27, 5, 16 FDP_1b1c bge cr2, FDP_1338 lwzx r17, SP, r17 bgt cr5, FDP_1B64 slw. r21, r17, r19 rotlw r20, r17, r19 bge cr6, FDP_1B4C li r23, -1 slw r23, r23, r19 FDP_1b3c lwz r19, 0(r22) andc r23, r19, r23 or. r21, r21, r23 bns cr5, FDP_1B50 FDP_1b4c stw r20, 0(r22) FDP_1b50 stwx r21, r1, r18 FDP_1b54 bns cr7, FDP_0da0 mfcr r23 rlwimi r13, r23, 0, 0, 3 b FDP_0da0 FDP_1b64 neg r20, r19 rotlw r20, r17, r20 beq cr5, FDP_1B84 srw. r21, r17, r19 bge cr6, FDP_1B4C li r23, -1 srw r23, r23, r19 b FDP_1B3C FDP_1b84 sraw. r21, r17, r19 b FDP_1B4C bns cr2, FDP_1338 lwzx r19, SP, r19 lwzx r17, SP, r17 bgt cr5, FDP_1BBC li r21, -1 sub r19, r19, r17 not r19, r19 clrlwi r19, r19, 27 neg r17, r17 slw r21, r21, r19 rotlw. r21, r21, r17 b FDP_1B50 FDP_1bbc lwzx r21, SP, r18 and r17, r17, r19 andc r21, r21, r19 or. r21, r21, r17 b FDP_1B50 FDP_1bd0 bns cr2, FDP_1338 lwzx r17, r1, r17 rlwinm r20, r27, 26, 27, 31 lwzx r19, r1, r19 rlwinm r21, r27, 31, 27, 31 li r23, -0x01 subf r21, r20, r21 not r21, r21 clrlwi r21, r21, 0x1b neg r20, r20 slw r23, r23, r21 lwzx r21, r1, r18 rotlw r23, r23, r20 rotlw r17, r17, r19 FDP_1c08 and r17, r17, r23 andc r21, r21, r23 or. r21, r21, r17 b FDP_1b50 FDP_1c18 ble cr3, FDP_1338 b major_0x03324 bgt cr6, FDP_1C18 bge cr4, FDP_1338 b major_0x03324 align 5 FDP_1c40 ; OUTSIDE REFERER ; r6 = saved at *(ewa + 0x18) ; sprg1 = saved at *(ewa + 4) ; rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) bl LoadInterruptRegisters ; r0 = 0 ; r1 = *(ewa - 4) ; r6 = kdp ; r7 = *(ewa - 0x10) # flags? ; r8 = ewa ; r10 = srr0 ; r11 = srr1 ; r12 = sprg2 ; r13 = cr mfsprg r1, 0 lwz r8, 0x0104(r6) stw r8, 0x0000(r1) stw r2, 0x0008(r1) stw r3, 0x000c(r1) stw r4, 0x0010(r1) stw r5, 0x0014(r1) stmw r14, 0x0038(r1) mr r16, r7 lwz r7, 0x013c(r6) stw r7, 0x001c(r1) lwz r8, 0x0144(r6) stw r8, 0x0020(r1) lwz r9, 0x014c(r6) stw r9, 0x0024(r1) lwz r23, 0x0154(r6) stw r23, 0x0028(r1) lwz r23, 0x015c(r6) stw r23, 0x002c(r1) lwz r23, 0x0164(r6) stw r23, 0x0030(r1) lwz r23, 0x016c(r6) stw r23, 0x0034(r1) lwz r1, -0x0004(r1) addi r22, r6, 0xc4 mfsprg r24, 3 addi r23, r1, 0x4e0 mfmsr r14 oris r14, r14, 0x200 ori r15, r14, 0x10 mtsprg 3, r23 mtmsr r15 isync lwz r27, 0x0000(r10) mtmsr r14 isync mtsprg 3, r24 lwz r24, 0x00d8(r6) addi r24, r24, 0x00 li r8, 0x00 stvx v0, r24, r8 li r9, 0x10 stvx v1, r24, r9 li r8, 0x20 stvx v2, r24, r8 li r9, 0x30 stvx v3, r24, r9 li r8, 0x40 stvx v4, r24, r8 li r9, 0x50 stvx v5, r24, r9 li r8, 0x60 stvx v6, r24, r8 li r9, 0x70 stvx v7, r24, r9 li r8, 0x80 stvx v8, r24, r8 li r9, 0x90 stvx v9, r24, r9 li r8, 160 stvx v10, r24, r8 li r9, 0xb0 stvx v11, r24, r9 li r8, 0xc0 stvx v12, r24, r8 li r9, 0xd0 stvx v13, r24, r9 li r8, 0xe0 stvx v14, r24, r8 li r9, 240 stvx v15, r24, r9 li r8, 0x100 stvx v16, r24, r8 li r9, 0x110 stvx v17, r24, r9 li r8, 0x120 stvx v18, r24, r8 li r9, 0x130 stvx v19, r24, r9 li r8, 320 stvx v20, r24, r8 li r9, 0x150 stvx v21, r24, r9 li r8, 0x160 stvx v22, r24, r8 li r9, 0x170 stvx v23, r24, r9 li r8, 0x180 stvx v24, r24, r8 li r9, 400 stvx v25, r24, r9 li r8, 0x1a0 stvx v26, r24, r8 li r9, 0x1b0 stvx v27, r24, r9 li r8, 0x1c0 stvx v28, r24, r8 li r9, 0x1d0 stvx v29, r24, r9 li r8, 480 stvx v30, r24, r8 li r9, 0x1f0 stvx v31, r24, r9 lwz r23, 0x0ed8(r1) lwz r25, 0x0650(r1) addi r23, r23, 0x01 stw r23, 0x0ed8(r1) rlwinm. r8, r27, 26, 0, 0 rlwinm r9, r27, 24, 30, 31 cmpwi cr1, r9, 0x03 cmpwi cr2, r9, 0x00 rlwinm r17, r27, 15, 23, 27 rlwinm r18, r27, 20, 23, 27 rlwinm r19, r27, 25, 23, 27 blt FDP_1c40_0x398 beq cr2, FDP_1c40_0x43c bgt cr1, FDP_1c40_0x278 lvx v3, r24, r19 vspltisw v31, 0x00 vspltisw v29, 0x01 vcfux v29, v29, 0x00 vspltisw v30, -0x01 vspltisw v22, 0x09 vsrw v28, v30, v22 vslw v27, v30, v30 vnor v26, v28, v27 vsraw v24, v3, v30 vand v23, v3, v28 vcmpequw v23, v23, v31 vand v22, v3, v26 vcmpequw v22, v22, v31 vandc v25, v22, v23 lwz r9, 0x064c(r1) llabel r8, blergh add r9, r9, r8 rlwinm r8, r27, 28, 26, 29 add r9, r9, r8 mtlr r9 blr blergh b panic b panic b panic b panic b major_0x07ac0_0x14c b major_0x07ac0_0x100 b major_0x07ac0_0x24c b major_0x07ac0_0x220 b FDP_1c40_0x4d0 b FDP_1c40_0x4e0 b FDP_1c40_0x4f0 b FDP_1c40_0x500 b panic b panic b FDP_1c40_0x514 b major_0x07980_0x100 FDP_1c40_0x274 ; OUTSIDE REFERER stvx v1, r24, r17 FDP_1c40_0x278 li r8, 0x00 lvx v0, r24, r8 li r8, 0x10 lvx v1, r24, r8 li r8, 0x20 lvx v2, r24, r8 li r8, 0x30 lvx v3, r24, r8 li r8, 0x40 lvx v4, r24, r8 li r8, 0x50 lvx v5, r24, r8 li r8, 0x60 lvx v6, r24, r8 li r8, 0x70 lvx v7, r24, r8 li r8, 0x80 lvx v8, r24, r8 li r8, 0x90 lvx v9, r24, r8 li r8, 160 lvx v10, r24, r8 li r8, 0xb0 lvx v11, r24, r8 li r8, 0xc0 lvx v12, r24, r8 li r8, 0xd0 lvx v13, r24, r8 li r8, 0xe0 lvx v14, r24, r8 li r8, 240 lvx v15, r24, r8 li r8, 0x100 lvx v16, r24, r8 li r8, 0x110 lvx v17, r24, r8 li r8, 0x120 lvx v18, r24, r8 li r8, 0x130 lvx v19, r24, r8 li r8, 320 lvx v20, r24, r8 li r8, 0x150 lvx v21, r24, r8 li r8, 0x160 lvx v22, r24, r8 li r8, 0x170 lvx v23, r24, r8 li r8, 0x180 lvx v24, r24, r8 li r8, 400 lvx v25, r24, r8 li r8, 0x1a0 lvx v26, r24, r8 li r8, 0x1b0 lvx v27, r24, r8 li r8, 0x1c0 lvx v28, r24, r8 li r8, 0x1d0 lvx v29, r24, r8 li r8, 480 lvx v30, r24, r8 li r8, 0x1f0 lvx v31, r24, r8 andi. r23, r16, 0x20 addi r10, r10, 0x04 mfsprg r1, 0 mtspr srr0, r10 mtspr srr1, r11 bne FDP_0E30 mtlr r12 b FDP_0DC8 FDP_1c40_0x398 rlwinm r22, r27, 30, 23, 27 mfmsr r14 ori r15, r14, 0x2000 mtmsr r15 isync rlwinm. r8, r11, 0, 18, 18 beq FDP_1c40_0x3cc stfd f0, 0x0200(r6) mffs f0 stfd f1, 0x0208(r6) stfd f2, 0x0210(r6) stfd f3, 0x0218(r6) stfd f0, 0x00e0(r6) FDP_1c40_0x3cc dc.l 0xff80010c crmove 30, 2 rlwinm. r9, r27, 31, 0, 0 li r8, 0x03 crmove 26, 0 FDP_1c40_0x3e0 lfsx f0, r24, r18 addic. r8, r8, -0x01 lfsx f1, r24, r19 lfsx f2, r24, r22 bne cr6, FDP_1c40_0x408 fnmsubs f3, f0, f2, f1 stfsx f3, r24, r17 addi r24, r24, 0x04 bge FDP_1c40_0x3e0 b FDP_1c40_0x418 FDP_1c40_0x408 fmadds f3, f0, f2, f1 stfsx f3, r24, r17 addi r24, r24, 0x04 bge FDP_1c40_0x3e0 FDP_1c40_0x418 addi r24, r24, -0x10 beq cr7, FDP_1c40_0x278 lfd f0, 0x00e0(r6) mtfsf 0xff, f0 lfd f0, 0x0200(r6) lfd f1, 0x0208(r6) lfd f2, 0x0210(r6) lfd f3, 0x0218(r6) b FDP_1c40_0x278 FDP_1c40_0x43c mfmsr r14 ori r15, r14, 0x2000 mtmsr r15 isync rlwinm. r8, r11, 0, 18, 18 beq FDP_1c40_0x468 stfd f0, 0x0200(r6) mffs f0 stfd f1, 0x0208(r6) stfd f3, 0x0218(r6) stfd f0, 0x00e0(r6) FDP_1c40_0x468 dc.l 0xff80010c crmove 30, 2 rlwinm. r9, r27, 25, 0, 0 li r8, 0x03 crmove 26, 0 FDP_1c40_0x47c lfsx f0, r24, r18 addic. r8, r8, -0x01 lfsx f1, r24, r19 bne cr6, FDP_1c40_0x4a0 fsubs f3, f0, f1 stfsx f3, r24, r17 addi r24, r24, 0x04 bge FDP_1c40_0x47c b FDP_1c40_0x4b0 FDP_1c40_0x4a0 fadds f3, f0, f1 stfsx f3, r24, r17 addi r24, r24, 0x04 bge FDP_1c40_0x47c FDP_1c40_0x4b0 addi r24, r24, -0x10 beq cr7, FDP_1c40_0x278 lfd f0, 0x00e0(r6) mtfsf 0xff, f0 lfd f0, 0x0200(r6) lfd f1, 0x0208(r6) lfd f3, 0x0218(r6) b FDP_1c40_0x278 FDP_1c40_0x4d0 vsel v22, v31, v27, v24 vsel v23, v3, v22, v25 vrfin v1, v23 b FDP_1c40_0x274 FDP_1c40_0x4e0 vsel v22, v31, v27, v24 vsel v23, v3, v22, v25 vrfiz v1, v23 b FDP_1c40_0x274 FDP_1c40_0x4f0 vsel v22, v29, v27, v24 vsel v23, v3, v22, v25 vrfip v1, v23 b FDP_1c40_0x274 FDP_1c40_0x500 vor v29, v29, v27 vsel v22, v31, v29, v24 vsel v23, v3, v22, v25 vrfim v1, v23 b FDP_1c40_0x274 FDP_1c40_0x514 vsel v23, v3, v31, v25 lwz r9, 0x064c(r1) llabel r8, FDP_2180 add r8, r8, r9 srwi r9, r18, 1 add r8, r8, r9 mtlr r8 blr align 6 FDP_2180 dc.l 0x1020BB8A b FDP_1c40_0x274 dc.l 0x1021BB8A b FDP_1c40_0x274 dc.l 0x1022BB8A b FDP_1c40_0x274 dc.l 0x1023BB8A b FDP_1c40_0x274 dc.l 0x1024BB8A b FDP_1c40_0x274 dc.l 0x1025BB8A b FDP_1c40_0x274 dc.l 0x1026BB8A b FDP_1c40_0x274 dc.l 0x1027BB8A b FDP_1c40_0x274 dc.l 0x1028BB8A b FDP_1c40_0x274 dc.l 0x1029BB8A b FDP_1c40_0x274 dc.l 0x102ABB8A b FDP_1c40_0x274 dc.l 0x102BBB8A b FDP_1c40_0x274 dc.l 0x102CBB8A b FDP_1c40_0x274 dc.l 0x102DBB8A b FDP_1c40_0x274 dc.l 0x102EBB8A b FDP_1c40_0x274 dc.l 0x102FBB8A b FDP_1c40_0x274 dc.l 0x1030BB8A b FDP_1c40_0x274 dc.l 0x1031BB8A b FDP_1c40_0x274 dc.l 0x1032BB8A b FDP_1c40_0x274 dc.l 0x1033BB8A b FDP_1c40_0x274 dc.l 0x1034BB8A b FDP_1c40_0x274 dc.l 0x1035BB8A b FDP_1c40_0x274 dc.l 0x1036BB8A b FDP_1c40_0x274 dc.l 0x1037BB8A b FDP_1c40_0x274 dc.l 0x1038BB8A b FDP_1c40_0x274 dc.l 0x1039BB8A b FDP_1c40_0x274 dc.l 0x103ABB8A b FDP_1c40_0x274 dc.l 0x103BBB8A b FDP_1c40_0x274 dc.l 0x103CBB8A b FDP_1c40_0x274 dc.l 0x103DBB8A b FDP_1c40_0x274 dc.l 0x103EBB8A b FDP_1c40_0x274 dc.l 0x103FBB8A b FDP_1c40_0x274 major_0x07980_0x100 ; OUTSIDE REFERER vsel v23, v3, v31, v25 lwz r9, 0x064c(r1) llabel r8, FDP_22c0 add r8, r8, r9 srwi r9, r18, 1 add r8, r8, r9 mtlr r8 blr align 6 FDP_22c0 dc.l 0x1020BBCA b FDP_1c40_0x274 dc.l 0x1021BBCA b FDP_1c40_0x274 dc.l 0x1022BBCA b FDP_1c40_0x274 dc.l 0x1023BBCA b FDP_1c40_0x274 dc.l 0x1024BBCA b FDP_1c40_0x274 dc.l 0x1025BBCA b FDP_1c40_0x274 dc.l 0x1026BBCA b FDP_1c40_0x274 dc.l 0x1027BBCA b FDP_1c40_0x274 dc.l 0x1028BBCA b FDP_1c40_0x274 dc.l 0x1029BBCA b FDP_1c40_0x274 dc.l 0x102ABBCA b FDP_1c40_0x274 dc.l 0x102BBBCA b FDP_1c40_0x274 dc.l 0x102CBBCA b FDP_1c40_0x274 dc.l 0x102DBBCA b FDP_1c40_0x274 dc.l 0x102EBBCA b FDP_1c40_0x274 dc.l 0x102FBBCA b FDP_1c40_0x274 dc.l 0x1030BBCA b FDP_1c40_0x274 dc.l 0x1031BBCA b FDP_1c40_0x274 dc.l 0x1032BBCA b FDP_1c40_0x274 dc.l 0x1033BBCA b FDP_1c40_0x274 dc.l 0x1034BBCA b FDP_1c40_0x274 dc.l 0x1035BBCA b FDP_1c40_0x274 dc.l 0x1036BBCA b FDP_1c40_0x274 dc.l 0x1037BBCA b FDP_1c40_0x274 dc.l 0x1038BBCA b FDP_1c40_0x274 dc.l 0x1039BBCA b FDP_1c40_0x274 dc.l 0x103ABBCA b FDP_1c40_0x274 dc.l 0x103BBBCA b FDP_1c40_0x274 dc.l 0x103CBBCA b FDP_1c40_0x274 dc.l 0x103DBBCA b FDP_1c40_0x274 dc.l 0x103EBBCA b FDP_1c40_0x274 dc.l 0x103FBBCA b FDP_1c40_0x274 major_0x07ac0_0x100 ; OUTSIDE REFERER bl major_0x07d80_0x20 vspltisw v19, 0x01 vadduwm v22, v22, v19 vspltisw v23, -0x07 vsrw v21, v23, v23 vsubuwm v23, v21, v22 vspltisw v21, -0x09 vslw v23, v23, v21 vrsqrtefp v19, v23 vslw v20, v3, v22 vor v23, v29, v27 vsel v23, v31, v23, v24 vsel v21, v3, v23, v25 vandc v25, v25, v24 vrsqrtefp v20, v20 vrsqrtefp v21, v21 vmaddfp v1, v20, v19, v27 vsel v1, v21, v1, v25 b FDP_1c40_0x274 major_0x07ac0_0x14c ; OUTSIDE REFERER bl major_0x07d80_0x20 vspltisw v19, 0x01 vadduwm v22, v22, v19 vslw v20, v3, v22 vsel v20, v31, v20, v25 vrefp v20, v20 vspltisw v21, -0x09 vandc v23, v20, v27 vsrw v23, v23, v21 mfvscr v29 vsrw v19, v30, v19 vsrw v19, v19, v21 vaddubs v23, v22, v23 mtvscr v29 vcmpequw v22, v23, v19 vslw v23, v23, v21 vsel v23, v20, v23, v26 vand v22, v22, v28 vsel v23, v23, v31, v22 vsel v20, v31, v27, v24 vsel v1, v23, v30, v20 vspltisw v19, 0x01 vslw v22, v3, v19 vspltisw v23, -0x04 vsraw v22, v22, v21 vsraw v22, v22, v19 vcmpgtuw v23, v22, v23 vcmpequw v19, v22, v30 vandc v23, v23, v19 vspltisw v19, 0x02 vsubuwm v22, v22, v19 vslw v22, v22, v21 vsel v22, v3, v22, v26 vsel v22, v31, v22, v23 vrefp v22, v22 vspltisw v19, 0x01 vandc v22, v22, v27 vslw v29, v19, v21 vor v28, v28, v29 vcmpgtuw v28, v22, v28 vsrw v29, v29, v19 vsel v22, v22, v31, v26 vsrw v22, v22, v19 vor v22, v22, v29 vsel v19, v19, v31, v28 vsrw v22, v22, v19 vor v22, v22, v20 vsel v1, v1, v22, v23 vor v25, v25, v23 vsel v23, v3, v31, v25 vrefp v23, v23 vsel v1, v23, v1, v25 b FDP_1c40_0x274 major_0x07ac0_0x220 ; OUTSIDE REFERER bl major_0x07d80_0x20 vspltisw v19, 0x01 vadduwm v22, v22, v19 vslw v20, v3, v22 vsel v23, v3, v20, v25 vlogefp v23, v23 vsubsws v22, v31, v22 vcfsx v22, v22, 0x00 vaddfp v1, v22, v23 vsel v1, v23, v1, v25 b FDP_1c40_0x274 major_0x07ac0_0x24c ; OUTSIDE REFERER lwz r9, 0x064c(r1) llabel r8, FDP_2590 add r8, r8, r9 lvx v23, 0, r8 vspltw v21, v23, 0x03 vspltw v20, v23, 0x00 vcmpgefp v21, v3, v21 vcmpgtfp v20, v3, v20 vspltw v19, v23, 0x02 vandc v22, v21, v20 vsel v29, v31, v3, v22 vaddfp v29, v29, v19 vsel v19, v3, v29, v22 vexptefp v1, v19 vspltisw v25, -0x09 vspltw v23, v23, 0x01 vsrw v19, v1, v25 vspltisw v29, 0x01 vsubuwm v19, v23, v19 vslw v26, v29, v25 vsel v28, v31, v1, v28 vor v28, v28, v26 vsrw v28, v28, v19 vsel v1, v1, v28, v22 b FDP_1c40_0x274 align 5 FDP_2580 dc.l 0x17030202 dc.l 0x01010101 dc.l 0x00000000 dc.l 0x00000000 FDP_2590 dc.l 0xc2fc0004 dc.l 0x00000041 dc.l 0x42800000 dc.l 0xc3150001 major_0x07d80_0x20 ; OUTSIDE REFERER vspltisw v23, 9 vslw v19, v3, v23 lwz r9, 0x064c(r1) llabel r8, FDP_2580 add r8, r8, r9 lvx v23, 0, r8 vperm v22, v23, v23, v19 vspltisw v21, 4 vsrw v21, v19, v21 vperm v21, v23, v23, v21 li r8, 0 lvsl v20, r8, r8 vspltisw v23, 3 vslw v20, v20, v23 vspltisb v23, 4 vaddubm v19, v20, v23 vspltw v20, v20, 0 vspltw v19, v19, 0 vaddubm v21, v21, v20 vaddubm v22, v22, v19 vminub v22, v22, v21 vsldoi v21, v22, v22, 2 vminub v22, v22, v21 vsldoi v21, v22, v22,1 vminub v22, v22, v21 vspltisw v21, -8 vsrw v22, v22, v21 blr ; No clue what this does align 5 FDP_2620 dc.l 0x7C00B8CE b FDP_011C dc.l 0x7C20B8CE b FDP_011C dc.l 0x7C40B8CE b FDP_011C dc.l 0x7C60B8CE b FDP_011C dc.l 0x7C80B8CE b FDP_011C dc.l 0x7CA0B8CE b FDP_011C dc.l 0x7CC0B8CE b FDP_011C dc.l 0x7CE0B8CE b FDP_011C dc.l 0x7D00B8CE b FDP_011C dc.l 0x7D20B8CE b FDP_011C dc.l 0x7D40B8CE b FDP_011C dc.l 0x7D60B8CE b FDP_011C dc.l 0x7D80B8CE b FDP_011C dc.l 0x7DA0B8CE b FDP_011C dc.l 0x7DC0B8CE b FDP_011C dc.l 0x7DE0B8CE b FDP_011C dc.l 0x7E00B8CE b FDP_011C dc.l 0x7E20B8CE b FDP_011C dc.l 0x7E40B8CE b FDP_011C dc.l 0x7E60B8CE b FDP_011C dc.l 0x7E80B8CE b FDP_011C dc.l 0x7EA0B8CE b FDP_011C dc.l 0x7EC0B8CE b FDP_011C dc.l 0x7EE0B8CE b FDP_011C dc.l 0x7F00B8CE b FDP_011C dc.l 0x7F20B8CE b FDP_011C dc.l 0x7F40B8CE b FDP_011C dc.l 0x7F60B8CE b FDP_011C dc.l 0x7F80B8CE b FDP_011C dc.l 0x7FA0B8CE b FDP_011C dc.l 0x7FC0B8CE b FDP_011C dc.l 0x7FE0B8CE b FDP_011C dc.l 0x7C00B80E b FDP_0DA0 dc.l 0x7C20B80E b FDP_0DA0 dc.l 0x7C40B80E b FDP_0DA0 dc.l 0x7C60B80E b FDP_0DA0 dc.l 0x7C80B80E b FDP_0DA0 dc.l 0x7CA0B80E b FDP_0DA0 dc.l 0x7CC0B80E b FDP_0DA0 dc.l 0x7CE0B80E b FDP_0DA0 dc.l 0x7D00B80E b FDP_0DA0 dc.l 0x7D20B80E b FDP_0DA0 dc.l 0x7D40B80E b FDP_0DA0 dc.l 0x7D60B80E b FDP_0DA0 dc.l 0x7D80B80E b FDP_0DA0 dc.l 0x7DA0B80E b FDP_0DA0 dc.l 0x7DC0B80E b FDP_0DA0 dc.l 0x7DE0B80E b FDP_0DA0 dc.l 0x7E00B80E b FDP_0DA0 dc.l 0x7E20B80E b FDP_0DA0 dc.l 0x7E40B80E b FDP_0DA0 dc.l 0x7E60B80E b FDP_0DA0 dc.l 0x7E80B80E b FDP_0DA0 dc.l 0x7EA0B80E b FDP_0DA0 dc.l 0x7EC0B80E b FDP_0DA0 dc.l 0x7EE0B80E b FDP_0DA0 dc.l 0x7F00B80E b FDP_0DA0 dc.l 0x7F20B80E b FDP_0DA0 dc.l 0x7F40B80E b FDP_0DA0 dc.l 0x7F60B80E b FDP_0DA0 dc.l 0x7F80B80E b FDP_0DA0 dc.l 0x7FA0B80E b FDP_0DA0 dc.l 0x7FC0B80E b FDP_0DA0 dc.l 0x7FE0B80E b FDP_0DA0 dc.l 0x7C00B84E b FDP_0DA0 dc.l 0x7C20B84E b FDP_0DA0 dc.l 0x7C40B84E b FDP_0DA0 dc.l 0x7C60B84E b FDP_0DA0 dc.l 0x7C80B84E b FDP_0DA0 dc.l 0x7CA0B84E b FDP_0DA0 dc.l 0x7CC0B84E b FDP_0DA0 dc.l 0x7CE0B84E b FDP_0DA0 dc.l 0x7D00B84E b FDP_0DA0 dc.l 0x7D20B84E b FDP_0DA0 dc.l 0x7D40B84E b FDP_0DA0 dc.l 0x7D60B84E b FDP_0DA0 dc.l 0x7D80B84E b FDP_0DA0 dc.l 0x7DA0B84E b FDP_0DA0 dc.l 0x7DC0B84E b FDP_0DA0 dc.l 0x7DE0B84E b FDP_0DA0 dc.l 0x7E00B84E b FDP_0DA0 dc.l 0x7E20B84E b FDP_0DA0 dc.l 0x7E40B84E b FDP_0DA0 dc.l 0x7E60B84E b FDP_0DA0 dc.l 0x7E80B84E b FDP_0DA0 dc.l 0x7EA0B84E b FDP_0DA0 dc.l 0x7EC0B84E b FDP_0DA0 dc.l 0x7EE0B84E b FDP_0DA0 dc.l 0x7F00B84E b FDP_0DA0 dc.l 0x7F20B84E b FDP_0DA0 dc.l 0x7F40B84E b FDP_0DA0 dc.l 0x7F60B84E b FDP_0DA0 dc.l 0x7F80B84E b FDP_0DA0 dc.l 0x7FA0B84E b FDP_0DA0 dc.l 0x7FC0B84E b FDP_0DA0 dc.l 0x7FE0B84E b FDP_0DA0 dc.l 0x7C00B88E b FDP_0DA0 dc.l 0x7C20B88E b FDP_0DA0 dc.l 0x7C40B88E b FDP_0DA0 dc.l 0x7C60B88E b FDP_0DA0 dc.l 0x7C80B88E b FDP_0DA0 dc.l 0x7CA0B88E b FDP_0DA0 dc.l 0x7CC0B88E b FDP_0DA0 dc.l 0x7CE0B88E b FDP_0DA0 dc.l 0x7D00B88E b FDP_0DA0 dc.l 0x7D20B88E b FDP_0DA0 dc.l 0x7D40B88E b FDP_0DA0 dc.l 0x7D60B88E b FDP_0DA0 dc.l 0x7D80B88E b FDP_0DA0 dc.l 0x7DA0B88E b FDP_0DA0 dc.l 0x7DC0B88E b FDP_0DA0 dc.l 0x7DE0B88E b FDP_0DA0 dc.l 0x7E00B88E b FDP_0DA0 dc.l 0x7E20B88E b FDP_0DA0 dc.l 0x7E40B88E b FDP_0DA0 dc.l 0x7E60B88E b FDP_0DA0 dc.l 0x7E80B88E b FDP_0DA0 dc.l 0x7EA0B88E b FDP_0DA0 dc.l 0x7EC0B88E b FDP_0DA0 dc.l 0x7EE0B88E b FDP_0DA0 dc.l 0x7F00B88E b FDP_0DA0 dc.l 0x7F20B88E b FDP_0DA0 dc.l 0x7F40B88E b FDP_0DA0 dc.l 0x7F60B88E b FDP_0DA0 dc.l 0x7F80B88E b FDP_0DA0 dc.l 0x7FA0B88E b FDP_0DA0 dc.l 0x7FC0B88E b FDP_0DA0 dc.l 0x7FE0B88E b FDP_0DA0 dc.l 0x7C00B9CE b FDP_011C dc.l 0x7C20B9CE b FDP_011C dc.l 0x7C40B9CE b FDP_011C dc.l 0x7C60B9CE b FDP_011C dc.l 0x7C80B9CE b FDP_011C dc.l 0x7CA0B9CE b FDP_011C dc.l 0x7CC0B9CE b FDP_011C dc.l 0x7CE0B9CE b FDP_011C dc.l 0x7D00B9CE b FDP_011C dc.l 0x7D20B9CE b FDP_011C dc.l 0x7D40B9CE b FDP_011C dc.l 0x7D60B9CE b FDP_011C dc.l 0x7D80B9CE b FDP_011C dc.l 0x7DA0B9CE b FDP_011C dc.l 0x7DC0B9CE b FDP_011C dc.l 0x7DE0B9CE b FDP_011C dc.l 0x7E00B9CE b FDP_011C dc.l 0x7E20B9CE b FDP_011C dc.l 0x7E40B9CE b FDP_011C dc.l 0x7E60B9CE b FDP_011C dc.l 0x7E80B9CE b FDP_011C dc.l 0x7EA0B9CE b FDP_011C dc.l 0x7EC0B9CE b FDP_011C dc.l 0x7EE0B9CE b FDP_011C dc.l 0x7F00B9CE b FDP_011C dc.l 0x7F20B9CE b FDP_011C dc.l 0x7F40B9CE b FDP_011C dc.l 0x7F60B9CE b FDP_011C dc.l 0x7F80B9CE b FDP_011C dc.l 0x7FA0B9CE b FDP_011C dc.l 0x7FC0B9CE b FDP_011C dc.l 0x7FE0B9CE b FDP_011C dc.l 0x7C00B90E b FDP_104C dc.l 0x7C20B90E b FDP_104C dc.l 0x7C40B90E b FDP_104C dc.l 0x7C60B90E b FDP_104C dc.l 0x7C80B90E b FDP_104C dc.l 0x7CA0B90E b FDP_104C dc.l 0x7CC0B90E b FDP_104C dc.l 0x7CE0B90E b FDP_104C dc.l 0x7D00B90E b FDP_104C dc.l 0x7D20B90E b FDP_104C dc.l 0x7D40B90E b FDP_104C dc.l 0x7D60B90E b FDP_104C dc.l 0x7D80B90E b FDP_104C dc.l 0x7DA0B90E b FDP_104C dc.l 0x7DC0B90E b FDP_104C dc.l 0x7DE0B90E b FDP_104C dc.l 0x7E00B90E b FDP_104C dc.l 0x7E20B90E b FDP_104C dc.l 0x7E40B90E b FDP_104C dc.l 0x7E60B90E b FDP_104C dc.l 0x7E80B90E b FDP_104C dc.l 0x7EA0B90E b FDP_104C dc.l 0x7EC0B90E b FDP_104C dc.l 0x7EE0B90E b FDP_104C dc.l 0x7F00B90E b FDP_104C dc.l 0x7F20B90E b FDP_104C dc.l 0x7F40B90E b FDP_104C dc.l 0x7F60B90E b FDP_104C dc.l 0x7F80B90E b FDP_104C dc.l 0x7FA0B90E b FDP_104C dc.l 0x7FC0B90E b FDP_104C dc.l 0x7FE0B90E b FDP_104C dc.l 0x7C00B94E b FDP_1058 dc.l 0x7C20B94E b FDP_1058 dc.l 0x7C40B94E b FDP_1058 dc.l 0x7C60B94E b FDP_1058 dc.l 0x7C80B94E b FDP_1058 dc.l 0x7CA0B94E b FDP_1058 dc.l 0x7CC0B94E b FDP_1058 dc.l 0x7CE0B94E b FDP_1058 dc.l 0x7D00B94E b FDP_1058 dc.l 0x7D20B94E b FDP_1058 dc.l 0x7D40B94E b FDP_1058 dc.l 0x7D60B94E b FDP_1058 dc.l 0x7D80B94E b FDP_1058 dc.l 0x7DA0B94E b FDP_1058 dc.l 0x7DC0B94E b FDP_1058 dc.l 0x7DE0B94E b FDP_1058 dc.l 0x7E00B94E b FDP_1058 dc.l 0x7E20B94E b FDP_1058 dc.l 0x7E40B94E b FDP_1058 dc.l 0x7E60B94E b FDP_1058 dc.l 0x7E80B94E b FDP_1058 dc.l 0x7EA0B94E b FDP_1058 dc.l 0x7EC0B94E b FDP_1058 dc.l 0x7EE0B94E b FDP_1058 dc.l 0x7F00B94E b FDP_1058 dc.l 0x7F20B94E b FDP_1058 dc.l 0x7F40B94E b FDP_1058 dc.l 0x7F60B94E b FDP_1058 dc.l 0x7F80B94E b FDP_1058 dc.l 0x7FA0B94E b FDP_1058 dc.l 0x7FC0B94E b FDP_1058 dc.l 0x7FE0B94E b FDP_1058 dc.l 0x7C00B98E b FDP_1064 dc.l 0x7C20B98E b FDP_1064 dc.l 0x7C40B98E b FDP_1064 dc.l 0x7C60B98E b FDP_1064 dc.l 0x7C80B98E b FDP_1064 dc.l 0x7CA0B98E b FDP_1064 dc.l 0x7CC0B98E b FDP_1064 dc.l 0x7CE0B98E b FDP_1064 dc.l 0x7D00B98E b FDP_1064 dc.l 0x7D20B98E b FDP_1064 dc.l 0x7D40B98E b FDP_1064 dc.l 0x7D60B98E b FDP_1064 dc.l 0x7D80B98E b FDP_1064 dc.l 0x7DA0B98E b FDP_1064 dc.l 0x7DC0B98E b FDP_1064 dc.l 0x7DE0B98E b FDP_1064 dc.l 0x7E00B98E b FDP_1064 dc.l 0x7E20B98E b FDP_1064 dc.l 0x7E40B98E b FDP_1064 dc.l 0x7E60B98E b FDP_1064 dc.l 0x7E80B98E b FDP_1064 dc.l 0x7EA0B98E b FDP_1064 dc.l 0x7EC0B98E b FDP_1064 dc.l 0x7EE0B98E b FDP_1064 dc.l 0x7F00B98E b FDP_1064 dc.l 0x7F20B98E b FDP_1064 dc.l 0x7F40B98E b FDP_1064 dc.l 0x7F60B98E b FDP_1064 dc.l 0x7F80B98E b FDP_1064 dc.l 0x7FA0B98E b FDP_1064 dc.l 0x7FC0B98E b FDP_1064 dc.l 0x7FE0B98E b FDP_1064