From 23b61d3ea5595a66d928f84d079187853f685b6c Mon Sep 17 00:00:00 2001 From: Nicholas Kirchner Date: Thu, 22 Aug 2013 19:57:00 -0500 Subject: [PATCH] Forked from revision 11 at http://sourceforge.net/p/x49gp/code/11/tree/ --- 4950_92.bin | Bin 0 -> 1294336 bytes 49Gp_88.bin | Bin 0 -> 1425408 bytes EqnData.lib | Bin 0 -> 57505 bytes EqnLib.lib | Bin 0 -> 11315 bytes HP49GP_IO_PORT | 185 + MEMORY | 21 + Makefile | 321 + README | 63 + README.QEMU | 1 + README.QUICKSTART | 158 + README.config | 11 + SYSCALL-28-TRACE | 327 + bitmaps/.svn/all-wcprops | 545 + bitmaps/.svn/entries | 3091 ++++++ bitmaps/.svn/text-base/ann_alpha.xbm.svn-base | 5 + .../.svn/text-base/ann_battery.xbm.svn-base | 5 + bitmaps/.svn/text-base/ann_busy.xbm.svn-base | 5 + bitmaps/.svn/text-base/ann_io.xbm.svn-base | 5 + bitmaps/.svn/text-base/ann_left.xbm.svn-base | 5 + bitmaps/.svn/text-base/ann_right.xbm.svn-base | 5 + .../.svn/text-base/button_large.xbm.svn-base | 19 + .../.svn/text-base/button_normal.xbm.svn-base | 17 + .../.svn/text-base/button_round.pix.svn-base | 157 + .../.svn/text-base/button_round.xbm.svn-base | 17 + .../.svn/text-base/button_small.xbm.svn-base | 15 + .../.svn/text-base/button_tiny.xbm.svn-base | 13 + bitmaps/.svn/text-base/tiny_A.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_B.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_C.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_D.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_E.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_F.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_G.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_H.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_I.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_J.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_K.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_L.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_M.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_N.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_O.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_P.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_Q.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_R.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_S.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_T.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_U.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_V.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_W.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_X.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_Y.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_Z.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny__i.xbm.svn-base | 6 + .../text-base/tiny_ampersand.xbm.svn-base | 6 + .../text-base/tiny_arrowleft.xbm.svn-base | 6 + .../text-base/tiny_arrowright.xbm.svn-base | 6 + .../text-base/tiny_braceleft.xbm.svn-base | 6 + .../text-base/tiny_braceright.xbm.svn-base | 6 + .../text-base/tiny_bracketleft.xbm.svn-base | 6 + .../text-base/tiny_bracketright.xbm.svn-base | 6 + .../.svn/text-base/tiny_colon.xbm.svn-base | 6 + .../.svn/text-base/tiny_comma.xbm.svn-base | 6 + .../.svn/text-base/tiny_equal.xbm.svn-base | 6 + .../.svn/text-base/tiny_greater.xbm.svn-base | 6 + .../text-base/tiny_guillemotleft.xbm.svn-base | 6 + .../tiny_guillemotright.xbm.svn-base | 6 + .../.svn/text-base/tiny_hyphen.xbm.svn-base | 6 + .../text-base/tiny_large_comma.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_less.xbm.svn-base | 6 + .../tiny_math_arrowleft.xbm.svn-base | 7 + .../tiny_math_arrowright.xbm.svn-base | 7 + .../tiny_math_downarrowleft.xbm.svn-base | 7 + .../tiny_math_downarrowright.xbm.svn-base | 7 + .../.svn/text-base/tiny_math_e.xbm.svn-base | 6 + .../text-base/tiny_math_equal.xbm.svn-base | 6 + .../text-base/tiny_math_greater.xbm.svn-base | 6 + .../tiny_math_greaterequal.xbm.svn-base | 6 + .../text-base/tiny_math_infinity.xbm.svn-base | 6 + .../text-base/tiny_math_integral.xbm.svn-base | 7 + .../text-base/tiny_math_less.xbm.svn-base | 6 + .../tiny_math_lessequal.xbm.svn-base | 6 + .../text-base/tiny_math_notequal.xbm.svn-base | 6 + .../tiny_math_numbersign.xbm.svn-base | 7 + .../tiny_math_partialdiff.xbm.svn-base | 6 + .../.svn/text-base/tiny_math_pi.xbm.svn-base | 7 + .../text-base/tiny_math_radical.xbm.svn-base | 6 + .../tiny_math_summation.xbm.svn-base | 6 + .../.svn/text-base/tiny_math_x.xbm.svn-base | 6 + .../.svn/text-base/tiny_math_y.xbm.svn-base | 6 + .../.svn/text-base/tiny_notdef.xbm.svn-base | 6 + .../text-base/tiny_numbersign.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_one.xbm.svn-base | 6 + .../text-base/tiny_overscore.xbm.svn-base | 6 + .../text-base/tiny_parenleft.xbm.svn-base | 6 + .../text-base/tiny_parenright.xbm.svn-base | 6 + .../.svn/text-base/tiny_period.xbm.svn-base | 6 + .../.svn/text-base/tiny_quotedbl.xbm.svn-base | 6 + .../.svn/text-base/tiny_slash.xbm.svn-base | 6 + .../.svn/text-base/tiny_three.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_two.xbm.svn-base | 6 + .../text-base/tiny_twosuperior.xbm.svn-base | 6 + .../text-base/tiny_underscore.xbm.svn-base | 6 + .../text-base/tiny_xsuperior.xbm.svn-base | 6 + bitmaps/.svn/text-base/tiny_zero.xbm.svn-base | 6 + bitmaps/CVS/.svn/all-wcprops | 23 + bitmaps/CVS/.svn/entries | 130 + bitmaps/CVS/.svn/text-base/Entries.svn-base | 91 + .../CVS/.svn/text-base/Repository.svn-base | 1 + bitmaps/CVS/.svn/text-base/Root.svn-base | 1 + bitmaps/CVS/Entries | 91 + bitmaps/CVS/Repository | 1 + bitmaps/CVS/Root | 1 + bitmaps/ann_alpha.xbm | 5 + bitmaps/ann_battery.xbm | 5 + bitmaps/ann_busy.xbm | 5 + bitmaps/ann_io.xbm | 5 + bitmaps/ann_left.xbm | 5 + bitmaps/ann_right.xbm | 5 + bitmaps/button_large.xbm | 19 + bitmaps/button_normal.xbm | 17 + bitmaps/button_round.pix | 157 + bitmaps/button_round.xbm | 17 + bitmaps/button_small.xbm | 15 + bitmaps/button_tiny.xbm | 13 + bitmaps/tiny_A.xbm | 6 + bitmaps/tiny_B.xbm | 6 + bitmaps/tiny_C.xbm | 6 + bitmaps/tiny_D.xbm | 6 + bitmaps/tiny_E.xbm | 6 + bitmaps/tiny_F.xbm | 6 + bitmaps/tiny_G.xbm | 6 + bitmaps/tiny_H.xbm | 6 + bitmaps/tiny_I.xbm | 6 + bitmaps/tiny_J.xbm | 6 + bitmaps/tiny_K.xbm | 6 + bitmaps/tiny_L.xbm | 6 + bitmaps/tiny_M.xbm | 6 + bitmaps/tiny_N.xbm | 6 + bitmaps/tiny_O.xbm | 6 + bitmaps/tiny_P.xbm | 6 + bitmaps/tiny_Q.xbm | 6 + bitmaps/tiny_R.xbm | 6 + bitmaps/tiny_S.xbm | 6 + bitmaps/tiny_T.xbm | 6 + bitmaps/tiny_U.xbm | 6 + bitmaps/tiny_V.xbm | 6 + bitmaps/tiny_W.xbm | 6 + bitmaps/tiny_X.xbm | 6 + bitmaps/tiny_Y.xbm | 6 + bitmaps/tiny_Z.xbm | 6 + bitmaps/tiny__i.xbm | 6 + bitmaps/tiny_ampersand.xbm | 6 + bitmaps/tiny_arrowleft.xbm | 6 + bitmaps/tiny_arrowright.xbm | 6 + bitmaps/tiny_braceleft.xbm | 6 + bitmaps/tiny_braceright.xbm | 6 + bitmaps/tiny_bracketleft.xbm | 6 + bitmaps/tiny_bracketright.xbm | 6 + bitmaps/tiny_colon.xbm | 6 + bitmaps/tiny_comma.xbm | 6 + bitmaps/tiny_equal.xbm | 6 + bitmaps/tiny_greater.xbm | 6 + bitmaps/tiny_guillemotleft.xbm | 6 + bitmaps/tiny_guillemotright.xbm | 6 + bitmaps/tiny_hyphen.xbm | 6 + bitmaps/tiny_large_comma.xbm | 6 + bitmaps/tiny_less.xbm | 6 + bitmaps/tiny_math_arrowleft.xbm | 7 + bitmaps/tiny_math_arrowright.xbm | 7 + bitmaps/tiny_math_downarrowleft.xbm | 7 + bitmaps/tiny_math_downarrowright.xbm | 7 + bitmaps/tiny_math_e.xbm | 6 + bitmaps/tiny_math_equal.xbm | 6 + bitmaps/tiny_math_greater.xbm | 6 + bitmaps/tiny_math_greaterequal.xbm | 6 + bitmaps/tiny_math_infinity.xbm | 6 + bitmaps/tiny_math_integral.xbm | 7 + bitmaps/tiny_math_less.xbm | 6 + bitmaps/tiny_math_lessequal.xbm | 6 + bitmaps/tiny_math_notequal.xbm | 6 + bitmaps/tiny_math_numbersign.xbm | 7 + bitmaps/tiny_math_partialdiff.xbm | 6 + bitmaps/tiny_math_pi.xbm | 7 + bitmaps/tiny_math_radical.xbm | 6 + bitmaps/tiny_math_summation.xbm | 6 + bitmaps/tiny_math_x.xbm | 6 + bitmaps/tiny_math_y.xbm | 6 + bitmaps/tiny_notdef.xbm | 6 + bitmaps/tiny_numbersign.xbm | 6 + bitmaps/tiny_one.xbm | 6 + bitmaps/tiny_overscore.xbm | 6 + bitmaps/tiny_parenleft.xbm | 6 + bitmaps/tiny_parenright.xbm | 6 + bitmaps/tiny_period.xbm | 6 + bitmaps/tiny_quotedbl.xbm | 6 + bitmaps/tiny_slash.xbm | 6 + bitmaps/tiny_three.xbm | 6 + bitmaps/tiny_two.xbm | 6 + bitmaps/tiny_twosuperior.xbm | 6 + bitmaps/tiny_underscore.xbm | 6 + bitmaps/tiny_xsuperior.xbm | 6 + bitmaps/tiny_zero.xbm | 6 + block-qcow.c | 600 ++ block-raw.c | 885 ++ block-vvfat.c | 3045 ++++++ block.c | 631 ++ boot-49g+.bin | Bin 0 -> 16384 bytes boot-50g.bin | Bin 0 -> 16384 bytes boot.bin | Bin 0 -> 16384 bytes config.tmpl | 13 + flash.c | 639 ++ gdbstub.c | 672 ++ gdbstub.h | 18 + hex2bin.c | 117 + hp49g+.png | Bin 0 -> 425575 bytes hp49g+small-notext.png | Bin 0 -> 441286 bytes hp49g-u.bin | Bin 0 -> 2080768 bytes hp50g-hack.png | Bin 0 -> 1110555 bytes hp50g.png | Bin 0 -> 281250 bytes include/.svn/all-wcprops | 113 + include/.svn/entries | 643 ++ include/.svn/text-base/bitmap_font.h.svn-base | 37 + include/.svn/text-base/bitmaps.h.svn-base | 21 + include/.svn/text-base/block.h.svn-base | 187 + include/.svn/text-base/block_int.h.svn-base | 104 + include/.svn/text-base/byteorder.h.svn-base | 91 + include/.svn/text-base/glyphname.h.svn-base | 238 + include/.svn/text-base/list.h.svn-base | 600 ++ include/.svn/text-base/s3c2410.h.svn-base | 348 + .../.svn/text-base/s3c2410_intc.h.svn-base | 72 + include/.svn/text-base/s3c2410_mmu.h.svn-base | 37 + .../.svn/text-base/s3c2410_power.h.svn-base | 28 + .../.svn/text-base/s3c2410_timer.h.svn-base | 48 + include/.svn/text-base/saturn.h.svn-base | 43 + include/.svn/text-base/symbol.h.svn-base | 68 + include/.svn/text-base/x49gp.h.svn-base | 144 + include/.svn/text-base/x49gp_timer.h.svn-base | 32 + include/.svn/text-base/x49gp_types.h.svn-base | 23 + include/.svn/text-base/x49gp_ui.h.svn-base | 125 + include/CVS/.svn/all-wcprops | 23 + include/CVS/.svn/entries | 130 + include/CVS/.svn/text-base/Entries.svn-base | 18 + .../CVS/.svn/text-base/Repository.svn-base | 1 + include/CVS/.svn/text-base/Root.svn-base | 1 + include/CVS/Entries | 18 + include/CVS/Repository | 1 + include/CVS/Root | 1 + include/bitmap_font.h | 37 + include/bitmaps.h | 21 + include/block.h | 187 + include/block_int.h | 104 + include/byteorder.h | 91 + include/glyphname.h | 238 + include/list.h | 600 ++ include/s3c2410.h | 348 + include/s3c2410_intc.h | 72 + include/s3c2410_mmu.h | 37 + include/s3c2410_power.h | 28 + include/s3c2410_timer.h | 48 + include/saturn.h | 43 + include/symbol.h | 68 + include/x49gp.h | 144 + include/x49gp_timer.h | 32 + include/x49gp_types.h | 23 + include/x49gp_ui.h | 125 + le32hex2bin.c | 117 + main.c | 435 + module.c | 456 + newconfig | 18 + qemu/.cvsignore | 1 + qemu/.svn/all-wcprops | 23 + qemu/.svn/entries | 139 + qemu/.svn/prop-base/prepare.sh.svn-base | 5 + .../.svn/prop-base/qemu-0.9.0.tar.gz.svn-base | 5 + qemu/.svn/text-base/.cvsignore.svn-base | 1 + qemu/.svn/text-base/prepare.sh.svn-base | 61 + .../.svn/text-base/qemu-0.9.0.tar.gz.svn-base | Bin 0 -> 1901741 bytes qemu/CVS/.svn/all-wcprops | 23 + qemu/CVS/.svn/entries | 130 + qemu/CVS/.svn/text-base/Entries.svn-base | 4 + qemu/CVS/.svn/text-base/Repository.svn-base | 1 + qemu/CVS/.svn/text-base/Root.svn-base | 1 + qemu/CVS/Entries | 4 + qemu/CVS/Repository | 1 + qemu/CVS/Root | 1 + qemu/patches/.svn/all-wcprops | 161 + qemu/patches/.svn/entries | 915 ++ .../text-base/q_block.c_hdled_1.diff.svn-base | 34 + .../q_block_int.h_hdled_1.diff.svn-base | 10 + .../text-base/q_host-cocoa_02.diff.svn-base | 26 + .../.svn/text-base/q_vga.c_02.diff.svn-base | 41 + ...dyngen-check-stack-clobbers.patch.svn-base | 137 + .../qemu-0.7.2-gcc4-opts.patch.svn-base | 37 + .../qemu-0.8.0-gcc4-hacks.patch.svn-base | 118 + .../qemu-0.8.0-osx-bugfix.patch.svn-base | 155 + .../qemu-0.9.0-arm-shift.patch.svn-base | 20 + ...force-16byte-stack-boundary.patch.svn-base | 19 + .../text-base/qemu-0.9.0-gcc4.patch.svn-base | 892 ++ .../qemu-0.9.0-i386-FORCE_RET.patch.svn-base | 26 + .../qemu-0.9.0-osx-intel-port.patch.svn-base | 329 + .../text-base/qemu-0.9.0-qcow2.diff.svn-base | 26 + .../qemu-0.9.0-sparc-clobber.patch.svn-base | 10 + ...u-0.9.0-sparc-compile-flags.patch.svn-base | 23 + ...u-0.9.0-sparc-load-store-le.patch.svn-base | 67 + .../qemu-0.9.0-sparc-register.patch.svn-base | 173 + ...-0.9.0-x49gp-arm-dump-state.patch.svn-base | 37 + .../qemu-0.9.0-x49gp-arm-mmu.patch.svn-base | 192 + ...0.9.0-x49gp-arm-semihosting.patch.svn-base | 50 + .../qemu-0.9.0-x49gp-block.patch.svn-base | 1302 +++ ...u-0.9.0-x49gp-build-libqemu.patch.svn-base | 15 + ....9.0-x49gp-debug-unassigned.patch.svn-base | 36 + ...-0.9.0-x49gp-phys_ram_dirty.patch.svn-base | 17 + .../qemu-2ndbootdevice_04.diff.svn-base | 165 + qemu/patches/CVS/.svn/all-wcprops | 23 + qemu/patches/CVS/.svn/entries | 130 + .../CVS/.svn/text-base/Entries.svn-base | 27 + .../CVS/.svn/text-base/Repository.svn-base | 1 + qemu/patches/CVS/.svn/text-base/Root.svn-base | 1 + qemu/patches/CVS/Entries | 27 + qemu/patches/CVS/Repository | 1 + qemu/patches/CVS/Root | 1 + qemu/patches/q_block.c_hdled_1.diff | 34 + qemu/patches/q_block_int.h_hdled_1.diff | 10 + qemu/patches/q_host-cocoa_02.diff | 26 + qemu/patches/q_vga.c_02.diff | 41 + ...mu-0.7.2-dyngen-check-stack-clobbers.patch | 137 + qemu/patches/qemu-0.7.2-gcc4-opts.patch | 37 + qemu/patches/qemu-0.8.0-gcc4-hacks.patch | 118 + qemu/patches/qemu-0.8.0-osx-bugfix.patch | 155 + qemu/patches/qemu-0.9.0-arm-shift.patch | 20 + ...-0.9.0-enforce-16byte-stack-boundary.patch | 19 + qemu/patches/qemu-0.9.0-gcc4.patch | 892 ++ qemu/patches/qemu-0.9.0-i386-FORCE_RET.patch | 26 + qemu/patches/qemu-0.9.0-osx-intel-port.patch | 329 + qemu/patches/qemu-0.9.0-qcow2.diff | 26 + qemu/patches/qemu-0.9.0-sparc-clobber.patch | 10 + .../qemu-0.9.0-sparc-compile-flags.patch | 23 + .../qemu-0.9.0-sparc-load-store-le.patch | 67 + qemu/patches/qemu-0.9.0-sparc-register.patch | 173 + .../qemu-0.9.0-x49gp-arm-dump-state.patch | 37 + qemu/patches/qemu-0.9.0-x49gp-arm-mmu.patch | 192 + .../qemu-0.9.0-x49gp-arm-semihosting.patch | 50 + qemu/patches/qemu-0.9.0-x49gp-block.patch | 1302 +++ .../qemu-0.9.0-x49gp-build-libqemu.patch | 15 + .../qemu-0.9.0-x49gp-debug-unassigned.patch | 36 + .../qemu-0.9.0-x49gp-phys_ram_dirty.patch | 17 + qemu/patches/qemu-2ndbootdevice_04.diff | 165 + qemu/prepare.sh | 61 + qemu/qemu-0.9.0.tar.gz | Bin 0 -> 1901741 bytes qemu/qemu-git/.svn/all-wcprops | 431 + qemu/qemu-git/.svn/entries | 2457 +++++ .../.svn/prop-base/configure-small.svn-base | 5 + .../.svn/prop-base/create_config.svn-base | 5 + .../.svn/text-base/Makefile-small.hw.svn-base | 25 + .../text-base/Makefile-small.objs.svn-base | 32 + .../.svn/text-base/Makefile-small.svn-base | 116 + .../text-base/Makefile-small.target.svn-base | 104 + qemu/qemu-git/.svn/text-base/VERSION.svn-base | 1 + .../.svn/text-base/alpha-dis.c.svn-base | 1917 ++++ .../qemu-git/.svn/text-base/alpha.ld.svn-base | 127 + .../.svn/text-base/arm-dis.c.svn-base | 4117 ++++++++ qemu/qemu-git/.svn/text-base/arm.ld.svn-base | 153 + qemu/qemu-git/.svn/text-base/bswap.h.svn-base | 217 + .../.svn/text-base/cache-utils.h.svn-base | 41 + .../qemu-git/.svn/text-base/config.h.svn-base | 2 + .../.svn/text-base/configure-small.svn-base | 1094 ++ .../.svn/text-base/cpu-all.h.svn-base | 1076 ++ .../.svn/text-base/cpu-common.h.svn-base | 90 + .../.svn/text-base/cpu-defs.h.svn-base | 202 + .../.svn/text-base/cpu-exec.c.svn-base | 1201 +++ .../.svn/text-base/create_config.svn-base | 99 + .../.svn/text-base/cris-dis.c.svn-base | 2890 +++++ .../qemu-git/.svn/text-base/cutils.c.svn-base | 237 + .../.svn/text-base/def-helper.h.svn-base | 220 + .../.svn/text-base/dis-asm.h.svn-base | 477 + qemu/qemu-git/.svn/text-base/disas.c.svn-base | 416 + qemu/qemu-git/.svn/text-base/disas.h.svn-base | 41 + .../.svn/text-base/dyngen-exec.h.svn-base | 130 + qemu/qemu-git/.svn/text-base/elf.h.svn-base | 1193 +++ .../.svn/text-base/exec-all.h.svn-base | 360 + qemu/qemu-git/.svn/text-base/exec.c.svn-base | 3720 +++++++ .../.svn/text-base/feature_to_c.sh.svn-base | 76 + .../.svn/text-base/gdbstub.h.svn-base | 35 + .../.svn/text-base/gen-icount.h.svn-base | 46 + .../.svn/text-base/host-utils.c.svn-base | 105 + .../.svn/text-base/host-utils.h.svn-base | 236 + .../.svn/text-base/hostregs_helper.h.svn-base | 61 + .../.svn/text-base/hppa-dis.c.svn-base | 2831 +++++ qemu/qemu-git/.svn/text-base/hppa.ld.svn-base | 213 + .../.svn/text-base/i386-dis.c.svn-base | 6559 ++++++++++++ qemu/qemu-git/.svn/text-base/i386.ld.svn-base | 141 + qemu/qemu-git/.svn/text-base/ia64.ld.svn-base | 209 + .../qemu-git/.svn/text-base/ioport.h.svn-base | 53 + qemu/qemu-git/.svn/text-base/kvm.h.svn-base | 142 + .../.svn/text-base/m68k-dis.c.svn-base | 5045 +++++++++ qemu/qemu-git/.svn/text-base/m68k.ld.svn-base | 175 + .../.svn/text-base/microblaze-dis.c.svn-base | 1102 ++ .../.svn/text-base/mips-dis.c.svn-base | 4842 +++++++++ qemu/qemu-git/.svn/text-base/mips.ld.svn-base | 224 + .../qemu-git/.svn/text-base/module.h.svn-base | 38 + qemu/qemu-git/.svn/text-base/osdep.h.svn-base | 108 + .../.svn/text-base/ppc-dis.c.svn-base | 5412 ++++++++++ qemu/qemu-git/.svn/text-base/ppc.ld.svn-base | 227 + .../qemu-git/.svn/text-base/ppc64.ld.svn-base | 220 + .../.svn/text-base/qemu-common.h.svn-base | 275 + .../.svn/text-base/qemu-lock.h.svn-base | 247 + .../.svn/text-base/qemu-log.h.svn-base | 93 + .../.svn/text-base/qemu-malloc.c.svn-base | 102 + .../.svn/text-base/qemu-queue.h.svn-base | 449 + .../.svn/text-base/rules.mak.svn-base | 55 + .../.svn/text-base/s390-dis.c.svn-base | 1704 +++ qemu/qemu-git/.svn/text-base/s390.ld.svn-base | 201 + .../.svn/text-base/sh4-dis.c.svn-base | 2083 ++++ .../.svn/text-base/softmmu_defs.h.svn-base | 22 + .../.svn/text-base/softmmu_exec.h.svn-base | 134 + .../.svn/text-base/softmmu_header.h.svn-base | 198 + .../text-base/softmmu_template.h.svn-base | 327 + .../.svn/text-base/sparc-dis.c.svn-base | 3253 ++++++ .../qemu-git/.svn/text-base/sparc.ld.svn-base | 150 + .../.svn/text-base/sparc64.ld.svn-base | 138 + .../.svn/text-base/targphys.h.svn-base | 24 + .../.svn/text-base/tcg-runtime.c.svn-base | 61 + .../.svn/text-base/translate-all.c.svn-base | 194 + .../.svn/text-base/x86_64.ld.svn-base | 170 + qemu/qemu-git/Makefile-small | 116 + qemu/qemu-git/Makefile-small.hw | 25 + qemu/qemu-git/Makefile-small.objs | 32 + qemu/qemu-git/Makefile-small.target | 104 + qemu/qemu-git/VERSION | 1 + qemu/qemu-git/alpha-dis.c | 1917 ++++ qemu/qemu-git/alpha.ld | 127 + qemu/qemu-git/arm-dis.c | 4117 ++++++++ qemu/qemu-git/arm.ld | 153 + qemu/qemu-git/bswap.h | 217 + qemu/qemu-git/cache-utils.h | 41 + qemu/qemu-git/config.h | 2 + qemu/qemu-git/configure-small | 1094 ++ qemu/qemu-git/cpu-all.h | 1076 ++ qemu/qemu-git/cpu-common.h | 90 + qemu/qemu-git/cpu-defs.h | 202 + qemu/qemu-git/cpu-exec.c | 1201 +++ qemu/qemu-git/create_config | 99 + qemu/qemu-git/cris-dis.c | 2890 +++++ qemu/qemu-git/cutils.c | 237 + qemu/qemu-git/def-helper.h | 220 + .../qemu-git/default-configs/.svn/all-wcprops | 11 + qemu/qemu-git/default-configs/.svn/entries | 62 + .../text-base/arm-softmmu-small.mak.svn-base | 3 + .../default-configs/arm-softmmu-small.mak | 3 + qemu/qemu-git/dis-asm.h | 477 + qemu/qemu-git/disas.c | 416 + qemu/qemu-git/disas.h | 41 + qemu/qemu-git/dyngen-exec.h | 130 + qemu/qemu-git/elf.h | 1193 +++ qemu/qemu-git/exec-all.h | 360 + qemu/qemu-git/exec.c | 3720 +++++++ qemu/qemu-git/feature_to_c.sh | 76 + qemu/qemu-git/fpu/.svn/all-wcprops | 41 + qemu/qemu-git/fpu/.svn/entries | 232 + .../text-base/softfloat-macros.h.svn-base | 719 ++ .../text-base/softfloat-native.c.svn-base | 534 + .../text-base/softfloat-native.h.svn-base | 499 + .../text-base/softfloat-specialize.h.svn-base | 581 ++ .../fpu/.svn/text-base/softfloat.c.svn-base | 5808 +++++++++++ .../fpu/.svn/text-base/softfloat.h.svn-base | 527 + qemu/qemu-git/fpu/softfloat-macros.h | 719 ++ qemu/qemu-git/fpu/softfloat-native.c | 534 + qemu/qemu-git/fpu/softfloat-native.h | 499 + qemu/qemu-git/fpu/softfloat-specialize.h | 581 ++ qemu/qemu-git/fpu/softfloat.c | 5808 +++++++++++ qemu/qemu-git/fpu/softfloat.h | 527 + qemu/qemu-git/gdb-xml/.svn/all-wcprops | 29 + qemu/qemu-git/gdb-xml/.svn/entries | 164 + .../.svn/text-base/arm-core.xml.svn-base | 31 + .../.svn/text-base/arm-neon.xml.svn-base | 88 + .../.svn/text-base/arm-vfp.xml.svn-base | 29 + .../.svn/text-base/arm-vfp3.xml.svn-base | 45 + qemu/qemu-git/gdb-xml/arm-core.xml | 31 + qemu/qemu-git/gdb-xml/arm-neon.xml | 88 + qemu/qemu-git/gdb-xml/arm-vfp.xml | 29 + qemu/qemu-git/gdb-xml/arm-vfp3.xml | 45 + qemu/qemu-git/gdbstub.h | 35 + qemu/qemu-git/gen-icount.h | 46 + qemu/qemu-git/host-utils.c | 105 + qemu/qemu-git/host-utils.h | 236 + qemu/qemu-git/hostregs_helper.h | 61 + qemu/qemu-git/hppa-dis.c | 2831 +++++ qemu/qemu-git/hppa.ld | 213 + qemu/qemu-git/i386-dis.c | 6559 ++++++++++++ qemu/qemu-git/i386.ld | 141 + qemu/qemu-git/ia64.ld | 209 + qemu/qemu-git/ioport.h | 53 + qemu/qemu-git/kvm.h | 142 + qemu/qemu-git/m68k-dis.c | 5045 +++++++++ qemu/qemu-git/m68k.ld | 175 + qemu/qemu-git/microblaze-dis.c | 1102 ++ qemu/qemu-git/mips-dis.c | 4842 +++++++++ qemu/qemu-git/mips.ld | 224 + qemu/qemu-git/module.h | 38 + qemu/qemu-git/osdep.h | 108 + qemu/qemu-git/ppc-dis.c | 5412 ++++++++++ qemu/qemu-git/ppc.ld | 227 + qemu/qemu-git/ppc64.ld | 220 + qemu/qemu-git/qemu-common.h | 275 + qemu/qemu-git/qemu-lock.h | 247 + qemu/qemu-git/qemu-log.h | 93 + qemu/qemu-git/qemu-malloc.c | 102 + qemu/qemu-git/qemu-queue.h | 449 + qemu/qemu-git/rules.mak | 55 + qemu/qemu-git/s390-dis.c | 1704 +++ qemu/qemu-git/s390.ld | 201 + qemu/qemu-git/sh4-dis.c | 2083 ++++ qemu/qemu-git/softmmu_defs.h | 22 + qemu/qemu-git/softmmu_exec.h | 134 + qemu/qemu-git/softmmu_header.h | 198 + qemu/qemu-git/softmmu_template.h | 327 + qemu/qemu-git/sparc-dis.c | 3253 ++++++ qemu/qemu-git/sparc.ld | 150 + qemu/qemu-git/sparc64.ld | 138 + qemu/qemu-git/target-arm/.svn/all-wcprops | 59 + qemu/qemu-git/target-arm/.svn/entries | 334 + .../target-arm/.svn/text-base/cpu.h.svn-base | 457 + .../target-arm/.svn/text-base/exec.h.svn-base | 60 + .../.svn/text-base/helper.c.svn-base | 2598 +++++ .../.svn/text-base/helpers.h.svn-base | 450 + .../.svn/text-base/iwmmxt_helper.c.svn-base | 681 ++ .../.svn/text-base/neon_helper.c.svn-base | 1459 +++ .../.svn/text-base/op_addsub.h.svn-base | 103 + .../.svn/text-base/op_helper.c.svn-base | 489 + .../.svn/text-base/translate.c.svn-base | 9254 +++++++++++++++++ qemu/qemu-git/target-arm/cpu.h | 457 + qemu/qemu-git/target-arm/exec.h | 60 + qemu/qemu-git/target-arm/helper.c | 2598 +++++ qemu/qemu-git/target-arm/helpers.h | 450 + qemu/qemu-git/target-arm/iwmmxt_helper.c | 681 ++ qemu/qemu-git/target-arm/neon_helper.c | 1459 +++ qemu/qemu-git/target-arm/op_addsub.h | 103 + qemu/qemu-git/target-arm/op_helper.c | 489 + qemu/qemu-git/target-arm/translate.c | 9254 +++++++++++++++++ qemu/qemu-git/targphys.h | 24 + qemu/qemu-git/tcg-runtime.c | 61 + qemu/qemu-git/tcg/.svn/all-wcprops | 53 + qemu/qemu-git/tcg/.svn/entries | 327 + .../tcg/.svn/text-base/LICENSE.svn-base | 3 + .../tcg/.svn/text-base/README.svn-base | 454 + .../qemu-git/tcg/.svn/text-base/TODO.svn-base | 14 + .../tcg/.svn/text-base/tcg-op.h.svn-base | 2183 ++++ .../tcg/.svn/text-base/tcg-opc.h.svn-base | 272 + .../tcg/.svn/text-base/tcg-runtime.h.svn-base | 13 + .../tcg/.svn/text-base/tcg.c.svn-base | 2085 ++++ .../tcg/.svn/text-base/tcg.h.svn-base | 468 + qemu/qemu-git/tcg/LICENSE | 3 + qemu/qemu-git/tcg/README | 454 + qemu/qemu-git/tcg/TODO | 14 + qemu/qemu-git/tcg/arm/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/arm/.svn/entries | 96 + .../arm/.svn/text-base/tcg-target.c.svn-base | 1708 +++ .../arm/.svn/text-base/tcg-target.h.svn-base | 85 + qemu/qemu-git/tcg/arm/tcg-target.c | 1708 +++ qemu/qemu-git/tcg/arm/tcg-target.h | 85 + qemu/qemu-git/tcg/hppa/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/hppa/.svn/entries | 96 + .../hppa/.svn/text-base/tcg-target.c.svn-base | 975 ++ .../hppa/.svn/text-base/tcg-target.h.svn-base | 203 + qemu/qemu-git/tcg/hppa/tcg-target.c | 975 ++ qemu/qemu-git/tcg/hppa/tcg-target.h | 203 + qemu/qemu-git/tcg/i386/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/i386/.svn/entries | 96 + .../i386/.svn/text-base/tcg-target.c.svn-base | 1262 +++ .../i386/.svn/text-base/tcg-target.h.svn-base | 67 + qemu/qemu-git/tcg/i386/tcg-target.c | 1262 +++ qemu/qemu-git/tcg/i386/tcg-target.h | 67 + qemu/qemu-git/tcg/mips/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/mips/.svn/entries | 96 + .../mips/.svn/text-base/tcg-target.c.svn-base | 1342 +++ .../mips/.svn/text-base/tcg-target.h.svn-base | 104 + qemu/qemu-git/tcg/mips/tcg-target.c | 1342 +++ qemu/qemu-git/tcg/mips/tcg-target.h | 104 + qemu/qemu-git/tcg/ppc/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/ppc/.svn/entries | 96 + .../ppc/.svn/text-base/tcg-target.c.svn-base | 1615 +++ .../ppc/.svn/text-base/tcg-target.h.svn-base | 89 + qemu/qemu-git/tcg/ppc/tcg-target.c | 1615 +++ qemu/qemu-git/tcg/ppc/tcg-target.h | 89 + qemu/qemu-git/tcg/ppc64/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/ppc64/.svn/entries | 96 + .../.svn/text-base/tcg-target.c.svn-base | 1570 +++ .../.svn/text-base/tcg-target.h.svn-base | 85 + qemu/qemu-git/tcg/ppc64/tcg-target.c | 1570 +++ qemu/qemu-git/tcg/ppc64/tcg-target.h | 85 + qemu/qemu-git/tcg/s390/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/s390/.svn/entries | 96 + .../s390/.svn/text-base/tcg-target.c.svn-base | 105 + .../s390/.svn/text-base/tcg-target.h.svn-base | 69 + qemu/qemu-git/tcg/s390/tcg-target.c | 105 + qemu/qemu-git/tcg/s390/tcg-target.h | 69 + qemu/qemu-git/tcg/sparc/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/sparc/.svn/entries | 96 + .../.svn/text-base/tcg-target.c.svn-base | 1402 +++ .../.svn/text-base/tcg-target.h.svn-base | 129 + qemu/qemu-git/tcg/sparc/tcg-target.c | 1402 +++ qemu/qemu-git/tcg/sparc/tcg-target.h | 129 + qemu/qemu-git/tcg/tcg-op.h | 2183 ++++ qemu/qemu-git/tcg/tcg-opc.h | 272 + qemu/qemu-git/tcg/tcg-runtime.h | 13 + qemu/qemu-git/tcg/tcg.c | 2085 ++++ qemu/qemu-git/tcg/tcg.h | 468 + qemu/qemu-git/tcg/x86_64/.svn/all-wcprops | 17 + qemu/qemu-git/tcg/x86_64/.svn/entries | 96 + .../.svn/text-base/tcg-target.c.svn-base | 1422 +++ .../.svn/text-base/tcg-target.h.svn-base | 91 + qemu/qemu-git/tcg/x86_64/tcg-target.c | 1422 +++ qemu/qemu-git/tcg/x86_64/tcg-target.h | 91 + qemu/qemu-git/translate-all.c | 194 + qemu/qemu-git/x86_64.ld | 170 + s3c2410.c | 67 + s3c2410_adc.c | 270 + s3c2410_arm.c | 288 + s3c2410_intc.c | 751 ++ s3c2410_io_port.c | 727 ++ s3c2410_lcd.c | 425 + s3c2410_memc.c | 283 + s3c2410_nand.c | 264 + s3c2410_power.c | 375 + s3c2410_rtc.c | 514 + s3c2410_sdi.c | 722 ++ s3c2410_spi.c | 302 + s3c2410_sram.c | 184 + s3c2410_timer.c | 568 + s3c2410_uart.c | 484 + s3c2410_usbdev.c | 342 + s3c2410_watchdog.c | 388 + sim/.cvsignore | 1 + sim/.svn/all-wcprops | 11 + sim/.svn/entries | 65 + sim/.svn/text-base/.cvsignore.svn-base | 1 + sim/CVS/.svn/all-wcprops | 23 + sim/CVS/.svn/entries | 130 + sim/CVS/.svn/text-base/Entries.svn-base | 2 + sim/CVS/.svn/text-base/Repository.svn-base | 1 + sim/CVS/.svn/text-base/Root.svn-base | 1 + sim/CVS/Entries | 2 + sim/CVS/Repository | 1 + sim/CVS/Root | 1 + sram.c | 796 ++ symbol.c | 279 + timer.c | 329 + tiny_font.c | 205 + ui.c | 2411 +++++ update.scp | 1 + x49gp.gif | Bin 0 -> 144961 bytes 651 files changed, 246754 insertions(+) create mode 100644 4950_92.bin create mode 100644 49Gp_88.bin create mode 100644 EqnData.lib create mode 100644 EqnLib.lib create mode 100644 HP49GP_IO_PORT create mode 100644 MEMORY create mode 100644 Makefile create mode 100644 README create mode 100644 README.QEMU create mode 100644 README.QUICKSTART create mode 100644 README.config create mode 100644 SYSCALL-28-TRACE create mode 100644 bitmaps/.svn/all-wcprops create mode 100644 bitmaps/.svn/entries create mode 100644 bitmaps/.svn/text-base/ann_alpha.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/ann_battery.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/ann_busy.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/ann_io.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/ann_left.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/ann_right.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/button_large.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/button_normal.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/button_round.pix.svn-base create mode 100644 bitmaps/.svn/text-base/button_round.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/button_small.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/button_tiny.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_A.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_B.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_C.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_D.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_E.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_F.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_G.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_H.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_I.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_J.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_K.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_L.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_M.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_N.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_O.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_P.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_Q.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_R.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_S.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_T.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_U.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_V.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_W.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_X.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_Y.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_Z.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny__i.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_ampersand.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_arrowleft.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_arrowright.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_braceleft.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_braceright.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_bracketleft.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_bracketright.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_colon.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_comma.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_equal.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_greater.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_guillemotleft.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_guillemotright.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_hyphen.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_large_comma.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_less.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_arrowleft.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_arrowright.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_downarrowleft.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_downarrowright.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_e.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_equal.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_greater.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_greaterequal.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_infinity.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_integral.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_less.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_lessequal.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_notequal.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_numbersign.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_partialdiff.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_pi.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_radical.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_summation.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_x.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_math_y.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_notdef.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_numbersign.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_one.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_overscore.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_parenleft.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_parenright.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_period.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_quotedbl.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_slash.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_three.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_two.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_twosuperior.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_underscore.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_xsuperior.xbm.svn-base create mode 100644 bitmaps/.svn/text-base/tiny_zero.xbm.svn-base create mode 100644 bitmaps/CVS/.svn/all-wcprops create mode 100644 bitmaps/CVS/.svn/entries create mode 100644 bitmaps/CVS/.svn/text-base/Entries.svn-base create mode 100644 bitmaps/CVS/.svn/text-base/Repository.svn-base create mode 100644 bitmaps/CVS/.svn/text-base/Root.svn-base create mode 100644 bitmaps/CVS/Entries create mode 100644 bitmaps/CVS/Repository create mode 100644 bitmaps/CVS/Root create mode 100644 bitmaps/ann_alpha.xbm create mode 100644 bitmaps/ann_battery.xbm create mode 100644 bitmaps/ann_busy.xbm create mode 100644 bitmaps/ann_io.xbm create mode 100644 bitmaps/ann_left.xbm create mode 100644 bitmaps/ann_right.xbm create mode 100644 bitmaps/button_large.xbm create mode 100644 bitmaps/button_normal.xbm create mode 100644 bitmaps/button_round.pix create mode 100644 bitmaps/button_round.xbm create mode 100644 bitmaps/button_small.xbm create mode 100644 bitmaps/button_tiny.xbm create mode 100644 bitmaps/tiny_A.xbm create mode 100644 bitmaps/tiny_B.xbm create mode 100644 bitmaps/tiny_C.xbm create mode 100644 bitmaps/tiny_D.xbm create mode 100644 bitmaps/tiny_E.xbm create mode 100644 bitmaps/tiny_F.xbm create mode 100644 bitmaps/tiny_G.xbm create mode 100644 bitmaps/tiny_H.xbm create mode 100644 bitmaps/tiny_I.xbm create mode 100644 bitmaps/tiny_J.xbm create mode 100644 bitmaps/tiny_K.xbm create mode 100644 bitmaps/tiny_L.xbm create mode 100644 bitmaps/tiny_M.xbm create mode 100644 bitmaps/tiny_N.xbm create mode 100644 bitmaps/tiny_O.xbm create mode 100644 bitmaps/tiny_P.xbm create mode 100644 bitmaps/tiny_Q.xbm create mode 100644 bitmaps/tiny_R.xbm create mode 100644 bitmaps/tiny_S.xbm create mode 100644 bitmaps/tiny_T.xbm create mode 100644 bitmaps/tiny_U.xbm create mode 100644 bitmaps/tiny_V.xbm create mode 100644 bitmaps/tiny_W.xbm create mode 100644 bitmaps/tiny_X.xbm create mode 100644 bitmaps/tiny_Y.xbm create mode 100644 bitmaps/tiny_Z.xbm create mode 100644 bitmaps/tiny__i.xbm create mode 100644 bitmaps/tiny_ampersand.xbm create mode 100644 bitmaps/tiny_arrowleft.xbm create mode 100644 bitmaps/tiny_arrowright.xbm create mode 100644 bitmaps/tiny_braceleft.xbm create mode 100644 bitmaps/tiny_braceright.xbm create mode 100644 bitmaps/tiny_bracketleft.xbm create mode 100644 bitmaps/tiny_bracketright.xbm create mode 100644 bitmaps/tiny_colon.xbm create mode 100644 bitmaps/tiny_comma.xbm create mode 100644 bitmaps/tiny_equal.xbm create mode 100644 bitmaps/tiny_greater.xbm create mode 100644 bitmaps/tiny_guillemotleft.xbm create mode 100644 bitmaps/tiny_guillemotright.xbm create mode 100644 bitmaps/tiny_hyphen.xbm create mode 100644 bitmaps/tiny_large_comma.xbm create mode 100644 bitmaps/tiny_less.xbm create mode 100644 bitmaps/tiny_math_arrowleft.xbm create mode 100644 bitmaps/tiny_math_arrowright.xbm create mode 100644 bitmaps/tiny_math_downarrowleft.xbm create mode 100644 bitmaps/tiny_math_downarrowright.xbm create mode 100644 bitmaps/tiny_math_e.xbm create mode 100644 bitmaps/tiny_math_equal.xbm create mode 100644 bitmaps/tiny_math_greater.xbm create mode 100644 bitmaps/tiny_math_greaterequal.xbm create mode 100644 bitmaps/tiny_math_infinity.xbm create mode 100644 bitmaps/tiny_math_integral.xbm create mode 100644 bitmaps/tiny_math_less.xbm create mode 100644 bitmaps/tiny_math_lessequal.xbm create mode 100644 bitmaps/tiny_math_notequal.xbm create mode 100644 bitmaps/tiny_math_numbersign.xbm create mode 100644 bitmaps/tiny_math_partialdiff.xbm create mode 100644 bitmaps/tiny_math_pi.xbm create mode 100644 bitmaps/tiny_math_radical.xbm create mode 100644 bitmaps/tiny_math_summation.xbm create mode 100644 bitmaps/tiny_math_x.xbm create mode 100644 bitmaps/tiny_math_y.xbm create mode 100644 bitmaps/tiny_notdef.xbm create mode 100644 bitmaps/tiny_numbersign.xbm create mode 100644 bitmaps/tiny_one.xbm create mode 100644 bitmaps/tiny_overscore.xbm create mode 100644 bitmaps/tiny_parenleft.xbm create mode 100644 bitmaps/tiny_parenright.xbm create mode 100644 bitmaps/tiny_period.xbm create mode 100644 bitmaps/tiny_quotedbl.xbm create mode 100644 bitmaps/tiny_slash.xbm create mode 100644 bitmaps/tiny_three.xbm create mode 100644 bitmaps/tiny_two.xbm create mode 100644 bitmaps/tiny_twosuperior.xbm create mode 100644 bitmaps/tiny_underscore.xbm create mode 100644 bitmaps/tiny_xsuperior.xbm create mode 100644 bitmaps/tiny_zero.xbm create mode 100644 block-qcow.c create mode 100644 block-raw.c create mode 100644 block-vvfat.c create mode 100644 block.c create mode 100644 boot-49g+.bin create mode 100644 boot-50g.bin create mode 100644 boot.bin create mode 100644 config.tmpl create mode 100644 flash.c create mode 100644 gdbstub.c create mode 100644 gdbstub.h create mode 100644 hex2bin.c create mode 100644 hp49g+.png create mode 100644 hp49g+small-notext.png create mode 100644 hp49g-u.bin create mode 100644 hp50g-hack.png create mode 100644 hp50g.png create mode 100644 include/.svn/all-wcprops create mode 100644 include/.svn/entries create mode 100644 include/.svn/text-base/bitmap_font.h.svn-base create mode 100644 include/.svn/text-base/bitmaps.h.svn-base create mode 100644 include/.svn/text-base/block.h.svn-base create mode 100644 include/.svn/text-base/block_int.h.svn-base create mode 100644 include/.svn/text-base/byteorder.h.svn-base create mode 100644 include/.svn/text-base/glyphname.h.svn-base create mode 100644 include/.svn/text-base/list.h.svn-base create mode 100644 include/.svn/text-base/s3c2410.h.svn-base create mode 100644 include/.svn/text-base/s3c2410_intc.h.svn-base create mode 100644 include/.svn/text-base/s3c2410_mmu.h.svn-base create mode 100644 include/.svn/text-base/s3c2410_power.h.svn-base create mode 100644 include/.svn/text-base/s3c2410_timer.h.svn-base create mode 100644 include/.svn/text-base/saturn.h.svn-base create mode 100644 include/.svn/text-base/symbol.h.svn-base create mode 100644 include/.svn/text-base/x49gp.h.svn-base create mode 100644 include/.svn/text-base/x49gp_timer.h.svn-base create mode 100644 include/.svn/text-base/x49gp_types.h.svn-base create mode 100644 include/.svn/text-base/x49gp_ui.h.svn-base create mode 100644 include/CVS/.svn/all-wcprops create mode 100644 include/CVS/.svn/entries create mode 100644 include/CVS/.svn/text-base/Entries.svn-base create mode 100644 include/CVS/.svn/text-base/Repository.svn-base create mode 100644 include/CVS/.svn/text-base/Root.svn-base create mode 100644 include/CVS/Entries create mode 100644 include/CVS/Repository create mode 100644 include/CVS/Root create mode 100644 include/bitmap_font.h create mode 100644 include/bitmaps.h create mode 100644 include/block.h create mode 100644 include/block_int.h create mode 100644 include/byteorder.h create mode 100644 include/glyphname.h create mode 100644 include/list.h create mode 100644 include/s3c2410.h create mode 100644 include/s3c2410_intc.h create mode 100644 include/s3c2410_mmu.h create mode 100644 include/s3c2410_power.h create mode 100644 include/s3c2410_timer.h create mode 100644 include/saturn.h create mode 100644 include/symbol.h create mode 100644 include/x49gp.h create mode 100644 include/x49gp_timer.h create mode 100644 include/x49gp_types.h create mode 100644 include/x49gp_ui.h create mode 100644 le32hex2bin.c create mode 100644 main.c create mode 100644 module.c create mode 100755 newconfig create mode 100644 qemu/.cvsignore create mode 100644 qemu/.svn/all-wcprops create mode 100644 qemu/.svn/entries create mode 100644 qemu/.svn/prop-base/prepare.sh.svn-base create mode 100644 qemu/.svn/prop-base/qemu-0.9.0.tar.gz.svn-base create mode 100644 qemu/.svn/text-base/.cvsignore.svn-base create mode 100644 qemu/.svn/text-base/prepare.sh.svn-base create mode 100644 qemu/.svn/text-base/qemu-0.9.0.tar.gz.svn-base create mode 100644 qemu/CVS/.svn/all-wcprops create mode 100644 qemu/CVS/.svn/entries create mode 100644 qemu/CVS/.svn/text-base/Entries.svn-base create mode 100644 qemu/CVS/.svn/text-base/Repository.svn-base create mode 100644 qemu/CVS/.svn/text-base/Root.svn-base create mode 100644 qemu/CVS/Entries create mode 100644 qemu/CVS/Repository create mode 100644 qemu/CVS/Root create mode 100644 qemu/patches/.svn/all-wcprops create mode 100644 qemu/patches/.svn/entries create mode 100644 qemu/patches/.svn/text-base/q_block.c_hdled_1.diff.svn-base create mode 100644 qemu/patches/.svn/text-base/q_block_int.h_hdled_1.diff.svn-base create mode 100644 qemu/patches/.svn/text-base/q_host-cocoa_02.diff.svn-base create mode 100644 qemu/patches/.svn/text-base/q_vga.c_02.diff.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.7.2-dyngen-check-stack-clobbers.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.7.2-gcc4-opts.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.8.0-gcc4-hacks.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.8.0-osx-bugfix.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-arm-shift.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-enforce-16byte-stack-boundary.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-gcc4.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-i386-FORCE_RET.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-osx-intel-port.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-qcow2.diff.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-sparc-clobber.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-sparc-compile-flags.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-sparc-load-store-le.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-sparc-register.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-x49gp-arm-dump-state.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-x49gp-arm-mmu.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-x49gp-arm-semihosting.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-x49gp-block.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-x49gp-build-libqemu.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-x49gp-debug-unassigned.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-0.9.0-x49gp-phys_ram_dirty.patch.svn-base create mode 100644 qemu/patches/.svn/text-base/qemu-2ndbootdevice_04.diff.svn-base create mode 100644 qemu/patches/CVS/.svn/all-wcprops create mode 100644 qemu/patches/CVS/.svn/entries create mode 100644 qemu/patches/CVS/.svn/text-base/Entries.svn-base create mode 100644 qemu/patches/CVS/.svn/text-base/Repository.svn-base create mode 100644 qemu/patches/CVS/.svn/text-base/Root.svn-base create mode 100644 qemu/patches/CVS/Entries create mode 100644 qemu/patches/CVS/Repository create mode 100644 qemu/patches/CVS/Root create mode 100644 qemu/patches/q_block.c_hdled_1.diff create mode 100644 qemu/patches/q_block_int.h_hdled_1.diff create mode 100644 qemu/patches/q_host-cocoa_02.diff create mode 100644 qemu/patches/q_vga.c_02.diff create mode 100644 qemu/patches/qemu-0.7.2-dyngen-check-stack-clobbers.patch create mode 100644 qemu/patches/qemu-0.7.2-gcc4-opts.patch create mode 100644 qemu/patches/qemu-0.8.0-gcc4-hacks.patch create mode 100644 qemu/patches/qemu-0.8.0-osx-bugfix.patch create mode 100644 qemu/patches/qemu-0.9.0-arm-shift.patch create mode 100644 qemu/patches/qemu-0.9.0-enforce-16byte-stack-boundary.patch create mode 100644 qemu/patches/qemu-0.9.0-gcc4.patch create mode 100644 qemu/patches/qemu-0.9.0-i386-FORCE_RET.patch create mode 100644 qemu/patches/qemu-0.9.0-osx-intel-port.patch create mode 100644 qemu/patches/qemu-0.9.0-qcow2.diff create mode 100644 qemu/patches/qemu-0.9.0-sparc-clobber.patch create mode 100644 qemu/patches/qemu-0.9.0-sparc-compile-flags.patch create mode 100644 qemu/patches/qemu-0.9.0-sparc-load-store-le.patch create mode 100644 qemu/patches/qemu-0.9.0-sparc-register.patch create mode 100644 qemu/patches/qemu-0.9.0-x49gp-arm-dump-state.patch create mode 100644 qemu/patches/qemu-0.9.0-x49gp-arm-mmu.patch create mode 100644 qemu/patches/qemu-0.9.0-x49gp-arm-semihosting.patch create mode 100644 qemu/patches/qemu-0.9.0-x49gp-block.patch create mode 100644 qemu/patches/qemu-0.9.0-x49gp-build-libqemu.patch create mode 100644 qemu/patches/qemu-0.9.0-x49gp-debug-unassigned.patch create mode 100644 qemu/patches/qemu-0.9.0-x49gp-phys_ram_dirty.patch create mode 100644 qemu/patches/qemu-2ndbootdevice_04.diff create mode 100755 qemu/prepare.sh create mode 100644 qemu/qemu-0.9.0.tar.gz create mode 100644 qemu/qemu-git/.svn/all-wcprops create mode 100644 qemu/qemu-git/.svn/entries create mode 100644 qemu/qemu-git/.svn/prop-base/configure-small.svn-base create mode 100644 qemu/qemu-git/.svn/prop-base/create_config.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/Makefile-small.hw.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/Makefile-small.objs.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/Makefile-small.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/Makefile-small.target.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/VERSION.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/alpha-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/alpha.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/arm-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/arm.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/bswap.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/cache-utils.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/config.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/configure-small.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/cpu-all.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/cpu-common.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/cpu-defs.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/cpu-exec.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/create_config.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/cris-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/cutils.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/def-helper.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/dis-asm.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/disas.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/disas.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/dyngen-exec.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/elf.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/exec-all.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/exec.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/feature_to_c.sh.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/gdbstub.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/gen-icount.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/host-utils.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/host-utils.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/hostregs_helper.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/hppa-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/hppa.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/i386-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/i386.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/ia64.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/ioport.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/kvm.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/m68k-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/m68k.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/microblaze-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/mips-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/mips.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/module.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/osdep.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/ppc-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/ppc.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/ppc64.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/qemu-common.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/qemu-lock.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/qemu-log.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/qemu-malloc.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/qemu-queue.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/rules.mak.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/s390-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/s390.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/sh4-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/softmmu_defs.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/softmmu_exec.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/softmmu_header.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/softmmu_template.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/sparc-dis.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/sparc.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/sparc64.ld.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/targphys.h.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/tcg-runtime.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/translate-all.c.svn-base create mode 100644 qemu/qemu-git/.svn/text-base/x86_64.ld.svn-base create mode 100644 qemu/qemu-git/Makefile-small create mode 100644 qemu/qemu-git/Makefile-small.hw create mode 100644 qemu/qemu-git/Makefile-small.objs create mode 100644 qemu/qemu-git/Makefile-small.target create mode 100644 qemu/qemu-git/VERSION create mode 100644 qemu/qemu-git/alpha-dis.c create mode 100644 qemu/qemu-git/alpha.ld create mode 100644 qemu/qemu-git/arm-dis.c create mode 100644 qemu/qemu-git/arm.ld create mode 100644 qemu/qemu-git/bswap.h create mode 100644 qemu/qemu-git/cache-utils.h create mode 100644 qemu/qemu-git/config.h create mode 100755 qemu/qemu-git/configure-small create mode 100644 qemu/qemu-git/cpu-all.h create mode 100644 qemu/qemu-git/cpu-common.h create mode 100644 qemu/qemu-git/cpu-defs.h create mode 100644 qemu/qemu-git/cpu-exec.c create mode 100755 qemu/qemu-git/create_config create mode 100644 qemu/qemu-git/cris-dis.c create mode 100644 qemu/qemu-git/cutils.c create mode 100644 qemu/qemu-git/def-helper.h create mode 100644 qemu/qemu-git/default-configs/.svn/all-wcprops create mode 100644 qemu/qemu-git/default-configs/.svn/entries create mode 100644 qemu/qemu-git/default-configs/.svn/text-base/arm-softmmu-small.mak.svn-base create mode 100644 qemu/qemu-git/default-configs/arm-softmmu-small.mak create mode 100644 qemu/qemu-git/dis-asm.h create mode 100644 qemu/qemu-git/disas.c create mode 100644 qemu/qemu-git/disas.h create mode 100644 qemu/qemu-git/dyngen-exec.h create mode 100644 qemu/qemu-git/elf.h create mode 100644 qemu/qemu-git/exec-all.h create mode 100644 qemu/qemu-git/exec.c create mode 100644 qemu/qemu-git/feature_to_c.sh create mode 100644 qemu/qemu-git/fpu/.svn/all-wcprops create mode 100644 qemu/qemu-git/fpu/.svn/entries create mode 100644 qemu/qemu-git/fpu/.svn/text-base/softfloat-macros.h.svn-base create mode 100644 qemu/qemu-git/fpu/.svn/text-base/softfloat-native.c.svn-base create mode 100644 qemu/qemu-git/fpu/.svn/text-base/softfloat-native.h.svn-base create mode 100644 qemu/qemu-git/fpu/.svn/text-base/softfloat-specialize.h.svn-base create mode 100644 qemu/qemu-git/fpu/.svn/text-base/softfloat.c.svn-base create mode 100644 qemu/qemu-git/fpu/.svn/text-base/softfloat.h.svn-base create mode 100644 qemu/qemu-git/fpu/softfloat-macros.h create mode 100644 qemu/qemu-git/fpu/softfloat-native.c create mode 100644 qemu/qemu-git/fpu/softfloat-native.h create mode 100644 qemu/qemu-git/fpu/softfloat-specialize.h create mode 100644 qemu/qemu-git/fpu/softfloat.c create mode 100644 qemu/qemu-git/fpu/softfloat.h create mode 100644 qemu/qemu-git/gdb-xml/.svn/all-wcprops create mode 100644 qemu/qemu-git/gdb-xml/.svn/entries create mode 100644 qemu/qemu-git/gdb-xml/.svn/text-base/arm-core.xml.svn-base create mode 100644 qemu/qemu-git/gdb-xml/.svn/text-base/arm-neon.xml.svn-base create mode 100644 qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp.xml.svn-base create mode 100644 qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp3.xml.svn-base create mode 100644 qemu/qemu-git/gdb-xml/arm-core.xml create mode 100644 qemu/qemu-git/gdb-xml/arm-neon.xml create mode 100644 qemu/qemu-git/gdb-xml/arm-vfp.xml create mode 100644 qemu/qemu-git/gdb-xml/arm-vfp3.xml create mode 100644 qemu/qemu-git/gdbstub.h create mode 100644 qemu/qemu-git/gen-icount.h create mode 100644 qemu/qemu-git/host-utils.c create mode 100644 qemu/qemu-git/host-utils.h create mode 100644 qemu/qemu-git/hostregs_helper.h create mode 100644 qemu/qemu-git/hppa-dis.c create mode 100644 qemu/qemu-git/hppa.ld create mode 100644 qemu/qemu-git/i386-dis.c create mode 100644 qemu/qemu-git/i386.ld create mode 100644 qemu/qemu-git/ia64.ld create mode 100644 qemu/qemu-git/ioport.h create mode 100644 qemu/qemu-git/kvm.h create mode 100644 qemu/qemu-git/m68k-dis.c create mode 100644 qemu/qemu-git/m68k.ld create mode 100644 qemu/qemu-git/microblaze-dis.c create mode 100644 qemu/qemu-git/mips-dis.c create mode 100644 qemu/qemu-git/mips.ld create mode 100644 qemu/qemu-git/module.h create mode 100644 qemu/qemu-git/osdep.h create mode 100644 qemu/qemu-git/ppc-dis.c create mode 100644 qemu/qemu-git/ppc.ld create mode 100644 qemu/qemu-git/ppc64.ld create mode 100644 qemu/qemu-git/qemu-common.h create mode 100644 qemu/qemu-git/qemu-lock.h create mode 100644 qemu/qemu-git/qemu-log.h create mode 100644 qemu/qemu-git/qemu-malloc.c create mode 100644 qemu/qemu-git/qemu-queue.h create mode 100644 qemu/qemu-git/rules.mak create mode 100644 qemu/qemu-git/s390-dis.c create mode 100644 qemu/qemu-git/s390.ld create mode 100644 qemu/qemu-git/sh4-dis.c create mode 100644 qemu/qemu-git/softmmu_defs.h create mode 100644 qemu/qemu-git/softmmu_exec.h create mode 100644 qemu/qemu-git/softmmu_header.h create mode 100644 qemu/qemu-git/softmmu_template.h create mode 100644 qemu/qemu-git/sparc-dis.c create mode 100644 qemu/qemu-git/sparc.ld create mode 100644 qemu/qemu-git/sparc64.ld create mode 100644 qemu/qemu-git/target-arm/.svn/all-wcprops create mode 100644 qemu/qemu-git/target-arm/.svn/entries create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/cpu.h.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/exec.h.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/helper.c.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/helpers.h.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/iwmmxt_helper.c.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/neon_helper.c.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/op_addsub.h.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/op_helper.c.svn-base create mode 100644 qemu/qemu-git/target-arm/.svn/text-base/translate.c.svn-base create mode 100644 qemu/qemu-git/target-arm/cpu.h create mode 100644 qemu/qemu-git/target-arm/exec.h create mode 100644 qemu/qemu-git/target-arm/helper.c create mode 100644 qemu/qemu-git/target-arm/helpers.h create mode 100644 qemu/qemu-git/target-arm/iwmmxt_helper.c create mode 100644 qemu/qemu-git/target-arm/neon_helper.c create mode 100644 qemu/qemu-git/target-arm/op_addsub.h create mode 100644 qemu/qemu-git/target-arm/op_helper.c create mode 100644 qemu/qemu-git/target-arm/translate.c create mode 100644 qemu/qemu-git/targphys.h create mode 100644 qemu/qemu-git/tcg-runtime.c create mode 100644 qemu/qemu-git/tcg/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/.svn/entries create mode 100644 qemu/qemu-git/tcg/.svn/text-base/LICENSE.svn-base create mode 100644 qemu/qemu-git/tcg/.svn/text-base/README.svn-base create mode 100644 qemu/qemu-git/tcg/.svn/text-base/TODO.svn-base create mode 100644 qemu/qemu-git/tcg/.svn/text-base/tcg-op.h.svn-base create mode 100644 qemu/qemu-git/tcg/.svn/text-base/tcg-opc.h.svn-base create mode 100644 qemu/qemu-git/tcg/.svn/text-base/tcg-runtime.h.svn-base create mode 100644 qemu/qemu-git/tcg/.svn/text-base/tcg.c.svn-base create mode 100644 qemu/qemu-git/tcg/.svn/text-base/tcg.h.svn-base create mode 100644 qemu/qemu-git/tcg/LICENSE create mode 100644 qemu/qemu-git/tcg/README create mode 100644 qemu/qemu-git/tcg/TODO create mode 100644 qemu/qemu-git/tcg/arm/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/arm/.svn/entries create mode 100644 qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/arm/tcg-target.c create mode 100644 qemu/qemu-git/tcg/arm/tcg-target.h create mode 100644 qemu/qemu-git/tcg/hppa/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/hppa/.svn/entries create mode 100644 qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/hppa/tcg-target.c create mode 100644 qemu/qemu-git/tcg/hppa/tcg-target.h create mode 100644 qemu/qemu-git/tcg/i386/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/i386/.svn/entries create mode 100644 qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/i386/tcg-target.c create mode 100644 qemu/qemu-git/tcg/i386/tcg-target.h create mode 100644 qemu/qemu-git/tcg/mips/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/mips/.svn/entries create mode 100644 qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/mips/tcg-target.c create mode 100644 qemu/qemu-git/tcg/mips/tcg-target.h create mode 100644 qemu/qemu-git/tcg/ppc/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/ppc/.svn/entries create mode 100644 qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/ppc/tcg-target.c create mode 100644 qemu/qemu-git/tcg/ppc/tcg-target.h create mode 100644 qemu/qemu-git/tcg/ppc64/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/ppc64/.svn/entries create mode 100644 qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/ppc64/tcg-target.c create mode 100644 qemu/qemu-git/tcg/ppc64/tcg-target.h create mode 100644 qemu/qemu-git/tcg/s390/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/s390/.svn/entries create mode 100644 qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/s390/tcg-target.c create mode 100644 qemu/qemu-git/tcg/s390/tcg-target.h create mode 100644 qemu/qemu-git/tcg/sparc/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/sparc/.svn/entries create mode 100644 qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/sparc/tcg-target.c create mode 100644 qemu/qemu-git/tcg/sparc/tcg-target.h create mode 100644 qemu/qemu-git/tcg/tcg-op.h create mode 100644 qemu/qemu-git/tcg/tcg-opc.h create mode 100644 qemu/qemu-git/tcg/tcg-runtime.h create mode 100644 qemu/qemu-git/tcg/tcg.c create mode 100644 qemu/qemu-git/tcg/tcg.h create mode 100644 qemu/qemu-git/tcg/x86_64/.svn/all-wcprops create mode 100644 qemu/qemu-git/tcg/x86_64/.svn/entries create mode 100644 qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.c.svn-base create mode 100644 qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.h.svn-base create mode 100644 qemu/qemu-git/tcg/x86_64/tcg-target.c create mode 100644 qemu/qemu-git/tcg/x86_64/tcg-target.h create mode 100644 qemu/qemu-git/translate-all.c create mode 100644 qemu/qemu-git/x86_64.ld create mode 100644 s3c2410.c create mode 100644 s3c2410_adc.c create mode 100644 s3c2410_arm.c create mode 100644 s3c2410_intc.c create mode 100644 s3c2410_io_port.c create mode 100644 s3c2410_lcd.c create mode 100644 s3c2410_memc.c create mode 100644 s3c2410_nand.c create mode 100644 s3c2410_power.c create mode 100644 s3c2410_rtc.c create mode 100644 s3c2410_sdi.c create mode 100644 s3c2410_spi.c create mode 100644 s3c2410_sram.c create mode 100644 s3c2410_timer.c create mode 100644 s3c2410_uart.c create mode 100644 s3c2410_usbdev.c create mode 100644 s3c2410_watchdog.c create mode 100644 sim/.cvsignore create mode 100644 sim/.svn/all-wcprops create mode 100644 sim/.svn/entries create mode 100644 sim/.svn/text-base/.cvsignore.svn-base create mode 100644 sim/CVS/.svn/all-wcprops create mode 100644 sim/CVS/.svn/entries create mode 100644 sim/CVS/.svn/text-base/Entries.svn-base create mode 100644 sim/CVS/.svn/text-base/Repository.svn-base create mode 100644 sim/CVS/.svn/text-base/Root.svn-base create mode 100644 sim/CVS/Entries create mode 100644 sim/CVS/Repository create mode 100644 sim/CVS/Root create mode 100644 sram.c create mode 100644 symbol.c create mode 100644 timer.c create mode 100644 tiny_font.c create mode 100644 ui.c create mode 100644 update.scp create mode 100644 x49gp.gif diff --git a/4950_92.bin b/4950_92.bin new file mode 100644 index 0000000000000000000000000000000000000000..0c159b3a0fcde9b2a44a93076818f214f6648bb6 GIT binary patch literal 1294336 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 z�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

q4W0_maLgRSX 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 $>Z}a=SL2yX0y`Ofc25bM`QB@fZVsJMUe>#|mKM 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≤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∾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

Cy-_o`y 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 SneVpU8? z@=%=XrF+ioU)-WDBjk~oWds!Zk!iiyJGIzDt41_Y4{xT$bnYte`Nhk&%Q8I1HYJwp zb-r?^Im@MvbCS&tYVTBi@kuWHgijDvc)F)>zJYi0@JEWvBx1QL^+>2m?G;8Nqnf_I zvdYT@;{Gd9?JKS_KRVWIRyj=JO4Sak1UJe?IPgYs*>ROp?wr`GxL=-gVvnYN1w19E_XQIb{wQRF&P5uS_{#kh607bc|(78viIK~#>3N_9EGe`RoOD|f+?5DUn zgaeWXKUsVn&8{3UrwKF-kydQ3+?MPx#e-TZj}$Kn^8SlY$0B1((^HlGT0Jh$iMF&g z&yaoZhWOf@pbW8sVuNBOV9?zTh9i^7lMI#WW{>RmYsb=9)0NUCW|`yoeX;+1qK>O2 z?=Lm09DT<6JI*oJmQAR+>@a>z7?yqZgWz(lXL*kTYwqUvo!)mzRN>$=nfjD(`PLbh zt(MpcJ<~mLzJT}l=Rg0{%OBL*@7-RK%Em9S?^y ztBvysuN&`A#l~?@?E#IsIpRO*{w{(38h!|Z*=zgyOI&=x{&D({ID_VUM1F3%KlXG=z61#Sly$2*vK- z^aF(7*Qrh){cSP?gIBiR&==v3ImAMz-QKu=i%Ap+4j8` z0!;UW*jv_MSZ030M{;BoGdf`+_b*A(NN$qWVWsGbSWV++;+JJ+^wK*%9nZ#|IMUqg zLXS`}LF@_!t$Lq3dBv!2TT|z*KGz@y!1Sm@kA8pEDYXc}UEFUt3z%FjQ5-Ua-U<58 zJ!0uWVHhs-3{xu;Ae0P>LzNJ&E~*5SQ|wu$Rvt2}s&jY6nL-{)3fVs?oH$^FijJQS z9CyHnLr>JXr^(`#P+>71#4=5`|5M{*H^^2q}Y9;G_(Uz(Kk zN#_&sx!Su7I;2MD9j6RLeY($%M8bJGG_FxO$4wVWId0h71{`#Q6U-b}p~y;loY`?M z;KWk1OghTvdgF@s|84Nhep`)(d;?2os_g1NA%Q2FaD3S-YL!%-`wn6%hXPymYE_K- zOAj0>)E@$)epo?4J%ZX(<~%q<77+r~1ps_H-ay-p`iN1SuD1+1^adco8`vmK4mIFR z4{zFVwf8cE0zg>5D0!S#^Y2i_x?EYjHw*|I7KDB>>gz{_>UvYCZdX7hPLgAW+X0+9 zBtRFadxApep-R>mP73giXskZ?Zxs1=R-m(QDQu>9I%ed70#&6=`9FpdU2h*)jRPH5 zo$wB%JusA55L-G~rrMe9=$OPER^=M{;c|&^K5lYxKjJ*uW%0K5jr|Vy>!=Le87!u9 z`l=y!dMK~!jl(1p)TaS0hK=apZ(u6|pLKMccr;9L83(KsH_f>4j@s*c;NcN=D!{ z?t~+4e5>n+y#n=b`hKe?J&cFu@p!H8*U4Wu^&6G^U1i_peJARaIICx(Pe;u6FZ%v9 z`MJuT%X|J6{rG*DVysRnZ8|gyaosB`J#oN5liI5W_d3KFS3vlJi8`*qAnvymM-i=3 zCtZk`qJfq4X{p&qGOncR5n(Kv84Uy5I!F!mlVqy>znA>@Anp#((d+YC3~;BW2~u*0 z#9zZqa*Vsj(Q!BA>6(eJ4zXJF4ii+{lARsrl$y;Wl3ihvv0TXT-E?F~7Mo!VAWV9P zE*I)!DSP0BhsqCP`fWq7b{Rb)FC;mlQ`vuf+FZw}LoIqrxIP^``v5?xA@GgM3ZS!T zP31q908$K{5jCIopH$ww1QLTviyt0%3Il2A3ZIUu`RX=U`5ca(!mvJBoGdDak`T+A zdwCi>6MQ1;lEaIa)Tw%&ELOzNA&LOb3v#mM#@ZcW9eLu2Dxm@9wf(4ZpzNKl4Dy-V zpzGspXr*PVk2}h*zF+z1>WE65`$Rnp+4cXUwtPgtEwq5^1fJvunCf+uAgFNRJeyVn z4k{>T1jC^Kqy;?^S{D|pL0`qSK|;SG3`_B0a5S(9voNtwzYL12pQ;SUJ$A01M4YnVmK7H)KWPjb` zkT;u(Ic6`;`o-&CkA0Xa+4dtdt})ytPvF7IJGAce^Y^LKZlW{$Yyx}uL9P9P>Od{-s@6q@i|YCrtpe=+{na=ypC6dR5?m^0y^ z!7)CT*phE#@YndkMoNu!sEh=^Z_YeJ9ZT?l^dq6lVaLN`@TYzH_+2wic&Yzh!CTNb z6K=jCgG_G3`NEzV?&|s(J&wINgHzPbaE^I;hI?w&j2`&U;lJ}`d=JC-llbn5@A3Ga zf$#Xw;s3DY$uozg;jgrpbXY|%srFd(Of5VzE+=};bS>p)dZj)$)61`VCRun2&YVpl zByj)(fH{3usX2wV=Yz2R0@Uk|Ny*u z{#mo0ZA-U$=77u1zy$2SiPuZk4;!pbava2%de^alYQbF?yes`(U-quKTpZ#)D-mMh zta|Uea5UF?$eUhAZEw(b6V;YLiQy6-9C$1dl^ZVETF`RQa$dSAB($$U;e(1zW|U|C zPCDsS2{NcDjQT)uap%$T#v`Y^nDVClRC1s@(mX>o`G`p-VXE|$gypr=_BbTb*hJU-B9AP0{sGl z|EOo#Ae#%Ad2g9#nex&rWHohiqC5T@^zTQH(@Qk<6;}~5d4gRk#$xP}nTsB#S!HBU zF*sr4kL%u}yhG`RF#*8nnv1xhpR;CJo!MtkO0JJ%tQqjCB=uXS#lgLsGuOQk=GW%6 zYr32Yyt?r*v?;qqB*j>2EaNK-1?5JoPaL$R`p#yMfar`e=J56=e0oG?yxgO?88cJO z_;u zC#&6s%$RQh@y->?^dS%-^?`cQD)tv749kRxqYX1@PKyjVy97&D;~!OHo&t(WfyoXC zf>;e^le+M=In(b|N&H9{j+n);Z~XIAs=Y7*;4;x+B?de)ZowST&oeV~q4StzFIVq< zP+tCpm!G_7bjumZ{tN(+nG1r)2kL786l_*7K$~=JX7akTRN;dR`j=Qn2yKbgFp}Rb zCUGStMI}S{^ul?CMGFe~v_&S65$eG#C7lftXu$(>WN^|x|Ltpecn97dO!QvO)$y{6 zf!i`7;)lzlH_9`&l^SJoH71=flcm%?KVMQ0S_c!X*`(VpW)$c`ENNw@DD52p2K90j z4$Rz*xfT%C1a@J{KQkAdBj)8ySpm#RnR|x?mi_3rIjm>qfsUau21cC#?u8MIK`n51wYW6jhvX7x4v3&kb-xb1lPDEnno4P&&awlS5$Lc@_GoZW(uZat)X{!i? zwos@6HIop2eyq^}ofS>jm6RA3&9qj;O4@yjSyPd@W z3tDA+KJBb)Hz7Ouzp<(eLRFA2LAruGV^)bFKRbxkRvF3KZYmM5pc0DfNkaWLw5bAX zYR<)P~#77v`6Bb_Yt5lXixLsuH0fC8;_WpIL!Pcxx%vb_0AS-ah^$ zU~$03Nc}#E)qsiHE=H3!48vqPHCw8d3}?hWe<*MAz#*6|WhBI%J(RKWiz9*Q9|}JX zhGR+`l~>iV!c&p0c36SYAU!!P()377e`3Z+u(-DUwKdco;M4JwPe-I~IUV~we018C zdT8~dA$oUK(f}#Jd@vm)etqrKADi9w$B-IM0qEbKG*U5-Vd}J5I0TQr2>F(sz)saP z=D2?n=_+X>j)Da^8M9xYPzvb;^+b9oB({23bu<{SO)L)51wB$bP=Fq&cn?Jh%6@eYn*7h7YJDp5T%!YV0MLGON`5YqN%_Q-dXW-?Fs? zP$n;ouo=lUg^liG7zJz!fdGjUhR8_5W`nIZC**wDAaq`1%s^$BX}X3D}rca zoDY5P0q+Jx%ktRLZL`?oh65Uq^MTQvA-pK-;=)-j8fJ_lhl|Fx{(-@}N=@hlGHVqo zk85+tfbGHV!aZ%}VFVFN-N|o%d+JfaT14^R$bM-rwOTN}qAxw8WzB%&1RPt5BXssJhH5VNiFy*VTdxz<>jT%V6nLAQ~@pb(ZgWw0J);r%2 zq0MAyf@uj?`N!giXCL@Xyn|48EnTh9Hw@?8!S2IglZ%lP^B^|MSTt4v%Ju2!@acE} z-!U?U8_#TI2pkjI@vUJE7=oIEoy!$qx>09S)Hz{Dai#wJT&v4~x~GDvl>nVXdj~!$ z`$y=j8y;te+duO98y-zJJ~rO+SY%fb$iTiRMis0XRl8=|>s<&}tC?XMAoL=W7_h5K zpk9GKm;v5)AK1HO>qv3Cm^}jCmjJJg*v%=hFshUMX(!-a@bJAA!;g%@u)tr#j0tyi zBNXRn;?G%EFu&_-eM@m<`}5)*+x*^~-16cudYIo($AR?C+!jk&R+K^ft2UUJYQ&-; zgLw1vVu^@E>F0>SEJ@~bVyIcOd8gPZaZqjTE-c_6?Zg}Y>%1L{&2uj{9pm=VsgsJ~ zay1M}D-+m=)(S361=x8MT&({|S)hFYCR3H4_NNrQdo>MU{6Z=Gmc*9F2Y*^hzM3_T zP7(NPxPTFZieWH>mFm|FW`0O8GpAJqhpvY@RIU{-2!^Uu1Vh#b(8sTXq3;yIfM*1K zEE@!cg~xN^N%V34P|%Db7&6L0AKw_XTZKoQ5iv76;SE6@dVY_0E<0fG5G~XtQw zDJ)sqfjeP6)^RyJV0T?Q#fpceZZ%TRKR&o?xXREeSd#|?iU@DJ=8i<4b)8w!M+^@^F8R-VnCq!twx#Djw2j$Ay4CVSN1AKuJwm(urQI zU;7!>QwPA7{$W+gAi&j0@CUHb$9GBVUkF<{sp<&~Ib04o=6o`Sl_I=6li0IyI-};;ADSj(G0@ zZ)7d0e0AB{VY}d;?f5(DD#7&%Ii28`W*$&% zmTq_6YTBny?&n(LtZ2~~-p85XJs-j3jk>P)_y?r&AS@ zCQgRN#}sp3bedH@ch=Wxt!FxUMZKlO@MD8$tv^eV9 zozvAyiCP_+9BnzY(7?s9Syks*XSO>?Bt2fV#MW63)mbicj^V|_lUx&|=^WP4RIXJG zn)w_S>0p@x=3t#?{m7}st(wZOoxS~qyLZ{0M0ls=)btMTw45BuDp1f^X8dc6gz11E z=RxKX7*ukE{6O^M$s1D31oDA2Y7+UEG%AsFNG+3zr$cQr8R(!-B~cFgbfS0QGf9<$ zWg0o^P&kvA|HiCAqrFwr6^2Ms}#j6qP#?Ug+(QL zSYh@NZBP(j(OU|>x9F&X^bvigF!vQ*R5bPz$vhhUL}?!SfuchmjYCBPm3)NgX=T)d zq8^^LF``+XjpIbEp5`P`gqJx(RO?kcQ}lyZ<7|<$%3=@=RPouO(JJ03nxU%A6)jeo z=ZH3_YUhgft7;2Gt*WR((YGp6B)Y01CXuT*DG?3y)|ZOny`#!SdhfL6qpLe?#V47f-uzKfYwxHJL>GJOTSR_+NUP}iK8>G?diCYc ziyrGsz7@6fHHk>)Si*(y4(HQEB()6dZw)0mE+jNA;VL2V`3sGB&~I2#gOAzySZbS} zo1cx(;nn*^B(5+oztCu;D|1~)(z%KV5s5YCl^BhsO2T`^SF740t`U+@V#q1=rS6V+ z@3xAJBdS2WOe!iclz5X+hm{$DH4&=j2r-##GL{(1P!>O_D96~(AH&nrff<4FtjmF? zRq@v@sBs!@VP1iepJX(YmX{d&AxY@vtAPnJ&BoygnXOkZTxdX(Ck=5Ud|HNVfrv~n zF5+Vf^0VjlB#oXC335%Gcf|e-DT$d=R8(r@vke8=s+E#dLxqtqFkn1dS~ic* z1#sz!v6FdpEU!yU9TPx8Jr9MY9rld9GQi>Z<=C{aD?nONVOgXCoeunLL)_6+Kvm#H zqS99+1YNzlACwT6lV28z6{e?D&CL}e5?@|Wz$Y2sLwiFp+p$HxX zl|7G-1y+>AoTiG;2;7e1V+xA0=P3wxPSt$1qFQXjihv3&l{u08rtf3`7IgO1DSw@ zCeEcmm;l6>7{a9`Tx(UuQ&McMmal80Fv-tkRLBohw`D|JyCmt%1u*&YQc9+!6ickR zW5#s0H^sBu;g(8Ibiz2tXvi^^@N7cYS|3k?NDd3-j- z)R=xq7v^x-bA!-f8%1PXVUE!RH)BbplC)fo&p2{*n^r_Jj3rqhY_L^artF#qm*H@k z6wNmk7#9NFQhCs|6`3@1b_t(Uv>=FtZfupw&s=V6_4A_SrfSZB3no9WsHCVIEDZjm z%o!mC`IVv3`Lt3aF2FUa&SxZ9Xqayd1|i002Fj0Lr7e+Vc{gWdUX>8q?O+BgpOu%Q z0FdK+@OV+-m^ebx1M|R8vWv3JKyO-ogj|!5DU0P_%&079ilUoIlH0 zQaT1lZCbN>$S6p14de&p3M=CpSbzcu8A1EVR8+92uxNfhxD+hMMAev)4DKV0qTNM>LExTz;4MFQ5&!U%hbe1MLA`vs?1(BN1B}`hk>K41R~s73 zz>T<83RLS-`AL&w<5Ine>2mxvncuaF?I%Pep$OTtiwer;7e?X~RENw6TD1rLERVh> zE4eC*zE&Y2sV0aM)Mv1!rIqFt;o6V1c*Y0StdN%k)Bw%H#U$F0!H6bVzT=~sMj>d%hp}V2$Ekc`wEmAUtX9^X$diBuQbEi zB_c_N5)_E7BH2o?Om40$#S;L>6cy%Y11ABQ2`eGH#==)ul!t`SdY*yckko8L8Gr_w z4qugJ=2mAk$E#2}M5s0vJ-IP3GdIw?HKQ8kmxiFQvZC@5IL1zC4p&EHM4*35@^j`J zOg#~)`LrfIC=V2}pHNMR3cTW51r2EJll9mm9|>jY`J&Rw#o*x3%WV)c@!n`k{`~TS zGRVr4(HkL(DNl!_L4iRylZ`7fnc^U9_Om5*t*&V8NEDKmlo-U z(wb@4#}pNmMmiDwR#Y@LBm<&CLG-7xyqE+|g&xnvl+c`IPrrz?tKwIsMRs*^jXYC! zF;^x&ay9;Rr{n^;K?BVfbnkF0`DA5$#T3;FO^q0&OmhtXO>qJ3C;%*{>E+^U)!-y5 z(US^_${>}6UM-~@2xJ%vjgUqKiy&hKDYN8iV9mB`ZSmgCGAcG@8o74_WaoYxWmOnU zKrdi;T<7tnCPOv^fetLul~$JWRW+E`BQR4YuAyjU0-n+39Yh@XmZDp8gm$^yqs@kO zs!oJ_AYMwzCcqG5W3H=c;x#C*Ov*Cyu7*Q63b`N^Xr^+gGODRx160id71a4a}v}9=6P`## z(wtL6;z6~(tR(q5S_OS8kbh6gyYiBa@$oCS;pMcDiA4*Lx%SkO4HYZ4?ImPN9N4TX zeJgIK#i2P>=c?mr_IQ|G1+2-{@uxLcn%lOWz&??p0%SHXKWuBwl+M;{Ja22wRN5My zwQG-8g9I{8%Wmi)s6Ca9`sW)Kf_&%mbBapx7ei)%9@(tmgEtkBl?nL^t3wdLt+tM` zWw+~P$YEPY*=lFq0|f*l*{X8|va;o78k-V`P`8b&y0WcniwMkYg{^a1Vznt?jhgs! zObe9qh7uT9toO#;40d#eEVC`15~Wb{Eno|5)K#^=6>L8hdaVY%)@fDD&o5+%n#Nav zm_jP3o@9E>#zn_fD{3gJH#=n2WK^8ay4IX=8al|kdA|)=Q+VSdqp676fZ3gvHB4$| zl&o_|sfINH86($R#b}|r4JLeN)@irPYJ=7zFanh&WXe(kgRTWaS2t$_dbdSnboG+8 z?Ng@MtK-ftwl;jpatA*;^0~Q-t(m7zy<6sW8|^di2R~6(%p3=sJ`+kVEmxIsBt8># zot_wzHg0kvRfdN=2f#*5(xvDo#igZ;i=oOeCr6s%2~$62a^kocstnWPmLsCU*m0?8 zlM|4TD#HQc&_FS|w6wSssthkn({nbY9g6it>AKW3K^YE6&l%u#GHnCOPYpp~X_M1a z1ZB7(EG-PmFlAiqBwZ3!hNm>?0Y=ZTH0%(xYcwCiclNA}iEi%MF5<9q(Udz9hqZ`x zzgfi8n~Sh@Qx`XAyjx{QGGN_hd_@_;D%h#IWrSR6pq4a9th}(ySFrFPzA~G)!Dj3- z-U^HrMkdsm?FOl`AuR67fQ>KKimQF#b;TZX7h;l_A0YcBjU!2;Bx)3SSJF6&I7>-1 ziICRDkqy$u3FK?3C6Qc~)=nn>#bNTq*?}aJu?|sF$lDHN7V(iq8Oal}sCncqnPnb1 zAk!BRsoYXb!sO<1QYepFKo-j_3&=8g?LzW*x#bZecGNG$u6D#EF*)j2(x^PE2tpD( zK`uMiR*|7jQ5%TKNnb-AcH*BVE1VjiChMHc&ya0SmQBRNxppflbdGwNeB=ywPlOA< zpX9pK?k9yV{Oe?u3;#CUJ?4Lqfv%PVB+Rw;AQ|l%b%>02C5Oo>*T#R6&s?L9k+E*( zR?{3&_cjeJH9xi$Wahkhu5LrCUlSO?Vkk3OHHdnC_67k zgK!zNf!R|9l1t5Bj6qiD#)>wK93oT@L9zoGpuDRRI8r(b==2Wc7%TEwnITY!(dl7v zFG@TlDgPAjId{42ymU!VIS=;%l-@VR$C<=*nISpl->2J18M;?^2`Y zH)`~|dySed9QoPd=uJXahSE;k4kRSvrg4W|?_oB(3+<+oB2y7e&Z0sr;Y=S6`*1ik z4MfQ6o&85ay&Yue;b|dhaj9vMyc&VwiP?){I#JE)!`&1s&esD2<=OBtl?u{_q0K6e z)bQwR+{O%ctNikSQJR{cS4drThQe%kgQ!Rvabx4CGfQsG;Fn4>pf`$gF%n}!PUG82 zI(`!IMoP-?`Yqp%M!iPy(zt`+B?eA{Bh9iU)$(icD>EW$B4EvT_BEy9iq5{X`4;(3 z>g*!+G*uhiK)1HJGliyRTc%1v(mIj#8WzbUPDq@bnaDqFBiq#5k!`9Kg<2@AqM`z0 z4uDe$`Gc?vg~5 zl0k5n+j6VpGdkr^20WXS6XS>S;}X+`Qd&m$+|)UCG9~8s$`p|9Ei%PM>$j4wx)X7f z0B`Okzq{i67G9#PfgyixKD=HwP6`M7=W@=8*PV+!zgc20HGt-YU=AkoW8h=45}GFS zj#A-PT*4E6BQ7Bq1hLHI0(uU8X(ei9CwHm&QhNabNhIhI4~dm^tP)gnhje}{9sIU8 z1517E_Q2Z7f;-UCa9iEKpN^_;Lq~UG^DauVu{lO~0$12!fRX`9zB60frKQ-q+Q}Lk zrj+kOetwti(%zmoDq#IG!DGj!DDeiQLN|A^>YFIhXeh~^LnRMJzc!zvU-fn+y2k)l zL8`H^G@t5j$j5Y5;P4f2?FDW>VRJ>43fWD}t5rD6HuB08e3xSH_=L>BuOLlXS*5nJ zcp=-EPS0Q_E7_X76=ML5Irx;gq=~wiI5*4*or}dFfcZ8jViqV;YvGDf9hhJOp_5b{952O$joVzCr{$zbunp^G3sd_unlfI>hnm1+YxPw z+7Ot@%Fnd*MWS&5KRIizF}rNAwI6Jb9N8IFEA{5Yz*UWTAOl~Bq&fK|NLo~~XiOhy z)-s1IuK^o9;Saq`iJ}0Xtc9^1BW`S3pxh|??n`Veu`Yp*B1u@K$@39xH3HToW5}mV z#mbVt2q1%n9Bj3xG|2(W2*g=z2?7Qs?nHmcvn=eUqIlv=){Q?gLA$8vY(#dowt}uG zJv(=ngI3}lID*~{r*{`4v1a6zw)8PtlL6a-Uui?E8fy!%jG}B17O08jsQI0+6P{S5 zhKkucvG6WND!ju=T5Dp7966-)YpVXZgIx{>`avcSrSFhf5o|IMtW`0QDRhlJE7XZ5 zah6-Gg|fBeis0QQ^3JceB(Cz^|G~;cRzQo1{764^Ro;WvyIpN-6)V)8zS~6KZCBp_ z0w;XHyRHvbv_}mT!Y?{Hy(s49@lFadO4cB8r$0UCg^D=)N8X!=8nd~P?ewRrL3ZYb z&%vRhBsnK*YBys|jo8c?c#*qz0v|{Q4#0jql;@R-hv`FPmGr?~L7dicqnBoJ16XnG z?JZ3*B^fQDCD5N*k{c@G!(H{9BTeq^xeV2hmhiGB5qm}nf93n)O{lDi6-eLqe291d za)qOrb2uumB#z0UQhiu&$3{8*rhJGGAR_v(PP5~+m&%RXX#2VQ?KVL8R2 zy?R8E(X=U{4e}Iml!KXO?Z>hzecVh$+|F8p^~?2vQDhRjm@B6JObC5Wz-<+Mt`eTd z;+8LApP~qYDjm(X#O|pY{HPl1a~jm^BeJnh+gDpiiT9nb_17W_wYekk4oeARACx5y zVCj-I+EGHfcWJtxHK6JX8YE^raH7Jtjmc)+inZXn?02>M*-9;I9RYML?atDykwFJa z&x{KCq%>=E(8ba-V}hK^vUEXyWzhz)BjH4#dxdsq>AE3cChU)wtF<9u7c7(x8Qo&N z6K9kT72c^bu%=yR>46pVRydZ%3+-DGhV}uhYY{8Lux;RP^zMbQ)_AlJE6QEoyy&fc zVT96G`;L&#e$Ug5(yRcr_U&-%OJu>)%DDk`<4flT zOqqneojSIPuR$#L8K72hx+5O72D(ggyy)>Fkvq24@{!Yz<0hJfRHddy#%VG9A57!2N>*WPaeIqzhs{Btl#X zk$azT-lH?kB-}qZP>>S7Bk?e=x2zJGdj|7<*eoZz&~8qa_=(#q4V)*~u~_aWZi&g^ zrIf89S4Q%KAeaoCFQgLMA#PbJq-((a?q&n$gZDZm=aj4_E4c#7(Kr5Z4f1s&v*-@| z4bjk(L@?2CTcM&LKJ4Q!Otyqp9wTy|^rJOEZg`0F5?1cROm4)G_=A@kVb zReKGU$Tz_N@k48esF`w;sCm&&n3MzyQf87NT8h13dh#P#npF~Q_i|)dmrS}CY4_nx zyJ9>>+kNOGmePoXwKhcEQ2!V+(|Mxk3#yghP>?s_2VAQdp4oQh40=M^PB&FCa9~Di2?n-U zl<549n482qE66}uF|`jMR}`I6qCtYCouoIjC3+_C{ka&y4oPZ|tP>fm@5A|?93%;( zN2o&TAvTaK9tHJVzz1_NIb5tDLy{EIbue~>Pa`2I93hB$L*RVrwwVh)Xym2}>4fX< zCRYzpm4+C(iFU868sz?Wu}nh6RcP#;%oZOq_0DF?6470MzsJzWMIqK*rA;H@LaJx z$`y*Rc@oSdwgbz$Bp=JunPK1=XeLAnGLrMIOzglA8bJ%{;@k7L6$I^xc2dJ?HejQc zTlnpmoJ+ZF;)m=KLmFBwm6miQ?y^+uK1{pegUz;q4DrAR$dII)WC$#dPD|zZG=ayN zr7|;|ePGPLC)1Ak`wJhKZF4-y?!%9E0wyKV?n8Z`i8RAiHz64jD|v z)fIt@1$J$b=|dyR24ORiJV?iuzOeP_Lk5|B$xa!#Qzn}%;=<`@!)h@MqeBhBFc=1_ z-fC1_5SMhmPKEj3Id~AYi&Mn53`cpVwd$K$s>xMJdPB63`pzNLpv$+R4 zxo`KE&LyHM^(a}TFzBJ_d>`UfByH90&3%d9Jw;rlE|66U`jr(-FLvVqOl>KG^DweOI9a=Xm9zfT`zuy$~i=O7LqYpjnJzD zQJ!F3E3__Y`xRO)t(i(t87S!B^lYzCY**JAd!_BaO`&_Aw$?d}3Vy2|!@g%L)iOye z0~@k(tXzpPHFo`5(;({WIk6;77cI0Yh8BaJ77{Ww4Vk69ll_rf1OW(Co2^+u5N`;{ebs;9AXthxstu;!b!;RAD z;YL~X2qPjf*mgkgO9l9n7AMrlJP+(yYNCDx_Wboyx~sHZWP29AM|FN@&tjgc7;Fvx zLH6p&jnT%$aj7SI!O;0K$Cs)@wr|cMD7iep%=ZyyJ+o1JQUxW03h)ft8W|0=r_F%U z8-9Ir|1diQvAtmvuX||2*f?YO^#dD*u?;}t-7=>3klX4YFjbKB_aMGrnWds30`S$k z@eP%-{ruKBEcyf4sw&9ie;`|J1z9(Aw{s8RAY+EDoos*1O^s!P zk-UeueS%(R2-{sj^6pfj6*2}gzCV|~sA09GJko`gmI~5DvmKZvqu8^h zvu~-bwuHZQWwTU}6MrCEdj)y*HrZIObydz9+2_%&+Q9eCUV z^2NnF(8^u1@j``;zrVszA*b8#&xut4lww?dGbghY?SV`ZaytKJPKH?foO&Ur)9=a& z6k{9R#!-vj+xzq=M&zdIQJdaV{&m!e_bxrl-nh1hjGq0myOV0oxax>u1dr%K%giEy<@Rk936bA zUz0(Fa1+$~0U62i8q}q|v|gH2Z^&gx4))j-&K?_Q%z%a8ODK=!K)t>;`HDO1yY$}l z9rXv4b6Q(Ss9tDa0Ch>A%_-lZK`GxMN6L4Hdr5jE!`A4LoccO^CQGsBEDH^Kr44bM z5pTy=Yoh6J@sMD@9hF!~r>6alZd143+1?%Qe237CI}n%}a6A(Z@Q)s5!rau^mfh~q zQ`F{olp^7mb~+qOaQ2ieDKDggUo{~L=GRVVBl1dF1yODN{lKw1LyAU*iLVS=DD?q&?qz7*GR(o z-neBYg`$eyWN>fh&v8nU91xjS2u>ARWKuNq`Ow>_ICg7*GuP{27B|plScUeNuj5K$ zs1um}^dmvMsD&&If{&QJ_^nHy0wASlmp8ZpJ|Dv!Ofq5t zF_IfNSN7eRKI=91&j(Hn((xddqktb6>m8j_`za zm`WevFzE902FzyuVC`ig-J&AgL6Z2w<9qOmanNk$s>UEL-_$jTQ!2EIWrM>JHx3Tljm#x$-QsF+^?db#!~|Y8?C^$Z?pt3gAQ1 zGaUQv9kGYCwtv`9N!V`t{*Q1bSuN<_RXilCwLDmo%;ra-?kIlCFEm=vjh=D<=sLTa z+UupXK@u7~?1l#YnuLbi8}cyjnX%6ddC^qY*{!rcZSB9svjv+85u^h0EU^qx7zWsP zQOkda4k|`G7!;}M5=H5AoKe%BS;st#pn_Jq|@9XJ)dfSM?aQz}JplbLX3fLPN zWCan8Wcn|FhCEP?#|Nk6vm3&8mQwq^))ldHc9sI^RB>3uu-GH-P-6DTn@b!fl!yQQFLXwGjAJQ;Gm{qXN8~j@cP=zQ}Y@%QiJq%(|Q^Qw7nWgoy zkeW=SYgTuZRAa(2G6%RaK^{_p9sqm;$*&a9g(8NCUkq#`cc;l{?-le}T zd6YJYHKSa8){s};*($_P%g$R*-ywWkHZHhB__l0ZaM#e8E`UA;bUwmPGvu*JD^{q2 zKC*Z}>~T#ID1>26L<9G+ScFc=*nrROzH|I)Z`ktf)XiNh zS0iW@lYR(HLC5|~T7lYFIF)}titvsGD#olvBNC$>)~HIiBZe5E;}PnFjl#hSbbIqU#pXKNvg+48$X9Ap{x7%NmUk zfuiB4GZD~C7vR+OHtO!56N3bhxWAH_#Hi-`_fD4 zb<YT8sf+WgCl;_@)D4z!X!3$dKUS z=JJxCj7l0y=Iz;S^ca(NM8ujBmx`DoEy5i`7LvW*b307|$KTJ!i;--W0C()v9LBil zWGjOYra`6#m?NJMF z^zSTqPP8nKde<@qzYA;Pt0#?X^OWP^w7Hz)7mV0`pmx|h3kVZVP>L#nE11BZl}H_3 z?IIRc&{Q$)7@dF3+m3)9wAeH_?OJ{@`aTks9%1MAu^tnIKpve9NVRJKYo(nRi3VGn zsan*wAq+8CzmfgV?ES|u<${j2of`G}F*)me257dxYe4Ra8Q#Yu+)^PReqOl3`gp8p z_fzOjc0t$CMmiC8PzD73*HC6x-wH1qv^#PzixhIxg*j#qtNn*cn9mP$*~TzN&nfXs zbHYZ)$7F{MikD=Csp3y~f<7>)%54X`=f;C znj7-4XeEd<^RFN;!)FN=Ut zSR*vfs&Goy&f$CY2v0g|$(at>tR;I40uWds5Gc_u4rF8DTZ%_m$v;wPgF00s863UE zUl_#Kt1VnO+<{zpIaQxiGqxe^G9d|c43R6CN5qPAo-mrY3_qM?hT31CV>#ow1@TX zyu&bzW@Pv>Ec4NsQN0fDjMJmVhNBY}*9 zu9DPtkN?Or{=($AZJ>Yu4jt>L2f>@5T2u%@Da2TV5UCR5SQF;^7Vj2Aipa9zkYg;K z7I)=jn^+cW?%pu>-4&N)4(6UCyx zcW6T|SkDd%acU-tqGN{!pFl_!Eo^SAf;H_bm>WR@iSNwkCB8y!nI_ZJn}HiV&L#z8RT5AvIMD+(df%W>)9C^>eQvW zxqPLPSJ$zClxbf;7$;i9tHWVP)QCgsU>OpyHmiNW8ZSv@ZgZ!BZk1}1viN-l} zskC>OO5woj*z!uW?BA~Y!cz1uD5l*2nI#y#o6=%JB17z96kgyNqbzVjG8{=pT+E+k zkXk#;3PT$1FfFBI#O)^zMFKh$$+a6Hf?j~7p{kt`;zc|s*^LlN_*SfLv$}}6-Mh`A z9Mk8iG+%&(!$U^gV+@nD(YZCUEgRA%6h@Kbdw&2Qaj=&;0}i$}CAfnwKHhkUU^D11 z4pg)Jn}s7I?b)DTO|z&HZm-R%liQ3EI7YZl*|ql#ov8i|XArm5J7|!tx9lrmm!+K> zS&^i@=0U01^1Ty@FppZhGat0?8#_3n-7GMIw#Mkmk9Rvw2|R^x>$Nok-HA4WD+~UK zsqShAf%vqTah*;(V^h7YV}}rebJ9v2&XA*8VITPFZ&yIo6*|oJ6*T_)&nloj-EK93 z;F3#EC1q#!3Oe~Qs~*RqQDNs{5@HB8ykWOI!02wbJlLm_4%IxU!}8fJBUFE)BX^$< z9fPVw^b5*?x;z5lULk510wHmW=bQG%yMq%PKzByiw5>BVj3yPVvj~My=&Zg3$W86r zMMK-#8d_G`T|=~b+iY0vQuzx0L|*4{bmJ?=Y(U~7=MHDS5dxa@&(K)^o#EL8`}=UY$IH1S&+Y5Jxmm|df305GrB{ck<-tD|tN2K$ zu$OuSp=(bcZC$0cbw3j@+I5);SYjSI6Wvu$O%H#+dJtk-JxpFM9Zg>Q7iDy3@@g!- z?FW+=fDwi{m>w9$X5096=}mI~=~=4I$o*ctE}c|B)4(vs8dl(+b*Gk6JK~)(U=I zit%^XgKyeZKpXGWgVHWNptV>X+8DxjorhrSJ?#rP{i7h!w=n5V2_$WV9FB9B>uY8UV*(0^x(&CE3g%TvhgPsprI0niLhSK{=^8UJKD^YJL@x&&1^C=HvL{%68aquWSb)xUwB& z_saI$SvOIi4F(Jk`z5s_7{?xMDnhX6g@fi zDoIg#@*knQ*9`R9s%+YfvhaNq?oG`JP+X}ga@OawYfGB+AqpzYZe_> z+FM~uvi1WE6}KOJ;}AjmVehn6h@w_}*yE^QM}HM|^|e3KO#(sxn)~mqRFOt%P@5^* zUIDer7V^duGb^15&<|D?q(7x#5)v_X1e1hPBy;;f|vHwX&O_ zw{ZZkQixAL*Kt#I-_XuJh?rhP;FNh0gVB7L!nDj>UM6w4eN9e$ws#J33S>!O0O@W? zdbcf!jx33;ZAsQ|ZTNg{`*pSnG3!UdV$`L2fNgixBZ%C(;*&`Ale($CeM2-f4(nx| zOB|5A(Hi+@HC?d8 z(DgI&hdlP@w$DkheQKT3|IGGT-#f!%C8e`Ojjyy_fwC>4F86g>D2SP1F_2ze09$DP z-8Nh3Y$I%;Ddf`lcD7JEi{&PyjIDc%0v)2pO+W)hjX7$rXXS}-IR>d%* z&A^?S`ph#H12;+82QbVCo0iqK9VAFc1iUZo*nnSZqlX|L*uks~ulA|!UO|LT`5|?P zq#%r(+CH(T%>i}Ro4l1HFUNt-^OM!<9MEL3c(IzFd ze~UcpBT`fhvcIKb0eu9OBr@m47Q}C24pxxv_HOIxq_*B;BHB0%2x4j^Rj%+wuaWPQ zXaML02p?M>ePx(5O8wC=DX|oHm~uL&lZM&c`;#=#LAQmM4zL;KOMTT|Gcu!L_GTX= zN1szubANT8DRl$YSB8P&eKhQS^0@zKH1!<+^1=+K2rE(2`>UVT1^cVZxdI>c?$jt* z)QRcz2jLU6SG!X)S3-#eZH57+KX{OBFgDIZ?&ZJ>uNg3kTg#yvreW|Xs5F_qAMph| z0Ur(9KETq+Kj~kR9JcQ!ub728X#KD50u`igpaqtTcQDj0dGLJNStgyj*t^u@0Z#rI ziRYl6mQ|@}T&2Oh=!i+*J}hb{z#8?o4MtBU7OQooZ2|s4yd`uMOk{Rx1s@H|Jm$Ds zgGwQm^vBrnc=cJjmUKP3E~srz$yy?a&-U00Gl})>vQYbp696k{=72MuWD`2T_QR4A zI54U#-RROQyNihGR2W+&0ajW89g%{}%ijZ^{kG^m)G|q>xgWiJFZ@`kk?8J;>F;;> z=^X_*<}?R1z^3T?(e@ws=?C%cKZuqYU~#dW<9=&fcnDf_;pwUMnl@DX)q-mJdq6}= zzrfH>Oh+_Q`=9rZMqho_@Sgq$=Z?cgE1#A>~vi@T^*KrO(Q3FLP`_>2#4?{b9E!ox(WZ&ix*Y24F zjcK#3_F7oresMbYp4|lX3cWJJ8YMH&f+sMCU4B#%>K&t~#M<}2(Bb|59wo&|5%cIH z1W|G`BfR&$NbmuoLWzfIzX!Ikt$!a}{N2n&ACimG2F+Wp!hH}pd2!1YY)B@8qL7EH zfd|JW+$F~^V6^PXS(_6x_$E##Mz{IcH0jPp0aIWZX@VMrp+iq;nX%A zbPtY0pG52Sn>bHqt|JEE=y-!6A*wwQ1KQlwNVeq$*^=+slfxXWxg`$k+2Pc?qBsyF z>ZxK1*f9IhSgwbJ7t}TLt?n`rtJ<|>K0AT06xp}&cYrdbk$3^@P-blROrWgJ*ya^T z`X^=z`@HSDWvnxG@%5;qgXo5_IOXtjDb(knWQ0t6yBz}KXwcSge?;Dhpz&``RQSQ-(I z&*J9m({-I%N$c9mSIrUrmR7XN;jypgc(t_yYmP%30AR;BWi@N#I}BK0*q*5FIIK7} z7MCKm@3z2z3u$N}d$&-E24p1;us16(ypLJ#+h}Cy?Q(C#<1!(7f7!vo$0Bi!q9r|K zS$vc&z3TB{NaG&W;f_#ve{sO!KzGSSci(gT6yn()@)$)jy2}svtKgRqt&QO2Z3bNE zF(s}71j>jgHUh@2*V8q&I8lV9S1!WVPImTz2ekY6X=kvt|GWlV=eHqZiUX!2_U^bo z%7iCyD-VdB(dJyn{WWx!af>G*wCf(T+;fX-{OTb|0M2{+zf1%=I0&pXEcmyG$TsxHFhbkV|L+eYvJ;j0 zOIjAv)(B{feH)*R#%!^W5Bt0d44S9fsElRaKtJrHh!RITDe6FFthC5d85y0O8i5j{ zGW6a~jN(9PN$)5r!tFDUIxCVAD4Q|Q_xSk!$H_55Nxm1`Qtzkshg?j{tskI-Nbn|f z%D6yv+$?093#f<>!a{BX%*TCrG(KY(FX&kyVO(6D3q!c04fP`JsOR5?dW-133*ego z8>4?@3YM`ccJ4`2EXVMA@){rYs`}BdbPnBrMHkv~c0+&&!iK;uZ1l1}Q(+@iL>(jo z@VDPTf{gZPu61+}7^#hiB;h#8zX49)MI3%$L%!Gvu`$>OK**epIVN?3e4>Z>O%~)6 zjL#a=8TDp&<&4rh5e5rt=y5g338!MOwpL)|@5&liwt=m%_Z=rl0|LW%J98u_SW-x% z7x~$Fy1)QV(v>;(_z>4rsTlSI4&wS5XNk_9i^i4m`fP2hr}@ZGlfJ|w~*K! zh#Y>9|DBya(**+%|KAqUx*?y^3lTjn%m$!H;Jq`M?rt<40ltk$W3nEzt2>*rsA}2N z4WL@#nUF*xeA=P81AVoEbGv@oA(|kXg}nYXI3t9O#se3t1{X(KQ$yNPtBND(8Bc#M z<-w9^S4&D|%<~qt*EF~dxvWb6e7P|rijLMR1nrxdtfhc_aB6I`$0P-97B+yCcTbE|H!SP?n{Z=!8T~e}Wm_U1g>m%iU$MIR3 z1+!_H_GaSF%3%$!X%PTIuUCryHbB6VqY{v_PjPx`Bu{Bep0*_k`F8{PZ*PmI2AXa% z{SevRrKD(_rh|DOmYiO^FnsEqf9HC!w9jPqRN$@S64id+_Q` zfcpQ~+VW@}yy)SK77OLGL8C?S!6FRoLb2C%L$NosDZgzL`!}mjVW-%34cTgG>WnEC zg53^NEVdY%hHUE_u<6e*Rw=C5rTe{-dt;^{4x zh9uVxG|jV(we_^7+EcP|e?h)vf0I%T>xL=?cloxRidI+DQAGl%MBk2snFz;fr(3VEKT{4?(usrpkHq@STM+<68#>c9{x9wM|0}U; z%EM#7x5JChiuGUOh26*XpX0^<+j@07JhC~~?095#tARqd328PTKe+n%v<^x&F_c+k zG#h^qQYce zQ)H@$>!f0L2w+;#k&#{&DfV-oEv2Uw zHC;tvx@8ja9_7$GCneBAI=mQ&-TN4JFfi}PQc@G6*i~)48vO-bpDi(#vmXh zupU8Ch@0q84IEK4M0LU*&$d$valD>24=EZ8i$ilH$U_taP0{T?_@cz&brH6Ckt zv=MB>AV-$scprND4NYN_hBZ$}c976KY|XHq5lGL_p=ShIgCT74!g7@|06PKcvE(Gk zqIuli0f^Tie%<{W&Yanh^`RvM1E+!Wn9;Lv=}*w8xwB^A=rIJ2m@WIg5b;NAprfH3 z{9nd*Z6&n0U3}Lz`!l7@Z&+zF$Oq!PT=oBLeAoZ7&u`lMs3%AIm)f6cpUc|!xvJNH z-DloMjjLd(*Sj-ENiZFsAIoD$1i5IeC$Jl^V;>QUlcTENkYVe;RuA@n2P*@capPQo!Ebk69A>Cb}+b<=T*8=Gr` znoe|)o_x0dCA_8Qr`cxuGqGoADtA|KR7a}(vhB&j8OHS>f$8`&`2Sn8i;n5 zTecin_&CF06Q{38UWy}<=$6mlKc0N^-C4&czf|!%*#T-l@aWG7%OmN9{g^Y*twc3; zubrJt$r#<`X1z)Ura^iPQ|En3Ijn{JQ1_`OaqQUfU&Uc=bL=R^K@qOU* zx-;%|q49RS$tP8oja6V9w;Xws@!}3Sn+rCcSx&)`>n2Dl4qW(2fQ>JE^q|0HYRW|p zkBOVt|MNrZCrF;Vj)m|UW;+2)tcoImvp9)sPcsdnK}_G@ZKK|$_^RN*q0{sGKhwLO zT+)Sg{$m`rzk!LAI5;@iLUJ3Y9QVN{*=~*9yicet;C3bufQM|9%M=G3CKQ z30M`n6jKtw%@EXheZZzHKr9uZ0IW0ACkKOR)sJcVX~0BM!Kv^h0n_sO95zC4<7>q7H5)*!TR9u5#{S3*k0-TA^mk%)bkiU$CY;KzI*4^It;&wJ2Sp7nL@!Rx* z`o3b-#h(Oz%>`EhB-of^{kCb6deakiuOg-j=k>fc9U!z|I+m9nj6jdpqO~A|Qfk?O zt=P7RjhZ$FJ+<~FsBb7OSL2Q;)3l9}c4NVGIhk|7)*s{Osd;om5MZ310Yu^VG>1M% z@4-1v&6XmzeMIz_U%Fn4uOIu~VK}{=sTsF3sZ}bOfT>W4)hh8FgHLvW@o;kV*P3LE zv*+}aYt@^{W{*=poFC5m8Qzy-5dELQ`3>|SM8M;8M=N}QCiYJFs_hYQ8@-3_7)Kkv2{==-{oAgE zDeag;ZkV&ymn7=~TH%(PPlQ`?^ox&{s>>vlf(3Kbrsb$Qd^x$tD=g zAOc;3EHk)nZ#+3c87sG7Iy!FasZK3U0A$f7YqDqPu(+&FO%cF1Vf&YQx`WnQnBpJE z+WZ^GWc>Stq9B~R+ERVhBBNB%87haVX_oKcLaA7rR{@=7vsFsGya%?=+2Sf*4N@ zc|69W2So~-eCsX`h`l@PY(M(|0GWh-P}4(I-G)mk8`Qm1;)hQN>5Y(eGW5;zbKf{v zkIKVpI5myIjx7>F{xRJM{E#_9_P13%PWFP3Zjmzj1VEE*E^zQ9>xVsbDSH-$`BHX9 z+f+A!Is`i#|M|RAqDS6%eQ3^b!@ozk?bgMnI}W`W*y7=^?qYN0Y9~cVWe|@Qv}Ag) z)x6~oCh;{1{S`)4bm2OtWy&1orH}K;`*;oGU<|x5ba-{cr$ru3L*uI?`@?a&`?}`$ zdXxiLwNw7lgF=|wp%Jbk*Rb8~IPCiqs zQvbH)%_>3ov1C_W;B8&A)0FFa)q%0P(%ZBAf;ENUM8O$T-&IzY1uH^EJ?Bv|YLvKE z@);UC=EK*V^F1dYIxwI6t?GnqDe~?dJLWq+`JR+NRmxxNd{|q2Yhl$- z?sCmNnN!B}T2*8`BpB6O4QE}X!7Al%ThG^W@Apz1?E4|-@RMie9_==*N_7I)=&7nk$0Wa& zyhU}vhp)QmBmI8DUXSE0;%i=2b8g;=&`;H?Jfk$OgiTMo-&@3InjU%(p{mLHUpLPT zDd5rMVg37%6i50Yc}A}Fxyhpm*`1%6hsYuM{#p{RtQ^Q=LsV=?rGQt*?o{dJS+C-L)V= zpiFm&#z_S&&3}xS&EGS>g?XqEgr$EHDPU=yuQjhn*epg=5E~MO<77J&ohrUrrM95q z_9Lep4XZgue%-Tr>NjH*ciEuC{Agw6dcZJN%^0|auX(Rmt@n2T-D57&RRi;rujm4n zxl3Ohgp_I8)eeBY7Nx9!txWVOyT+UBHo{Gye{6^q=bfCcrw?PKq_W6f49I}d*iSTO zwkTL+d>F)t%JZw{Kc^gKeG!@`lb}8B!kNgp@`O6$@Y(!efu&rvzE2#J8ZEJuoX1RH z1*t20D>t2^{T{>V$4u_E>1u4lxpH~_rq53n-Z}rlTd6L(2;2k-66VoJoR|O~@{7~$ z@XONQAo{DMzi~WvmA7#lCv#>)6fK*1?2Ca$PQq^)@C(aRu?gI1g;fH5+9H86ik3K6 zmGQ=U_n>V-El%lmD@!~G-J0iFxtTXmh7(`~7sgyMONTYLI6+(@f>IpEm-p~9ax~ZGQm;)DpHc8zyp`zf^x^c3aG};ir5vX_SEl(?7pp7i**Pwgm>f!gkFZ$sFN0p=pYvk%8dB-HB zik3tbn^tk~*zh-}?D*I4R}b^NgDNyK#yHQ(>keM>q*i;@8IEs@; zRVeyL^-X$-NgU9W!9c$BXL9?-z0Al$gBCJHp;|HX&%Qyk7;|6ahYSp4qZwR{A!iQv zW2DTt{hGwg{eD%?FgTEMChjW<+Cq$=!$2tXvzG00x_$M@yq*P~nlMKHonKFts^^dA z<$i9Q_xPywJnn4dI&pz%t+!GoPBEPEO__N4=dn-b-HbfpzzA!_5~);jeQ|X?yFnEl z<;|vq^D}lVJyMuEGVhtfw7k5?v~-85T#=7!>Y%s=2mZ2UF%JBqS2yyCN2IRGaoQN2 z8pFD+^r=+I5;YLU;!QGvN}}}ocDE*dk~joe#(q!VRwl*-O}v*^oarIk%tf9!Hn2Qj zb?fxN@?*v{{>;L)v-r9f0uxn{XG~9)&(`*hJs}>7zuvK=;A|~7gcO~v-8|&L`-934 z$*|Nr2dy|iDE0N=ExKTbW|4>DccZbtht4~gm$oHTiBfws&z;N9aLV!0I5rey^jj^K z@;R>rP7<%-GscW3(ZSJ`kAHtonpWP=)Gr)7cFE2FJ{O6jqsnJ!4~SD!=bSByQK#RI z>{*f{s`d7iO6L|E{YI-e@_0a|J0tl??_@l6$vDSduUnZtQ8jhXs8JP~K1`LQr^@h+ zciFXTsxxe%qNP=JCh&x=-upzkGphpVX?17*Ra3L#OTCjxAdg2sj(jg*M{!dAsDtb- zF6Hu}9_Xr~WgSl%g8OGxo(UlEsx$HfhN0Z%P&YTuSKeE!Hk{ctp!}%M?RoKUaf%p4 zi-HT3bADc@JOhJy`C+GxbDSC+xQ61~9y-}f-pl_8)I4O2Pl#%7xDtdnDhR4*pbBPO z(8+>%GIT4%|8~M|H%&jr7*G`0bG1rLZoXCAJuOeDF8n~GXpwN9_oE6K&NEY+K2NJR z3|01&oH10NTV;wUIKT9VRTz%67q>cBq>{wx7uWi`9#ORTsK1I zHx1$g)g`kpO}qh!W7B79FS#3<11rfLyT0SY`SKJ@pD`eZv|lf|v{)zhsU!t0qy!| zRsCm0f6Q%P%gYsvbIcA0#=PjZ__RXGc?DOfjJb}yLesvpatJ7in~lO$b5X0)f+h3K z{ccwmmPC-LC?fSexb|<=vLaV$IOi{yDoyN9ET&{?lfJap-zE8v)@7Lfz?r<4oQ&7r zRA!-xir=N7=K9~o-^#~V2l_=VqkTHUQ)t#{6OFNssikAnU)Mir6y$wneE8jFXkLX1@^tph)1(ME0zU?WrHWvZ9y(FM-IZ8XWBUtW(3GZS&`EH9Orx7Ka6a zdE{~4=1}*!Ta-N&6yA0JW_OGkrK*u=#6IISy_u@~H|II2i1}nrIQN66A3ndXI+y$9 z+~e|{(Fa|o1ih-8=%Cx_(JI*)ka`g+lsL-&>sRIs5Cg`%_v-=^09u-Hkh0&Mvt-xH z4#|_p%f>U~yf25c6I)9oARt5^B{#r+WqR`Y*)jmtdH|I{rZ&j3IPoaX^ELr>wc3$c zT>0ANIZr*NOu>pQziF<#iSAVo<%`%9w6ssQUnNfoPaZH;C;90#K_E#mPAqp!EY9g` zlI|>xJ0U*ANDt4$HI{anKw zeomj2x&C>}#R*)b`W1)rx3q8SniQZ#3E>OMi;9*ZLGW{)hAh!7QF)ZA=ep2v{wtyV zn+tggS^Ww?w&zUV{BhdC<$jxtQ#Lmi^>b<{;v#Q(Fo%o$-&7bmRGmNXczq!fSkL+u zob*X=8TndWzlIYNa=CA<4zwZbx{u1j;Q zL@-jYYRE5XGcuudDxR1q$Z>FTjB%XpSmQX+X`{nL2QP;PUZQW>Vn8%y-=f-ezY+AA z`JB>_+E2PXIhF4WTLOM)!m99-(vFyn!u@Hy+x%__a^M>!xrCcxH^395A{$#qq z$w+$|e(cE;C-N(2%5~w|U~Qn*S1Z>_wUOG<+UK?J8Pg^hXK|-}t-?cX=&y+lcsLUY zku{iC@KW7*@@gjUyGUq{J&gep!ZwES<~>(p5qPQ`leiN zO7ybyfNzqem0vN1s66jie-oIZ^4xudn^k}QvjkD?x6SFZw0r7&HM(zEL9-)Ik&>RK zUB>QVQ|dj!IZuD_S;?>BGxZEdB$v}uE z;-xsN0%CMs{{7bi-i6#Lk*+?%$(~_D%2U{Qm28*6N6i^mdaK0ut7W6Of{}MPPa>W| z?Dl4wA&B?n#6kA)$+hg3P|O|BU)viax^1-<=>`U>lf`fP z1}mk=Dzy&vg{!su?n+Cp$c?ihKQmIlE9Wj0U4Nf2;&_vqXm!8@DNm*3y}g8|P^rWt zIBBr|H13TYcb)iB2G`4?gJ30wn_QnnJNCYBm}Qf$R*XSI;-d&9`! z70xYL*r_mbxp&rN__vsR$wXGmqVTP%tYLV76%lDYwcp)Y3_3>VfmDP~Oo8bcqrFX} z8@svVKC%gG&Z`4@s>HM}$0YH9U7ZS26ab37WAM6_;d_Q9*s4~sFOAwXvG4jEG|lbOyC(2NJh7}l8ft@%9L3BqCF*yf=VjKg7M zN!N}s3YsVJzK%@dJU{!oklTB?ehRm&B(z?~dB$*Gc*UrW`GkAQ*i?3@r!kx_O{v#i z<2*l)PU50(g_-KdagK)Pg==$5^MuQCnLOc(x!PQdi!d^$Zj+}r7i!+b+{V{DzfGZ=H;z=STB>U~U*wb<$FFi?7B3XWGOPIe2Qg3c>dxoH z@%KkF^Z5JU%SfFsRN<@~T*iL&ouailrFWK1)aG%;hDo^7pwqwCvJcNjLyfcWqn{;w z@p!_`-T16!Y;Xc63d>26H!S5kHIGMy{;?N5YbG>L^L&`Kxxh1cGH zKeH}Yn3t)H6)wm`C(|;UqJ@()8|M^bDV`}#$Yj;R!I}Cf;is8jM+zUyR7MH|GS{hu zvdku>&?PfTDP%JDM+iT8A?~2?vlmgpg++DY!mk%8!-YfVZ4MKjARA!lzn2aB`(gNO zKjGFz`o6;Ti|QT|E?=a4Ot{2SWPg3p!IY9P&zs|V1{DvUpj+gbImr+r9JZ(~7@z4w ziiM1uLsiJ4rk+BdMM*t{`(~#X73HR^c<_Z^u2gsDjOLG-x+eIBn(_R0H2e>Qm>NVy1t;^Vw6vl&z1W=@h-?ocNs5=MT8 zUrN%1~Carp&{)h|4eYkVUDgzxcEUqOzjZL?lX`OlC;At}0x!9Yp%OPa#FZ z44`POTzp^AT3syz2iV1(n121!f*lxC1iKGYQk=nHFdVNwvbvrcJ|%CnFs8(ECw-px zOxs)X3D@8`D%r#N9Wecip3jhX6?iv_JGtVNvkX3t$|>Ok1-VT62BlyN^R??7?a3^J z0vO|4WDmzXre+C^@cmbwg;$9NdYOio3>Z@rNQ{uv%u9r%yll-gMgX@f9MN7}T8I3>5w{j;@ z;G`73@GRA`D>Wrmup~e8y>EPpBV^BNPj$F7COu85E1c&EGr|S0t=z1o?Ave>h^KG` z@4ALBIO^m`UR?g}2qPk~=+(ik^zt4H%Z7lay zq31*nctYkU^@h2$$w} zsImgzQ&AZ_H%-yH&g6~XQvWAa#6{$MxS%Z1WLmq-6qw&90JbhgYZ;77C@^h_qLsbO zGqF3{O~+>Lm?Dv@k=_QvsEnW1j8?QNk0@HJ*iFAFT1yryT6>-n7|T5J%K}f~|AM`O zw9`ukz{BG&BWKN;3utV`5ME(f;L0!Vk@VjC_+2^W9&vn8pjb|U;vE7MrF*4A8)x5` zTKSrj;!@+p#><>y6_#3Lx^Wi)@n(OKdCoKDk&;By4hwDAe8W7!>*NVyKMyJSlw+Uq z3n}@MBa2bek29tv79TKw67j)JctI53r9<-}aHDR{R4!zV2h1fAxi^GQrJjwv87MME z^km92v>&h^vCK-zaQ&N^Ed>Y6qa!9IPrCfUl@al&(I_PTjAfGDMa$Vwl=@19@qNPn z5*e55DmvFz!(RQ3ng3cl$*Iqf$^kqjlk8gJiVrrkpJ=1kq6Ja8hwNQY3gC`lQhG~( zi*e{3Cehc@rqYnfxU1BBrlr4gl1uEchI^Vg#AvK%9P{Tyr+T3fx5ntq&G$FXmM2;t zMciP4EBzoSZ&E>aWe*;ENwisfqJfv5Ys#`bE*GE3D~id5yc@LpndVeRu}aD$FHL^I z_bstQ@Y2#37g_WEu?lXSLH)$P%XfazbIYIs${h@?c}#Ig<(HV>Q&|N$J={2LFIE7! z^MWj!RT0j|v9Yl}vm0(Vz=ugX`+N3P@w@PgT!4Z`=|ge9nDjeU0dM=oH}J?3U4!-< z$rWX|6uT9D=~bukuzt2!e9!*b6wdnDUHTc86i7*sC&MMzbysc7zclWa&$2vdYsW?n zO#c8LmKX=XfR*-q8~LLt!{sDXb8O=AqT^QN2bL+Wg-Z(#UnZzTu*@$6s47V*cd7d{ z!8x3BtdCTsPhqLRN^pI3^*52c!g=n*V3@)JxbWEkZrMA`p7|T>P#rekFTxKamyF;}!hBF)R1%@MdrWoU-ove`oe{4H1c3s9 zC_Slkjwsz!I_HI5Llo&z+`DTUXE$z~=eObBp@oLPJBG5`ue#L(%S>e+5=-Aez1Rv) z`nDhR*H$HnHu_exvdklkPXup1jHl}wV<_H>QGkWI4opQVD34!yYoZhMUPa3b9DD~2 z#io7YcvC>yHBPpXD=G`DMlZq3ptRxP*pMrom zm1L99G7r`W8^fO1o|2UMYz-9Il;-oifhX1#aM_-94v(j8$%a=!(Z3RoJlGcEIIt@j zlw_!nA#9BBP@l_BdOaVLS9?%0t%;!a}0aPwZ2C_rxSN>7i0MsvVr^LMURjjKGIgSjuV znQ(`(15DoW<_V#eS6~d%{;)Uz11_RS-J;?JTQ2U+7XI342$6yce)(-}w)Va3;$MEg zSP98MKpH)9^2}FlO%D9Y{Cf`~G-TB~!b4*6iBD*rbG|5I?X$TNOV0X#=WXPS>eRxc z*`p?fm!?Xd#aNdAF>1{hhq1w$Sxi41LcatAJUBYMPGaWLN|wxgF1uHC_Q`KabC+v2 zoM~%r@+GsphjoN8-04V_d7L2J6cE4b!pSc$2R%O}clc_w_Q#x27us4IGIWjmyX~zUI$)(*4CUS)fhDeACis-^bti4K2 z)K6K0#wcRrb!veCI)8$u0D5}(W%l{0xx-%?VpJy<9-TBQJiL^!6xMw6LTbSmuNjvF ztZ|P%J>xiQsSOpvCHWT2jLHy(neE&>HTUxuYu4i1AxWdy@KW>63to4NoC2rizWL&2 zl09uS%|3P^=JqcB=xMozRivGfqx{=O`bWYEe9m*y&BMA0>w%>RhI!PlFX>+wC=8axz zJLGA^---LK^R&dReLg+6dBuW%o4(i@Pd(h5+?|Wg`%Gccj3TY(=RO<5Lx09`;Z8Z7 zD%5Ieg;F9TV3X{ zVsta&vRHRgBe?|uVV=XLz-4*+I+;XxEONoM0dnvNjen5BVyd7IX^EqXZjI8 zd|G91aId`@#E#DsnO8YjOn~7Q6QC3hjn%~V0^?6XTH?7#-pl=6Qh%NtAT=Id)Hs=y z#vNW{oVEA+ZS%KIjo1qE$ylZqlua%$$M8~huEsYcMwvO5XHL0nzD`~%(q?}W&Yv;b zwZ7)WiN~{~SrsrU|5R|rY2pKdK`CKc-B;{RqcKJ-O8jd1kfrBNjAB-g8s(ZkP<#*6 zE7^SkqK`D9#FIYK@Z_Q8E>$ZlB_L}QA%cim+FzViYB8UJbk+DwmB`piF;C?EiNqO@ zQ6I@8;=Cp6L`eYW?jpV_Hm>9Ryv3JFSN zdlYw-f*|JlhWvYj9?+5l4$H+TdW1`nkNC}eEeD35inkX|V}mOzK;ladaqNe_Q5@_2 zU0}RDaH4UH@bFT@*)`|W&qcDePqcyr!>q)}<8|=RcKKg6lUsK5=RgvY5oHZT#XN&J z!#W@Kv8r(2O?MimO3k)XqGrMLPexA1a7?0U>374pcZK+dKba#iI&F9VtGrSwE3r0< zOFn`WkB&?DtneEv5rua!!ey?)p9n5J(qv3aVo_sWHUqiTM=Z)fdzD915Bg;nvC5Iirp|6Z|MY00Vl@*`zO~t}I z7vn)v^V3B0-cXnWrYZwBHE)oY6OPXE-Aq0LSd3Fw9$?+LcM>)ruz?+F`RAwO?t!)_$gaDve1COB3p1WP*APuh$OyNVMLvzvuj{TXFUgp?MFnxMR zH*$>lHaE_N0MBYzFcr5lz9_xC^Gm_uDQ$w6%ntKA{m)X$L#l)@-p-c?n$A*gpGrXmq=Ok}45(?7q0JL!C+ zGJRMhL^xT9X+>F}Pkb1}y1aa&DFQ>H1GRL+ky>eVU%?N(ER@DV$TnMaP{@Fgv*TF= zIRRvYVEeeT`!;ZlTCw5Yf%!#zxCmYF{+YXoL9FaALa~hLRTQXNOwcmLg4Mb;Wr3gi z2z2sJU#q_`$YdGQFR=cKmO-i6n;?<0#3-$3c`R>Om7joZ_VG|0G#ceW!^QiWjmbSk zdHd^36E>z<`r#j*htai|;Ddx2ATR|WfdNM1&*AvG^4q;vQ@MMYXr(G<$%<0?hI9yr%@$Wt3EM%R*dGvKXb>;@XWzrB+lw?!q(8*V!j{E zu`MQ2>Tk>%nT4GV)_&^0JbW#CGg2`J@9iTP^2-t9g_bov9MnO1!&q`ZN0gxkzfo~WrjiEhYCY-JR z2Vjxqhc8%62*H7jQ}5R7yfLx2r2}O3sIms{g{9dhjScZR=`SH`^umV=o7(Xznikp?R!Qw+`$34~PY-vvLgm zdjyNXfbp#)r5ct{Z}kzCtOW`f(Q6lgm77$uR99lDIL?|m_{J1j3kY8jSCF8Wz|fDc zfpo*?1bqyvMh%_fQBXQzw#=%~1vU^>?YQ5UC~y*LuMDI<4D)AQ2|_w(yJ)%-cVX?^ zr5c1<0QNN^oL@kQ31Mo;(8=Nr0a=uyis2!}>LFUJ522t~HydN(%PP3&plYx$8CVu; z;b556bdWe3k6IQgIAw3mtvXN!$_NmL&{gf7HI+;h%(tK-ax&nGF?8Mm`=7fHuVc5O zR`>)zceUio)UE^>nx_yhw4{C#Wxp11#)N?cCo#QQ9XuMT{f4({;S zI^PzPBA&b0su;nEH?8K5FYhCmMnAicA#$FZxZ^8V2}bJzW58jpErj#EQqb|$w%TnA zad>#0H>J}nO%b#NNOdm)v%oCk618^(_!+E|!X3Jitc@qun!LZyoh9vE@B$Pl=o>4+ z2knuhaxy+ac8jGYFcI_}%t<`}G6PH60Fn`Zf)sd+j$0ax<&H~8hmf}#JH4)~DT%1Q zZY=TO>J@}c(k6V!P{KaOH|_iQonTuV{GsTvRc$>cFm_IkxEIpz!Q>lIb6MJ+ql<^v zod(Q!CLHBXoR)9mPI`ZaqQ{P1XrQbYQW~-R;IkimDI0qLiWa7$ zht_@r!0VkAMj!|{9B)~I1@k|~G7Pj#IcEG@7`i-2g#^0g1iArXAcBCzF%%L7D$lG3 zMwAYSisL2C*1&J7n5=_hGL<8yCho_TpNeWfxuj@~)5+4pIN4M-#gfa+e`_fep*K z!28u+qcXq*%g)f#x)->c{7QS zEG>p(rsN%uBZJowhjdJxg*;9~Z7Bz-o~M7o&`+ z%%dLe5Mmkqwg`{|@e?ddVZPDBiXsiggdj_G)Qnky_hpbR*GxNVjAceHt~9L$yu+SqH3;uT=U#>>mM7mLjX%kp`(~5F?VEal9JU`2MP$*e zRacnQ9wskuqQH41etV(l<4-9KA$R4#r zMFu!5>)8WPE)3$R=Gi=j4Ego*IIO0nFhW2sO5Efrhw?Cec!wSkCzg4vv-v|8v%&>g z}<|-F+XQ3a#duW;8Hu@1r!nHaTrqqy^P$?Fit}l@Vb<- zrpyUE$#uZby))|)+8oyX=JX%0d4LTTvcoNF?7z*CWG>3@H+eKyvk-1W2E)mtfEgG@d zY!aDY6`fpcHi(Lsh>7MShQ|N^Q5N{Z_c_Ol2NW6uUNE{ZGrAXOUy`T7F+kjefP%mm z-e`zSIy_UGH&k0bNBdyS8l%zl&jxHnQ?%|Ma>VQ=%3bpFBA6IHSSrLH$|)M;8_5`L z_50=gTGZ~7O)vaB|4uHx$bCK`_Z-Nfm>`NAdm>Ex40`!S%tYY7EYtJCE>HLlO#5`h ziB4?Q~N(a{nq(c$}(iJs) z>BbG7mC8;=IGTwPhZwAb?w;0{SofJYeO=B>rCN0R%cS#9o|_ zV(xtH^S-wc=4x8#OuuyFKxw6NmDKvB_=p!!s;tAe**7R0nLNo^l$8?lqoL zty@>*A9{sQMji&@7TI5c%q@qv>o-!^xV@AdSk#x3UNKd)#ATLAtl!1K$7c9xgKx zWC!WK&7$(8(h;I^Q|X8oLIN)}?&AC)6nnicIPz3o?*UBaZ2dJ;AE(#=s8NqoCStg5 zked214Xm8shs~Rzzgveecq*p*Z1Rou&U4VNCWBb%to>Cha+^A3XES6}C|QcTH#6Lf z)H`_MX4T_sLrnC)p2`zv^TSk*=N!+y>%jtL7#kqIyzv@w++x!K2kl&*ZH^_tVg(KIlE&lmBa!j$8r)q}Mag05T zV>21!;rHrl#xri%i`zJiIlQp$=aXmQCdJsvdYVcCx2mF*jarvcPw>~64!u1T+>inOig&Oe>~-X6cp-`ZXifdXMQWgmP;5WC?dm}kar|3pFr zyfh{s!oI=)&4VEF5C<*fhARJLleMhe7_)e>zrMa4uB8= zp>hw(-`~9h$_QSBEvB?(2q90lsjEN-!FRcawXTbY)^E2GU{fG1k1AI~sd-r!5aK$< zyy}j%`&1`D^a7b7iw#c#jTaoff-6ASYimhZC3M*kvJ8|+DfetUx8lwln6mi`tJw|2`nR7Y6#-DBP%t4p%MEi~zkJ3Ri3^jV0aR>&UQcepF{o4HkW;HkRT1ye6N zCGRg~apc#u%U8F{_iL9< zx}E5|k9xvb64;M8HAOi0@`2er^9_$0#(cw7y}B^f+gc*;c-Cu1_sMG}Db0tJaLWzU zC%e{uT$^{%FyA;}(wd2$L}?Op##8rA(}V>}Zj0eV<;y=YPAPsl_S_@~v;L>NgR9p3 zDk0g@PmC`WzMQg~Nq5|zW!1~h3Gy7Vow!c10}djIO1C*w6giQZp$qI?7O}wF$uwa! z&$J=2KO_EyFOMfK7f9GF98}!5d0{w7%USi~W-ou~%DJ4Xdb3v#tJjDniWWnC0Wzh< zk%X*wY6MX1y%IB~+{Jz}W%~2R4eT98VDw_FMQCs#$CJ{~5Lu$LX;aT)fg|3>-Y@3Q z(vC$8$xPLm+@49SymdHqe)in0gC1fsQF4vW5(h~LQhq-oo|fkX!lZy^dKwaz4qJM9 zL45#?2+UvUM@PGEt|U^tB~+33p?>M~du(iTjW>xlC>%}W&TBIKATejn{a74Q{vLcn z-ocz{1B;MKQSDv7#1&(fu|L2c5qQG9OJpt;S^AFvbrKst3I={OjxhY0Fvyu!jQJNv z9YA_naQ!5WLWI8v{m4IZV-qIZ0y1Xr|mNkO*?285p#Hk_Vc>PpyClU7eSXWcP!v8 zok09({Wi|`|FHMpVNE6712~>b3W%`eCZS3R2CyK?g#dQB1VV7>gl0{o7co>DYR~|7 z>9|%tMA4J8 ze*XqEm^KZN$_RU$Yf-FDYECG<1qWAHJ6$W?h!=%h$=*t3p(*L4 z@}ULpU69)-W46ypc%<_{XJ4ip>iu8WapuipGQTvUL|0xwB#)hTmj; zq%bW|cGAmateVI4QvRj#Yd|0Tieon+iup%tWV>oOxr9g8~(O(@R=!!Uf>zr>|?~rZEKAilg)gWAhO|&d-Nf`h_{{&Nb z`go?Yg=QYgr{$!?y6c?LHd+wDqxwaVs>zY59_F`iI0f;f#wS}1xIv`F*4BGQQZ}@C z9a23D4T5xaef4yGhZr3z-0Hw3$c*-+t*9wS_Mm%??l2tdvVR>yH71(<#gJ-^jT-y> ze9h9t%karR^p_>XC6n*rtM`ei=HR=P_k>-@BU?;GY(Ju9&8!!HB{goyZ7_fnElrY} z$Y=iHdjkBI;fpcnl#v8X@wHqP37@we!1q`YXGPCxgJ#;>m^*C0evyZz$<+ zZjxlwM7fgm=LN>Sgsl&<$l+BG^=g*3d!8%hzbFjkU#n#sr`4)pZVh z4N8_930iq%4w5G9D>NsDqg`!Y%RQE}6duYz3^|H)qn0NQa-h?l-)fTF9Ys7%67#Ya z*8qnPwe%tx%k?HqyKafuJ~kY_kb}##mCgD84ns~Ad_#h@4hk5~rqUv4u%A?S=qs+N zRm!LLlqE+tp5BJmj)SBLpaujnZeOrcnccg7%ih8BJ^fj+AIg8sn5Ls}yIy`TTDE!F zsBs{^<2DZ4NO382)c7WPl6tT0lio{}@Iksyct@DLZ{ak7sJ-V&%YUVaKdJnDLB?HH z=Eur=S-z@o$$GZnkqNbA_2ewnu|Q9m_9g<*HehEl{{pqWK$B0|Cj{6E)+6@(=CJPa z7L{`ES;Y*W_N#A^KpHE=Xk;{x4Z=&rfn$3M;uWS=@7W!?vsiKOb!X|m`~5Ixd=}(q zlj3azE9_kZpbfhdqz}1)MgSxC1AK@zPjJNrD2vhk0h}?GFD5H ztcW_u-(pe&d`}owahVCtFuImDwH=N@c$-9*NG*(oLqBQ|4&QN2$#qq1uE~EvDiMhM z!^CKe2DpO&k5?SCpenznJ1c(vZbVce=ukBqh`eFeph6gyZqzJg2M>{k~Hnsd^#(S{n z%ESzecJ+nGlqP#US%ra9y~vCvyR|fMnsNMaE}StVcQ?X(-&)aFtyr3%r+gk4@IbN> z+`(rJ5`RKO$Jk9}hhZegHsI2kU@W*(q|9TL>A=JW^>sWr&*)3`Y$Npw#k!IqP3*)i znt#!3i2#62|2rGXcJFC5Aon!J$dcLW3|uPD zW)jzH-BO6okq~Be@J~2YgdY%-E5mdXpYj;%Zhf*mMh z>6x4F)$+HDK0xkr^45x9XKlE!1nO9#{mKBQRJ>$oqnAbjZ6Gy4OEm*Aj06J-RxbvA`^E`NsqPFtHSc|Fk9zYPm2y_Wyz~w0)1c-*SX9jm zR_4PPgt1uK>Orp|`~x-Y#!&4ij&u@yQc$Bf4R}&0v24o>-H= z0Os=2P?Bm)0bSUZ~HA!cf9^b zzk71HsLh#g|J&v({F^qHe;n4|rk;9qx6udnp_eM$I?4(*n$o<*7>BzUKk=B2BvP*Z_` z+xQ>jBhWEfa#J%akEyoV=RnV${1dfFSqJ#Y%s^e zxpVYgSXISV|NM+0o4zjp{lJF)?r-P}vH(QaKEM%riRQjwwmAF-@U6|%$o6RdhRK^( zkG{R$m38&>D{4)I^@TMARPBT_%J0llPFk6e;3Tv$b`r!lh<^y092^D$g&H(|E}vWr zy5eIeKBbRCZSxRz3uaB++=OPwXdN0gFE1ET@WY852$JIvG|KLE98yfd24E$& zm;~o8jkx>-7H2ySN1IRGe(%JFr9hu(N%(269@h~T<-0|oczGq{)q8$_&{N-}@zklt z40pD*qnvH+j$88s<>YLFAZL?gP*9Luo(liL9|lLZ^@9elgRmg&r+o*1Jnz{!Z{*)5 zpV$X=eMOY!-?aX*t^;|@9aLWAb|WQts7HGnnX+a}P+H(HL0vC+jLuCICj!sJ%CxBu zI$$rb#RY(VYN>8zbF^#%4nC!iMsHBX?b47BnT?uh;wxMwl-WGx)keFYxoZ-%CbVv} z+r`a?18&wEV`l?-6Sw3UNfr#As-vdg%DV^~BUr(1@#yMdHLW~gKO|v5Jb^JH{@6rH zb1F!v$yI4rtCXXEp|m)lAJpROkf6slp*(ECR)tKIXz280A!|n!8-UzL1Eo){RDrqY zz|6twnA@fEEY{|;@-{TU3R=b0N;qtZw)5<7$MQgPElktjSsatl4?nnm^kaJe*x_ph&dhQ6ME-+CB;aqPH->bwd8Abv%&vuC zXcZ7KNkA*#OrydkeUYRyl*4FKLs@zJfm_0`e9}aP{p+Lh; zXA_A?G8$r17-^hXQhC5{=qNgupJyqe(Nvo!VC=qqq|MiTq}5^lppj=TZ^D(M{Vg|J zC=+L~I&sqc#<;g%zL2WC(QssGcO!2H=n{A4r*M@1d|2dC9u9Lvq5v&aoD7o3E4)G8 z*||Wixc}}B;!usw0bDHEK7cRgncgjIwMR++ zYH?=^8=(bO-Yw?`LFhcmXyr&d(Omd76U`r?9QmEdd4w`CSv{nKsm$}BxKr2H38}!S zvsFl6nht%uK!-loJWv-Dql#tF%qXZB9vy@9*bsSXGx7_P(rEkWay|rt8#PjyNR#uT z^&wVILmTWmfEpQh*5nUUZ+R`I_t&oa9FStl)@b9ZibkFV>K>dAvl5DwH02W-6guHc zBl{eX;BaSQ8`$pQ^C;|AZ@>Xe(y?S=_9zG^Q=nX zFmA#_L8|&ZqM!-_!Uh#V@0mGf;;%8e5U+r;Y)#U@{_@Qq8%GIj9R45^{qx^H_BRPM zHipCh8tDIm;Z$jO@Beo|*0+yfzdmB&AX6_mJX2Bo+uy4m(;E1&{-Ee7EF<__WGu!X zQ*nKWR`?X6Iy+AR6eFEckU=A7@K?QNAUZk{YzsVaNfAS&CAMexJA%6g9Kwu5BpB=2 zWj(*DTeL14Qe;SUQHXSDiV}A9c-0;)I0h9|D<2P0mte#B_nqs>*9e`jQH0Jj(!&s*6QXp&cdh=2 zo(3X}rkpruP34#;t1HK7aiMeIX9D80r^PXKqY<1%Gg7I;*~pn@JVQy_-$hk)ptwLb z7b2~&1&RucGZ?0s#&NNkQ{MpM1wNHc1zQ!;u@vDD(gtD<6eg58@?$a3HOd^>u{1jM z8R0Q#5JTWgSGj)BphQ3TVuzlC^b==3g|3q0!G2*bHvxv4G}v>LJ{d6v_P^ciJi67X z!0)JZeITzwe2KdfPN+y>VF^=)uJcdyT*So_avdFWU0)T3>Ck6Ha;@RDpjv2M1g{|z zxIysBKIKG|hVlEhEk>|$@RVDX(JL0fnkAS0$&Qi{yzYnEOi_S;h&0GOG}^F<#|)7M z1baETOQU%@q5fn@h>y2_Aa8U!qUn{ada z?1?sQ?5>IhWtan57fYN3vrq6v1*HeAzeRmE;O3~pMuXOOyfBXs2f;Uv9szi0Ie~g+ z>@a+Jq3hTajxS@t>YIESRa8la53|m~Oc*m_mXf0gI`0gt5>ZM1eDQePgj}s+~6Fa08bz%+F4V zY|N0z*mRoAh>nneKiMNK&BK3xF_0Oj)3VUq$OAv$L;|Kycstb_R?v64{+|L;#i~DH0}q$x zC@i`m$f(=Z=dV}-9^E3I zo#L~3wW}SC<}k<9$=Z=!doR#EPe)6Ri;oKrjvuBUq+45iys7O>lQMkJsHa}-;Kwaj zg){u;LI||^`Q$0{O2SajAwHLFL^r+CXxv+f}&u64LB!dY2EgqPizS~&1GhUPO(*zxwAak=m?H+#RH(2 z!uUI9WX=7tWnsnO9UJ0X9YG2mISK+=q5R89rjB~o%PVC%14YG$BT`cWXm%Kyev-wz zCP7;H0Yv3icGa+hB8%%$RznB^jz94nVWS9(EOkCDHz5|htwBI;j%B(yK@3;peIoVN z^ycxZL*qL4z~{Og!Z06Vc8qV3wIQz`P8-I7Fm@=U;%j7r>6$$#=(D_TnI_6&e-ap) z>t^E|@XobWTXe%R3i7t<_n?n*=`^H z%+l&h+uoP9r;!?7hz~^%mcUz5mE) zfx~ZKC^6jj+9Y543m0mEuTOYH_1h9uBUJF8oeN?=j~iU^pTO~9!`v4fBDVSbK>eNl zaW-@&Cw$~DKSpI#{%3sU=J6~k&Fu;qeCT0a{x z-dR!GF9J6Y`U0oG_Ale=NJ^J7Bd+ZDZC`RS98mB855fjq8=dy$!*K?a9&m)>!!`{9 z+n9h>u8E9j2M%h>;ozJZ7jzPDT8$P2@6bdsnqq>z5#ReDL%X>5Vgys_Ux$;TekJ7GfN0qH;{o)~`;EHoq)^ z^Q=7h`mR1(4SXyA(I9AJ0}a#)5g&#B#<_faIg|vtK}182Xo;}^IoU@22DbM7xS2@K zV{{F1Mj8?W2aI_%96tU)+(HD+g>M9CKXelDX){c?YSG`i|tw5atKTVtg z`{%R~IOB-!by1M426X`<)1Y`aS}=6|*Wl3MEDE6siNKS9v{UZ+77&Fkg!^*n$Nve) z9t_QZRtw`N~@KS3w=Q+bu`fqhrK-GvZGc9zJ)rOXpYKCkutQ+BXqaBv^#mh$b;bWudJ|`Gn{N+fm)+9uLX@%B*3Z@os-_wh&LGS?u9v1{7i>-F|ViVE( zih{cr1iHoBYkRTD=v`HyyeN2FWVNdoTZP^O3#?iMXN$I1_hPHjdr(2v58N+>vt2%D z+BXk`_u9hQ&i(JoD_gj~7yj+|L4&VbkoG3-wzA)cexQ>cA$)!?ZE2h6;>O>_A21cF zPf7Er;X2^edvq9}K?#faRk1r8MSM=b4+WB0gZ*=zSjT>|X*&aovx- z%wSUL6EGIbuI3IeuG`g15ApHm^G#?i)m)w8y6RrKC;-|srPMDB~Br5Pd?ba@CZBgBJct-_%X`Z#*l|^-1;T;w5qb;c6#uwFX?qvYDgg*{D zQNxuK)&0=R0B{L^Jf^pcJG`i_yq5vs68;2ieJxj~sIC-(fuRBuvFo*5bzxmGyrTk> zuz(-AXA0{I;T;v2jJ>D=`qgdd)d~rM{!OK&@8+&7tXtPh_YLso^K)nqc5~wk>(&51 zD8ZkG?dD1f>sIw@`9gR2*);o|+~I|F`Mq=>|1dt^k~V2CSEsNpw^z#t*qJ{C%iqgY z7u2oj)e@t3cPwTf_e?=uPA?-OFu?uoxR%&($fY z%j{+Nk^WM?H&(EdtKLut^NS3I{^ZhV5Ud8wHxZ@^=bus0e(K% z(xcp!8|vl){(kU272}@c{;}3dtC#K{Am#JFuY6PLEZI<((97@|oC5-#4RtZSbX$>x&-cet>bdImby2-^&vh`r0xIT-q*oVkSPTgc`|VCU)thu6IDg!TiVd}M0(Rqo1lb$-3fpwIxR*K{QRvevwC2l{zJ{)`-W zXO&I))JsoJn5&V8R>RlTdH2$W!xdE^9|!(5n|%5A?_Uc1OM!nW@Gk}arNF-w_?H6z zQs7?-{7ZpX9&1IMSnaXq%JAj{=)X9;0nk5|4W}9l;)pY@=s*aO^r_Ja*ef&-3sY z*0I3j=CJ7H9%;in)_CZSh%WWmF`{Fe$M})awH`-CX4HF3u^0a0@t6JElOENhgcm)` z98_05c007)^#~o^^w8td=&IKq>0>%Rc=U{6&_#0{n{-8;jtq_{g0LAP(sL3DMAMvj z!$oaQ9ZsT9XW@9!D`%BRlp|D46 zC9qD=6gXikGLDV+E z^NFa0^z`hWBOFZpuwU@iR z%GrBMhUY%-2a8m7-h&o5HF%F*Tyn;HQ})5L-Y2sU-uB+Lw4=wnVOf)oWK>SHnMAxi zdW7WK^60S=A63)$5G$ed$9}(}Ta0sl7j89O@GJQ{8uLHZ-gM0W z^3%6}`8zz1{^&1$nK39p=T$T(;Ez|lF#*%xs-_2+bRWzNhtU< zSUNT2gfP@UzxZ8!}_8 z?dp&nV{_MssK-7i3K>1_R7r^MxCiASOUD^*3aK2ISsRi+zH4_#-S`KGLaHW|UJe;I z>B^muXOp^~g#11^_g%<>DVbVQFZW!Q^o9Esjx>q1HItqt4f)cs9#?Fn+dK}9lD2z< zPL}qH9z;r)iCq>-H+pw1mGUIH%cT<~p}Eq{lFW6|UdgE<>3JWQ3aQ=H+-m6$QgBuehv>^7y3M+v^aEcWY@vaxzlschF+Or+Y-8HreQnW#ZjsqRxWelgjL8xt-?Of ziE#>xi(-xq+ZlCgLReSS6*7#7e&7|B7X2VN%r~YhEUYNz(6q3o7~5H4v{)~Bm|H9} zCM+Q~Gd`>$wlpb>5qBs(EG;f(Vc4Mfn1Zlh6CPBD9Y{P>7bZwz9tw+2$~_XcHmUm8 zum?$*$HT4sy&x2GFU3a4jelHooXhrGl0Wpw$4 zdd&$xlEs`CK6?JC#o>kvuB;9>S=dz;{`11js_>r{F@FkATkO&pJ~8{jrSOYOs_%wB zS!Sypv0a%vIAV5=*N}+2IS=>|6PDYKig*B*+eXY;VK^@0&lQI}BI;Bwvm;b_F>@oV z^JB6j#;rV+8=+cxsw6_W>QHUO`PIz*5wtaj8Y0fGaXA%{ySDU7#F}-bHzWR9*Yzmk z!1~Om5r3`kdLBXFkohXYeuLNBh=>iRx+7L^IQ2QgtKf=$!7~ zZHZ}(wAtpxoK{tlsWvkR*Kkbj5UgR`~s+eihey`4*GwtV^2dk#>e>5zc zruy;F@aYK$yu79dAF|Dy-f*NVZ~E^?UCO7g{keM6^uK?JX_zkmOgpZ$;5`RNmn z**=}F*BGibV_c)lpc$tcnL}piod_K|W88^Tt~1I`X8O$s6kWJM(JX{vb2n&+=GMnRN-)YC@ z%U0`TmB@+)#cq=QGN^Nl?B1ZTN|{8rxmu>s71zo(>Nf9|HR_7@$<(@656D&yc0DHh zQ!nhI%tGJjvMfN~?wTx5zx#%4%6DOE+41jc^yP2Zt_kw{M%_yJaFgy_dAdo~O8GmJ z&MoqXrk#~?C$rcp`C+rppXA;{@{Y>43}O98&NnYRDPLu7cUHd6!sw>_kVW2YIcHex z{5jW0i0kJ>+OvM1^P@fMw>j_a?T*i}AJu(kj>5t9&YX7+;(K#^M>oHj^POWSGpfMR zPA|%ZurrD(B*a6a&Jc$!qrP)85=1R^V%bL-I5&@t>UHk+iE0&=&5F`CpF)Va`x(+5k1lS>XK;P?~Q(mmigt~ zjAr;Zzlv@QxT+IV6IiAfBM2(v$G8TIZDY0vXN`*aE7;C8=1NGjSBy&9JT*ow6$i&8 zhK5a#@egxNipdNQ%Z^cpcP@`u~z_u-iG>9Hqc4$QcEH>PP;R(kA{ zxEfXL=XlnY*d=qjZ^oXP+k88=Yi?P4tVK%f{a9&=-NV?tl{5|_R(>xZ}x3p;nj#Vm^56W6gQuP)AR zam|6a@r#XqjXS=$xiL;JTYNF@ZFbG=xaUh)_u}|Vjh@A|F7193m%6O;bDW*Z)hqss z>gvq+guI%#_~|Q+D&m7yhtpE}5uUdcgS-er9k!eCv zam|E;u9Dc9362|G*CzCCEZdXtdh_ANgt1#{&Lz;ccHd0!+UDAs@Z+|_&k{yf93GsQ zSZQRJ=(jW0HBr5jMJD=I#Rep%)vy*MeyJ6gCw~61xi<0jK2~Sq_5FD-5>p#uCnr5Q z5GG1e9_;i<8gs}fEGhF)XGBuNq2}nMqQge>k~SSLvq@fk!gXZwkrOoz$!|_%IVO)h z=_*W4I@#@(T+mcDHTiTC%RiZZ>gwF&U8l>|CJ+C^s3dvXAFk!eYySw_l*~HYU775A zHmoLjXS{+868ZHK6mvco_|0G{Jclftt#`&xh$?oU#nv>U@7oSZ& zf4=)dvd*8)t;sHb=3Pln{xj@)^0q%a?!Y z!IzC(<~q04c+d5}ayWc$?Un8y=H6~E8=0c@usbKE>1F4Fc{|=+T|Dnzud9|qK-)D) zu^O8{M^Vi>Jy+4oI-RD7A3W?=MYEn;t0G5#Sf@hy-H|7X(FWH(!L_VzdZ}Kxw^{0W zyxc0)ku%IbbuahbL8%P2(z4i_P90POTg= z|F_h)=5aStzgV1pltwa#+o%Y%$E;=n|*tNxJ*huaAw3GG^ z8`F+E>@r9vh=+#hRm2gC^tVL#m~>ZXH{WyRZiaj!E{1HyYUYy+<`GUb80@XVT^aA9U<=)26! zwc+K9GjD~%%Gecgx+t?(mOmt`Rep`1-7DDNp*`q9Q7SxchxeX?#u z$AxBP#Jro66%rR-k>#9pwQd&|=&d{5vY=?)!_NzzZ_w6T z*jRAQW}&?3q4Ppj@#*mkjY{%87ph9$g)CfNT0VW@kuApO7iw=Uzr1kV);PwZQI*Cf zi;nMb8@p)BPVb3}ZtsknvdEw+-(wM3waaT!dev#kqUx%L-!J;D>e|9ZTX!A#X_5UN zw}*=ub>1%*Mbzgr7t0%rjTVpnDPOR-{HOUN7I*&?H)e7E0qyaND-Og>Ui{_2yD5v~ z4;o7r=N#PSzxeUN^7O^QM}}oC{(R)&vc)b(kK`|&``fk7#Rb1~v`ZpRCTg){7B4x@d+lVjs~Aq)SF?toAGrLR#~lcz?1#Gk4=5UqCjhWO zN4qgpWd#;&IJpCr-NZyxLcK)`k4pFpgLwHgo^yYtmv3kxxZ4=|EoRyieOTOv`Vm^R z(QuJ4%4^r63X1v*qRhsAY;N^IH(K;T-_kS_qCu*`m1;&oYp0s|8#39GowqtPCTeNZ zEa8_$v#jUPsRp73Ho&&*L+36OQS#Cuufov|u5I5ZIE zu$A>C>r-VoNmLm%_QV;LQCQaV`x5pzp#)_g^mhZHAN4^O^g|cXHPHNV^_}Ao)he+% zsy?qe6vc-zY!UKywE|*Y`s|>4UEChkioQOaQ>Z zrwy*C2krexKF2gjwp+d&PxbK`1?)Vq=9m37zkr$t&JfW+D4JCt%e?#sDr6uOyC3S+ zH&9Unq4@n!ufKsx9|+~x5B267s1*aD-20*4egjoJ5Gt@As_Pr5odcm{{ZQTCKphwe zrRaxx_YKs^fl$hRsGe`2E)Rq%=!bg$4b=UCP!;`9z288+83z`=PLJ zprQbZV*ftDs|^B(nufy$PGXi;1JNg^wooFIr2zwpF}xp+5}zyu-`xfTr$(BL_-CF> zlgA#?Cu$o_DH$`c#K?b^Q1C0Ph5fbJ|1(df$@@RG4Ja{6Q=(Ao%NJ-#n{UF_NHCp$ zc1J;54zpW>vO|9(NHTr*PdJp&N1f3F!3II9lJ};cl1PwL@V~*Uf)Dj0Fgn~UGjPoq zto3!x7);f}{RTh}0pK9n14qD0BBO1>;*t&w6{1B&GZuRNNI3ygw5ZpbWm{iMBlTNQ z!xF-IAi@SzLn3GhmV3EoUA69GBeqr&5@z4<(m+slKPdixL18J60@$wtm2VvwN6Al) z)-p=M@~tU!+yIgSPQFrUU<&3AvEFPE{*q>=g^=zjG z1CzQ&rGPY$eE*HwWFfQI$`z(e|g>-&MtDPS%D z!#HX*trkreJt$V_(-tf#FlP;zM!S2d0rMOP#s|^RCj}6XA)?cU_Hk{>= z_X=Y~*Lr94TVUJ=9Hqg&Z&gQCNCF?0lMDp&rGEqFtC1`c z!lxf>tAmW|^4^D9yD3x@k$p()9Eh>C6j3sz!PRWHL`aDW^1Z@!E7CDg8gw{n$Hn9aS z?I>UZ5CXZd6KVp6?~@CHzBwq=WF8op>DZs?tjRn%Fq7Y(=|uJOvL;V6jRFOL4ydL8i>(&O}9h<2n5kg?Rr6G+Pnwl1O4EyQ%@~R6H5$8|fd)Ihzb%A%qlOUi6d}^sAUZ%__mrK0CHdtb zv@pAC_jkEiQ>R8swg~!m2$Qr{Q40hlAc`gqr08TV&4{(5(R>sNHNy{rN*V|i4Jy>h zk}Lou2SRbcMG0#o{`efiI7fhAG^j2Q(iF>t@=j>Jx#b02qTww0y8 z_K*ri=KZfCj;Pgdig;=m3W_NHSCK$eBx&0}TJc6j{<(RT{g0X@Uu#bNUo{t?B2WH_ zzmKMfgh=~eC0bAkicOuhDQ?C`ysQH)1&ya>58aL+zRnm8P5hzGZ!{wc3NPKu-Z`l^|4-=oraAK~4#sig-sGNxZS)qweG5Csgjl5M z4^p7nk|{`jw_*#AH)!VL0Zjpo@CmdnNTXzCsFpTyzlXBioCE+^7w{2{dO&Lh?RQEs zxr|cn?JQoyw3ZM{p@sT6Xlhnynp{RD6h%5OoJZeFnKFK&z4w7(88tExqlw56zMq$W zXm~6&j|VrFj2Z6%&4ppy-NN#40_1eitX6S zi>v^=b~Xz;@6gV`dfD#C?M+B1t!Db4$DA2#+R-BACmR>!vAP^W?>4$HOle!dKU|SQ zwt8FJqy=R@&0B4Vhfl9v=;Ni|_7m@7dZ>bv3~PIiDiPP0c^TKZG$(v~w_U zBS%hi&V=&fn(vT<+$yUB-yxjI-b;A~FYPepl6mx=@_6L#F791kX{47sMk~P`hmd?j zR5>}>2iV7JKUa>yoynXhgSdE%V-UNsrzV~YkwnC}1~y>}POA6nqu>bkXZhd;hns|? zuG(LTe2>f2Z**~!D7k66njCC91cSf}7@K}3RyPpe+liS1dIz~$k2bZve#tf_7gz2| z2?%h9SSTh21}2Gkp!%`4-KW5WUQS`+tQvQqh68!wtQm5yRhh((XKPZPH$(hWxB`%9 zT?r9o0-d!mlIM!^3KOQ)car8~w-QX%=Y4EwIS^xWArdZfWJWOr0>xd3zNUD7f&;mJ zH!md_LNfsEJ24!hK+Bxw0B1u3Xh6X~a<0FBxqV>bjKMHD63tZZC~CP$FL6{?_GJGU z?9tUl7daIU#>0u0mb5Gm*8&2Clbf4$VaDKc+<4a0+R1k^mViqpn+7>YV`P!Ib+{b~ zXu1g>|7@2KS~1!rvEXr4Gg;f|o^X>_SuRM4SphdFg1au&FPdSMNn)Y)a8d`bd<;R| zS0tTufcr#o#r2$#MtIu!yB!&e3Y$&)(JD*!z@Y@(=V^kuq164pgpmj?H?W>>j4zts z+8H(lgG(8nP(lH07X;n#AT%)Fj9eOytK4x-6TckcV2RVL3a{ZQ`yPUqXd!kZ?H34t z2w~CDD8K~{m(n(|xp>-zmbBGq4sEY7#ZwO|(%2mYrwL|6Y7T`hx_oj)(g{3uDZ4UU zC!9{SwDVN>B1Jpu$R1YgbzJTT+j=^wd$*(Q6arE=r{nxBpvg|t6Nl!%9h;5 z!kV&Sy6~oKT-%bHI!&1K-1QNe1YcpLwX64EtmQQNjiwm(S8I9@90MaHf24AYsji|?-Y=1%vTUh`ut;imO+nlu*~&)Qyv=|lS9lOe|SUBd_A~oY476I zL(*jq-;fRxqSyW`PU?MGv0u)0gVkc9!H0_9rhMR5 z1-cy}e@ElzejIQ6@b=)cW%8h7%a#QMB>Li{l{snQc4g@$vydZu3En|++h`W+6>-%t zoyhpI_jkA51TTFF0YMBj0(3}-A5rj@<_Hlmlk}e*Wx-;ftJFppG=Wed{Y&n{MXzm6 zjxu=Zv6<4s%wK&89*;8HJHxKK^BbPSE%p#lgY10FXuSbuv_MDAh25Z>7HTo*jw@a5 z2~eECd>PoE;T|Pi9LAOlRpBLG%phO5pc^bWRbIyuFP93n3DGXljo>IN=v6uUoXX=? z5-;Dg7Ka5sbUB&s&J#XKfuEl6jKmSbbO71v@Nz0MRT*67<@f!yJ+8SvZyv>77!)fP zigJp)nD--W%(Q22`pL=VIok20D(|hapScNkxS6v=E4}QAKuc}7*c;WtChd;}M{O0J zOjnxFe>=({?U#9_Kg@`UY&)1y>g2fIYgZW*6Q)y!ZK&#mQ^C=UoPC#WXdM&5z2f$S zVmdR|=VXKn?5C$P8D3HA?YD$GPt;yX@Q2D)d+wA7M;_!j3x(+|6Tp@Y73`QLFwQWGN-x5@J%G^zLra*^T@9$D6RQ^GcmA02Ydm3m<(7{@G$`~i6T2rPM&tg6bRXk$t zIdF;REXwil*A5nQZ)DZ`KR5tmuydH}IPv9ZVXznizf+3-o^+3W-V$-TkM?_?6|E!e z34V-lkN=fYxVv38VOZNDRkW}?qhPzxWGn0-CX07ocirj$AnAdiUaktP7&P0{Nr^xl zD*>cPhbdm}X+ysoz0=F}Pp>!C~IA)|2x;j}L^2|#jcCLi#l`USu;*&eH zxHN?gPgp8s-is2>pY3GIOgr;#CbQtod>`%DIlws?BkRWxqc+<>o)#~@SP&yzNdP_e z_&?YqEbloe7mgICpQlrtFj9QKoo=$>F;cdgBnpk zXj+CPHZDx)f-SLgmp4@tWm_3j98@9c@7%B$Au!&rE-(fo=qIOBs5)NJ>S`)suFCd^ zX+o&;Lp`M~QpT$6VDV08@9FP&n}zk7L20+6YZFluhM8==6fMMw;wa!cXdI$rd3u&~ zWI&NkFTHH&!D8p3^xoi>XyIh>n>+Mz;`>p;3+e2k+LOhX3&p~88tN4A&x6!{#KyMuP*ieFB%V$c!(8=41fyUcfK}(@ z^vjMe_akBBX`QCTTq2z62f5i3Fmuu((pLrG;sYFDBC4C;4yy4b;OIAVghKIwIOa%k z$b8rDCI`*|v;udIh?Ig12^PPZ%A70~1PDEyKtNfi0qIu-!aVCd0Mg`ylLFNb9SQa- z_F{U=Mb6qO2sdh)j2g+tXwm@Bfbo1_G1RB_)!FV4mzG5lZ>vLllyC?Ub(L^v=%*esEqW9wQdn(1qgryM$E9U@y;5kr!X6!4Rk(EEYuxPfiEY3(??j zAIDwJ9G?znx@V%TeXw{%vx`tnze6|ny1c?QQc5uiOq+42*vbUpivRLjej3pBaQgDr z5q@G2hvU#lPz*-(j-oBY3q}zd%5l*O6Mb}v_DYWuQVirw3Ic50jxzJCaG~n77lN3`l#2Z3$ z>}ryFmA>r|R@3L8aujJ`T#Urrq1uPT_&*Bw5-+WpPSY|BT<6S%4o4snTqlJgk4U3^ z?KP}Z5ozu1^nGa*uPJ_}7fl5`>ZBE3uI-Z)LBdJ#zz{g9^t;KlVZism{M4c%Oo#f) zGbqW;A4UH;#RmPrd3|kJ6#4-no9hYOxR+oDx!8ML4stmaw*qrn?Rj95_6aBG4GhgF zm|MVzcxbu{tQ|^Qdgd%=-tb*z%MW-j^SYnyWA6b!<2{OR1lpsY_ojw7vM2&l#HV)j z;h6IGg)G?9v)%RmvHLu}_8}JGl@< zO$8bt2Af1fQBUgw1_W#7dE-jm!&{H)(pI1r%!$z{5ZPvLGHj68$MJjjz-Ww~vE#S2 zaxrDDWHlfRyK5-ThSN3S=$6oqUQk|?GOOV}q377zzmG6s2a90M)J^7& z=q?!^gp_KS*|VSN)c`?dIrLhwB?;HmN1M9$vJLZ@IERg&Fz285%F$+(4U(|&=sPAD z(dai=U4(mCMa|qws6HFFnuf@&-r;{43rQnydB;@!kF|9vlN&euq9d1fson9Qw1s=u zXq%{$adU`aWm|r_B&(}u)Dxcd^=ua~qQugae|OO_yaLP*N~>rV=6sMw1Jg)_K~OEk zBbM{5Nw!+#4`BjvHV*~?dUxKTaWD-H60N@s&L>V&BSG-6b(8Sp=4>GZ{N)JbHkM*C z&x{ZExLSHP=33H8jxQP1s717gA3nCP=TaQIax`|mvl-3=A)@90Ew3*_SS2yo-lTH| z+qw2|d;V5im*W}fT(So?F)${nDuia$D9v!oO}(1do>fb3wDZ{b+N2TM!{et8tsJHE z1y60^lm~g?@{9AHwy^p5Jsuyld$rxs)ymRP3p{)T4xHd*;Z5d`JcD-grlNPl3A|wm zFbFWg{8?L-C;>YXcnSSXm7v z^G2G~5<&M!qoK88i=o}G7K~dlW(f;_`j77EW6DY6hf8j-+4x-w;o)v3sirO^P4^Zo z%qhijzBc>n$2=CqEOIlRy95FZg&QHmjcLOth*KqRgGg5#@loFvbK%j7obT~{gpv2h z+TWAo=dIcRZKXbXm=7exo6KoFZZT*o;hc2h6dD;30b6sp-H=0nj&Afoz#SAUGPc-2 zpd*Z3&@&=Nsc+)~GbMdd%T;4vQ(`7i zK=XQNE{=kjtOVG(;QHD@cmo*O*qGjo8G2w^V)q&2>TM#?wn-%n#IH7ASdX6k{ zg)_r>M7}}2|Mdl~zV(SF=lG_XK=aZRIiXyBW!(8txSu zjhWN&R4D}V?c~%$|6=`+TD{c$#M2cpeL9@@^1#E(nwkhpiK1=ztPM|B`9C>Z5R|B~xA`qI`->W4L^ zVA&sQ|JJ`3ew8!|GwDgpxZuYoPM8Vgfo(auCvRz;rvx*w<8fXeY3Inwa>nHQKRxQ# zVp?x}3K17>qM`$8JR!m1Q%w7R#%Uki7e`_|XPC(xFr|_`vXpx&tA}<}Dzb`B!iQ)? zL95yr87lF?Mj-9QsU5oB`cG?9Qc7ERTzu`~gJ5-ovT!>lPfQ})EGOe>1}@bM`lTQT zNCr;FSKGH9W`MYWO+GHJ9s;1KZz{9e)adtjh7{l`gHABD`n{ry^3zuQ`HBnMfKl{4 z{)U@{v2(bagEW?R`eqWwEVPpq{15cViGK}V6g@rJ9*xGep*a)W>gH{=&L3r z6z`lPOh`T0w~I?5VdDb}Upw7<9%BwD$^78pA>tJ#u((Pk!k<&B2F)f!&Rc^^ooLN7 zU>h)s{)7G@IlvVRTqVaK73D!H-$Do=!NKJjFK06Mp8-w&yhFiETEv*3y11pd1IwT|(3RWq?ZN* z4fEyQBx8MftcCxp5-Z=kaOmS#+6Uq7mnmXh{*>WSRcFKPP+1Z zK_I?*-cNx+3in-O&`ii(@&wuXT1-ei;_e*_d^Ctr&>M`>w=QuTiNjn+ORE^nvq5RN zZZ4E`4@!k~dErsK0V0HhkOE`utTV2r#5Jq*p!w)Gu*YsNlV@n$oodxE6Rtyj4HJ^k zHp)nC(ltgsx>bAILW|&N!2+Hv8@uco?z|u5;!LPivqaT4H?O<-_~8&4anDRZ+&6RX zZ#igw&pBNtvBkKi2Nvd|aKtu0iu4UL`kh^U$i>oyGrbZj>yapHKWsFB*3Gm~H$ zMZws>8Vn<+AllFXZj}Y4f9;EcIC<908BqdnGIP&*My!AV^VWlz3)XlZ&=zPm&h-x% zuU&)C5Gq)p!WhS(n{e3+6J;`UP;6deJPb`+hz1DIgYs#%R^9B=K(U3_+2{kybGbpf z729L4H6s;gd+fKC(#~Y|T3>E%Zss@vec0z60+~qhKr+5h;Xtb2abK%`T_C2U*& zajIA{cbE2Cq{ZRW4G8V4L+T}~H|%3|SVUo_A-K6Tm4_*a43#4&Z)7f7?$2E4Q)ci& zG8Yz!NlzIxBVnqrWb@eCdybx4$JSm&v9HAtj&|jCj81g^Ka9NxTvJ#7Kc2xJl8`_c zDjOUqTnM<85DcRTgoI)12uo0_f&o!n2}1>~;H0%xK@sxQ0k}J?V72;C+ERDFwNGiC zRaB_odf+bMHOtp7WXS&*%J`pZ4kHk8`@tOu}x0*-Pc0RF;+4 z!Bu4Om;8KX+335+7>gBn@ECJrH3l`G$!`Ac3eOHbQu~@Zbm+ttXzGMxrO%Xrdx^N@ zJf^b4`f{w2j1{-*#)97mYBk5Ws~dVR&q{LWjfZ4>XdvlBKJrX1jOB*2UaV7&*-M#= z6{h<1&E=?aD}*}9-MnYCk0~MK1*DeFn%e6c+~uD21#&58kjKb!){n(3A*M*7s~UBq zEvKn?Y4}JtY`DK+8eyo$?(&~*Boc80{;qX<;@^XmfZUw>DaT|4yw3N)!H^{NScJDD^Q&%_ zz-mz8<7lfh#_%70;C)iLA)s$Oz^5`Q(MR+^;MX*7!`5LnAC6qKe%x!3;cTv^>c<~= zM)}00&@knDqkTg1Z?lK)$V0?N)yBZSRdygcirk=vszALuaOjpEzd-)tFuufp{98U2 zF~nQ>BgZXrrz2E7Xo#~4N00+Zw@(PHT*!QUgJ-QMdiPyLMpoejIAJGQ#+DbxS~jaA zlB9aplGc)D!k)C)<8)F6j8>@LF-8=px*29sdu^k%XxhUx>9@7l7KCk|moErSE1aKW zv56RdURxnyR685~Br|z1f7tk>7#LV|-@_;gLy6f$@D?mAOFG|)2N5}KqcV5~UPyKx zk4#y}Q7eAQJ?BB>l`KQhSfZy;cj^m6b=4f7F!+Cotq)r1VJ$3U6egfve053KodeDl ziQaKL6~#LWTD+zBjoSZwq~|VT2(K6Pq)Bfac#d7El!24!zTm^xJPoIZ8ISjR!Qy(_06zfveEOmv#EhI>m%u$ z;WZld>91yp!xc}j9+1YCmw!Ka6azbnsr%5Cd703VM@Pbp!N@6Nr}nA{qKcy;+VGN0 zm1F3FIj~-O*lpS_Wmc8D@Lw1YHYJ|WuKywFgw{Jbc@G1VXw^d}CF1cBioa?Fz6*d6 zq(RhD`S8;)xxUne|7VISgbx$&)iB9KSb|>H;gW-{zS%U`^PCmHLYP_wz27YoI{(PU zwB(i|SXavwLFb>I-z5DlrDsnprd^!*jsk(@AR+1Cqj$BRuolbt>8b&P?v2A(L1^&| zZ+k!Uld#wI?wAJoXXHozf&6n9AE!yr4G#0>?Yp63&nPsB>0ZiJP3m{nlE zsm4@>d5D^Vs6XIA6g~>QOB;@f9%^YCweHzbAX(oJrZ(Zfl2z}cqD-?ydih%l0-ogh z`NYZ|;)*j^+1D!MdD5V&jd{{jRSmh)7cm&@d}3oB%GBjb|4QDOE4`n5H4ip(ked6+ zSqJ&l+?lT^n<+JoL3f_?eFbdhaM~t#Qud!xw^7N#mnYR?p)wtM4xJ_z+n zugQ~o%|Sm#ew3QYb|Hv#i#jr-3Yf3xLR@SV&ybcA@57D)SW9Ope9kA*Sqy`u3q<*% z9K8Ewj+EO>E&8xta+}2&=wLAQwj>gHK9D~}adqD$SV6ZYJ1bN%7#w=ZKa>aaJh78u zeZW$jBb~&m0WkWRzBFu`@Pzcl1y4oE-(G1@6kjiaMu7z}lbyx1(;F20T&Yh;U6A=~ z1&pJniRrx(0}-8v2C4Ufv0<%BwfI`i>ik)QS20Ps(#dL!0ezTu5dCOIo($iy0Uy}! z8W-U0=QIQT#RQ4`6I#+*Vv(lg|66TD9@;|aRas;zYY4=RY-x!CCiu0)_W0#H{BvQL z5q1eNq=0X)U@?^|zWjC)$c?wu^cyHJ{Y_2`!+5uwzbzC~IYxn5hqF8kB6OrQVu7ZW zuO-tA%U~v^BgTr`3=3xRL@;Q#NDMKZLzSc`I{%v0-D52=?46V7z_wiR%>fPQb*wK38=2R2VL@1Als z78dXwBd1e}nZZ&__`JH;W1j9PfD2#>@p5=7%KT&D?+E16hn?4@E=Z(P3KKn$ui1Cl zk>57D`v7r#x$sePmNbLd+v!{jBBO!nJvJ89J42dA^kRC$PvO%HAprz0Dg;E@enZr{ zaCZfudXP!_TT02$8IwV?rzmy?nVU?~aNE&tQO}IY-V9ekRTP~~a9DnO1w4w9QiBY0 z2y1~X1In!7d$45Smg+Y?SPZ5_X#_;ZmOe{Sh7_+3xH1jemm$?7Mh>{~m-omv^ic+X z4{U2YYI?$q$&iNV2&6@VnHZDFHzlTcw@8>;yt%sXKJEt~*MM=uxObc& zjiG&z#)vW0`wvO0VeL<@E#^O+cdy&m36SufPGRM4q42hI-LSb_ccHLj#ZaLkT*$;9 z-9jL5LZCvRKb67&2IDgko8x6p@uV+8{NHJqGJy*It*qQ0Dhxr_pnTwl2e+5GL+pWI zansCAUR_OoER}qyL7xumYw^cx4!(wvIq(z638p2C{MLhLw@ic?gKk4L6C(H*GKKxR zqs%&CgcfjEyG>>n=liz)f&m%Vob-lYFsx+QZ%|yu0BWowfU;R;KXHVLD~4hHg$ZVD zcHi%u$0`PbU2ctwGCd4Fq-+o46=OrtOptDyR3bOhh2Vz*vH9{!G?Lx{Jp`L^TAOe zf*%&p+32JyIvhTr7lbb7srm>AiB6YTG^T5l^n|wbc#=0O;jiDWghSoUlFFc~n68Mp zGX->=B{3iLJ4?W0Ju&wU7iLiB47rABY|Q z*26=w&$d2_GjG}qCv-9mmMh_K?Ef4Kx$V^( z_+9}-i*$ymOD=cf=yvlirzS&Yz?0J;<)RHUGC{dmEkWHq5EC3cUhLn+;aGce%_9HY zxE+KGgm75{Jxe+PXBW8Qu<=xTpu#W&ed;ZY{L`1vKsXAi+v~f&B`;f{Z+2E#*&7{m zyy~U{$9n%JKYw7vBW~64n~7w~dR?CLmsqxFiC*{Mu60#=)jg-!1D=Z}y?rsPcU!(= zTar=i3H|!z@BYFa)y9vv_b&al;b*Q(P4ALB4MB6cL$-HWc2#(c;c}9Mb@MJ+EpC`M z!fG+LXsDkz!g4X(5%1qKH-6C+vB-+!RR7e>Ys*SoebOGIe_dklxnCPjFR~NbMVN7N zvX4h|cg!=IRV3c_j}Y=U;H7=bpC4Fe%yejRSe*2tr0z*Wy;n-hx>?g7x=()L_Q~=) zwfDa<+F&ptSxk+isEo^hU|13PFgl=n3jf=%jq~B9pUprx-+f@c3oCyD8}a+_<%AKf zRqQmIG)V!BfSfRVO9md?WQ7(&kJg(YCm^^0CE*oE9nzk}LF`Um8>N8va|mHc-Q(c5 z{8HOJHh@ZIYZa&s8OO3=-bDdZ6yUFz_+*ZvC^|=Dh@1*R(kl)U2$4H*dFe+8J>XCo z($B~B5dS=Q+O@Ho8B(j>?1OxVY+TMGp86SzGF{?>(P(|SV(0VW2?Th~(OJ?E6@Z#w z43B?yVn}e&81TCpq}^4qtMBB)3*^U_DWqX7m{o@Z4JR+PT4}-1w1yHaJ3;rVn@h%Ac%;*tdg#k4h9- z{^0;l+zNoCG%&nK5lR*izTfl@&2pt!fiobnU`CrhCvM~u0g!Un*(@)I@Tks#U_z2l(T8;HHx;91l+D@J8BI4Es|{ozc-wqCQY>-9mBs0{4rF3jT2PUko&lnY86C#H!q zJaUfYDhtI9;#Nj%CEKF&1iQ2V#89;skRg zHC&$>9<~5$2*Qp~hAq6JAWoE@%+133)&M`rlV`qLEvZZcA%eSSd&ydzt=RZ+bV))$F(zr{#LtiG`z%-avT)NaDBVEOei z2?216g=BL%M=in&x~JLNLn6_20d+6%6J}YtX7Mgr8%hSWDHXlT{t`h$F6#u5Jtn1`y}6%!=}pPS48JySSS&_+FdrSL7vgyc2PuJtQ9Rtq`Z78ZVW z^GZ@J+S*D|&Du(m&Dx%?=xJ__$WML28h>S&z(M<(^IQlm)B|SKW8t}}=L2XKlu98m^ zl>%M_8Vu(cd}c1PZQY`IN;~Y$b5|zDG;PpZuSA_s?!z9)>{b7CqROw$jdg}z!L>U47Q3l6SKEw3F#EWq(EFg!Y4q!9iA8q!ebkN}=l4m+V9 zA|2tY77Khb&SUAW=&Ezziv5JaJgbF0MO_1exqBQE5_%W^C2qeveitzn!%R&))#d}G zcMoFuD<6@eXG%U=nVse!+!+LD_OrM7esvzt+_;|y#g2A3HqZ7@)28OG5`ylHSTv{! z?nbX?ZS(ghH7vAtlyP;-RTi`e(xTcdVVQ}m$`bl+nOa*LViX4puZbg!fU%ddPigvB zqZ5}CleIR%*gS;8k<{389f9r_U@zC=OwS0<2#u$P9O-|W2#pRGo)J2n(OdK$eZrID z#o=-!a_qvzIM)bmPT7b(ldwdZ!>mZD@Tikoqwp@$hUy&0)-}Z%iy22bZ*B;irdwX@?{km z;Nlw~a2c+cK}*1=$0dLYHB%0`_o*FFJGyZmVV6b8WwlTKF{%R73o@q`APpGt z4eHKC&)*=kE~HwvRkJh?{zIn@U7%h9I$qIayfpuD*JIf+PExXE(|ZKyAam01Lx2ep z)o)aO%xRu5ARp##uBSHx!CZa zLbs>SLqL9*f*;lp*FuB$bgMH~gUW~bTb)U-fX{znj%Io_t7oy^a0!HaI3TOk*mevm z4vP0?$ljZcnr}551jHvuHI#wrKsbABYyuu$U?jkRhQNg>E!i${ zb?HuhPg=KUyL8cp(MJ(5)cj{&1h(`WK(C1|qb|r^Qe7|J(qJBw^Ogr!o09^<#7-fPdGhmiml?tsxOA`41$sA|BO_KgedVU` zGi;g{o#9W1;l|wm2o&fF(AykCm@pb)IXFeA1d}&0U`4$!a94McXJdD!i(A_;*R^FB zMTT*V;jsha={C_z(8!=ESyD_$>@x}I_fSoL0nuI=gny_kaz~Kx7UMd@QQgNDin}X3 zV*DDd;jcu2k-P!ZB!i+uGY}C%cMN=HU`CTqvnzi{=Kkg0kOFSugRBB_;ELgQeF}Lc z*;ehEX`3z7sWZ2rMql*VH@`PSG*D3>#j7sH5Jm)dU?@&9tIAT%Z3A>EmI28)#ddRW zU&fFd*3)%rK(1^9^2azT3d+-lC0oz-2DyZ$S|8-DmBEj_vOZ|2X3bht3os?nkV-TJ zkw+2-Kwi+~s#$~5$=LfIiYW3t96>u|!K0s}!791RlibqXu^M6h`@Z)^*cN1e-C30y zjHlXp2#dg1;n?RZ2A;tnR0}`B- zx)|5vxNxDaLJ(u6FUA(|dGBNIyVVnZ^EVdf)Ey@-b?s7+8ae^ofSe;SI}d(xR|U&N z+CXL{SjNS6L73U0&IqNfAnA+V#v6dHTpNfvy`NbLrI+;IT^ro{@f|TxExxjqsqY#V ztk6YTaCEc8!~?~gcGL=%-kmz#%3e8NS$stdK*08Z+q`3U=WPq>bA=z5&Th(&qYX@{i64PG3+oAYk$KDqm?_nP~?Nk#zKTkTo6)t#6_O7|x%?0)X zbBydXM}*ppjpuD+KhvzJIrz+|@9MdDIx#3oIlm;r{I;;DsVSu;Rap=LSip-Edndno zuDWiZQsVZu`D`aAD#2t3v{tTK-fh?On+0#YzL>s#Rc| zwTDQd`L%kT!|>krQ39;h2tq=Lr3VNCs2@yGf`B7jJ){*mx<{=G+QPH@*(0T=mKtJlP^uAxD5L1B$qMR zca-f&e*>404?||To6mwEgN%~Kg0jFW-RB0~o|QVg0s>Aj%-1j3rF;8&6Gt$^(_$b# zz@;Lkqg4Z5Dbp~i+W5Pu?V`-Eejh`xnQ%*8OjkLVA=YU*x45tu9Kzu zpkwTL5jc`3?wmd z*#8=xlD@M1*2ldu#Rex4lfM=>Lb5rW^ok*a^yO-N8E_HEdDN73gF{8m{3txsCm!q4 z99ULUt|kOq+uuo)ret8k1%zllLWVWx|2%3__}GTqox-A3#p>l|YY&*5-t z0?uW@PE-@{HTmy@fG?A8%E+u)sf$Dl#06xrwiE!l$Sk;NDUsh?ntXGd=|1?J>He7v ziz8C7A@E#)VA3!zz=n40O&bgO@yHmk5eW{$;?ee!(JW8d)7g1sWO5VUVVF>AL8VLw zQI*;$p=uuIG=m6YmpDN>qV&W-G!`z!zp3qF>9M)PCw84JaXk0$wV#!(s zR?LVjH};!`sdB`!56IY`QUd{%Ad?R-b8=U_*yNTqDR`I_^Z)`N!r#D?`ud=<`k?Zm zSecRLn(S3L$KL4RVMARpk{%^R{1ZG8%){M2g#>znI`J%iOiM&l$bW7FqS7#S^AQ){E9|EUU1i1 z4I(2&WeA7a4QttDvwm(&Mp4G6`oFE2AJ{eX9lK^unYtDkPP&#HQ1k(1Po|Ro-Zi#Q zrJHTZn&h3cb|xz;lq-?vPfdNAoQrt7Rz}jd?9Q{dA4AvCH1#7*b&5{D`HiVtuh*Y* zPwyu;eHZWU4=X+`V3S)DnNG7AkHgF*CoS%ZwcCDTE-ae8hIEv<_#Wk$&Sa!k{DD_A zM~wLZF8wj)XIJ@*yXmfEyf6N8rtuMI8sKtzar_?nSWX*0@VQm>9@h{P&)&fP^w6pe zc2vRkkx2mY!y*=in&>~oZbF;*Wgj1>}M)o zNd>^-X6@+&(oIZ7f=)(QBv!>Gn|JJ3A_VS9?nPT83Vp9*e>OOw4xqyi6RIDQY26F^Y>D^Q_o!L zhYDBeo1?`BXnGDV3mWec7QL!VK&>I5P4$cfrZ{cjQpj-|%byg~y~)TMz{qb?MvgB7 zArL%(GW27N`8ju0<9Q0P%^`++aBe@CdSLa3dyL?OU@(Fox+xKPM?1s9*BmB3GMsUn z8{DPT>Hp57lUI1QJc4K|b^}cWh2XZId{aZ#9Y2#a=cb!IR6Yo=!tY%W-d-aU_`Cv= zVNKfMCjDn8BPulL@+A>Ks+amf!7Usi^rbNI-k&ER?=t$lxQkT;~N6dxv^0%83(h8_* z`H(Fn<`VuHSBqL=6eM8E3?~yqyo@c3Npr-7jCsLefg&g0L$Em~-$}4}Q@$-HPBXT90WD-d=IMG9kPCb!dRG+gCqq zUq2WGbX$G-#Ml5OvaoOj2pc?|77Hvvg5%}Bn3_;z=}2Il;W%U}zKs)5{aWlB$dv0H z+{`k{e_l%pLJ30Md%1j82QJd1GOIz4s%Kf9dDm)ClqHN81PV{uo*in#WyEIOE)p+5 z%n=efQ()mp<)B$MN1UDrg)UHm$P(a=B$TMJF)**9B^&y&*}{SPR0Qp#32`n)olBfP z_HCUy%^@TEaQPC4qHvLnej(Xv#etg|lG0$*6Y^2n zcoCxx)93#+Ns6-nIY+AWK~6Owgn`V8zt0&26Sa#;y#iLt8)^$Z$6PGMmkiXrCcXtu z#B{DF-q3u;T!bOZtI}0jtoXZjcF!O57ovxYRzoD2G^5x`smRcQ6qA=gCvIhHZ1vxz zB|tJl1sd7KmHHqNG2+(+DT|gJ15T8~=?>aQR7;mHAHw zIAf)84=;9}W{HCsYks{DvsmbU3axkPU3gO9sn1Q=w?-LVP`437+<~Mz&T{=pWS6S+)u+B5sCwfOck;+ZBExA5oMX1KR(lSOB?2?* z7h5*WzrPB2JPK^uT$(*5;NkQQe@BaMh?PDaUw1z&F=*Ftpn@)pl;X?>XYfx@@F>7o zZYMuo zBu~hxKQjElG%k~?b2gl|maklPwn}HWtJ>HUU6N|PxPd*6NNGtcF*q2#CnQyU8f)`; z#Nza4B}Wsxx^ljlY4e3)Uh+QMrEA`FI4oM|;$Uor`1-9s0AgzEPtsO(%Jsby0QEQ>(_eR~0vRGh;!Ka4c zPX@v;>Rsa;OjsR4tOyvxS-1u^(T>$W{gMbp4)l)xs)4?$8!}EPXg4~w5>FS$Sc!Zg zMkjqqoaHlhizQdH*Mlou6Gc-qiDsC2%cv^olSGH<`fF+j9|v0X2K&}0I9wRpo*4SyEBffR+_QVJD( zeffd?-|nuP1ME3Hv?Ksi46JaBG<;3!U_QW8BpU$`8@t&Xb*nU=%4kagwB1BP$2Wy& zE&;p*Z~Z12uvD}TAhO2KKK~R>=TBu=E>%%kU*-kMuR5d60M=1p!(95&3kFhO26Zd= zpKo*^7OnCwI4lK(Av(+J0rAgIuLO^|T*aw?zmX2kr?Q|qy1(qjYwZWDr1?p{G#mQO^U3*ZX9kUk;heLM$@HwI!b|LzrdOsN-jXyk#> z0U%oa!mFYHm(WMTi@Gfe0L$Bv7&@Q{399sZET&Y$aC|MTAI1ep#1B~aDlHx@Km@_~ z+4QR}pNQ8mOT2+vr;uB$sIQw}#G2Q?D2d~ASnqtX`0Yo}4W9>hG*f!q?D4E${k>f^ zCpph`J)BAQB{7~|Mb%v`^Jebbdh>#@;qzcC2T$X!Amg^}w#KRE&-Hl7ri3%q2q)&| z8^134&)#{#uvEYL`^4B+aJ6wu6X#FOpSL$S2xd3UdtTFU&sg{5P{e@ehaF}glx%AL zs-*r&(SIB+IS^FJwkFQ)4cA1^_b+%hy!pxV%|W({-+oc@@smT_zWQ>}-QCT>i)?C6 zTN{71(DyVi=_u{l-X^gA0vc56y^iXx<`*R&owi(T)*4;1?WW~oi`HDDVY%k%qx_}# z-Nx8(TmbltvGDS~m&ScBkK8rxz9)D#t?r(&DX5VjJ95X}j;6cMTP#mCKgwwyTM{99 zUXy4`u`z!k5s||rr;in+^+p?!z}OPOt!t((;n!~AYMmv| zIFPqVurB(cSN*)E2VO$`qJg$P!9;L(ie9wJXL}ol1-jb_s*DGj2w8Xu5%-4N@T9CrcLhRpAz?S7H-sp-oz=g-6OpkWHna3t^% z^rPo3^nC3%@Dx}$%P(2_{{`O9*7Mv^G0w2OZ4zxcq13}@Rev)JwJl5OoPOBTG_@>z zJ{k4l0rGcQm{;E^k93^0%Y(MDA1P#3;Igm*YyixJz)u!^c!d1r1yg>2=KuIzwQ-~Q zu-7G+93URF0sTlhv)oaFlt`F{3GXh(^G7Y7!jeV&jH%~Eie<-+#&#hK6=6QtO^{C^ zb^7OgQ*Hcik^p?`=Ce5(@Thh%zo|F>XumESQ+~TyX2Hr?M(4+yb2%g(9*Jtog0Vy* zUrJ7Wj_t##!AyXW6eD{2!m|p{UP;mEN$w;*amR30;6Z?^YoqBLHg?jEf$|j?1xFG~ zHDvmV2liYf7wi@Ttw}VjWM~;cF1{F~n`MQdzv4g41+X1L@7?^|p36B4P$!A-ef>b% zZSnxvD~-&`5OWi_N!Fx&6h1qv0ly%~xMQPddX9z86v;~_A+3x@=DEQc1~sZmq@9rlGEisMU^`~UHCeh!Jm zH{IwQ<_WO_A|KJ>iaD2ilp=VvhFBl9;4tOas6Y4yO#d1s(SjOe9!UCTHuKk-xkJ)5 zzIAJ7O>&dDJ<1SDX71ni2Pb$TheOhPQ7q{tth4JskT^Ze{x1ycbnYIWSIUJ}?Scl` zcF((&HXMjtH(8Mjrr@`3t3#-RLq)y-25c6*&%Sbd45Bp<4bU-quZcO_e|dC>qI(xz zk8*|Gc)DvsMByGn6zD7uG?v$k|MjB7NuSjFIjqR*p-XKxf|j$m7+5*Pmm>&XlA?ll z6d)56#jbOk5efh{qzT&=TC-hQ5#{smcm#Ni21p0+w@GPNdlAM0nly^AJaUZXFr~1`}I@DP{8pH@)Kf3J<}kv z*!jENd)%5B#2^ijVodi&>BxI{?Zu0~#Ze(%h{PXtJwpMPz8YYgv2*0~Dk48rJ-oo3 zJ~;1yDU=(LG#NZwPQ)TD;ts_AEdW#H^VWCv31#5d-av7IGg9pDyQZ<%5}^`a&xv7y zj3inqf50DHQ*LKiwJuxKc@nyc{NHX9&JXjy+<$@|sNR-mC=OAbW__5r-gkRQwB#IP zoyW8!DjS#9Sq|EfX4uz{q&q+@ELL1rs;{o7nmCNVVzzXSm3^1dQK57uX~jaMUf$}lg#-G<|H<}w+~qZ^G~_Xc8pLG6%-BqRQObh~6M>OiU#=V1n^Zvae?dK~qOMkCOF@G<0@mB6{L|4&| zBCJ@v8ICvNr(uKv!ha7u*eBMU?Gd3m&9=<$`Q92;f_XFG>(f84;8bch(JX0(DzthbgM#snda*ZDYNET4ydSR_smD9}^MRQ6$ z^b83Dl@SP!UU1F2#KQulM%aynsgrFPL1U4yJ+`VYFmB*Pu>~=8V#GU#wIDn@@X7j1 zc19hE@zr^J#H2Xt-=Ehyy=zxcUE<|@PQ@1uX*tKpGVbAVWTH^zab{<8AH2$&1P62u1Nsa0&t*BC zS9n1*bQwlF(jV9^m`&FR@Ei+KfI9`((!RpHMM0A2Wg2i2cv2Ys@r?;clLMj&BQT#e z0uwSLQ1!m`o0<^xG9cAjV-Y_?$tDe*aVJEuHMUF{zGE6}7*ye8R8K$(SWVck zAw7xVP~&W*Ana&3Ea|gk%eo z06|j9l(Nh7NM@EL901{n=@^b0&>cCm;pCf9-Gtgi!r;tVK~2m)GNCB{E(+)p&~_k7 zsx=Xf-Y#{EL~cSlIxFX6tW)SRi*bcd6FxsV6@R?RTHRGNq!X1WEiOJvUo=&qxc>Fj zr+<=4bdmbe#1+j2a!y!^nvk3sq4~Fvyw_E3m8TNu8Xr#+maev(#N~nNyKr>1*1g5t z6-Y0Dj3Oi=k6N2BJmXDlhs82%Co&3|IkswZnv9@xm;kH=B(RX3FQ*AKkj%0ptKN8o z{g9?da=GLY6j8p{D~$D-8TRXE+d(Ai5#S&Ybi$;J$qSq6afSTBFssVX>~62_YMIf8 z#Ziis&L22#nF#~*^RU1=D?x|1MpzfffPP#4IHFxGcH>j{Cu!rIV&^8A@oHP@^I?@sJKTQ%T7Kk8&) z#5Mu}h!Qe|Ss(qmw5R*Vf}gsavR*k)h`yto&xq}m6JhalgB~Q{>0Ny;Gj}{W4coat z?8v**pqRA-fBio@_}1tK`RE;T(~$>zY=K;mH5D{h-&{q~l(Z6OoAQ%_)%9Y5(|NeM zD#sn^$BTf;GR9^F5=C6lHwk;kXXtk2`>oykwgt<*%<#523Vboc40CUXjc#K)L1SWm zkbkeNX_EWKAaoRKp|0aE0J~x@*tD{Zj=Kf zsmry?(Jb=d_AO+gLODNU`$|WlyW*~4?erUrV?A@N^uH3k9LZKYX}NA%=0qF*2z-uY zszq#qb2@=&HW>85OQuImS>qj&*oAPXu-cVr&_jejUOIK^lpcv)d}TM|yqO!Wa#@?J z91{-d%%*w?e-ZGF0&~mIs9?@ziBbqnf-o=w0Aqd?_$)H4sYPP)FRUUKedBIU{B5R; zG+rdrHp$e|N-=M}_nEI;<=o$X`+@r8?3gbFp*%)ZBne%V;3+Jsz1e@2(n~N=@`Q1& zyLiXjrMJhW_aSMWt+S8pqLa^`%teoE9KI74zQ6AK_Xax}zV|GB$HMU^84Stg`U!xn znVnvHdzbJ>wlnv-?))Ih+6LWt8?(}N$sFSU_glHS|LcjG(=`1UBhG1RNU5`Pi3{$i z3rxxztZyEZ;1b7F=o03%bVeAhkTfcPuW`-b0m@?IS}Wl~Yi`BdEKYW5-96v|E;${C z6-}c01y;0T;{cVi8093z&ZxKR*wOT?e7~jN4!e%^_rxx7Az!bl_uYAK@s^cVC_R5_ zMBXUiV%}(r<)(7mj+Un9M+2T!)ir-@Cy_@e^C$In#v`ZproC6E>xo^0tdE!#gKe18 zuG;ryZJH(Tl{1$ls;%$7`w^rPuWN3RX2hF)jJc4N2!Pl3Uz3y|p#^S*cMl0g87Hfa zmq==ur@=BO5ethg_5IA_Ie*Gipc{QZoBrH#%2P(7`kee>Bu`~R)v}E20uO?XYfiP! z$a$xFrRBnzA`&J=Y={J5VWEu7(5Xx>f^$8m7D zWFt`*n7#2&Y_DtOy&8Wt7x?P6s`KJi+kZ+1Ij zW)dWj$je6LS9{uin6d5Md#~fl(9aymK<=eUj>sWvIQhdk_v+8zJF)h*#YO9Z zYp*aCH-5t(*Q{x4`tN_|Ji0U=v}LR=Vt>o~7?C0H69 z`}mRv_dh?lysZeys^=h1h8NCCMV$wQ?29szpX^%x-h^Yreb3pD95bC}q)e1y3+A5E z&yvTNAlPKlAO~mm=buPb>H=Sft-9x6C2${-Pt}TtSpcELNo>i>-}`PDu?vtP6rYGf z7M^SBTg+Gg#vj)##ig&;)|+j}?uWHh^0qgQ&l2?Yz6Uz701(`^$g1X~4W_?<7ttGV zryPVc?rrl9Afk3+z4X~F&-B?X55sQR(`UC-uX_Dx>CXXVi3Y#%%Xdt|A}d|Jm=6{` zgo-JT-9wF|spHmD_s#M|SOcg;Sm64I(d%qXVxDK8a0$0W`8XdU9r9S`FQYr&kZ?Ja z$bxV6Jp>7qMxGEm2)Io}6(>GkFT7@>;B*!tFHj~;14KDIo(xSEsrdZAV5);#Q@756 zC~mSbWxjf3OZVjbwYiNWV0A$?((9fGNg`ef*oIA+7?7i&a|$jiqU0owAF+!xj|7!o zdxhK?_K-Jfc)IC_5_(s2O<#V8>kMCkmwf$jxKNDYmAiTChu7o^UEY#^=C83QKxene zGF^W!*Nff)A$_W&@2P;pXL@XTCOLV(YpI*i^{hRh46YVl-I8cv6eM1*{$9FfXARB+ zh<2HdY=bo6TzRS^@xzk*dW2!7y2n(hV^(d9Sy6cT_NQVmYQM4(>SvL5OyO$&^bDr? zfP5@Vkhfigg2~#l>T#(>gNV_Ej zK+(XBFnjk)Osk1CJ>3aq#vl3WGBM4WP~_n!J?_q#_|~Zjp%D{G?KA9$q^) zV(Uok;bhe8PrdKq(sXVn@B}) zpUzFA?ua6Dq)52#42Q!%9)ZK8hTymp@pZR>uf_g!e^$Q6H|kIOwTlSc;A%U*I>k?1r;Krbg)MO;oooOL4E z1G86sk_WgBiZADs+avt=u%2YB2DZ7DM_76Z82Z=7c(hCU3x^b`wf={B=9u=R0e)dXBHZ0LEmuP@2^5t8d z=`>g&B*$!GnQje!TvkxNXMOcs%Fbarb21LJHy!<71e^y=`$ZmDCA2WD`JDw9VuqM>9r@E<*zzvN zh6q4}DRs}Q)lG^nrn3(;zIXWbDDR}aw3Zjf_lQAyqi)hKiLiB*rH~;a6hF@it-f)V zKoUvv(egBV@BmE|tOPestR~S|&Mn+E#27$;QGBLixyxI^@~H>k5{8uT<{3(bLc@Y` zU1YF#g|5HQz{6}R^g@7FG1kttl4P=We7lrZXLxLmxb-ezOOB=W!u4JjhpnLf9yG@@ zgjINZ>x%6O#lKjsi(Knjp$pU%`$gNEp}^%HC{Pz^9Z;cL(i(w+rGKGBV2;f2E>Orq zx>#d{rL%k%TH^T&co5I$`;d0fGF`Ef>~PuNi^im#M`LLV)hgP;gO^YqI`=B49eN7< z>t=XYC=l_(TT!+c6b?}xJ>iOaA1j1o!AW2F-;CtUYeq6|-q6>K{= zG?>s-vj`aY zoj$)CwUX@Kw{5b;7n!E*>$*S4=^l!lGAPOeq*IrXhyuu^;3Y0W^guPkgKbSz^Cb+| zcx2DZ9ie}t!a1HS6@G5kM^4>Xa@t3aA8=WET*i6F1N1o2s^zhgQepP;B`z%)eyoa8 zpI6dO$X-P;{RKIEeBpXPxcj8E1FOQ|T=xMEqsR}e3Tb(ut6v`SogBH*Uvt9onPqH>(!47YeyfC&L-RJKw50jqqq?8|-D{e=M1_AQ{?mRjY zN%k1I%8q@hI!Z-EIdI~NsB@xZY&Y8)okp@%+<6Cy+_5piNRrkzOxl03Z*nq~_BP3o zDT!8yqzjAGG|5E}Lvq&=ti&cIJ_B`Y!1PpXO{@^e$qj(U1odIkU$D8s;68Oc&N7%a zVKUbh8IpB{WI42c>PVuv2_gzI28}DG&mi)Bh}D^!PtVx!hjr2p)kuvgnP{aDW6N^CJf(|{0ZLt!v%B)3=E&yM3Ag! zuD}i@PXv)0??ao>T_ZhQFk-A_N?`!Gfz%JCH&EKKWMl<4n}|<;EE%w{k&B~}q=)iE z%CNK>E_A!gxIqLy-e?Lg8XsRf<3YN7zmfSbF}gvKr-#F z7Y4@XBQ1|iAODVrigD!2XK~ux_#lrcJ_jt2>++frxb%7kl0RSqGHjP~{a5^Pq%RHP zcC#oUl zu#4N1UEIO0?BZU|#o}(`j3E!CIUm6)#e z2NHI1_mah3k!bG7UQV#`oR^Hs%Q+AH(Y^^U*~>=`5BwoN6%+aC6(8z989luoQXyBF zmM#!Mol{hWn0*g()pQN$_ns(DKB`VxL^2No8bxlA~$WJ#E-wbOJlXG=Awo)K6h|aoC2FcOn3B=5) z>DIl@QshoH$xogd8Z9J|<}(*8oF5OoDHDC9{JkBPigvO1Ow0?$$wxj76Um32NRy$P zas{w-Qvpc=n~f*o|G=?2Y9aXLLk5#S=XA4=|9uLnmxNPUVCojgN}rF@nP>*crEc=M z!E}`2+92zmD2H)WIlSd@gKB#3zS8v4g(joN4p&FtVBg<(hLD}}HXI$|`5SN11EKJh zVBm75^B#DtIza_KDGX*2(4HS=2zZe65Q&$xy5C0j0ulpHNE`>i2yhKMG%AfFWY>dY zP9qP^U*D&$gbeU1-}mn(-p zFw51Xgf8M}tf5aHbmTPN16g(Bhkg(ET0-oXC#M{fQ&Jn86q=s_xjw!VX<8oay|EEz z7fib`A@S!uK9VtxLB_+R1eQ%1<#22p<(SGotfmM-tUHiS%wT8W=~M|Sq;oQzMW|B} zRP&YC>DbcKCU{#IDxvgo&+o?xneS7d&avuK(gd=sAMpp6QT3^NBDuWE84!ep_7`99 zFnI%0HV!&e#W;|J4dX!)4g`TDWJy61c8(?wzv9#(;mEtqajI!oF zPW_nQ$Ehj%uSkUQXLWCi4>9YE>;NWnC6 zAHEE+!Vb&y5olO=ja*{(PNt?5xjCXctzWdCAN{B|*|f|MTX@Bo+#Y29XY#e63on!1 zgD?ERdl0rrdZ3rsOUoLp`hbPXozdRoyG?)i zD4E_x6ihYLI-)O=#=Scg*%Oh)^@pU_2}6fQs_az9l7SeU#lV2`Ah>Ua49Z$RKlG@| zNf??Ja=|CGuR$T$fn4OIN+WwMjUtB(2A5lzs~>5`gCEHKqf&^D@F(wY8k8uT#zaiu`cL)K>*pR%;Vc2`1% zAWrvMK>Zrl#pgitX&*(>*)3pIIi!Ci@-WbqR%d`6?X~z+hDAWPaWX9jj9`KFmqUWr z$3ckk;iAX)Gfxcn$H)3QCp`p`p-5dZF(@>RuAL-1)t#gb+X2KrrDRu!Pe}JnOPxb&Qxv;?&@_p7@Cb_{#M6&E!ynVnk0Xf2xig6QU5pX%ix5sqB{YojqdDJpT%> z-jcj?aP^kVG}Y8C4-A7Bgwf8?=KIXfg~#{YBJiy5a>I^N=`VOu6fJs{BTcv|z-p%g}gxz{ao3K@OfUapXYUzmquTI z_}{-d-C=*5x+QsF9zEQdOW7JnAP5)(#>L^z->(7_ILHzRSf$;hu36|M{fx*d{2zYP zX1dI<=bF>Wr-s2{Tasl2)}mxr}LV|9=7TodLU2W#KZ$gKD!h#(M#esyxhR#x%b!vJD8pjZ9Aw94wM z?-GxyE|?0S5iCDyVPpmZ-rG{qLzAr|AEPO|Fwo?*8LtQSFTMZ&sT3P8?CR?|mKE)} zsneQ;gNqN+nWOt3%>`+wJ$d>f6b?;13$yr3fAN-T?#3|v5|E2)7?%)ow&5nu9M|TK z98ZS?g}&FpPRH%i1xv&AOV-C>X;dw>I2}OShyBbhv6CSsHRrZ!ffb!9n033gnPb>T z{?b2rtSV(Ix_ZB_q63fEifktIRbzDVke8v z)NYr4IRS%1&w3^}5#q7q$XMD);z91=x%z#;v=ZX+wX?#d55`COz| zem~mpUnD!>Wc61X?*YU;p*A4$JMjG(qL0g z+PnEAAOCJ`=~rQtdWNRKIzb~UUfEiR@(>UHCzHfuR|hxkD~-Sr>HtC@pbl6K+Smef zE|vFk$#x6KZ0@55ZzU=mUKddP_9E2Vd}vQd1`+?PbcjFkyJ$^5Cc{_WAF{Sb&YNzg z08*_M`Jg26ebss$Ms+7gV63TdoWWcjtriaESabHtp#c+5)s{GoqX-KV)9*qd~G{U7tv8n9fC|q-RiT=Y`YVV3Ct~6>LhF z@}^y5QMffn(~hlAL3I16%_d%5K=#f}!UW-c8xDt#H(ZZ2Vg{xvI+*`vJs3BLS1{1e zDZ2L@*ExO>sWcs(e%BgW-I{yl3#d_*=y5||&ik=ie>_DSm4qO&cg@?1$Y8quHK1Ob8w)PEDPM3^r9oNsm>L+2L; z1KCc~GuouGkJt_aNr;sx;85@xOXFVh54=q!#GYq;XV4nLmd^i#b$wXQ4fP7rChhz* z9C_!x5#{JS`{`#c)dJ$D3^=ddg-!KEJVS0hSqa9BMN+xI4; zAGB54Bvs&0THeAWIuNv5*pIj}NoNVRc|aJ7G}2UZwhXI?DzgmxztJGm+9dSy&v@v7 zf5tnRy5AKC^WDOvFO$P}DpRI~`-Gr_L3&DW!S81?S8rJe$-$i*mWJXmK#Ic#ayg0| z(#V0fDtg=Xh4XarkI#aDVCbg2MVB?o(9dH3{smQo9D-eO=y4>Mq+4CP!yk<1gt`8&LO){*#fTHZIf_e5{W1DfIzBpmStG&_ zX}#HbF*YXbQ26KZhbq+v9ho#v_OFubJ~r z@BTIeT-qW5)DYVMkHs$5h)Meb6hb|8GB%f{JJ7Dw??{HTm^KnJ)tB0uU)5OI$wN%T z2H6Y5fgYU685yU#8|sf|(>I9l#$cYglf!Is*gy_2JdwQd_*}rB0yXgf`xwCp^v^{& zkm$o--GdkO=wr2G=)dm+I|7^aA7EMZKr6%9CUR*y(BC+B)b(*blCY0w!)|{6)dc27 zZhFQJ+ULY1K@UBNbkL}kfgL5X+HLB7cc6D*X0>LKmq<6OoDYAiO!7qLC}6J~aT+WS z;^;^U@~wkO3UX0_xL#Q#bbkuyi_irrI02|(30du)BB~AE!^6-YeS8wN z>8#s~tSQ6)KKeR`>`o1i<-!NYJrrJ}#O^e7*}lF!HVZeJ)%av|;}^P1xhMx3xGC>G z2!c-tJ+MWE_{+(#Px|}V!)z=J#SR+eP%}RiK@iS3U^#hs8GD~bpIF%gkqQo1fLB-k8$6^ze zaZ-U~Lad$^zKVe{(TXGBM*hjpAtvSH*=1u=hN@^4$X*WNZ~GGZm@Nl!cgS`uij!|! zQrknH$Ao$?x@!wt{Z|@ZRLZ(JunfQ(^9g_NWOl0C7Ss9qJO%V4wspTSbZYC_5wNA> zLr&zLqwmVt%kvp$$tA{P5}Sh^EQ`MDnu>RKl6Tu*y_@yCuZ{syINl(}{fZbI+Lr$= zU<4_kaz6@a+TT}s%3yTJ^k<#v%`Q_*w!U$%?-}%dk*QbMQ$fs%wx-aZz9GOKHDmf( zfmLkE-rIL~AemS{&)G0PbX_WF3%JxD7T8DIkzMj{4q7(@`XJ9w89d^^+!RYjJBOV_ z(E9w?hY!Co!fhLa_VCz&{DDX7$V%HZKQt~4bzDlN%a|q+?rVm%5!t#;UkBFI^>H8u zeD~D?}XX7Kwz$u-47T0VLBzzhDu%okq*6sh@10PS3h@Y}4p#7t$|?LocL1 zb_~^}J2|6+-J8QFC08sO0byzD5=8pGmjWZ-dsu|QM8l(t5X|!9*>FMii#<2Y|Fyj2 zHht$ZJPd!8TjWj?Rdva^x;DkMl)>OfO+HlydWLtqr-Y8R#Jg+RH?VWL>5XtDs0oep zemV@Q)$+*|7HW&Puh&2v3o#j!vXtog+?i$0Vec11&C6ZGcI&GF{Z)hsy!|)Gnu?$!O;%d+~N8@zpC=@kUQg4lEL|Ksb; z1FEXl|NkRLK+B9l$*~Y*bYME?kf_LbP)cPU1Qia03JK^D%%Mb0%Les|ibD>GQ(38T zHM8Lwq>Z;s%ks= z*7Wq<&U-%Qi-mt!Qz+kcA@4ww2SqHlIlcMvsgSI8uM~x6^=n8Umi6mq-=wU#&7SdD zv$vc|%R0QJIU}p@)+-ctKN!I9>>q@gKchG3a4!b4m%qtO5S@u_q4`=<-fadACrg?CdbmL@Y^P0@%`KX$& z<|clesay7B7;#lPbjv?2ujVpKujXp^Ro(Gy=Mkq8v&ODzT9Y|=f=m_WGP63}s#+Fv z*~qax`&Oyn?x43y6ZL01tGN-AO-?wbn72y*uV*p3-Cnb-JPX2I3fXw82CgZ6^YBjX zg1izNNcAiVGqjY-7hy?h2s&9wZvCCzSax*A64li0HAmFjzTO$cMjQs^V@#DK6!Q6$ zxq_k*vX-%#`3YP1*-!r>^O_@8=eWzb04~}1 zd1U;Svl*jCG~CKeDm>+HoEWp<&)`?aA6%m?&qu?67HAnt2F$ooyB6i|8|8h|v62vf z21G-`I8*)Euw*Jy9?BY>M?~A|+NoW5C2M7eov=1)&M2$>flZXMh&ePY(0cKMCXc$* zi^ENIsVTdi-Ia!jXTk-&r>?InoAcbEQE^Adn*cjVOxIK(G@Gndl=RtfVr6o=1lncC%jsD!)5|935$W0Sh|cF0^3~@Sp8R7n z0aGp+W7lkIR5NwLNm@aLS2>x;*$D3gB04DDo+yXm-~(J)J^5wRndkbQTgWG!TX^L9 z__O=wxnxAm664F#Re=jv+g1g&PsD=GchqG{{8U0XO5C7aBxH$ zM~J_9jnn6vp2sap#Uq$c8aTU8geN4#la=WW8ik}*Hmp#d2YXP*iqcz_K5L-ZMf^>gk=1~Ov2s>#)!&X4@-+w6Wa{4~O|K}=>aATs z5b0SCgmy+YR7x@3}0r!Zjv+0ZesdAynV+OnB_JTVv z(E59ur%%lKq}cHt>$Y(^Y|hq49o>85jhPu0HFw@p{|2|{ouB7B>uHTi(A4!eCY&m5 zJGE4}lx6*)wd_5PM&;AEFQek@93DG3+R;kfnbM7|txQ#q>CM|tmHzpr<860N-r>qw zZ5Qt3S}A=ZW>hwZnWaS4;CkplCjly9Zd-}1MeNQP`mXt7Xujz$FX}VdUPghujYXE4 z)tITCt6a7!a9pKOPH3Hz8eta~@AmpA|8!7ypEUWuqzhiIAR9ke1HR zW%V;POP%IKTu?5Qk%e*X{Ts}G-zhg4;F9s$a(`3V(ayb`_f~}B{q2;4$&SCcwU-L*_4$x2E&2+s)L4GllE*uz&84a=u!w3Kqe2Y4eeqo z`Jl@*Q?*XJFut>7V8*6r<>(`epf|2e2ytm`)|;1G&a_`#S^IPQrDd6Y{Pm_b2HsC~ zzaam2CUyN!dl^(qs^=@FX*4tH>$8of-^((6@>ORh>YDTmC~SUB@>6{o4#LvW zpTmipv_A2kF}j?!adTGcQK3_gwtww7I)B7*w6R<|SamvAGrGofN{JhV-J8OBdpxZh~2_`;HBLmg3dP8y@}xUBA@EM_pfO zc(&cS=lX4rHTKMBzf}M^u;Xqict6(|w)H|mCc;H)Xig%5-oppF)m~pc*)I(F(KU?l zvjqvKa>_;Qlx-*~u6dKw{e}a}kFB&maGt%5t?zzAN|)^VQcmTnyCLN%*9Xp8+RnW* zk9n;;>vi5aB#ia3KNgcgbw#!IvYHYXO7H3uh0Dkz;?v3YpRy3YH?ct)^eDaCrO0X< zlna2;qq<}Nw_h+qG#0#H=F~pMS!fgD8$QrGrOUx4YJpz)cUF(M=3`Xq3Jv$qHBkw6 zP*~$fg91!N{ha~tQ3kZod%a%uk1=EzWcZTHR#Y;*OsCA3HYnA%9ixpS-&2L|{4nV8 z6d1?wss*WNix+=$nUzIN*0w^tUe=?xve+RbTPTTZphwdyifl+8*$t1%zAu%*c2`U$Tp zo&)`>4|tMKbKIlOpK^SvYTZqHoX>hGxnXnGlT(E5AhGr;q6^dj{lc!+3;*MG*M*a< z7YyIavyLaaOm#F>6L8lP*47K#K6EUz3hi(5to?NE_Aeb5Hr{;!1^N3z57nMNNnHnO zgCWa1X?@p!7w8wvVRv0%@ooR|><^C_4?3P*q8Ms&nb~sJedd(Mq=6-7xOCf9jt1X# z-?d2XK4vibt_xqk=D4t;uj6P>++DYv`N47F>%_Y*Bpz^FxHkN*3kwc8E_8kLt_uf0 zb6hZwzUxBfQO5Pmv|*v-X8d*k&DU$( zBHT7R=JMehY5A~s4St*zvjbP{Dbf0@sIuPht4TaOMWf3WBw&0Nm-_Y1w3Tb}e4yMl zj0^H&?e65V>dD&ET40*0Hm$Mfs*a8~$SPVs-TeHd|K_>Gi_ORmUFD#KKTXwTLH7(x zOfgN2;b>v~vgZcr(GhIkLG>lqU25$`eJlm_t#65O)mSp}zcf0+p+ zr$iYYP(to_K}^P$sflWsH?WgruF>8VxXSsEmS@CQzNr08R$Y-YC)}D*eL8npolNy% zJ+5t8-F2NLmeth+M!r$dq!>;&ha0+e9=G1nSkn5;?b_+Bcai7#cRgl4J4tn6T)R7` z7Hw1t9EyccqPE59Joh!Wodu&O3=Sa7=scx)nRcR+j+r}0d-qSDlSqINnjGkA_o2zj zNJ^bW)&2@Yb>=oEV;luG7i;SX`w|AptJ#hb*z#dEe%ziW$K_TJ$R0&}tjQCz@yU{% z_0Me2WZ%qSufjwxqrFZm8y@-Fk(lJ@N1B(1ME)i+HG9**CuQ~sO(;rb7bjfq#c|Vuy-yFR z{lfE?ArBq4Z^Wx!uy8cazZ`St5fOi64+huSO?1G{Pu+J*VH>H#Mpu_j^L0gBY!JnNi2e`fbyAbsJAY>~xtv{m7f z@x+`hx`hmr)5aki=a{2{bRQMwlqcq3c6nkB>_O&t)u3~MlVyN?lJT0$->~3q%wP_D zjK*YKHpyjY%BDRNR+Z;Wh(I4|^`R_RWQ$R*;gXr?sLKO;jENt86to7T!-eF;17))FuX1)EfAT2K5v$EBTNe8`OUNL73 zo5)YV8MYu8YT{DnLpgE;CC|!zYpXV>{y9GLWkWDpeZ z=4*7v-=1Gw*a8-1$Pd-R-!i7u?VjNL>|~r4`pqrHCDfz;rbyb8pI-C#yq&?WVAl*# zz29cuC0`ahtY&<6-Ur&iYl*MUJ;pd)5 zjy+L~4Bx}FJ(dV384T;3Ysonc3m{-QeYXrF?$ia>I%iam6Z(r7le2B5hmR}E%ER^H zXqcA1-HG_TtL5rd^R*8$5?5S3Jxy2NaLm3$vbV<-+tul zFEWU2S-@(*VAQRI{rtM^e_5E9P0m{3WyT_9N_UKV`Eh4?Qi5W7pdm zFxMwDL&x$Xaj`fq)kcKViO|f!0a8_0ua@hLO~}OnKSM4P;Nt93>YU?(7l@dsfJL(j zwe2(Y;#s5h;&O!nDl@~TTRl$kNQ?(x2I(7(yd$Eb@c(he@pgHOM$mihaoey$Rbe8L z%swPXl*1veeWn()AN^|B#-Rkc0@2F{pGYC$@}s1vI6&6^$G+@DilC4BD*G;Z#p}|9 z=`|_)>2;e=|Ma6l{|B|h4mN6w>Qb7~+&xsuS)D$CNtL}M>l$7(*x)!)9sJ&)n-;jD z&Ua|`faJ1kZ)p5xmRYlqI7Sx{Y*hM*$bk2A#%G`NGTn-2W$k;8u&v>r;IY$>w#817 z=q6prAkz211(`SA((;@fEq%i7Wb;+6+}LjxrCPt)%{?MS$#BzxcMYxjz!*6gHQg}M zb;!fhM`&^a9P5zQx2r|Ga@YIUR!+KXWJ@ ztH(6FTZTpC|I$JiJiq78(1rSnl&^C7uD|xA#`2y1nbgHg-Xxl7@thSSYw#*<&KjSc zt&8}gGT_;qt33hK-~Bc96$joOb?W9kGq^!WFZ{cN15FIF+^%gZ;$m1 z@vqRtj85?P)(_L|AtJ!B=R=p?%BU3;=ecDfhB;qT>a$=LmsUEIjmX8ByR-n^+Mt6zug$%xQ|`=qBg>}AKlYr%m16qSnbeU{iy0xPUG`JMbIYt z&8YNh?H1Los*YOca1Ko#SaA4iLdL?|J~L=(JROhe+D; zaiM>iQ=erssCdr7k&s87+obv?10_#867+H9-rQ~_5R73JTeW!dy{vZiO`#nT(W`W- z=^t<0_$X4YLYBsQplC&g^nR_yCKa>uN;&-Z6>X2%?S4mtOZv;uNQ0vKAyFWAKhV}2 z)mCPA?fhgt9Z@f6GVsDJ^hBP~28VAwtqoSePz|aAL2vhNl^1 z%Q7ZYgj{QLS}0Pt9t%g`<8Aj-yX^I*#<%TCVzPQMMfEp|Kq4v8x=-{M7NpW!j99|QSy|%AjVQ^*@1+_=G@7#V zTCy|ILVA0-8EzADcjmD-N~2O6J=%uB@9aLwNTJwgm~~Yu2Pf z9x$5nTt8(D?N-7}d#$S;;i`9ooe#^oGE7tJ``sI?sCVPzw>jmk#V$z!?vKA1)IXRl zY6*Jnyhx%$c5C9fd5tZzCVj#;Nj07&_AZv^vy-UQu3~R7p9NSRNId0hX`e{QT(g}Q zkW@R~>=$uhh8Z_oPI*!xF>(@?AcE?B#W$*}ODh=}eJed21Nl$5?xM4OhC+DTowqnF z2~SVO@Tgl7FoCOOu-5S2KBXLQ?AUVCSH!fwPE%Tbu25@jSI3s;`l)-@85UPE zLCccWPPS3A_0x<|v+E-v%a*aYGBkx{Ba#YN`)F4iR_69m%S&!4TWwaic%-%7=dR_W zEv}@iBMWh)_Y8x%3BmtdL3`rz*IVYQw4z@X;}5xPiz_*jXMa^0B6nWJlOR_U3V8Nc z6W!3S9vcaZ?;~=Jff@J9Q~nXFyd> zcXgM~s$5^~l);bAz<;jz-+%jGJ&>16H`;o@%df8|oaVs|)mLQn?-mId`06gY#PFd}kmeA+RA>@*984B_B-1Efb&4@_xoFUXRN4;;+7_rwU6` zmFpMyYI2Zt9J;cZ2+uj;WYVUmrN!uHoqxzYr8Zn-e>E;piNw_gTQSl3Ss9@>8^Ped za~i!LAl3-}MumfIPKKhiP(`-ok%va0ch{?YmP2Xs2^T#gUVR$_WkR@{Ki(^chvL5C z`uoR-Q(d-PxiC`ckaMFhDz`rCV@KmM&j^4|M!Am9RuZOO7vknLA*5UJiJ#?lytQnI zYUQ)MZ7Yw&jal-NV~$9Me+9+ilrni?y&%{|F~yYLV+Pm9=?dSWf~KQ+Vy<8ikLD4- z+;@yTM(~+>46)8Hf(3Rt!TwXy{#dA8I{Cpnd!oh+*nF*<_A&3KN%G6GMCU8xnajkO z>cGesv#%)6inJ2b#S~B$-^Ju-^{gxpw)%#QG1=Lwzp5Zrgdm3*j?A}R14D^ttqU1D zf^d(dhAlSJQ!10Ntbve{)C5*H*+-oxNDuZYK&*Y&{=Uq7Wtxb87q2eFA^;(nM7j0vv349nrcUh})wIZ8w>8wmUGB`NMQgD??t{`8jTWe4g2W(!UKLH>@ zs-<`{qx-H3EvxBpXn9CaEx4rM4a<#a0wl!gCBa!qg%Axd>W6D4{hWER3NvY+=o#B@ zU)6*{P!*BYqwM5w2dDDYbBx(JVPlf?8fVWPe1*EoSgj08q zSVw+Mq3OXqBV;%R-eqGb%-<~`oMT!$wIDuH{L##8HImcvR%fC zZg252ZP>QpQ*fz-15hDDe-;A@esDuz|9I@UFk_Dh34orKfWR;~_ziXBmE~8csgZS&vlyJPmngpiCg$c%9(1Hp7${>PsNFlj2kL(I0{K5#M(Dm5@LB`vofs`$aTVLML2>R5p5B!x>->oXFXSr z$p$fI41t;_oI=8y_vgt~`M?XAI1l|te-k%Ge}XzCqek$lGi^n0SWXW~S;foYK{b=F zEX*6Bq>1Q9urMouWD{8KMayP`IIIlZ3l%G?stXB-Va08zMD|#G!^@qJ@m&*~Kew}t z*>1X+7T?&r%sg@j9Qt+LEjq%In*oLJtcRJVZ)d#v*GXTCM{Zqj6br`gU=H}!?J zY0VyH>tH?(4RrbJ>$a&ET-Lr<7v}$}f2d)Z;r64-uenR~wvC$hb`ON4dis)qZ>X-G znse#{jq5ap8xly3HP}qY>yY$a*LeE4URQBrNcsU$URGm5<`+8_g!|tcS=2O!?Dqlw z#0Kj{h7E9taQkM#}IeL_mLVqgb)teJ>s}+YHRH1 z#+EUT5wwrM*Dlk(YpCnIVuX|B1R!tSkV|#yH#gt<&{w-vchD_%8+xIqErOeuMZ(z~-t^1bX>3^I2 zriw6=XBqY2DN1%d+>wYgK`%T0T8U~){qbVQrM)A5`Y3x85iy>({SuVN;h8WuJu&5# zsT0)R$)0l|QxktNRF2+>zr9Hn`^ni=qNtMM0y#=_`m6Zp4h_YcKvUYTRbuf&Y1)Hs zuVC|YB)s^%QKH&)u<#eNJw-Q1nn$tV@1DtfVk0*j8sMr_^*Qvn@BO`n?&CQCzr zD-Mtp69of&OypsnNLjAYBy@Q~`op361&oUXJoK@AxEod{ zLtGI{1Olz7mf`%ThtNszeTJKEXPz2FiaHj(^}DnVsapsX%vMFPq(;>0`xbmZCi)RV z^cU?uv)oj^dkdgN>MG7Bg}KMoQA#e^9^2@Zhqm4^^4)k^mihf~xATJB%6%n;riaqp z3ekSyG5z9TKJwAP2I@VKQ;nw1l)%EvpZW04x8HGD-L%Hw9tP`%hveWdW`)UIJLXlX0%~i<`eQNd`!=zzPkuArBRRdQqzqA-ja+ zb@+(H2|2kMs!mkV7OqT-;6zKFU;Ee8x{xmSH|seP?~HW|$-``+ehhzU;#(UrJf{(Z z1K~s@!Gmu|f*xjS2|ceFK_(WF-cbQ_DmcmszqsEliNrT&ZeEjzsp_~T zO?%S^K%fskQyEtZrUIjDPgMp(&Dc7F{(8!1RFCugJ&EX#01N5zt7eO}w|X30|H$xD z_B^=6Km_H6HF@f}O$H1I_Poc&!k-*b{wJI~lM&fu0WVra`f_n1*f!bIHuYp9gTk5K za##^j^lxqLI?6Ie@wOG=Zu(J=@lfuWnbfG-Gtu|QGQ{fjrWLV`T`iQc`T;B}X@DHp zGc!L>ASqN@`)Ndachd{;nB$Qe%q&-wcd7p2lib)b61e*aR|15Fn`ULPU!5L;w{UG0 ze?z)oX4a7|4zF|^d1vM!#w~>>iFC!d5xP1nPiE-7eS{Nsjz-yDS=)MforOl9%abx?a$m6W)GiniQJ;5Jp|`d?#*bLpf9t;D zmAnON`G1~$WvuhuaTuUM(@L1JKh{@K4EAlx0HmdrDdel8K?~ZM#l=BJubvi92IHzc z-RlXhmrcWP=E(Q;Aw3E?DEiIBFNjfa{v0W3i?aCRH+gwKWy+%8T#zth-(z>Zh%NR| z{=UbUkE1~#f1a6%cLGXPMPiJH@_m)9cR>O%2mqVCo+L;c@Ilom}wN50nbYC%H9-q9enccdf@Zy{PGwsU%ud0QjSU-)7&;_GE%pr1} zv}shv5TqQkAwPI$#m1128&K>_DvM(N(3VEi^O+7stWEQB|2tY197IKw2}5P!`j6h$ zar~pdA@e?8O9j0F${*Y#_33u3E-cw|Uz>L%@6q2pYAu29N_X)H>2L>VV_EIcw}64^ zFdWO%N$A}tGf(K9qy7L7UAd4aQuiRM=TjQF;&=Zyef{dv>Pr!c{TV{!ar2EG(QL?{)QD|l&;iT@ zHIvhw@(IyU(+E4oLDz)}^QX?Vf9mB0KZ7}j%?L^F2V+GzdpGjuPe~OdJf)E}qSg=I zG8ml)^%${d-WU!a!0w~^645bVcjg!E&T|>h6VX=V$4X|2fc|8TSbKZz%Zyso%qwrL z(2v~z&K?kKMTx0900-BZLCHnd6vnBgkHPoaID-C;Q$;FZ^Ue#2F*xeSs+CTvgfgih zKP`@C;;)Ry#oH~VQL^4b{CAD=+hpo?ecDf!<2KwhzU>fQesWd-YKs!ksqSzl#yHHAczItoiQ}nlH&tu0N4u3O8p)w`xMch?#{oIB zsA)yGHWFE*Rs`nbOj3{n7uQUK$%W^$d#ss8Ou;78C$WzElGcA6!F@5=7;WKJD9U?l zkPwuU48W}V!E{w9F6}1KF$v)@!|-1TonhDCZ~|w`)gmG(7?|p6p)Nj7ccWui35a^} zX7P(Wri8?e?lNB&JNG;HfmtPgiEUN;FJ!W^z)b9BwEgNaJYRqlA4^36qoS0` zXFJ^4In981y5 zJ46T1b_KJuw+uIJy0Oq5_44S``D{irE4!r@)tjF9h)I3b3AV)Q?oBQl%0;ykOlJQf z_DRO5JRgxpq~X9w)!+w)#26(wrF5$8S@Ui@%k$n3uZcjM<)#F=3tkNZXBi zAjF7+i(6d7kmQ@~hWX~}wx%YJn4yh+&Rz2`N9JbW<*JCK3+)rRFKg5p<@A87HQQ0^ z*f`3a1;as&#)fv-*t+ltY2~a`-7kIQU6i?VHj*|cXW)`}dak5_r%Cv;9zSWaYaXPY zaBI+BdLI{z3`o>3OhP>4x90mP&qDDh*ltG_iWUiiMzW57?-?7R@B)ufnxUWX4@-SL zeRnMNbyPeeCG55Q)lVLtX8y90G%2C{scL`k@G04>l7-m&xC|*vsk@fT4rlbeBql!L zIlL;#P@AcYW^I7-+2|3Q-^y1|E0lnyW;y!+TZ)<+9)JB)IT9hm!!?jNfv3%VCc|gX z#3TF*!r0LuVjgsv1CR?ffaBW%$mwI;_9Q?&qR{jZz!GpqKHx<}s2s{~iKAgHuf4I| z$_awMQ5*N%X97=g;GcMC1S0VB&z#RohQqhSzN9Bk&(u}|#)l^&>W=2)_&b_k7sk(^ zu%ln)2Su_NRR>h0O!My0wt2bn1n4Uu;2#4ID+FhOcT92*S1153fO)v^*CFcF>SPxu0N(tr{?qaD_s)Ik zp}9&=yy`JlFqwPs-vKoyI1p!}LEXsKQX&vKbveA(SiqdNKZmBZK9MDMloSFG`=DyX z-tS;q^Z(4xF5pL=(3>LTsM!wH=rn-A^_y=&uBUpSk4Z`h63?WtUl4odDp21Svy0kC z(z1`S;IrxlW)NovQJ=x>c<@yveh5Mxb&eHG9li-vBGp~PQ8O;;cgKG7Eowu%xXj_S z{M4tGWuJZ3H=|!1RTuS*PHk#c?igSSK4a3_zH7iQn>}2g`Vz4pp4ZNN;Gfk$B?;<3 zNlc2~>CC<=VX_Dkd~o~7e}3iMYpk>?RDR$~88(qGPo8(dk2SiC%;I4ggfQzzqKAr3 zFOT8UNsK5s0x9WH$BYRccI9E^;~dchJ&Xf>0T=7zBk=ldPf{gPpoF(QiMF60$=?w1 zp38CQV*mUKEJRpk=-5X$6D@-4SRJwN%X@#WxR~zn9C9R{!(p1|5bFB)PN1Zwu;Pgt zT+%b(**^~?dF%sJCGv|zecOI{i^HhC{fHuH|JyU-eC`EJ$Z1BLyH*6uwnHli3gZBq zM{0fD|COv@-78DTL9h)ibFbYgajZlY>xwA8bWvC+|E8hLybZ)oqXbyBn=!9;h(Dm< zJ89}s-D~p4e5c>dYpZBazHxhOgkli3b*5>-B;oWiRGAW<%E)rHd96H@6_9=GcR$8= z*X)@#_A4CsJ&f*|RDBp)NgxHl%EyVYyV%EBV#P%?2DaBUwtxJUC1nT&`cb!(h{Y1~r2)MhBk3|19Ap8YzopkOnb9;^pI-@YILhBdD&%hC?WTQ5~A#Qh})PqL^oAVG##JA6ca z*SVn4eidrS`m^o&LXSSTEK-N0Zo&>)8`Q2~`$KJi65RJ$OUmw3Z;pFLXIES2DR$M3 z+aEO)Brj1t|MlVm{uX=z45+7jHGaY3-gO@qLtP$XUh4LXF7UJafoABlwlK?4UQqbT4!K}STHMc@>oG@BB@JdNr<8U zKKA+GDPU|OF}79*VO!J9Q?+rHzkQqeATD-bIe;D7Hd@Sbb6f}bj(npPG*E|%W-0zMP|d@)&ke7@n{I=6-H0Nz?Vq4po?qxvp?I^otc z9JH@{deE(o3n(CT>y-^NIxnH{XRK%alV8uJ7SZu5sS2eZ6m=k}j^9=Zjk9h^Px|WJ zzOR%mnZ=oHiue*JH1=DA;iIU(2+Ka<^e<(P#sQ^1Nwk)#RG8bc=O6R_zFMV|YSNUF zJ3Cg*9iYZkl=dsEY6g;K&{8;;sEAAinP#X4g0(VZ2?N(CsWp4d6?^Twv zA28ZW^v*+RY)B8Kp=4}0A*4V~{K9&VjZqE|8+A(7wtm`jd@LH9`jO9+2o9{~n7&*C zlL{lEg0BBS?UN1|D`f2JS zKEFe%S8_p=+N(u`_q6Frx8h4KPt$$mMVF_EkDMr}5ta@AcAoEW_(!xGr)yED{rh88 z#-t*knYN=U#91uCBnno|R>Q7bxw_wOejac(4Eu_g07i|PWo?bbu5Aq^AhF}!7Dl|y zZ81vu3&ro*oYzofY4-|NL&CB2Pter>Sf}{^AH8z|&KE$q-j=IHuG zWx-xJly>n%!J?Fns-P%#9Msw!mf$G`9VoJl4HZrMwSrq|Ohv_{h=*tD^9wQT%wtR8 z7HLd4g6>Yx`%M(sOr>+X`@!&fFchs6`jaN{IN1lS3FG6VISQ(j-OF=pJ;RTMlG z3X>5Rd(;D3z*Al1xF%J+;Hl*p5G3_v>nYI905TmiZek2pw}~+;T2W)a(SiLi*}G(1 z-w+uUgjIN5+WZC)h_K1ZV88jYrd4N|9PbW{BoU9#(WG%NEAR)@&`f3!tO@x95fN%SEEL>c9m^M#Ed`b9 zP^C!vQOf`oHang;^Ui0!USWFRENV$uJd_=!Q8x1CyJfiH$@e}VKzQ~rQYz@s>z~40 z3qBL`vxtXCW8O;k1C`D#;>HCL4_lNy6erV-0^d$Wusl`70=GVXgRg2>gWK6!pyHp- z(EH0;MeLU4)W+r=J4Vsej!`9l*FI)WA{`=#&dansAtKd6LLo6xN*<74i>c?nUOw(t z8e{eJT#z!wh2JZkD2&kagh@a{!%e-+E0WX0;;~x))?M@M!m#EyJUxZ6D^aT$ilc8z z#32YLelCuDR%d_Bq#|(#))`OVJ6)z`!7Pp-?V&TVd<~m<;2y-qmrW?+di^Cn>G5f{ z(MTgysX*!NoMAk#HlZNO0UQm&Z-&~h3;@P$1-RbWrr z+qa+bO%=U1CsER%e ziFxHf6AiQlRFN~%|KH-gMS<#Ao(m(h}JF~u;WYid|u_HV`f&;`-ADY#G4^AMubfrrHSd@Y6~M&M2=rUFt6TQR5)4rp4VTfQaW*Dm z{bJOb^RT-URXg0|WJA(F{U4DqKqV85bqI4q+0MMW^W*kaJ^e^#PB?qMn98QqZi?$C zuN3oH;8vw;st~OBci>Qkzr7I{N?MN(egVAf^3l=&hy%~U)6fmj&HU&P-9`VljUnXh zJi#>H{aqld(}G*B4eTF$v7I3)K4ExC zb${>TlB#LsARJJz7_~|~CN7T~42Ee_XLt`FN|~vuxrny~u*q!fF$|;FmcS`UlBN4=D6AFO@hpfC!mlUy-WJC*wCKaCLO6%9eEusvu9%`g}qe3H5*Lm5<| zX8Z!m4&9J6UdL#F_sqP?Am~}G8UV5Yv30y*B^WEaF+Arrw{wz zH~F6T-?Ypg(iC8x{oTJ2yPeLl8O9bh%7I(Nb2!j}7Yg1Io%V z0=QXr=s+*fUlbcHpiZ@R?)}JN!^4E>qQuds|Azt2R>FVM8i6 z9k3F*L`9RgaA-#?9d*05*QzLEZjRyLpr5pLTKuBxb}Y>*#W!SWc*s;K*yF?m_CzX6*r<`z*t7jrhnUr z4jCO{oH2tUiN1iD5b$xG^Um`<{!w_4RUv8JH4Y@RN+_% zSx?LLtNQ8cIC4^ z{S!+bBiPgQ;H@LGD&L#w8Np63M}$^lU?SVHD!YWh0Z2rwS$~?&To~U_hp9sR%$=Gv z;i8+dBmqU&^&;=QS?TqTw$OJ*fM6976sjRtr2t~J8niV28Qlk@_6T_?xo&WTVBCo* zg+#FToVyM?H4sl2I`2d0YbpXUk5vRt{tFOG>A%LAmUcpBnHcl+Nh9V6!!WsWJC!}_ zcB;*_yEt10fG<)dnB zpuYnAlU37c_Muk_hRr#2V1l~RZ160(@>PLcxjLIazOgS!DXLQZ1!tt+RZON{R%HD* z6;4?7ZESUKs;r*s+tqp4b&x^+Do$4bNp8~sm{+Cd+PUv}@LcMzsTV*)@9b`x(&ZW+ z821-b*SSqr6-7Vvun%#IJq1d9yDz&JQ4~Dv$az;vlPY9>^8?;t4I^27_tk8F4nD`GlxN%;|fncGc6cA+K4hEtldHX-e?^3 zx%PxSD;FI7a}A5HE|}`-GNS+$Eh@k@tZrsOlWW$KoDwZhahE4KT{+Wn)i{Hjt<~yO zeG&2svD&p1xU$XTZ@#PfX_#NI!5+RqyJcT68H9109X+Ky-QA~*Mq5ue*nL_@qwPK! z1HMB(L2j0$PrYTnS06ulk&L7q-Syb#YBcm*QFdE~M6DT)bSZ(9{|*RKdUCs*8H{(H zr8v+EwQDYSUNdxTJA*xXIKU)D+Q28d8l#^GdMW)u|MXA_l=u3A4^_z~BMa`>6SjyqmEII}pmtw@-t^(m z97i$R9Y?h<7wA!lC?p@QVc_t7zIw;sgrr$nuREUL>Z*IrzHK31Qr(Q9qsP5sW(E!u zgWvXorNu-DNS~g%=ehvco^W!x*KxG!p1r@g=ruj0ft0-kP1;1z)UG?4n!m50b4TKD zq^Xj7w+;=EBT7vDL*p)gy~`$j^xo1J9Nm>3u%nmUdv*vndoQ`;f&?7~YwbZ*g4ubn ziu*7N_tf?|X^*+sTX0!*XnzOC%b#iO{fn(fM_Z51wH}SW&moq*de8N*3Jz8|PMhp; z+Y5djN|1)0&wF`NwhgKG&%ly8&tkXczv?G}Ks`w&l0s*{+lF&`+C7ABc{3;Dnf zlhb<#5;5SbZ5C5TaiSy3M+_J{ zGpf1;w%KLsZ#s-j$9o@QE8f+Sf%XVM&J(Rpj>Nc*FWj3|_i~m_9o=V>(vGP5QfN5dg#b z-|#%N{Y`LcMk&}OeS2Hl7h6V3kSn%W71ParO%Qi`i!Qe}XGi%YV-wvUOK|g^iNs|| zI5!cxX=xucWc%cY#UJfEqoHnUQu_A|^*THk2Fd+q0k#y&iEgvR&2z=gGO18zN|sws z_v^{d!`=6KYk!lk)NNIvQ9(W3WmzyJZ@zqV>_nVtOH3wr;+599m#XwEPrt&i+}RbI z^CSlrO_a>)F9w}oS9f(#{YKQ$ehpVfMG3nC!zrn7VHcO2!sT6$jVXNIb8mE^-E*s1 zd+$MCm(Lw}Yt7#Ik|3wUNTv*-NG#l8O6?I9Qb^|T08jsUfh1Ih7h;~RRFRG0h4_D- z>nDOOrRG)yN_9(;BcAI=VL#=d#7<8--r&Ns`%bD@Kx8@L853gwhL&L2v1?BH8_(`L z60UWqUoLJV{qr%}F+z${6qpJ(*hzqt4p}|38iF==kqg{1R*6^*b;|}9!j$#J0CLmX zD5-1r$8g#k?(P_StLOD$+KWhJQRef;_(F^f*6I8V%lI@7OM|?l&g;;inR+)smKyF( zzMorFM>2CA%2otl;!Tg zx5iHD>dA1fo>aDu)%Q_G8cie#tmvaB3Cx$Uc-Duvm3(*^D?R9sm+ND|(O;g{WbLyS zEn*g+$u9I+79G*x!@aC2rjm552vuGS2WR$5CuQ=zeJptk0x|KV-9skE_&qnP(`?|HiIdeK zju`O;qY>vneSBX!nR4*|MvU5^wqYDoW>@GX`VsWV>}haN33HVsOMRN(b2<81zUaIyuz)O_VtDPE1Rzk^jOO&B)YzE?sQO{f36_aKxP`i z@p*+hw36Xk@c3?)>%sPJr8k0~?zZw~@QH56X3UiP_CK&tN0!+Cz@aZRD2bDmSNdn7 zGA^Oz%lgsW>5A>ux}$-t+xGN4ZHV%ovD|t3dA9x2$BEmo(3a18`#@q3>;{RQ>rN~# z7!2nK5El?26dPFC9gu4d%#YB}B6-=v<7fMhBW?4!R;Z_!_;x9P9Xfx;JeIyDvQ^&{PO z73!NJMr zA2l5MJ-&XUc4=+9f|rIZzp7vIGL+toKfFb|RBk9JAEt_`d8vxcE(Vutyj;6vHWZkL zT^$vrDO1jdt(SOnfuZ1Ds)bL^fC;oYbbjxBeNe#14Pt&^uzv5&wlK$6h6tAP`9pF< zkr9ld`nGVgvhhbq?hQ2vtfF%dF_{OoC#wE*@bWZ$-#hn^{}kJc4fXo2)5chT@9kix zuD%ZcuOPCB#(7D3tb%>d`dY*RBm7f>b*8FR8NsXQq1>Tp&PA5PTksKrpEf9f{3_*e zAoBWu?3>z;+?P(a&y8q2yt0ojP^Oi`TktSpAh%8zHv?YtK%QN;A(h8`O;M%Bu~GOw zJ~0CH9ca#u6I=mmq6n@4i5@EV09R#kB5C(XeMJ;b5JY6MI4Yw#eP?J&piMGLz~@le z517&VOl6DeT8Z+-i-1zV9^O<5hyRRuVU7xMm!JxAdDj*@4pR0K1of#J+Z2}~qPucZI ztz~kNQ!RI9-+08>^z0jlmQ&=zAtUG!RPv5pQHU0DgqSR#0h01j(wDuE zEk#|0Ui2pp977OBewL(k;An;fkfo)P`*0M+UEb6O<0BF4_%FPa`)#yss{g`v=BfUN zY+A>s1sldj9o_o`mW`mV?5Nq=sZWlL=ngg080pBt?O{CY=M`b<=&zA-593C4 z+UzH%Fb%@XYIpMv{L`6t&4W#dgcY?b2s4SVw29Fk3q}1Ps;*>52{>ry5si~=0t+l%o9e$+H#@#; zIw%WKHBjpgQ4>`2t@c?WJZK0KXe@u9r(cy2k6-4n)WoiKXWY%w8Md8y@%M~*|HbJ^ z>GG-gFa`%WsjT}V?X*|#AppC7)osI#D0Di zxUdI06G3zlL3=54^_s^Do1Z#;CJ58>b2(VbDbt5I6oBZxI^g<#c4?&j_yQ(A`VnNd zrOHlA)Qf`gq_(?`g;e_}p6;UQwsQ;da7x-xP3oCO)7p=)3PL3c#76v|4uGYR*%FQ5 zfL|J!U8la6Z!4Qd0xlNlff;(sY_wg|x2Rw^(DEedQhK#dh5PM~ZBBLc0J$b57`f(^ zVC0(ngW06QgZI9n$u;IR4#DWER>oQO#l|;g9uE>SW9K^_#Ljm-2==eTl*L-(@s6Ve@BhB}{r|q1YA5=O&|3O#g>nvWL1Ah43dDt3ZJjN!Th02y zq@Mntz@)vaG?Q&kGQ#UOm!`guky017ksv|iTejc&N&nE1e(Og7lF)(NcjC_b-m`i1 zciiXE-*F!{kTeIVscN7*AxqK#e*Xo$BXzhbb2zV@(%;(GxII=tKrelytzZ4L-8b5) zyzqlGO8A^T!p$lE8fGtXI?UoEO+a3%N112RVRqBhp@?R>TBK@c) ziL<--nwmmORZs-PCEteV{iD|B)oM7uy@aLOKY7LPxq1@C(wDWC-NWiy|K?b$GA<6J zIt3*hQC`yfCNADtxB9BekL-C}LRb|NmM1#lyh&F+vekuB<4vL$k!KV%x#6QCaoz4z z2xeo4IA-S5rSOgb-YQ^?%VJoQuRQf2dw11sTU4C=wv7l+l{$~dPuxkrb>H(I0cIGU z@BACelLSJGU$FfdM>wxjMtDGu2b zsx5>5MtcethW9VMu_%KP|2=p2>%tCcSuT9mdLddvkHZqt7F&ixi;X3gbt$oB;AIat zr7B6H>a*cfkQ zKaJ)uKAG`t(zRY8ua4Qf@NuC5x%r5?**ZgHP`M?sH@9T%(>z3SivsG1Hy|&n^myz? zY(~QZoAU_pa#*pY=}Fy<$y@fbT_1Ru&_HeGx*0QvJDa=XZ&9~Y4=nmUe5(%H-08B< zP%R&bZ9TL|dL#*@mwM6be0 zs?`7WM3{Ti)>re71k(()#VR_V?4=p;o5B;Tj z0)N|Jx*pp4l`5P*WxAzvwA(yQoe7#qK8iGOcAwMNrJ}0K2d1es+!`~BBiIUDNc5KQ zVx*daQtWSruS>nHMs@SNV#JQdp`Zuhkm;j7n)rfTjUym{*s+z6L8=ci*~)P5TMv()^QzQ{OJy4KRYlSRlH8S0%!OYSKV)nBTPjj42U!Lb z5zAJSi!nkej++btG3FtzlfR=Nh%v^Qi4|D@oNJYW4gT4-k(%FM5l_iOA-5DQ&9t%g zemc2fVUh5cMUh!L{3(Q|EC-nXUX7IRLDDCydVbOU5nir=8!DMULg`X19~D!?>W}$8 zqlvqRf?kcZ>L@p>?;~Ik$5A00GdASEie*i+smso;rN}66GweoWA7u#xK_a~s0TXD3 z?~BCI^YmOUfUV_Y49y`^eYdKgd&AyhB~pL}^kviH3xosGzZ8OZ*g^ZJ>!9@btgFZ2 zykES>l1b2aLAbX2$=F`IG_Sts11-=MR>dT)ExL1kE?rwByhLWB?E+M_@NqF&-nnqQ zJ`_T^Q6FPs6l5v(pwAV+L1L7bXP+&vVRMpJzD+WJ@pxNPFoG{0Z+nOI>hh&<)tB_m zMZ3aXHfXcnN(!S50s!7asUnx6YPM)wY{jHgyNgy$_f;TDY%~t;rr>iM|6Zg}_ColeU(w#mgN1DStzY`$gzW3M{tigWjwkUXw(1VbFxW5hsvSu zK}2|=g75aoO%EqpkJKHpa0}Za^1wZ!S2O~}d;3@s9=Q>JnTgh`F_WR{V`Th2HQ)^_ z$SN${bDr~`Wimc&Y9>1oYkEyK=1IU=8NI2w6|s;XQms3%ms=y!i+`C? z^+yqY|Sh(4?kuN*ojT1R7kc`WIX z?Mr1da5I`}##3V61RF`ls{yftmTTCB6 z^<+d|8aSvpDQ@@$L`ya>KFi?)Yg3*wKh@>*v%V)DNVP4~xpg=kMmh}0!@OTlNTuklut zc`!8_O^xvj{fHmp1NC|cvM(7W#zx!LQ$^Yg-r^BbECVrI zHA<&tW=ge5K}>$aA|OiA@g~j11pR!g@C&__?Sar_A6KM}5`;Uy^{K;^DMH=>vuJ&X zNE>KCt)S0cbf{&fbhv`i%qgE~wYQEX^;3|#&Y9&xpQ&wwOrXijDv)fc3EO>CoI?HF z<1#R#$t2Nw_d*#6oKILfWs&^(w*-RSPfV~EXh3oD0a$Mp(i|pS_b_bqU_rY@1jHOH zF0WUGrOxhSS5S0*z>uH{c>eFFd{YirP}7LF9fFC@;78Y*KEz z?}+w6s*`ZoZY93YYs*jc1NoZ(AMCzmYadDB%VDm6%#TZA03ZWmF*_Ov`AD^gMM~CO zgcb&}toy<~yZAeYcxi9{1n1oz z#&QLdMq7* z6HiD~3!Y9K%a>-!E)t>ydd9~U#&H}r?+ooX|1mC$uv^)lR67u*-@%~uG2;pd%8NL;P z@s8{f5?0VSrU1+)H6fA;8QPvH}@r}t4>e{OL(SZUrDAt@m<~y*Ee3D&N&>y$Vv^5;JFsdCR4@9{sutMp9?9ej$ zBxVS1_Tzn~64fXX?K)MMc zAdpI56Gv$luk*zf;Y)S6lFkav1hU_l0RT)O*%mOOMQM(RdBKBSlm-pzN6j--LWan| zuH;VmHmWClFlrNhB@L)bOva|@i=8yI$^%gtmxTv>HXxQ^Ix87k?ANCh4H1ipYl=_MmhS{exO@P@D|{ua0RzYp$IB;T{d;1iI|vLhQ?%R+dAte+4=qmt6$0e5e|Ky(2IeZ&=1zJ zev}vk_L`R!1NZ$AE;iGR;qy}?MH2>rx%I+crLg`kT zSF!Kl5?!*R8+v!4vBy=-@V)~b`R&_s=C=cOhxZ~q+L#L1GSN?JQfLLnW;4B!ZgFJ^ z*8Rig<44%2piLDgwvDqkB+5R$Da$b~ZGTJ4bNmhRKae4V$Y|gWA5|i}LmW1OBMTB; zYUE>MWe?}5W$5910v|{eNs(unikD0WG6)S}BvVZ1Gith6WH|K(s+_3VBjte@D{m`I zYEPybY!xO@KaHJOXp#h<{1T)+CD_BS1q7I6iyuG*X=yKc&_7-?j=j+??AYU8ZuZy* z`o_8^9FI?Rvxgo0_~5}sb3;1MRcYz+JoO>27QH#a`ALOf(`w39EeO-4u7 zHy|;{_UUgFMN6)VeT>n3E4uj-(pAw_wGXNm=<}isjN!92qH9RSc^zkBT+e4a=H%JQ z4RcEXm-543WA708WsY13?LvB(5IbPs!Bdt#T|&^$piGJ&rba>^`Vo+bFK8`es6Oq~ zZUkjmHzJjj;_8bVL4L5>*H-|<6CXxd1nKRW9LI7XZu{R@LTa2cJ}O3>{-~Jwdo+xl zJV#|LS}%4{0H)}qyug4ez(KX~p z^hn@WRr4(7GzGt}i8QJ&(s5%lGyA=5s-Ew2XJM&J%5a3}Zrs(*p~XKo7PVbbmqPnN z@fWMrg-oP?lvP{a$&+nAMtF5V4R=Nq;ih1Qq+3|{OsW4 zx0L4qINB360y7Qj&^Qp=EeY*w`@JF4qH#F!KAlAOl~QwR$MBfhP|J0-XsK*kH>+ac7CY+ zEhD~{pIHRVnB;T+9`1FGs6oD6XBa674wBrs1X8QJRPrL#qe#;tiD&(G@|M$6$w3FR zJVGoR~v(`;C{a`IBH$7#AsRwU#>F4kPk#+L)Twtt_ z9lDpI-c8~blmv-Yf2$BGJu?M!rS1~)-fgM2HkJ|$fN5D4EcS>Araux^ZZI_z`}a02 zR>cjfRnN<#1^S{V2Rp3^3V+PVk>&izI=r^rIZ*D+N`CFPAU7V zhkL}gHm}H1%sms;=2?d2#QWdIRVvJ_PMK{MS$)e8tPW37`+7Iylv+oy&nByfChP20W78%l zcSGn?UjEzQ%Vv}lWo2MH)gu(Ook9OH`KSYG*1XX z!Q?H5q0|H}h*<_UptL%8OKHimV)DtE7nz(klT*7=F*$jcnBuLPX=(yDYkWyrs&?sS z6by?KP4kC>#fy3EK8!oe#*@i>cbkAPQ%wmXkGd)XC5v5*5HgPIV*S+<7zg1N`bh0m z0PlLAQDt+crYNJ*mC)h^2_$zTtc*9WR|xrVdwqn)uE9Mb?Fk_VZ#*{GL@~xzg%~6d ztY-g%<&VeCOu?C1p@56T{!I$kNn6|GFzk9v-t9**Na29pLktZf4~x4{>Agb{eK``@ z`KN3Q_djJzJPO}NnL5uRzox`tHC|TFQI+uHbsB85cMF^w#di6vdbI4G?Jyv#(81_fj@nwif+lr!PhpJ z20w;@6sUxwXiX^Ev$CX04xjn-T)3CX8vln`2A{G3fMu&lZpZiV!bhH;$cE&MPL>*-Oskl&Ux_`hgDUqYB#x1_B7up#%}L zAxPwMF{Jy3H2M)jgr4|4d|ev&Ji|>tsTN30bPaqVg|EY; zVx3N&Ws5OeUFb1h+UM(*Xg*wTW$kN@=uYj9AHbA|*VQd5Wf3@=+j!HT6{wC*UDH%f z;yJ!6?N}iUgR!hzDa>o*j37Nr21+1jLSJZ<(blV?HQB=_1?B&$ak}bRtj|e7&s923 z*VOY4M^tF_tc6`(d;+6Wq`lHdNE>z|gkwGJgKGYj-9 z7NpgbnYCqwW!p-`1PT+@4Ccfu6p(aB-f)82t_CXw15Rv zl8~+v4vBESS(zm%iYqKr=J4f*D&_NW2uPG&&1yWb&s8p46*x}&qAKDrFBY|%px@_h z2||eYR<$?WRFZ&@GipT9AEnh3isBVP#+&K~6U}?5k|3ZTGtqn#R5FDy(*KXJGl8qJ z+WP+i1k_9!1vFDZLC}=r8Bm;<6fp-z(Hvq>K#)N|5JwP))KYWIDF+;=>}pzSlh@QV z%gQOWvaYWaskby|E$jc?>v;}X_rCAH&!;2jJkx&mUVH7e*ZQsBf^v9-0)s8m5Mi*L ztJ35bqI>AC$`16E#TLDq&FXDwo?7c)7=v-zBKdM~rd%P-kXt>B@#_qVm?T-f1uiRXaXPfPkj!i<1ZyTk zakp?;wbry>rg76GRkQ_RSWIo{={?{mz)tD^5Xyh*cj&_4UAAkujZ~D4nEoEvu4Ha( z3Vd&z?NzVG;w9*FGttOK%po!}EYT8{DOnW|lV49H>>HJ7QQ6fLwvNq&HMT)0ey{$S zq!0|sglQ$+TC##DBhZ@e0sW38mJD+52My1>Axt&tCPKmbD|nX?_n$jOI=kE{kpe`6 zv^Q!Nak63%#ES~De)kT9)5rm)cDI1(W5~47)0mF^^%OuXtFcQ}gE)9eNmq1M;?*22QH`D)TC4Es4)$k6ugsbjJpiutsN0+q#x+?nl)w zW;S_-r>(6@K}0_;0c<;KIYnFKe$p`uR>n8aoH$xv&eTlm(7%5NMQJME zjkDLcd?`pcYp2bz{(EV8uAjyG(YjPpYp1Vo;-b#-ezY*|%_=P?Ze?qaxVLn|Dk}Pt}HZvPBD4k zCDEDkTTL0k-Z~QvM7yq|h5M*B@t4^xZ=90!pMcXfNLddN-Vb^~-0RU;;2@kXr*3HRm9CQ1Z zjHetk&R{Ug>(G0wC%d)Bb)3i>dzaxJ>o^gm0|mwsb5Ysmv({Y`XKm9?Svi4I67qM& zrj+Dj`2hP~OW)r9g}DHY$fQZqRC!QBqfB|woXLQGekeZtW=FsAZV$pZP_ z0L|U0%>4?n4yoiMTk^!BlVy!253ba{c2FHUZkqL`O;CdMzx;D9p2CNPA*8SRWVg&( z9{(kC7u^`LEp2&M7KFRnWwVy^RSrCpz-r!0Ej1-^FskvF7tw~Q$C-0t;g6iD{tC@l zys8ToQ66XZ(!0D*scEjfmyQ?83fZ=3Uf1E}{>`&2D;JHVz)@s!NvDjE@g+pT>=W+} zDRnWqszP?U%MD=bFVh&QU#5u`<63Ep6hmxNQQ~QesW|Opx>bHUgzzMFn55rZnDLx^ zn~E|O&Ki9z3&E#^8^lAG9SV!oVpl*p7J+~nbEl7I^g z?B&la4|iW(o$+kVgIjh@|1AX0kP{tjmjyXdy;+@FrWAZKLoqbBd5&KoYVOKED86Eg z^g-iF5?%u;i6I44T7CE^aWPd?N{`Dah0RPuD@)q&F?dKkf7KpMx#vU!Rgxg@LE*7B zcp=MENfZ0e1K#&WJ$Z6KHk)h$x4Lo~kW2;ccZ{a6tYMw`fbb?PD^C6OR0tm?_1AqX zA9!)PXuT#+%g8VI%}E~_5}NC@Y#o443?|ClD)_VejzB@#|5jFV6j#`R=i#Bk9L43` z)9HXU4G8&sHrkFsxD1n4S6}KDm$r8ng0Lo$`zYuI$g&{d(72xaj3(9EH%oj zsN{xrmdWwKO!A3#zftt>jJ29Q4tPd4Nl-&V$g?x=-qj3Q3TGS26SW$IUg@bGql``a zguA7CKMM1H6kgrV1Cr$Qln2jWt>=~A8)DsqFRyPh>ga;?EoTg__x0Jymh!>(`i@@m z^*Q@Skg{9vV|rv~5t*HXK0R5Mr7vfi_>!THuQ|;23Lo;S0T{C7QIy!~|%zI`I z#STPta4rX8Chol15$ZAhuK~&UIk(0W1l$_`%@up+fTHoaC8>pk_O961S6@a?C@3`F zn668o*1zkevcz^DW}Et9saD~aOut#0)WmK}do?RvePGWo%PQHn=;f?A+b+z{+WwLz z?wbNvmO81T5cf5GmmC@o}17#^VMIQ`Ii#GQnNy2XNP~EK-RAg5t(IMdzIVHcMx9XWkD; zhG?#Cm0qec+ac$Ovx28pPGrK8k{h-2Wn6{&0>v&+&dZxOE6yqm%*%_3?bi_!G772M z80pbM(gO4%F!)op8qv2xOkEMd-jsxhzUGX4WMf(${U`kM!sjGpl~PARUbPl`b?L8< zQX{Nll5lkD$m2Sy-Z}F#6nX{^2T=r-gynC=TzISO= zR)62>!%hQT20l1>VdLSl3G14;*!_=(!PV`ZvVOwb+%)2mx9fusE_zfK%>7EJ8z{P5}RTYlT~ zyGwxm=brWB`lPNq7t>(jY{R4v7Pvg}>=VABre0Oe#tk(yOrz`!d;DkqbI`y?uPDms zdamhV9b%1}*FG{pG5@T5Y1;Qud3nQn10OZ0s94Zc`)Tl_4O@S6s~^{R($L@g4Zki#QyZ}Kf=zs{xPFTs}$klk9bTq0N};R z$hH4$pgd^9xCcwH5!%AbC}XhuWtibS{L2l7*IJ!ok4wQ#@veeFbL%T#TQ;(+H%A=_ zxJE&^@&jYGF0vL;7YB*Cmj>V^_uO%}#HSO4&YJ3}9QAb&zDD7{0hF+$lU)`xl=FK^ zx*)C(*LP2J93!rA65N+`l2WF+7!ryBh44jIhe(k&9;C}1e@SZ(rEIW{Y1*f2TPSaF{X9yDfYIG%U7p&R)ZEg`onFByX@GS6Z4$U;SG3ZbW>X{D?J71oq8 zaO^i`(XP#~XD@~|3MluQcwCX5j?Mc}z9HjpYCjKBxJCw2p#}Iqm$0q!NE&?P;+Fbf_g2p2u@b3evB_b*eWim*Fk5nmdI-h!RFOjx`Hl?5J zES=O4-sr*p4v?*+@`yU_l}M6+uS56{h!n*2j1x8v9ks8czZ4jN`!gyVvg8Fw5~LlH z0VKdtT&Rjmu2QN4@3mZ4S#vs~R1WM+iu=`0TixEHfK~_Y0BA%4QM2amxaT_EayFnM2fVJ z*PM>9%s8qK&D1|Sh;0KV223YHVCIzZ7@ePL4zmvElX4}k?TXjF* zdx(9ls)w-Ed4DCraWHV^5mb9%5}Z~uK~ekn--vg5TJHl<*`NlZvT>t%Sq{Yzb^cZ1 zrgL7J{lNsO#D4olMpLM5X_#JgS03(k>6ru^cz{j}hH;lNcXjLl1dHk`f}tZv_GL)d z{r)*dB6d=4g7&E55v<13di!N&3j|ya6av&1q04qCg); z?A$lTwa?!TFvE)k&x}D;6b|7TubWgcaFyKA=OzW~>OlToCV>Y*UpGz+9s;9A z-l+6?gH8tG>?Ukxa+Zm&^P!^1mnt&JQETq~2#yVG#eM}7e|e45k9b(|1_Ixbm`iq` z4O=0(SRRC%@Hgwf1^;RB%tFXp4+*Q#_E79ceAr<6T^OU7cS#PUpJnQ?RgzStOBM;J z)TQ(2ZDz5@!trQ#qlc~9>OvK>7aC^iE1(L!61T;a?y`OmzWCZ07*mwa9Pen&30D9G zW%{&BFN`pK|2j6h0Man%b(Pmsvs};sSZWHLkNZ9@s%S~d!x;DbW5{)iHB-<>1#+pl zBk3w)KS*cCtAs2Xse}6IE0r3LRr^Og8;L_}2{v||C=Qg1e~iHowK|2Q7jdhpTrs{< zqhwWz>pB@)$sgmluT$LZvZc*`m^~-hII?VLNHnT9qfkh`q;iWf`YKuTFO3xZ#Q)mJ zFh!dzy}@QljRGk114Rq3jgg7MqTt<5x?N|(MG-%Wyt}eEGY2p%{6O!igq5eL@xl`H zB;PG--HXXA_j6*2(a9<=WY|qVgy>Xqh~83~{81ziXWSG|3S%@U7L?$DVWul%$bcs# zcI$3moO<9JT5EY`JVR>BFeT&TmyJ4EOw13u4yE=E8VUH1!o!S?UHB7gi40+~{*o);vi? z5g``(BB_5Od#C5ZH=VVf+hko6ue<$h+6IO;1vPf)mn_geJ6FA*^PRw|Gefv;t#nUX*O%Ek3$ZDV1=zPTV9whK3hc|%a+ zL}V!wWL)TuPJs0pkyI~(j$W$Od!j5Tr1= z7aQICLmx>ZhC)LBkzJ`){GMr*<^5yL#cv=!V5J@8x&TE$*-Etp39H|3#?EN0qgqX--eq(#)u(dU8zTr19Tv(c-+%vE)_XXL%!F?+24^U5Fi zl$B7k+Q|*!>V1kh^1i-}C8)Q7p!C4Ya~p-bCivI4 z^DY|qETiSF4tROkxmFlGaXG55M>*j=S3hI$B^Ma2%jr7TBZsC}bSi${JJ*D9KGHPz1lP}+z1l%-z#1}&s02xV@$gYYh8NU2<1PE@3oYPc^+2Z?J!{52 zYc^V##?|-Ky=(M$nK{?n=;jdVVSm1v!#xM}=STxHe3`w}TB1AZ8Pt!3>iD?g6Z0!N zo%;OHp=N+>-O!`a^o6lzHt&2Q9AjE=u}7bC0j4{m*FM~EXIu$s%@VQ{TDCiUDnqA{c)rXebEm?f)vA{3|ooa%THQPk}dP|jCqnL+x zETwk6M^kFIe9Nrs^``yt zK+|zFcZ&z7mSRrNs{IZB(xRgWFL&(Fq4iWs3LMz)b|INgf>X3!VuzptgJJUGIJU8p z2eIcxKwLfsgT3uPT!v)96;TC1J8_>neDkjDKZ}p!$1nO$1&+V&A68bvA~2e*?sbgn ztnqW&{a$(DJey4_M$T1v`mzI~xQS{4IF%2Rfsc9BJ&lL4Y!o^6N#J*9!@dw7M=WBZri~1SDmSilqF28rh$?cS%$9ujre{0(zXuH7>9@=WA>ZrwW z$Mjz!LR;yz5(<9joMT{z3r80fwMuQ3GrFu*aek}J{8ssS$6q8vA|XzzPWr9AY<@-I z3mqdt-b^SJ`FJn{N=4bviUHZ)X!y}VXMaSmOCFJ2!D!*{UDym&^eCRLf6Cyp$pL_e zjMdQ>u>lvz8RgB;!&FS@)vj?*j8CGty(P%I#ZF!)zOL~t{YSh*VxkyOGNy5qPB)o_ z(ih@rm1%=h?U!+6GF=`g?|}s`C&t^djn3H{l@a446)~xIS=h2~fw5^KDR3~;L7Q32 zk{dYm&*J+rS2}Ta!3V2X|(y;20dDt+`)rTGuDOf-u21)jS1VVPTWblTle! zQWTZVh!;zWfKJRI`%oE>D&F*&`a&wA`f_S3U&2lG3cuSr&Q+1OS8aY4`>*HkWmH$i-Ov7 zyLs#~IK0$e%D>{Ze1sf%EsuL@oXhwbAD$s;;!$GRjoe1Rify5`VxcZVOM#(y% z=aA5(c#XFu!l5aZeCf!SEKjSo8V$QVXZt|hb!G3DG}BT<%ih12sq8>?gPIuatr)TV zoRV#~R^^0jgUGq_2jUqzov$btH)*E`(Y=6$lIIjE8oH`=ITCbuyo)LfFMJ?UOEhAE zBJ%m$Z*nas=TFklW9RehE&>*?FvXgwRudZ7tF~&m(RKR8ZphIX-qI#VUw&YdT2SrE zx2L%db<%}4AL6%G+lvi`Mg0~(2+IFZ8WRhcYb86nJ@XI0o1=4T63W1ZIWEV#hxnol zr~pUa`w%js_}%xb13xW*jHuBo$&Co>116DE2z{;VD%h8~Q)sj}O)10hBfzq%vzhu0 z?o|iA_aPs01Hn^)5Kz0uR-ffSV-<>L9wshjBMXOQ5>XP{Ne;Qa9(?l-E{nwJ%p+ln;Dk9dmb+OgUXM+x z?mNXJz$xQ$;8r_lzr!F_awI(4*)FO+CB_CO&?j9L1E0SKcFeycaV=%H40o^be&835 zxL?{kOHC>Jf6glJPRUdXJ)61E%Y(|x|7Heapx)*m+>5_BdF*a_!aDq)niBl$SG zB0tX2kJ`RY)J~=z;M?WAkesq*8E`k-fhT{{uLW1PdfW7eIW_>F`nvy7j*d`7jO+f= zPhmmu*e$IhGy zq+i4dMCJ7fxK{_k_7Yov?572`1DXiKSz2!px&Mnuz$pOOrSWcJJGWOrh4Le%3LtEw zN1(TSojvm_UB`C&;b|4OE9hliV7svJJD8#U1HxV%s!B>95gI90s z+(c}Ws$l2z8DjtJSjj;+K6Tdv+bP_I(zHL~b)i_Ht`LFfp86*! z_0ds8qB<&&K-MWzATg08D-zqQlY$OH7MeT{T2L&|SD-(1dtlJ;Zu z9!t9jsZGS?j5``EhVyPed0w#Xyc7TP_wynT)ZLFs-Xf0~Y|ZPV*Oh?+Q|B#{&Zdy1 zvNAm33FFUXINy%#9&2B7+DK7M=0&6Z;K=_YZwZz{ncG6XsK)RGyF6ui4NVlQ0UG4# zW8hMRXuKcy0u0W&cS!(t!>IqE|2f>Qu0rM;2W@2C?ca*Nobh;9jZPz)73Mf_tj?gm zeaA$L>XFC0qV;!q;th_eH)xT5<}K?xF%0~FZ*swyvEq09528{}O+)Ve(S_0hewqbIbZ(rerIa+D^_RErP@#3724pj*jI#YymD za`KScl$Lt_826YV5f074$lD6eFHoxN$f3bG+B0M*L=fcR^4GmXyNc;eq=s6b4MKOn zflU3aX3~TWw|9i*zh&AIdil+ZJvE6NVo9o;6!g`VTVqqczG9b~bgZO)?ula=E>Dz9 zQX@D}g9P3`>@P z;j_UD$BLlHTSsgJt-AXS$O&aS^|D-EHTLIYo3D)M|D)!ga!PFYiH(~vE6n0H zSvNMBKS}%R4!mc5;=raOHtFlS=I{?0Z@e#iKdv}adq8#3L4(eReKMc!u+83^XBLW55aYjE*4ZHlu4#`QUR->Dv&0>kSQX!qN3l9JNl$)Gq@bUzoRf;G`RQ z%TAW*k`R`r#PA(W2qa|X^M&o>U#;N^M8q zuRXeEOXkIlYwy~6;(G0Yy&LNe0F;WVhEFBzsJ~7#$b3C$o3Fe=qIv~sP`zz(E3O#4 zg)25baYgUXpSZ$WdqwIyf4QRmmvzsWd2Fn0SRE%l^QG4MJ?stOQPlftAM%)2{*A4# z!fsBqo#&J|BwQuYqObG znD$j&gEn2T-R0Q-Wc)G>t-E*Q>~k6O)LqtWDSc8HrhR35c#Ax6Ds|)bS?(3J8UY!X zSDdC)aeVr<7A>Gt5e8FzCL$Kf|@4XV4=vgiJHw%cE}%hlC0Z!W_B zo(8#B6YiL;rJ}dj9kac{>?aQR)@0}hfG*cbJM`yI+wQDZr~=P@`YZim9_?Z~f=Urw z_F-+xx*RR5nZ+(#o2@yeVE3LZAPkg!ZP5ik(u>)%klWZ%gc+Oke9=y(%E|dAgv>R~Z-Y*%tbRavkCnqcFYp_8wkXswp$&N%Hyu2ss z9A(lU_AuDo2GA?-_vrgXw%=`LVK!CJES9K z@Us4KO7XnMy06Mtf4B*F4lpk>2W~s>!hQ_S=J~Vwu!j} zK00b|s#i1QB`1AzWvAKobf0;-aLRRX1fQfT@7e?-;ugWiU(;@>v`O;usRh=gWNuWX zB4B|9My_R3q!Z{$0+QYdMBt8&<+)druq~4#NGz2C(%+sYrK^ zzFmh)@wesO$X)z6o6xI#m95W#B5susM>uRw?D-g#e3RptnM2kFpa_-vO>YPvHg;Z{ zq}NKZulqklo^EVEp{R7LrX~p;QJu*ig^a%r>jl_;;HvXtb1ybu+vG&Rz7ax%EI9dd?5z+&`DJK84?lZSC*9hH;Y*>0;?gz0%pf&AHgDSDku&H>)fJ zRtxdk`kH%(S=Qz5_|E1ix}LXiBrXODd(6-0uK}qS9yndK;KP#p5rtHh4#CR!zOX3ztzK5E1w+z1QsT3{FH+D4}FxVegDkFaAgF9HZZRxt)wf+Y#@o-P%l( ziZN}!r&PE+qbL@o*7kcFKSCWwY{z$k5tErB?khI5JHBH_tb6kCqVDeul}E;dgGVig zyB}K$U((5LL{7OMghn6LD!Mc??t}fgvD-R-mRq7e($&Wt^|60j+NZgzw{7?$x6L_G zWeW#s4woO!fvf$c3f77rv;(-9Jrgc3G4u5$3lOExw3iuIeqmnwSt~YtlnW~Jqueda zR3@yp`x8VbzX^I%UbSf-;*+=rW(|^Lf^9!oKZ4AL%_bP?ZW;o7?;h&b$ZV`XLUNk@ z-pUn68<5Mklt^J|=yaX(FC>V3n=AC#f&`G;&#%Q$gQTtPoKvcmHGR+k1btdAo1utX#Eb{qp-%Cn9n(^#cYFtwQn;!u8Ih4aX2#sUmkUXkq1Vh9 z_l9|bp8DfQicu&5#Q>zka$!q!O04ThkxS9IQ%}Kz2Y0q1kD!s!%;ec?p?>0u zTq9-s^1k|)3@RvNNL~je$mo#26iEIkwUnePD++U&Rpz>cU23!y0Nt)u;30Mk6)Rk1 zSH&t-?kS>(cTXK!%Qg@?xwiYqtMY^?`5J7NXtP%myomQ+YWriw-{x61sFam#VsCbLx5VVJr>+jYTvcPm08$1Ry*LJ4(!%8WQD^xP?*+VGDpvOry4h>NR$Eb6fFx~t@B5;^z1 z!|0bYZ{6yc=WvBP%OpRZ4;!#tD}CVJ@3tvV{N=qa;^!n3r8EcL8CVl^{o`P9k5?O7 z5C5nX)<0?0wBE=uhVgU$#8B#hf?oJD(!=xig_3A&zT_00N1!tn9}ml`_*W%}DPWOb zrooQ8J1J$g+3%|V8|Gj1?2vzG)m-17BcjQ=#xpM2H;&0GNgX?8)QkCP*`w2o^%8C3 z?%w%)9;^52yh!88;rRp9N2<|1HVk@V-aVg>;0H zqz#6kajlL`7Ak#N+@bbP%F7B{ItU5bADu5J=8f@_f^BKJ_-dA5BecVtx1v zN)F->uBL}(Szcr^$y%P^JACYS%SJjPGs@j9GlOLqN z*7*hA*S8>#oXt1QRkf?(ztmCEV&~-jOHIo~KiwO_2uTki@&AW#IxPK9X*4a$BiNJ% zFsHza29csGT_?Eq^7zPnQ0k;f=ruCMP;_5`sHG1@)c8m>?wt9Ar~#-@3*n`O=FhG| zsI^q-dI)wDQlOP{Z6Kpwu)hRLhFpVGZF#uYYT;EgFSf7VU@TrvoI7~q+xFF0=9NeE z;tb*_;24cKd!&ES3Jb1D;j!DF}xS;Ra&E@nqpKvXH-7jpgHfv$Aau$I~Y( zdOY)MdOpd}oEJKYny`%~^ZMVg+U2jjxw%We`<*^*kapV!CSs%1 z1*r28rH>CiwCs95F8Lr&dXz=v57J>Vk>qUOmo6+Mc?;j^;|vzgd6%(Gprm1`Xw}dqF&|@b ze*4s4W;rG9sE}z138MCZ@VjJ59M9i=Oq;)?Dfcy}`X+De&vFg*ef8A8 zW2wXS)f>ZScM^K?*w34rV~DcGO3f`6+E{bVEPT-QdKcxjYdiD}PN5jU2ep z=wJ6$q}BVLKnh%%tGR12zoVj<-m%cIz_sV?&}8HN6&Rv7!zOm!eRxTyQuES&3DTC( z2zU3^QPo%jM%RcL>|<@ueaFae#LSh_m&p}d*KgJrc*u#R=5sgH#;a9BGCud-pfjmyf>{4#w})$?|3nefdXx)d$ua+i%s& zuiFh0AaKridSQGFOgIjQ17!5UwY~uXz|EFgHl0AYYKOOx?MI-7KisssX}!1m7O@g~ zbYGAx)pKvP3iLldkl6)|d~40(CXD{4MWPTG6)GQeXFP~-T7D=V&d|xpqt%`jd?2=W z4Jz!|%HR$i;@)wD(?a>K>F?yo%4hQb{1vtK*{>o&^qwp~Yrh@rhPt}7BDZaAoVl$s zIou`LX`L%4vfj|G@~6HW6E_h`R$Gtug;I=7UVoK?0H4QMT6n;k58Fq&^=#Vo2*p9z z7~2xlK-d)Q2Lmm+)SYz@Yt6$t_BKt5R@JT@u1J(4R_zkOK_b9y9r_!2EPh+PuegzSJ4m8yzXlh9PG>`ub{02IVV;0+aj&G{0?MHFDrS*Ipv=H^M+vKDo@w zUV#-tUl#=H;0m=0VeS|5BGMDwO#MdP+RNqxOZ(q#lzCVZB6wM+yDnjNxS{vp~f!EcVUw$N0apkjENdG~)=G{)uc3|j(lz~QR z#^L#``hYb%FbrvyyTG*A!D01-Q{4#L(w4z5a4V1dq|6F~H!L!)rd@*>qt5p?r&|}7 z%O=3DNXcw&K0cisR2j<)0Bp5Jj~+T4j{e$fTdDIzBVl-{?rvtwLB-|cYFzxJ5d#+1 z(^L@(3J@wtH$F&<5bk1p3qMf&mA2KS$&@c>-^A6JU}~qU9~iz)zU*#o@^NI<71Gdn zuaz$9?mg16_wqh+m9zEDef+x>Sd^1e_@xootV#pabRnsN+KYk@N;xGgFtEH5O4!2QO{dt zK;&P~CrW#$^yt{4IYX~Myz*9vF_QhUY5Hzo^YYi;d!4fC4qH=%2uK=NGs|~H3PnFo zTU$OHyk4tFE0#XB1YJ!3OS$w{`$3wX+^iE!>8>U{_eJ>@^_&cqtzax#laB&flfPJf z)IlybnS@V>*)`WLnk2nQW}NRM>?gS4hvev)|A0~`NYzFIBFl#8M7Vpkk_45s1|qZK z(cnvCe($UOro1sygP6q#%&OAOM8S11D>EI-VF2xA^JHIOuo)3(5|x8bHh!Msb-I%d zlv!-2*@bi$R+$bEDEf_^2AuDDJ=(S39@>vw!^JASCncW9JW`pY6nhFvBZK_Q+30Zc z(m%;3dUcQqAD?cudlMLsv}nUKv`8w8284aH$wrY!K-U(m^@np$Yot?R@84~fB!1uI zl7vj>H1lhtXekL*i^hYFJ(W*2-BbCX%Kbp8vi}vqX?H^~VCy2a%YO71*@*uZ|U@9?<~4{gr9n#2~9E&%QOg)zVcc5>B^+Kbz4X(>Xi}TSXCffy;ko)I)d7klhtfqZtzTi z7Yw&_y@J{wml^bFgF*nA-k@Oo$f{=&N!lEeQ&-4d5Zxf=)GWI2lM}h4flQ_GO~A7A zm!v!a(pJ#tZ(Is=U_TS`P|A*nnaaCB_;9^>JN!Ehy(B4FdaC)tLUo{9l4uN^&%S8plW~@>jqY)l zn+~(%tjUo|Q^qzzAybaMN5MgdkZ!!YVSw|$lFpBQagtJ(Y)Cj~UBi?f@FN7T%iaFT z-4(fd{JK0T!QnfCNssMA%mu{D3kyDsz|>T|xs~nh!Y&2Ni_xD;J8$1>`9|ANVdl5l zOepkk0pN362-;3Pg_lXJd7m!`+WsxRO7JUx(vl<5D>S2hr^A-{?4D`nR{vH8XO*jc z#on=h%z#19=XNaLx8&5FHoe;Qoh55Sl@~Ib6!BjvV@%0^DkuR?Jav%9cQ_-U@4!I&-UVnReg5Q;Jro)(j&`LMjbv4 z_d1wivOD^cWar)v>N(M?%rPjt6tky%g@xoqI8Pw)aCHjmbEKng3m_Tos|e0VY^24- zLFcDUI{f~be27EABet4)63%DNXf_9(!b;k=Nr%wzWo$?-6(A-A!L5X6!hw^b3 zougtW5tX|Nq+ia3(^6oxMn!xqR zGw#O51EJ$&(5DsRk! zv#0?`xM_LV5G)mEgXXIM<~OSuhLROnW1jgOAf`rGON&@aU=nI=HKJxc9QioRWz_%*|BvbtK~_d3+?4zQx8zgzUU3 z3{Gw;LDa>ah;#K!B=q;VAT*+=t@(#0TksB~0Y{b)t$6WBg$|_h&VFk!c2N=`3)p%W zj^#nJ*q#iu<&iOW8u?FgSxzE%IKh<_)|#f~NAW2!TKPC`^>#ExmQ=|bc{uY^=ajtl zBe{oBCg&ATf2y)-Z1=;%1M8yVN)XsNfVveJ<;?BK3J~lvK+HR_7yQ^op!!JQx?Vt# zV19cDA>-p8`Zz`<^>&@z44ra5U7OYyQ&etQgss8?iRN1!M!JeDxpcLOjVMr;YKH?Z za)49xzY6ABvWw}V>|!sIP4C|9t~QuaWx5>N?!2oAZw(E%ka%bN2-bv_lv%M(Bm@1! z#=Boa7Lf$+Sjq@hdSoi_|9Q`Gorf`6asU$7&v`e`+D8&yeKnUtr9zsBHQ5rb7ux)4 zuH=%4JD~ho?KcP~zAX{BGx+Hi+HdUtznE}+nET8@1TI^Ss|b}VSSaN#TZUkCFNpH% zkbs*>3MTuR2|ag6&?h~yS8=J$jk?`kn~S`C|L^g5*dtI*gG;b8Xoy zlKG>YuF_YsKV29BW%1f#FKT(86ts-BLuM!=8cL_hN7V- zJw)AMJ4-VUrq~Z26e1B}Xq}7HkwW@*w0!832z$^y(Q(YUP*pp4LDa=t1s_KirHvEs z8AjX^I-3<<6l8mH=>2h=wc`azw5d>4X6d!lmX1x%bfXUty?~}H4e~TL?S7i=fKLGa z_Sneo1?2TEP;QQP7T~VAbdKB^e&vG>nd&PGIOUX=S)c7j&{!NlQdVeAY>H>F@J=Vh zEo{(kXVZ|JaZ(AGGG1y`kQ5AT$Ab>GSEac=c#hb)=%qLiDH;?XK=1y@{E!(1`AS;j zQcJCz7LD6gw84*jVzL~iEzrcY<1%G;o^QiAE;6Zu?erq@ zy{rZ1t1SK^dtWsuS=>oPXU|xNtRgmT9mxwtnYfR3pHTScC|YD_zol0qi~s}1osYm& z$GGnc3Ha$rg*sa^kV}Ta$x4^sDuDT>208||&C<#WH8;r6Rg(sjYikHo?}PA!o{2f( zBz+?nJIyO6pHiFU*ndQ0#asi)0HehG_W;o~?uiRWs|{-ct?WITkrFsJ%q`tn&ldMf zC^h#sX$&tiCrizDbz7owhr{vKPoDeBtA;3+O?lOyTb}7+mI)%s2qy#CS(IBtx=hq- z6O+sdf-|c~pET$96?Pa+?afb~yFbYKp?afhs+&#*-c^@*wKJER$5U8U6&UaNd}O1- zq}GTw2XxVvwwRKuniTbI$W#&Hdg&Kxkhg^Zfhg*NsLJLgUq=FNuk;8}4nYink0V)3 zLuv<&k zl+fi6DOvUN?U1g`t_yjZ*}w3wCK$>^Nyw zQSF_PR|Ux-^;aZUGj!pSyfjWqB9fx6%KACHHW^=ln%FFcS;|5AbOs%??`rQY_JWv| zI^UbSrz}@fx5QRU=-8ccGoxrxvZ}~iZe>T(%fc1Q*Ac1FZF%;I4O^D3(SXKpn8izv zr=V)_{=xzh;#D6hGwFO|msJeo&D)xnfQ^#cQM0G12u=AGC2=8!jRnF=J)CB6J$U*$ z_ql0S+#{^V4}F*}TssIDq+xp@+i#2p56T|EA){-?C;J)~a%B}_ z#(UjlIgn>yH0#eGb6yx8q>{t=h|w`HlK<`YWGK%Y!tSfw%Gz65wY(pNj72kw-2=SM zIpw4RWb@nHDE?xBlePDKhbyf!>xHl&wKos+L&o97@P)V{z1PHne$Fuo%Zt%#GE~fc z)zSik^8E#=w5J_VR;A4Xg>!*0e1h?@JMs>WQ%)QtiDW>eMj zf-*Vt!mHu~f=6KYdq*aCncA8(mhL#Ke@^-teEC35E>DDW;qpX}c4nzs^_41%C&}OX*;Y5Gk#KXmyl4Qu%g+e0FZ!CmrwAj-K<%H;B z!IyQJ#3Q{&i#^Dje;vtA>qeNP8c^sye(;c-a7DCcOF6gm!&%xHt#~A& zRrdhgHSqxz5$xOd4`D8DN@D4ZtT^$arOTvK=4{4NE&Ld4AFSThA@TF@q@LPBa5C_+ zpLKSH{q{nU>d=UUeiKU-9OQ4~v1y}>2iDlK7U)S?c9*EE4Zv+~&W$PKq!zs^wna~Z zWn}EhZv8LKJ#Fpd@B9^Z6ooAx`jE8%W1EFFMP7lG1fGp+(d?=fM;U)57cWw!qsRB= z1(!}tNzP#YJ&J7GERj61FUCwCgJI&f+Or)ukQcPQhdw*cOe!Su(pHr{>;jk**Z%zX zmi0>rjW9(|w7gpqZ4+R0+2x6Cx(A$(sC&lDI4eU@Y57VgKT!{dHiFga+t@my69N;8 zO#~tlmdYo4@|8#ov6-qK!k;Z_ZWRdQSlojdQbKZ5O5cXNJgq{PzPN}NOpYWi1=Z|l zMvwc^T>h#X1!$dzvKPFbVUkb7sPN=C-mFc zg<~Ownbw=XVpK`91MN8=`PjZ~(ZzK{g9n3{h>$2YFQxjnzQUo5d@P4zu<&%+k*e3J zg#}pwd5Y5=*^j7Ij#jY-G{t9v?Ffi?MarDmV<`k0AhKi^VluB)Yxv%YNNjQ>V=3fM zC&H0p@lhVz1W*Cfys7De0$h@xlNX|Ma1EnL# zy{%B{`eYzG69%Q2y%w?|#inJ)D-M>QTjEwZ*a`HG~W^*d2)u8bx9^G(ft=$mLx{4{uDQa<*u$wi0PGdl}`u_IuS5r<{`Z zgA+QVw6H)M4W=Z&$6m5%)@(0GoIH1b8K%y6@|adOWk#Xbu-df zQ|lLDO2W^-6BiNg8>@YvW>5G}^m>l$Kg5qYF%7X5SLch#nI;q&#_{sJu$Dy^AIJj4 zoh4XN5z1c^x-fAjbUFNrrm8A?fJVg>`kac5>=bc#x|w`>P_L#u9_mT??N>#CeYZ20 zeX?3UuvI!Zi&f9QKB?B;6l<4trp~bAHKj55HZLjW-szywp?ewFlWkG!A-v&8rKS*Q z7ZbtnzUHq?HI^bh#*LLQz(}D(w2`Wug|t%JRNWvpIY*hYHw{91i5?9N0Q{d)BApAZHs1_53QQ$Eo+LBLU6IA%^#%{8RJ^#v zfc!4A=wHP!+ouAACkGb+5_U7a)05u67GsiPvkFEBlj27`q#7s#*|g6|4^w3imp7rq zL+EuQ?EDtgCD%&mN%!W-$f04rcfeBAU3JngUaHMa* zst}D_E2cH+4c(omj{>?zq-;zPMq+zbYRr86fEM#J7LY^cB1E&UdQS0Zyz?7ICX7II z7PcwTebnnpi*(6PuEB*X+*Q0PL(znkP+4AGg0uo(iPn2 zdn3}_GG6N$uOveMZl(!c5Gtvn2tj~iETBAhcGLRp65UMU6{J;15_Jl?@C56Xpq0yy z(9{FNz{%`>1Aqlo(#jvtU(MBDlQ;1f5czbgB&5Pmtph|;Ray+3k}I`Xm#YHo!2Z0t zhyb34|JPl;Tx}3Ukd=b-(SN(8pCaA+{hx#eDH^@Db|!fx`3mgE(3B}Bh{ zU7YHx!SCi5C<-VRb^t6V{PdK3J| zXM>co`OZ!s*MK&ifLgZ-of(tfq?qmel1^LgdAYGilGCk}X;;?V_O_b1orqj+EnZq{ zB#2*bv}R9|9O4l!+G^c(qEKvPML&=4QKP`?x2|RY-Jak6ryk37$1W%ut8rNw%a?g>UznTjrXW%G;97@UMFRHMwRJ5nWmi#J zBY!-5zScQ&*j4wrIU|lqE3VLmjf#bkN}tjQ!A8ZcjP6Lb<>I3VWzUEc*ao)I>A9aq z0iFmi`pxMHAk22fz5y+{vga}DsHf=)DG#yT(^k+HLF3?LSA$n-r#=;I=Vbk2xb@2{ z(yFhN_n#!Wf26d?BS*i_%~7dD_DHZ}x;BD~n}owp3luU$D_vEfThUnCx~qtE23He` zM(rv1O(tK`;Jd1@C$~EDy=SV5w2JB^J!~DtNA*Ex>O7fp#=?jBujiZ9F$b^_jbUfP zjKetV&BE7et+up_D3ZCM;#;6z-hYiw^o>9ODbMnnxtscnfX-{?K@nThtv{_nJkula z6IX}3`xHYa;Zv-02*Ag%(Cq0`EDax!%mMkUS%mGcU(-5Y&ye4!>JeBxyP&d62TmA) z>X8^y&6fU{u>|V3l90n%jcJ*WWEc^D(CflWa@KV%8%uQS|8k14*Uq+%p2Jvw)Nmak zv`>6X61O8Z;)p!A1;cyr77)Tw)qZ0`&sLMYJ-?dl?LluG*xc25rDT!Q+r>e_T_*PI zy*sk_rKmGKCT@?)>^1S#HZ%mPbq%kh<}py*4pA= zXhI2%X?cr_CZ+e03AC?6af_$fDwk^Rt9^YZW=G+(zTkys~<<5w>*Ib(}ZzRzXKhLjZfT~WY8wP<%Z`Iib;?i5^zWH1WEU2y?Z~l zSmbbKl#R3K%1)K1vb_NdKG&%xg}t3ZqyU*wYyIrH!$%{c-+toxPrNC1Q%14Y9%$1u z|NaPkrso}WR}!;oUqgRm@!lM4h{Ny0D5Iw|Gl`%aRUav5tlbx{53n|lArE72Zqc-2 zTZMMa>=%<&a|OD#=DC~xnu-Jzs297It+Z%l;UFdCs+Sw3temS!h^Sf*xtV6}PyrS8 z@MI>sS*f(IijGyHRIpv0sfpyHqy3SCek`0*&T%rK9u)Vmddua0t19uXROj z_T1$AnziR92-cgf!CNM$ygBB;oZ^cQ?(~C>1@-#RzPlF`12;?6;t)D$h*+bJAPZaK zXiAQhkFPW*5y4g;ct^1LWu=0Svy;O5ud~S)_RfTuXp{4Gm24r7ipKpIZ}z4$wEP6$ ze#w2!k6wfFN~oB>jA2xDbBg`+b3J1_<7&UZvKYKUgOJvRwmRI0Qh;M%VRzE_wq-FB zGg}g1a13IEN6-x2j3Z_xmM9LtG76WYMPBdyO*f63vDN1yfWnCEi?e9uhBPR&QQqwC zuEEE~re<3rj-J+q!rVpmJz}e#fRuSg&?W`aJpYth30yRriuKC;d_V_>#%kLS8R~Q^ zPQv%;RdgCDX z7k#xMVl7miyT)zN$^5Bn@Jq4Hy`p9acES09HP4cpUQnYJ24%OW93Q$|d6Lc#)YO<7 zMu2hWZ{fd`R!P>;=D5sT#d@y=tIRhRi*bWyD^9V52gS+8ll8`THM%>E$1J|DjX4>= z`sx~%=y|`m#e+M^;G)rk^H(O;Sk4c>{m_ZTn#Iu4v%AO0(=ny@Q>g3LHWm>OxD6t# z^6B^M^!3u95i#kv39+8Mz%0a+lixPS-S4N#frFL;L^GPj?QWXrKZtD=DWJL`xn(N8 zoqD|)8G=m8fMaVZshtCRvdYP5b(u874yse!!Q$l>@=<;5WdnRD1sosm=1WMP_zR%4 z17kc-SpE;DevZ~M^~*|X>pwzDOFG%7vHIZ(=tNK_!8{%j7@A1jRs~bs+JH+T(3Tu= zJ2Ua*X}rz-ACebxGVs$SojMsYF67Nk$z)3PDMLTboD`Bfg50|`@&1D_`;np6Bl<2u z9Z7RRR&-;_&2|{Hh@bhno{YKwAXp=0R7)QEHiI}0FOM*iwj0HHOT*olb$Zc(_E8Yl zVC}nvAYCVgosi2Qkm$+D8{T@nLsa}X#K5IgJ5`y_u>dsjc>JG#wF{(K) zZRu-nU3l|~Dr&l{(^Us7Qt21j4L*u*)z_M@GP+YAF6tRfO1K(d_7_14vL&pDY<-(k zrsVQYv-iDveRG`G5ELpkU!DLCR=McjEjd=UP<=i0N6J=i&oj0-P)Na}$pP2)D7WBX zGCl?bP+D49i|aZ$%KK8GRbg>h%v-1e5D$*bem?2DVqg8uDYO?Gpuc%%ci#L~4R5~C zS6f-vc1083R}r(;suVcE!*%^7Qi9{-WabM>CO_>md97VVC)y+uzv*l4 z64ADq^HxQ0Na&_Z8IGz`g9IMP#;qxu2BUSW(WMp0SovVwgpAm?EfTgsJxF}{i;m*% z7to9d!;_@>k`h8sZX3393nieotB-QOM0sgF*&Lbzd_yzF>l+Qp=&S5+eaYBrkh%Ae z%oq(K4k}~HcqZ|b@n1w>cO88$47OkxT~)rDy;)yqcQQhJ|>T%7>j%AMCwHy+Dw7+6$$g zrWM1Mdz&`D037Rs7tVx8qStGN7G@RAEN>9(qyMnRNJ5>w%G;VIIk0H_+bWr`!_YG? zXghg43of-8dmc~^?sAEq>huc~xu2M4yw|nbi45sJFU~ISKI6x()zf<({JLxP{vJ#2 zbgj1Uv1DG?>WJ>e4MMADdDN!&saL!ZtX^7Oxpl;Bm0LY>BsWmhZ|b+x>TY)ihH|&W zFS*+*;0&dV!1a0At*999kbXpq>h`yO>tKfb0=w%YO64C;rahGW_Z=idtHJw%j! zuruyN?fq}Q&4d&eOu;Zm$-exLMUml@BqkU$&)K(844sO?7d~YuZ{fN%CdfR9Ju!ZL zKm1A^hRP%4Yvftm%>htsALzLXKPsi)B)6rGUy)=Cfu-{pWozJJayLDri25xVJ9h%l zMI~wPp}jL3!xi>Iy!y8fyP)wG0+B}Y;M$JxdK0<<_cyg99{sgrhiD6!&x+Ykm5SBo zvm&~0nE-`Z8rOAQ{a|Bj^P+x5J+%47~l!h0=UgykxEhxj6l@Bp900S z^kQ;x;by@}SPzIm6BJ$4SSYd%##Pp(If;5V> zDS!A00Lp$pMLf){UbTFyDv`7uQL_a0VTi6pgxf@gR%fJmc6+yTXti&zB^BMO(|TT- z-K}~zVT?$bXVp;i@ z@$r#At*OjzaJK4ci<%J2%6qJfi;P)YnSBG=Xlc9LXaAz{a1AsvJh;8bO($ zaD6%~D<2SD8hK-5Wwr;L;=hMi^!P3|vV9etiIl-RHXagEpFQe1v1K8u(aXvo?LLoR3jgq)JLSTXwIMk>O&`uA&*A*ccGYk;G}CsHqFJOm$xaA(UE3c9t{BJ z<80gjGm4lJ1v{QAAq&5Q;|u>H^uhYjOZfp*cSsZz+pCVP<`?DroDrtXP_&Qkm7xk09BDBA>*9;y(BAtIuY1?Kh0%L(YDbVq*u@{h73ZLU%scW+$H` zyMo?Yt(dLFM%P85V9p?YyN6oQ>r+bm)s|{|15jzNkG?;mL}&?!CcoG9r!}M)#H=Nx z{QheMlWuH8xwWrKQ1vu%oeWt80qXCoi8U`@2a8b2irWK2yRF*UIrN*=iz~WK-GkSp z_Qh5iz+R3nS({Nhnsn#?`(jcy{(q;~?r#GE{r9FGUU~5yt-X3yx7-=E=xmha!%xrI z-!>E+6dvG>b4%(Nf~g6}ms$ShK|e)e4`zotH;8vMl3J1m3Z+B^-`l3Ac z%;8!0kA+W!@=rq92zYbz+v+v`9dIXIv+KnFDQ-L8L zd%2{Q;&yGWf;(86>r)PQ2fri-q&o%onVD&m;XA|Kmj`dP2RD6Wj0`5pOh=z9Xh?w^ zFO$*LCEVTci7EpS9X`7}0&_0AsjE*>{dP-M(=^xe?BkKp6lRC<8|3|Zp$+wR&qSJd zhwZ%9e08EvQPUcE`tOyfPqMrgS(X+ORVygmzE%_VrhQmyKUd11iJYw|fA2NZ%O|&t zrE@mE!(I5NwHYFOiY!2ZUu<+MO7&ha@I96v!S@JWN-f9*B_+CqbM!_JXy*56Dj~ymA*AP>vtMl}m>H~i z`v+Gn%Z5Dq2uCAzCh1Y1sxNhN!i$djTK)8sHvWlU@P%cNIF1(GanW7V40rGlw*JK4 z;)vV%9r??c({>r;w{mQQoYa?n29E1x6jH(eN2=oYFsR72A|*2UCE=I!#X2(u%l{>d zlvJv_74odM^jPo7DlSC8QRRM;UkK*l1eM!~9l#AZJWYw;qV zlGf+Fq7jVHfcl@=6Pfx=)p+Qxx~OTzJLXY72LC@I*U$m39NTS|a=2IGQti;4=7vL$ zM6T4KkL^-k?WGK7b=AAg4H@?rv%Of=Ws#4yHRUzxH8=R*ji&{zR;0SC$9!X#V(e5- zR|aOmV|OSe;%#ly55d_@O#~&Q?bY1F=j^kdASiB5Nrb8471O*@&b~8sMz0nrWr`LE zAVB%c{Kn|KW8V1S&&@Sj6e<^kzph?U9e)%6bajB0n4Q4E;W8I+bbjyH+m0^RQwgyd$K&c{%3Z- z53IhzMuHAK_4&brQh9>lr75n+7-AdjVrPR>JtYT0HB}z|DF#EUm95?E^{OIjJZ)us zWYjRE?9f=VyWjq&>MvkkI+{i;O$CiGU4ASqwNLzuNz&PWis_`Ow1v6KT1qTEw6wW# zare@$#`NPuQ`HC7O?YWt$})TZhn=q513emUkF^l#zndr|7ejeV*Ob$Sqt6|yFGXimG5J@F{g#L z`5+af;_X}A!KmA|VzLzy2uJ%H_Nv}2n=)hBnf=UNycT`RycU-VdaOfa!X5%_v3vO1 zHa`B*1kI%D?2llTBU9=BZqn6wv4U6dtK^ORUMhw1;#+&r2P!|wP^1hR+S{SFy}B}R zIrv}OJ9854ojK|MYHx?y_7+U4Yp?U}zqB`H31644jnmtURQ4&u(?m_c-KtiA0&|L< zLZ8=3Tdc2Ph}YkB`?ufPi4?mSU>e#e*3i4h0H2po?H9FO- z)}RXqUKzaclR4`<9i6|v$;;Q~_qFs(wRbWYHpF?_kIODtkmUVne;)sjTy{4r$&Dh^ zeOZ!O**i~9e9rsPKI&9^KZvN9@nwONDp|e1nIE-!&^!-Z?J}OGr{)^Ui|K^8RmKoy zE<}iXM^$TJp1+dmzyd`rmqk8(TDuf;pYYMsp9@y{E-hs*ZjPAW(snOc^Fs-*Q9BpY zmuPcQbVuE4GINrwCZZ>pe6uIpn3&ZjKvm=}I#w!w+7ZS>1FmaOkb)xsayMry{vGEj zr76&@UD&Cyo2fI`Xg-t~lp^mY)Y@=s17+b+!R#x%Sgurw3_E9)-l^UPZ4HYx97B1ojH>n-(RZ(9>Pvs zatzD>x02r+HuKvLwZB6J0F_H70l6@dxoB`D@nlMHQ?mJV_^yq~#-4@`3jxM{CxFe3OUvm-!{?TQr*N zPkoEYaA(P7ug{hNacoUN0(utM%(D{?&E`BPkjGDIy^2~MBUYZ+_QcoFN!)@~@xK0aOI%RXe|4V9v7VVC9^; zhmMx=9`Y3qF!hxRC>>@n3}aWO$8&Pws?c6DMZQla@fC63t-eN8-ySi+dxi*yq`FkT znmKTaNR1+d+#{wrQlrcK-N-DQ6s)SEC6KhCH zJ2Q3i5Qsvq&60i(tDNvy)thlsf~u2@oG&BBgEDY^389p~uFlS!%z2_$ymlb{bl~5< zexf>c!O9IgGj%Z*UBeYmYNwk*L897+d`mBi^gBI!}>#B`;{Z zK|2)^n4fnnM16#tE~WymgM`r4bSrg{yJ^Wh%^vbJwVub=o_a}MT5$E4s?RCPpq!U5 zUvpj}g+(3?5zHdnTnnC_r7b9|B8xKdBfLq*|Nmp}JENjXx^@qt8w_ZJAed1=1d-U_ zh@vz!4Je@{n~9==&;ka63W`}21qTy|ISXdTF)#`^ItEZc3?M2h1`q@l1LJ+F&S_!h zeeeBo*Sf#%H)|GFSJkPwYuBz_yPi#*xrSsd5L?>+wt%xAqSSkGA0hSJ5tPxV?}h+K z7Xtkmxiw?+5V~sUPpq0ceqCP7-UV}#2Q48_4x<6LjpGW%$)eZO7@|!>^jD$7)QpRI zq-n=oU7m$4gtix+#5ADhQaXalPn;Z4x(N5y^NAXqJf#_0w)*Vy1sq(M?f{%q=$ayj zg5<6x1YQ=WSO3*?P(TyBe4zmU@w&i>^SkU&DX;-v36pql26X7t(<2yujsso~a}4DchSH+i@Hki0CWZ;Pk^ zMt$5z`QxPlyu8uuP{HpUtCz>}@N+VHCms9O0{FSQMP|YjlC-0b0Fv}DNYZ+K0u>9Z zJ1pn!*Q$R|ZV!aRe#FYG2hyy~PA>7>oEMdJm~&1Da6ASyeHK6vSH~|>FtGi|2J>hg zj96Z?H%3d}E+8Es*D`t!7Mxp0I}LIrkxk4FVjxkvXgaxl2JLLmb9fIxmXZo zSx~Zo+wQTKx1FI)qHs{K!d#vO0;PS{Q-D0vzDI9NlM}(lG!VhYG#C)ke9xlMF>GxQ z7I5ntbV9Rmm_vfx8NdL0y8uI_&$10FL(rk{I*X!KBpJ?y5CTcWdaGCe88`*0gPu;- zFW~MJ3N`|O%3CqsG~s2sFgAW)rOoPv(;u^yQ?`!G{P^v8F`eV-@|w30l1SGyIg#4? zSa*saPwrof7w)TMKZ8wo78}CgD8`RrL1hWmOFPl(95p*sCrh#vuypX_BKFnP&eJvG zxrLHn-36xCu6{>DDP4m%ANDARmGDN)1thz&@E-(Kb_Dr3a@*D40j|w|^9c4874D#HAI~iuXz(>fV;~);fE$hg*%=bYEn( zWE1Y`T9l!vd(GPrWA)o6oRM$;iqrC>ZD)I0eaIZ%%POOhekR`z3U`0@$BQU%1*q`| z!|8-4gUxI4poWeMZnV|SdyMsVHz(t{iTS38pzAlZrjfgjeZ*VZt@*OqG9_GNFh$CscD8IyREb4l zJLq{F+Z$A2#8iZ~Ylj+KG|*=U;Fzks=4k+5pco4l}y zc`GpS$>R9oTkt>$a4Fj`g4DVNPeZ=+G8knDViU*Xz@awyBEjk#WFU`&ad}TXg3==o zL*cU=o+>xQQ#}G{$s>j{9)@@heM>BD#3tq;d27j$YWg;|jWA0%zks#@2F79(0ZSa} zDuCik&58qU&5Fxf!Dim<>}xV~a0E=csMSN!2`HhU=DlEz*LIx1M&}0DMcf!uDT4z` zlxbN-ZGkXBABNNSYB4M_e=`}C-THwMf$|XMtWtiPhVj79*;8(9#ogFqC#bw=kD=il zB;)JV>Q4LA_WqCMmlxk+6v>ynx58&C{sqJpeN3S*%Hl+Qpj;DtN&V!a99;iIoUMku9Ih`7SzVF4$eF5=( zKJAbz7EI!c*9#A3&o5`&M>ngm1Z-Ak5~$aaPJxHRw`M^AyS8Q%+^QG3UrgF z6uZn7;$)O1^NCG`qIJLL@f`91gvdE$*f%kCopE-jZJOLZg7NN znvlN(l1x^VAlDX`vsBMctk9QE@>C~pZ+=ishN<5C=;{$il2~Te|PTP_7nQg-I zER9@tf1;2MUxlQ#dF7w+;}5}L%0ZCo^`^~c1P^4aHFlPt0*W+&K^XU z{vdVW7}p%%HBE)<+^SV50AA*(UYqYTEmuAzR2o>D3xMh2d8qu)T-quDfi;Ap=MQ4Y z^Jgwh6yV^I;22U?k3&gZ7_4|H{wl5LUq?Wbo&P!lLP={h{9exlh{|M`ydxoBhWMC6 z_o0(OM>jS{-k?o8}4q@`H`GeWYM`poGBR4pZPOcCeyRgrY9Kv_u zR*$lS4C2U<7Er!R-abMh+T5!PI_7hUtHD5mWk3xIV+k#-8w~>pU;%?1P7Qivt!|O= zFrF%exGO^QSMhkQpl)?Adp}2LGwk6Tj$1wG1f?RJr|!s2(V?n)b4uO@n9z?)XkTjC z``Z&vpXiW~b)r3CnV!6O6!ob?f>UFMF9P!0ztHL_{{n&^1)_j{?l97g2q zD+_I*LufYk+i&#>OAy+(-;SNF1_JKMfCMVvLH%T+w7K)(3Y!xP@r=BNJh#-|2R1@a zL`wU#?9Ubt^4Sz(cPb5u>VzTg8zP%`3cyjxX!2@ zHXLKPYCp^0^AjG%Zd||?rFQt$s16BNekN>Dn|p-K!kwa^(^<7@c^Y~SjRHOV`t7G@ zVGMihF>pTd0i`zyZ;9kR>%iwHU7$EwkIcyj1A}Knzy^k%DY2JL2TBLMgh6W4g=?D= znhvlHH&ObPfH6aDXrh#(YSY7=GDtigU!U+HcH@rm*A5{8w{rA7%=&~esdR~f4`lC` zD|T?0CQrt(vX`x)gz@y)gZU4fjFXAbVGK z7Mc!#%}^&bO$UZ=XUmH@q_QKS(;>rM2_p|-d2(GS$wx~a_Oe;j4)3=!^f@FS@!K5| zU{cE^fQN8>W5yFYyUZo&;OK9BT}0#_?IRm9AUe_O=H55e@!Fu!Q8c~!@@~8(!OxuY>+#` zLSd-CkG;#kn^<<_+6{ThuydxXBH;*bIyv-y`ASJR@~@S0wTztwZl$1dZlxgPc9d=D z{)G6Wh7S@BA9a3=m6Cf+K5tklRcsba=tI(GI(~Gev?pBonXpCeqXPg4%2EKU*6d)2 zW0jZJIqw&;K)@mse-Y-~e9)~QjzV4~a0hUx7h;cL%UHEat{(<`*hs^SUxODI!NjO_ zaJ#Y}2he)988l16ukxQ~Vl8JHEzkPkVLLT?mq#ME4Y#vM$R_p#A@IjV9D(U!?@`|V zS-#u5AfcbX*6qMmt3LgmF!SOHCb4h6ic+FDA4f6z;`LD;h#_e&r44Yii+N|;WNevP1!$Q{eDa6d7Mr%sOj;3 zx%#(5ypEvba%R-72FdTj|27?AQ)qM$PRxl^x5>%I4dubv%pI6RiU zIfHCOsRSC?NZXcm;R}o^*|DcRSMpBmD9}&mMESaGc6vCUY;ehrvlo3K*LDU(e)gbu zOd`FW+k4vCACIGfe}2&sdr{jN|A_#|1%>=excut)kti7UcAD1VjUV?g1=>?z@?J4D zGdwa;M|$r_JUzq1trE^B>_rtkVw*1TjH*y;jIp3p#Z8MC2qdWof z9+l`Ee+ze*@!iELGm(=oPG%!SmGD-%iL3H<9Z2N7_F|E3IVblXt+$e$0>~-{Nr5nJ zZ-LYDjID`y89$1=OWm4y(GgG@&V8Wnq&=iZ6Y!Vq>`&-lx3NQ8*Lfb9zUL3Zqb$uc z+0^_C+Pe~`oX^_I{^Udr6dFKY^!O88JPXH=<7_IoM@)#F|Sn#{yyM!T(dEB$aR`+!d=JQIU&23b){F@DD!RG>^e`6*b%#=8WzMbyuG#+#>03%HOlaI>@GXQm$8G!7@Ec5g%!s( zcXvvP%4aL$_KK|quR4#U9ptire14VUW+-u<-)7;s%l^BKwiW;Znrh^6>D!bTWr>Zi z^aw4b(UIPL?P4~Lg%lDS0fV_; z0QLr|9%P`!UB$O|#Exx(oX_aQ@9UJb;-7J~35W}03;jnvQ*IFCta^DCE*;)R5nC%G zM!+-`Xm3zt6b0RrfK#xM?FgRlTgb1*aw~BQDtD31-71IlO9Clz+7nKha^RS$(m^K8iCUXzBWks@e0((=ZGk!Zh>+*H{EpCaU783pG_A4 z%O1g1hFrnE^5PI!=#VQk1@jSmh>jdw6R(>q7x=h)k=@2glMnn0Pi%#&V_f4l;{IFu1)N!xeR5Y|Tk?F!6zOJ2TQp7-7JhM?IE2fO#=D?r3Y)mvpM|^)s-|pJ(|U zo)hRmd)|D=99r58b3X-alzE+dm<`Sp8FJdj2{N$t3 z!q&(}*khGGT78G_3FASR)jlq(LRsW0raD<_OKCIj4ifHR7?Gw#B#5Hd-yNwnV1Ev=Kul5ovm*YnCMI)Z!x3ccXJAToa$zG%P_!IC{Kd#}=>V@(he0i27 z@fwGD{1!j`23(DtTnf(*vN}U<<^_X&fs3~jXlYP{!vxCLX2l|^)RTJP=n=eKcy8K1 zeqQ|N&nq2%?#dCKWPb|44XO)($mC9YB>%Z|2FnBo0;6EXHv=&NuK_H=K=~^%nZ7(E z;Lv1n&oD$DCo__V@;PWDd^_}KoS8h7ZXpkukCKNa=BLc?&gn$dyZ>2E7ee>t5Rz7_y zPsjO%5GvSWS8oriPr-`&S$d&j8cn@9EL|Pk+5P z=!{KoQdH52v(S1a(spe1ej)C!uwNZzTucBkgyB=yeA%zAm)-&nR&b4zV^*S7Q(oqac!>8dC1)Li@im8a?ufUV($ zz=}mnZZ-9w-7^V08N_0dqszg z3E)CRl-2D?sUFq)j-V%Ogt`(-01sp7AB-;~u$c$n3@{;Ekn0Cqucx1(#FP4nCb-#1bvFsEQ_C2hx09d9EmUg0sZ80xN{Q#~>E`D&Mr!VBAapWd zcs?XGOiH@bqOZ#H@$&U>43XMfBe$;tZ=#czr?-8eK-eNQu<}*pi@aSuEFJX`v8h(y z(HapxA`eUNL4oF)LhI1DS`|Ke>Fz0>6DUpPg=Dzxye1vlm;p*Y&>8%rJ{;@FB zS3gXZ?;~oHOfmkdqZxPq>RUBPhJ-nRUZDsa8Lh@M)qk`^O zqNW%b+k9(lWfh61ua~Qn*HoEI|D(R9SX`*0;v#aBpg3JwvX6c_rlgRk;^OM&;N<1w zBg^;6ByBvUqT=rB=7X|iGD1~aV(}hE#mmXl3uH1=ri+eXG*VSmyj`6=(AH@(+Vaq4 z%NP}JUkCDGw9HpH#$RX33{sM^_SN^*fuoKLM--**pB73-1` zi&ruz%PCA>ODI-Sm3nzfC0-&&>tuWDmcl|Gp?I%CCw7j}#ChrLIAJ{FR64m~3f$bB z9DRDG*Z8D5(b~$CI!V2p{G?v4?oOlA8H0~y%1+i!A5W=v!pLI*Vl<4?%{LW=`U;(V z^j0jjFz(f z5GF+>cNp_rm2qPF@dYu=aV5ceroU>zVkTO#aUFAuC(~qF_~}l}S(Tbz%zl;hAxxrT z$zbLeWtlDWNU>xRbB~ukmHEL-Udw2!G$tc+qb4(0!F&rdzmxeo##|+R5fja8T*+MI z=jt=Iis{iz4lg+Yne$zl3dKMZrddJIpLxTV&O{xuY0P?MK?<{6Ro9Z4sVdvfICYlp zWuA6Q-^0|Z6!d4_sU}Zlv^q=8nDYu!7bc(+v!A)&$v%t8=%j1Kv?(xdjGvOZlo_jB z6Ts}@C9h(FRRl@QY8CVSOwUgCdCV^5+%3%4P6fG)v8wJQCQdougBh$+62OG=OJ*@I z_)=@eQ7PA*$>68YVytG?i)7B~f5Obq*&2(m|iY$}a-$i02S zU)}rG7OwPgdt3O!!=$-zgQwf~LOrRQYSAs}_ijbMjGwGs^n85ez@lHgwht+K?A6t> zXu9`>5k9rAhXUS#Q;6i{@~_rm0&dfy8nMd^Mf5k=qp+~SIs`yWXv zdguQxxyU>KRs~lAE~FRvOt`tZ=<^cHL7HJTdZ6(YuL#PZar0+J3I+=%mQY zMMje^6c%MpUi(+k~3>7!zb-NL^o6xW8EtSUY?BQpJ3@A!8cuQ|j|{`Fe7q{n|;vq*Yu{-@%m?_t+B zZhv?E`jPEx|GHkh{qe2qMmdw8Ul--Ly|^B}Slf5n`fJo+!S zQ;)~}B|Eb=>aP!HC$ITS>-^&be`)^S_sn0}zu&z4m)-@p+kc(BG-}w*i-i}YH}#7m z!*7-sCnemhzCJ4V=Bhhxtv46FxlnTZQlm-lJHLO9Tz1Ff+vD4J_-)@y@BGqsq3uop zGfYsT*>!eFNxjE-L+| zeRN5wt!)_*Gv8hY{E-J?URF5Imjns)W> zR+H>IcRLMpFS*4r%Wn;=36zTyqBMQP`T9aVrcnVzlAf( z|MatqELZk#i!QhKzZhGd(_125>gsHdQms?M(|5Tnk&F*{o$7u@{ zD~1Q!sa6~gyx67U_n?b?D`thv7FYO&P4TVRAGUCEMMc<@sTE(sj)qjsncg;|;==TW zb1PPbFHEQ?3s+02aF}sxRmJHU^&2XRW@cws2xi^dQxQLF;lYYuBW7Q!co{MKkBZTe z3yUfeB8T0mI3C${v!XgO`%XpH?Aebi9?q_+t(YEFUsv%ws{TWTU3A;0ibc`4zEqr# zPHU^sliBg^N6Icb+)s|X=zM>5T(;}|h`DY4_lxG*h1@Tle{|7(-T1W3`?7euocm!3 zYNzktOS*OYe(b`F)%Qm(YHPk9ytw|${S%AT+V0mbPE)8HnS4~aGA6m7YUM8}{j@5h zQ>t_-ccx6~Q+YdOVgJfcDeeO+hb+0JSLwSXdvN8#C3Ys2AD1k&tduNuA6a=MwaT~h z>$0Pvm1)b>A}TAFFN~`Ew0w%Ja`X!Kxs@p^E+$keuDq36X|Q_Ap32`>A3aj}e)W`d zm0Q-Nov*yV=3+sm$6EK|%7nEGZ&a48?N?H1ns%|ga%GzPxX@=+_C=F_sYKMQ$@VuzZune|SDuP4F;xXT9!2lU;544>fl86Fzj_W9Ra4 z}Fc2pTZYCBc6?Xlg>D*LKokED26Q{)B0$nuP1LHM z{M5PU?b%QF>g23>`lrsKw5L6K3iFwvr zH%IZAzwT7kXPLUAJ3l+2+rR6x65YSmo;B!JcYo$SaCEO{4+b`vJZl={Vew2)@3z&m ziF!FU&lc*f6Fr-t-_7;ep26!Po_U)zTz^(HET`&O7t>=;pBb5YynZ&_?AYgLN6apL zdv?QYs?zfV=C`{%Z#7>ec;3^Zzs~bb7Tx+kZ?QNw?D=cUb!N|dT3sr9erVL9#^)bS}C1+)=k!#eZ+L>b)9jLuJwjsaPYTVTGwKv^N zAJw{ec+}S_ct(A%{oxtKdvRoZlyZY73TT$KKzg!({%Df7nlcW1;enQlV zSILQgUwM_3?9sWdG(-}4^{p#U@zAT=x%9S6 zo%Zr>Np%h@8#3x-tB&oi^H^=VuWrt2(=&DN*EAH=4O@Hr&${z#Z{M!_C9Qu&oh&Wq zLEVA0(GTkk)^&SUH+^0Imv!Rxe>d0ZrvI(@dUEx9iwdtZOvW?J~VY5UZY*S)f<@4l8~=hVDT$ywC&I(WxA zc2|493EUes^G(eDMcd!_9$IwZjp)eK`)^hq?f>YF>9N0GzUh^B?CYDWc^=GLi~LL4 zZ&gn8ANqFp$zv{Wb530v|9150ss3+!pXnd}cI!Ehoo`dm=j6ZL`1|PhZzo^=`}^BB zmm3V;-7ai!d)K2V$M;=KQNy%%LyM1vyz?l&J^h{Hwb60!vaj{muYY@Yk!AhJd&h+J zGw$6UUccsEj&1$Ld)-FYzrT0Mv%Y)zI>DT(j4@PgP-~Zs! zw)#5{F72ux^Kj9=`oxDh2kVbM^f*?p_$cal{fI}4PS-~~$~jk`{iy%%^+k_zF4lj3 zbg7`;^zrS&`oPDd|E%Bnc_F>U2Hnj_s7j9UcWK- zoBH)%|F-E%|LD(6B?HF%XzHW;MES!F-5-5ER1F+6=);OZcZPjX*1IG6kgWgS^}_}I zC!Qbr7?{odP-obE`G?^~p1*$BYxLyMhp|K7pZ_2+F}w32ZPy^lTn#oj0#J^cS;@%`-+sA8#Hz`p&E7J)@^JG;5E!{Gr*up>5h<`Y@91(lEw^%yu@M|%X{0MJ3F1h^6N4<$V_I-4kbmzjyH-5 za^0sLQSU!}`Vsv^;j@h_Px%$LTMFw-31Tw&bhlfxOhOUWdnA{krtX`$u0BkNv3odg560yRQ$Ay>Ixc zm>1pj)j02c^H;CD=ucl0@}_Uknh|J%LO?hSYPr@>Ee^}ZvhuQtG~5g9P{Lx@Y4F)Z;qE1zxnq2rRcZcdS9N_^ljQ7W3<0V z{V{Fecfl1i{qIY!bYJm3;?Er`zo-6bw)%VapPrfD$6U|L{$754%#QC3*9YwU-u1?h zUEhswJURUR+>JX&zF)iHdHMVMzq*%v|9107$@e9bS#c-2t;_wqIc-Mw*T=Rw-;bW#7Ixor ze%tE%JL200l?%W9_@Dp&X9WId1pa3P{;x;iA2$mBAO7eLEEHzR4@DX6yL14vE?TxO zviZ+X>m$2dpSK}W@A{{Wkt46q%Z&8C{%KQW#PxYuk;YwxMfOQueQw$d)Cw!?H>tHe zw%6$v`qF-5x55T{+wO&*?RR(I^WDCwdyA52zM!^~=!4*ty2x97kGAN5x@JGoS9Rea z(O8X8BauRnR7=sU9-$*dmwS}ii<~t>$BJHQrUr;idhQ7mt?U^ZA*$`EKSyM*T{}46?B?qI#jS~In!tWAWSs~x~FIi?cXO%f+I?kP9^oKZ~ zjwv&D&W_c0aeg|lCC)i>erl@o$#|dB&R-H!A2^>`7+2@KcTwnP=TnQz6kUu{YJ0ml zEJ+o*^jhw-&*kcx(914{Yg3C{7OXA1?$Vkje&cd|ow&v2>H3x*E*H|vbXuFzu7md%CXVfKAav>2 zzyo`BjrBaFd}^#LPruu^(34`Daj7Q@M~>4zwa01P;xlDQ$u9U@ z8#nht>R;n>E|xWnQ@vdFd7Ro`dm7!0?!>jY1>Pyscb|T@Y=V1Hx$vO-$%k<~k9jpd zojgw0=nwJe{#sx9)yc<)ydh(m%dU&q+km~K3|1osA=h0T> zbkC%(%7;BmzJ{LgbZskq;Hmp}=5x;}KWh2XBg|ZZ)K1}JA8Ah|gNafve%N&BAsyeN zK6~6wKlT~rvFx+Yuaozd_y$bzz3=;Ns#BA1z_jwOzH@@0=6e^!8|-&Jbni4j)9K}N z{Fa0pEcNrBQMAVI^$e{HzgaV_H~alHb5o9Ar&)7%`MsNEeai1-gwrKItw@7HzwMFB zZu2%L8X?9Vy-}dOao&0}`(Q@=xm|Gs=e`x;P4F8b$kDL9A;;k?EM<*4P_{S`C zs_`Gb=*3I_kBbbx_%|=MRt?yh{IN^Gvt(aEz>t*FngLbIw6+HfUR|^|VEJm^!GOc7 zo&E@zzc%d8fTL-fssifMKGp^tUl;Z@AR~QK_X%$|zOb9nC9_C8;d5q~bb|Y)^56+? ze?7fu0&j~!=7f1$eJ@RzynWN%3EQ)M>n9xAQPgLm&#q-=6K!`JjG9=w`*iBWuE({y zL=@%!suoe7zg#_H#Bm#)h%+Y#kB+c7UEv$i{p^|8h%x8RERUFVeqUaMRYjEKQK&LDsl0Ih_@t>t zSy4$E*Hn@g9d91)u=sk*E48j&TYlIN6-+Qwb`*JADp#9_Ko=KWXxioFl4^#*i&68z z5f@M)iEQq)xbIM@jZDUNEt`X@PTq6unY;tun+if$pfg0&O&>L8Y@pH9_ zomis=sv+6Z*~$TxsZ2qiE$GL&Y;2wtsWn+M9T@S{`qsWT`8ZjV6qK&b6_MYurgY7J z)s(KuWh?ksO+p2Aqg=L9A+5BeV>y96@L8Q&H}sT8usO&u*wSo`9kU5Y>2+!XIv^i3 zXf_9h5d<2H7)~V6*J%#;j%HJ52ek*X1u|QBbZq$P6KI+STayzl!im;ou0RQ5f)Ea` z423{xUqQzsP*Y}#@euSF7_bfYJ!BN^krOn=4t73i6KG6}t&Oxjkl6*NQy5IX?nGK! zPnxE|Qq6H%n+#>-n!~;@_Yj?lGl&H(C9_4d+{ux#T>ugTDnuXhhxDifxv&@}2&v@{nRR;=@;6_bbJ-L}8<|K4I0*&Q zZuMuoOa@rSETYvlvej`@B4gMu7AjE3Zloqgk?Xg;m=?K=ekMTd&sA%$!*+X6$KEXO z&|-Gr1G#K^$i@rNU>BL2!X!&V#RYU$o~r57L`zND#JvhZgj7~ZF_{}pYt-~n4@}_q zD5}AjF3_71R7=@*&}=X{)C2w?@^~2MGmJo=hp8A$+l2A}Sn`_hVk#397V7(I7V4Y8 z8zXGhVOiDg>InE@?m;jwi(m;9Z_^c68-B`{=zPoA3LQy~tf=H#MHP{oo0pTw4UhhQ zgE6(fVaN`aaPaor(FQYG3MZ~{`|(7`0vYC2sf!OgJp+oRWZ zh|X<~PU{ez-yXfLLv%rV^!g6bCGFAa9inU6qc?PjZe*jkSOY7qz?QUKw+qZz!E$yf z_F_sjB`a)H?)ts-18Onp#2N*+FT3=BryZze4$nKSpjYxuzD~M!Upj;gjO^sJ!#5|( zn|Z26ECQJjI!^^xtf@J&;aVj9lK{x%QUd4#0`N|*)+I%;V|RtprFnZq0gbS4k9bTY zr0o$^h`^EHHil2?j66JC) zYyZK+wE+)LCM_97VOg?_xu!4uas;L554Mz|OK2N%*=+2x(Cr77Oa|^QP0L3bk;vQ`((P z`7iEwo}Uv@PXn`k*enD~_3CL6fP9{a0D4)+kFba>7QqST4bcb-r3WGkvYNs2I<&l= z_^`Vgi-r0@j4zfZ&z)riKvXN0Ush9FP>>hDKpVEj^eGd1aRi=K;5wJuzyY;?kPxuF zE@QHQs4)}>5Sl}3<6uHaEhHbsCKreRm^uQ!L|`y!yf-*Vs4K}>Xme#Wygk`D!Eb@F z1W+C*G#II710Jr3UBK&T*^8FoqFo1_eUti1tL<{F; z2Ns+dsM8|D@jy8>AYLU6EWjv$LUNaf;}iNI)3TQe2l}6X70`?lOD2uamS(6aKDus$-Vk zJU~+TDWIs0W1Ek&4rORHN^CU>w3_3jnj;pd!R^ZxWAh4EKu?!O3wUfb$gjZ`K7ogP zW)?l#_~Uia@-+ch1;~Ptykd!#D{w8JOx!!(6(QF;l8fR1S{a$Mse%Fn*qrP26RszY zk9U%xxGOrj(t1q*{#>!N-(faa5f38P1i)`$S28>>ZcoQR!F|~XS1UaSAmU~S7Y~Fp z(Gjjn107&<-k)v4?&AQx=bRDV!*=(#i*t`_OKm`o5>l?nRHr1y8ZHt#-;^+Tr!AfU|L zWy+W$N-ywN1a~hQ0QSdAhj_s4hVm6s@Z4col)^9e3U7MmtE=y9)gP05$o9Yj^?~Yt z_12AwQkYbs&`Uvm%?7j94I@f4nP0zEYL1b*jscf{tawZ@IXcAb#=frck5hoVYyU^# zn8Hl6qpE*4b?aWK@i95MOIOu%-!$2fwwi3ax?0SRl<2t@t$o#d zs3m5qtI6geDn2EeZ&8}-uU(oyU#m1Qt4FE*wH~F({#y9mqg0xuUMjn$UYhRTqcnHE zdi(?}wb;(;Y75>auNPXB3Wj$_idyT59w*<0tK9&s@Xgg`BP}#qr)YS4m%=;VKutBB z)BVlQDyT2@Tx14YV}Yo0OY4&3%G!?h4HharV=H0Bucl+It=4m{wwAVuxYg8(oxk4QHy|NpL-zxd^E?ywsOYTyBk@r5x8y$(&wJ{$HqKUy-<*7O zBENOvB*A9(8N$Kt9^+*SnilG>C$=3q;8N3j!x06I@jEF!pgu za^ymRf`#B$^|AxqrRop&n~h&IWXXmxzbwh!KV(<#}80Yzgb*d+*>KAm#S!M^5>uu!7>5A^+H{8)tPSS55o-l^n(6t`KcDz z*?^bD!<6Zxs~;%7jiOFCa)X7`TPqyFS=wL^tWh$MEN#b(B_2Bh3EFtBm$9(~c<%

RA@?1gU2UmTj>bf&($=iOsn9q0|%LpEex*>2P^gU zhNnG%a-*QekpOS{?t(}FeV%s!(C2xFdF0Qkyd@VM=*z|PL*ob@-O0Q731EyUOL%S> zwDMUxkXNziwoM1GAe+!q9$sd^-TJC4haH5mc&1JH^t0%zhaD~$({aH&N+84?c4!*P zGU>l|iYr+of#+Nf`2U89nDad1W`TZd%|I8an_>1KO$V^p6?>I20VgkZ zbqo>CRm9etVk-y|eqZ{mMu~GLiJDif(%_m&I{I0ex}fTAh8@E7IFOR290%SQJt;UT z+}ldtlL1hO930Am?vkH?`*5E_MH?cD$UJK-2%O9Z2Xzap-b3LRyzfweuoHLK=4Z^Z zMwWCe!E_P8sE$qm>B4WIrV1U>4s8e}ZCG^zZP<($|xdie5 zQ3v*T0$IYgg)|MX^xA&{^@96?c5_FEpXi&qMRS!6WVCM%Xfs)_0JftWAxQk6g*I9` z9*V%rLeirR3Wp*v8%ts`b)8@P!gB)U-VS8GDMOG;6?;k0Tf_HDIQN)CLZI|ewS@32wmj8SE?u>x*R0$R!2nElKEFJN9XPDz^F%VDSvmU-w zB?yH_;5|$~U;L!~n>#h*5^vX>++)Cvvx?<)9Uk|aQo|fj`<7%c4XZ(Z=CSA=e817m z6i>@I7_Ucdr{7Dl1NOilg`ewXBzCl9 zX{iy05??a*=sTR+1p%)fuXs(2^A#DlnNeXuF}m~3bVFj}bVH)UrcdAQh9yG#P;}x- zsdd-kp+al89y`t(P3B^^wdP1iQdO8TTz8LjOkWL@QGU7+f+Y3_vy61Z)&Y`Zv6sM# zGCD&Xegk0zPX2CD9O@wNqS#V5jAkgNY-y4*trc$JCD0zlzUKF<1SA|M-xbIlCEo3g zAfz4WMqN3PL9q|OX{Do+>8rh!+${2ggi}3o=Qy78un%|icSN75CqVA}5O`Zz-N;;* z$(h}wUfIo}WSX_EM5!7~3~rDN-|q^Bi&VIJyEOLXpCh~^Xbow-fT67eZXjtLK>um$ zOpMbRCe(sTvHzfLrEEtp37T@;inLcM0f#$orF<}e9SAnIkzEGfoA9uvCWH>h58~AO zgyRtl=3qeYX{3MY8e{@Hj56Si-#G?Ya*HKY;fO_}i!gmP@cVvNU;teUFk47nM%>WL zYXl7C^^vItKsoAIIF2hM^ABJpE8TFsFG9l=gLn54vR}zGP?@nNiv3_}Vk}i;EI^0RF`;2G zx{;JNx4W@>Ul>_0Awr>Z9EUoGS_w^H-D^!k0+#$ltowh_iN3ClmjsJ&l@v{8TMGct zDUQ_7?tkNHm@m>7H!PKVw*O#n|M3Zkm%ct1i=NBdH38>aO2l-9;Vd}PktGPJ1p5K0 zKS;qv;utG-k?66cAEs>hp4Ec*IDdZmsp1nfAsSZBDjx2`JR}e znjwUgbWP|ed;OdeT@!$Hkn-8F-GU8>62vkE$`{yJ1C9(fS=z^nY2$2Z!O0S7FQFml zN`h8|cK@>?up2h-f2oLaf&W_3aVuOY8ot*U>Bw$2$r21J?U9!RW2P7kg23y1`OL7? z6{zuZs6fl>97wOOQ1$i}`nNmnr@z7^XL$dCli8CaTucS_E2>9O^>m(3BY|Z-5o`U`3?Fr*zy`(9!H{t$zmFkLe321nL_&c13XDti?C9{YsIcg{ zu^jD@v9|9?{t9|x#Q!leMkKn?9R0dEnO#g+b8JWGoU^R=U+edZ;&H1zdbA-ku+PcK z+Qe9_EX2+(+o3RMu=Op8~d53hMz5246n&1gVgRY+tLxx1Mr08FAOEF@!+_6l*+)E^!Z|{#hTzl znxE{3Q81H0T>k6=&)*$)8;HU{pPek`JWW%X0+~a`?>=vn=L6{ybWB~%D2#qj_7op7=qLYG05a6OCrvbV$axsm#u(%Yfw%4 zYB(tzO5*J(Of>c8OrW>)NpodYwtM@2N95eh^ zVGTG30Ykxm6}({1_K{f=ew!|gajG?Ar7OCzu&h2^gWK*66(~{wU#bB-Ub@gpLyDCX zh~xI~2zU@|Z&+WB`*4f~6Svrjte66IFqh+2J{>#pue=z`!DRm6xjtB2GZ~XJP6Dw9 z?RDZ^ItM??aHvVU$4ZbY)&K_^ORElmZWaUvm#ie+6ijk)6!xtE;+`I!gBRLdu%o0& zU}9;`mu`5EtfW};z^2rLq%d9}qc&f7Q>wAU5e>>q6QyD=uzm=UBv}FKJ_rHoR#{Oc zDR#K_A+if40Ftb0l0R2WhJajBq8&XYdK=(+En_~**GWnPV`7q0Z8gcO<~9CEkF!_~ z$7g{c>G7Hs=s1SYaT{*E1}n%Df7ZgzvrGer-;Nm17{Cm7T+xsU>nNGrr+-7i5}00? zsojQHvsR~V4##d>0#E`R6o4S=#KV?7Naeq_l9z&OcVR3jaYzc002zDIUn$`fLsEQG zooIJeES7Gf{5wsto9ohHgW=F-JgR`^mBM7gwYjY!y;9~Udy>!7y$a&3Qx!ntO~GET zK;t-v+C+nksMB3p+P&b4MxEVB176N({Lz{Ohk%st!I6@H3RMOQ^iBTUsY`ovyh~s& zKUHM71C0d`!Wsci0aT=*^QVoaw`3-$Lq(=4BNr}#Oe9ti9F;-93Fq~)W2}2A27~|5 zQJ{m?NdLa!hB1#oI`eCW0}4366601ww*jdZWb=VBkU%Lf;r=W&P`O|S#kaN?^aSz! zf^|R)wyUd?AU432A<9Yigc`o5WVe?wr$7JTX+zztM_IyI45VU#6-Ax(pH5mY8;qrs z5NtKx=20xv>+*>zec6GWz|}l$jQ5iDVNaPrvSm%4jnfeLZzK69D!y9oMW%}m6MLoC zDE1L=;`zqiWn~%a(jD8hi4yhLOTId;c!bJ%x?@N)>^&ja7TD_cRslrTNhkzB>5%FU z+fZMuA8c!gGQTFt+Iu{xgZc}l=Op0q4zafKm!AeU%>d|Urxt5J*EB-Er)}!u%rMJRgTWUFoSNF@y+l<k7->0rPTGq^tHu&*%)LJ2(Blkdp(Pg)LZ z267OkU|nm03cW@uQ}NLoUN zVUYE7qQmgqt9=+Sa@;U1E%zl22vZK2ve($jgIu&i9YvDSzJMvGM%-NAGk$zL6JKlqu6) zyVsLIV$b~XNjW)>TlwRzv^!((Q!LSjw-}n`nLo~BVA6F^&6826>6RV>ji=HO>l9mb z2}~`?dSFcBOPrf^H-PR?LMO()C(ijmlh;t$Cc`4+^Z`KaXV10CM&>`P(^nh7eU~k6 z!6;J$iwqG$e&0nU7#-U6K1$GO*1;V-SliXu+&;p~-af%XmTNKQXi|F$v}c6iG|(SP z862UUc5=GlgFTHMCM^C1movdgRu3`PuQKwTqjyPEwvI<6dWwun*bT&icYtL5gj1sS!s_ zI4Fw!p%Idw@E}RjIp(DpbfXOS7480g=mO}FdrDtfb5bYW57NmAh1A0E=1ztGKiU*7 zbAdc<7+p;DinFPhCDR}!N$Fpi26Nj+m(X6Z7m1a*lfU*oQ44z-5!iDCM?_)ZgG0M! zpd|JOdmrkc)XUm<4#}V2N%sxT_GH)v_Eb**iUvgBD3v9lI0JkNCLAE2NH7CqNdB5` zE56=w_;E;@z;fgCUmP=r5FTx|s1Hoc)oAAYV#Y;3eJ z>}TtuYgkTVpfG~-Ydk$o?CKQ(Zv)XBw#H-ck!PN z0gvuLtof951k~x+zFdUV`S?6n?_Ew%FPiZZ$a#`AdXjdQu9B>Xi5)V0Ma;>bRt8ou zD=@GE+oT%Wh@Us+#uE71ruG4Rsh#w9CotF+r``_GyV3@Ba|NBsl5p{EM(_dYWdTkd zYlZ?|Tt~@_Qb&Oum>d@wLLJMS4({u{TSH~Sa3N zT&@;4Kmrlan!MmZz-lIUD5j;FDQ6rM77xUk2ulAZrXTOiP#JxGdgwEf8g z?0bU9c1#OhH*~caTNr5{L%FA%wa_Wz?h)Ylh-3&*xJY^hA%)$nuKwKh&e$5-lG`KT zrLP&vGD9h80r|>b;pI86@Sbmj`}#0`bB%+Q3U`vH z7E^%I;aRrShGxd4elvLDTk_2Smx(8ZCdTFfxAb(Ex;X`y7?&^%u`08kNmB$0jIL9F z$kB&p(iKU8(h`s{UiZ5J)xo$%g@(y={Q~Sd#S~uA$QUmp@lpk5qFK~L6Wu5~l{qxJ z;Jd*KA&j_a>3&XL4m9BH>Sj8H*mlvPbUi#hbiJG$iE(b>34bQpaPebV>~;>WM1M?ZdG6l zURPj?A)of%a;NZnkp3sr@Cdyj&fnR&pb`^vAK%ac_&=m*g zjcvkm_Rf~%DG9*sFulKY4|13#VMlCsbZD4vbkvxP@l2S6yXvLi0I}(YjG{XCEhd)frta$*(Ht$>aPX{1@@s~5G}lpc}b%%a^FqSz1r zC%)KFf_~a~!YSUUiLgTJ#+ze@!^sp^J^JOYIUvkPa)PdxnpeObMsi=3;P)|SY}OIn zLfk#=SKMf7Z?TBfqohiLsR&j#(%2;=HiX8ekf1jWt{_1x1Z&iWpbYM&krq^=W=_7A z(ytkkuLncQ6e6f75K!Y`X`mg6QlzCQkSL-=XfI{tw%FVe>ASD)8$r_a1h;JAo%Fly zye%0iBVirUF)Jy@fRy7%E7T)FJsQ*{!KJkHz9iU;puNRF65LILJxDNv2K$iURT}I^ zg3npuk50vJR^DQ|ah0+{VjK|Ypd*dtk>FJtR3pJy8Vn@C5E=|= zuLDzWV$w9_KiM?q-zyk;J4y*5<8dhc7K}6K5+86w7#r#UHhlN$p`FI#coOs_Cc`Y0 zz2(WZQeQ3hRvo;_vShq9oTB*)FA(AE1fchYD#VRZV&DgVA*5FomLbr$R{*r^=1j+j z+T;|w-W$ler=OT+|3?5-NALk@=IiEZGMSoqQfaAIAh>ok4o#|Q=nvp88Kws$^5$u= zcU5rSC{d*)b|^v$6hKe0$z(Jc$2rTv5f;$4tCK%{$R8C8tUEeY|LtoB3L?Qj@^Sra&)eR9 zCEyftO@PG_94V_0g|K339z)C}X`NO^47>jb{!io3nTRVQZ*O0BCt6(JxXh{Kmg=sG zYFhdjb{iFSVaRpvB zUt+0%1(g$=+)i{Rz1^S?9&vAkGaMMYIoHLpGB!D+1!fDcCIXF_i^EW8uANJ)|8sR= z`VS;S-*TVAD=5dx*V%k7{SMTmlMPC2AENZ}&ohPQbGdu3zZtGCbj<{wu=zY1D)@b) z=uenzP#9v&&OqT3(h!)P?pJiUt<*Z|>Fs6(J39ZQ#cd2#EaMV@ySbqD6s*81=!L7M z?AXvOVO`vwf#`vCPZ(J&^>9v{m+HX|pi%b!;_OS{qAa)nXM<5QWfxp(5LsPdUv_)dJ?CTvB8gqxX>3uLTVdvF7lBuW>^(9VZ_o#VlshR!i1s9O zdOTB?ygJtscEeCQ0_t5XOQ85aQy)sjJ_9kD+#S-r@dJEOyak{TFdx5)H9}<-D%U*o zlNsDRz(9KlWwPcOGUhrtbE7eKV<-Ug!D(2}&*dYFY&o5BjzXAXf??Fa>E=?%gPUhz z{vIifb~E@-i*tin1cD-rNG@8#vrr*%AX^3_u*wJs`pQH&0BlIwk_s_t-b;mdz&y1W zL!|ZJ9esQ^|F$tiNIeze{BSs;O>f;~c(A~Y^7l5Xl36mzp9x%W`%~n|p{6-28Pmkr znaj^Z(f;y_h6sQ2oU1*P&2w14!orjg@EV*!4t8h4>_o4=%96xi`8UF0W+s}(9W7K! z(H_zBlQ<9L(sb@ID2W%ovpN7-2a#?u;kiPBS(yf~^iI|cYXS=&Wb0Jy5`)a(s~ZfS ziT059ot3udc%EAKB^_C?Z8uMUq0AI=OK)XVKCEGXte{a;P%byjNjEqeD3tswkK48p zm?hp%;va5M1p(E0VE3dTdmys#J#gf##qlvnHxwU3bd3N6KaPX}q<=1KTm0JQQsk+j zdTdn8m`h#R(7CB+GT*|gc$6f^1w2RlQ=ffOeCKgFw)g7alh(b^Z`l9)kPPn7VhoP% z1u?>(LSGTYv$$QCSQLtA4)To~ZCru9!&>kDrS&dK-2VdR&i)s8Xs{qwr?O$n zbpz#9qfciFweyouHHW0ZP=ysJ>eCPfWj^)NEp#l^r=G-gG4~pxK#dHgpfB{mc;)Y; z_M^l5!c>eQ`kuz=dof@BG)@g)B#E`sLZ(XBNf1XdIltgJa}%0I79Oa6qWIQHcvH{Um*l(oSkplZ3xlyAH-v|<)r4s|(}SS=Qcs?T_cg-k zVsd6XI#jj7j$sq$a3R`Uiu6=+u7TL@FIAm3F33h7LGMS|BhUlxvpDlC6A=h{j0BV@ z7O9kYq!D&mkfpwc8XF7SR?h$!!FzH8-IYwhm^e{`J;nKh6cj88j-{&~TqX#2$2Emp z7(MtJAenIPfL)D~yOB`{8ku)&w=ZMC12@O!+$xdx0m@k9;Rsa6E}BDzXsBRtPtJm&YvQiu5u%TgwuXBdBUV8+6OchKFb`lmpUXejA27jdO|S#i z^)i^_N{9AuoCBw!%mrA2^zsfx-E1_T-B7MC%6tOq2B=mfCYXlJ(gjvLp~-i0M*sGb zx+zp!D8B@u!^jXDh6f7LQ1O7pM=z-kDxBu%dl-9^J`9h~Q|)qGXp4Pg@nYMs_?_b9 z3Y`Gi!gtJc^3_+WzbvhsjP$?pqmny)!Z)6y8%KAmcB%0GzVgMkS8cIY{O=?Bo|srp z;mPQ@@Z^6)>ZIHSOW{Yx$RfB@+!ksnObX6O3t1hr=Z(c0DYsA`{GyN#QE3$>Y!W=N z4o*WuZ0Y;V5Zj?6V3*;%GOSlvCPxcikM*hmU2dU>n z23ZDhZLX^xlEDNRR}b)bfHyE8hTWJRTLyK7Yies-scNq&C!_!~|9qiQEIyk9*moV1 zEV9$_BzB=+n7I0?A6tXPWsb!Qo+j8{sQ_Oko5f+7gv)F~X8k>yO>Y7+!nB~3fGMKU z7rZ|so&xQ~Q2N|mKIgC)`=uuOL_J~e=cT~Vi%i7=5;9%mnO0B@TN8YZc(kMP_c<~^ zZ@Q*W8u*U#c<}D9!@Fot4FoDMCT#Kh5xdrg96b{eQ~tUe?f}n+9n>3pB(@yon`Ot6 z54=%!A{hzE{wKL{d)bxbemmm6PmbLd_fvBGuF9Lq$UJ^SRB8cfMyQEq<+5eG(^&2W zZCJkMK7RWB5_Emp(FZ}tml+}hy_WD@@F~ldp+z@dv!9xmhDNeC*?J`#PJyxi2xUvf z=hq6J72v9OCF8~K9A__|Gs)4D8IXEED{1%P+T*KmGQ|C|v20q`xSS2HnHN&hz^GrH zg?A2pP`4`?8r&yRxM!%Q*VvqLgMY89Jo0%7iRl6RO3nrv`shIxZ}@ef6!8Y5oawOj z1?$~pIuCSMAzA|B{87amagjO_ufl*2B{gj$|6C>Sgkt94&B7Hwr8>O45PY^K0kaR; znWhDP^8p@2ZkOMZC$C~yVg@*OWTrD2Ca;RWn9Or!=UP07)kV=Xxc_)Y45HtPq0lH( zjm%8Q-(lMOSJFt^saQSY)BpD;S}2El>&HVfKxZefDy)uR){<-a^1?rSoSVG3^*PLC zt}bdymE>71d&z)aTGOj-2%6D1wYLXh5!hSXl#cbfbSbf9(SxvvGzoJ1xTZ?V1BW5Y zv-k3k+s=84;*hTBo|uZBlhBnhIiM2Y=1stgUj?8alD zLoL6H67D>W5?~tYOYR-lrFy?U5!I=i4T2ms5@>8}eS&S8uEFLTfCa~h3{Xi%gO7P9x$Mi0Vp zN5+Cb1eJ*G|6z>%C}aX~JJ|duJFxQ-Rs9-}Gw_%6CHBLR2xxjYf>H#v9-SI!b)ZZa zFUGt)tuHUi?wtZaaAFpM)Wj(iuS~xgQ#SqEP5~f4^L{m3&_RIu6@W-#L*-(yjrK%8 z>%I(U!HaXq0s?bYU2F!;FB{G?3*bxm!hWV6FbP$FbIxaKNF{=)qR!=ok;nuQc6VrR z!oc~U2uLynJ;3;Iv24EoWHt=l)pP9K2X$dW3MW}w7>QMZM96QeW7qI<3khxA@i0gu z23~J=L|%5!FsCZO{H;~*33E=9Do$T8FJ(0S1P(qjE+tRzIw2)Of9>rQv;N%6DV6#o zV^gsC=A`s7@IEt$TU4(NMiI1HD{eYq^WzO1774AQ5o=g%YmMCjBb=}X@-%V_k^sxA z8+nZ$ka#OkLwa;LrLJh`&Kxa-A0GAHnWl+tt8oid1(L1Y$7Exh`j_O=DJhtQgYvVdi$2H3d?b>ItJb&4?LnxH1dYk#!A-@Uu10I2FlHENg+3>yrk%+mLnF{nQ(G zyKGK@hu4;rrSx-n_uj23?0iM#yr-_3vPQUb?L&r0WbhMLIVrjQ5P7!K)?q&>suo>E zsS(eTRS(EEdgc~arbXDI0WawUires2E;Mw>#068tinfP@t*?Fz_|pTon{H_4tuOxp zp60ay-OtB>v1Z}lJ)hfZbpyClVHUk62vy4vo@GPreF>&OY{+HGaxymqsJdYYT;5it z%n7RB7xBb~Qu4`_z_?!(_mY9)TQ(C9%I>7nOdbuN87Hg(Rh5DP^}a3wG>7?uGjZp@ zE$I=>VL}SfQ5~Ma6c=K?6G>LoOtLrA`+|WsIor7ly4S=zo8P10&r5{vzbAbkbe>phbYY*mBnR0D>F{d>*Ksw^qLzU?(W#v+0RW~$ z6GOxry$^lrQ_zus{LxESRAC#0Tnr;Be;cdJH7t7reEcVfl?Y5BC+4EZn_!s^*(XMZ zRRR+TfVICge*kD4h&K}H$W-8`2?RN=5QGL>PhTyg2B`#3B`XUs4y%oAgn;hk0+b7f zDI}Sa5X$lm+h|+HUd?WLakMGI_a4dC$j_7EAHpnbbH|2=JF8i|8m4xB9ZAut$VJ%s zNwmzRp|Ooc1?lPz##{Fmi^!KkVsXR2%Yqs4qd@KrBgjkWt|I6e??K?L+I*(& z2y;os*_1nE%<+BQ@HA=AXxZYu1=;xdad-u#X@oPCOYXTY0jFu#6f>xye^Vk7A5sPD zo!OBU={~uZsy3WAox3O*rp>5IsmB2iMRouc<~g^35megR?sDFLAzCOYv=3U(V46iG zKix_By%6@%b}u#j;U)TFlLm<;7p4|&ZsmWhj4iGmgDvbW64DV{pgrP|!%+Ye(x6P; zQws+MKpcf~gEU-?f0JTJ149?=z+0ZCjs2nUhvG7<(qgX-*9g$pka%G zv7-odRfRidm(iJrd!IUUwq z&(}c}+2a9P>p^}$4hKNK7oiTE6T^NtHVwCq&`N#9R`K3AW*+Te4DS-wlvetsZmy#l z*g^qT9P1;oDz{bwxX112T!Ot%2;jJdY1q?PW8RT zvwt438dA6NTe<`VKGFyvh?Br%atnamb+*HA%s`paL~TWE2pq*8;Od~AI;h$iS$0QK6=aHf+6#a@E^`yMvF=kn_(Mxdx;J*6d@Lg@it^@ZZsPrT3l+wG% z9gEsh!kz7)X?@@=CQt7OqA1Yy*7jH#`S>p7DtJb?{0}g$Vzbd!4IHKkws~yt zY)~!X(UHn42%J>`{G`L1ytNGN@Z^N`M9$=blZuXyY0jJ!q>Hs5?3GO&>I*tbbH>C_ zN%YTq=%11lE!`t(UHUVBTA*9)NPjUB9MZA%2|FlE%wR!_1!B`CylkLahi+hc55*W5*F(Pm9Hv;MlO(U&v592w zq9)h7q4GR(+(T5!(aPwzcm|-Cqu)XYN53WdmdQZJi?YYStgSUcOM2q%e)1hE=zY<5 zZ@dNOwbREueC}KZhBNLRI=5x+f$SdrL@o3*`XAnzGy84WCl1@ z5p-ye=*Rd_Pa_hNDGZXX*clZ(F-4%q}_ZYc`-6v|@ zqf_|ZaY`il_86HHs^}>;**;l5ufkf4?_Y|6egaX$E~{(za4RL)Qu442n2ivCSvblt zAHx{p@(pfzt*Ukmqjw1}=Pr`B5H>t_<_vO`y2Nv7#$JiYTnzv3^q~Lb_UpF~sakP2 z-@r%IV#)p@&RvR@W$u?3(t7(7_ZvjJI&jV@TFFgPO_-AgYnKlq3a4^A%WcTF$1q)l zP?V4D61x%7K}RcuTHTt1IeeSvkIn-w15j|LkCe_h*!clWZC3Bk#$p5!9_k-5fwn;b z^EEk3O=)i>LLxM)PnR|x?^7NRjH);JXEY7BR2dITj;mEHy3Ig}p`L{x+ib+YGLbRXi$tHu27o`7q z$1OoPe}QFrDRr_vE=R7iI0m*QdYjCYG#mbp5AcHf`vD?amM)TY5FD+-Zla`eD%`;l zi6Z5pZ575TqkJS3Vc;+Hx|?do3&7;K%8>OzX8A~}hLn)+C1b&zkHKI-RXqUu5}cOg zP;+bDVH*<_hMq|X1c%^UK;LYY5DuxtT5o4!>rW$#Fp)|lWIV24V~FwA?E0FKH)hwr z!d&t=vcnMvCmpPw1RZJZ9r~nbrrn756l?wQ!ZPx{I~EFa$R|^S0=GZ&Q(iOVJxj~Ri7p4p?(Bgr^S!%+>{$afIqJ2`5G#$}I zs$efW<*V<{ee_5(K93hC?9=l|g$1L=J}gN52y?S3s_}U-rGzJrr3>W94(fj>;usC{ z9b=%I`a{053$eCONA_frTF>lktv_nvISIIpKRJQpni$+eAM`yk@*DbLQQjWjBCi$q z&PLeUO=L&Ktf$yGun}HT8Q2o}z85T!FfqFMRrq&Cis7=y`x)(SP#Dst{xq;Q4_%$1 z+d)LC253Z3Vc!3G4S>5*=yUUH8q%0{Ypw`|1xP=j|@JI&$gm^y?$L9^zetKHm^w z_t4sO5NZqDkuTF14?}5iq-o@*2gN2Mnb#e&_RVM0`bM?O1|sea5wHWms<9eAV|GSI za4HQE!1T|nu{$gJvlg^Tgsf?qATZ1$KK^L}Y>KzAgqoW#3M$jdU`?A|W zW?^gf7PpN>`}Rcur)EQtbg;u-1wall9-5Cv=dITJA*v&lWvWuu)U2ry|2mxHR;d&U z#hS(C>q_FCaYv!3NS^OkFyHFVk1dU_4)a)-@vOKLGC1Gp?dHZO)>pE%og6}Y@MH5c zmpDJ`INQo6xl2@?vKK!)U!1JTb?{8mPvv(i);Z_J1uk*r6U)+9qD@m{skEA!!0P#` z+|o$~z7y@^RT1x%?ZbDxawhvc<5g6^CsXGp8FQA#WbjTGa8G36a)Dmzv)g0n?S)MV9oky81;zN{COTw z-LMenI>F#EFl3PW+=1Y8>WtALO;2451;8R~cnI91dqd~!a{|he`hf@(2*YyF?E2u4 zlBam&8!ke!x0-;83Ms-*iz?j35hS8qjW>8?;kehw??FmN=%|k-SZ6s+*4l6Mc8KYx z{`bdg-V1IkYO+?Wx{D4V(hCrgP?s0-{0#N8I70Dlg?=;vD2u&X2)PB0M^1#>=m_5( z67oo8FaDzmXrN7tV4>w|P_F_<90gm@EOV?+9-3tuLUkS<5*h2W06%wB;pbZG3@Syn z0!^tt$}53Sttq3pMF40Ip z0B?kp8o4ezNCyfwX_k{&d#7vo^E0mf%cyn0E}P+qpK>*NO+{VD-@wk)Q+-i|Z=`DA zc9`<0WG1MSl(bc?Q7gAsnvN3nRgkMZH#r<7aHoP2dlcg>dHPd-`kaQ82s z4;!55a^0Dey$^dX$)mq7mw0$w zuq4mBtF!aNU87De-14NxIY!3&+qTLXpXurxBg?QUAA0H^zCG%s()qQAJBN8b{F{^W zN3$O7r@x0iw&1f)&acXwb5-AL&{)bFTj38!tUvg4l@nwDt?1eX_0l+?KzbIyJ_#{2%upIcyp6!iUZ!ve!H5 z`(D6MEd1J6A4>;IaBy|mw%+qow!ETpu$|PVbW)T)u?n?T&F|cJJW&znuCV=}m^o|L zb0M|S15BMBfB2W+#_g*bSGCw|U65vekG8w#woX%YN`oOpaiK?=^YRv3%rcupOsDNn zKKD-VhX~48Q`1ka3mGAaj->}`CP@=&cDS2&NOwt6ajL>uilC|DY=k6F{OD(2sk&U= z_U`DRmqEgfpT86V>K;OF(YxXkjb04Hsr+h`u%lSal8t#?`BK6@ zsi-U~pcm@LB7VYKgf0Z~gQ6ACF51*hhKK=E#p+vl0-PNM7eWooARYA`EPr&1s`zRY zRp%{HU6#t{{G9|4F2Kpz>LA~xr^r)~2`pGM!C|uW$!oTqL;|ARs#OI9=$F3(TmmDm zFcRHToITCt3y$1}2@p#KKM9p(Z2~jAh=+v>kAZ+wlLRN_Bm($2OACY$3Iy{>nrQA2 zJKEruqJM6|vw_vMbXB_WNij_WF-@vrSzQiNb!uQOqHPYiyXeVfqc0rpbmS7Ec-ziQ z4{pxueBnSRP|gQ`)7%~P6$L_PEEp3_1U{?+8AB%op0V!~Kj{Q$W$-ASQt2WHDMYm1*io?ew!Y+E>lZR+CR%nj1{4{*NwUF3 z34P5)RYv=#O#U68YJU$Ul+&()aegOwg-Rba>f*z_!67)>A6yk`(V;$=C0T(^_STvx zoY|0&Vly_wNZQI__74kjvF?2k{O|nOPr!vk=L`L{Zq#k19^2=m+dWW*-58hDt-x>e zhTrW&z`Y-M20fji#O%6|kKh(A;t1AZe6DB|yc7realb5X zWhjy`2-&pq^0^@n2cWYsRI6b*8f`}4 z6-e^TZP7K{b+M)=8)P@&xl|3_{ZohFIk{_BJUI%>_F?d`FV^%CJhI&4)pwB-fLSi? zcQ7N+r@5iOar%lL;+i~aKT(}9&G>TDQ*rA;W*&!JaDgUE-E7n(-vP^}bx!}W^RFdg z4WtE%iNw0E8?!+>T&(%pF)L_!ZTQ_q;`;igUPD!5+YO~90!(>p(b4TsV%wis+Ml@8 z4lck2AM=U-;ZVR*kCZ~Wh88LzYU2lz>JY4xErSdbHUBmnbTr$`7SH$VTcX75|gr*8TE((HWe{sO16-@aM7^5)9R zpRXKrW#y_3dU|xz^+Tt?8k9wyUAgko%HMuiNng2i^WTrYTD*Id-a~o+H@7k>>$`v5 z|JB2F&aU59OuT&P6u6tRnwl{2uhY63ueJW2@#j6irY6VC|FqRL^NaXj3@%n@ELw{{ zb#+aIc&BV>+v^Gi79DLFX63$r*tKbGTYA{V#ovqur+;Yl*{@s0&FILcop5Yo!8Z~* zGkSez`)!*p{MYTDZaz>vNP%4wazq{?kvNez5M9VxCenUZ&lh|V!NkGWb%NH9p9N11-(?a0Js;l(;0C{^$%lc3$1m+ zKF4*J@lB4_9ibzQSBfX~5C}3edw)eJtco{Ks$M%9G%7;-m1}UL{ zK2l>-KeojMun0LP?8T?Ixye(S zjv(bx)t+|{IKMFl6bN$Npcg@*!3$A1Db(P!xgB9uc-r?!uG4GnciyEmEL38Ds9mFp z#34NNOUl{Z!*xn11~_-bE}D<1ExP1qweXRQf`S^GEaSLtBZqHhRW&V-5(xJ3Q6DKdSSl-UuFbRE5prw$i&lj%N25wL*n12yl%) zY1f(vI<4@Ja;yKWU@10()I6w<%68TIq7=RJdnz&DHzKu3Ll8 zy81o*_M0V#MvQUX-@Uo;s_Kr9O6#5AYg9hm8LVDBX86QTpO~&U?`rz@$RDU`%_sgz z+XgDuoP0Ir#LDk4tL~I0>cYw^Jv-wK5;x1bc^=~bA97sT&3Wa=T7C2JrsiLp9{NO? zmigBP-~5z!siJ>U3pcsa$tNqW-v66d8LHa+<<(=a9qk%W_VwfX=5g0P?Yi(xg#KaQ z;dym0J-qtO{+rF4uWsMgb?5iZx~AqmO(Pc~dWcQ#jI)0J{EEe0oBf-(EJMS7zz&+guCIu6ikwdXdEWW~Zj+cQ3P0kGrU!w>N~+t4nawY`UD^ z{7O?X%JvBvk=vufS(lrFn|p5-7dJOuQQdJ5*E+6EQmY@Hzq*9BSf4BW=qg?G!i8(H z=7~p}U&WKpsEZs@a>A%%xnKXa0?(`Nm;>DK=S?H@>B>WQ-U*KF^rOA+S2oi#&97c= z?sBEscA2~S&m(mC`idvct=Ju=Z@zo!Vc+tWcd2?jW-FUk{C0}&5Z`d?@(OCu?XT(U zP#2v1Y@ze1?W>$$cdDxC?9wmn<%RA(Q)_C}VJWsOON0Zq{`qM`UW>_&$1ZQt^)0V< z^;AOZkm9f;B7Bh%YdLPw?5ZBQhSlq8BK$+FuW90D+XW5UF%?*z>64TCRykXg)iqOd z9IbA~*POA!@_S@g5BAoetog2Hjcsy463Pl+TMVT1{;A zD{K5nH5=-l5}wq<9Tyk-Ep+s8S1N02a;K^)5*@SCQC52AA@rw0y(DwfZe1&hPwAhb zHhQrobmpZ!k^bH#A#MST0z{OU5dlCpy9EG$lODwIKu)oPF!HqR=}wL*H6bD??IfiL z9?y;*Rz-;94@|;+ogW3Tot_$oh(-7!xW=W4ec3Q(38OuxiREfWIE=l8gbw1_Z$7v> z&v=m#d0;*JY9$sgonEL7#g5Oxw}ZA{wLg#KKr8$6HYf0QI`Rvrq9op~n(|f@PX%p; zEpcr)^qB+He~m?$tLkD?JUPxB86pfUPM$42;GzOEJ-z*+65yPb{m0${;tb*5(Gj$h zewPK#7g#Am3jyQ^+>l$iOD@zNiXYK{3G1mUxiHtmgyI>{^whrLT1^5lNa)>vkW4Qv*WnURZMOx=X3bDR3Ml}f z23BTlhQSC>kIfu`xH<}{I5LzY`8vUa+9fP# zI{+h|lY9(gd3Nm1gpCY48P{u{(YBaF2++!?FUV9o>$QfMbh`w0(=HPwP}kgEHgCM*MjDT&(^l_%_1@ zqzP~VLcQl=PWbBKkg4m^?OEzwc==ZsweVC8&CRz}UkSdXb70{Tf7JQ4fs~b6zJ#3zcR}_KSCs zI>PHdj}E3&?+gwch^ce!2RI*78A0emKv_+d3z1okvUdLCE6U9%mA?!yQ%-T>avd|x))GWG> zSP25LDW)%OQ6*)hb90W*9e5~(U>sQW3JtF_<_Mfz)3?L0C^rLM<+R`g zNVOphH1fA;7+k8QzbJ_g=PChPej-?yYAt?}EbJUBWI7pGmx)0ScExZ~)XF8xOCE^3 z&(!F`G~RHCD$}zKVb~w2^cPu2TZ*m(-DX+Q{s5L1fH2b-ygf`UrZ_KrdTkiRC%ml2 zUPCq~Q6kfL5Muaslanc0!h=tb+b5WuS}aPXgj=B;TOp9ABNdc(4gVGNh55<{a8fsqVyq6#e>V^ z0ggEJ3xa0%&qZHyG+_ijB?NuLsj)lPvb8%5li*@0WOwX!2>{Q-gPR>V+ak)#T~7BZ z9HxQpDo;UY!HK%B;a(|-9l+K^tZqjLV&y@5U>mVw283x*-A(GrkRB4qG?Zs9Jkxj@ z?9Oa*G)d3`x=!pbO+7kdCUn113AL=lZ!PCPl~7+X19Oh@=P=`f0%2=CIR-wJeZ#-` z;C8A5^G2e$`Y_AhvFy-%Fb-l8BP@jPyNSX#OPD!OnCt@wOR@;N83YIpZo|@=jJ!vo zfX;A(ahK zoxttzmM-X6sWM}F870@Dc?<*W`{AV~#HOHeGb20Bxj6!Pte>*DAx5wOwQe1GIF3j5 z1$lGOON-UQr?@`7Y^Gp_5cxp z?@O>LXgiR17YWWM?pSDd6XAIIAvgfo!(~&w`YZ3Nwo}M$Fk3$k$D%`5JxvboPXo?z zbvHM7ECt}~tKO0t*6Ngkr=i}si6zCI=7gY=}#! zvj6Im>eb65PHTAj0H(`9pH`<9XkqlIRVU4`u94B85cb>;Y#~ClDxVeeyTd2j3ek-- z?dO5g34sKywdNtHAJymuhdKxT5{j1PZ~LOtp$}qZWGO8&ou`aR91A1nb_8~cD==|= z`lhlTiUU)j>-}E<=Pv_0A^6qt6pYvmD=#U)cR1)6paUiYU^kKe!ZKSslr|Bodwpr( z@>zEK5Y_0G20`26BZc>A$QT}CAdHxX!zAGnRyG{TJR$G&Q?q+kP^T}xQXSj7xAS1e z4#9mt9Z4N%UN-bM6@;g3hQUwUX?sC<^XpI=E{pf+7mS`;-v2G_q?P>v%;2yJ&xz^M z+!=wx&uQVizck(TFXEbvnk@>{Eehxv>nf4|vMlIW-_nXcOg69!s2x;>FyhbF!SK}F zd3);}e3?^IB;_Hp5oqM1fZx&)vLI@t>k8A-bik!$mF%By?p(Fj1SR-J6Lk&(=f<6T zE1Z)(u@7N6rOrb5hrgH(ecEW0)*y})hx8^aDZwT1^l8C@pb3!2=e>OOva ze+k;#W$vAzXY2O8E&6Zi(!N{7(QKPbo?%H%U0o_P?FUQ{=j0JWJ+%VlKn%@GW8byE z3s;BhUAS|x9vLbRm9*ed)?u@O$ANPq#7E=$zI%k%886ozut~EQCPVPRCB5(%a_v$F z(o1Mtai~sK3i&@S1T{pqBm+4M+_Z>4uJgdx3cC6ZKty(0;HJci%O(*qm-9w({{x&9 zANH&R;&XAB*_Fy|5XQzGR;CLr&;nP@Ea&w0(Ar{QNthZ>EUgJMT} z*sTb2C(wSYx=RR^orm&tQzmUkvLL=Ixn^tOnkD)Cze6=b)T6>h?3yALRuA^q zxMHtP+0TEhPP>_Z;0=!MkM2>viJw73!MdH0LC|QaA}g^Bb&H9xARE|@Jt)aE1%=t!7i)gJ8aFQ z0q|9dz|j?yeLy&k)sqsR1zNGGG)MvRF&T>@vM2uqYxsSD%#FOX zGj1{Fw{Bf{`)Onyo+dEux*W)-lRY`|GXsTjBab~b%g2*h;;Le!t z%96BQF;KK*q(SNv2Y;_PClPaU`%EQO3T zh>Hv}f726j6SXZwzLHI$hl0|3nVwjQJ(%N)0bt3U^O#6gZ{PUH@ZOW=Mt13S z?1jkiUI~jMYkTp82XBa7kUCm;C-Qm5C)_Cq#71pgkLoX}MkojBsol^4)6$UMjn@5X znEp7odmD2v;_4-NRWj@Ev@45>Spkk5AtPKi?7f8uFT7^tO=h)2r;>F02+G9(fv(>aVq>%AJCps7~^>E&rejyC)+QB8g(3pm8t3do)A<=CVfFHo;yKE<4(*G^DNl; z`o4mp7Rk@-p_i^`&crcSVNralTK5bXNNL?~xnt^^8rCVzyPI#FVQM#QZuG5N8gMQf zB9(7~N;Pi378NN&TS%hc0%o69TEhT@M`irQc}hCR;lKMR6j$#iY8QEYlXyHkG2F`` zha{Easc~O{7-L8D9BQQPq-wLl-|)pya$63TnMXu2%$Cu};kO_gQhC{M05v>^g5_8? zb8FZ10t$iUIn=iwjNeEd|F#OJnxT*o8n^QeRGnF2%}^-vA!)Wg2cCi2w9p~42+f(7 zqTZbm84La!(M|VcAeE-C-0~`5%TH%|c-#V%!`z9msl$%Y)vqCvgHd3#8E>}KRMA<) zVW^@YtqUWW*@!-^mLcG*#R322^Q9Xi5uS#&kGT4b@(#A+K^@9vI$a4vmvlDb%U>eT~uB+>-KWHPzA~Z#UHE{z`@r zfcZ4VrweAbo`X3sAIgM2`B~r!mlI6~>(&>kYp`_)PoKsCx@q=+3E(V|eviN(;7XC- z+)u`Cvby6L`jUtV@B`zLs?@92BgxB&^%=rXYq@%THB1B|HgWxsrl0+)ixFR2#OE+Y zP_sisq7s&$Aey&j5{A7Zum`U=X}QQllVr%dzhklDjqix2vrd+wLR1?{u!HH+5DDyY zVLxLc1di=K$l!?z@n#q`lKRRz5ZZkVcnLOxrl?4B5t#pUM<^7ih$%??W0_{+$1z_L z)3H?%>xu|0h5g?DBmz)S!SHwFz)T*n1w7l&JpiGnFlVHPt24M>NT?!G-``b2Lf`-t zh`V+_UBo4j2Am*_0*9W2VnOKQ|0P1z@Z<*9jg&J`)pTcI;KWWr%WV+kR#f`a+>$>JCZ zi1vxZauikp-nIjyFwEXF0qxXLMoZWg`)b)qmFilnU^W-2N4`>h$=GtijG+1QQE6qS zEl|;g7a4^FcKp;IU(zHXV3v$KF&qGOdTSWg z4_L8wF=hVG(O(+9vV$mg#2E5CMA#6waJ&C*yF*EXb|{2vBStGlE4H?JXX(7`ph9m1kE!6tUX?77DMA;{8V`=*zuW)1uKl zJ4bqDyGRO9&z9=wXbh*A$@UBAZzTV*R|WCvs46^nXb4f&0S>~PXRj4z6p)QR03y?@ zuCOOR>g6DOTR~Azp-XAu3*u^VMm43oCs)E0EeA^MU#u;$<3df*P(o8fmZO(o#}akr z*<@cjRJUl_x^_)h zyR&lK3(Qx)C$N@bMc0KRbsELvl7V5)t61Yv*l)Wx>GVl8OEszW;?3zsupEhc9yJT` z!lU$vt`9FBjo(D_>!fd9{cRb5dHY@#Uz#Kof>l$1ct2+F6*R?DbDyJfDMGLp%%!}J5UePg8G2F>1kTsj zJzPk$cG$zhDWFN>&3Zi~;I@~J8nY%tlT)@imfE7grV6buB6Sbben{LiT?}*(bJ*&x z5Q-VG%Kyb3R>hB0f{|;n@M`fzem$O@F8KJtDXh51?k|Jc!~6;LM!#T)%ETjM=wPgs zu|QaffyDJ2Ge!(7d^>}UW&0Bgym>$WhBb2MHM_^l2%QDIkjOWkN7)^5E~&EQ>P^!= zgwlM|gl=;kBip+&+Tx-PcU$2_sX%q(4c^*Vw8AgA7;51<2fi-ai#7Iv4gCDkR05i(Q@ z*ko2TQCWvoa@=syb0~ioyP`ZoP^^hh&2?%FA2d9;84$4bGF_tBx!*)kVT0IP7d|%jf{BWZeiT(sfC673B*zdLxQY7vEkY% z6qOSSuJBn#fmY|g>Tb9y^0bM@(2>_Pzskrd8(Rzatu9wH{6`)n19#r{E{qT z(SY&P9n}LtI`!061Xhhj&Q;dkVo69*lvf?#2hL~^Sbr@0V_7W6Nl6;lAazQmH3J&X zk{sczcP)Zu87>je4~N|PWI7MY7z|{b1^PDX#a~r2m<*c4X%yE{k9iG;6?z^yg#oPR zB0lP@51VRme7fCxm^U&RC>6={uGkE{b;UBk^WN5Dn-xpeO1XfGW6(CK)WV!Vx+b+E zrFdT6jH!jXxy5-U^L4YVlS=aD%ql_ZFqL8q@^=04GTunYF-76O;8A0A#k1zg@mU|x@~O<@RjXI~yoDFy+-Y#0lH0aHSR7^zkKFup*Q3E06PdwP3L zo>}pDCVyc}%D&EnsVag5X*5A|ff5B~Lu|ygtfSFr^7LTBgbXKi*H#w@E`mIoTo9Cp zJ9-lZ<>uhlJWRec(j4+11GXS@R}6-Z;S`avn2iUg0c|4`QjHYhf?X%D+sOq1Wl<`a zb40M!#~qoEe6Cm(-6(g>+j=kw0FMsx1LE^l*m^U@A?zO{0qoeZuu6hM;fRFaWugD; zWo%71U0~7XWrUQVKP+$gAx{ z8=!Xy_@iz}dE&@!g!VfSutgWNC;b&9N3M#O5n?Wb%Ogf04uj|Tbn8W7lCKW~ePrdf zkP8(?EO@9?+K?@XFp4O#PXNgaHTEX*R|W30$Pg;JiXs@#wuKIZMoe<>)0r#ynVE$g zW$z63@@XMT6jo~Fyag;wavB3s^?C{t1E&=vZ5a-Mle(-{dgIi0reSh&wiFq546{^Y zozON1)c`TrU}EXn29<~os2Cvm4bk5_6ujC->&vQ`v091V17U?QsSRN6N|S&N;ViH| z6ng=}##gG*W`zHiRk4SKmJ|SsYDFBFN7hcQvXAX}Zmo;5hLB=Z8)1gBs}`DOKvvik z?;3_}r7Fd6APWHjIb!h|5+dmN^Wa@!qQxdc+6QW_v{^_w0CSUNJCOvy&I@#qmMRG_ zXn}+b0jI;Wcq(m{k9x3x_*q$_Woi?#t?p7Tt0bv788H;G8L@OO$*R=I6e?}04qnFZ zQxF{dw{$2~|CajmhsMAuTeoCNv#O=5A1q5O39J!!;qTm}?wJa6x*P@G&d|e$ok0IHbXqeB_n7e^fOh8omE{hb{wMu&C@4(7N?5K)?@7^=n_MfXt{ zUm|(XVdS@?n!S`f0`|<0(8nH*h{&JB2Ce^Zz)7;NwDP-y_7rK z!n7_Xz6!MWr%Za*L1VX?T;Ow3_3%Wd?y{?Tpm)X!p^1s5AXb5ewPlhD0FWJ&c;`cG zZ1ffyGMpp)L5;{D^i~1ekQ_DAN11ioBzpD_D@bywR78Cm{c;2``?PAO;Nd4oknxqR zlAFhuz(eqR45tBWviHyw<^vy2t zh#nKG!a}i}>B5&1JYoMJ6=)j*``5%-2r0UJ7EKciFZ}wUm{;_QkHF0>CD9cjlcynp zbtT2#Yb-RtWh2iJl#k%IOa_jWf}#pt8K=GLn+hVwBE?II*xNW$BJ>>o0KK9$af#>L z!sr8Es2^k>n*@~!q}N`F*QP-AfZ%=$W03(H_=VK0$RgL;NWg?muqbl}*aIOx1w{;T z1tu0M&L)CbgDPh5cvwdhql(GO9r#Dt$WmnDoM)?8H#5F!qQm=1Cg^^D8GIo;v#T0=j{3Q_7zt-i7>6DgVc2#!-qjObON z5{5*5h}O%9fQV$gErmpII=f<^%Laco$ZuG7LYQ`!NF#+C%X5%P4*`OTvY;{Yf$YE= zu;PE1Z!1$l%1Ur}JsXHkruHySRDh3$27}vy)R7b<5YP5O6+Dj$*vvU141f%P5U zGw;YS+i=u38j=&CoH+0Xwq=f5Zl1&Wj9|$IvhJCzJ!VvnzXT1zAV0Ww3$5c7h*vbB z>Yb6#o$oi9Z_GnP;IhvG!5`yJ3)xz+9S-sn*!~vhkf{isjX7F19%z7NGXYu>cdWyq zqzNY9BHu)a7pF^Mjrc2}3(BPt1N^N0kiMy-Fm1xDq9d)hUE<(-q#>r^6H7Ut_+0*? zm``5Hb&1ym-+L1j5H+G_{{^TlRXN&&g&6*^wcV1G#6`?py^2bQY0t)B zDvKc5(Hx;WnwV}XT%-A(0tnva@Z~}uXLS+HpkIp%#(+Bzp*bi(A4mlYOF)?SH5{VZ zKbom)1A%sVJ;7FC!n}k&5@rpWM8Lw+m+bryTP)IMmHDFk;hZJfhKWdws@Q=Pr^Bnp z6LF4afI1UkY3Jx5XWeDiGLIQAFZqk84V0A=`~^pWr4L`?1yexrY~U3#4(Pw*7Wik= ztzODAw4>0W3t%6cA(jlSeVCx0rAHa+Uor4s%OA+?pNH+~ih*)&^Ebzs)XD2zz0Yb1~ zL{V|ihT+XEeDLnW=E#N#z-%^d-*-Lhy@{+{X}OtYT%Ru}Q8i2q$Uj8&iExlO=&TM3 z`aOsj4)hc~QO%tsAr5CIW^F}4Wg0DO1m2KV;tZ->(-7dekr9>e(XWJ0$ZfV-5C%;fE}Kc$I+Q#Ql)P?G%kOaU~k5aiTjWtiL^$=e6jWD$y=} z7y70S?^^%w-sRLuNHak=6O5flB77>fmM^yBR5c-zGyJ?{p=Dtq&YkhH(5rP87)(L$ zTBDsxnMaJOB?$a2Y=-1XDpnW^yAV_h6L=Z}Zp+fT*2zOk>siW0B^oc}JEG_7{ji*1 zSVZ0=Lgw1OOL|MCTIC8#z?Vb%@1;&Vn9|(lhdaQ7hYp9~NA^EeG4n!gl~a@Sc?Qtr4j( zKH~{3@wetVxI^Vp3IRw73*Uj&lFrX)I49l@MOcatC(Wg#1^E2tSqS!ufQ*z<6G;m= z>NP$6x^hqvHf1`zNsOCd8gB9hy2r!;+dG1j5GEFmy!5Cu><3(P)_vgXbn$QKcm~db zCqasdO;ET&Imvmf+DBGJ5z^xaTZTtsm|FlqnB+NCPv9&`RUq9nsiw>eE2B_Q~vF2&bp?V!K&?qAB|FLq2UjN+`;OX^K0b4xq2GE@RovX7-38J-iZT5uqCGv=>z7cq~ zk_}>g%V)yYWe=^Us@4y|E`%b85CB_`*sdEztw2M!Bl`r94M^lG0^6lI46Vl826kV5 z5J}`{s@qTLTV`eFX}+>y&;lOs<3H`^XfX(bcQ3jevFYHPJ3%R%nS2a`Ff*?v>^%@p zIKbSThVHyE3A2G=Wejz9pW#k{VvyCqb5g;&K>uks$SJ&}E*sW>18TTpPYXo)&(%ih zij6R}@)2s9btt--p8*8&{RqJE*oq*LgWV_y@!;M0)e%t1L9-CcF=SDroDE@r6*am( zeJ&Ls$^yz!b~4r7I#h0O?}(T(U@CuOVs${;+v{8XBxc*-TJJv%CJe|Tmm%_sHLNFm zK_Y@>(f+Q77A|lwetOXntovUfH5%^nyyPG|#2Cz%jDZXZU~z^2H)s{zdQRSI@Z-|4 zrT5#xw=9YnO^1mM&C1vLb^hUS!?N>J)1QG14VRsPNS4j7LpFFWpIimR zhHKx}V^N9t0gYa8z~_WLP}od%um?9D>hC!T+L(orC?Rg)>I8@HvRLs4z~J;}_Jtw{ zHFkhOPebo#F9sYq_^CmLp!Z6QV3eg)a!YDTpt+(%=g@Jn)x-03z-56g*MuXm^_RvD zWq_LwdhhHIs3X9UvOxwLhR`$IQox!cL$z__{O9svpS(v{oA^-6NhCD@wuL4y62y=c z&9)zoOCxj3LcROubR^E@@D2dh(J8bOX|s-md3`h-YDU*dAWrb`bwfU0WEo{eAnRL~ znxNKZKSkJSh9R&VO`ck>S`qHyF;;NA4({DT+34WN2hDVBf9b3U&WmG zE9xs1Z&jI-;94{S9+xA)DrAN8E=5m&tC41TM)L{RZcHh=Lc`h&MYDB0@)JTF z`Y;9qO)rsJ9HRkyKyNME5$IyRk|DqlL+VsdDs-7U?qw%wT{7SATlj@*vqPj+CVr+( zinGi)xzW|@9)=lzx}|Ho^q!+6LP^esIig-f)Dzf!;-#1?DfE!N4y z?kWRkv#v?>2JzxH!lyDh@rXVndSp%zmisRoF_Md>UfZj_HSfqO{y;ujXtz`UvJt9v zD&rUC0@kU-(AWZ*K&!yvi{{gBjmpzRU$6yA9mzUo`u&mXhMpFd8E^oiAAM!rMXecY zNrgxu9y*;mRWF6bEj;m_U-gdaZ{~SWj~#WC4WdVjRi~ape|J|zXMS_{8y9(B>eW1~ zoz1ILEBl*cZ(|3C@x{lWp9AHae$EXKXh@j3!X#lgJkc@M{#Zol@53&zrYRHybd`iU z8Zbcbg%9`ZsqIf{74`^Wi;a+0n;r*wMEmHa7KK7Lb54W`s^Mcw}6z=s1ry?Uc42auGu8!~Zg@6dYhCTS}W@FE0UjVuKQMIKe{-IH7dK_#Y ztH2mN{Fp*fcQ(|^0mFXSr82F)Ym%PK83LeKA;wkOv@GV`q>YmN=V;{Jf#h0&bh>WZ z0Ohmbh8VDiDDF1%jn|MEgj-lZh~2x(`}GUv?fuPX+-oEEJ`1S(-e-@QBj0=mp!heR zNyx_!knfK3fqZwI59Irs&!F=HpM^3T+)0}QD#l{vEGEsS9m(uhZY(--CPFZ{CNi0r zi-3Ef$unJLPxdg>Unnf?e5!7_nX4vPbZZ~UqPK>1K`&{oo*l1-r-7pqFWBt2X0*wl z-$)#rHBd(IpM-E5P~Raq`f0cwibVqp@AKQ?fWq!+Neck>Wx%y=0d)D(o+CkoL)M7? zwZ`xQ9D|pbE0NE$Szhw(f92KpEnG(Mkn&9oO=HqlyQ5rkJx<`A%kuND$w-!vS>I$cJJAwSOg^$}3aT+e$h-!UYA>VI?0@L2gI*fq`^*jt?o1thvZu&=VUF zMW2dTW|iqGx#vKhS46Jdb!ScF;T>g@BfIXz2)4aM&lgjPu39>rM~9_+IF}CN_;5ZQ zs`;>#4(~vs#Ke`w)0Jyn%XW2timsmHtK;Y}jw@`W!va1Gpu?^F!1xZ$pnmhi&C6ER zKTqFL4v#&pzCY~lr>D0nT68Qa-A*}ty2S>E z)g{%7-j9%W2B$7LaFcyD@RyCuHsT}pM=t;I5x6`PXNgCurd;1=7!YJtDB}1x-8j{L zVK`rSu`-Q)-?1AxD-@v#SsDkVk;P$bKV!TD$marM<-Krzw1R(ERi;5$m1G>{Vu!Fg ziSu__AJvKN4-pKC+!ep9q|UiQ*Ne&}(9F3aOM z?z$>Me)`h!MD`MMrMTm)aMEb~?=3k&yQXPz4{WYu!sgH7YDcf}GlwVQP7g&$g4yw2 zXp-6SfLYx2QZ!w?y69WqeTxpb;9)O?6OM3x?dsLDk18_lM^=mdh=(Pk>-0VK`(4!k zoCg(6;1q;&!XD%%<{vn>d*Shxvu=Jok&3dFmYllTmYF%9%;wb(_y-g-o)qo}p`B(~ z0|s+&4k^jw#)A2XI+96q9HA7ZT?cVO!(msVLC+4o9}c;ze4hsvID4E(BG+Qss)%)d9vhI)%j8$M8?m8s~&M z{p$GT5*{>c^e}x@1Cr(xCDhNTFT=$$=VAUF&o&cWObgpOC%OJ^e25ov^1!Yq-$J*& zTms=ntB1MCnSQkTJ3kK^lTt7bN9nZ>wqbWB#1Go<%7rF(Xf?(m zDjy-P>=z+``@f1%47r)Lse?IasYPM?c)nvykAgh6ek(@r+GzW=pK-REA#Uh~vT2u_RPEg5o*veSdx899LGQNsp? zT5J`1T?nNvVVvGkCJO^hcJ4$p(sL3tRq-*LSre0s3cms9FyzLlzKMad^02lGP14LhosHhY}6!&Y1{UFRv1ap_gGGZE76m4Qlp=90WkHr|^+a zL)iG!(~t$^d%CYWaS#qi%&Pd5^Z`#XZ>LCb|7;c*2=FlOaKuy}&FL9iMjQgDa@K5~ z*R@}Ca(mTSseb%H6w{{@pfDoNf$**X3%5Nl%zW+lEwk=3v2r}#N%wOO;F znc=7*{J-dD=zqEpcjyG@|Go&Mq z@xs<-`9ej97sO=w;|qT3U@p8O)H;Me8H5t9-OY*6``pg)Hx%5FWm!d8sB!ozUSeo9 z%@4EcWdi= z468wOaIp&VS{*`OH(rHk|0!K&tMr4m$Xt__LEeA!nXD&L-dgtlpj^Q9`a&0u2YWMs z-QlykjwR^Y0;MBju*6aUZmq_k;e{Uop?OrLy>Y4%wktRevN07 z0G%Q~2K9nXgww`67n9URWodQ2FiC|b(A3AyWKs!sw?1HTgncoKO`xk(ogb3sGumGo zF;=N|uDwdwMbJ{H_tzi-9f&s!&({fqO#TXZ(D}XeZ;b=jl28{CjR0^T#=vSkFv_mV zGEUw0A><>FKxe(A)55CyNYhIX2r4ErSvi2FUcVM-Y9vP|(hIGF(9SfH&X($2sC;Y< z^6d)bEhkLjmivTaHv_Ld8Tcz?Ugn5ssFt)}fS;I~%W*w9Txj(i4p4^<>!pXSjEcR* zx}X+~koxM!AeN1AHnok$hAE7ZwQNh&MZs1@uL%6EOb198C^*-h2aa{K?Vm+-)A0^- z)|L0xju?0}$H*R!ZG6yyEHw7xb!hBpGw+4)hWYoppU=fEO+T_USMJgE(J4J+!R_rY zrI>Cs#v=wom9lZ&u~WwCp$ON4l_*v6uy0eSIXr?`Q$jau8POreq+P-Ug9*8bo)0pNW0Z8)!c~^ z2&II!qA@d^A%ycmqF&ci`v3F8svr+Si<$ zy%Rr|=;w(I=f2N9vEKD2Xda@6fF=ERu2gD)ph34sJ%N6sfxh0RV)~8=T(h{q(Gs|~ zPnXsW7fa#w((7vs9-HA~!8$jO%~fY}hit}RPuSeLUxo}~LP~lLFrpsdxOgKUq`NN& zFuy52yhywSJu!H2*;6v{BAX#VR%1_N;r#P7Php(e&fxUPMw|+}u*Kcp zQ5a{c;x)n8cH8p4`#4P61k6%YZ0A})QCI`8;v{M!rKqOo`IYN<1$2d(ShhpLj@lRT zdcaL{XYwiH9J_=udRcS?f){N-oId-5T(*|VMll+Zso}fv(Z1v0aN&XVeeTI|kz3Iq zE>O@C4zSke0u-Ts1U2+|g7d%>!S+SGDXIsVaxT)Fe=1LayCXlDy3=WI3k2`8_ zf3pL7eb+s33}knf#=0BDg8?sE6WpY@GkBbQTlXShXArX>U6wl7&EsUMpmIX*e)%P$ zLxk_-f{v{Teo21vKYobsyAMZuKs@bIBa7I_oW^4z%o{v%7iJYB6R`rmW4%wAvQo<~QVjoBI| zy7!835C@;qkNw1T*6(>fUGNowq%q7 zm({k*b4PPAP#QowmL^R&hVihl9Wgy0r0(!m4uBA?=%$cjD96|FnLkdK2>INjb&KM! zu<1{3+gs<2V@G=W ziFLzI(A8_KERCeA^$IGt4_$RdxyU3(S4lq{tvA!5iC?2ST()p^y3w;?cr9Arovt?U z;bJ-zs_JZdpnyv#p~EGHCkAgiIv6Z|$K zUCwa>8nI%%Cj0RRqdfS}@Liq~H(lx&GByz(}U7_w#5-~`W3 z0bSnWC#;|b5>Hyu{n}0CFcb}uXI=pRRIZbNj2?l37-{lc+p-W-0Zl=pz zzRSkzTz;{h?$+{MFSq5H%*N#hr?|l`x|_iR`T||H@$9e_zk(Owb!xl7;E+lEgHssA z!g86~3hVk>x_g6P@eJJ+R`X4Cd62t(iW*d*!NPL#1AO4&iK2!5V3NDBef~7JeV)3V z;1`qK{evpL>*P!BrlST!Jd-c-C8H6!L^2OD=rrOF2Drg;ZoqT)233+VPxkAU-2jDuL`u)IH-*lUEj!(Q+n!&6 z%M2;q<#JuP?K(r&X}Z3X2dfaiEtk^I^yZ0+yhARf+o3CY6}U%Fz-6s+mrO|Ft}6=- z#B-ba&Np45e#@lv;j{Re{$5c2X5s!LlALKjWak#;c{==sksbD^U@scM&_6tWC9nBB zuCs7``%IJl@aSTQ{W7Kry!mOt2ZhXGm4!nZ4&T z)A+Gf<3Z|AH|=%#hiIPg%yH_zoc`ux!s*9g{v6LOo;e=mvEr5EK{4TcQ%_^T&D-bU zH4>M3cg9`xO7P@fy9*caY@|6x^t_0krn60X{2I^jS-MyO&aDqkQC~O{hV}VF<9gf{ z*Sb5sY7HwJn);EIwN2AVz^M1&|raH=52zq!#;ao;bKFT=9{k z$?c~6Lk!jm_%QC=Rwln?_^JRuoO%9yCJ!W>+2o){t$=AKzWQMvC2rXjxXAF6b>8k6 zK0oeqp>+nnH@lh~v`}(IWPbA8ODtj(r9LUql~IRu98O4^Xl!UvuDQf{AKu> zhR0+{qxLwSJ|c~}#M0xcNi5xRY4i-^3~rsz>=gqTz2a)_<#*%m6&K?gUV9~u7o(ZY zcWB)7)@DKsm$K%g_B-c!+@p4V{-N_tw}BHYq{FxK>N08A%cMzen1R3J&B3fQ-1byv zZ(i0Fe)lrzl!C$ZmwTMD(-W6Vr|i5tap7vRi+)YL*ui-M6;G+CcxoJr0@&~(TrSNB%wL8Jn$t({*EK?Pfqru3 z<6?z019$4kA#wSGaWMh&}GxvOnNYS+0O=XftyWdh1I6JTyG@4h-C0+nw`ibq*dH zAj`j#ra*>QI1UNG>$1ja0Rd~XV+0rU(*(STAlw3ZKyOE~_y@T;h`;20OyE)mz5#6* zUFa8k^I2>iF;=;`H~$cmAkgST*oNqh_5e|k4bW*v-kmdqUATnjp@~)t1X&plt`31z zaxcCL3Tle$E3T|O+@}`j(}+rfxZ~>Vc#w!Yo^}XWqdZNaytqkMdAtmK$&bS$>cFhT z!|IyzFNoLCRi^Ta=6pNtb?}Gg{5T$zA37Usw%76V=;e;O{JBgTH;8anp4ch))9&fOOu*C%!L}T6m&XNiF&$oL(*sTy3HWe^468!m}Td4maoB zp=E=t@z-=ay#PLJs4xZob~uvZtIho!t2=+|FtoSXr?2*YF8fy}_qExdwv2qP>#q;} zP3!OcaHK78;_3dcwf*h0zA8A{oKtPn&n^8$%j4$xe{4%%==-nM-*|rdt-y!Hi}kyH z`oEiJKljBS9hz@B`9k(j0!>xEtl*n9$NuYcroTU%zui-?^mgmjT6c5sZ|4rR2Z!sI zezj}viTRuzv*+&&1jjGw+qQqTVgL7o{!br!>g8{*w=4wL7=5>b|Ma^C&yKN+`Tw)! z8{e5<7Mk4bEDu#JzPm1Trg^C=)Lz~{6f$Kw+gk#+^1l{3_LAXGLQieqUmOURWp8}> z+>b9ThC(mz|EHF=mj0~vT`LUb?RCNS=Ju8C*?l{H|7ZGWd(F>7Z?*sa(%G-K|Mf2C z+4dKAFP-02+MWGj`-6KHS9bVpvC@v3XuCG>k3Tu|aNBJDvF~sHRW$p>R(;>n$sMl# zrM(^QSDk%SO=X+W5=RFFTgKIsXSQuN;hJw^T|N=gypA%Ui8oBiY?MEnj@^OFLH< z&wnFu?a}$q>=^uqlW*^w`P9;holXB^>7mxjw+vTzj{Qg9BQGEPO8*mW|7Ub5w=;O~ zz534IIkec-S^m}7mpfN{&H2I0Z+!i|HEm~0-}|RsfBucw|J6DEZObn@fB3e+wCiW@ z9Q%!yzc|7uF!10j(9Y8&Z)kV8E6^5_18qIg!dHvra3CVf2g+=vfoNwpZYZs|Q8eCa zZ)fk$)K=wMsk(Mkqph)!{uFL0LeEK!L{Fl#32=jhs*)7v%v@L#SwLoBP+_Dx80=(s z6~Y|*x&ob%5T0S6+fli9Z;u>$H5>`SBG=O$l_?amud7Gy-5HYG`XZ4~cdv|pe77%( zet4YA)dbgRq1C#j*irKImSQJhfH%+Ed3p|na&huVs! z1H-n}7Am7pnhr5P0)j?XP{@vO&vc~glh!5~m_Tm;>rysUXf1tphmEG0o2mW-@G~lzkFx432^~0%!0XKvr!12y9AIo~@5ICD;H5VGx5u z-3d0v9y}9}(K9~+TSW>Q-AI#M*CU<%*F(H^kw7@y6X}%$ebG=`Pj^rbL^}F*16lBF zBWAd_F9KvDBnpPm3*OTH5W@#V3y0cz0SF;g;1~ci2|Hw4~|UwS!JxbYoK4X zTAQz+z`y9GI46D*9$+PXDl{@Ob!B*P@TBSB&B4J7rh{W+h-q0R&6sZu4qnZlGaalE zfr@Nrs)ZLbu{klT-s{nxzFt%Sf;PRUPq>w3IoR3WzDDke1UtKx{i>H5d%F5VQ90VP zJ0!PvMxwo?v@_8r6j9oTln2m0)nOtVH?8;86$Y(aK_-gnW9^m_`a>9yCh?8J!Y!rN zqSdH0L~Yt?%ZpZ9%fvT<5xH>UCjcHbNb5VJy|k=RytKbF8tRLHYRJKYzHT|()Ad?6 zf!EU~ZU7-VLnw1JspoETPrK;UgFd(ps69FZT^NYm+1(rJp!SG$ay9rG8ViZEgf-GW zr(7Z1Wa}FOri_$HoB?VQB;=5fQ#b&K|NCB5-w>iXF>*r!oyZbgC3Nl?dK2B!CQIrusUg(Li@w zDB2e3;mcl{&=3a6|J0cT)a9xBsk6H+5~5w+5$@TGmEY6XgE>)WjkH+U9|WtMuattVYl_G{ou9G7EH|h3=!I7)D7A? zsrw`5jDy%Wkg9S~*gqNPfIP12{h_X&a5zLHMh^AL(aznaa=5Fry|YbhnfStE!XA+7 zUJavO7WgWN3z~AnP&5VIxI+&nESb~Ams%9ys@~|L)n*du*iy9GPHPQxv|}nuotQc? zZK*3A)=Ta{8>)MCMiZbBo-yZ5-6)KcO6%8w00KfrN`aI2pyWq!5`em^YnwKC3D63H z%Rx(OBS5th?vz#(t)>CseyKyD@~Hrqr%9grT371cNkS#wItGcFFpec**ncZ706g@I zZy84krj9@Xc;&Qb?8!ipotp{{BnbLi7!2C|mP)^2cFFBKmmL#$c+JO{2YmzSbNOpHi#{RQG%JU5n$L-{$Bqz){#FWMWyZdG{) zZ@t8vHTJc}e^%%#z)0QzaWZm$I)Z^WHrL!|&LlutdS9?+z@@IY^^lW1#9~3a0wCB1 zk+47n^j;>;`m+dT1;kKopoj`#qtpmI=%q1^VQdSacAA z0XP(TdqY^)CTwOMs~C;R>`bzt`QQ=Ag64xH3O)iuLjGJ06BWfB zDc{TB?lXg-Zp;BjtIATUNC2;RnmXgmGZL!`5h{7Q&{Cst2c8~U${CG>=^3&WVS4Z> z7L?`(kfqGe9&mFEH{0nm(8Q=xFH6?89DJYl`3j6RMCS0jFL~DXz!p{Dtemfv& zxUC;kOR?SbO_9XMFo}zX)CtcgGnTz>#B?S9gz2>Dd@j*D80aqJ>pdiIRAE~zG^vvV zv9gbE#1U-tffRM51HuzTEhx3vV!I(RvJi`jQ?_^V-u{gwOv6S7BV$Rx20@P{KP%>Q zQj+jhOygY2s@~8^8%sNX25DFYj^sQ1TNjG#?(BsQ?jc=N1`~BrA5Q6@0@!ASt%5#isvW~ih=PNr;MtIhsTt{ z$bNnpiq8r25W)tggbIXJ%$Ek#ySzE#dQmFN|B_Um2L+CBZZ_LpFai7l{MGT-7kWD+6eC_QqXN-1mB=*m-H51u>e++LMijT%5o`VDx%iVc{`ELI?>gc<; zsPNZHJSpN^g!bnotT2!j?~eg$lN1z~)JW^=>gzVTyaETpB;Y~ZvzJzs z6B1Mul|3ymQJ}%+QqW)o1n>E!dBa`jgd5b&;Dvnjqu2-9S0+@58Wp=xV;I z9212skmM64+<@{tOMjtCD>}0yWeD5gSP=M&cNuE3V&_0naHZ8_FoPE}j_FJzgBMM) zS>4Fs1fIJ$fdu*^I#%*UAF&I7yap4_*twWNNUa@7>MWo_9>e(AI4++y6ET824!GSq zbaIRddX=>@1;ieBChkH_0zP_umD4ddP?Lb2$~M%*+9#Z1o_GggZ^gGGuq_$~mH_oO zQD<<}H_t)vcLx6OdG;q?a0Lf7XB7}v?0wpBu9=z3A z?>GE9z~ar~tv-6^$H8m%&u7OL-9qnACGyvK$XF44x6M*^xk$T!xoU|yQ zE>3~EURpRmw*LdHyaEtSF~F;F?Dtt>mHV-afpObYX7m#D%^F|7#qV<`TB#2JDxkwt z$&QWT8d~nhq=BKUb#sHjSmrJleQ0fj(g(smK^srEjF)_H!!yRSYFzQ_gk%dr&=d4h3dcA zOGsL8HG18~S?}H>t>;LML4SWg`V$hHWBhZ6l3V)(&T}6 z$#`~1J8PP&7mJ=ohS52e*d9uO|4ldvC+1^hp)(AEpT%#JG{9p?G6WvS*rpC#FrA(dS0{0$5H=3* zIdPv+ZicHFgJgRPc%TqRFMig-lTZ_fD`L4N%;1sX}IqM7)4KUivnm8;w(!+oY#^O2ZUHf4R?Ps7I`7=Oo57+ zhd@^#ariERh|?q;AiTd9X{NQ>vAaH;&jw_K{;nwP$>J?WNn@b>LfS!@@G=h%zRPn> zwB}~w0LO;#bhA2(G>e$ zS107->$1E6tr6yJXt{Q|FcRv5Ijy}2ny*|Axmz#UK`zBzsE)!64(Yln@LCtddHA#f z-E0yL^iunBt<+S#b^Ru9d7*Hdk?gLOpo5n=SHo0LY=wGTjw^?dprX7r^(lDN43G2O zMNBSj!kRN_AfT8|tu{e?a355po@T!mjs4f0*-R`2##38ud@;}l{sVGh4-cA744woB zJb1|gMp#GFT_A;zf-|0I#b^Er+fh&z1B3-|nzbvb&)*ihpW*a?iA)eTXyJAPux-BdxLi9m61>M55VTCWSTWGitX}W+z?LFPXlossl2<+Y+puO7H z9qxg_2D*+S;RNFjK}EJv8@KlA?hR^`q1Z)Q&-FuBJyF$H%y92$EPPpV7Un4(SZzw_}fD|yb1DgPnI>Z~w z-1SvzuamrWjj)1NZzPjbMd{YnTZ&&QVe98s`W?1V`&N(>TjfjS9!NpHT2*Sj6xU@5 z{k7&M%e5unx#<{4LK)iB95BRhC5*sNCPn8Bw-Sv&6x6Mnd%Yzj5vt3;i@-u+Juink z!#tDq)f+ZcV>-zyG%86$2gG(xozTg+sY!8WZ1%DTBcx8|hP8WE!(lg*ChdtNtaqyM z4*mf#=}}o}7}la;;kIoRC64VS+wAzVD!Cd@I$a8 znfxYHbOm1Ui5D;{96}8+vlvYMX;_KQ3So-K?27;w(QqTCgW6fTYdUzG{+JKWp497< zE3zsjqxh&ns_VK=&d(^}9fj+NZP$hOiTOvV+ZLF`I{-roK$y~Qc#(lTfbGNr-nMPnTIEbD0JO51W>O%$0VdS*8r%@HmGF)*JIvtqVTu)> zLl6)Crw(ER-lvyd3`M#_2vi`a1Z^%%TL6d8#$9gsfjhh^qdh#IFG4HFJ}R-5Q~)T@ zx)LW(BACQJfC_g#z*I<@loDovmo@ATbih`S3})||#3}>ARNzGWdtf6Mx#AB@0nURH zsWw#C*WDL95T$+C^|bfP?z8Coj>XYNAvAe+i( zsLcfI&9uM84@PQaqvrU%RAfku9DhISw3c_ZY3>54T~9*c$kJ)Wrk=aN)`5lP=_HQG zDU&s-mudo0wySg%kZ&l0m?T~( zN5hERL(6i^QVrsy8VfNWCARHvl!s>l2QAUQ(F-oMIt%1EXEF0MT2` z^&9FSg6soaZ?J3>20)z1faV^o;#RSc70$=Y@ql<9GWii8k`` zav=FIQA1i@J!s+uvQ8F5%_Os^v)*`VX>newn~E*^+`eqA>XFEZEQR*Rib-X465B)yM9yCrVS0Xg*LL4K^obz<7ouJI4KB* zgJIyyNtwKAzzI(lEaN_dt?J0epgtcF~&M7y@elae&~jaPVkCW_H-#tgl!SY zzZA9&YUf>9Y3t2;J1p+F)hW!4jr7U7l6&Jtqa2y@=)RUxeYsjY(7e zAx9?G+y!{>UnZb}4x!p$jAqpcGs3;ejg*17w6^pCDO%-PnR_1M_J=GUXSYSA+x$A}j ziG8j|Fpit|D22yoF*nUpOVc@EX-ssgXFdz~2-=%~)Ne5!*U}eiTo%vMAH0x+Z6F|KJ28%n{w7Y0kFfJYXK07`thkSlo{btPS+^ zEN+D1lONv?6vt|QOzT{<=ER4gnk+Iy6VjAP19>Of$7v8D{_vAFqV( z(KL7Nc)@8Cq+J>y(w+)*HeGz9QDP->Sd+!DbckVruC~6e5Ew!j-sZku5s7wP=*2zV z-Pb9UBuHT<2&3zXitunOCJ|3!eH7Hek|Xq-qz6Efi}dW4NfM)$kS)4cP6{Fjm;zS# zIlRoZHc#O`aHonAJJ_b}4dR)j#G)vU(;k-}Dft%J+9@-+0lP&g7D7tbim4GkM(?7* z7ORAUfw|m_Nuo=T=48hsQ8HLS5)+DT@f7Sn6=FJTFrlh^k%O76nKK?Qn7gRZEuPMq zlc)!w`vwtIAlgKn>odZ2-q_Pj_h|ltA81v00_U90&d%rAS^8 z7Q3Nwy|1ufo3KfeCRR+BTZ`6Ow-=NYutHWq%5OQV$!Sm**F0^jc-n5Y+MHJCWow>s zK5cc_ofS@NrCo@;nYU8nbAS!5p4|b+t7H)gUT^P&Bu(*7h1kQ8s9$aC>Vs_%%g##) zs7WeEh_MoOL~K%h1j)Y8fYm3+g~1*)rt?YpG3XTul(H-h#Gn{eq#H!=wonvLfn4d@ zM0FYp*HhjC?v!hR5T$R+FUaMnh+OYlum)^Y=Y*);KzeGNn;@i zK9RcsGLj}$_d@v%13jVdDs5krNtH-$2kE!5VS{IVgL^9*gDbWamBo$1Gvq!KsRW1} zQzAR=7a+4$@?`pj3JB4l#&VaOHbBo-RjI^XGXgFYv-;*lbH+~+cWC2BV(or-h=~fQ zO$($dPLCZnofw-o!}vQ!zN^Qi(Tll9;mU!+Xo7Jrd5T8Uq{iN!HfT*WCpc;rQQ2}3 z%PYPLBQVxcCslWKgjyp32uHv`wvS^;<;JE>m}iZIzlbeBL~sckvrrVZc#9(6rr^{J zBB2E$@e5VEA7m`VViSG>J)2dsu_DXWIv;k!I~Y@7LgZ%xs3e$n6VF;| zM+ejNG#C)UcM*$CVG>Y<7D1oHy5nBL{tY_ym`Gq_=txR7N&||_LPsAY1S*84G$ABs z(PuQr^B5nGvwr&F+!3u_LSnpLLJgB-T*0PW59Kk`-6z8+Raal<<)v>BvG@D~R17K$ zijRAEaY6jGwxkU7r@;Cao%M*5t2BP%t49;BUbod#=dIbaz5%s)0TJ96p-5{FILfaJ zz%1v&j&pM4V(G?}d8T!PO=r^d)Y?Cf`yYdw z4@k|uoltwPQ-o@qCxL=Pm!?FMFajsQ!-9}J+CmYcZtFbuXCQx)X(_O~6Wn*wAT>ur zK{C>kdXJtvDcz*ECm5n`;3M1x41)i)!z=(3*~czI!duTM^Ql+wHirV!NlkFYCbSBvet*BJ5)%Z-d(IBeSl;ZZC7N z4RPEAfq6WR>83MWA|s#2t3 z1(hKHjHdv`1%PqOeA;|V08$`LUiIoOwYI7MqI0~}s;r;A2c(wUq}~bqijnu3jW_MA z^qC-mkR2Mg@tUp5#DN}}z+)^lF+f@HPtku-OYIja5ceXQI{;Ny+)hpQnG0u+kDMK2 z`wZYa0M9d2pLfUf$4B&I7la9}%DRC>G%6fZWqmOP)KY$ZtRD$>tliZ3jJ8Zlm_|qe z7L_3D32h^2x;lAR8|Fn4&FJ+jB4B2*^N9YvHy{6hFi*RU~MH$ zszrlP6!IrLQ&3zWc(lV}me?`a;G;UJc3s0pZyoH~TPT2+93I#a*cl{TgE?(O5*LKN zEk!a#1W*ehkBSXK$CD*C2y!x-z&!%*}J}wRSD!wl3NEZ zNE%}au4shVm$2xPZ2M9X47*}%ZCurd%4R0UmLtYiBMQK5hCbHb?z15IaY6}a;Qct3 z6b<%?Y(LBidZ7rSUg3UC43!9=I#v(~;<kvJ?qj35f-7pRJ(})+np2tkDcHiA|L*dp-s#P7o5QPOL!);z#B; z#6Yv+``WJurjf(iwBmUdP)3AB670ncJBs#DAZ`-)t5on4z^6)``>j55;*)7KrO~c2r>P=|_pG)R z;kruyXrlX*64eSChDGl*g$m<=1TpNUCQx*Bx~be7>XoHPyyWCp^6^Qz6$W`AA9;*J z@^doEj06}4ih7FHQZ-4pQ5(tjA(j=CdYe?PKNo|j2D0wW zR3SJ_}ZuDj=QB8yUR7`4ixI#zDQ9qU3p*)JPjh4S+q) zvL4kFK_HPh+0#wA6CgE|JlWOLf#``(l!=E_>m=z$s`3jhsiq)j(OC&QayDd91fgMs z_*X+_8M4?QcuY^I!bP1Z*@Uf@_(ko8p4Zf%7Rag4k6Usq77wkXB55ebmpl`2TzW&@{XOJI1%gl(lE`cBj6|-J-=C_L z3YRO%SR%P3B{OFYu)&Cj2-yqWLTWeYzMRw~oUfmdtdow&4Nm1mnFlgG0FlCEAOU}p zt!rekD*B_yY^f>GqX~;2$;7JZ2Bq$jEPja45$-3VyOeVW0}nCHGPX{IF#>vw8b?4) ziQ7baVBH~95Urr0b@oECCh57Y2g8g4VUVTX5q~K|?XKMf9iM%lcJd%&EH^0g2%|z| zGXAQ0g1I=Y2)su%^(3d4E8vl=oc!|Zit8HysN)1{GsNefgnkuxnZZ{EsDMtKCDHK) zCf&PfQ&S@)!jn0gfa4MiqZFG#u@75iRSw8V0oLjTWQHcM-PVN`GZN3?Y}@pp?*ev!EG( zj=-W8vD~$wG5u?eSt{#6Jm5L9`JGUY(f0m2=%_*RD6vA=CyJAuETZcI!NBf7Bq$fc z#SFf&01QOn09^yUXVRp210@Ooks84@qBU!yXi5734Xa(%8>+o7;eLl411mX)I+2%I z`G%Gt2o#26ha>(O*^1bKdzSe%mGZ*p7>fPx+l|F>PW&51a{cGvZvc2-r@+EVpuoZpn4Rj);R_=xo2R2x!@-U^VKPzYeIHR4fa~sf< zbq(ul>by;b?DrB2jNMFeRuooKR&k$IE_dvYeSmd@IrBE+=`D!rN9yHRH<@iLFp0u) zEM!B&?4=XNJCsKi(`rYM2ZbH|hBP2LdE3!mC}vnxlOZmF8D=?7lr-vZsokec)9M4T z*0-sOpomaE&2m=`ltU!3jjiO_ z$yKTwj+h!xn;TDiNm3*k2ojLuHmkC7nOI$l5D@+(ZBwv(AYl4^bWKPMh%ONZR5Srk zX^3l@HjZATa7XND4|qzc6)_qP>}8^SM^hjeO{!!P>VtnRC^iNmnoW^9NRdsG>iE|X zb^+(Fk~;@zMhX21FeWup1FC=6kRw>~G!Y(2+Gm$56jVRK8VT3&ZA+1sZy4itsy<>| z{p94OO{s24_>8!$3z_&sy{*r}#8%wezqX?-SQsd2#fwG}5J>@BaahohB#2hkG}Twq z4<8uJbBOdM+g@t-8Ngjf$+lKUiOoUJBR)sLQnDj1{&3A$s(7E!TBC@jhsa6QAYvRa zJ(bD%%Q2-Wgh*{v6B~&YCh{70BgX^0q0(YS!IY3{ zUye}LBDk9fJAhq-siH#m(o>+U{g?znvrgF~=O~~gp@ycW|EZ{tM(_tw1Qjy>gp{e0XfOQI^eEVWu4%Q5HNqH()hbg8m~tSLh+b6! zp&HrHHfJ8v1B2+#apTbwSsVsrrVBKCUk^e{=C@>78FEV9tJm8o$PALb>Vl*F6pi+@ zb%I+V%&`qtZ^2i4d-~dTB1~!$-QXZZr72Q$)R6mlH{1@&T&WAU@b8t-YxE2j-(RfT z%CXFqwlx%u??L+UMv_)x&lMi+dqX!GDRT-e>h83#8!3EBI}0NUO*%Fk(xVppNu+oY zE(P&LWoKvv+#tM*KLPD3&`y+k<*BqK$CRP?Eg1$_(@UPJbe+@`fj1OXdbi->>jSLg zv#z3C%c%4rnqZP(!LIfsGKIn#$qL1Q677|e2^lG3%p~et@e@I>6Jku8aD@}~4tMoI z$RQ5~WEC)xc>5GNCJ`Z^E({AY00oIRRMjV0kO{*(tD5kV2MZjS4-XJC5yZfAxk3?{4ux{3#ODSJ z*p@>)mkSLEnJ}UKVSI`aN31k)m3>wlG720e6^=Im3}#Wu_&S}kyJpf*u?+F`@hVPa za;AR>BoG!7N~IFa7!45%tYi!j2&oOZ64wo26dc^5vKj|Hc{CDzv#nMOhAEZQQz-T} z67fkkf|Qr+X{+g1El2Q4#};ExP|YEb8HB_rf)h9Q&lB^~YPIBngL_o99Z}O4;x&zj zkB^)jyHEk6+Sr8*>?hR)(18fW_mh9RaPCNjo~si%kDVx>&_6^cU7kI6eB=UZ_M@-r zB6uNX5OsKyp!H7p8ZGR&CpS8WEV6b7a6}_A?gEPj;oe8{x-UP!Q)S7+?xi9+8jP6dh1=K$uby&PZye6AGsI$$em+X2+T+ z?aax(hbV&=fpXw78TbjAU1MrUSVqbV5B#@-H4bvgv>Mc2&}v~+htvx-HzAHtjDnw^ zLbDN!V>`sAnvotf#5x+!FA9WXDcyB!DF*Md;@x8ArWGE!{l-C?pZMgWFK60G0(b${ zv}W>b=7??^=V^R_TyMuuI&`y?sc`}7!`ub^@%K+A1$pa_pS)lLuhSoA26*9uk$7Sa zWk0Hlh9_kVWx`Vd>0r?rGvrKTD2mTX9FjAe8C(2hXJxrjs%vkDE2WQvwJECy7Ek=6 zJW4RlC|d+6YXMTPYIS}pgOcu<0@4PO)SUZ~>1$A8kqLS5 zk0myPR@4VPN5<=gru`866iJT5X{ep4ojAK138ToDX#Y6cD`m`wS+YeV4=s(OIp-2&@bzR)4D?U}ORxgO8ha5v z80BOW#1JZSf?{C8yzAk_n$8PP`Ky7gZJ_qjR!x zm+r4&OLVxa2MMO>m=8qvBUf4R;$lwW(b&9pAI-*=k~M4AyaAO|rbcpOT~o8?o=t}Q z%-bAPA4gR#aS4TG;`!J{_#?3B+ky4|_K77#UdLNeIZLw-4tdx$l(?>BY?ktygRG_u zj|n|3tRVB+6lC6mVzTquD4asIVp?IV0cHbf6)i+%iUx9-WE-@$9AAeYtgN17XC$fF z-v@7nkpv5*Mg>t|83pzb3tcqW>hD5CK)eqI@i+!?M-<;5Hj!g4;eMxZ+|*c~wuI9! zTUCZgq)^mp)x6AM2#C7lKm897AK6X*)IF!M1 zl#}FI;t@Dl_9Ezlon6HEP)%I4!@h>Yv=I9Zp}|Taaej1Pbgh-tM<``pZ=IWpH*%8P zM-AU115Ko!(u581V%MiEb`RP6VYcxCsgS$`lRtY27!Sc=+GEcB*iii}Wx}D#zlvZP z_*DBQ+|d5vD1!6zVTqJ85(%Q69o<+-FpEZ9iDWdUp^Xjo8=I|0oR6{P1S>}RE=hZx&;YR?%C)FvNfrK!I~9%j9`=O# z%Bn7iNJJ%Y00?{2m!ciQu1{h-WHJ~~fVcjHN;n9|9eMDO*wh|Vj4@KQZq76Zosi7&RHx}eMWJr+!kn#86~y^awxJX{GN}XU}}s6CW3=t%wTJxk%!pT}=tV=_D*oK6-i6-+ti0?#f zR1FHUrqa*>tUfCaZ{g59(xCDYyvRX$#1VyQ5c!ngD##dz5~XV08&W7Ef}XOVEoS@3 zq$%VHY^wy{7OC%;xN6amECnnu#03eTs3?Lah#2ByV~9zkSljU&B^e3uV6V-YbjROE zDh(28jJmQUk>{KMM-nU1)n1CFALE3tX^q46T($3devs772DA)0$@k zM?2Ko3gc%x+z{-5>`G;YL{aEUwOgu3`=wyYRu~&#Lb6OKw(**R3E0Y~P}fMcoM1jk z@FX8IMVX>GtVt8cu&IbqV#4U3ZAmetP;0s`npeb62T}|a#}lDCn8d=P{PjZQ!y463 z%!dh9q!?Jk2B`@lT*x)Lj@0ZZizf@9+7v)7tl8uOo*(SBDuwtSVl$pu2PTDtQ6B$CK2g>Y4a`f3XMB^xSLHWDW)9hZqwozQAeJFr+pSo5MZ9wnU|aQdzNY zvW(C~woEZKJ4luT&J~u@ccfAkS19bOs7yIlKo~Y3O~EI z6Da_rEi-+32C~XV@w60t0+b)0V8dd7g;Jg2dGp3A8XAPf6cQrQ7FZk4`6z+Ba>8Ki zr@DRGyQtU=W(QUUi@8eDllm)S0D4br$J*gxinqs}qC>|(%LQ4wluwL*m6Sdw%&C|1 z6>VKv8wz`WECrSSTbRLu{(r!X-uJ>x=*`EV4V!MILJc;Ba2yJ{NrqaiRVvh!l0Ofx z06gA4)qn>Aq#z@XUhedh> zh?N6$AM!b;nVXS7%~fs)Hk#i8irNIt0;EjJZ~=gmg$AgHYVZxT6(3nIBdFI+uE-f^ zjtT(}B>$pRUqJ({E zR1C@#salimhBW|*#Rb!fngeuu1?VO+skBIH(6_2tD~dId^+@zn+%RVUv=1|geu+cp zsxF&#_}7+871xqy0G4SHjmc@6w9}Qi3y>zNHw@)DP9)f zB*Vkt@GqbNMxp^|3G+ak2rwls4Oev-_V!oTfFINGI~4v%|G1a(cq%JU4q!JI0z#}H zKt-UGAVJX-P{D(|BA`{s0cw5-bElU=5l~6kx~Z@nA5z3c)j{fBs`HZ8MfTDX5+>7O zg-5Ijv2!BEskzjcj`b)pLkZAwVFiqdbVYi8=v6B0(%t(k)MHe4DHXrKsj4*QRBKkb z@d^(DT)1a1N-co}ye&TOkzpyWI>n4d)-s^q*z@~+(}-L_j0=#G^PnJsQ3L~*ZK*VR z>nDJq9L@=q@lL-nVZ?&^o{n@DAKobk2#l*vYOZ{EAR``np(u1s!}`abC3&_^4?E+Gj(9=ZOY4&->e?Xn)+gU%8)xy2FMKpJ>i3!Yze+R zt}V&*-?l${-azylW-xaQoE72wgklKD0VPD~9~ic^ce!)+v@mgJtHqpJW4>vMrbT`C zJIaZ$!^aPu9lVfmB%`v(yCRXa%1Wo8eK495_6FhJ(?h!lCKxp#NDlUN_XgoFL2Xwc z0zwORhskV(fB2>QI&cB!EFseiJ6cJELIG5qnL(Bu7|yt27=BZdhbDEB&$FosC6kcy zOAMi$iu5H?qkuC=jcVKs^9#Z-w{91k|1#ISdOBqmVO{2$SD353yFSaJ&mv0ijJab^ zOs9mdP>?2B9_!&3P-k;54t7?0nX{b}PTF^vTD6)`46{4t_Tdw|)2LOw33vvlb-ak) zbfEOe@q9|lyMTadN_C z#SIqF7F5o1BV|=R?oSl4!Wy(H1-I%WJ)zcaa@l}1dgEr`BtlzCN2|$u*F@H!d|5zN zJKzBzoEF>>E5#OU*4VIfUCp(1bOIof^R^LXCM&jWHA-#r70PRhrQ@sui45E7!IQW6 zRQYF97VJ%Npac;})iuI8{?w8a?f|E8@DlNK=nzLXVoO4eb=2uqYcg_QN&WZ&9^nTU zr|0ROC|O z`P}HNh*q6Uy~&aB3(HfzLmd#;03Re{ieg9%L>-0AGV#B5U|cYl0h^|jgQz!y)=(V+ zLlWE&lbw|i2$feKA(E8SqO0$m5eYj~u zYQGZa0@7Q~)`)dv)}%)GtMKl)&amQ@|MK4Yft|g&E39)5zrt6>_|?kqFP1rqt*3sf zwMYX`1`XEiWj`ONPH$WJnEQdh`kT^IP)+!bsqM$Qs+pf?fkYaKT-tC~gyD>T*57_A zecSq9YRg|ad)&5CJpPN;mbEXrY^aa$pmgI0IOO*cc)70F&){k~96(L>)5=AjdXdQ& zr%=a9|7rJ;Ju}zV6ke>((|yreo>?)pRxZ)~gYEKpo%=HjPZ+;hT9v1B{Qmb%x~qFo zd;x>{iFS)^Gy|`mTv74L37@ILe`3j0QF|hmQGv{teBCKR*?+KcJL$V(V{RTh__iIt zK5GB19{f66ee}!4Z&JH&mY&+B)y`;JvdVwip!=@wq3=7)x>xp|7=9_&*76FfrePBD zt+y)0NFR$|t%zTJyE?Z-x6hZp+3{!I#;@8>JzM^#j-l`K0k+}mhVNR!(%)$?YrC`t z50&QmW@-7ZSEg*E59s;hyOtJdO8Z6YVO{<8@RfeYKHn*;W2E8eQ})1)q0P?6tkD;Y znBRc?sR*7s`sI+(GG&{5sNQAstP}TgZS?FG6Mc>rrJIdEiVm#QWxF%X#?#w$zq_Ts z#ayEM-(goCUM+uE^IP2mr52p5Twzq2oJK#ngyA#c?xQu)2FMl|_Cz;s8q*&ShcJp3 z=>m`pcaOeztiZY8jlSpnu9Z67FpC#YK3g#HnecngDF)|MF&6Pl9{Ncx0i=&vEB@3m z;yU<%UJUrz8eERJZmqM^_dnIr=Q|qu%-2lWZYUj+@6z>eYoDz-v7+MiHUV?FSx0v* zn(su9o9+45qu$jFqL`6|9C~|sPWegaM{ZyWJ23zFShZGitV$Yg`8~rGU6Y=|m#?=1 zj4RKjf1SbqMcS@EKK2w}UQBaz+TQ`D-LO;;Y@Y`P0Sg$*3{}}c<7DZ_g-`g-#sgoHTi9c zMv%oT`f1H?Zb1vW@oByx!B-1R%KqaeKMyxclWXIhu`p`?qV?3Hy3qnKQNuG`c0P5bk$waTvo=o^oWzRfTD zvfgFGBVFQ+z*2%Ms%d;>$mr;JgNmv+Qek<#po)*HVx?DI); z*tnyAuj_baXr=DUt`me;*bDEU&~Csst9Z`nsy^}023PgbR)*mnjXjDjP49S4xB6XE zz`ojj>$Cc;O`cY}?9P4ExcjH?n4Mdj&}Ox}ah+X&G2mu;fRTyoAJk4DA{_rf%%q3QyYwf%T6SG`+F2fNo{r`V620QE z4U0&x$OlP3HD&t4m$5(T`#SOc&tA3(d|0Pj9_@X$yic3^J>6gJscOS;L4By@F3lm^ z=;9h)&@Wnn4y*SJ{C&~ut#ieW##ew%Z})@?D-RJ~C{vrO>-zIQJU-^w{D;?T z_UO#JMW(HonIE_E50UGJ@0_sx%2E0}Fb7z$(b(`8(?8YPrGdYA&G5~YAO75$omV^k zuS2UJ{P8C5(C%EvFB=Zt1>py`Eao=f*BVy_t(orX#cbD)Yd7Qm5BUBM51;v0{A6GG zZ{^nXU?4M;sULnPZPmJ!|2FVl>k9jx%)ZPl+<0{TTh?=?Xvv4awQJ@p?>zbAuYBeG zqLu$}auEeKc}^<6v>H8+p6IsfRZARsOq zHk#X$d&K@vFP&Nr#Kn|wlfNkq>!c6A-ZAr~H^28p+nbrG12TUW1Il(EZFBy()%K2k z$6p#+?Wd#Q8UNXQBD-Sh`Gq0-FB>jrbseh4to_kf8%-6vo3L4A_rW^-M6cjpo;YE{ z9{#gk8NX+rvduhGKiyE9r~Ae?!98jDy3$r|KKj3~JsAVt11lUqZy?O@WF0O5ImV{x z+mYB7wdO8+6l8E~6Tbp9MLeUh&9tIoWa_=_iocwCZ$(Adlyg-@$602ro-et7-VpVP zc>#j7+PicWrtl6@XdL2_X zyqI9MfP_gKyXf+4+K3B4h`S>$oqG4tn$u!aSTx(mfADOzWW6VOaaj_kqPvfVt7D`x5%-it>5NO$vDAtce>(FtI7 zrWJ3+r69=zD<%Vw2R%<1l?9yqXTwttU5*9fPGi?oj=4;Wjy}rIIz1Jx7Lykr$4N|q zbQKPay-fnsii!<^OCK5@v(~0TbikB?dMcCKwmJ8A?WF`r{Z}`^gnxr4JA3mr2uwW4gyWBzJnehWrv|)+YfAWQ_m)@%S%Pm`P9?vg( z>E={^*_$;7Gb)%xty?qTxe|2LW!ZmlX3CNA*~`1SMmJ;a{$Scyq?`6)SNzR1BM7cm zeiLLy`5K-zKJXSl{qThcGXF>4bwlctHZ}nI2i|HK21bF}^fxr_=>jS|03KSNr9Wgt z|6JR^%mbsF+rDA{UQ_z4bI*Wwm1AQA$maVu(^phDhAv%A`}fwt|0m7;SI)nE+GUfA zEP-3#Nl)$0Fc$us2QYTqWJ_7{S1I*tdg|93`DNXLONBQl?>WM(UqLzxfBjh@8{AN3 zgPklld=-XItdZku#F49-Km@5r4fBhGm~_naBk2--%KTZ*pH=+n;m;QS4D;sze~$9! zVg8)t&r|$4BjHV$m{ZmKQEWYYSUXe*O+YIR7$mJERZHbCGfAIKJ6tD4(iZBa(X^`1 zN~h8W)=M*Kr#9j=#lxGW)q1&6a_bkGrC0R}TckhK4{Vnf_43QoN`u@gxeQh9(iaU? zyQCi(4)2kkHxBekgGTvv=|@KS3(}(xoEnjaA87fqH2c87SEMH%92l1(4=((+^j8nc zZ%d#4l>9qV@KcAsEgk>V!tYC;TDEXpdTE*ThtiQ{3x6toxa`zlN>vZFOiKd~o%*5l z=MOFXt@Oll>AbXSx%3lhYPs}}Qr^P@SEbR1TYe$kez@viCHEr>OVU>#k^Wse|H!HT zk}}f=bedi1(gT`rryqVu^B?I_h9f;?=Cn zlAASMS%nLp3SN1*L*GK)Ek<#mGY2g=Sum@njfyL z8r3*gwM=Nfz3T8cHJOhd{vA!%qw?=*e)QhXbp)Z{&J_=@JsPqh3(^B+$v+|vBUlMDZ*x&5T9(YoaY zgEl71%e4PTUU*oW{nX(MZTC~sD(%!$(i7T;%nP~Nuvse6K9t+y(7v8K@SHY14=OGU zPD;*xPoywfBxgzT-6i({+l2O}By|PgWy_LoSVT1FtVR-b9y(tqC*TUHg@P{)5sict z@n|n~UnQ0MvypE`Ax$QVW7xXhONPv^$jF0SE-m1Ix>-r0A|ohQ%H^bTP)40zH%1k; zqOg!7LQsBEnh|Gl;@nI3gwd;!)PxtEAk=T?+W_I+{&Q`cP*6~*m~&HlxJ5+ z5*viyN9-+XK}1nqXk!y~?&yK){fJ2Ti(ssLo)9@#*-IG;=EK~O4O0Xip4FPo22|MM zY3x)@bS+#oa3IL`r=-LBF()E5VUeUL?IqY9P~Y=4dEXl}b7~2+=w^iO!U99lnla_6 zrbOyQ!Vwt57!fGY*BywUq&jL2Qe6c&&>en@QH^ZIJE#o~ALycRxp=dDeutM!fr&bH z**eLCh;2B^QA?8n4|H|m-0C1g)8Gsmqtvx)uornP1$QkMkrmvHFoVvZyn}7kjdeJ; zud!abkw!;J+_ms1#}Kx{zD-zX25o#0*P&SgD4qmQA8u^$;#ZCiLFwVl#r_&tgDn%V9AOZso|$90 zi?W@a?TINDCvH7&vjRI@?;a!!1BRfX5yoVs^kEh^kVh(tShzM+We=eC69VjlWdzBk zY=le$ip0X8xe7U#4ON4_k)OlRw8mhBzUgX8tC=wR`>Annr~`Rty*)jMCP&dIoW7hu zC~9n*=to(3TFO#jvJ%W7V&|<=x-08S+SsDg-_ag(lD(TvtU0KU3VRl9N8z^tqV>V$ z*j|K(JMlc!`NNrMVm;A#{l;y+Kx8||3?cz63akl5A_R%s*RGtv*9t=}W@WEds_CI; z1!*CvSx>|&g>S>t4KMdKEvDILAZxIg>e@heK`#pa2aw$vFKJeU#G^Dcx#R==uqX%A z(NskH+S^f=1r~I%DhQ~~v+JoPD(llc0B-Fqjk>)tIFJA<0+_H)sG2$9p2*SKZo@MG zckogaG(uf0pnOw5qACO)P}030sdy^N({4p*FOF9T;3F6cqmUwCfNvL*1w2MLC|+#K zDX0hX(3VQL-V|I*UNm4bUV|m>#VYWT2SG&Vh%?;ct6YI+t7L0Kv)DGt0fR-eJBS4i>-DJe&!@RP3i>$VkGn#plh;0Hw9^(*#CXN zz4*cOmFO^&0+7vteztl zy%#}`f#rPK5NzM&V%|(ylz1X&* zOfjfgGu8$%#6j9CYh+FqeW8E}ACYTQdroYcmZ~2s1Fl6A8wIgVnXG3pyGczAHy1fP zb1eP=48-fmtyeg{RS^px8v~)o#qugJUJjat(ZWnl_@J&p5@zVX;kI?$Jngd=L}2nlDY5 zj|fJpu2e}BiX8ynYZf9raa((3j#^BN!-5bfgrhw;G?*zC=8gDQ7wRbymSN`;1@$hr zPgw3Q&J$7MoDDaqT}tsFAxg+O&e)=FKZJu>jRa!f-TAXfNc=R~J>f=o@cXzZ&>0QM z87z{(DHTbQNwTE!{UQh6q)H^1rmv8Hf0?vkSO!5yrf{NMmPlf2a@>Aj0f{7dYeSbz z2Vn*J;Pg%vN*>0GIY$muA&Lii77fRRRDv960y0->$)XGwM5GqnH5B-r?-SLbn)U4a zeUh>^F+8O1B_tC#0}-M2R-+J0aQQ+Jc;|!w2?fHK1Nr(Pn}{Re64D8XZzInB!ZC=w zfpF+`7E%=1NqUD{Ts2 zhm1lsq`HONg2ar{#F2r**UyUr0+VRW@dlCWs5Bhu!AxOW9uj4G!4V8B!e9e4A^#Z; zhKvFgA;JVv*S}2i72DiOVrH1$TWN6Fc4`CeVTE0^n(h_pw9x zdZ_3H%K9LGb)p-xXyI)&;iPh;u428FQ_^VGAl~pnX)gfjEFA5Ph(nfZ2w3)l(|UtY z)x~S^Lev3EQ;r{f-d4v_j!uX+yf+CsaxBES6}$tP2l&MOTpqeOH$_u1|?KlkjKO#5SU09(IuhK0_9VeA$VhDw-I`MM~VKL%NYieri=D$^rEmG(kuj zKd#6`)LtAOK(v7lTB6t&)(v8dF_JX+6|v`0oCX;{ZP@vWTohoz2wxR(sTMq3nLHCC z{}dfn%#tP-SN6r?kD%?=37Jg<_gaOZ(b^M15>hQC41llZfCUn&BJ4iKMKf)Pv#kgG z?_+Y3diOz&!j5#13`Oy#aS6(JDfW31aX@A_@nN%_LY@My_X0g3NSSepy9GfWqFxMb zSuJ>T5<1h|h#;tnWTEPbxKL%en*ln*xbT$Z!71EW6Xmt@ia7iUh}1K6XF5joLwi>#PgS#o2YTHFaI;sascb3R zMSX${X*Olk5PHF@9$SNL;QhZKbDI9 zaTzR1;>A5O7zdnsFU~QQq~f4-h(%lkd+MImfQ03aAPA125xH9^>f04s6%VZUlMsfp z7f4K&Sr{vU6b7nZB(>z_FlwRV5Tvmw2w?}4DLKl;Bi^MiE`{L~>^qP$Dv`-a1QxU5 z1m#CO*&5~$ERwB}YazR07e-#lRRl8NEVwM9f54hHBCsliGUL%eUw^0r740Al`nFU` z3%%a`6I7^y)|?JDn94S=Cta^&cWnoPF zuo?klyKK6jIEJ%_+bI3*I;2m>=k9ETnA`oTgt9%NAKT2l<|k zxtV#-#y(gAahU&!c16*`a_L()VTj(idLTeHfN4exUc+h}4}@hh2HgUh?Ap{XvnMFc6mt22nx^Gq!>KNtt7S0qF8#+rtW zuC?LxroQt{S6mK_QOUC?4=cxJo|TNQhDOAW*Q^TDK~+QJ`l~u4g_U?V`5z63^O{{v zj;0^zjLO*+Md2Af2qN#S*66MCquhL5VVDOL9LbW5JcjC;oG|C_*z-?o9;jWnX?)%EVaBKy^}VOCjExS^SJaK?O~VnpIXmnrOdQ&tz_0!l}Z1u zOHY^nSQpNfexVsHmHtpWlPRs$R=p@0^oKV}-$?s^+o9X9rV2QK<9D!Bsv#;cm~L=+ zNF|4wXsJ!@bbKJ$5VMZQ8X&33!!Ck|7;ZoYi88HttQJ($+{+y@1h<`Je^Bey8Jl#D!if`@1^Z8yA z{wJSr!+8Sf2yPPapW(@2x|jHwFu4c!go)V1?r`}G;(9oLCb1k92NC(GD3oYJRXm~@ z^@b94s5F$QMs*=X8OjeK4x@4|k&9Y`iM^;Om`FxdLBuxH8%TVFN&|^?sBR9i0_D#k z7NPRlLwVM`#wiKkof5 zL2Kx17VDjT4T)Y)pFK$&-ml-PrTTwNk#8jXb_;ir9ed<5(*H|cEoo0zoh7?7tR18` zOK%|O%EY~-Sf=kMGi6$eESD)wOmM_kvrXLg@qH+uLt<>^D=~XJ~u+~V;FOp4AsU<3|asAisXk*L~(F!AV#G7E0 zlv<@mx=dSVe5}+yGZs{d$Bl+6-K6o2YJRY3#z|#_Nqthb%#?UazRuKpTAOG>YlL~G zyjpF6iSxa3*tEJ)>tkN2k-csv8$6A%R znce1%uryp!?X(15@upeQt|&7tFRsW=SW>PlZ(9^Py~X0zsYWfXPVuNE;)Vzr5Z@97 z5A@!0_YZuEbGX)W+!|^v?Nh~D|EAmu>(v3F-kS43w}3wTfU}4`I>u*Ai{por!vMK?W@>mpPZ)t%6@ISqVYaIK|v4tB__WdY~7MPFcg`zR62G+vd z%b2{z+|TT}!xUsm{$jeb1O&55rlyz+GMZ+#V`~t{t9{r~M|qy)6UXuVHARlXL$P&^ zu0w5&j;DofU5(U%uXJ+FSP%Jzg^Z9L&=?x^bVtiF-RnwWJb zW%ESV?^W2u(m!SvPn50qGDlQbx<<4u8Bs)Zlj`-p*}MV zNCY+tA|f_d!(Ae`rj?Xjtc#M8VohbOwQSu#J~7Q$%@%D|B^E}VYzq=FD!s;NnYWUv$Bq4@AuCD?b{FB|6=Z$rLXc zXBvOTSnTlVbY?cEhTN~FljZUwUE{_Oj@m9&X~)~Z#Aaz|J%MNJb2C? zn=6LKv=&+uZH3xI-W}DSE8dwoc%dU~g;GPQ{xSe!TxSk@4(@xx;YM+ry$@F>C&!Vy0l zCmbdm_QSP=yUc$SyAnSr3dh2P=NvD5V;p9;Ti?B|bZ6%2o@oDvOD*X$ei_QM<>}*|N$tv=QL8a6hIo ztkM`Z4USgF-Th20bUM-Du1HcY0~z4#5*MN7N;OJMstunlL3C+!&4s$l;!rB|$**J*b{cnJ5}#}3gg(Ui9{ zkDA*PnA@cvJ#t-50VfSO*;0iY0Zx8mn0VpjqG95NlOG-?UO2g6n0VpZ<<;@5W6}QV zb-XJyw1$OyqA{DsSeZb$+Ne0uYVj!1Rek@NJTrjd^4X00%3L{}xDOm|rS5j-xV;3e zFV}cwi+B2M3RcfYOzXM-9<`(LXCEA!<%VWt;JC>HV+P=n;_qtKxX=p_ugnz7Q18%MEAC6i! z4@{3%_L;%5$+(G4z|H6H1pH~Z@wl|{tbW;Oo6rDyyy3eA|2dB}~lKnt=SjKbzB zpKp17%nv8a;zXQDtYC~*E}6RW_#n=4 zlh7>H5lcMaP8hqp7)w3mhUm+&C$|0Nhh3gD_VU+266&j;5 z(NzAxe!ipG{DD{Gx8x7JEdMg+fauew0($uQr+Z#MANtjS4Czom^K6*sczRW78~F|N z*CY#Nr|vS%=^6tqc23NdMT3(cY%6FE6_;-G;&Q~P{sR%ySC`Z{Jzn%2VME=C6mTX! zmdF)r$tRdCqAx1*B6;M0UuE%MUjeO7(J$pQS6G}2`F_~^k>2A8xn%a9a_;4O$b(a&|uH&wl8b`f>*4?+Hf=>PKX( zQ@HxQx$^q3DSWA_AGiAb&^&2Qu6&bz9E8^?&xibeT;umcvf>12q4?qg+K-;qabTYM zky;0Sb|09fxMcT%l>9`u#mk~!*M#)bJx{(d&|7b^b>nf9aVgv^Tof0>ErDL$fV%~^ z9GAnr4$V?~-7CcVp*0<=OC!LK+mI_WnS0#k>^*MA+~el!^W}8C16^9}HWPL%&Hb#q z<%^x}jZfst_2xm>vFU5vwZ{r}_qYeYlPPt4ci|-PWV1o{TE<%a5O52bH1r$V0Uku5 z<9tum_i|{viR6myA*blIg-l`EN(-0+t>GxT)PVnO2I+nqZQbjJ!K08#l;Mr&8u!ze zL>U~6hpG4T$C$o);><{J6IaI^N#=xjNfEdyC(Zt_jT60 z_>*wCg**}i<_>zK*8QnpH@#c6{)NAcNp)-@to0x{M(d%2GOEWUzkgr= zeTQ`ie|Jg=^26I^%BS2+)^Azmg1pkJ$!q1-AaC5uYjv;RQFqvU-<|EZ8=?HKZCtMW z8oqS9pVRkHhPKZ`j`Q%pJ&MmK{TmO;O$H+klHrCUS#TbYk$;uurOq*n&;VtnXHsvrMXe*MBt$=qf7 z(R__37ePaEe zfD`K5<2y`WKQ6xuw$`X$YD+%-u>F&cWfEP*y{yH2vXgO{c;1$4vpfKK%*r=* z9>o)&pPEDQhfrd+O$%@ZUAb{J^%&FU3cd-S1_=JwgrV_CU;y4JoF*)Pp6@5X!OOy? zcQp13#a~GL{J7~G?d$a!ldG#Y$vUldr~PE}1_L?-vF;&kObB!fh5OGn<~73oxP!Rk z$TJF;q937DuISKyg!UVr1^&#%IFl=mkqrf2a@&RQ-on}vl{Jn}ZD0(~g12|O39|us z<%^PG#)KW>*19R?$>vFsC$$1cKFWj=&lbm7zP#3LNT`n8#RhCHf`!I)1GFd#JxL#v zuzEl9P)wi1oIn#805p$2Fz#jk`dd0l^C!75Qyfjd!ld8%mw~?QpbpVWy6`<${x&!< zkNA4(_wgJ&Oqc4B2?H4Vw5Fu_kqr6=XeMwdf>*`*8#QnDLz@yl{z(Tk8Z>ufnUi^s|{LC*8AGP$VnZ7Fj;r&_VZW)xrTip#cp@Mj19r)_B zst?dB>Es>4RaIc{s1QKgfJ3?$DtD^aA8I%ZKh_jM(d#o8?-A z%w>3RKA`j7d_WsKx~g?7daQLeFRlC=Y@T`_{s*aBc?>uh;K{pbcQSPkhbIZ}I>9>Y zVC`(cZNlxvY0a7D-l;RLpye}j<;1v7ciiLP>#1t)EnO3>p^x{v-yA<% zIvjF@X-tn)Ki0ZQ+n*JdpQMq46z4Gi#;mY78A>{oA6uq^xJi1lc^H{tfHle*85(=C zjk+%{isr%Rdx!FN90-}42J?!iz#j+m3LfGq&WIu2B-$n!&a|NGWIP!zUGLcrXDpH} zvl$xU+0LZTKk;qTS7X`>&IrqAHb>2cg;2%;kJR5xu?9K7BwhyQ&to@0k8Qb&_MMVw zxYFSXb{w)9N^TL)hi?_N7Sr|fMPFy;kz-87bmKDmw+>flRu1;D#>_2*TGYp@%94wef4H*OQSJ_$#vJWLRnzx z!x6ljSqlt-&zcrXQ?DGFM|6yNqOaiTTO6TE&^NGWq+W2@XO1nW1fw_-|dKo3hDY*;F2k_PLX@=ccm9h zV637qwBHz|t&?nfx$?`5OL=U$g{`HT74>BOdeCERJ#~ybs6SRwU;iG{H^Q&a+J3Q- zC|{QPPOGTTIZAzM=b-4J-@pCT_j{ah1UoVP^XhY`Pj>6U{*Ls<3GX_re`=>tQQuzb zD*E+ps;Dphp;qjo^NU@=74X2W^Thq`J<$8^it;-t`+dLsYRW4w1gp3O+VC~vU%<&m zpmx+Z&EY4j=I~>hL)I|-A9=`Y<4L~_@Tc(`e*GfUHFgT1_rQhcyNoy@S!799q9*S+75{BguoBYx$I68kf|ml9jnK-z*Eea^#{zv z70@&GWyrfwJRx+CEhkwbl+-?f@UYcQBwJZ0ZOAM4SlX)em}EcY!Co*~av5@l>Nz~E zwHT{NOBxf4nM9rRrmU?qBYB`POTCBCod!nd%WB8#d&cVEm1)iBPV+}QHjnmBD$}-+ zw%tz?4IZuyxJ@yM8?KEYZGMzCVu!a8q-`f{yPu{u1pCwJe<+nJ-Uf`4y)UE#1;!^LH%F-{QyjRK=g-$G=<^FFTg% z%~!=APka~jsRmq-U4lKJUaceb3tnPv62g7;PkdbS80Xs=>&+>B>Rsl4GgrMW{x`VR zyV(C0eoY6rG;h*(nlD#b)%9(6-g%;1E#fKo(I3i zS_(M@6IxYJeyssxzHRleet6mh?1%6)_FixfE|V+YHv03>_YP!~4&>u??4PZ3_ah75 zwhJ`GpbE!5(m-)9}~? zeK7F^Z6$(l`j8C1=}S8JR-e+j@;Qu2Iu|gHFQhM7>N+$HJU{ap)@rWY4&EeAX)8*< zUWDx}giS0FeWo}v5mGLh2nt48`Ucr(e5`kCeRye!5ism%!>`z z5k|Hc495t|b`hl45Y9KDvzT?iY@e7be(tN%|JP~%!xcW8WDfn}A$NS@A!r726MS<# zX$|BF8SK<)BRW`q4m!1zHJ+jWElFTZ-?yFAS`J%VyL1oinu0a`_xiqu`f}yJAg>1X zPtYC;GDu>~m@&yolP0C-%$bwD{`%`XkQa#>L)0Xq<`7kzf$lZqm<#)tAn z`4)am6Mp1!#apg~PQgFYBhWk8qXGvT>#fcu9iyGO-r)92=3(w$LneCdTE4+aDvm!; zWBRU@Jj-~eFz#htmr~}zo+-d%GH{8Q%i#T)P_5*nmhT`>dF?dP1~Nl={+|c>wDv;g z>N0Dd=$`-!Y%>|wedasvzC;skK|`S#!ug+dN$$%OSsQCqe!`!m-$>81Ya|}B`j+}! zpnvELEzjY;pUz0{oPnE#dlxQ^n~Q@s+P{T-zcJwbS=$OS zRRURFJb<|bwz=}xu|F^dc>2A_MTv3}d#>iPg*5RPt>MSWqx~V}5uZ@{8}(i~I!Jjd z>C8`W5BxcSEk?XoI)f)`$%h9)Cj%Rc_7rb}rfp557ctK|+oC+1sYmT?!ruxV8i?l0 zcUoIwJA5A-h9B?k4~x%v`Fv7vJ?4&ki?=@Y{&bj@5enJ~-o)v>zQJ z{;I0E6s;D`euaKm`c2-iP__p?+Q4`;hCBW^(6>MJ`O;(ICUAH?XQ!N=9TngEY&!*u zb1&O(;n!}r$A0g2qpW4CS5oG@jOp9Nnz-$pTzPR~J-i2f8}HlKVH!L#7;tcTFaIMCjE1pB&Mca^78<{)i`bRcCO}u9( zXy+VFa~YfbOtt6Py9?Ha71UMm>x%ewvEJ=kwt1;j?Y!HjecP?BQ!vtgoc1}UM4Q~- zUh4HHs6%`4$|IYZzhC6ZrNBCqUGFxxtaleU>)mX}dUsK7y}P(;y_-p{!0x}^-8;UC zIncUnb9awxD=a3CFnHt1sxJal&5h=*a(*<=%HMVu6$MHe>KAQ)5X+XG! z?OS7^@8EVTdahG6Q*y;gxE&3hwyZg;wa}INAu`$(oI5m)si_*T&fl~#Uf*|gK8J9J zAI|xHR~vk?weT;dySSVA)Ea&VnYvL{sX)B-ZI_RSS9o;tmu3D~F~=#>eN#)u~V zn0)k=dC3(kX-_xtLp&`}?mr%UvSU&^lKETdtG9;%EaEx#LsZ|{jK7k{E|p$Oyw=~c zNu8Wq^Jwvj@V{-WeeLHgW)G&4ewJu^5qi-g;w$Orv&1vM<(>E`^x}xdLAWNFEB>0e zZIr1TL#LnrQT(l>ZKb~Hrw*+P;mTC_hh{RGvx;I?xK&`Bzp0_XUYTL+gA=HIrCA-6~}&eZPDaC zy*Q4XFgE#O5uK8CLZ1?%X|1J2*fi7^>CUqo3Zy;DJcEOz>s$Ng5$4|{eu#XvyDVCv zc=W8p;%oi*+N$_EKfbOi9+|*vE42c-Np`(V`33s1VN{dVgEzg+o3Cm;_=AG+pdP&1 z^4I=LpYECY=Yifu@V$nm5wif>>xNKq0B~z_sKOcNavM!R(*t#^12($;gnk_3C zDUHs2+b@uF5?^qgChh&VTi8dz-RUXf-t(+I>sXh%rj&X+vJ7X}rsu!lreE4uj-12% zrP^FC-wK;ga~5OHu$|4EZYY0Dp8mDF`c7ATJJycJIX!r4ihk^Z{ur|d$2nQX${cU5 z6ATo`UPula6v}iT(Dx>No9+W?#v`3-A9OZvR@(3HSXty{yT__MnVYUu9h?jF_ua)m zr=UyspWIqL88}UW4<*shlgSQu&f8hL$#7x&l(zErGutf8W{~&0*g9sAFGao-`T9?L zrhI7XGv&-_ZRO^vUcTvRcxo1yK_?9~l>Qg;{url2r_vm|I1Sr_7w=g3 zq#5gG`u-d~Hf(GXx$;K*UExl5B6&|Ed@o_y`A#ByI^nws=LqZU=WN0{x7&@64cnfB zI+pnJ2)7gdDSjLNobdC-V~9VW@EwF-#b55n*AYL5@G`=`#@Cq#_Vylj(!jm;B)T=K|`Le3nYCck|PpDW|7-a~}ie zXAtN3>nzH-hUpdIn@$s5&1ijU51uuN9mk%zaab3Wv+a6kFQpsa8Nq&7m!~h@KD*W_ zbibGYj!oE%q!VS)Pxc{~tL_EpHi0cJiVdl`BCIkI%4{XCDY+`O`q}O|&gpz;LEoXNUx&CE@Cm<<(6S!r+v~W< zA!F{`XUu*oUG{fjvvW0;0!i)UaZZbxfrv3tld6lIZp=9$lUxn6Pf^DL;uhlUnDewH z`c{zJZEear&qvXCeWCk6B(1YwAI6S>eLlaoB-&V?+I>Lt8%cftK-erSa&}^-#@o+5 zfbkjZVh-?cfsSRde*ja_Iq6QdCRb#?Qu~gKk8?4irOcVy3MK#TfJy!MK*T>2E*d9V z3T~5UWr4XxroOBwT$eqjpEl(a#-Cm2=RBM0l->|6oZ;#`J?Fh`JJHlS&H{V(*w?s| zlAe|;|B!whWAU}yO(nGlF5K;Q{M`f!MTkT2N{{ckIzz`^w) zKaO=vS|J5)q*;UKvIdcvtPZ8K?a}^+UIj0;4thTWJ}m|ZSA#>6QyIf{NSQr{RTcl! z5M|KC;A{7~?N#}8W~D0L=GQr_EcusL<=0)8s(72fK>R}TFRRM`(<9?;e(iTIApg>; z{NFt?-say+d^7o5s`5W`WW3G4i+IiDQ}~i`_5D`#_dvFscAV&i=C;+H%y$f5YsBh{ z#IHO!(5JH>v0R6zhe=NAa@^O^k*r*oaa{KI`);|OJRKX|`<^y^+i`-m*1A2P{=fTzAq01kQ=G{sgH?HDr6E?+VH+QL9gm|EG+Uk1(=jx+b0?F} z;*7nE#XTz7^6XjX#+Z#y7bKek_sz181o*KWTK+t`Zi;qvXK4m?P2v0e|DvC2n|aG} z4)(X`Ee&cjiCiZdm?HlzwWCG-o(UkoG z-+Luzr8c-*kfB6(3~<|Uh1&U%+i@+v&QFl{7~mEq-%>wch&k5zsTJW2kqk28JeGz{8V8b5Hd>BC0cJB2d4K-2!Tj6LBYzF~Ro70lXONcPd=@Z9?(CP`k_LY8%h>Up zb4NeZS<3?P*Z(JWH>HC|uh@Lt7fnCi(}JB({AaJ?@`AnNN^aaGoe}=oAUaE&cnoF?xIP0>AR7iP3rLUAnm^sKZpLzQ6KEu_SOmGE>8FR#oDm? z@)SQjnf$>y;mST8wM~B<8bg9H^i;@Hf&3+3{8V=8D|eZ`y~sy_T#@HH@0Zbip54bW zUJI`@{0sc$dmHhA%;MGQ$t(KqAWgR8ZO|5l+X>$Q%^R<^MR>?=-c|~1>5Istb>y&) zgtzxWB^?QM+zRNQ&Eb8&ydosSdE_yE4zmM+b_Obr1~=_=@Oy`xFnhy2X` zLvQTnh$$cwX}==D`P5hOx8fux>3q7*sq4JD&aLZQ#gcoC$zE=ZWUj}S8MB-;?PV

u&4=OLP4v^kgLsR3vVl_Xo#skwBVTWE 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

)DGq{>pF}rmZ{oo zzLLEJZRdBy>${2X9P(R3etIvO{gd%fIjO5^c6lfTDLb2r~L6Q3~W_yn_7G$VIwCT=dgN83rq5-M+P zWon~%!CFy`+E~0Y)rOr%IpMX+E7%)=HD?r|FI|D0GFPTKJdLR|J}OUX9-Z+daBIj{ zdInr~X^f(=k?2IH$L-Wq&CSIRBaQCFtL4jnGDDZfb;_4B)aYH=zmINvgnauzbBr;r zP5LxExI*|ztFbfudDu>(cO5T(!7U_SU(RlBuOt6EsGA>Bf2v=2h2HVXZG%g7Oj?~8 zHM|r*Qrw%ObEPT5|HW5l=&mc*9j~%sc9*%G`@L0Wy~#UUH2Jz!dRgb`RBqu_TOU7` zdm5TE`SF*nE}CHFJ#PN`mKKSe|3bV#RF)n!B2Y5kK9yHz27HTco>|Ez4u7Z z?jKA2sBXnOeHRNJnUriu_TB+UV}tJRn{VhDCix&va{9mY4?We-u&>8~e(58vO=}#Z zwiNgkPCGX1rtrs{bLhkO7S6qDuYuOGPvY#R{MvhQi|<$3tnU|&lXzcIX@vV0->*8( z`hNJ=Ih=VdrI8#(Qrv%F>L!!t{u#z9ZH0c#ZPX3&jeMMM_|sOH%6A0LPNZ{IjJBA} zym9^X{L$1N}AhK=?1apRyw>@gGU1k^3JGm(H4!Wq(ava?7~rlU&B}%uEj|<*3za`jss|4 z(g#kt%BgwaNoL(HtQXWquYy18pdm{CB3z;;=F#vG8=;o8(j9Y;0H?+#ewo(!{lPjv zZ?$csi<&d}%w?ptSX-bSXuYNZztf`M)9Euf>&e`a)x2e^>P>C!N#+k45{s#W>DefJ z@Y-C5X>;Olal8BHA9WumcgR3j)segDLXP4ZBi!!OcDqm8?dZK2d;Ws(9nfmtih)<_ ztrxQq#yQbu@xzR>ntHX&%TaHgw)aK%q;j9uIsev7_WQ_Rd%5kBe}1{s}(@g0y zpXR*Cyc%QX0cX1r*4E4UZTFpJ#&WZnuWH{QyLu&ij%0VQ;odUslSk$|cJG%r>y?!2 zAM6DcjT6~hkFMPo?4f_*2ydM_+RnUM8eP|H)^qahWwu*|-DGpmRwds{L>uL^?t|BB zRu{h5%GqIfwq0k{TQny>&Rt>IZcoCJN(-JCwujMW%D8Rko!C8tu!XG0xMA@- zShABSg_UgLpS65lSJ!>RI4S&NB>YJ4UX(Y1AI;q{+BZVE^U^JqxRHcc5tfjyX=eU| zdeB+$(f+)$Y|>ZHf}alKxCCce=>vuVlkVS^JBjm!Das}P$@qu+{!{S}_5G9Z5App| z@F#u0?j4wR?EKsW!qV5b<%c(u6ZAn)Q zG`hrlM^E=!sE&WhI!86MN)HVjw2`#l7$=Bd&K_cGJ?~&xJ$Y9d`-FY~8=><<>aR!C z>O7^~>YReRAGZPbJnmH-lP{ekdviZ`AFK0seL16d0Bz(z_VeQYaS(fOtJs4J{E4KS zj9ZJl5BC`E8QjoH_Ui)Q2K+C9e+u}2)^N`;@NWZ8qwAat{4u1Rgj2 z0QkAU{}}jZfPVw{MZmuS{7b-d?`LO!(h7b)?na#GxEuH1p6n+Bem3ww0DcSbe+K>r z;9m#+Y2X*f*mp+SX56K?c{tIr5~utlz)uDKTHt>V{1)Js1OFQE+F$hn@E?|0ou`ui zY}_R{(QzH_1M+{T7iYYI|2FV{0RCy_JEwFFnzDWAXxLG*SaV73u;B&wa z0sd>izYP4ZfnN*!OTe%7;r{~sv7{e~6CXs!9Ngc5e;)V-;Lim9kHG&7_#Xnl8Tjw} z@XrE&DCv*GjlhYHnYg!sKfRhh9QaMZzXJSEfWI5~-vPfA`0IfE6|S1}18{?JqGKZN z4d5pLzX~19uzlZ@36BeQ=^<5bj3mZy@mJ0ly0PH-KLT{8K*smB3#F-1WHEaPQ!3;6z6q z?mT#R2=LQ^Ukd!&z+VmgW*`3Bz+Vi^cX7|*a=5?aL`N0we}L}+{8-?>1N=XLZv+01 zKK!?UKacdH;n%q5aao+`;BNcQNx=UH`TH#J7XrT%_^W`=`S2EdpJ$TpEZn`g$8cM4 zqT@~6DZsx0{1L!^8Tb!?{}%AuefT-%4wZC%4tJ7_gV)j@tpnLxj$b;YmGBY1e=g_r z$AeR8<__Fg7=yp=5bsUxAFx(4g5T0bH{e%z8RKkh=WHD~h7qT^s~ya5ozL&j3YOpJ zlTQ2Zg84M9y#_Ex`}hSH#0y^W!g08dQ+e$eMEI~w_Angx8D-BO*ygQ$v2V%2+4Mb{ z2Nx{|12+>GbM64!!={{c8@tLYJxg!G`;4AVARAQWYI&PE1|L>-mPyks>L4z8TE5ZrkTZX|9x z?yI=Vq2tF93tJ=2zOi)fE8NE)#fD(4!}!3>*3p;rqc5c&%hrgWN!}`j2bu$lGRNCM zyyM4L*^IS_PxQHkcnceYJNel2k?6CiFq89h`;(XISh$>S@~ZLk>gVTGYC zz%_fpDZY5^<)b+Ftm|~vYcKP%YA@f|3r@+9*DgMabI&?OU;A{bU9{{4=icbtQ~uLg zPyXj+CI2Vw1?S%A+*{c{yBD02>F(-iZ)LCF3(mcjeNVaFv)-%rf>Sc;$>;vn(Z4x! z*l?xB2iX3M?X?!h8cLiqPUcQb^<7Kf)4Wx}%=_MeU-J)I16SNbp}3#o*W4(2zgA-( z^@}#&hATN+)`R;%)qkl^rT?n(#}R)Z|DL2{Zo`~)(7hL*!fhdZGwwN@?#FO&4LJ34 zgK*-L`j|oV$w}^FdxCU9*bu^o64nt48%|h?uwRD4MiVxku%Cs(CKA?6*nNblex>h& zJnjyK1$q216c*&MHWU`*u__c6J6AM4|d5mFkv1@e@l1& z9hhPs1Te)s2w+|ZrkDo-Ofe4vm_Gnh%!2@?m$6sz<+J%x9~6a@tZV7_|=}S^6>}p zVf>2!Ch=9|Kb1U!djxb}jmAkT&&7WHj1uw6|0{m}w!fciN0XfsK6_{;dl*jRDV16G z69~V?Q7ZT8K3#i*6RpK?CjqB1TX*!1^5eUsmwm#fKEnA5-`?mIpN=j;Z!ugky@ERw zxKeU=6>=lF)0&9Zme~hj&Xyg;H;MZk?nK-u+<4rnxaqhvaV@y7;IwbD2V*kHm-^xd z-ekRs{DN@FmBQ~K{Db#crz5@gUn_l(M)7ZQm-9bE@q!D-zfSyH#4Ai^AcFjsgLi8v zJjibu;n@(rAV0w>zs=zLV<L@CAI2 zhT;Vmj=!7u2YtNZ^0k2X-cWdu-x-AeD1TdE0<9VO?p|Wn$h4H;Zy8r$M{f92^$(h&s-t5I=O>HW6 z9PbU%Cs`{>&1b#Jc%Y26AN2=+M82e3!|*fq0so8-um0jUzzbIMfTE+mKlg{T$9i8h z{4zwtL*Ni>>QL?XvD}{YEA>@gf2B6{SWrgJBdIT|=RGUYUQXOEi90G*X3Fv%=Dq@2 zRHlHIeU)c6zpxQtzXq)CS=?XP zD6lhuErafJ{ttA=fS(9F`|S2R?=oP&04xL6PWWN^x1NvC{w;WSV%qFWbl7(oNi5DC zhx|8aPYp0S8{i~$wk4B2>X`YgvGN7aQN0(tQO*?(rW~!vgywS@YsJmDRriSSn>CAg zns1cz7pdwNY^7ArY8~e`sO;8a*9N{m1kav;+A#c;-N4s`;QQd0-B8U}dPwuo>E3>x zy>{nW5rT;YX&*)|fUTfRD&OPm0ZI2hQ*+KuJzE#M@9kudPOq;Sn*WX8&=#6gJ_BCL zHqredVcSIZ@E@rojW=ZjzlXC(8<7m-K8@3zp-p_RWX)0bk?uA#Z^|XohL$g~@AGNW zC{DDU!0(OxmVY>Y*^YtDXJdoPR(!;dA40s~!tt`P9`NHwb#`sP&-dR#JCZDG%{8}$ zJs;G06Kk7^o~*}8PWY`oJr?^Lx`pMR1q!Tk{|RTsiRJJqgT@7&+ITpcl#8LROoYdzl;eXcMggZ7&m_^7qH8 zEO+tya>`|7B2;I=I3}w#>Zdbro#%4sjtB!{fC zXq;4!E)*So?G97_daLfEah_~sOU5PCmwjYyCTP!!tDt=hRh|*b=C|uxVtcmhGQV9P zLprl>13Hf?NvFvV6(o70Zux5MOZQNVZjHUdWs=PP)TevTIP^SmcbAMST_*O8mB^zs zJ-;HY8HXk;qZfZWSUTHs|MhQwjOmAO^uswnY0A=wY&JsEOv<4#fbFEs-Vo``wF9i} zFA^uYxS#v-x8N_c7U#OS6aCI3R~L>t&~|NS*;e+_XRBTIpzJ`0wq~+_1h@8c993qy z4!V>!(xkRst$JteZ{|SmUGmr5dVo`N+79(m9Phv{oA@v;^s>P<7@Dd%)57mv@Ijd9 z{q|P&Gc%`ZU>~&HndITk!E-;ca8TZ4PY;LEUrc(1XQ&yK9-jQaHS>dXa?xt#WRu91@)q1I;1pgAC)%F}u2}!R%$@}4U!5~)z-bPG{dk>YaLqWiW7+(_#_2vN z7TP**1?G0#y|`cEG+$r;E3ZA-oR4rggKa@mFvlf1=;`a%+3>HQpT36haC)r~XnjE8 zN?!xbGyM7xe(@umKA3M&xYA3WCz4)s(@JmFQbP1-ZeR2I3Rn6D(x*r-`lO3h4hOpJ z-n4hp)&r|Kx`fgbmLUBQ(u+Q&S2=?8qFw1le?LEcKhjHEAyV8sPMn8Qc>3RRTQ?{n3H+lO8`PQD9I%GahoiV?@YixHgVF%$3 z#MR)AAnq7kFxE4A{zP!d4y0{3*ea4K>CeaOd3P3=?$WSNIQuYZKKxhrY1D@ABh5ee zlBN+kzmqg??j?=rIgYh^HvaCFo`Ix!WiM$&k3*U*dr2dD4kpdhq%rH0G3m3kyYi6s zLWVor9ofg&cd|!=zKgbles0b$FnxJ*{%OAKde8s-UtP6|_nd0(q1V-z+AE*9>C&2MZm4DAQPETG+)xY$j z$}he6?|;(AvwkyYv{iZKk|^f4Yd@y7H8@FrM)4!4aNzwMiaU0*aam9FUBpo)0S(iAN@27Ex;jSh88r;=5^%YtR zJq|Y%r@6tPFED)s`YMI4{2eyhcZ5&lNcxf>Za8rpiMy;s+)&~kCGO%9aYKmv8FA;A zh)WW8FLASq;xwNnTJ9w7j1qC8WesstO2mnl6~s*}5hq%{N8FeaaiZlq;!adtQ9XTL zVem`qK4JbIPxx`T!MJ_$H$j=uuU{vR!-X%*U*d)nH;1_XCE|t>cP?=Umxvoe+*!mW zO2j3JJB>KbPwtVQ`c2W&OkAWyoM@Rq+<)KwD4b{+N!+_7;zY{{#JyD_PP7am?yp60 zvIRuT-yLiFYbD}DODAzJmxvQBdE&N|h!ZWZ68GB@aiZlV;vO%G3;6OZagUUU6D>~> z_h5-Q(b7TOJtg8q%P)xgVTm}=azAmIAdYdm-aL~H_YHne#gulysA~+!95|L zQaokv*fcKpP2$JA%lRqdnVZRp2E8ZR0qn%*W^zv2^5VF|q=va_&EY{?t(R}g{pG^o<+`uvlNVMp8!Voh+t%oYyigC5he1GO%TASpEhW2GIzAfb?OVR0WL)>OzKAUM>mKGKb5<(fQ^52D zX67#bG;2PsWLoBCYpsu_{m9&#@G>`B`%leL7p-~zoHnKT4y|{p&y_tRTjonRt$Ck~ zy9oD9TpB0cxeRwJZY6FFPI9KXW65h7;|c7vl5>EfgY$K@FF=Rntmb3F%m?O4VAL** zZu}Ved;^$Y`1v$^%zVxV=5AoRDNo5dI1`xF-Iu2%%qhSu>%KfCVMYM6u>10qgc$bJ@?bEO~d@8gt>6&-ZXStfUm5gYv`%Am% z*&WV>t+k_f<-a@py$`!;Pu!K??r`oLs~t*svCO}Q%zhl1{}$;M;Uw?3;qJoy4EGpL zvRFcXORnKQ4;=^j0X|ERfT?md6^(>}yGSZwTIUG+k2{B+gs zb=7sGOZD{DRoCFJNN}$zef~M56P}fX4Q0*a$MhYg<|~VJ1jHL1aU^X$g*zP=j04u; ze-x*=1dI%G7E^cOAA$PCMR@)&$S2qb z`hP9Y67qQ_luvi%(HVvCJnR0J=OXgCKa|fWP(Sff^)r=xmWT4`t~~ouKPB@SMn2yS z~AI@h#bXUoII8#x3YABy@TMy^6AAL*7d^l54`sruneMXepmr@Qj(NBxw{hcgwmTba`iK48u{ z$fvvV>_`2S%x5+E*uak}@O!JG{Po+6Vt+%w`&c$8J zyl%!{CyhJaUYqL=wzdy?oAVQ)IIU@FkIiD@4ljz+c>}FIrHSib6el?CVY!01gNxz> zr}eW-iAxm4i5BJeHR5^{#R;eKn@wEAk85Nc7nCDH+?R>_?^}D8LHP;ibmHDEic@~V zc`9*l6~!q((K(*DzZS<4uDnMO_gWBljKA(o+>^|K|FI}sG;|RDLQ%N#f0*!1Md9M# z1B5?Ccquu!mwJ>OsQxvdtol|x&%~XLJ0EuuZZ1x9Y-yb4*{;KBu8lqZd)QN@?#0;S zygoK^cwdaS$Hcq$;x=du+h+U1C4D1Y!Fb)9QKSL-R~f-BrMf_8IvEpHDO#Rcu=4&qKLiVND!ZNxPf#Rcu= zR^lcU#RYQQPTa_%xIm7tChmlyxIm8Q6E~zd4%w3&f19|Yi{gUv4L!u#ene4RP`<&$ z9aGeO!bAI7gzGHw?kI{2oeo+(`$U!r4_ZP?c^)i9D9~Z?1atu{Kpf1YEiiGA5Hj#qHy6qjCMMzC|vkIP52jz!iE1}!ar9OF8qB6 zA6yhJ{11MbdEBCK;lG#g!;8X&|3`!$S`;q)w-bH{;d6VuXx5r~GPf$5tY#o`)Bz$1DO@h zN#H!Q2&ej!s*i!w?ECg{2C^=k!@)VW2&Y*q`WQI17vggvI)zXCJQAFPLpa%IV)&V^ zwQ{XGo0#axrmZqJ*yD0Uh%VKu@EimVrwE7mR|<#tb)b(!bs!lKjxumm7vT`UO5qTH zVm=P>T=F6u@7Azin{|Sq9#t0crxXtH;~%6|AEiAUf|s4gL8a|)g>Xo|RF;oZZz|hg zfE7N~TTr%V!TE9#PL=KB$gIlx8y{z&gGK8v!1;I)PPK!NBeUAy^nj03{0r)l`vJFW zy(ZwF$}Tz^2JX9UiO$slPQO0H+Z(|7{SeM7$rtvNZH+MdW6b_3_Ka4UbFiiN9b7HE z?B5UQETb=JE5fO@++v*CuT<8}UWU0o&Y+HVpcgML!l|{#hIpj#D0vpGPsA@;k)GSqvwfeSMt8v-;>z{oh06v8X5yqnq|p4)MFYJiZ<(N6@}jlgEXjJa+4=c^}bN+DlPt9q7x# z8`4)dqXTCY;Z)t))}ADs;c$r-B()C zTkX@kue72!=F_{cw4(Pv%;^U0){Jk^la@8h=yUB^4DL%-zx_68!@B#+2U*+SD1w(x zDFv@G{Kbb4^z_NV|FH;OZJ-pq%Jr-dALyMg0RNjJc{~_>K7r`4_HUzJ72k_tZ;e+zu3j7s>>5W1wk;yCF@f*6f-=udjta$~!Qy9E~ zWTklPhqu2h?zPYzC%w=&vk&k#gWhi|^Y!r2MYzhrr8wa_f;hdgyOVb%V$ksmUV+!!lC9julj@nu zWySa!d<~epfxQm=<_;Ks>)gHkgYfG+n6L2JDc&BL*iq11 z8+tp!A>2y1dHL({>wAQsb`9w^g7-cg_Z8*Ln`89hY2J@nMVRRLV=u=4;ExDTim`m_ z>Owg*{nNxZ=Xu8ons4DfuV(Xhp3a3ccNZVXw~p^@zIx9v=D!J~F#6s+XG&^?_f6pe zuijoz8s4KZ?;EQuXL9~VVXePS<)WO2@!mDOweT}wbaq2=t3v7TCjB1>*IQ7WcX?Pi zzLM|S{=7-c+kYl67rD8)FpKbK2$%dVAiNc4cwntA^o9p1crcT&#>8%UY~wuX@WoMU zG_DmtFXdD|@U4i|@a>2dVv`y9Xrs-QLElfPTfNN}#w}eT+BZ;!Fdw(~O6S#21h7L> zk8abwKC0g(=8ZDF#n@grnmVl{?x!7l;*Ajgw_kg*H&f|-8TgaJkXPuxOEigo>B)#g zJEbmFR@G@xSL?u|HY}Z;0FUyF6DC;RefQpWY|$MPHx`Z-jyhzbee8!u7h^_Xm4bq*_%__aY!b=fZw7+I%*Mls9m-~pJe4G-WY2y zryL2LJ@ei{q73o3OnG?Qfp3iWwO-+?w<-1368_Hj$Dxl~k*kzwq(AdzFm1QE&ywHp z^VA*|ftNCByg}Y7??!`>GdEx59%Qs7pTHM9*a#p%h`a|z`_5r8#c+fWSOQdepd$Y3Wr%=pWB<6bsfpvQQ3E~~M&?66&7 z{(U(CO^-uUKue%wgL}6faOEykBKlE{E);Epd`7j<qolV$l^nrTcLNaHEi?O9`AaV^R{z2 z?_v$7U2E>MjI|J8SCl6<7Iu=i?j(2uocb+Z>h}hI+s!(!2wXyNx_`r3K|kS^@fNh+ zN-RsHU8VgQY0E;e_xrFhVEYxp#(>TGu>FAjA!%bitbX4v*p_rI!h2xrTVKrTY=HFF z+Ai+Mq6{`~<%*|~ma(qtMem#U^4`s=wVV0Pc>>!>x#hg^{Likg73G{0rJv(|g^h(s z^G0xP%x)lm)n7lo<(SH3U!m{Togk7s-T(1>e(U~>O6IDolB?)hTiMH>b%VY8{doII zb+!Y2mDJl*8Bg{bc^k{fN+SKbl}Hz?7B{~R8_csEjUJENX>=6yTjo1Mx;?IZe~(SD zyeD(7NA$ijB?lhWQx8nrD4o<7~XEw`=;TJWn(1ApzoS7+6}ri-?R z)ei13c$elX`SPY1XET=O?j%psPmq`JEtI~o#=5=vUB>%z(0k2`#^&5z#%h(@+RcmG zNgD@$Qg4i*i`55Hx3ZtJY6FsogPHTzIpFcKk?b3{j^^vntJJEE8y@p*?Xi&hYs;zc z`~eI3mt!M6uq|R;Od;-kBVu)-m@Ctk^^e|_RvmAc>CTSEt(>-&t|7m-9`(u|wu9;p zxv^mTebd(JX5HN%?|3eiyB#}`wrl)%;fK%0rsj)X=<19#ZQm9Dc-JVCP2o0%@P}=U zK&L&+`(|^{NwU@E7#+6Il%-VK$BWWN(Qztw)xaAI1Dep?xMtp%t-@}Sofr;Z5DK>( z_~xgvL;i4{cR)95V|k~_+;e)(o;+9o;n^## zyfZ%0-7ObkzKrL5 zyZRvR!H7@PTf}|ZwvOl9Ot{`pjxoN}@2SD>nD={z|GSdkmPH=i1z_4e`RuZV*ej=S ztIthaC-T-YxZRj@W1)EvX&Y`VOyyfyb7Nr!aWnnAXM$JxX^&Jme}$XhGGw-7?C!V2cy%Y4!?*%{ z#rScu#*j@ByUlfbwihDCsb?PsQa)E1kk_tW=fiy~_~qkA&g zyVA4+URX8USx5h7*$Z9wr1pXvMRz77lklLPH#(iAg+=gze!ez!QX9Gq9rdXZxd?I5 z!Nl8q8|G)N%J~{QO5Yn9{S&%CeCdnKr;df^(6t2In+Z>$AGKZ*kxU%gMqi!D{#Lq! z^s;Fb#uzdeC0_l<%oK7NbWF+#MH>Ojc(x!gSmz}Z5j@qN%TNBTNcA>GW1SD&1kmKEW%SSQlHRJH=nvhXV&58ok~-8nlGEc z7-0}PQg`=om+W@>^FptdCAo6qRKK5QuG!K(J2t!w zwh9_L4rMHEEq%iQr}l2jwmpxtR>7Ox!M$<3v6}1pCH&=k6@9;8<{gCmA2KhSrXA>P zi_ROK?w`}DgO2c>U&zTdQ@e@d4ymT$*jSG+pC)gUIC;sHLZ+;Ovvz+ji z%wuJk+oBCHR$KLka{1-R25oaH>vvt|URLJc=)clu zrE{bHXJM|NmC4V;F4Ea(_5Y)Ihp?Xcv-#K!E17r8V8;$eXXxGBh{9^IYez8tL$*@L zrtWK`FEHnrMQ03te+?b0cGM4;-RW-rNV-|1qpcP6*09=8Kk!w%)W;6$3OtNCkmIF= zxs}Z85Z}OWWyQi-ALNoN~ZPN zZaD2q(tfW*+T$o^INjx>yShZW6N=JJCEZme(hVjZ{53SH&xj)DqP3CqUk{}Z-mQkU z=IzNa4Hjv+A7vL0cBgGchi4fx@8-eF&g#OKLusq%8!D`2+hRrZK0vxDCDQ%5C|x`0 zCWO=N;=cp`>-XUQ`J_FOv^)KFEqhJvW8vA9xz{3hExKLpF2&sYd(6FSPN0&0it+!$ zw-Tp0Ju}boe#DxAYs0O_y^OOyh*(M7OxzOOdfdynF5aCUj$F)bUsX_hi==3G%C{Al z!O^ycB9nHSJ!s(9U3_=F!nk}rdWSgKMyAi_J?r)KU2mf2p0--^Kawp({6u6+?`NwG z3;u*pp%>{39o+g&&ADaI&0Kppx`(mlZ*^zawcNWkl;85N!q5J5#+Ik$4z@nVtjkBt7DZCLs;@0oBUW0ubVU9;QuR%A_ zZVg^LlgS^p7u@f#k2v5_8FxZuGVs0n43+DZ)V-O!@+=GGIjtzqvQVBuS(K;dlT_Y- zPZ6I_;5Ffvbw-|j-%P!D^~(G4+@F@orm0i$QDZ&9xB5J6G-*%MoNqkf%i})n8=p$$ z?*83O%1iyFB}b=et;+bRQ1+SsnRT`VeH3pbkjGiR+|W~-c^>j&4#AT>?N=9kIG-Qw zB_HxMbOy3pVckrBYSosidkenE)|*a$q%p>1+TXDt_y_Icd#`!(W_Al@zJReN0e%yzzy`!B8qcQ$S(?%y~V+4)c0ySRVgV&wUI#{8LP z))mNO@u94h5_Xu+a|&KNei`;^Lj7tc`}o7uMVdEYtjqHd9*@JLs~Nuu&n1!r@TfdP zh_j$ub6)9;u^sYPBZIP`r0=w**eazw98!6YIru2fl|cOm&z zgmC1+LA!Gowk~#iFqigse_Ww)iQw)8Zk^A&#o`@d0qf+_!glr1m^ps9SA?= zzr}~U!iO6lSy~tZz1De|>=8Jv?+0zqroCp`DMwmu#w+`1@hXGffCunno64G^j|gBi zMp?(Y@SPv-t_#{-JVKpFwkw$zL%hs9nf4A`ia!Ev6|I?kig!9lb63q3+?h!D`;;Zs zJB4mBdxM)4exA}(hbmi2Wo?x#d^68kop>cQoqXsG^jF9+ah33ax%#I3L%O4{t#BH! zsT0uy3HlS#j7DFb48c=Qe*GnkNnb|*6pOxteuH;mE;xs49eU|Yh$U&I45zt1N z*oWZJ^=Yq6nxAjF$ERxmG>PWJ#0&Hnx;`%6e1_lZhs5*S{j|!DeuVryI&}udvMa4Y zP1Fc~4WZ&TE1^s2iof^f}(0f{vSC z^ZLKAogds)c{%$tEWJU*`s5haJ`PqL(hnx_YmQ;C|2@wC9?zHhtVIuUMr)Gc*?7Jx z^JM=!g|EsOgAVC?wReqIr9YtA$PUHpjPhH1-v%&G6~WmF_6Q%MwWD-S^l5%TcTa}z zu$2DMJgf9_Fh_tL(s`onm1c0HXe*A_E_6R(CG8@Tv~pVaYVC7qA^!p6HsnLUE3qTU z%itH@6Tu6uS@G0%w!H4or7|~?&M6Pg7GV{b5VFZyu`OAxR0za;M2P&o59Cj3FdpZ3EwHc$HD_Y(dX z;Z~aYjP#R*fG^aGX}98WIsC3mY%a)d)EbY*{k8+G4s#mNX(b-pDn8cW5BT^KKd*@7 zg1Xb3U7fWV{LT3{SW^)Wj4=IDP&X@lTpH*1ZqMZBC9Zba z!{DlZDl(ppP=+kmLPOf;%~F*qv#HQq{cJ+Aj7l=Cc-gr;P%U@-zATF^! zlkW+AHu|e$)@sIgYQxgs*Shc7w7C{M(B zPG6Xhx|uxvM!Y}a?S%groAuB9#xCLa*xW+w)Xn@}j(-@osQhXC=RLbSd=cR<&@NA= zT$a13@Ox-d`VR?Lp6l@U!GF2$KOX;6q#vd9$xVgdl3ujNq3J5pC~v{&4qN&V1HUTd z|F!SWkmg&^_W-z_cD%fQ4laeu*1iYWJMo`Fdiosf?y<)1zLWGB(wD;*i+QHI49xW0 zKPY=Icp@4&H~QP3^qQW(1b;n#!QKPTSw7BJz{Nuqd`$hPd zf!`_mlO7&DVY1`!m5x4n#MH@B&XdQCn5eK3lP8bhJfbym!j!4{J#O-;BlT4tXOqXN ze%?9qZuaxmdKL86UgPt1F8Qv9uV1HJ(@BGk@>{{bO}dHvPUGJ|J<9(8e({*{)m|z1 z_DzM^27au@F}znLJHd)SL^_R60{=4nQ-Qg}hfzP=Du0@?r#BU*@cSa49_Z}6(8O&j zoQ!{t@Bb41ugMRu#^L{}{O+a#vf6n8eq`V9F~#q%C@!<9@CE$m;m2k&ai8b+Y<@FV zF~2{<@3Z-Rfd6|izgzf?J#ONU=J#3ruJV5mtetP7)bBgbm-8fl(ct!u%IZ1wakFMx! zmLHy=dpl3X-`A&AIwa6xSJD@&FNpg(Ok)Ye1ku}M`VH-M4ANfWr%m~32W|HH?=dr) zr($DS&67_ZM;Wad6DN$+cgjeFmhVIfCEroa6K9y;^62;Y5tGetgjKRSa>6Ml{rF}i zo8KcQjx)cfoif45@YE6BZ=o05$WbRvLnf?=BS()whODuto?_CSEDyg&2$1iX8B+&4 zd`F!+dW^o~P8o6X7`_wz?}SsP8oI~$bdK@q8#{5zc;TNib@D05l{IGaR==aex*>c&;?b6-odSGoIR(rYxCzxoe%@uqYZYOqy_9fZv zSLZ~-8$b7GVEik{!?1MbBTJ<9*DA$rs= zi&rs!4rDZb@#kmY4BLn?pO4V`iug;Fbb7G6*Ji@$yZk)%mOhD{mio)dxtQve{!{i^ zs=wE#<{$KU27FxotjUkB_Md4TGW8ei80xSLT9epnydlH9v`rtsjJll9xWU4C<6>;o z&T<@Koy_Z)aWVG2xvySryf3cHvU9TOY{rNV>%EK^UGl_KT2$yYhw(pm1gWXY^fUdiN6K%3<#uBf*m0otu zOh3K)+%tW@?3y$1Ykp96jmG&y!J*%>XXw+gXHv$VInGa~dBkO;OPO@d#)dhHIO-Ss zr8$orn0$pp_RD8|9I{`I_i@O6p^VrsDPzBU7krWr{g$nvv76v!YtW~ebh0((k}gg; zFC}d-->Gs{leb`HXCQxuud*{_|2{yt$}BwV@nf5aceSd|FHxV-WZFFoe8D{Ec+$x) zJL60EgE`S@z}Ts&IqZuj$w^sql+NZ4fg4GtbIh@U zBa=Nu>D2CVz0ff?CYcK-UU7X5ZseN%SLo|_8F+j7c*&3PU?x8fJmpE&l}Z0<2*2je zRVLXNihC&(_c=fB&7m;qB=DGdDW(4hapJA~J3{`qLjF$Qul?@>82^-6qg=|3{xIW> zrX+Sl47>^d_viR6UHV1n)|gs)#OUo5_h6i+y~{Tj{Pz3s_nGft{er%8VZmFo?_j)> z$sYIz?~KJA;Eb?FJf3|*!5N6-!K?k0SNU~yjm1A0d3}ZOUIx|0t?-hz`RsEZJgu)c$qsm%QV2_E$ zZTVQ5^}h5{;20}2#x6@|@~K-^7o@X;@-c^*+YBDo_~D;bI~%`j^E3G-(yOooNt>P_ z`=VC!_A9`xxc7K_ax!1#XES%i{!-?vUF@67^9MoO8O&1&pXiwE)Ad7O{{;UfuWGM0 z-{0|#@O_hSlyB6wYP+n;ocOww^v6Tje~7c-hxmUQb4!}{QogLIZ4Yp_<9`QQr;sl? z+RP1&#xGrS65j*(PU1@+TPr-QaczGHTBZ?}Anr82m-C&$7a6R5_orR#C4`Q4=BG$& zrMWAGxaFi7$R3fj_(ItzQ)h(l9eksFZ|CdAbS?(Ix2wOImPh}@`@zc;`>UGSZ`;b= zt1l*I<+QI<>yPZ^r4FqXnp@Uy+e*2W_@`Kcf1r4)2cZJi%>zY1^r1=|`WNIe`9u*wmY!DD==C z6Z-dQWlt0)Q?}`Rsb`g^)3(5Y4v?Oi$NG?dJJ=C_({JZm@IA&n|2)nms63No?+lZ_ zC$f=-cFD(q)Y})SkCT1*tKjzus;_h=FCJ=51sRR&_o1ZG+~_LmJ!)ire6Gw7TTYnf zU9nMW19_9KZUmQj`2pctCnZf5om1QF!(9Vhuoq+^dTFd5-WCeKo$vtXYv8O&FD;xS>3h&{0eRK5Fy{vj$$e9ZjS@iR&24~P#HOC*6^A7y* zX&1gVKE4;h7v!(7NOwtOS=T{qH+^h*4h_f==Pww-o+%a0<{nUX5zEYYvDL1QyM zEdHGVZk?@A7&y~Cs^%|S}Y}$Sq@}Mz-jeK7UtyMa!V$vhy zgo86bCkO{`EXWr;)ak?09{~>S(_6xxX66qI*aF#$fb;r3hklekhO-FoLQfWFGuPQ- zY5x~GpR;3|M5prh=)OzokEAR$;vM}_9ce|6&Iff=&vVuHR+_VB>SMjVnM>FwedTpg zYrxW|l{((4JPpFE$8777gQC{u<1DLHeW%OWq2AZI%Qn=z-|JuRwx&48&~~~2XFfW^+O)EZe0CfZ}g0#YAr%b)6kIk=r?t5AKE!N5VW}kuYYoA)5 zO|&eE^nEguy?gumY}Lk$UCHme-@^Y`#*WGVHvSD6JA!}E-_~cZ>&VzPe%UjO0 zR>z#2<1ETK?5jlA3_HB~rfgX%Ll>NhI?l+5bYQ~Ub2+S`VtqC?K4T{m^CGr868(La z?3!T>JqaI8nF)6|qx_jvTlT<7*e%XTbmQc_qp^)Ml5u7P=j77tVc~5wJc}Vnv?wh!e2?gswdvyI%CKYwAHa2vt`zU*hcHz0}h(UoCITKUoPbDZB28l5-+-x zzn(g;7mq$}nB{&Ke!j`vns_$d<4u@n&RBS6_OI@RXJhx^Srnc{>8HiBbckoM)B|pr z^()Hp$SzvNzfU4O7UJ1w#Ixy7Fz(el_JhnDtjQhl*Y*5f17D~|zC%8n$sPb-=N>UX z8}PEX10Rzwx@Asga4eY_EO^^mv#Sj%T`$%KirZq6HrOYc&JLzcs{IX)((ZsY?ec+G zQ|}j|bv;M@pd!Ad^6A8HZXX%h5*rq4+WGwLBkj$xp|Q`iLwbwlBpzuU_dAy+Z*Dx&FkzgM%=U!+V?7Yd_ zPRHxGb-0aHtc_rIbk2K@ag@{1;JeX*t`HszeGy60{`@xRBqrsmnlp`Z_y;f#(PZ~W zA1KVqjJM#0-G?^hq#M9vgLAZ8D%MAN*95qu$j*t_W}*)|<92e(>!Pp9!KUfha+95e z&g7OMsz1AcWd*7V|`14fFH$ zkF~n!WfP7K;e|I6PCC-mcMY0w~>d=~ZXf#p=F0I$3A!uy#i3){iXTGO*6!SL4psM=Brb zH?DmA<)i11jBfTq58i1x@1Pr|z4Ct7XK<1qWHK*1WcrZ4e-j;pZOb~sq6ZvTIW94- z-#BMnf57V>UZ!LB8@d$#@qHw&bm*z4dW|Q z_U6OZ9ppZ3*)JWwuCKdIyW_2@myTQ)cPkt1Emd{pZjZ*;7JFc1%Mo{2?ooHd z9cxF+&c@5F#`4XLm)oDQcARd0?cCy+Fz0f6h_&O?o%*$Ni&9V6Ih4}bPCw|^-~6vw z)`W{Ln>FWx+0Lo0=UzH%?gbZLL^!3W9DTuM7tB7_8F__s#<`bXY+0vXcJ8I;&AIrS zf}3{H>|H-5Ty*Z`v(B08Og{JP-{Z=$xx`w&k9hJ=E>ZIPOHrRoqH{uuZzza!!83az4#m z3~8KRxG%r4atpTaj{nKo3WMfqY%O5^W-ERA(QQF_w2#(GJ`Zij>nz3rR`Rg}&+oGu zRhWtPoY2)X4(yhRtaJJF>MU*ZF8|;>=Sllg{sUFkB>R)Ziy;Q*GJ{iPZ4A;Uxo;rg z7v)Slp>k4|fF`XIK0uy3Ws}1r3toov(VUC&d6j*wR&sYf9YOj~KI@a+=aW%-D+zAO zO&MZt`oMPC@tg^>tmCMsM=Qm*2=@Jl)Ip^$1Lym2wC`PTGrNJK{M+UnW>vQ0&cV$* z&Z^w8!M0`$wkiizSd~qT4Z4`XtFf9Z9Q^%o+ekAT*MPqcm%vrxs&KI#hZgPxPT%E~ zR;AUkx=@GAo?9Qa0{^PR@zcMk-n-lLqO-S+jQ1ifq-(|&PGz!ld%Q%s8J9Az^rw5Z z-)l-f${WGzM`cqSjk^%X+>g1NoV^R3uiyaUZO)rnZ!%|?npWc1-36Az*pK_QEXTV) zR(|a5ENW?m?RdITeM9TOg{0N|%wxo*p}VcnsIeAjS2N&>=^ljrz!eMOih+wWx`saO zuVj!IzZ0D6IJ3~e9FX?V2k!%DT#BAy|FrD}XO)$=_SxEL_|%Rp5T9^XQC4qneNECk z+oJg??RyX2{pyzt_QUUqFJiguHOH~X&u#^$_;2-a?L?))D}2Hw{E=Pz@!Pg(Ka9@N zP!DcJh`vhZE2>&`E@uVnGCE`4Y{OsX3w{3b)fwKqq(dl&>SRZME4SmA2sX$(cSrAz z{ElO=M|{5T=)J+Dzb%xW9UEpZm-cjNT}g0GIdtPvM{i&pkv4Uf>SgDY*A2kxeu@}( zN$iM`R}E`a%oE73`6uXGL7S5f>y&ir||awZCzcS)}Dst+j>w}(L}kcx>4O*Rt4iE%|EKn=aEmE`fMZJ@@)!7 zrrEm{oO{}{{y8VHM_pC;b*1(NKfFIK2jH)|3!{&}9csto>*qstqVpa``%2kVV(LS8jiK9Dh&ZqoqVCq>?oM3p-@t#8~NoLIsf(>yos%`*?H~zPJcRkN|>V@p!vHr`80cT?eI_ck6B6fkV1#@j`?}V$XoX*D6aL5g$0*6v+$i$ zkrcQn7zfNV zdfKu!7D{3LWA7w(Pcx@IwQYhq9^4L~rkd9{WMTT@S@XRiOCkCF``@o~M>zVBB ztF+n}H=6yYP3wTM9Qu^Re8v*=A-np9g`_h&q)0Z~3a@}?CFkxkoV$}A*15`9n!c$0 z<^tz!3JKa?LUK+!*1WvV1WMOSPq63OoXM&qT;~G`%G#cuej_-4B^@nY9h}SB-S!u5 z)80ePDVIC!74+LrRSWsGnzt%HLhHSfIe5ldada>`vOl^HU1B9DU(E3PBQV_I;lZ$f zHdyD>nLZo03)ZWvkHG3omFlRnH~ATz?By3ze!WZQw+NV-)w^}@E}nwNVtujlJn~IT zU$ncXFJrDnJQaVn-(P$ZZ^h$aum6|WN8ZD_Q9AXFXrjW^xi;|^^S&fs)jtGh2f{oK z`a1Dg`e08z#h&yKue3hel?d^-8y>L+-f21XMahK)&5cA|%0_)M2SS~mrFLM~k)P8| zoem4-slHKtq}hi-pSiF4ISN>nLG8+{l@#>>+M~hxWKKF{q`iDwv=y8w9P@a?&>hnA z4exht$0l>jJJPOI-{z)HoX@@^*48>eK^9CK5HTKHZybFms1*@~xjz9KW9(N+>uv?;(VR~+>0%c5M)$Vx<*iy!1x#lFf{+~q z1-%Jb*dfTGGl~J(hEWzlZqA<&@(2g4#@MEQTu?d~KZ`h356zxRLt z|EC*HYPq$ZI(6#QsdMYn`W%7zL+>d^V2;q-r8y@PF+Nxy9P^6gB6=6pkdofg?LArJ8~dS`&-OyX&fGduEj@Hu<_EyzzeX;a8r z2$v)~wuMUa&^h91B)4~!CtpDNv@X2tSMi&LwqS1kXZUsCme!3sb~%yoN^&CMlw?HW zYxi3#NKT}9CV65k{|-w(et?D!)4Ho_J0GrRoPfg_2>+3_M5y`c>B#M|UIde4;BAeo(4Nn=3reHg|7AhXH(9p!iMGJ75Il>Z(+<;4bkO?yj$ z<|ff8<|px~D)0fHfYlZqGjM>veb@b7UpCnB$= zvYE!j2ePFO?^qL0j-_WvLwi>q@8>9>E7m2W+^iLraYZXE$>ItN$wDN<(7wrN%mSU* z0T!b?eS!MHR!Pl@;dS&tVS6`_mtMro}W+`*(li3FGl*Ba~>#v9O9BGPZ9ZT zZKrQY)3=w2ekhM^?%DQ}bSI~6%wM$cGY_3}>?wY^=UZYGNWN12&FX{ql1YC^dvuP+ zx&quf_#O3;WWpf8FhCsOVL&nfDlO^z+z#GG>A=%2K}MErC*9!Eett6Uqoi{m@LxN> z!?^H}--*{TlD#V6R$8b%bdLeaS2X7o_oN{{Ms}4FA48dxj@|*GvBuhV&Vd^#ANF(( z*~@_^2Yv|8o%7`3!>q_OQ) zkzawmux+n;j{0&K&koWal=e?(@9*u)a^#^txM80_=g>0HQfGfa3!o3$NB(lmE3IT3 z<7l(AuOs_Tdw*z8E{E(yd#^usNk{f>#4m|Ql3eIWzlPG>Ge7C9nCOS*jYH@2b|LzR zdH4_PNmO+HhrI^v8Nm0YJNaN&D6OM~a7p*G9k37J(D}GabVF+-;TrS;dmVCVUr#)R z);ZeOJ7}m#q9L1J=ic;=b*fUOGFW5}Agi;LD|&@A=_zpt+I$m>{79X!WDgI&ji zbTN$C-r09N?;M+Z_V3UU`GB90{ft8fm4SbOzPs#=s-$wZaR?G zN6;?q4H(W>$t4|tV;yyjafe<9X&ie3M>@xv=}7wu@Ikb0)5D-l>;ovRW38lgMEC2E z?gG)hUH9_;HQeQ){n8u)PDu85;Dgpj2QFxRgq&;p+2;t+go6%fj=`qoH+5=bQ3mOu z9BT)sCmsiTcJOEy@Vj^=zWs+ZFF>ADLGKOOspSRSeBN&bl0RsQ~T(Iz#sYXaPDvZ$Kyj8@5Y&Kn!3QAP$fOcm$9NNC#v9 zCIKD;JORiB%mfqx<^mP~L_h_g60iiY46p*Q3Q!Ap9dNjJQt*?=nKBxJ1u_vWZuww=A}&@7MFJl%C=iNpV#z z0}w}NBXaNpy}i5v9>*<#D1&dtnAF#uZ=^ePv5pY01>pq{&uGRSP%hA6DKK8;xJ%eY zFhWk@S}Jg_+9td^+YCDDEs%{h;_2Qid{=N2zvx^Y;$=9q#(M%(4s;c)WqCdN)jYL@ z-k;3%qq@p1J<%@(`t>OKr9i)U^owMKd)rHWr1pZpUdlUp_cHY%h!dI}cUz@*-+()4 zH&{60?<}ZU?@?nBkVlTPF?N5DqiomwmT~*jS+33GK=piQ+kHBP=9CI%cQZG z_Yd3nQ=Z(8JXI}@u`0rI$5>6a=c6(nwd02T8D0EoUHsTHbkI%A2c2~GaF_V3F7XNW z_*v)&^^x#B5^d^=Z+hmy_Ygemif`$e9p45#>xysbnH}GKJNjwExAe@8?+~dCHhL87 z?VEZ{(-Jm&M69rnJk^cLvFrTG5#erPd%55P}tqcjm zRrdEZm=SW2afQYBZe@$lo)s3+tFop3iOLpZZ=3-^o-syNwwUnU0ON?tmhzE{T8ssi zEr$xLTf~#l|JN^X5wBFXjBZ}pBCf1#Su8GY5udGWX~4PB`+r<(ajmUvZvNwomc~Eh zz1vOj|M?FV;~wyA)WcT84r32w?$ygI3~_AFBDm#te*@h2Ev&A};zMcb9BHZ%Utv#k z9PUY}48@*hEjpA*X~|Fhpfe@n$7~YiSFQys|xy z!(Cy)w=Du*awi?B?QWtSJ#eP1uRH%*zqJ-m>_1K;yaj$2#3?Yo70^*odbK_ML3{eQ z?dh8k-VZ-yPAUCddwR#+M@Q`G8|>*nN4Oq-xjp?%q_@e)kpC65N5lJ~>eFzK+jOs3 z@BZJ=?K)n?|DvpB6<(gQ4Z?E9u#uiJ?UtFOJ`X-@a%qN*znzq zIx8(LNY~~G8bujxk+d)AYzw{jqn2!De%a2`luv;%r+lHE`KXO}m+8{!`|R7KwqV~U zO9n2p0N@Gsvn{J*zf1gp^f1H|NO!Ro<&geDCLle+a^3~!WXcX3h5Ma@)SXz!!9TdYcZe>ptol-pAQM<$}N5tIK%N{v%o; zTNZ~-<9<2}taF#J9$v}^lmIpYb^`9J!(bZlP3ATWdI#vB&(9(~28}h&MyW4koANUq z#(mP;aDE7D1ipuf_TOuBvH`m2tOw}c%+*%;4XjVVy`*2%1K+^8Lq9=#OBxf>O)f_s zymKJgf;e;!Qahm!fiC|1Ec;%b=#0i%=3QsICzHmUgC9C48aEnivZ0`|Z8i+FZZw~x zI^_IOoWp>ZVysDzN%Y}pTjzOarS)&<6V=n^Y5%@jmp0hq>#@hFwCqDV(N4>4o*LMS z{1UH0VUU3UGHETWkZ??TFq^L8m*v~y>%sRbEu;q<(?zdO>mKR6r8LT4=5^Tm+&d=- zCxmCoF2{klE;zH@HOpXoZyOK7-G0mw!kJ^9&>HQSCyse_Kin0d&5n7}#_o?3Y5sJ< zhxs?~LA25_)@U>7E+!&9O_{F0`^_Q8+#x=Dzj>30IWitVycF{0rPTn))E&GKvTdr>{SHNCFY@5 z2hLEBG(SblZ;dO_vn1;PH!@FA()H6g2GKY(veN<0@HSoDy|gdGe4u$rmR_c z#Jf9ay0a}^>Hm;D-Tm53=>)sZ)}g}{IGdi7=8eSTVPkKbGo9skrT;%6T|Caz$!3vw zDDI+?a3!_PFk8gP-MIc_*LJ>7O&ds zDBDq&W4)9CFEWx*Fpdl^*;~9!^n$+7S*Y~AHQXIWF6rE5zhWyw>FK;lCY{YxTb6ez z1BU(09cN8AkCEo~Z>}^MJKcvuyyLgV zjn35^xbBVoxGMpA{-5dke?cRTG{8CJghP-Ms;yqgOLl*YWR=Zgf!Hz~dsul8?g4j$ zO}Y#=kk7zvt~)PaFC`}%NZL2j{teS6cn^!h- zt38?@TwMSfe-!P-`>iNT0lIa=eMB<&DIRpZQ;l$UvVSbf{Du7^Y@fl>9QKcP`}=yV z6=V;JddWVH_96^6^F?37h7R_R_wvr)V-J~n_5Svdb@$ps+Q0eqe}xZY{z~VG=o=Hj zhxPBB<2v~8B8d-^jne&iz|Z)wy&S^P{mLOe{A=a>Dj)tg+V)#~xGR6Xm-lw?XzT?T z__TwklDzZZ%ZFV+qpJTVK1^dsHtIO{{y*izglppG3~R81|2oe89pew30_F~6IMOXt zN_9HUOKtkNYKz2&VRO}nb5eT$pv{MCkvaHq=;8BZ1EvtFEx*QV{xd%Oe{1Z1A0Kw< z!iWF;v6J|47rYY>CSGi}_s9F1zr=T^y;8Ns#)pXq6EE&~kKsOi*p}vhh7Wt#`LOzb z1s`_EupDGqhpvO(`S&74*PM;GwkC?zRY@Xoy9L2?fQl6OW%3AAJ46_bn;x-g4oN+{grZP zKlp3q*m!QIjR^W^vk|eENo`WoJ= zx=w!T;Jc1@Bb1O4peL8^tfBqny)vzX|B}vyWLnx++4h}ocn`?6L+{cl`-(_M-{q*3 z}N>P27*R zDUE|RiI#}xc8ssXehm1c@w@+;W*=XyskE-zWavtZ2g;#671`OiQknPcy&dRVCamNl8sERSKaxi+U{Ns#k-TW3a&X+Q_(C-7GV>PXH*`Z;pWh0x*J@9cP{BZ zvf1d^nxF8-q@MI4&|5;rlffPW?{7-qWW0?tDB_RuWVF$UHe#NP!?);^Lvb&d{Mh-s z%KGymyXwx3gq@p<*nCd52euVO%I2_*WQT!wUtlYf1wJ?e5D$15kOD{tqybXx;Yn~a z0i;tV-B>n&bjy@B89=s|MSwW~;|! zxc2~u0V<|!nSpO5Dn0AY)xkzZ!SF4#_i)b_&MaJ5Bf>18+8xh&*`6ihnF{$9c=_Tv zbDIbI{hA*5UNTpIZc{H&%0CQg+B|$|FXOgN<=))Sv12xtsR-v4z(}c7`4#{wyJ8hQ*y;~!%z8c*uS?%&AusiP)_wX;&uE;9zNp?dowB9Pt^RxvXRi}w!&cCZ?&@nla`$pJ z%9Y{ncZ`345^)C9H3e}&a2i(Q${nAf>L=o3D}cMxT5xZmTWS1f1k{v!BK z+5I!%|IqHwg8wVz!JYk5o^*sKY`%LbSqqyj=x{w4=>@#bG5v&dclGa`$9<;fhrEY7 z9eLqv$Nf^USGgQP-=Bm%nMb2&;ZcTyY?MO~hxhqqxRVp_@>^Kjo^xt@y1+Wn49?2h zT9BrBqa^}o)_0#fDcuJ^@l8LA|5A#VBfj1q&v5U+mAiL)?04LC0Q#f3Lf@38I}YSz z*BkeWr7jhaje88B4|%EL70XMT0dKq_*_P3Iqu^Ixp!e!!ZQ#)elf5{d72#bblF0&c zVK;+!mJlY{67MHK&xIu=fC-->E>-$okV1Gt^3zz+^B*ye7bUu&eZ~ok2WP_#(i82v zG4>hKOZQwt*UK*7HoaoGokD3k>%cxc;BDM{NBwwTIFQzo&L-0xzdPyf z2iw_VImU5~MQ+6X44@-fTj4pf_hkA|tL!VF=L&37-)1-|N<(LT_VN8?J%;zs%|!ho+=(;W%)O$Y~VFs$LY zkK!)yM{`DoG|P>zSe7RPvT#R3QFROP65Du?y}gYl=sh)-Rq4`|UK})W9pfcKxrDE~ z7&El#+XXI6eFs2yD=YxqQQ*D>+@;VsUCw6U{)H?+E?^Sk=q?7jhvBt>Or4E5GvET^ z9QQ8-#ezorLY6SBzPPzx9lnK#cdTXmF3PU0YKBhDHa>94PeA7o(wN!93jTQu-RUSO z%B6TI3_XOP>=MSE%!0a07;BZ_)+G!cDR^`VCL~SXIi25k&0mjqQGOoo`kb@ZBbQuXFO}r_ z+1;sj*WXKRPuERyrTf|C1HNutgSol-Ma%o(&93E(o0<56MU6cK!+VRg4%~eLa}?{( z9^%8qpM(kLc69i$-r*agpYava+O?MA!4FrH+l;hWvlf#d`sB0rGz;u$=5xTS1h*}$z5G;8Afhhxn&5sd&(^__K58?&BdBbt%ZD`(UDouSs{81l$gyIKm67-K*1BYw1tvnrkf)d6+XF$ncGX;#jf?U1VuU0d6599XSMOgd7pObHsOMUY*caeSASCZd`?pTr zg4pr{=0dTO`i1vm7``un@uqj(f7aJ9>T89K26@n+{uPTJ{S-y?7k%BCh5phyjsB6W zzn|y}>E0ONiuvlgAJOSb#be<@B}WOMOM3L}0`Q6~;W;S~$s zr@M@@F3m$(xn0Vd{Cmqn|9-RYc(0uYos9`T%np;F2B|e2#ItiJ+=;l}>DT~#iyCgY zE6C^H|8b&>aYl}D0&el-6^v86FixRl9EY1wWoo7nU75n@#uS(!3f_Y$)ZLf@bgbaK zm;x`HsEry-9&bz#Ehd!@CYdi&bAC)M^JlyfSDy*pnT8Kwyt)VD6+NLQ?uFyI-b^qC zGC>en5Ff+@bubeYA-EzclnJsv%xDZ_Mj@P;_y}fHKfsKNzRbw=V@6qjCK?AYQHW&a z{6HqE^-NS4n8-yjQ5MazWHD@seh?cra>%fe5A^LfGIr?jfiXjd$>j=#La9``095#8 z7Z#QYxHqm8*UAkg6uy8-4d4NxfEQk7%nG;w1Hr6UY+)S~ELK47cE-Mef+ZPn=XKne z@CJ4*3N|Tye1a(_C$F?rcyK^weo5XIC|vsg2kwmf3uB9+bgBCc`2Y={qg*K36>?XF z%00=7o>J^Q_8=R@`r&B;%VTp{KFfjYE#qY% z1$CP|NXBF`j>%j(0UjoHcf}mw@Qf9G!`MszVr(*`br1Nlw(wlgB7-8XDpi?NQ>w09 zves?uvNt`BtvKU(an&uE+(qT;$$R_w>3a4?YU5lvQ(}YF2sa^bZhlT4-Ue2xd6`Tm z%I>M^l# z+aeSDp#C8!U@Txg;2Z#x5!tBi_@QM?rgA|A$?4wIrlC?@L&uexi_-FD-RD7?DH#vk z?P=pDJo3nW@^yWzm6E3C7tBvjc9h%oxm&Wi1f3}Z8LQ{XrFF#+#4vjq>w&NqZmc~# z5Mjd0LkJU|e%WAK)XytpofRO@Xq4d&W}bjDx^#k#WHK*M0!CCq3{w8`S9Vp#jH?+V z_qRaTf^;9s*qx7L?8X~1_QJ<9*7%l;ZGme=c*{N+8}dHr1uok!W6jqf0hBU!8g9gO z8S7byu{2ga_zdL$zJY%d z+8YB%2Pm$~*ysx~CbS|A;BBON4gEU^Xl_JX5Vsh8`UY)1GR1~VYDegC8QcFQ@PT$x zcnJDG8g1C~57du#?AR@1?<1^6*`EVuGy(^w0H?tYPT<*Iqz7(#E(P6>0P)-LU`2na zyd%il0Jx3zzGTAmjPFcy=X2D*2mL@9GZ23R&!ykpi907hEoVgpCB*y81@na`^X3bA z^YY6Cdt6=tXjCXGlp^sBFd=E2DQz^9yL)#R!dYZs7^h(aWUg*Hrf^ZJ)Xbxsrx(w( zKE8hbETBivUcFgRa7bt$76FdlpAFO-qM}i`A#zquuB{bJr$u`nz-^6@sM{X5qd(&M z;zrBJX|v3wGo;x49*FD5SWILorj9LPmMh|d85?V*-3~@N@Q?>1^GkBgwgP>?FR<*f0g*Z8 z5__Y|h9e#LOy9`7+4;6)tgZ**z;sQK<~e1BWqGBj`rrVJ1<1CrAhINn7A~Y67m0KO z858XJx;pbW3n+C!?arI~l;D8&=p;tWoF zk1xF({r9Cw{0q0H`N@-dYBPGvlRUK_E}N^#T9R~UNybkH1$L`-*;IG=d!uh%mnGfN zjQ`2}E~L&@R`OujkO5`>S$o~z*|hNbHgj3j_%hc;$AyP}C~3X?dEE~S_b*)5_Sy@^ zGLO+^+Wnq?Rk08F%iq@hxbSjo-JOM(&wb$cLHDp_69ZEB$RLVZA7Ule$CqY=zT>`N z*`4D_ZNnEHPrC8I!sVYV8Gmib_?yR+>lgk5FX})AaiC$^vZUM7(A;Uu8mAq)#9y9@ zxQ8EJn$#`o!mSp0(j9HaPnRD~O;)DOl+EO8mnG@euZcc&>t^k(n{hQKZp{r?dTpt- z{(a8v{ev=2e3tW^qu3v}>;@|TKx;OaxEtrl;^b4^$IMaQe$RxqWlfvOF7FwiJ}x2E zhWT!8skpLvZk~{vU;1RJP*@@qmd(I=GCMCf-yC_jn_B|ng}joI!V(0Mf3^x?%|W=# zTvFDJ#2@;-_K&8CJ8fQ);z*n$iKy%Eff@cE)sLSb(8n#Q4H)<6D7dMqW>eR6PXGV^ zFi=ur!b>)Hv9G!J*FiNw>Ns5Uz823@-`V{qV~DlowswvD``t?3 zXi@}e7`NnF1a@WDc*H98xIeua9tbZYOGq%XvgwnL)`zI$H1%b1x$(_qam`2THR}d0 zHr^S=AFYoHvL3C!odAKmEE~SE?6xJMT&L7C`mfm5j78lIKvcks? zHJ9bwJ|^7Au^z84GpiHpFTASzhj=H*8sCgRajeYjdbD{tB`KzQ)p5F`^~?XX^kJbg zNFCq2^75o(!t&Bbj|pWtcz{xnBPZbRbvJS@JuH-Ep?%-0<9Km7Jzbu?m3)s~5tgSX zCgBerptSW#t=Yklx$sn3iB#u0L&Gzy^}NaV$=N{y??G_aPSUm|pM ze}+6iW1hk>S!r)aKibp$8Yu7#tV){2w)u>JJxnv3z>%iw^WPhX?V(hD*Sx<)F5j6y+G-x zk5mSY5#gKgL-mk`ipJ6%Kx5erfNeJO0#MsD0B->8Reb=y06zfj-F1NO04NJd#3qrN zL2MxLm_cPg&0#@+U_b~U6kr5|0m1 z)dP$Gk^)4#OMU_Y|BSeM-QAV(8gH$SM>iQZD7x;9rU&J?R_zGu2ZrqmYy@UhzWt5f28!4ut;K?j@T)KSTM%+L9xl&Ju| zuk>zI`V84I@q%&kq4_@Zw#Ah13w$EE{PC+te2UCRe2V{BF)-U*nZO?N6i@ly)g~9+ zb`xTtYH|@Lxx_H9+b-o+7wsd0`R3S&7@vAgqIO;nJ-YG#+OPjbjx7M32K2OYY#yKy z(El>WUIHk-;aI}g9J>J6^F7BRkghANy~44!n;grjl+LGw+(4W-$0pw(C>ab z?fvrW(04uH-e;rl6L)VK3NMz)Srdfp{Yp7o>?vn=yyUDu4+{jq{nGz;#`SN9h2h(?F>ds+_y_u;=*0R5;yJ=mbh}4u*99agl${PE)n;lUGFF!x<{DF|%gnO-JJVg3_{*IXU*Pmi_vBRj(Jc> z%PYypHy+2&nVp?iGF0g7*ZjfA3VS{9ehBX{b#P}Nxj(X4X!C9RP2?=HRXqhuTS8b9uF2*Y)2$QFLF)8g2jcq zxu!V}h$|RAxy!^aB3TnYDE&nm*Ax^X{#d~^4UZ82R>?Iz8X+#MM#>0r_+qZ9HbNXQ zk8651T>RGzuIY;~@n0oe(_?+a0Z(vEd*j5v4OBF(j}xant!Q#j6dxI+X!2Kzf1A&m z&MU>&w=0^~JuI$xNZHhoBMz9NY`SR{XA8gbNvZ>$+@n5%Gn$AuZ|8>%(X}~n`gBO+8O6wB6uRY(`+O6BGs~5TNmTzkC zjM1Lk;IXDu_(b_tT6yo}im4|)Y^gr^=2xP~$$zTotG32Y8C^0}{E|C0bnlvJ%58$S zfBv*AgW*F2s{3lg@~g#hePhhE)09cKwF42F)ok9hYD6DS`nB9pMy(q>D)Wqzao56B zZ(K{gkT5aSg$vJ&9h{k@)wHnkL(2Z`lRMrKGOqDgw^)01!nyaTms#TwfEtirml_dIiPUr~|xy!_gJ zMUkK6OAQUb6{cb}Cw)sii`=sER&5Nc*k!8t{LS*-{VJwzwbc^&*F`?lQ&4uE3T1Eh zK-qibD7!|Dvj5X>JIgl)R($!Qt?XU97kM@nA1fd6 z(WYIa4M4wJc!IJ&24Gv!(rLS+Fa#dfL%zozz$hFOPfj;4i7G~#!Sk!bwGoK$CpWXu(?If9#}noz5Ej zSm>f%TZ?;Vb(S&;bj)g&f4FIZH9TNCmy|l;5upHVXc~R-x2z0bx-GJP(o@AH*~0k+ z(}g&5!IOynYtO5_LU+8T6QBLdrnjx5QjV1N7JOO{C~d8?mFwA1{^i;7E7#0!t2TaK z6?we4e{yK}MXsb~{jm&X_D$->s12=i(SnnQ%Qv1X_vNiUy6^Rp@ms>VOnhEAPXH%O zOf@|sOc=|G+!LZ}?ukxJO`VX+iYAqN{zv(UMuURgRS#0Ik!oLeHqtcA9vne&_4LQ6 z_Wg&3$#qBd0jEuYYx%uN{d7kIRxxA9YEksQdpoILQvedAgj#3zJkG_?*aI1aMBj!N1D@jA>jIxqREcgbPwyC|+j#L` z#&%c3jk|10yZ16JOL?~4-?Cxw_wD{q?yoRKDK4_t)eR3FnR03G5E*ZI>#ZODaM7cE z^ToM}_Cc@Y-FeI#D?r_I?SGp7{i?d@b9Q?@z4kfPGv_PMegDO-LZ0&!BWG#cc_!zN z7Ik~>qJFr`sGHy--bZ`oSWCO_Wiq{(;<5c-quf7AE6SZPUJz0~H&kC)yJ?_Q+4kpB zo}K^v?&k)?Gj;Q;fqUNw9#X8^8dw#0bLP~m$ptN#Ny zln)L$N)-$mwoMaO<5^K0tgp-fE-5y9UB+Bhu$ za+)$sy_dE5S2nHFh(A47d~aRe#F5d>X~hxj-rh@3`e#ekEq)|OHU-nQOZNG)cADTXEA=RoqP zJIAGJyT(80bCE+>PtEE4MGcBYtE@eI_A)jEYoWEmSJ%$$fx*M_vetOJGclgA#XqH& zZwg%8S9vDHUe1KEoy7?Da+Yc1S=*}QE>nL_q~Lqnhxl*j&pTw%J`B&5Xb`H=Q2EZ7 z@=acP@|HEHDwBdyn@_y8$Vb;+z9T#9qhebL7`I=Pu&ZDB2%|*pRmtkAWMo`Ue=3uu zCPsB>AH0UBA=Fi~x2^m=T69$MW(MYE?Xopx>JWP;eeEUutdsT6zEiaRr= zw97DwMK~bQdN^7{UjO!kKQEb{7$TFJc?#>xxor|{Pw;O0^6fv&%kZJ@gm+U%$O^h6 zd;N7vOqn_|v{ZY7{$uV+$z#0vJ{u@`dG=p<)OI~oN<2L=rDQ&pu4@G&V#A)xh>^P2{vXz@L@_>^l-qE0 zL6Xzcka9bgd&Knp4WCMN#JP8qbl)#(|87$GPv^uE+%*LXS%-4y7o3(u(`x*2 zag(2*dBs#=o$Ah8^IW&HgfVH!ApK|$tK7>Phc!bpbo`poG4y}1xAikmYXIVc9^7b) z3VqAVy3f;k%|#ty8WJg`3LP`Jn{}C|^#tO|hp>yD)?!cV9t5sF#E>Knnj&sw`#=laI`vPOS*Zx(+nSeIaZ#=|1WA1%a8#{CIMg3lP8DEK2bFt_>a_QEA zu2bqRrra?H9u2%{>gne;#eHdcIlt+c#beRRr;6P6kl=?EXG>9>vA0S#HapiKP1A;O zw@Jl5(o<?`x~ zy0moTANkU(tDgr)EE+MN`KMLivOe#kvhk#}sOYGUkSYqZ9IDa*u@5pl{^*KjU= zR$*zLkSf(PuCTBOq_s?CU9Yx2tcd5CcqODl^fp@G4~l2JI6gS;L9H=gSsDyU#8wMQ zAu4GZ9#>pM(T)d>%~NE7=*x2P-ix`q_* z@Jji!1>xfV!5cvTb=d2BU`Ny4+2c6jnIxX_3X}X(Yk*9hQ7Qu(pAfwdb*O7 zR@*0p@rhbcn^rXS>{0|DB8XQ$TOqbH^$t#a>C+F!Gj+EV?-Y%pdbPo?RNcLlEBr>m zZw*`*c(eGQQ@`a+0XOoMykBv7d39p%l(du#bC0(kJ+`R4dSa_?hOsJGJIFWB*WX;5 z4;BGBub1ls7gxxAXT<|ALZw!l+{L>mh;xPKUW`oVpWm# zwa?W%2CjPh@4fo%tB|^_dy^zabllQ=;N}V~-_EZKyft&`ciUx|=KL}Ny9Qxw-h5V+ zIX3<-5NPfD`Hn9~-0))R@*=DE=R0=x9=NXplL(?`M?szjP2ICU?D4wv=f2jze|Bl- z+&L@7b{BVrX4xoi{(`zlA;Q~Fw>;#QY2$Im53Dx|F@s_U^Io2ALmnLZkc^WnT$IC9 z!$*u9*~3qx*7pkw>gn(8YUm#x+)Jl*j~WmW(!0BlM|9)^p@9Lu-7>GWAN-1%Hh%Yt zOYZHP&Z?hcy9=9D^WU#~;)mHM3;hEz`L#9eyd)QY$ICQz>N^Ji5Sg}q!yRBCB2cqE z;Ocw95xXaB?|${!kchyb?YgV0LLzp*+y3-Zn%xN%ahlTU8m~mSWto~ohN{L@n*w{t zHJVLb%ksZ&D=S=MD=VD0l@;#gDC;ZUR@OgxTUqZG-R$|Z(&E?5ZsfP*tLu*(KH{B| z@|eNTFEvG09C)i(Hl>Y=f1UBsy9_z|zdAmF*^-XyKd!&QZ>w*PImp+Szf~OQ-{>+> zzu$uy&Id#%{jhgUX}Vn^f#RYzn=N90?|j>uf5i3cub$kux0<>W68@<8+nC0W2k_DHo>a!R zTUhnW`2yYT_Czm8X1uz*eD?%~;K!btW!}uRGim19V>cwH`UbCdSIBrqLZ=8RkiV*s zHS+7;qe)ws;!SfltgiV6rt3|&soxb29X~In-5iL}f7uy2b$PdxhxlFx;~H0rN=46E z>KUf`L)BuKJwxZ`meQ%cLQ3uUrhNBG=> zo4qu-2e)~ZkGMDz67WK+s{Lco$YyWcI~q%=?2kcDCAJtiaxt=1r}6UMjyd>;)HZtk4I67Yinx-^{5u zuYUP}?$7%x;)9vE>-AN=SMAy`oI4q9S~sY7%HJ)#Hsb2)X&$=U z*Khty8wmvrT03n0H`)hm-Vw2vwV{%iA9m(zZJ^CNVy;!v&`gaPE_;5Ort?ey9Fd!fnzP!6ms6z2TOJu- zYJ(7YuINBkHTU>=&du#xS9-Q)OXX8p7IaNgu>GAjPh{0 zUs6Wc_U9FGH(Te%sp4wZL$?!G1HDs8*X*TSaOSjQ8L>%&kt9R8CMlyeX+zQm)wOBL z3dK>VOcX83s%lbCl_^H0cWHJiKwMwu3E^3smd-Okc|FV=dgM~j=h z$_{<<$yvDgkF8XcLcw+=HX=~5DKI)gZ4YR%)alw~>PgxveJID&Gb+ULfk=KK;8AZE zEhI&Qf10VR@4PUb&HuKkjBj$U9^Y@($pK%vogKVs^|U^^cFp^_*f?sUb?t}1WOwL6 zvI7u1Ue~_qV1eVwYlfUMJ*Ybj^}Sz48%>ayYX;wQt^%~*ie@!eZVFs>*&n+>xyo~W zy-Ts#TYq)UG_`gA2g=I^%vHan*JPSpgSXs##Jf(zYe)adn@G-tMZNS68tv zZo7K;4i91OLh*$1EtdiEf4Y^gO$}G>cq!UlgXz;~pN@P4|7>kvXgCcV8GVtKi|Ox0?%3RMzhfJ@IMq zqPA6SZ2Y$6oX)kPRxlh62;m#1Dg5Q~jmfOM$Dl3Ci;FIuIrGE!H$VI2%=PbYezfGv z`9h*4rt0I+L<=^d!SD}K(BBwE)Wn3U^vXdK6B5&7LI)+jc{)1gbO_v-BM7-fosLd) z;i3{hj#h9{F^Ll^UAT|sZ+gq|_hbB((=Q}(9m*{6nLaWrJu5$Jf0oIdX?`%kSE}bSfSTfZ?Csr{jGRT;vs^k}{T4{$BEsJ%vB`9qo1I%!B`h#7lFxm4+I9_LT$} z6(5!GMxT#Llt#rq&R-HOs(dp{Jyd?N;d1@(;s@AA(JD?qyv(2fNPCePhL^hVAH{1E zunz)CLJfWj^GDTxPm+h#Put=y77x>Cr{YbLKr+ zIP3Ak*@e?`=jARde4(%+cVpqMoWnV1a<1ekb9ZMolzGzFO46ni`BVlm2&jt z4+g)g?(4gy^ee6q54aEb<}YUgN)1&?weEJ`*OVHP*8OOV8XJyQ)$%&my{rflQ>Y=9 z)9?Jax>4*N{(?5$PQJ9f&ew%krYN9e{fy&p{h(4L3z^B2(k2OM!XrYQkSRp|>}L|XEj=QUmB}x} zs-rgp)ELGQR`(B4MW)0 z$Ii08Q*P_b!C#@rpCrGqyIOSX-gtdvWMr72Hv}abMpjMSf9h1o(NI2-^`zDbdnWK) zsVOc#Vd+}&><8Cw9Ho3qc`!Em*idCm z#*mAg{3X7({AJ!x{z9^HeK+|l$qaKM>Elu7CrnHq9-k)t6->j&K=U3i{hc^IetgoX z_zB~a#*9Ktf*_=go|v96-u5@XUvfW#keZm5m@dRkOpA|4u4E|ClEHV7GBq(}q!6E+ zI7tx7pPA6O`30SN=oW77e)k&jp&qDMebAis_=5CVJBRbGb9famUz5z%ubWil|MG=| z?=C2?;U#{@9rmHWTyXlJL7@uHJ9KTr$8x#kXywg?MsGjkBr5N^rT<&>lP~+=Q9eh45H7+uf*jTw3GwMA* zmsqt@TOF#Nakz-r_Zd{C)E|wB(KicI~q{)~T9J6JvApF*X` z4dgMkmZ~tnhlH&|^0c^&aVG63qgd@-PB3CQ- z1_fh$!q)5?nLHdLIadKs2s|0`eIrMwr4QG~a{ETYH3)t($)gw0q8|H;iw@54{FJcy z{`;9PCdY%x3-}9aFbz+}Uyuj+ljA`X@zUSD-ZH*Vg;;Z|*3YEYxNDeq3gc?Ksb_?U zVoZv9X|hT^+WSwMDt?S+%U-RFuVT^;pk=3LttQ1&eXzb_2HE@~=Uk5yp<)>9wOUOR*^+ zo(0q!6h?ONaWQl+?SZOZ?G3e_819Ldh~Bd8mmZlgVZz0)FE7||B~3B>8;s@5dF3ak zw#_@#SXNxnn;#3k+nM(LV{0t0hg;&A_|$7tm0{r8`N6NAQb={hGldwg3K6lb-DP+$ zC+0atmU>kzWVv$PLp#gMy_bmIisN6zGh=b=ROK-aSz9(CYf5dHJC1j`tV3R}mMb;T zAr{vzT+!`tjbeu8BV@xKCE?Y+zKc*<>dR=}g=_U~J*R{&XnJ+1o+qw<7bou6CKWy0F zYmLT+r#Ioy`{=8^Pi($Wqdnrg*7WD<;!PLU?YjB#!tSPd^UkeKdPM1Qbo0uKUPoR% z37wn|@HabU#13Wl^NpL|8L0kI{Qw{R+G_?XY+i+4F4Qlo9Z3898TxW)j*lO#IVen5 zzqwndQ%gO4@*(sz^X=TM@hesDx=s01%PGWIWet{~avlm#<@PrSv6W+$e$Dgh|J=BB zxWQ<{JhX;ck1i9vZ(8rRkFJPpS`m4y7t8bwxhwK}H8|oFMRylaap=t4anz+;)4) z-R~x_T;gAA@LgMMknyJt{;T7$$K3T(uT9^`mR?d0R-L)J!9OqS?y9||GflyUIawy% z!aF{Ypo-u6`xDn=uiVle@lMOshMqb;p$D2=)HbG@sk{H3bp^Y6L*E0%!w|FoAb%JC zTV`msc9CMC2)>CUp(ob0uZ9vC+Xy$AH&*)e+_K8G7q;#{awO;CM;C4=eESSaoOm>6 zPSv`tE+vbem&c{$$Zp!!rgHd1rvDuXjdsl1hMq_0=S z`G;XYg@LlZcUw`nk~Ei|%O*g;zH}PLVlwN7+ln^)gjdIKv-P7-i6<*oJ-a`}waLe& zWU2Vh)-NPOmuer$(B;eM53zk{_}*2rbb0#^dYDS68+yJe?T$Sb4fkQpDtl8Mv6itN z)#CDMv3JYt`KvY_?M7<^Y#DCMy?E@VpJeIM;kR4Fz}%%Hit~*<5K9IQsV>JUc`(@l zz~Ch{)E_%KDb#7BV6%3ari9LI?ZV#4NJ16>4m+EgEAOuOX5NKeqbI!^VKI)x8fJJ;zp0J(R3G<7GYNl}IO&YD+l+DO5mC}{6*>iAsnVpAYO>-$uH_HlHZsAh} zvkGyJRW>6}D4kzgmN%PCgt9q2k&;L!qT#~qyn;E5ZI@9T*+x)B&_UOJic@PJi~nkC zXh43dAz{HCoq&dF{xdjtgH>opIW#? z>^;#m+dBJ*2h9jqw8it z9Cuov4Xtupudgc>jc9}g$E~pATrkF&^T)Y;OUBu-3>X>}wXtO88#YQ+>LI!Qi)?QA z^EP+zt2TGkKAW5Qp3R;9k%<$m)^^pAJ-LGl_ZhB=;}0jR8~)+G*Nsy=)mF1BX`vvUmB-z*5w&Eq5m~b0 zokc57Zd_5YafRo`6}w(uG5+NhS6-Su>-GNA=N_qk_6@1GDk&o;Kb0{U)(g;-9Lw+v zQzZ||RF-s-_+0K3G!!bPFE97phnmm2?d7?-ZeWNp>s+6@QvK5oV->P)knG7$`K?zq z!}JS4v2;P|4|J~>3cSQYX) z+6Tj)`?nCyXjPWnQ@ZgxWz_Nhe;g_O;Ma*l0QnLiCWTS zj?d*7|Lw6wlPY{iV`X`6p|$X8mH5)^z#hY0t|s-{(LbdmrPv&JYi!1qrlfvgUiTR1 z)I&x3Gpih$CecD;$}rPP@#)*~ckg}}fYZvWI0BVvPMdn4F4p*&R^iF}E+ei69@*Pd zre`T0{ynYx8m*($m}k$4Qy1K8gH%*eK3=sjGFjqG$2icvQqpnNWGFePX=|<+7WS-9 zpO!?Zi^7c9h6A+m`W4T<&ATx^!~m7A7`bp#d7t?9iD3GR2hkZ;!ReJFz8tS^P<%JN zKwtusI8T3;UScjNot9T3n6nE@U?UO9;%DT+f@pr>oDw0&oINX#5&P*9WCkd&K3}rQ z>(d`@R@V;HeSd1{h%voZjjRZ^-f4vLXbKcc2A564tlyrTE}2nCY=>+s_I`L`*-x+W zh5IX13cX+eXNwkMgh4{AFjyEOJSZ6S27@8W5N(Jt3@XCuwL_3_iIj!;7P3 z-lwh14bn+cNdU`U3v(^qV+!V)XXWSG`Jln)f~l8Zac%2WTAmA(Gz>08c-!P$`1IpkOEspG zjjxZ#Ls}V9D>o#mxYP?tnNam*`yN|QmQ^d|D>k0^d?*%w*M|$O!_hw1vD2G|lWMHt z&Q)!6{@l8^dF#$bzt5~Y)Yeor8r#aRH~l3^!JroGkz=UbVjCdASedol(}&U+dcU8hrO#W4|ue?6>y)y7)uC z{nnme7jJ5HfwtVo`sCMrwx8bm^l^@3T=Na3cWdlZz*Ke^N(Y(Q43MDp3|Ar47N(NC zQGQtIl}vA59hNbw4-t}slpyB|xrKS9OftpG2hq?XG%X(#gvDlToRFHAlb1g?FLx+N z;ZGlImnEBFn^q>I9thf*SXyi#?yCnP5FZ9oZE4 zDKK|;AwP{PdOiM`$?S}>dcmIM8*7#?`07h#^~t3Rbkg}P=Qz4OdBEfB(l0*{cO6(h z_4x9Q70VZVIzqPlS?d+`I`Q>nVR~Y?F=eA}(zR&DE-hj^gnzkB$iy#-VB zS2eaXRg(YSO?i3yP(!So@o9TMjUJNDvxfK7VIJMGW-MSv*Lkn7@|!Hn;Q#IvG3Cbr z>S4hX_hfl5^9&V3T-^O`nS4hT0aCs{*DcGmXz9f9ilaR@m}+Lm!?^4_7aV(zGpYQ> znf&iWTnpQimB6+(s|TdqHMpo&)p3%+iDXR#>l59|WW#CB4>LaAx!_wFAnXjKcT$+j8~hC%kG#ayli*XurOLfqlc0Zx zOo|6@dCOllV)@979d#=#QyHb0c$6!V_QZ-cuO?sEc5}V0vg|n}8DajMb*gfm_;QLc zeT<^c)zP@P2NWe8t%gW*kzqKJXHwiFS=ny zZx)tJeqP)Zs7r%#dx|N*&$PZ;crqbOciX#nnV-&j{LtJVNvC|^j_!8%^q8xGr@>qU zn=3YXEjd{~flcSkOOQFoP_-!#)Tm6q*6;!hW;mZM+G?Dby9-$+H_e6ozm%7UnQ(fU zOGWAJu3$I+Xv7&2MAQ0mVTxbo;C;stx;d=((Z{{83-^e6QXUlT8M(Tq zHv3(7xTB$p^ErtV{*Wi6&RO;Xdy`3<14V5|$ zDp(dJ-511}^?HW_o*nhduI8Y9`PX1=9pAj-2g!lB6+Q67-zVy$?QbT3u}1Q;f+w$j zXUxAU*Pn{+s@&7Y9~PsV7x#I=40l6uic)d}oP=U$|7K{eIoH;Di)YTLatcg^|@lNoz4|2kq4e$6qfdeHX%^i-xLYCEfz_JiT zI+ik-j)FIhcbP?8|K*mS3`C@+FKtTPE@JZ^Yy5Ao`C`TI7hi)L_&#ag)QY_CGR$uo z%1QM}+nlxu4(T|H9(#5)2;qoK9H8^K?HZM>fAW`+xHKB8n_(cnc87BjZK7l%HF$$f zkrDxsv&@ zTjz~XQBjC@a{}HWyy{s7x5cJ4)E2 zs^E1G1gm4f#nRPSozw@mTu%)=AdZeni+KXiUZ3}Lb0v`UV09}ak^fh(C21`XdK5a!U@w5tjGHoxOfhL5k z!H-&c;CA9s%W}B#80Wd+EdiQvDu*Cm0SP}q;tLYC=K!f9`#UC<$5qgOfP}3m>|hG= z*0}EeSWYl+tg)PC`n+j9$6WiS>H@RzP4g8dJ;&0>OwGZsG5>*L*CaAKYhxA|IW?b^ zot=xX+q7}R>TGyAYWAyOF5F64yAI#90gg^xb5tq-PL*@l!9m{YwJ#^ZRA5$4?((ec zt++0C`G)0dHv&z@oa96pWqID}4I8N`?mE|LVUV;bCkG!H-?|Qa<}L#XZ|QP3Om$r! z$ojXeU^eg=P~^)w^hoyq2=0>Q-#z$R*YztfGNR0p;D0gs z&p_%*z)L1z3+uoASG74ww`Ge4z^OIma9jpJ1|A%&2wJ9*rq_NH2!IS1N^!Lu1TsJ_ zDut1Ba2N@Il&;8Fu9F4mvNkH@8&w-K6dTuTCuIqw8x?`e71@*EU`c?YDvx-;VhQ3s za6C#I5v%n2HQft&pkB zNYc(_3L>%;*~>Krvx0nLI1xnpvUr_zyFgFm-;HhLRZ9N;zLp2#s zHFE-~YCXt+1;AxE?i;MjT?%I)cyI=e$`qTksLBaqf_2Nm0uId6>mud4 z$ar03pe|B_2YP5GeS`EhA8yp-Fh1;-B!k=6`N) z|4-8bfXCxeX7S%e1ztW9CjGyU-~Ug!FgJgRzZ(W5BMtyMkI$pTLs@(lw1IydopOK< zI2?{Eh{KV<9}b}VGk9KnI-q%Cbkq;dZWs*Io9zRr*p!2zC`!iw{KMdP0626Bonk?U zbR-I3GN}hZLdADECKJFjY;+WXS{M3xdkT4g&ZGq3LBGHaMI;pE31B$p#$ih^C_lm% zP=5H3FN9P=rHAue9`sOt_~9?WAYaIvVn0IZD3uE(AC)~N0Og@FhWs(AygZ@z7zW}` zrI!eWLI9alztE2$2;|FR!%#L0=8y0ZDAx$3(j$nU&>z63u5>&~d?>#FI!YcPn?Yl+ zg#dDaP6C9Zy}c>^LZPR(AEYop=y4nlCwRDa`%ccq}fO>}2gJDq59HFZUMm{941AbXafG6;W<$=Y7 zS@7Xwe<+qeERR3*`$IoZC_$+7D2viN<%b&Qjl>s1O;QyI>kGKSeAr9`aVfwRN`(W! z^@bXNl;TfON&{3lRbr?B0Q2z|KuO2YD1A`*^8|b-AIy$J$w(!mahx>+&In>Og3d3FZoC){Q@9{i5RdQ zV_wu36i7Uv-FQggnJB)5&!RyNuyw%p0ksPShxP8tRpL^&%hE6jT{63#vAKJ$<1bm>7@Eq|C>Q!{ET39q9O!R1~E? zU_9T^Fy23%0gpqK5jt0Y0qqv!QC3S)XsuNLLOpajSWaKW-`Cg2%M0q$)xt*}K;6PF z#${wwIY*eo+&K^}p&6pyVgW@*2{93%d2pG&&<{(3Qtcb6n`*!?pAkyuj8G2aC50TR z=TJ@;9mQZs7>qG6l4<%c!mqD+p5 zuLp+-)#d6KT=GywpyZ(_B@aa@d0dn#A@u)at^ywHKY0jD2ZLSdMkwrqU49oC38y*; zz(RS@Zdj1ZNV|jbx!OI<&qZN=E(-G-p)dOdSbmoufYDwO2332ofAFWu5A_1=)TKXH z|1jdGERG6?w(hDLSdT6W<#JJIHzVOWa^U4c^raa$fpjJeR>@96l93!Vi|hWza54b-xf`DSpuJ;^(4}AN8E# z2dRsni@M^E$OnP=rP@aLL2bAi2?6?SNQk;3IF|F_|N|r{zH_95bFG@9)BY$xA-4owM05 z`9Tzdd|miY@kbD7H87rQ9Du<15dL8}B_I47(I1p&1pldUHkI^W`0ww6f7p+@;9p4P z2i=I=6y8yOZ?-Q*`BXZ{Um}3d{}caR`B6g)Dqq;oQ~v+Ne}5sY5tt6*A9Tm5hoH$-nTQ@{fZ2xg+6J0*Hrn4_Emi z{=RU{68$|IhKCswsFk4a!4NN*;<*^0??f?dIih^*`~SN(ZC4 z(oqcsrhD0LVEBLFKde3Ym@+1wtKGx=TomT#qAP2B{II|IAKe2O6E>qO%H~w-!u+aNd$lsck-k~9y72cswweTZI(O?X0 ztroD-|AM4cglsR!LgJ$r? zn(%nk+qqgTI;k;P=%21ipn00E?#48h>r&M7RE9~#5sIYfBDIy{Uuos??hC8kXfrQ& z>>Wk_wrTFkJFUXa{wCo}y0JuS@R=$T%%ndu;Wc-q#s;^v5aT3_iM*CVmtEf4u|z7bIGWVFkegni*m-o#b%wfJFvrcuyQ8J+yaQ-T8Y-JKn{xacGdu z$W4pdQG+GO;$;|<9n?`MpLkwX$d*~uo>2(i_+G1UUB$#Y99^7LY4I+VqMVcK+rFLW z>A4~1h~{{4rD!I%h;yEKUVD7X7Ad>vCsnymH{to$Tn{7%Iia=FFgwnlM@?{`w|*P+_8 zf4_nMpsTTk7NEGM2ya?p-+x4IA|y3$y*i(BAK^M1R14>U@>{v90VYMS`mRGPjXm2$ zCj*M^?yS}<4RM#*vW_1Wg^nu1Kq0l{rb`kfwG zBUzxtZw`{8OuPIy`9uP~>6`@$n+nTMz5TbICU@Ij)=;E;prqmaSi5+U zHSX~!FvW_j5-hS9^kDw5yFqLL`L;zwfgTKyMJlEayrEbG29=F6R^6h*sleBVIog8Q z5`TkF4)QI?odkqv>7rW`cH3u7wG=<`_yZ?iArw9RF^7FX|2-~PRfMGvWyNV(D(By9 z@OBZV8>au&#j@1>iGb(=pxBDZ3xT!i@po>D2rM9#1wyXu#RSq95-(uwm4MlHPmmsG zZ|~)U&7RmBade`WPYlvT{;vW{w?w7an=AtLc7G@GV>=65l-MJ=FHsDCEnbx9?6&dC zpY39~t=)Pr?k|2V9F@7n4ms$7@L(gq;~AT0()%Z&n-PJ1@EsM1HZ9?)SZ^ab2Ms6d z&&@z|x|Q8%v_n4#*HQFtV3jz$mLz*+G*$Ns03JR=MI^L0Qn^_)-f~N?N1}lUZaS}Z z@@JRbLVF*Q1|H!{@CD%g+s1)&5&@W&Q(dz8Z=T6Xc5Skd+*Ne?Po&au_(zuYu*yL; zNqK~&hflJH$z+nYO)F6O7nhM)0tAH8&D|UnGqQm9WrQ(55~LOj3r~mna`NbJ0#>>VX%FY7XW^lhpj<)CO!(6KL?*`XI6m_Ax64O^L2 z9q{b^FH0V*fLG;?6~wD|3OByEdw0$w=}I{N^TE#UT^aPiy>OX9)419va^tf1OEiyX zRE8vldH6($OAdDEddrE-g>Q;=t>~Q1zD6Sh@ zs!PwBYX{FxSX$fAhN5RI9*djCn4WOr(^Z7lz+52nQ5|{uXeE*tDbGTp@@E~eX1=j% z8KSlX@BEBLKfsw-$nYtw;aS3_5aZb@r&6W7pDl zADotsU)WX5;QcW3_bmcMmT5iCmg>yapUXh2i6}}K?UPsfZj4V|>sk!dWLoVzO9p-Z zs>`&-)whiH@DItvUv8vtSEn^)4@>GUoW<$rG7gv%kDvz?gqOX>G1_r6Ksx*-!f)zk{sJnr{})+RUr5 zk$sy+{pI~$_mTR#*7;Fyuj6r9O^42Fr?55Ul_wuN;jJ`qJTiXj8&eyHl0wZ5#&61f zd^B{QP~SYXke-Pn(r=qr<-MIVczwbgAG|>$@u_=dn=D_tVvcCc{P_eul8uI0m~Vd> zrgHbGz3oQhhBTpy&%yXiGn#2SD`s$EyPA0~>8v>C`7w_$!K9)z=}{(EK;s8x83LZj z+^%7XWSg#SFC%FZTQ;+lGb~6CeeCsWu4mh2qBvl9O(=dvH%RqfwguA@qs- zndl<KVI5E##tCAz;qL32_#XXWu$1AA$xDHCffXN06q z+>LP+2_C{Gym6Gg8TbW7yt`ZBfiqLZ3(EVt_A-`=)D3Z86XHjUPZi?+%TiX0CruMh z@faw+c4=~$3gcGR1{qJyG`z)?cN)+~wFDk!iH|vBL9gE|FCVkC=Y|FKIcq_J7~GU5RO7a}VcZwBU{n~+ zxHCvW`vl$Itw0Q1!@wJwU?5Mm7;o9_CFf+3p$`qM|PB1l!Qls2u`%lxQ zRy;4|wv>~pvlz$F15LUT)l#-Jv)VT`1`~!6@xyzq3*W8 zEsr>0ye;&bD0k}}S8;Qx_#;1-T%F8g#J6T1)Oe^{hiVTMe^FCgo^pIe!LO!Tg1wY5 zGX3J>Llh|uA7s|50@_|3_X!xYicmFv@=e$8=GDAs>vMm;D#9Bwj;XiqXC#J;o^YD6 zfgjP7%c!hkv0r@kl%s`~YW>%bMtAv}E;s68X91JWJzj87l>Ooip}4q^PAH^;GeA1` z{gCDjU6X6~gj90Vqz5eSpG4LO!TZXO!7LFM1CWXK;s%~nr&BQd> zeTUHgPLkAfj4{9w6KoSRaWcVBhLlYLRx;?i5A#V$2S15NIv*^iEIp6IOa!gHNEc zO4K5QLi3HQ2ou&sD))Yvb}Av-e5799)W=iRs;DSARI^^sic*4>A!{(3(^f( zKP0oq2fq_tK>E@K&yg`bP0r#m;Q+8mfGhj#G-9%a)wb3yA^5<-xJR=ScYX#UlKY7C zB}p-e1w%~*dK=kWH{EiHtOw2nQXi{|A%3FmA=lBYv{Kd(i8v(wtV;c8D;X~7*1l<5 z#uMpV+(g^@l%TwfG#DCMdda+kxL!T5=~<+K)3H+Q}UQzP6%7U2%DG)u*25FH;oxUxbonAF#fZ)a{LrFPSkp)rm^B7x-V#KY3t^^Qb9rC zvE9;oCO2-Ts5e4Qj|84AjO>)?yLjl)J%zlB>d{MonU*3*VBhizE%j)2Keu$6cvik( z>B$zhN9xp&5CV4m6)!w%c>A0lh4eJR@f1P!r!-npIe|@yl8fYKl+DYKzd7Rvg3k6( zisk0}zAQHVHLq%jxipqFU=3!Q$!W0#Kcanz*_gSA}HCDFb2F39L16{UP zMfY%PP25A5=U|gO>MYe=$)O?NsJJwCxsFz6OAyXxOqqXFJ^LN^g8?X8zN&%A_Bx(z zyy7NTl+Vf4ve^RZbQV5-<|I{n z!{!xXuP>G>z`JR3+wu3CwrPA?X_-CQr4e}3!kSP{Eo*8Gk96R&xv{$7_3#>(-#Z}`mkDV@-~ zsd@Cx`2(HK#Rg6EqXYCOO+FQZeX6>u3`43T^Kj!Pp9J=8Uc8U|a6xB) z?P`g6P>a22NV?kytHjRc4oPVXD{T{lj(6L}hGQsaOFVoRNIW_@hhQHWM_YAV#SOVV zo+HOmHo)CLVIC@V1ROVJU|HtL<-kL(bBu*&NZgjssVfo4fhZn54vk(8;M6y^96*yJ zf@>R8Xizy3BDbPbD{L2Q$}QGh97ZYl%a~ja++yI{M?MVMxL#Vnpqv<$qAF;>x^~9j zi@TMa`6!&Lr5SIvtSJX<<&l{o(;8xA_zv#PPvf8R;ky>LoY2LFfPw(I84B?BLpmFe zL&FGBfE+J8SRf1gNO&li{?V@WUnME3BDs66J1cCc%yf|V?sDTHxw*LIuQ77P(<#1i zt(PmG3-2D6TeJ6QVz`<(de~W;>aOClFyuI2J}&FMRPQf5`Tc^{Sq4@?+4%Z$^H0ylzv^xZj$?EySH4*GDhwdXrWm7~I9K&Kz7uZ+!pfXvME6j#pSt57zJ# zKVvqQ)!TM;ok2Utn3k|NtG7}W4h=~{>3wdD*f$QxjBAY9{OKlr~ zDRu&C>e~Rog|X=wZTqcH5R)+k#R5-+roXy>zZD2{;t43$xD|ktk(u*vXTZZXMS2K@ zBsr1#KL!9eU+HcbDieVz1#L~__JXppkNfwu>JO9Mx|J~iJk_6;0E<($SkGu2Q)tp}CCM?l7#^G5y6(=k8lAN+(={5ySU1Sx`A_vLezILYs(TW@_eH%^U zZizmO0zHk7I`v~LBHNZ1WU*4@0jiKP)Tvx-5m^^H$pXD%6i^}tgxo%izi)eoB)jyu z7u~+@y9rf>dS|klW{~>vz_!T64yS>Q`@bj&Nu(W6*h+ZcE5}lTimKMP`A+Tz# zPe6$EiBf49P~ww;e&E(VPf$9b4DkTu0Af|8PV@v)(g1{j*{0Zxq{xT62=@dQaN3Z~ zfNxhUB0*9C8~kYtAp7CoU6c(pKY2em%33^7G8>@VaiHke0fL^Satw4#1UI8WNAU;6 zeAE`hf+O4jTJ7IkfK?1MQlvIHK6XK}_NY=TCcuIxZ4xJqZka^<)}qvc6fU83k7kX!Nu|#hQ4)1X2{}6-%kxNg|^J&?Z{AXrIkPo3taS87W+PN_@OL z?w1Z(v=Li-VOat8UTR9^OxnbaR!+e*W8IM=zt>bz@~<&r2Z8Y(n~iSgO;#;4vvQis zjHAW?)L&sUsc_S(>Q^EPEhTH|NX23qFlZA4PzClYCPTGip|9C0;&QmL=fjCgQ#Gsoz40Z zxV;rnic}y$iH8ai0u2poNG}0X=g=4@&2jX#@c&4R^(X^u zYx=51odkAPU=Y0`O=y#=%}k-@2*;vo)2f@c$~*~y3GU6X_ekl&j@kn$F$)ZstT`!x zE=#cxSf#E7_booqAw#oIl_bd&UOkqbl_piLEbozZDU&u)n?R2jBkVumArQAFX3WmA?%y zcmFU@CM&J$G>$fFeJ5qEQP9-6JvL$7WRD`b(2#n&cD7gQ-5oE|kjG3JVYsI47(esI zRwBno4ZM)8S`CAso4^}Zt!xp-jAdq;ax8SAz_1&5grPA~=|=0ua(aHq-rcMnkqtX{ z@*9xSJZo6+sbU5h;#IXHSFG795QYRHoaw>FfOsA)VpMo_#mA{upqR0Jeu#%8)3767RsCB| zB__--pv%CbJA%6rZOSR>7^dgDy=`1! z$fD-JIq!(ZO}W~=nJ+Al)3>dA0N zFeA29JPCf*RvTo;ZxOdohLKch*y}3^!s}&E9g8szJE}%M3u{O_uwrrf97CyThUq4l`K&uKNm0JbqH+ z8`}CXH(7CqkZD&m&E-udu~FhLj;S+VLj=E|7u>F%#4N{pm&Sa__1mFtQD&ZQrA6Vo z!-v^lM2R=ZP@`L?C6&#@)NeE$YtU>m5>@Qc03Ux` z5J2y6z=`y)sc^F-Y-((5EFkzcel%RuNKKMOdTP7c0Vt%?BMC_ioWZXLmX=_-Jklz0 zT1b8oqDpUTe%L$EJCG%DDo|X}PxcNhlQ{AL(SqU8(b0C2tgjDFj|DbbbR?<2Nk|U6 zH5V5b_YVz{N??Y2iZ(6U*52DaAjAn;F}t+5xTU43ySsn{uQ2<2Te_FQ`7ph?rMzhW$@NA&&57Kc&0>*%M@<~$3105Uk^7CSpdWMvdSen|vKHM7jz1zK4 zrHo~O?!8EO^%vlNdxqhTcl!4_#(Gj}qpg&*tQR|#`FG`AWbaQaSA8gV24C5FV6`!5 zhVzx^3kRkfwS5vx{uVmo0SK!^Cok5ewhs2{<;7*w+*n53{v7VZTJ(#5l%~|TliNCj zF=L1~skibkFFCNG3{(~exUj0|UxaH6v7fF`=mh+GIXr#CpIQ33aSO44T zKZf)qA|NmIe{->_@7(htK4_PagJQ|gWD8tk*fMlw`flP!{m|(@&MKYfhPovAZ9J@$ z72_Zg|4REVFm0-6m2-@(CETvh&mTiN;HKx#hx#34p8e;cfxjJyeR_V(WxnodS$kRU z$AdrGs(8ILVs^`smhKmw^{IOB>A`yPoAiB4conH-K>3q%?<;?58 z)c;lQuETomXG&4ns#VsNy&pe!^eeabi}F{k>KhmwApdeY^73=?N$2oY#}vyI(y`T^ zle0Zvd8N69>>G}GD?c{Izh$`n5du2NL2~OLInBCfkUZC4k35Uc)8;Sg_3U*PeAqBB zFim3Dw;+#heGS^)Te!9JTuVzp(}tVdN%GPCUI+OwYq7Z+AS{F4`LHEF%**n*4mYEjbKV4QVfU?d`GshiLYya#AncWFt-os*R?DmyFTkDNT-CnO6vb;>L=@m$>&=# zo&A$hi+*5u`SUA(SoBNC!EMKKl&TGVofdNJ!rr&~w@m=)R=#8S%h^}DhyF&?JDl%* zO?D0*1qzWw#qQJpVX5yY2iphg`5+DU5v@lMb2q#_VXZHAco^ElP0f zNy|NQ9@+b6*)k>Q`Hj3qB188E$Ep$#>5Gs2n6E+{-_%bH-YmF6EPt`+p$oFV#=j zGCVkexH(imr0*Cae`C?kybT6fWZ4Vk6iL3NSN%awho>$Yo(%Y+HtymmR%hN6=WenS zC9=TVz>BXEB4+sBiP1o96 zigL`VY9o%Az+M@evJ=ClGJ;k@6kRDlw-p6~3XvLDPrP-fTe>TbZcfpR z*@?${GVMvHn1J>;I zg%}WuX1fVN9FF=;g)fl9@`T7F6A&cPi3Bx>Hei+jlNJM-ozGBqa#P?@i^;$)6&hbdx|XYHTMv6%6WJ)Jw*WjeZ_MG_yV1Z{(V-(1R#Ltgan8Ro)ZGS zop7xjo+NbwphpM^*iN9}@OR)Y*G{Yb;1`m-q%ZG3yy)1k68k60TK}`pzp8(+6(S(S z!|mkT_2h=1JBKdS|9wRA<8bGap-WYNzhfP)>U?pj{#ifC>LmRJzw0FDLFgc#A6E`- zP!7FQKQz=&c2+(AMEUHyD$=(~|NN8s!9!Jpqm}yY=j&fAR6gITeDZ8x`-_TEY0vg8 zxwzAN+?mum?~**_^C{lK-5tjXAZaBjV4{)CS{?`Zk=W**Y3K1NTjhxe8lS8wr7WOa6X#IY;eaYq5xnyi& zv_kXoI`rNR=VxU4j6#H*@FLXmYO~&1oFGYju#k?zzVKC*`_p0Pjs`CJbXPHwv8gl7 z{JP~2$7@}mNL29J)X9^lN2Qy8|9-)fcN42?7tr5Wep1`C`qZ2^|5(PDe|*8`UA+k+ z-Iq_UdYL$0ys4Wdv#{gJf!j#B5PW;>p@x=DPP`lPVx}s?=F=W=a!c+5l%A*p!x`ox zuxi=qr&S?>$)AiJeY+*XA$e!RCmjp6ybe#oKa>2P%qEtTH`kaihSmT6y|T{s(T_hK zVSFyRpZxuAzUSs=RDNT8m#)Y{Zf~`UQd2klXmI(G@jVSn{m%;rsZE`Q5ZKxTwmg#M@ z-zNYtc7+DO+r|tt_JZ*_r!Z(gkb5;9kCO^^h6%Sbj)s}ph!#}f#Qi`ENCb^HCItu= zr@t9@FSvJs8=}4+U%PAU-npAc`KHO6bA;VBZwD{9)q3^(EMLoajo&k-T&TPq|7H4p z6ZW=Qc>N2LXt{W+S$aKb@!7;L)4xdRLer#vNevNeiwlVhrt(5TiYcO`GTiMWxm+9_ z)hpju+jYh-92=P7S*q9|iiqF%TDLLSE2vb3cgShNvE!1xm@Cx1itB!Tb>{1;%CiOB z0@;D7ArFHp7U}X6-1Xz13XUM?a@Fqejp2e`@hzWGzFs?3Nu%~%FZ8-$D7?;KzfNbz zZQK(g+{IO2Xr>)}7%U9m!xTIzZbBQ!#(OPt^PaKD_NT_JT`m>;z%bTX1r0>WxZO=# zuSO>Kp@F*G+sEHedVtElU0HMVod{RyTKiSj(#R+v7lji$W1H(NZLy2;US}{O!*$oY9-_087pp~M>bD8@G+5#}?7UFu^K{i5zOCQn=ImDND2sk7<~;b}AS z_FZG}rjUzNyKBb0n=0^CbSb_N@Rl5+H%Bi#-CBlv6`ISxesJ<;rC|EP!jocuUp)2C zPs)Qo_T72Hd868L_C)u|)1RakidXJDy7g`?r~7vFpMsFvTZ3{ts((9jMB02o7IFXW zSN9};Qh1$M|M}TZZst^98hQ{BIqm~&kz1MXiu#LRe~`N5-POAnYZbJ}v-W+a-yUDp z{*q=s{aZVI!dE*QfzdMFEjhqqVQ{jeTF=ZX38`$5``YEQ3w|4Kyt&bkC1civgw<_9 zJbqux+@DZY+H=w~t#Gv=;k9ppfbrhf%C5&Zv-WD>oXVz)U}mDjX+_Tw?+_JS13!5`gY&l1p|?FO4inFY$7p7>Y`>H_axCjRyl4>T6lTk+(XO4;Vr~P% zTV;Lw3#?@0PeQAdcsEDtdX0+utM@y!io3l*}gn{`A;FOCL@x>5PP z_%pie6~}SK)vwNI$H?%j4UEu@b%K+PbVIbkr=vBw3#Ii|=JM9mZSj1!F3c!+JEC$2 z9yCYZ$Ues~Q-y#;m@N9&fdpN5`Z$>v##P z#cmZQ55LvAJQXdfm@6JwMNcg6L$#t{UB(yeV6)l}9toQN4gXPDQuA>g!tjl0FQfIF zt!ToLm=#GzZn@4YEd7BM-L*PgjW;IN)!w58%Wp6brtyrWzR}H1;?LEESXakZTCoZE z7PyC%t|=ZH{DZvtFt(nzsI-`UZN284==HsI1pDbpR4T4Y#KzsarOJ((Y2+r@%-yK2 z8uOpGuHY+^(Dz^^%?nlxmp5=Uaf5hA4a!>}O{l)@rN|vvC zv(1VIh0JYCD`_W|hlG3hbd_-Hy3nid0+|l++_$9;h|otR71^eICT<*@zT`qwu~%e@ zk?R&amzb5S3oG}Io$?y=9uC;aHFeDFSye9xS7g@+>@~2<>4q=t;PM&^jog?A1h(m{ zb+oQl#4hY@{@qN3(h{SFcN$Oa)r#bG1a@piIoH$>52l=$VB&gNumWzS_MKvGIpHke znl##rwN5K)tW!m%&a6|Na&w&)D91p_K_ujGSm6 zcGm0B?O@(+u1Xp%I}CfhHPP>iGE9Ya<+sk4Z;U(R8}eveK%Ex75g2Y&d!5jH#&C?1 z`pWx!q~V%XzjUX}NQ{pVCTX4BXvwcBNTB>48X-z7ydjnZ8gtF-pU+M!sW{!z>{BtT z(Oy#Ud%S&iHA8JK@hHD%aS*M^zL;T?OtUXQ{7LJkl7=_<=6%A^K~Ed14>$Rkm;PN? zSSswFFHY!cHg3FMYnm}tP+hW%wzmSidMbEteqHNcZ~2|vrP-Oc8;#zpEY~LX|CRG@ zO(|PsDLUgjdP5xP!N;~51S@a7TfjZB ztxn~6t>Wq2v)IF5jG}sT(b|2AIf1^aZd5W`zH({&6YrJZf|Uug~*+XuG6}qxFXF-=JZt zS{Wze=p49d9&SB@R)twuppIxrpaZ;Lts-MI^!zS)1uLZo*#qF5Kws1{+)s)JM1XAX zf9xPSO(e~>i&Q=)m2kM{W$%3O;@m`Oq}IPZKO)AY-_z9ePE2eJ&3b7|{L=VBuM)L8$RU#ax~VCK?0;~M{3d~H86cgPGg zB~Cuqjdw?H8SbpoM;lK&J6p(sF=S_%b7+1qIqcv&EOZsw?(F=Uq}}`Zxzet8(#ZNh z$u@G>59-3%AEB_4uMBOC-Co)v(O>DVV%;RC9CnbGnn?YqJgeU3R26g41fR5X(iAS%^h zsl}}Zv`YP2ja!Y1WD)`dL=1=)EtP;vk@nl7wJo-O>#(TUT1D%(rLENfwxG2dmuk?M zxu^I4|Kxu9dwAdQAg>`T$-HysTxZVpxjxsehr^Sip3pe?O0vVcAuI@71{2U&@1>Vb z&t_c)K5~|~$JeySb0ytP_-=jg0Ve+~BKEPR5{er%c_$=$NrJGt!Ql-eSs)v-9x=_Q=`68=sLaFzeVxe zukfj1U#vQ2c$nAlm}-ip&R8!{C6|HK;4)5tn0h1%L;;>>(kyz(ET{WPM(r>KO(N+M z;C=x5!`=M!X9&_+jl4$2%uJ^c_t{b}0)yvBu@8a3(?k@I@SC(?*bSwEi!r+!l5#=0$X>A8L!Kl~$wgK6_}Ye^8-j|+Xf`%FlUdpl z#u(3flcOYWg-qsrIBYACM!O-=t zpsPRXe^I50UbXk^hpGa1AKTsX<-L6$?jEe%h=%4Vev;hIZAu zJo-nDx44W1gJYn(MaE^oQC1>+tH2hZbrR0(UJW-GmiENy`pMF28>&k$WE-?_h2H7I zS}NIc#TN_KV$HJ$%3wKzQ@$-Av#}DDb!?JrQfj3uZSBxFQPj_7y%FUE{lt6ge;*uE zjsH5Yb7G;Oh;38JF=+{>Do7;0m6lc>z6L*^94*I~oCagy%9Y(3xa?I$27JD~Qwy^i zd2(a#l90t#lqHVO1-pdd#-3!k9Ak6RS|_zH(7<|HlABgopP4ej*1un{xV{$uA%QRA z)tTBm>sIkOyxH`x%46QE!w=V0G|T0tcFl?noD})|6uf7Xx$t^DCtm3!|K2*-Sjy#_ z$d>7iNWe$&yEi!DfUnI?B5q!b{&8BSru<@SK|$dNJc+Mi-imkFs-7z0?ExJ2bn#DuGG)v|FeDYW^=cm;E@ee+#;S8? zofyaC$m7!(q+5{5w`aS$)`=ri_ivcA4LrStm3wiNh24Cp?1&x-!f;FvEUU z-q*084}&(&28^CF>u_<#w49U|h_p&89$cF+((;fobK=+ZkzkJKh~ZQc zN2iJv`peTJ!kQ7TNbuH%-J_i1uikK2`c_IT5F}9_O}Bg+wOQ1H#~)yzs%UYUbaTkAzw62SBTKB zpnRt{AU6T3)tRH_@_ssED~MQBJ|B>Pr(bR z{YkT0T&g+Z^Ru1*((nHmgT%7U&NI!Mxf!qY6ZWS?67#mVgirSd9TD15og`mXv_2n^ zEjAjW@<$?qu+MGi4bP_WiW2OG9mNGn8hiaLy|F0XtjBpGLb|nl#{P^P1Ac#C_}_+* z=}w#>4%LYE;c)67OBf=j6-6rt3VwOjnJ}TlP|gA?F(_if#qt+q=Wjj?O86>(FA~5r zxFS&7@n)Z$zw!1CmdId7bBu_zV|T^v&2O34HbknPmJ7#C)Z^uI_cN-ONg@UIc8%;t z0S0A=IE;6!)mvJd+oYp`?GU}Hm>7lAvM+jbolO)>O8Rgvu$2Ss z5e!-sIrRPy<=f+*PpiLMX}MDg=%B!53Jk@W&(hMXXU`~zE}xt^5KKp0K1pr5zyiL+ zsEXvkJrs4}evn^1{7gl~4)`Ba1I5MxiuELx7^7>izZ#$!}8w)py^8Yw%?jAQ6Wt4trc_! z-sL5I&kv2>p#|$tsVlek(5kB^)H7c_1AG__h_AuYov7(w&(Eq$K*$#sGx&KY37FvC zZ#AI##n)e15+)Ln{<06wQm4;8i}TzHyID%VSJ)4ekq#f2=$RBWz*0YsecV69Dnl%W zL5fZYm)uZ#_`{as8$WsYqqiu}1HqN$zALI{v67p&qJZQy35KoE0gUSmKT` zc`WXosj((mhZAvA1Mhes^&uqEJJPB4BeaIg6V96Dy$~1Ud$!ySh|;DFK4?~YP>k;Z zp9Hbq@Ml+`o|KIj`2GXW_CUC9`tTLD=L03ZHWGRdj9x)ij{{-McVP4qZG^!iO#t_? z(?RQMfR+HZpXJ^AaNzsLw^)Gh=c@&hoA)ffQC5HiU_<5Ofcib^L>WZ>XK>Hx1C|m{ z$<*Pqkoz6lNvGI3WI34a?@wgDT;GIvclphP1;hNe&BQJ5m71LZcil?|H!c3%n__7N z-OD}qpHzP;^*w{;5!BR93R&v0EPX;n`uIvZ`RIp4F|*u~Sx>ywOv;~ef-3XBdiG;I zon?%4w*n)mz^9L97bFxM&=t&`TAPE*f<&A3>=OlT?MCCh-|@jtO#Dj4O{Y%Fh~IVT z_m8=&><6FFzKpf{-`IPr0yd?6$(DAC2*GTfcXD>r$L!a?1M`JH3f@y1PxN(es?vP! zSjp7YCfD!;ymwqePPja3i9@sN)hzKL&f)!7jd+n0yD`+DStBW&qp@;g58&krx!58| zncF!>Yf})C6XgN{I}4t^2eYB`r!ceS-AX8OaKuRTq=W>g(sJC9tD;v5^rofQ8W29y z_~E+mtoD98_nty_B7Jt0Nd8>tKv~EXkwYWZes!(Rt*?nN(o;y8zYbJo*kE%RcFwES z!|}!SSJ!*lGeV30iQBRedfj3}g>UZ-3N*_0q20xXum*Q(2PfFoMDR$xPmWLEL{ z51bOclAT?t82`%x`?BQL`y+cLa)qb|WmQF-(Af$v!24#?rz2N^+_Z^uD{aJCiZXuG z5r2A+!j<36feUqW7Ay(m@SYgEejNYvWRE5TKBlWz%KH@W3;)iO(%*LdqtEq#o4IpJ zW0LjG%p1bo3j9^!R{WCl^&@)$XO-c^t@<~Ua{C{xWpEru{=Si!Z67v{yh?9;Tss;) z&DrUm^a`gHUHaM%Zk%Q~QlNtuad?|km*TmruUeGdOyq}U3aKtjyte&P;Yl=eaYSy~ z5|P6dq^<92kA0mZsI`>}#UGq*0GxMbvui4AcLc^OJ7K;)ZBtR#e(?^|ZX!bNF)b2< zd8Y0P^xUhuFSmwR4Ga2eNjT*DWh?uYySrb7FPc||_f=lVYz;)0{uRm~B0ArQC|lgM zi?@}1qKGbd?-JhL$xrfYWgI~U{QIx$<|356Y6hUQbvt&QzbSjC7f$?cxp+e@4+$@L zV?$^AB93V7z1`^akn#mmD>t%z>2ED;S&n@CbeOxV*RlPRkG3x)(*!mXCO9LAzrjl{0`$are{?>h@nJTQnP2JI7dUsIOz*^Y z*x9cH#cH!(Y}mjl)e|eg%l7$N3=03bkb5U+HfEddHf=72#77yWY2kH?=6{pgRnOSM zUh#F>8C2S|Q*PyD8GHHiU30tUg{;9)`!DVdTCqd)b8|PM`|%aq4g$Y7Os=41>dujg z;qBw>FXsNxDu0p^9FOOP$A(JFGP8TPn;60M;{+!|L(xom^s>pEFOq%{{=2hNvQ~xX zZfP}r!b|?F_`WhzwlpvI$j9kjG=JV44Xo{J78Pp0J>K5JSFBy$mB1dz=nSK$h{E2# znDcXpMx}D~!uu!S;YcMN_}!(ZL%r4(_M?_whvLyA%OmO;0A2@0T`~Ho3c6g!`-mEj zjiMuOr)nLYh8p(W+VdF%h~Zl!k-pK4s95~j1#f3iNp-~q#~!YOvfQN8h*55entPuG zMp$sWI?Byg(JBVF4*}cFCn0DD415+A6ZEeIU>8N%Hq86uUUkLgZu5<-K3a}D!uP9z z(h&rdr6s++Q;AI!NGvgPa0C=je?gt4bym)~N?`PV{g~WCv6LmE-iOq*drPPR>I{3< zGI|%p(lAUR-yFQ+Q-M=2!ow(!HFn~xI4?E2BK^YmiGTX3J)=$3%LlQWcBem3kK96l zMS?}q@*gVvFUtT`3uu}6yhG!tiL3oD2Zm{&6jR0uqN`i6b0*)nSqT>`am*!S2XU_Wc3 z5OcBbL39W8L`{5p{=pN-e3QDrt=$x(<9YB4J3m!}D9_dr3c+8fOV8fgW${~Hjy`_b z^wMYXdmdTN(5YG5VQTq{m$Z=n*_HVu`;1@sVwD={{N_o;PnJV>nX0NjOXIF#i(1)7 z<(n(MzmWguyE%S;dgDGHx#i;xQO8-=_e6)co z9ab-88TU64Va5In>t6D`t|2PtCBHcQ4i(c5k$>+XkwrglBPZ>p?v%04Okx1vP|>66cOTQvUw(DT4&a{Q75UA8yb?pvrG)76Vn8Ag zAE%SX#eE1s@QuUZ?Z>eu;9*f$E?Ic*8mS!!UGa5!MJe*wQcjhc{nX=99}778Eq?Vc zeD^Trq^vC8m6y*_{Jw9Vo^2v2bv{yB@mPJ~k1M?2Mpk&1B}(oM4^S3!69VW$wTIL; z$`b9S6N4+v&-ji=|4U!^3-xV_zlY+}`SyUAQ(1-)|a?GJyP6-r<|$R)uo$= z0iwAn&LOQE`T*tb`$Zf|t5qbnIp3)0$oz-2JatN{U1`U*bqSG^cy5oI(|wg^@2d65 zD_N89X<5q7L33FWt}i+HE!|;RQg7^Lbcc$tWcBRd;S1Rxu+N#0QWw^?l(`;*VBvz4 z-c>)}c9y~1o?gf9Hdgi0S7H?6L{4VDIa{I-oUCSWvx?$o=fwwa@Y%JfU4hgZ^hK$7fvDhG6`NZvNjQFP zV*`WxT}KRy-3*K9g@{?U;GMka8;&OFX_^Qju=4g&+L+ID$)*L@ocR0^WM7Dsoz6RMhZg9zPZhe1?Tp@L*YU92l0pHL za+y{0hW^K6Hd|LUX05v;X;v4mQW!K-gA^`=yT8EPOxRV^ zSxNw2u@swcT@Zs-BW^R;$3q;<0g682@;=@77IsRGO~7?Ea|jTPY{ zQB2|@%7Ui3j1Q-8NL|QQ^fi;^p(cb9ne&?o^p)_w@Nk6@<>r*KKT-q z+DmA@w-d0)udm!TKBMEAf;-toa#aGD+fek; z(X_a?Vv~?SkF2n+k;mLCycFFnGojPoYf?b);y;qID9!R`kL8)zu-kq3IKd(Mp z^5z>+54XFFdMM6*gn*|qKeWPAn_aCH18Q1CHd(w&ke0UMtS$n!e)CE1yKydD@VDS% zevTR0!0tOD4~~1mIxM*~Me{+t-Qe9~gWsx}kpv!F{~V}ea`4Vu7oAne+yJ)3f28$w z;a%6yQBuW)_rI9!GB$t|7bq(fu-&Y^(t-2_()V_B`J<&1t~;D-^Q!DUCp*^#kLdd{ z99N2s)%H%+S2|SDJ|KxG(7QmTV>YH?H>hP9Yz06L++uKhT;nw^WB#viou;o1iz%r< zpvih?wpz6LF9$KiaRO$%-6~P!>v9DRDze!@+=iBVIGTvvQS>LxoI>iaVH~jdHV9X! z`ZQ^Dh1FLaqB$>rHe&s8)wcUQF0*wFOthq#8@@E(7jUa2>jwwC;B}=t^-MF$9Vsfu z>+kDn`P#jI%^K(%`qLBSZgRM7udl3}NCMvD$UJ|Cq6K zfXBGPXP@8&1}`*VIN-LLt@7VezdC+)g$YgyDnQFLS!)y?=0w{@(Ej(oe_heB@A)F& z9{2sz>uYMqB`E@Hp4a2ne|>W_K#{&LKL$w(xNx2`Y3*+G<(zeS(hW7_C>PWn?6$|vFoUC0GJj8Vw_Q zi3>DyEfI8xKH3^MZgt4bHSIT7)GZmbmSWc(tnl;9^1zABL?HjIA@{BbWtaUo>(q_! z_M>l1aAcxCM#og~-bsPQ^%va*8O--p@Ok#e0wjsOZM78qcAzQvd|JSNG9ZPqXuX!F zscu{G*1Dyxe;3}VCSb{+m3J}@;pR&fLiP$X5LMkodzAx26<^7F>^j1x2}P~80j9$l zqeLqu#wNi|A z5~EpH{))k3oeQ3n%&Wa6M7Z=^Cw1ZMNPHmC-v7LCZnc|}-~x4#Q7(cl5Fm?z$WA>wqog&w0Uqe_=E^P%fYB)U2MtvVFi6HHi$~_3m z5U!Je$2IC55eu}93aG5p$L|v`xlz*|+2q%q7AS6qI10TR(m^G>a8&nh zjluw~5jJUTRba%Wb2Vl-Pj#qlY9bxDvgixZDOTvG3-+}Z&<>9AF%~PF;R4KFMO%nc zI=jaT>*x$3bi||&DflLXvmbiZ6^bV-OmGNbLE+*i~<=;8x z&c&e)>HBt%OcaCUcRt#wT;xH`u9i}BO&^ZJhJMlmR7zc5u-pFNs2j5^9W}AK}OV>dKotUwf zd1*se_FL`I7{evj;1z;`?)6r|kHKt2jE)}GstX+r^B-WC{)l;Vb1 z+$u7dx*J=GMN-;{>WTulS0%6Nn#tP#I^#JcB7U{^(6R2eexAgb>%i$7@qjP`S@rW< z-AIo;Sp`80O^hIR!s&bXGr(Jo(am z7hdKRq@_&vJI04~ahQT*$mg$)VDET;b8HOJ6uKnPLesCz`Iz-ou!1NUUgnKad;vw3 zeO`WpC^(R5s2upaR(~|E&(uFVrQ|{ciW)%|z(T{M)XV z@poSrpi>`38sZyRDJ`1U>Ro0-yh73;DO+Of+@i@k*u&Tz{z(_-A{2V(G{iL$yCGFs zN2(Ym%b!hcp4FQ_eS$}~d#VQJE;TG#hg+FlDUc!PU(C6fN>p#QvJ(21GR@#U!e(#J z6UbaK3d6wsB64no3q*C!&s2f1;#I9jrC|Y|L;1%i=9bK66Nyl^p?`r?z>t5~%M1y3 z837}NFp}}9E`VkFx#htF^Q-j+|3=rG{S`)LAj=WLbGxI-EL?o#A-WC@24A}X*r$5`5OjjQAFxo&Ibw@ z4-OIxe^X@8PhRNOSIEH=WjTDW3Qi~>`D-)cVom~gX>?G?dGuFj!LD&&vr3fb!pq(i zK`U4aY<6NzYu`X;gwm$@l9h`MPSzR>wm`Ww&t(_?3WKN>bp^da!n9ou17{o(#W3V4 zrwjY6jO^cFu=j*w)%@}v0mSW<+~RYA^l4kezk+|^SA6K^T48N>=x zi}5&lmM_LrzBpew@|o@IH!gC(HoNb5^Snz094Sw`dVA#z%{y#}SLtAdT|vQ~|(blv^9rL7HkC$_ngy4J~=K0Y6;I<}7M+w;fWBU!Sx z7LUdIEU67o8kqyYnm<~+t3PR5Ll;uqYr}8PYips)A=LB!Sm#$?`qXc^yk^2+%bY>4 zHcRH!g5sRJ_x;oc6`*$<{-#Y?aJ~B_wW1UF_mssxw9+C1tD1!FQ-LHe$Wlt}Q2MFt z+11qO+RJ_xs2j3;HwloSZ>nG8D50QU2>AR~h-kXlO`Fxcj}RAP$z809SVB#_D7E<> z(;Ls;XULh@`5O*kR|UgOY} z-%EuKia_qEN%Rn#q!2cG2*bRwH7uW+$Fou!&ffJS<`^%Z&huA%N3jN@UqU7|tr%#s zM1a74$c^|A_buQnWqB<=0utPR<`dE?c%G!kNAH(BWU?K0E8hzn{;|uAQWg{B5CZt5 zshjT|zI1gOauyf~%O1{+*w4Ek1$&=K5cjZ`Q+y@mOsTr27R0bXQBVgld<97dA{FpN zl~U=&FK2?TN(fY_qs%pvJoLT|%U%Ka%R&2U+Mt01rrz-waLa+$)EG$2^ZS4|IMz*n zx-gFqm?Vp0rWtp5EhM~iWIlZZ9g;zuJ?#UR;<{9-noeq%yw#0tb|Chbs;-w;p;5`u z=n(aA!yn$u6M^JD2i!A*DLi5=?dECX85M*T;<>43Q*n@1f&!h=OCbZ)mHQ9>6T9}| zr?J3TJzP@}+m8_04&;0>$;2y0DO##L66*u_$e)zeXX)qFki%3nVxrPFgOSlYR5z%d z879Hkdn&I)4P{Y#qJS(Gq~1c@W*)JDPIb+o{-PBl>KhjC57btbItT{V7m)wiQ9t!5 zRk7u6;kv9p=<%G?*2cx@EKdu!Z7{14GOoIN%tepogq9@kEVB|%y8HhPWI9iS8tJk8 z{|{vI$jVRdo{xPoINWpi4_QS{+nj5N>ct+QSVeCgX|qya4pZt0*HbUvfiNQ7-+AP| z(Jk;_+~Zc>V{q9%sGaqkcrie~#f>CMcp=FZItzzr{ChrAf9THkst{%R%P&{l>by$J zL4vHG2_-TZP}QaWZtKo7t$JY8nBAo(c0M5>pPD}(1^K=2j~j%%=5o64p9Nt8-xhKr zz?8EDd{P65&L%$bYY?%Vt`?*RSzk;7pFG>%qvlI`x&c}7k!3%fw^TT6fV}l8U7Y}M zy4-0gglEh2p!g;5ziRPQN;+fs_A+1$BGpX5rYy8>{zoOi*nr6+_q+s$CIj{=VmSq- z0Cc6}rPSQ`eDW0-cbJ$039s1DqyYPO1__Ll=n}kk`ZQ_xgNna00p_;^<^wlv_~T{a z#J|;Uq$@>Ueus($t`#gdZDHMQ@q$_8G@_$Y4!~nz9r6PoPoxDonHySm)8t zkyP|Lz-)R68luwrS4@dm3A67RY0=YGl6uJyTu{D*`u|=pbH7XVAk4-B)H77V^4@wz zb^i8~n#dc6!a3A@p4v@4EpRrHunr z#jPf$=K+)KZ0-*Hb@kJ9Z(_eU(K{OZG{eDRKk?ERbJKm0ZURxWD)~+uWR{#qG6?He zfT%fJ0}}T0A5A<@`S542gr|oMLl%Pg5(10?N=dH;$m#GW=a8t62N{42Nr(8fbCi?b zgf2x0p8I!*j7ViYJ*@Ogw$Y+X9O!7P3n9SFpa@)&fc=qztmUe1bv11cWWmErbPirMpSZBizgJ!Y>0$ z1d;}e|B<->fWP1p7RD#DS=DN##oZ-vKVa#efD(oxSOV2Q!O8oO(!XJ|68S()Uq_HK zI3Bp25HRx_XCVTgTB(X1ja0Jdf#6ty_hNVSdlpw&o z8I63Z_QbKD4;2%8kWjb#+d$6?)=Cs8VO|>f0=e&==%J<-!RcOW4Fw*zTc5?!Ca_=? z!D3YpXv%hYDtI^wfdSe)_T1TV04E{x?0%pG5ye@SSzxF8bi~x3)Sdott)rC>`e7@5@Dw7l=qS?~wL`L7o6EYiDqx`%p-P~Jp;2XMV`(_%V(STw!3Kxo@! zcN29WRtWZ2V5n{RDSy)gmS^v*SYV=HcT23diJHIM2oAj_!C>_WVt7bVOu-ixKLZT& z)3<9u`3@+i)WXjqFEsJ-nJ(%j)ijIKZazN{>HCnR%_TZ0)=Rpse2E6y<9T4kdJkuh z>=1d>Vo}(OCIp>+xWe)#un58ZZ>cbF=?a2}`ump$c*Eewi5IA-1~sMw-lo$NEzhh} zr}bE$FTfXE4pql?@Jsvw4dCKPB+9g^zv4HZotoOlp8^B(8H!>IovtlHP3>L`um-G; zJ3EeVZG)>DJ961nnz zI9<}`>G@F89y#*!2hSdlD$;=k20vL?&;Ra>2Ez|cDnJC(LUhFc!4lwkviy6s=i!bs zzQeu?YS8YVy75LizhP)}TNLY3whyz=b=iMVL^lxBvKnvC2TwlbN8O@unS~hU3Q)T9 zlJ~*RbvMy(AogM#lyjcnb)m_%Sg6oeEol8Vv8COh%h$=b)ud(G<#wEtnS07vd9!Ncsuf?3NRpQRDJ$CT zxR7_)p^&BDO{;Rqxf(?^2>XbiUs{8h2d6BGD#t)Y{;%ptVc5Ur8nL`F! zWoc6?i?ZV2@Sb#8x@;o2EMuRzF167ukZLI24QVcFBOIHB`ln4=v}}t0;U&4PG&UJ4 z3bu0p8=Qew&Zt=^%t+kODzjJW9ls^mtW}DhdC5X{SD7Za|LpLEPDpkt35dTD8oi)(It(j`H@g^_}Z} zzqVRfN-PjMWHwv!RX!7W{bfT}-@~D1^0lgC%Drgag0$8TB##_!=ZZ`u^_mg>X<|f_ zjCd7Im)Xz?eM4wS{HJViI1?*m?uByS!gUdXS0UYs>qXWohG5@oW%0)i$G;eqpKFh4 z>nKG_Pa=UyLQ?kO{#GNj$>8~*JY4sXVUEiBpbj78afNv1{RWq#!Wkn}$}n#1t~2Lq z*XRGSM#{-g^N7MjOIGy#pnv^H0W(X7i_S#qv*bd-h4B@60{cmc$f}94D>H+2#@xj4 z8iFU(uhgP~89KV{j8YrDn@$?&aQpWv$+g|9@^waos>Fe_h03nBJ`=s^xU?bREgezw zwl)V93+GMxc>b=f1&DBI{_)$3`h?K*Dpt7AGS833C!p<1p8}#T(ccfVLyOAkV95%D9CB!vo zgRAFU0PFK{*O$ahOg6u5S|C?#6vjzo-rMDWd)_>I=;!C_YXU+craL!L>Ki{WQgAHc z+c`Z?y?Gm4ZQ)1HNq2Rw@$6}sG)a3?7MR@sQTtU#H}kp5cgkI#BYr=nC~cS>~dN<5jnA|LGmC)ivOZ+03UH7{d2F4jqFwsnAqz6{zUjQ>w>KRfWWAG}wG zI@+{t`#NSH*|Dol-^K(LmXFpPnL}5Vc3ba9A^J%GoToF%l41aSlFOCVm!mEW(VcNH z2w@c?M6hZ^1<{)C6&2>FD}j_XMLz zFNIjry|?H)GmFLRen#8iv%OgW%pzimSZ^HSpW!K`D9W?7WRz;McwRtTh-alQSSGq+ z{Vc^Yo~^5SjF8z&;aFDOZ+TRfiVJO1jY!A5f~#d zMqrG<7=bYYV+6(sj1d?kFh*dEz!-rs0%HWm2#gUJBQQo_jKCOyF#=-*#t4iN7$Y!7 zV2r>RfiVJO1jY!A5f~#dMqrG<7=bYYV+6(sj1d?kFh*dEz!-rs0%HWm2#gUJBQQo_ zjKCOyF#=-*#t4iN7$Y!7V2r>Rf&a@1fd9w8B>$ZM?N1@k|K@73tE$#6 z{chF!Z%Z1doP2xJ`};q9`|`mlXWss?@z@VJ$t`-czT-LfeA)|Mn=*u5=EX8Dx$f*GsNZ2AqX-f~MB{thHvZlw7Ck0bv-PCpc( zZSNN%#;M>ugSK~Hg&0-f7-CEZ{S1`YsRsQsQR0JHpnoDt{AVWUm!iZw^v{A(SMqA~ zAr}r!n-@O`1rWRQ&F3e6nWW0}M+nYMPNU6ObttiW2B7`^_ZaAhQUm)Xo4+P>g(hkR z8$FTE0Z_A&Q(Wy)aR4A72z)ReC==pSy4S#bH`FddJ{V87z(c!C{hTB5z#|9iPXpS3 zUJwvD&tT0!g|2`=KnejY25g8h&#U5f%I`;>gf_S4mCrGFQF*h#Ev^A^o8cZaQ6_$f z#gSzNsygwUdk~QVFoCXMfiaj5v97^v?Octs2+x4tn_)PV#OgzU1H(w%8gs#Ln#v!XFd{yqNm&h z;OvJ5xotS-WD;Cr(CosvRUAQcMOGt}P^>h37&`g$&4CKXlxu=ALbVRql%nEO2&W@J zHn?(uI9%0*fGKVwB_QuQ;>>!nW+9o=+ZuD6dy$=Aa3IMm;b`0Rp(^VK1bZC!kZJSu zz64y$1LN^eIKO^SJiZlv`1~rGc1bQ>ZR{!v-9E<_-cGE+IK7Up9|uh7rQ;6wRm#)D z*#eH!8RTZy!&R6SQ>D5Qd@l$~@Scr}0EU7nxef?VPOR|vccC_Ar*Q?BjW#Z15#N!3 zoA1_!JAME@BjJ=_a-PG1YGqc38NZz5stfo+&<&OezjJh^s*Z$$8h|Oz6HsP&zc3>K zBU846)Nmk3eRX>Nl%SGx85u1&%dJ=e0?zQB@?j~z*Da1I*iy7t@=FgJuD-6Rx~cDa zeW5}UUS~uKI>=@vro_&FV;klHa1!8hC@7fov6VDVM*vt41p5QOApa&gMK0L%uiURw zs}m%B@562mxRgX3!%KsZz&rU{WR5t}Q0-h*9Sv<{an^$YS z863stuxwt^cy8FBB1a_Up3x>6|A!%lDpZ1ShH=OyJb3j}g z(+9pM*gtm7`Ld7vvsKQ~bLL+E4=Clqi5|u{QTx4fM40jkL$g!5fNm|%0k(D9%Nl?g zCIIB-h(HSl;cOjl`w62j@Ibz@pAou%33mdS5yVBB(t$_IFn4M@HZ#38j>m<}F%SYV z2~TNw4btWjswB+Lbv#D2K0=j;p&^dFOzjb?ssyvgf(*N`56&)aGLQtEN)Q|zG#DZ6 zr8q2*YPg`D^CZMnA1)|h&U1&lkW^4m58)=RKW`(e4tsgYO0$>;ukxQVPw(%7X$yoe7nv;DKijy@1=uzLp=HN-bk1fiq`#4v@u=m(wMr6Pxbm~`U73;;z6%1x zV80Z~UhGlIKsy2g7&aUd2*e->Kzi*A@P+_#bfvVr7$AH;_{w!Nhl~c_0BkM!kP*P; zrDElG0$r%&^i>S%i?1Xy!-*x{C?bHw)=G z3}-ArvrVWls#B3ooZ~RJp>w@V;WyS+g{kl=ned}Xa+DDjf#UTNXnyZ^vKU;b1B$NO zq;QJ+GwWN((hkVkz{Q&3-V;EUOoZ%;(=Z6tsgygYdx{V&^Qb{Ogy++p8(_R>E8szd zaf_1obaU6l>rRj&2R!RkAo^vCClGYNMBlQ=@(a~ETaa7=- z4^`#CUjXzWSnRIgjt;=~c2b(`(re<9`q-+j%>+Hkkrk-ZMGvtloUW8mx3mhnZkn9a z&kml{Wxu7=AZuD35s59#%2xW&Tp6*Xg}J}g%3PzbirCY_JgkHQb0oZA-IR<@_Csyh*uX<*ScP@A|_Y?6xMP~fG+{)MTWa5zY%-;>U(-!1`6i+G7hqb(B z8>z>p$2;b6T3+jNIF&MaHJcNs{pXO3=b1PI`K_u@S&6M?f7%DW@~mcDtHMv0{g-QRw3*gkEs`52hyvYJ%!U>yi6poaj5Y@C z_CL=A3Gph;CBTA(|A>eMwuC znsl(*k-&eG7v0Sn{CLVb)l~b0$yLBWt@;mFTsK| zO>*9BPDl^T*pRx_xzwl``F?4@q@T2xCMRtQtOpPt@Zhet>nr8SjmA@)<{@pD_R$Yy z`pcwwXRChrbnwYXs{h$xly|nSq>VVH=pDx`PO|Y_7^3I}+*HEG1DZ6z3&b+GE(1b; z0)UPk89hL@8Isr-gt3F3tpQW$oud1OBLJUhAVMf25RQjHK==ee$N_tbK~Heg4Niiq zHS`l)JvceQaO#1xtD!*A%X^Ta&{XGP+@-=ZM%V=NK{-GeJ zcbuv0QEEXou1#a{n$ry9AZ0bv31yz?uk8-z;(D8vS%mQ-Lbpf$_)g!rN38{TTWQ3l z!{tZNz9Y_1%5mFkr zgxl(gD=N~M;nIC)5;5KkLU9WGoJbl2^#6s|IJio9L3tC}>n32OgNf-gR@L@QeULAqRSd zO{DiD5*806o2G=$2W{>3tBOl`=Rk{FgtHHGI>3Bv+=pPWO9WIf;e=M{5VC8xEqX%* zcP&5{U~aaK5hR7o^a4l({3HNIm@q=h{7`cRmvr$7j_gu(K5mDIfETD)1G%`<;g$jj zW80ys!w`oF3fjxLivy35KNlK7Kgi)4(92lW8oY)=+~vh1ihoEd0{gMie)sZs7sHAp#m?8}A{ zBQM0*Z3hdhf$(+BWd_KUvxCO5d7Vdb?!S$h`TYchi9^9<0k{YQTK`0F5W@29f#AIEdnYj&jFW-+s6>il z>|Lnn>Xf4Ba#8$l?c2vsvM)9$1Nvpf$^`8NC++Q z*;O!|IL$kSByV_}apnb%xaN#wx8li0w&%WfCQ$fV_@`N5Dqv3oXWTzcaYqAs`gxn! z9~1-8{W0amB6c~#%Wq@63Cl*%AaOuOlC`yUTm*AUo}{R&%}V4Gf=f)B=MfRTcuC)Q zLvKL4^1n+Z6Gg$u!cLG(4?7--AjAwMV511gWCJOeC|eZ|23c24Mb zc7ES0^m+#v?2Q^}kluj^7`v{v-2AsSGMF0%G{8;o0|Y@ird2cgvdaz@$cjjrgTb>_ z#GT!)_NLnToM(WnBw zqajs{Mmwb5&+|*9y2WMl#;5LZI|jT5@}q$c!o2`I`Db}5urt7#d>|NM}(l?SiAZRRgpaL0$3!E*@ z9MhS16bmx$wgbUcfHxk27AnI4S18CpiPt6|=|eEM{gw5@H(d~__a?Hd5|S$){5@0_m$XhZ{`HPe^p0hsg7@&SOM1?i@GX$s z*KUMLO+bJKNuq$NbN<>+W{Qr7%f7WcQo|hC>_KQd32WK`Pm2b{iZp0W0~&UN$$qOr z*B@)DzX^2H6e;DL!#>b^aqhg6yt7Hh!`$AFU?a!4^3O0*Nw-lW>38 zZ~74Q43yP3--Q$vHrBH0WGwM#|m3&t`}Rf+`&u!a;*mmCnX=s}i0XTr+iB z_}1FcTG4)SThP~2#qht&wq;1~Ekd6HA_82R0N&aSJu3vf+1&OQAU1D62FI3Y$E!hr z2EKOR`aKUDA5RKnw6$fX#3`nJeppKZ${TpIlsy4jGcsPr8!}dYh!B12(6syGTf(rn zSLB%kMH4b%{27JNdtKNQ#-;JfW{&s$)x`4CLC;-#p8xofMe^JVNt{qbJH)FH>uqUz zd!D|0v%d0(-f>DFwdWzB*+ooY=iB!^eD^it^M}zgRo)k{cj@ZB7gf#t@b&4ol+ZlM zbKAqtI7!|^^Mu~WyoZsqZ5aUSi&I@6PMB-clpTr>o*!?^-H@?ooTHgPJ@2QU@sj85 z&ms`Xe~B+tBfOF@SPGoC{}*R(9?--N##0mCxkR4*BRdUVo`x@~3day6#>t;F z3sWmX;u7KndX#3_-U#vJ^*GhvVIbQ32F$j8hYpO@@fYu2ZV-FJQxYMS#IPgdMHjDR zWf!{yE&s;h6p`Ry@Q^k$;Nlkka4pI#nZO@@$sZQ;ryfYvqvq#pqo7z=DxVOD2QsWa z90Ob0#V(#(I03y5ACv5XsLiQkOZdZQv5p#iZ30u>)e?gJ=BgHwV3c>**MuEaGIA{V z`ZG;$JzJ4%gBo~VGNn4)-f|tHa{5KzK>d1fZlWSnUC(k{KW00jJw^69U5{sf?y?%=^x3rR2N=hS zjgt_&e9#On#^V)m5T%NyvNM3+49`dDmXC++c*U|*@=YVlkH^PYLpp@REM~YCljnuM z;*WHp*Ie28znOxuaj|1*Li?bHUEST6y4@(-3bqz_a4{C8`3A{D4ms}ppjGnUcFh{w z<-XVbwfhD4P435UE_UXr98t7%*ZL|fT5BZ=}2h>%3>ty(^#QbjWKEQViLS%Nlqdb0~wpvaE#CXDVT zsYfyxrxrM#YOWTPoP@t`F9E}m?Z`Cjz_ ztH_6V4(HAlce~!dUp(ZdN>_R`B`@(9NLG$(lPwu{MbeV!xGJYz1t?Gdh5JXeVDA{K6g1>UyN14aH`a5_q^cFb{!g@^OH#T*xas4$z&r`0ZgRGaypoT{?&?}pSW00@(b9BGBAd4F-;LpF= zxnS96f2bD2{2Dt8qFOp)#A$ZRnilZ4Ui^I|PTTCS`tao<@<_7X7~!F%ckb*Tv0LS^ z3P0xgo*!n zL$N+ObG>U!5sKDjvvkJO@l8915X3jBX-75-5#}nH+@;51#5?ym6B(adcaOG@jZA)A zwd$Coj=A@0`0hGW-k@iA>H&;1i!1G*!N)#_H+}9sQ_e2Y?%}Hbgzr0D9^u{AmS{)D zG~L>mZHKbe5nmpH40juqFWw(*Qj&m(J=NQP%lPGX^|*fUJ1zNPu)k_)7qf(sqkl*(&C$Mho<1C9SGih)ORtnW zPj3p{wuD@QniC>)-y}F5B(~06IC5qYy64ZT)~F!@VR9W2mxeKj19uEUYH&a(z%C#S z_6W?iN9YX?a0R$z1;M29y(nA;li3shWDQ zV@8h~MKIR_aRwF_GMY2B`z$8(+!PQ5G;LRHGsJz>U2i@vb$W9C{2tmm{!IBDQs*TY z!7jQXdZMvFtDj3;V{X$5w8T!P{zfbcoOAv(6R?{6;mxETUTB5s{l*Ps)mEKr3C51m zNflqPW1TSfc=UGWD?h^V$JRf0y22VPEI5R+ zBt{hR(WB8iHt&6=_En8brStGl3pzdHneeqm_>aHi81wLJ{8IUu&uMZJNvC#(pbx8( z2IzjPTL$w~&|j?5Gv%;Tc!A6;8JX%-ho4)Vj?n}*Axo}QJLDh~Y^Wq&ie$FQw)?&MSG!zqKSA@3Q7 z2eSkN-7*gO@bJb$Q}wRUQ|Ph%{L3CIRC7eY^D}bf(8kW^%9hf{+}mGv&LVG1`wIt~nX-o?R>Y z42A^gQvSGE52-Mna&l)hw7aupU+4L~o$S4xnR_}*c6Xj9`^c#*fx=l_FOX4L*qf@_ z!-wMN{I`&lX&~G4Ie1MAoUszMeB2%do#wwi zo8UR(T9R&!bhMs$Luj0@spZMh(Fx|(Kz#fCsJXtcuW7Djg3uKrJe;GiQ!-LazHmmg z$qzbFPYuhAk=2p`CnU+WsF>>#_RjX$ z6pbRmq;HSbD5B*gPE-k&8m;udM)4Uh^N&W$TkAE+iLx1~JP4}QB*!Jh(0CI9qt>-6 z(uchk$bvMM+k1rVmLHc2uSIJ#akHY$t*rLwi&pfoiiMTLZ!~I8NgbiIKWlI;?k*=j8H1S9GmSV| zVit>7O13Lo8fH$vgX84M-@@2Fjyxjj16$#1cOmnJTotvTBr!3`)fWV1j>Kk$AqmF( z&8sTmiNxjb`D0afi<(dG{KBeWkgeaoBE()KXKIu(WTtYwD*EE5RNOfe@A1rH+S~$d zmDTiW;!1-^z~QYhNRqU~*0Cw(nkD-A(UATi-#l$g&GRk#v^b5t*Pad4CCD2X94NVg zE`;R4ufsBLbY~~0C5@-iAxN)EktbQt`#>U9idF9ewI(R!iHhj7Tp9#fzkOp)Sja54 zzI#pVUs0rh7$1l{+9lkvy5@9s)KkUl2fi7@3l_*0W^Py@o6Jxu%kVP^^7s@*bZ>2< ztN|h(KA^(Ib3x*;gG535e;zB}MugDxXy$%%0v`1<+CDq=EyVkqtn zXN1&}iH?!<%jQ*={IX7(3l~PssgH(;Gqm;;wFw%Gcq@SFO|V9(G`GUCIT~|oDxQ#? z6q7^|P{J}NM^OZ%tY9rwbS*)ipybJe7z*OvM$!6^`B8mL+<9&ky|N@aA;mJiRM?&p zuL;2{t9J@ZEPvShw9lKc3M?rps01WT`F6?o#cB#70HN38B`&)?2}cHX z=ZfVJ7QDNI^izL`Qj+# zT~j3yOb>G@n{cyc6(b;b3CxA9*MBGY5VAa%4D+o!et$$o9C90A?$AfXFZU-=+eRT( zglx%vQ|_?`3CT^@j)A$D1Co2z3(}#axzFQF8@y7Q3yvetU`{CPLYXw?T+k%V%t z0cZ&%Cr1kTBXx|paZRCoHG?ebCfF%Wq4&*Ap;g;u z`yqV^cBPBW?lR)6KQWN1U44FQT(NfHvk|-pe$}1e+~v9H$9Y3~)DJ>tH}6BH>3sCe z31sAsxc`}9Z62b_ctqllDGw&u?1TaaX3M>GZcp3K<^W z;kT2k(x3eH?sz_{_qV;LTt+%PRZAJoNe26^x?4TuE`Bk}naH2Y80)%$IjG&`d82ia zHQ@upX|s6GJcg&|=A5#)?Ui}j6L=17$fdGC`?(iB%^U*LQQlHloz{~)Ta?LMf$iAG zU~w-SDmrm|s$Uo9b=_`m9gctQ9sUnP3Zo#XekUWHdy#Ct@`(9(sp)gKrsRERyI8Ni zMXqCJNuYFfAfM3vWBCoiQYp;F22YVxbHzk`7S@hyDO@}gB zJ9CHNJ-PdMToEOi`||vzY@PR5qhV?y$Hj&IYEP^4x74y#t8aJSB=0)ZJDjuMw933b zr0-xKwP^>#UOLj*P`3B{^N`E>h&Kdq#M^q4iql+ zY`3@K&Z?|=)9Zz%GQ>9~S2oFOldv3_)Kn*|K;m;vlZ;`~4fR3=qRvg08ta8hBq_H@ zI#8dzig^99|0&V&O8J!NdA08e@#_oP6GHzq`!NysvYQ}E280CROIRMw=F=WEdRhAW z__Tgv`ybg4iCZtbA0R2YFC$g;!kgbCyK;90wN1IwC|rklh8 zuCS&}!cUQzxo5)+n}lhrTFW zyslAs!Y;aM z(EF}*EbFifj|(%$SKdshc|QH{ga%Vx_86Tp{`bfim+G<^I*^U_0>8Iv!QM?j-mZ53 zWXA)L^Oj7V0jcZ_NdqWXuDimUbg}9D^HV6*Xy?C|-BidT;Mct$b4^E-dGSzAD>*4) z(b@HMo->R1e$X-^@}E4jval==GD_OWV~6&Ro3>pDiR2NOe*JvfJ_!L2ZH|xyV?P8r zLTM2qr>dQdvFn2-&PEYV1~pC_3$I99wM;J079HG$NKHEkXfGBtj(!@y9sFP*f@q9?;cHE3&3V zn4|jSR5i*%)F6Z1lDsp(uPMN9S3ubAfao-J6)5J4NRpSeDeS}e`SlTT31Z7(0TgBu zWM>biXc9HiYT&!rgK~MaTCE0wi?%&^mU@ob-1-Oh=V0MZML4lQ5ydSiZO>EPIpqU9fFR%S+*X6Y{6GTFJxKJkY zl1F;U`16_=clXBL-CKEgueC|cXewh*scb6qNMsC{*@=|{W{(txs+^rtsVeuFRtZn5 zWKXN)ueIJ?186I!cXvvaORbz;6s_>ixjLqLv-4(P)B&#(uNefT_B7XJ#=5GqptA*7sPZO5F z{{F+&%U1SJNs4HglN6nn%45vGO3C`f*cqoVX+Qd-`&_OiCMe@#fD4cAlSFfB>(!d* zG}6rPeaofMe&ZAW!N%(oljf|m0N|^}@}r*CJ}o#nQjw67l&qNr{5a$F1GC8ybB5p& z>*sg9t!JJPU%bF7UX)!vFm4IihY?_E`D)zWi6_X%SU!zjzmkblPxqx8w*=?hu!-%yUG z&nFKJBS+I!l&k4-^6(IHH9gG!YFYBe^i`~xG;zQ_;RaM1knPu`uJ!UA$P@?kdtU)3 z_Ice^i$oFGJ{uqr8e#FiGVw&|(Mf++FB&eMdg4s=^5ReBauBjdE8`NP8~F0x6LIRK znbC8GC>c4)L*&nLWM5=HWMvNfPLJA@nKitpkZi3PD5b$3szu0fy7j~Zf^DV3B{NbS zcP#og9RB9wENIsJc>vHOPCPh8F&cMZ&Z=O;*||e5E(f^R$smOfX1r%a5cCHCpS*+{ zsYZ{?wF&;WDo(qeJ{U|f2P!F*f&P>#fGQh)#DXl_r$my@24?!h?a4&leSXdhF^z-; zm7Sg#0^qPKt|?xS@$|TwTgRiIw4K24B@9GCL|Zo%_8)Og;dx-37zDzcjE9`Ym1wtO z0L-nvOE`^bH$07UG(bEJtQQa|(m;@-0?ZI3ZBTy`typH&`JO=-=QxT?x-^M_M6ES#S=d^ow8 z_p=ed0&|X~weg{-IU1^;obhSYg5g&SWZO#ERJ+%5#`k2a{V>sfr`cpw1#;4wSVmX( z8*MDpnxOG~uNy~>JmmaxGa&evnN5u82pa1iNA9{aqC%nvinPizl zj>~K1JLRqN&U#IPTuxHUNwVteY^X#ACCHN@jV6JFO^rTwO~TfKgo>0nSDK=DEsbVO z#R3>J!Zs-w{3!YbcE+%@7}6xgk0w0N#L<3P!z(|H3Vl5Y(!$e|1sp-HY<{M1inLr@ zA3ZB^Ub`(gSK%S|wk4`lWbs2hKccjki_n)QY7*m*bNsB5%w;MX4J3`(7>$n~ZZ&P|}-vkgv2!hT<~T zg&l89RLfH1k>PHq+QiiOgc#(8#W89hLk?%w;<&6mQ5~N++uS++zy<7jVji2-lwt(m@DP*>$m{EdW1lI$b<)66Mt!`at{*r?BI}!jj?A z_wE^J*~h1D7cox>HukocNrcisK{r5<1&=R@0o3S&jDO6EY<(Pv_T=soy~u6w;G-;x zUVDiD7O!HY`oU z{R7Im*n%PZSK->RpApv~fNS4qI-NJJ-OyyooA(Owyu-DvBwYB%1y^M(@QQ=U%X%`>uTP~Fbq@*q&$5N#bg-`XN8r3J*8H9Ws|=p>++RRc$5U&& zRuB$7PnN%%BVMW3q8ty*y#*{;og(C?04`sjXyozwAkAm@47z;JrA{jH<@k7=eu8$g zc8Yc?sD&wISQy##ZrTzDeM_6S%GrC9Kuwj|04q=IzMGv_67|O}Xv~Os0J@h3-QEVU zGBJ~6G9EtrLx|>}ceJ3a*6x7I!4a->c~#dkk5W~d=;fg-rV^XyXdJBE;G!BY|I_78 zGIaP!mC+Kbe!vXlWO0rgzRZHMYK%e+l)q2wP}2kZF&A&}qLBrtr52?fy-w4N7xQ!* zw8~EVAxcYkc?jgwDs*~siJcJ=g3?XT?YAXin%JOhp2D|0g-mn*eUK_1RA|i6EQ@Q5 zZ@R^R2BYC={uw0(Q7{@7>z|pfN=}MT3&=`VVd`120ol?vg{&g0sGIfJoN2N!Cq^H$ zNTIj{Wtw;H3;hi2lTRpKd0l$jdMQPae>e$Co<;F0sMRauBSgUz-4N?)`Xe&*Rsst{ zM8Vu(s0Wj&6XR1f%97~R=!E_;5PVx~QaRDc10HB;z5p_?SQH4$%q+?(E*2Ez7MBPX zWEEx==}NLP1E4#DG}$1P?Ej{FXi4hqa55AC^$aRgX=L&2?$mI92>PivRhYVzR@WaM z<3D?%ZHZSQNKD9HRJ4#uh6GD=MS|jz&kM4c;W6PPNT4fT=n9EAiWI+xdem+f6XQu* z(2PGq@n>>V%{Aj?=b{kk$}(8O`rRg|JJl& zI(fj(c)EH9lpkSIU9vdv=TfpLDWcbDv(J!Y zWi@xr9^412xPFZyF(KKG6aCWL_3GrzUHVx#%{3zjZ=GaF&&*8D0j~VTKS2y<`nbB_ zSlRY}`jr>1D%k2{I<&H&_GqXNBdFYYMZuEdG**O&?<4Z47I{R-;0QU(N5=M%bE{>( z)8yWfGC`zVxJDkhMmC{J9#SQnG%Z3tWm<%6T4aPgGBQH8Sr&)VXS-ja>_*A=+Zgw+ z_^_`azE|W@)LVnHGErGc8=q6H@Si60nuZCdDSRSjevz1Wq{4p<7P3YbutpJ7g#}j0 zf~yqMr$u1f&s~+b-@l6NiHM9)93E5QbcM1JC0}i0T)iTJeN=6H#aV=UR^l5e_gaIE zUn38$Vs6mSa`zE=R*O6%c_NR>|Lu(W9Kbu7eB!6x(w)H<<#m zH=olU!Y9z(Uvm~DyLNk|F6NXNd^hS&>JUdVA^D!+!FW$r`M=(oNtvV0wnv&R)O79Q zKMo;`%`u5tB4d#0R_teT)eb}6%bC1}E+72X9$&MwY?=wjQW)0u!^HHnL`L_uWKF`H zXf@b-6TOK8eLl#&k`o>rY3WhVj7#D!ANqU{1P<)d>@ftpRCtM9%5`S&(uN#q%Lk9@8AE{?_H-QA5SXM#!+w?k~)A`~GV zxne0OxJQi}vuVArd|>VBaX!$V>O1%EAX8xu;$IsWQt;K;ua4kG)2G+@<0oBMYb2|W z?yY|Iy)ph9<217?ADhxtE40%YKTb9Z8N?%}`s`_h!)CC4^Vix<%jL@;_iYY0b~CJ= z2d(j6U{kKh79pa?FTsN461EQtBS^>-PP<`)lBR4C)jkf4B-Ir<6XpVAWgCj(*>?&?}kMYy>#F|$tSZe+FtAjM90r(%S5+}!jmYu=#T6M{aX=HEWUVl zKY?|gYLHjWLLo%b(t?tQMoI#bW2l69QrH)XzVOOVC(JE>KcznmYBv14^=<=!04nqiLB{`p9g0rW^xR7o<8u(e=LNH^DBxPah~W z3pum;*b2W*=4gu$_OgnfK?1_dd~5Git#$AYv4BSObXbQU5N}UxlUeoOU=_E@@PgeU z=|(aE@~asRSjA~0?%WgwS;tTq#Nj49#8SOg=}|)5rl%9kLX;-* zeN65%PtSqZw7+?KoqO@h zSll@d6nu@4z+#*mTZAn|*1H#LiINjf%AP-;$;*%Nd?GY%ug!nx(&r{Qg*j0wS}?Z~ z|AIPVUk5Q)$%!H2VPbVhz;%{C!GqC?kI_*OS`ku^?-lC`)^k4TF!-)@EY0I<7}nz5 z*iwqnJkC`8e9qUQ014kPpJ7FJZ(E67Uvt`2y*;D4=JHG!)PHoYA9)(wJO;kbaWU3R z7A^RS{HOogam(D7qR8r46IOA6VQt%mk&K7JqM%?oR`G;kUAl{j8(prIf?AvAd7by( zF1tHc!m{#CoZBTQ0t7YN7r8frl8NGhWa0+~@@dsBow4xgFZYCBblVr+(-~{>+!KYS z5mrjY1(A-qxN#3+aFsTv8!vkYhQVZm>vc{%2FfS8q-fV#YICLOmJ#ME;dLHW=PQhd z+3G_W^ATF?T7n{)91&B}B~fh?5%nmu>c_>jfu9HN``jqoKJ8a{ujE=Ey_sCXu$J#k z05vNdm%BiooO94KJh-r#hniL4GAsMo#>T?dDM59_`}R|FiDh)EXfk{JgA&1- z)3e-v1i=j5{u_42T=`uezWTcr-+lKTYThuN|Mpy>yOH~ldyIRXTh3h&ealr2r@?!4 zXji>ZX#ILeEF3P!;_-Dm7JP}CX$}+ja_t-UHB4%rMk-@FVa5sX)~xaoJbp6P2fM=e zF|bLIW14Sld2YPe*fb7g4V?MESc$W1jG@&blc)Cb@&P!I$K4Fpw%Y_~kEJQ}PEC{N zT~J8}#3*xDNjV<2ue22;_4!q2r&2pET#?A{tml~4$h{K10SH3u9E=~Dz-|MzV_mSc* z*0B@`QE=FYTb}y~&YSj7&*-N`&H2h}dymVnx<5jps}zYsMLMZ6=>6J9?+n*fqcZl6#8uYx`V?PN`^e;XgJt zxlGQ2AVGQj-Kv@kRm}c{NmBsWJ`NO<&_o;RvfpICLmZ5x+$ElT;oH*h1i3@_>DC!g zFNyegfQny?mg5lq>9{(=@1UId^Z5%GtYIavWUI_7B|eOdJvgx0o1f9-32MnOJA2#8 zFtTI>F83VDoA;VG0fOMP*+Jf4c_Z6oDIuUbm);mm>znWi*e1c7z=Z_iJfW2;NSp1q zj2z|P==+Bq?AzzFG<7_a29q28tMp$;krIY_}VB+O9#VdgdMO zp8ocDiH}Q|S^O}ZqURe`8Oo}a7jw^XaS-liRXiI zN?On!I0mGB6DDXE-st%W;;C6Nsu%-2XkhwL6AoqCwPmWJbg|*{@&mmn? z|Kf2O+Lg6huyi8ARZc7AOj@TK1-&xW6&8ac6VEpW(mKZTkzFn&x5|y4u4?om$nfs| z{L9ld`P7BW_RW8{t8t{+ksk|RI?`Ce$)YB>MGx;*l(#B$+P&-d#xBpi;$?#EM6)^G z-f7A%Z_`aXZ_`~nQ3Wg9yD|?dc4hjQ4#Lsi#5>5>bjf+DcTPT3{M$}n(>WSUoH#U~ zS$-h2;9b$P9(Tf=G0b zkHE%I2d)$?Hhaz-v+lLs+%4u=VyBVKe=wG5-i+*y;kPV(yQI~B)!QCtrcYZb#HZ@m z3LSN6F#J6O$7tMGBbAwELEcsk2Ld1vN z01|S6uz!wLPa>0%MJTe>2fb6Z!384~W6TGN%x-d8V)F4I)u3-yD+{1MT5cRB-hDoWb=E8Hw5-kBg5Nwd z4f}42SK#?6q%Fc%$nu)6k%eB9nMZ#@ro26XRCFMRE2fgz71g)~k>zG zwOm?gpQ)|VD`n6qBt5IMlktoZ!MMp7%lMAr#JF5kweyQDd&jv3?9!#QW{=U_CR?{v zS6O;0I=771UcgsvPjVS)n?90{;0bG!v~;)3FjME+uUww^ifZ5Oyt8S2*PZd3oW z-&gjKT8gaawoBsU8z2c5kC|`{BQ|)Wmjl__yN0YQquPIp+s!T{me~_WHapOqi8=-~ z$*#OJcui-(!Da^q*xZ^gJS==MaKN|ujA|u;8dG+9vR?0B4I}VM>>HTNXGkW_KecH3 z^e0PC#Xt*|zmwEfRg9~I_aL9-f>A9a$cgP)?n(K|K>V)3}>Ih7HSquuH9 z&DKWglvA@mpS)!JK?a|pud;J?aBi>twwY1%4w^f1XaDhwZ{}Rs2gUSK_0Huzc12#R>(~r^2Q%O*kmt2>o-&f`9%L>^8V_ zJ4cV>uD8g2GnXdwxiJ&=><+04qOUdXQ@`Qoh(RS`UcwlMJ^hW;&?c9=~u>p@OF)#Z#mVqAGagxvbX}6n|nl58Vq2_)*_<0@#QIt zYRYVfEW@2tZbq>w+&?4Z+)((!TcjY=AABFGlOpW;lH@L7-6&ab@eezE1;6x1eRQYv z0=1yHpi}C{DJU*tf(%htT;%=QH>_w;(f#}PC8|#rxsV-nUZSpz!uz@bfruIz>D_$K zgU^~Q^Wc*O>RcI=@k%6^kh^OfA0{3&gh{F8YdK?}IhpkjH0Eb6V<6N#;Y+FAF-?7z ztH>hEvhOSx;w^8h#^p>-im)F18iJ-*E&Xc6ssw21>jTeqhIy~l%T7$Jz#%4gdGV`w zTDJ3u;lizUJmHf>=+T}{H0sFC!njv8Rf3*(L;G@Eo>aY$T>Zsl*5+44fHn*Q2`mKh zp&k+xSGYu1keew`<`!geps3eFw4d1h4JXJ@N@0HCqNRm`xWeL+qQw~{xr++tcPqIR zC{^gZ)c7#IqMX?ll*jeR6&mae2Iw^R^aG!_(**}W9fe|k-Z00=55%31)>%dEPF-d?URB?twT zA~PTylzoC7CI;6Muo47kXhCTx47OM_=rN9Z_~m~Q65CHLPv8|7kF=3lI%C7b`co=S!k zSsA$t0mq~NZUI14cK;F?J-xnPIrOjYx`LuCUFPS4%&hF(!mLbJsFnV&AprkZ{yj;y z3pn{-7nb~o`GsDPfUUHRYOBZxK<*F;nz4AHUQn`Vksy9i;eycrrr-2$@*BuNe2N!m zXXh5{3QGjDvKB5X`g|efms8(@~?Tb`xh195&mlei~db% zFa-Nvr`GlV#ofBzRAmEKIom>Ff?ZEZA|W#X?CJ(k$A0p{5WQafCe?pp>hUQ-K`1nf zzRRH1NtdVUFH<6CUj3QORlb^GHzDu^2}+8S&lF$@ws1KynQnVW5E-Ha0qC4^XB>T7 zFz9tygYzl8=ySbccOnFd($gLH?oj4vV4bwTgX|g>Xoy0Dhcz!)64!{GEV@*ePW|iL z6q($YvPsGMSpmb?t3HSu| zn~=N!Q$}Ba1p3cQ5IiQ6NKnV<|4eAK`L6 zSRWu9pHYWMz{{MD6(BRtNnBNn0P&L9Wmf_|<{{010H}pRl%@X@5Cx`ZTd;@@rUG9B z-u)HcB%QXA`8ph&D-Mg?d+%_#aSEWja|)yh@7;RbMm(6P#&q$&dnkP=szp9~az~q# z1nOZ)5US6jowYR{rKLD&H;ca6+I_4*A%;Cz5KypX zzIT9dla#^}M$X(g&n|3b(fEnRDM@h>z3$#osV1wK@E_&Df4Y5jI@Rh9;KNI~D63jg zM)AA=Q~2&mh84{F@xUqDMtJ}yOFmx&o|lepERrx$30pD?MYwWbFPIH-(&MAN@ff9V(7To$aq(2_sEE!d%pI)71 zQ~Z>G-1*OeR>+S1)E^RSvpx@A;^{$LrOz&)J$R~AFefdV9`Sqv7OS<2?5q#th>pW5P$(Lq)|zvnLm!nQj< z9^IKPEsMBw6z~|(1{lqzfTE&XlnUdK2zq0B-Tc7FnZUJ-8trd)?PCEig)_t6#(}wg zuQTx}-|hnDZFE{UByAj>sXQ`G>jF&t=#?LAay)uD`!C@GR#K<*$&-TJm>bBF0B~3u z01QUsRKZtLzUux_DKkK{k<1LxHFaC;_m=6?OLcetq+_b}{ z%(qT*-9kqNEgnru2aW$lzG~4Z(LjxXbBmzA-3yG(s6X@(_ml@t2-E}2ZKF!$3ittT zSU*q%ORE0>vRRk@vNgXyUVnqyA{0O&&_bIUjq>bY1KcEox3d7w6K|cPudoztQfcKa zS5pMrZsIpXt$;p2)sC&SJ$a)<2Jf?grb{8PD?+~v_q^wHnV$!@4NLf$q!kn3sej^N zbLY&+GK_5Tl#Q9C-+JT4FYuT^BgX0)_G*WJ&A~D8pd-`*HXvOQd$D%j$T$aXkF*J^ z@<#pho8q2z|M~=b)6qA$EYrw5%Qw+a^l^xJ2bCbk|r4z=fR)q@xjUV_~Pu z^s{2UEzr1sm1?g7{>)~X?V%u<;D44-&rg?kfq_SN=4M*vcrJ&=J>@ z8zHF416$7F9e{br#|WfkZpR_kA@Kj`WmlYJ+>uPX5tUr_`{1}y+4a3VG{deE6==i! zB!USPa;jQPDOVg_9>yp^PUHcDF9cQ)uevTiJp5582MsN zetJjv4N9QFHpd-8Oa6|IRAYF~0U(X*ZQLxg#bm&ISLUzo7^=+Y{S!yrggO@K7!$WMQ5IB`s>956L?!Zi_{tEuG6d?HH`F(z#p%8|!>y3#fYC8SbV zKe2QEYcP$lv5>?t0&r1mzXF;&+#D~!0lD_mquLR}FjJ(s!0V;eQE)j*A}B&kep@-}#Tv-c9p3 z=;HFk+~jhtx^c{kY5ccHG3k4ExqhV{19LjM{6TVKp>NYxE-HVH^yXT|8 z1h2Mv;J0z=t8U}>(W3K5l`!;3uk8X5zz5TSQT?r1_?7gHO~h7rSpGH-Kq!lWWQrbz zj9RJDF=n5-;tIl6JU!3YF0_RSdSO0rek=;Q9~_FG-`n<=aT^_cqiyi?{~Fvf|F6NV zN0l_t?*DXqgWF%X@BZudNkRGG?GZK|QvN^z(R@{2-HhVt^z;s{H=WoIgm*Od`0v3- zEn_e555WC0U@nIdHxUq?2?ya*HUTO=jk0fpseD8;GV^Vw;qcWm`5qdcI52&aNU?TQ z$VLt7gYGhn{i~vEl+6QiF8q>}1J8k=oVM#B-{+5Z-SG@}QjMXI3VZ7;&ZA8Vhbw=> z0pvft>Q+z9pV4FD*SW0S{|CzX`hO0xy&eZe0d2FSeBZWpG(HumN|cZ7mU{CKuJZ5D z>uW$kHp*33JdW7{u5}7Wuf>m3e}`UM1A12UgSy2Di`RNSbh6PTO#p77)2S&a|DqG~ zSKdR~ zYt&yy6=C$e00{8p-Ym}@xm5+^8-;yEDed9r>1A&|Ts{v|L6`ypl(QaG5S?gaM|lsX zcLDS|{uWsD!^#3369y5s2n0L{gDke-`}R?f@QWnp8_zMaGR*P>yf^gqUnfJQrM>gx zh{Xt2k>?G#7>u!NrUQS#W@?T@Mz(K4+XKnygutKviDTRQWdn~TrTQqRi!W{VY&wt} z-l2%Acg#<3-F+_ce?fE2+uncq?gvRD`Ix)S!GN<)2_2Dcha!qE7P>P_Yz3xW?2?2o zb08%8a4cLAS+?Zis3u(wt|deA=aN$Xb9O)0pG*zL%z&l;Q8n} zPA@2<#NF~xVwMBcXB`K6eo42x!%||f^8Z8U-<0hC7bXAE*il3Dx0M0DS~(RQ>^ry_ zZDb((mr?UVzcBxf@RF#qZu-QIa5h%fO^fLWKM%g!&F%=#1mCF(I&4hq`;I{18!N)1 zD)Z&TlAL>qYx3o-y?Z!FUSv{+^}7$zEb!#;6L&lZP5k--Hc6*S!U8I7~ z5C76`bAmVb_OQ-B_|;XTEo2%G&lJb^e0wyVgN}{zvIOPXHrk(X z27xv#kp$>BhNcA6wudeah`Qy!Eg;J3eMHPlA;B5Fil%mf^`UZbS1gc-~8(m^M(9eIrhVZzuagAoeFg02uz)pM*dy*k%MuPUsK> zN|+$%vhDEPc7P{+FnoXBXf8eK zx(mf%HY!iqobJDetl5U`2cX3Z@SHAZEZl{fp+g&B?9+vil$BwhVwURDI@ubgh{kr}*2F z^^l=QWCOgoRSV>^#}#BO*jk`VqrUlX9}$eO2Ld}S4Py+RJjyM%uR*M3>48VzV-pP9 zd&xH?+k1O^JA29h7i(_<7j?DwkDpnX0olH@zzn!BtS%_bFas``G7R7nB0H3(Gi>4l z3K!b!7(3(cLEUVM8J#4PE#)pPm*(K0${4HbW$KhD+;i`u$0$$1O|&TVy&ss2e`nL&?K zp_FfXEIed_%=QALY14m59`pMm2##1eF)jB#RZRqI>h>?OlaI(Jmo!r#W2+-Px}6^P zI|jOz;5a5&qpHN2QdO~-F`NOXgUadaD*SNe4!UCGM$scv(L1deeRwVZNrpfyO>xx9Q0i zXI4>%8#v7VM|y}=Ie;bJ8)PJ}@z|+W)aC_E&3s}7RWRDg<>{@Oy9<>^FK|LrJ15*{ zzO}V1SWXcw4zXZa42d0-F0;1VJc1(u?r)QNu};4_nAA(~XECXF!Jj##-V=X@5;dEz zPv7@^aq;2;pbjR@I6W@XnHa=6M@o-q%Y@2rK!a!L&5TYoigijK{VGJuIVw8u(fgz< z`>0#Rjwev{cc>Prv1dJip|X$0m+f$`=j+B59OlrOarzdw?*{V?3br$rJ?if_0~BDf z@7_OhEh2oMFQuccjJ*Jnj{TV}wO+bzs*H`EV}R@oMOsTcg|H~=;)gR%+*}lP6ibUk zs(nF^Pl1qy9XWCOcc2u}oXV|;lm*m}(doIFQ*4!??^So{6iIudWP>NNQKg&Er5DOj zFaT6+FZbG~qBSwQ$vgN1u2C-&AXVAZtL&My5+bfD{*WkVE{;;JOd^Aj639 z02`p9inoU}1kLy1*~DI*>HtEHt|$ZfHt-y*8{{7QE6M^P5aX>X`y^Xx4KRS%9B@S} zueh<3^-`5&{kp$4%v?uhF*NBTWzS}+xbxRYNKb8^EI`BEH?4v3b48HoqNr9R`TW~y zYKa7%NLiZp%1{>lK`!WVSLqXq2r%Y;P2K=k{@$ z1`xCd;OlT8)(qLS7byhC(djBFElyrJZ}{7oXUS*BN5tyo>!ub*51(mZ^NtTqe;b(E zk`XcqkMr#pnPBGwu`EDXzdA9opG)(3Ys=g}YiTJ5zl1;+m`^ma0dk#W$v;lb_J(hi z8*Duh?k(X*31yZpt)?0dNKpK2QkBt}K=V&Rc3E^)yxJ#QMByD=Qv0W~TrhQ${r4jvR8jf3hrT={=|^7FP7jq-{wZo1S215 zxLEVEms_j|!V&J{FY59CJ55J7Y2deLlkSjI@T|TZwo&vIjT*0Qf;hBrpcG7k2bZF+ z1EoIvyJ$@gom(hxV>2ut!#}F*b5YP?Wv_3;%T^dam4$993w2%n%MO8NHO%^wVdhHL zmD;1G6d{hy(3GO~?^mY@3$W;Uhq-$EQTEp0mx2{y&BbPz<&4P$Clr}<4pxB(kp~0L zziq5{zbu&!h@Gwj;4~yzW2RTeIvLQrfQB?{sy+@?vXHl;(m$pbu-=#BT^X^ZXUgut#+G zlCx*l9v4mfvSh3kor}Cp^*(FseXh3574B6Bc-~G~ zwz5~#@B)VL^}1YdgLbrajGJNEXzQZ)8-mu;2q~V1k0E0jmX~nmtDyh^>Yc346L25i zuo?Lwu&#)1-@q@bbVG&2Mzlh!PlRONWr@xk^PMzRN_Ju2%DJ9 zbW56x+#yZnlSKGU1?h6lsfdgfe^9|iQ=P15(B4DeQ_(nN+EMfCrt4zAD&=e{n0MZ@ zcxVk}QSsv1f{wBIOkZ>Ef+#+q>cvc5zCE@tY{fv;?1hWs28Iw9kym!LcB|7>#TOx1!zg7|z{4PSEw=YxK^R7O7Q z0V^yS-E`ZPwabM4DXej>L2!Cp6FXC>g(}kX z+#D`T#{xR4h zmpjJz{6Ek87iasKC=A^`xY#Gu^e|DADwT}xy6svut7&U!;#f%yUwsAY0pIg!-l3ak zV*FwBb**NLOv{#e#N^T(5mVRFbtQ!UP9e%7en9ByaVim|jn)IX@9t}uq=Q>R!)kSP zxF!;R+EUeK$5C=V!WmTY)W?3$^7k1t3-(QV)q(S*({O zgM6^s+r|wl(L_m#gO>F%Nvi$ktS9XXQ@xwLwO>;BPTb5?P|!}OW?(=}A`l&Bya=&r zf>b+^Dy>S!9PqSN3SO8_RU4IhVtfMKuO(bZ_-X`WE2E7Hju1PxM+aIXM(-9gzSqo7e}6*U%2Rz@3&Co7YUc}C+0YIok7 zTLL`Vg=fvnR=Iag&DOa~-b|(m<<=-3G0)Pv`@WggBG*+SkRzX%$7Lzi+$pud;-FPu z52fM)o#RunE`s78ll<;*+DS08R;e6E0r;xM-QlJe=I7wuRXnz5+dqk?zlL}5t1vy2 zJgjtGUU#+}Ew+@Eg_imJGWDeOKz2;W1<=s=4ZUs0XD|TnB_iDJt0^WLI>@5ul-bbAr595$rR%nKw-X+U!Sa7yI%zX4FSG}K? z>D(r*#gxFg-Z%^N$={{pH#mWAU`h~&((ZOc_3beT}q|T<+VHB zU%}5viZV)-#vtPqW2o_U5af+kn}hg*+@b1(Se_u;Rjtk?g0poE_DxNgP(|MN3-V#rqLoR!@1@{*WeDD=K)&eAP{V0q zTXWpZc>oM!zH!!WNAte$us{eQJWhgv_wn2zdiE#2xj@r0_k+B%Y6n76N4WNs?G6jf z^h+9&>?eW*NRX81vV*~O+xZYqU?Lg~DJVB-s%qSo51YJYKPjglbo@;_UCK{1bOg)@ z;bf(E%BTQ+HOKzo>AuOG=UZ9h+f#8!?aF8WNzaeV^|#i9_B0++JKIx&w>7y?Cxbh1 zwNk4Q9hf|Oi_bLz6N34T9hVqlI{SG`@Apy)o!MhGLdoJo<=xON=nNbW9q~7=hK7T# z#wC{pb=MqS|GE3cMYErv@eFR3mj%h~dNJziQ0WGi``!E7_J%0)q7tP$hS?3O{_Pm+|lSb3gR~VDtGNy_SQp30fuCF|$e zL~{`oF6@s2BY@unN4LNvVJ;iK*uMv{M*UBBcnbzTYW5jc=A%rsBo;OM^w2-_qi#Z) z;%1)Kos3f%g5&*`TMo?rwW3)$%tdVwgr40q_Si_oBz^O#v@Whkl-K2%%o*AyTb$Ja z$NeKn`7&O9kFnr*ue^AyMqJh?$S(ln%0&Xhm?KMd#weqEX1yscbBpOY(-Wo^>aZsWa8m6Eb`&aOPuG#_7O&+>p(sNgU{f$M#EnZ7_$ImV%z_W!NW`HJz*ri#wp z;?7}@TC6WVXZ&TO!liSKc(tIj@loe2Cyj2G>nd8Wlfe>psVd|->+dDjg4YV`H&%8| z7I(hW@vHr zj3iYr_m-lkY|8?LX+%Jok7L6U2anhFubNhE3aPr=zPgHnIQ+*RwE^?En+?2LJGjvOTUioi|4n$@+ zB;Mp{u0qGNat>FMc*`{6+0b$25KFyQurD-30%$=Qu+cnUIa#)ZeVTZq zXvAWaxp1EUqeu=qw`<`+>;Am?-3VJeV%v!8M}3Dk^YWhEL=Sdr%ck<+$@BTy@%83A z5UiA!ZK|koH_5Y%r^6-h1S6)dI_LwQyiwWX9RNoNL+7veUYxFIY&a)^MqNJ?yFWtz zdhP^CyAnP{EzgRAL`9OjCdsaaW3LL8!--si}RlJ%2BLA`kkjHy0o?t9MzPhy5L z78Lu`AH5D1Wc7zKWzV81$9M~!+rD0rskAkn`*tt4V{Cb1hDlNBRi=?Q-pVmndRKII z-#tHtXWqhX?>^`^VJk3}%L4EtTySuCVo04yk8w%qtcmGZeR>o)I$`NEl3h}#%bcPub+&RaJuCvB<>Tp!$!mCI=7YI2#E%nf+%1v~ zJsR8AN<|3Ezw)>uv6?kP5N(eiz0P~R57kn`1g(%*kKX=n#IR2H?rtq_0!Dp=b^%V4K)~41f&aBB4h{)rmu(lnyrE>+^&50{l~CV43lrSN|O&J;^bGvELobiO<{Zs zd?f@^-ECx@Pv`A8=G}enef{ux?nKtuu%A@DoKC^GJYMU=8_NlOeKi4rDb3=ok?tu? zPRk>mp8!p4CJkw~|7|481&ZzL>z;nqThD#D~vpIN+z-yaA`=)8h_2#}25t z$>S%0eaADR-E#~^Vx@{m-ue+gjS!gDx<@){q^jE4(<>v2FALki(Vl^L3tPrxnydb1 zi#&@uV!nl4f{PaLe~sr8o621EoZ-EU0#kmDTjH^z#ZNWQg1A<;X;Ycr1CbSmD~{pg zJhLRg5E*P;X)aM)8=q%MEN4lthws(QJS-+BF&-9s|Fs(I)hlVYK$L* zsMax%>Q2*Fjd3hWIR`;-mL}T;4xmRKq7IGpYqSHote2YeZ~RTE%+_4>hRilVIa7U6 ztemMy{Ldn1h2a4&&&vH}x`(#AN2x5)@I0Jax zP^n}io)5SeAlyj~A+m!?<(wI;JCx#Z(t0$G#(8jkdrpNzOyK#Zj}XxzMJ4(DLiXLO z(H`G@tf#RTT)DXwF&=`mO_yo#V-@$BYv8>S+zotnTD*Q%jC=kUSLN*~cU3nsXw`13 zFCbPzWq70sF(#&|c$3lsFhV)WjbS6&o7fTZeD_8US!i}l{M}S zm)+XOY_Z`|2TmlA#c-mwlOf#0sf`H1&b#PwH1PwpC{P#}TAxkPx;h}ZocA&)6*!|d z5j8V`!%Z{1Mkc_y{aqF!`wL6?!q)pufVm1GL8H`u14W~U6lK6h1>QKptko-*qfLN8mk?@ z;2E{)OlJpG1@DSVJF#q1op-)na0w~PlvwTS#Z#Vw*i3l^MFOudsb5Ey?uUuj-_!BJ zlBKZWhk$ED)@_CMdfI)S-;fGy(4-jwLe{B;W>}S&Lwn-Ky-R_tRS?c->cyhc!f8L`%tjM-U zaQ0Z1anKX8Zz%i3nm4EGf}`NNqA{$BC=8B*026*5oc5n{WCxtZ8r1U6d)O3)vV+0c zx@dzsW@QQ;JYuVkctn&@2QUbrukpnrV-uoHC8iAq%x`T0i8aGUD%o81VtF>^9JSUK zL{j75t{+2~f5@mKeCoc{cF39O91a~hyCm3d_73PRq1HcWow^|5mCY;jAo_1Iu-1Rt z9QKWXeSvkN`vUXNrrAkn5C$NWB3cT>9=E_$Qe3uMDZ^I@2GR? z@Z(_+;Cel2JS4c8ef(5-Wpr_XHlDsR^8#2}OSJEO2#M{@?48u4JMyj>)~UaWm_+$s z3*WbxiXID-nKA8T&-bMWXT}89SY@$B8;&B7RWo_>QaY!}G89=$i>OM0;XX1R|5~s{ zLl)=^8vk2@RZqesiR}XBi}k+o;M!rRAOIC~%p3X2Ui6O%?w_O5dmxSBMME_LpCaHI zRZ*zM->+z*<~{!+gT@e8#IwovGfe=2EoTJvGckXeZfN|0t$)bCXEXyCfn|I+kTKMj z@t*yQZ){b;;;x(y(7`5=hefi3_D&84*yXFeBSyx5BRv1F!uYpnRZLL<6RRbtMQs<$ zhYn2BKWrVs7I1Jt;m0GNMu-3ZbbzQ2%J#sC%*_Q(c$_a$fe_d+p^W)X$RJPTJODKgu?rj|w>Y5p=>eHVAUpAHj5TF?chW2Mb!^AQs+B2x8 zqIx8Lm1WJpd%PDQdYE<{1>l*7fx<2(tsy|1T{Ev?l*_xag&I z6OH%MYDCMtwJD-yc1XOL&3v@5?OkjrK1mwHb`P+6muuLTRlmYn{q}#tsqer*pP6bW zVWpXsbI@vE!chO!jANTdzFj1+c^pBRI(HB2(fE^s%8C}n#ZkUI{p=SLLs)xdpz}HYIdpR(58Qz*t zzpJWW8}!;ZIKFvO?HzPTVE!rOCF&Ch)v>pr+5de%*g01F zGansKuyxFAM9tf}U+kFSTxAUw-g0a}aEBbnhGzPkQDq&2oJ&fudp2Rk%5eoe*t#w- z)+31UUf2{knHIlMhO7foG1aF<5?%$Jx6)w@1zv1>m_EFS$`a!u!VVE{VBjaiv z7dUBTs-E#Vu!NVyNu=^-xkO(E5m~xJj&aE*D5|oJ=`YRd|D3jIoj|LIwY8aTTwJK| z$!-u(TM@NhD${GJ-NOag`EZbfNM-7i2a`s_O${Wsb?HGr&`NbU5GsJ}n1SgVL5ozS zQi(QSO0gE*bx^McQT$Icz_dQjfR=F}1OCI0GYkV6Yc%TdLCyZPjt*4`Fl&RY++@o~ zM)-Yi3u~g}fXme#Nn^U`GB{3avKBkUQ;&};sT~Ie&(bHXwN!f~t%Iuizv~f!o0klF zWi$rX$`ygrDKxQ8!UH!G5CiVw`|02t>=cc$;fl8@cR|TLYGEMHh%y|p1HhvIia;kQ z?nB`blR%^Gg|ScVh2MOmxPG9pJ=Z+5Xo%;uEM5If_`5O^%iw-n7;0f~?{A0uY#Z=5 z(f+ZXCdC%#h^EBCuS`k(o0+q*gnAq^o@DS(e;NoOhg`gZ#h1Vlxc}#Inmq&M*b~bb zTotR}@ec+)DGJ_Im}0wS7I@($1+0Gz0sQd~^R&$s@Rz;Fb73}m5+F#)xkE?Zk8S{U_9E%FT2Q^c7WF7wErx+28*H_-QR2fI zf{QX+6oY2f&`{PF*eTG(1FG)r+hk9B&7S7j{~2fz`)u(*%}Z@XB2QZU!|-inFkI+r zp8(e?84cs?+9wj;7sONT`WAUQ^-}i^rUV znI3*K{pSQFq<~3eRcQxRg^pW7)9pooJw^+jnshx&wdN&xq`H4ITKx;|ef@J;T`TYM>dI+8hzJL*f(J zOzn&!30>WHY^|gJhiy;jHH>4Vg0W-Fgs98r;qen&4w)SKa0b4M4#NqMIo*p1$7Tcu zK5YLnop!dw^J^moy=$>v|)iCiIP1iNSZ>h;)0{a(g9sbUQj?C|<{J4r@I4%Aos3f(%R z`x{Ca$Y5OqsBfcw%>H2vcwxslxL3xp22)0Dv!b`>t^C9;#sTzDKl<(!C%*=A7i;ZAz3 z(Ue0vsxN~obMs6@1@RBVh5{QD;#i>18jIIzwd3tc)?wo0M9e%GEH3~G#F4?UAl4`r zz&G=Bbca0IW>I}Q&9Wl%#3t~xD(bsK4URnhZ6epxbW>a9opAi7h`xz{iz0!0e03>_ zTKa^UMde?F{}%Xuu7$BB-%$<>^iiTc9@aMB;x?r&6O({Wu$ed>mf(f)zZpuqc+24f zJ$vFPZooWMQzv#X0Jm(eX3wXwzQe(L8$F%)W?+3jo5yJ(yDvwUmO8K!=N>61Fe-D;O~Qv*m$NZiQl zrIzpcrv{_az>&4oZKSKrLJ^V+5K?hS5Zhqzh;U`fr>*whotuCf_i5BZ5_#0C-N`df zuc#X*SWk_tA*bIQ0()(FJ=C^*#mOX<;q73&w^QZqt9nH=`qMO9+ANnd>)z$hm2K;p zVxkt-rFUPv^x^EThk>k35cfCf_I9(ml`NZY`CdCGDWS0+*<%p8F(8Wnq+oGB6F40F z#cP)7d6{O83g2Snu?msG+Ou;dHC5NJnF=xu&2F$zTOjr?`Fr)mF;$h**V?DuOUIKy zoPGeNAmuRB7QK&BX;ibBzeL%SX@p*KLd8|;8~`}&4kG#cyb=2>4#79mibUY6271rlgNBagn=mW0cy zzgS%sDhetp98@#aY)b|Dv!l$0Hn{+15E`|u7ckIT)Uc6jzenwYpjeQOB%EX|G!Sa# z6EK^j8V51YZkcPv8#DiZR3V{?4;wVRT&u`f`-_a4?iwHbRCVlE;nQRLVUSKn?Z9NT z3KZu}e;qK%s9hkZI^0*)*?;Bp@{-K~Dzh8L%w_XNNopDjRAd!Zdr&=4G*j=> zx8}c$ed4(O_NaS5^&)BT7OtkQ3{sih0RO(pu?nL@AE~3p8-d{zpkbe>&w1`!>JP!a zscRp1@gMwYA=ADLKNzs*yyLboU?s*ZSd;n>g`dr<_8$c&s2rWf02POD0L8b?Sk-Am zre{W{j|TO^4`Z~}Xxg%IY6o6sTo2&U17V{W(p6n@1oe7Pae*`9%32q zBO8k05HKp7(Z6YvNB*mDCokexyi@|)P)o?Oj==3P3WTdqklRZYR zL=m>GeOd$r8=JEw5^jITlOo=DEWYa?ku?!-(us!?k}zDp5K^#+)W%w|d?5r7ECbYI zs_i=`8dq#=4(8I~7sMj^tO2?u)UPM_5+cvZ(e!PXVsilL_m zumFvJD2G?pX;uydJ*2plnv-vhMqk3Hp7LM-PyrU>Ja%aH3|+MijIfaQxdaO^u^gbp zY6*T)(59=5W``%BjLK;LEyX`kpUaFeEQWpQ!CNkQ7OD$7AAk^DW%ICTkB=K{y^?ik z95^CNwff}VSD-@OQVg)! zQoNM?3t%X)>`03xGZQ)Cpc zp$9%YxT5iiv6#A0W~?9O?=5Ea*$!1vtQLGWB^JA3Xe@HeY$q#V7uIoh#;h%2;{XF} z$CH?1?Ay;6+0O)rE)jA;M1)-_Sfote1ot4-GN{7c%TRj(J1f8>}K zV13d*yl>*Ny)VIU(?8rXZ>!acqon_&Wozsy%l*r&vCfXmBMD#dR&meXn_MLBp)$2g zuddWsf6+U_=4*u%SBlKuEm+N;UirK@Mihzp#cWqs1z0i~TI>fXR!zy^b}vR#=E2}`#tF#By+mT^2x?E)?yZJgCZW(mBPX~Qtb z3@7O6AK%VO$1cmFxx!`k!)9?^vp@er`a0J&wMDKJkFKAWQf-fw@r?F?ldmd7*c9{bw@O zI$J`tk1PFzYMl=c(mHP$iz2tFVw&|`M7GX0Ly@UM#@kMp&(%|~!6NZfoak!dWrt!R#)0WiSmU{-gKNUqXJ7-_;vquK{-gzZ;(oJYp|*mFpgQ#?b~MTB@m&(V-q;YlediPmaLyraO(Bfg!gq#z87%iP@8XdLT-zwlaXY< zqp$5=2$yv^W&_S^l~IZk=uN1F&6KOF%RYhG?Tq>C5RtpjthwOU8n2QBS1uAr6OD>KL(7Up2`W*F6oTUpXq0E4jGCuFNJXyFn(+G9J@Z&gWnr zn&N0m`P#e>7J|m3XJMm=in$b=aiWaPa;>H;Sakos`B~h*b96F}7I6PIGLL-Nh?Xy= z?mbqVUT}w@&)RoHr8k1EF+utjVjcthRaeJ<;EvE1e4-K%0qF=KB0-&+$OUy8q!`0U zl)xHJas|c-q)yQB1o=u(H-+>H>LQ6$Sf?j`!bk&&6=(TuWYYj9f=X zIMr<>X-?!XWUmw1K|XL&y-Hf0nqDQ}IyJpPxFJnDN$e2S9`eeNrgz9!L+bXE+e13u zB}1H>8cCS5^$;;T*S$|FoI8$^t^UROWg@F#l_k}UU%vE8~NO&4I!lwMqD+^RA5?=V{sxKckdFSkD8s7g1ZM> zS`HC{YucQND)lN{E%o-G)iKKvySsQO>B>$IS~jvaHeGaE%OgoS)L>N=NXRzbAz@UC zE@s5Lwh+#_UmQglp`D+Y8m z8YK~=Ce0NRv=&-l+KiZVTs4Nu1M%7P7(FZ5v{e^_%w){4JFW@GcX!eBbhuTx6SW+- zd~HRgPvN;DMR#bc14-8>#m|VJHc5rJ>-naV5_EsavV}{QsBr6JagM4aFGoc$f-zaL z!%5^_(dGwfVv7PH*rOhZ!tP&-t-Y3(eqV-Fo}DyHpW;i%$u!T1bdkkld+hb^zdy?- z({hSwp!fpQLM&12!mPZ7ITj2Ks|GkoLoZzsVm>A2FnX0bg8{-J9$^5Gql(U1WEu+C zxF9;^8IcwwzFo|qpfEo_$D#_x5bkc(ZG#=}V^F|K$CTt0t4a%(7ORSvTBd4jS5*3? zMyyT)NTi82U-gWLtv?8q#!RQJ|zaQK>;NduPI40Vv;1pnri>lFg+AWw=DISuI)y}~)reC$hq{=c`N+=9z zi1A+9skGe}Gasal7x%+X(1QWsK}h-3v|3EiZZTgGTZ=gV=|O-Yb|Gp0!UCWKiz&O% zqM{plVQFFUU}QppDEcnCn{0!j5*~TlgwXNy4gjEodqF|zX%XXtYJ;`|im;x*C58E! z7L!HgOA=aAN?_q_gQB~40e!_K-xaHpa~3SM6xsmjzQ}LaR7E<%^Y_Eg0~-Jps-k*} zisP_JSErQD}F%>V&U5KernG636LkrD?5(-1; zBLky+Q+MG2wh=uz@)(RVEja^_bivcJ4}Ab6Ei@Hm7pk%f3;JQnw$vV2TMA5icZPEU zu)~0KDExS|qySFKKW(}flBb%J8-%v>jqUTHKS*$yg{}AE~92zdU@^D}{keT!_@IF;*UUKE* zorR3~l5~x515f>pntmA^4u6 zTyk|ANT{|YxDO=M*%CM;457jvt$-e7>Zn!oC07Yj*<@WI2UHlY^&1tBP1YRSWFZ@R z$%!^q77p0@)$BeiWv>#`)3tf@{>(oeGqvy$C-QS&A)&z44e49^e`Wn9YCQ8V@(Gwyp~&XL-X{ zblG#;rT2@zeD-FdG*RK@N$+4!=5OcoaaZw0@x@A**&F6%x6Gc9dnbd4Z7HAX1L1T~ zFy$^7R4+qp*YY;wh)rmfCVup4%NMcNspp@+vNuxMTV|wJVpCso1ge#x<20s{2^X?j z>)p%PcyIlSVSTFrS6uII8<|^C^ZZ|O-Ctuh6_v3OWdBbi@WcQ-6qKp1(X`Bd{@Q&r z92JVeVuzq*AGr*24E&V|=%mYI@y2Ppw!mQ&Kwoten zaDotJuUh!xQ+Fny)cpXD9k7xA@YyN|XLyn+u*6WkE zS@%67DiWq2>xoO{8t-w%#$&woyLv7yiu_jNS*`JChF(l^NqlN{ltzxINLfbs;ja0o zGu+H7zfn>TuQso&*D<9DA71iI!HpmpHbcn+LU@)NMWmCMr4-l7$t%1+BWo`rh)GO$ zj*JXQS(?HV((sAm1jfQ_B@VIlQbLymBb=#n?%);9RpZ^*YvnoH>jpuBIxtmuQpj^i zn~^*t#WA5R52XW%D0)V6LdMgcMiq`6?I}8*h~-BOF}8I^Z`C>E5V4Jw-r!(vTazM> zP6>!1PI3D9X{q{YF&lW*ZCkHyrCwa;NAa9C^rw^RwoCSO58jZ}*f`Awc8{;zEF>$4 z)t!vtH93((q|SwG=OswV7G9SdInGmik;S|&1zwvxNF}j4lX1K@F}cBOlY=BdY$?3+ zOIY8GJ8wkvRoro(()a6~`B8mO+;xxbE4};4jJ{)c-<{R>;O^|iKFz&NseQ}ug>LQp z`@>%v`gZkR`3HaDJFvpXjU%{#@=lW9sKD|lAKiaMYiH_~2;g!Q_waax`Y9*vSD_CH zBARuOEmPDR4Dfl_8hs){4F&Yp&?SQRwyNL!ZL_;N?jhezeM11q+Ht2mP|%?FS5axB zLi@V5Ze&Dv5)|#O)S||&a)-M9X&OIhMJ9~)yr|W@YYy}Qot-Fht@Gdlhp&sx8$)h% zO8vwq=76$}%7R5Uvm=4g4UM4$8BcmH*^dB*s0v%pR|oUGXlQ{U`DEqZO|hBBObUMI zJ%DvvN%e)&+L8oX1nv4-syBv=IaIz83LrdTiHk7vKji6d2tf0HdGdfsw<6Y% zhcv;0{xldM-=Op3Nux+1;F}Xuz}sVwAglx3yXV#-9-hIAbTzMq%GBUQXq+@1_&NAW zONA!b-g2=LnXn)K0<+ufGKMYIIsCFYRl3P2ov3ZTg9{iw)V$}Zg?SMI{S@Y#m(rsj z@NHipWRn|1o=<~77*=GL`3nZ3F_J18=Nn#qtP5mH+r_mbUY2eWTlHtSX?iL@f^41& z>s`jVvvGV)r{CA2{s^`~7=9=n*4M?6dAdM)$I92muySZ)E^P*-u&ojy2)3y!l1Mjh zz|Yn9CpxX+AEIaI_7;>w_wHUvY?#{7OyS~7|G4Y^_C|% z8H=MpLn=tl)3^%55`SYa+h}AtCQRHvAC~c{`6F|5zh>fQmPgZ*-wn-51Rr*X`+oBB z=NB{CVpm(~5jyTPfcCjVi>LgCEf>I1@n}eWR0IN&|89^JxHXkzuJNrfAt3 zjq!7OmBS0+do{SlY06V?`aEKHmRUWXqaJs27kr!j5}MsYtlx-dNy zlvXSTS;vzof)1|_E(k*r`-EZJvC4QEwm(m!JGj3lcFS;Vemp@H=dz5ENi-28xE9y6 ziBk808&=rFB)n@=H9&bwDL!ZwyKw6fwStD+eSPrP#n!lqV~RSyE}daPF9Nj?$g>-! z7+(&fZ7R42q-N&hiCJ*!DE7ekO@q=HMzLcLUHdsAY33DDn^(TI|Q4DQw~^qofTqu17m9E#*X8q8z#biBbx<0THQ;VHuv4*>A> zox7!!_465uP^i1jw>*Zy)JRXm3)*nXWjmGOeTb!6`7^@k?L7pm`ia!!n>ov|ALe5Q z_d`dsmL3G; z?7%)ic4Q?jnSzpB9n$Tv%xo&#N+JcJwFT8vmoWompf*P`22svJVbc)W*u6}P{|~9D zT;^W3b(veyo69)U!DUW~&C6URrA!jZu8?C>(jHKsM)~-Wn z+Y(CX>|y5*qdU8HIfKSCgRwgG|FidY*;xQTbjf9tn0+Ql7^Z>dM{=p#qLPNNK7J9_qzbN<;zZGE!#_tPuTP?Jqyf(8nFf=R~kcu{KN3mpoi`%KctDZDGGd0 z8l<>zBoue!fljw-ms1ab6Fd1%r0zVf1q;+xzdUA3B0SR`&Ifz)lIBf+U2FohVmIa> zgBiR&xg`;LuFo29|IGuxe>fi` z9%gH{5by|mP2)0^Xu^eS>;Z!6)=`@xLn2rNeJN#xak2q9!-b@s45dqTGeg+4-|W8T!p!e6g#z5eqNm)`KJ zxVHzUxi}fzKDv2Jt_LeadUN~^j^%+-6S36s$XBWsm$u> zxZ9jr&+lc;q_8-J3%STni2a>5t9-)dLRpiXp&JqjRj3USl7(E+h9-s%s^vXANL@GnY7riPO*U~F7mO#?KTv9 zSPW2S+vCr}-SYorxTxhHKytuQkB5ss{rlm<`}F_8aM@KZY`7T%!>#;x!)4dgnEvm> z1wk7$iL6$5&i-Fv=FhdV`Ltu9>vj+tU|+D0DNsE4R*qG45K5Hw*r#D#Bh5i!11gYZqEPxm`4tW+Mf*zR&=b3jJ7dI zwfEo;STk20QTqhDxC#y0sNQWG`LH4MQo6NhM`KJ7Zd;(lKLh^G=50kGeJ~N~pG|vN ziLERgu>K3d3a9Zf?cK50@V*3RH|AjlHR>rI;Y(#Q0iXWTKkTneK;P`ic&7i5VJ~HS zwZ+wAr3U5N3jg8Tftu}6dOtG!Ws^^a?oc9zOsD`9ZS zUTsUjmJ4?Zax|*!z~r;ki{%O(m@*u~DWB$Vw4WIWz0<>fd?>1*CIQ!Nc0=ic1mB~# zda5L=!g@aR@aM{Uw$R7lJpGAIND_{Itb-8dXhi!#pW!Q)Ecs}OviYydA#-mQDj%Mm zB(##F_p4jTCeD>ZOh97g&aHx(0*$@%2;QC}sNwnI78;yRp*!-M;VYy$6bTVmnT0$# z9ku-WcuMflo5nDnQrPplI~Odo>L>APay`2Jc}m@By=lGryK4Jeyxvr(?xt@eYRbtXJFPE!G0ZyUdFw_^(U7wEYIAhrz0P-C#=Cd6x?Gf| zZkl(4HM{YX%_PV8+l%MQramC73C1+LQ*&v`<4%>@m`&IjQ1?>wn$=DV!BYNI<+2~> zor|4G{LXJhod#*Tpfl9*fhcv;{$u75))AkWGZOA~Hn}d4faG&mP!||@&~3BIf6~tnbhlW%b>V~ioGTka3m%?HB zxZ>_vJf&PiIT(#%69y(Jwk2Z)`;&i>&}7QcXcQP3tTXV+u}NMg$ArRggDv<)sj^q4 z>^;C{cDw`}kw)&$S($*nv1$^=0Ff?)#Um%KWNG!{3E*iKjDPoImc;`zbSm7QwMPe* zNUZzKmW8hx7lfe{`>sZ;S;=auzaEMTriHRnEURqKID1yrSX6L57XVhE)z*`Pnby>-Mcj8mOJN#%W6>JE%&Z#eU0wi7kvrt2M+gr>c+j^H_R=e zsxRKPsi<$BOWm`5sPC!1pdqSBeODb-!F}t+kt6!huB;C|aPIRFbP4-vc#*t5+P}WS z-)HmszI)Us?3?qeyK~=n4>!sBmiEjZ(KqZtXmH^gi@b;HQ zeOJ5ZSM^Qk_IbVUK-VXS`(}6fe9burQx}a;5clmgc*?$WNKYoC4PvsCfBJ6^H6I;}picE>BD9bWmi%qnv5t~WX6 zCDuv2S6hQ@FUfd0GQ(@hM^EoK{Pb%Gh&qID029EM{vv!ME-Jp1S@U20sBp=W!oq)g z`!ACE>xYlefBj>YpxGIuL0qzPH@^S1we|jePkZ*UkkjxyS^!ZNle$88h8BEyG!X#VLIdmd*6*b%7DvRKZa=d=SojkSvemrW>M0zy#4#_5K1SeicEh7#S&|lS!La%B z=gT4&d9@cgoSL@{cN?J1z1XbgTgGhTJa@$#*x?wF{NId-&fx!UL{C7Y^ms%*c*BS; zoJtdZ@{;o5s+y@WT|Cn7Qdq z>Eev8^)*wUU2^n|rqxgU>Kb=+S;u>@HY@-7Rvzhcl!VSJ&#U3yHLs$m^6yJUjaam7 zjeNVFUj7iPKOP5c$C>1@nhSqkCYzTtXJ|hbn4P7&F}x$s z*gJI%PLn@^(jXAA<&-wM6O*ED>1E+r-58A-yGPqSnRkghwBbyoe&|oB&{D`VV3$^aJ=ESL|M3592KL z)PLTBV{EbBxnRUr8U?PguyEkH`^aMU%)!G5`Yn~GQ{kM%%G;ika{qVSVv7@VU zVR=o^UX5l`KpFd=FBdM1AK}ry-r6e)8ggUlTk(tH$j!AiL5YS%J4SdW>KA*_gK(l@ zW*V2Mf67ywXy~}QXzr(pdhX`it-`vGl?!)nzaeWpGBeE)xwJeG1By-LW-*LtZzjMMRNO2uWqyN`D;WOvFWXBogO6G+7 zAjNSMY^C<_AN9R7%%kY?;pbod@Ok_W^LQR9do_sKF7Q0;QR$IRtyb$hD%~Vk}3JDs8tHt|kxRp0I7t?VY) z_{Tce+|hf?2VOb1e#&^Cl zF*??*AqO2JHvmmoYseHQ)pk2ZcdW2B3*m8^3yeoj7c>G(SlxvI{QG*{zA@`|hKGWp)s+Cf6xR6mjux28_A z->vQz>2yKOfFK)d!4g7^E$XXj;EFwJ$U7k4sYI9 z5|xSz<%7qYskJU_WAhG&smXYf9jtKxY= z4`U*4f=5RRuf(I{X_Pmv|7fN6_`{*GhL6^Ql>+Y01KDW-h3r$0#4zRPIiTh!toT{78a=J zHzQ#O7;!&0J*f6tsmL}ig#dPW)h>7WWr(V0T8wUF;tOg?D7qaa_7jBFj-Qr(LFDIo?Z^dY z%f+V1Rt7euiq`G1EK~G-+QlFkDbkji)gJ1PPi&4vJBht3h8j3^cC_+>k zk`SPPwPmIpc7=Sudly8Ro@u9IYcIksj9G8SVv5INnUhIhM+CI|ji@rY@c@s)Mk%h;@Re`~<+n!++Of;)bIjwrzIm2Pk}!fzwp<%Ida= z_=36rRTD*X%COKi!AJO0VU}S2!e(a8>W^wwglA@EWICB256PFd=ORQ0WPs3C2+B)Q z%uI)Q%T7%RfLV(WOl z(Bw2Y;kWBjKQY1}*QKv(Uk3x3kTJ(hieu7K?gM4c^nBOm#FS~$;B`~hL5N{Sjt+vK z6)6<&O>)Ac94q&xm5P0bR2cDcbZb zhGbLyFvZ%D@q(}YA)K?joqxd$2Sw?8rY5;z|d84J=X0^kRtD zQ0{7kPVE!l(JtzCPP+Le@Pp5WcYx#sPvc>z@r42)-QZvWqT_o{Ss3tx{-%LS7%~TV zpeiuK43?q@-`Ld5+?mO#fLIJE!*sYq5ck08K*Idd0BHyV{wF1WfMEmp%w)!20>-_I zc2GtG=0hO1c*(K&OJK{V%L;pLQ>^KkB+a4xFjyf~XQ=Yx(Tc@vw|Q z4Q&oA4O#u9tDT+-kdpwC@mG&50LooAB^ZW)@GSLRY;gc0h;}w2*wyX-L1mOqmpWU4 zhL8@Jj40QCu$gKHdMCtt3!r*;JH)U{8M=i?UO=*p?EBO21Kl!99z^`27R?JPLiD#w z>C6lTtf^=%&CNh;;}XR0@=tW5g>-d0v#_>9=rYhQ1T~t;ccyt^otcsW1l-@aNB2N) zS%h>QB49*sXiz|yGhx1go#9~#?ZNAUA0zsWGY7*C1NzF&$U>mIHQV33zDB&@0|8GA zK|#qeIlxu4Fj_^*JF*SHlxyKRoD?6tt{YWlC&0AH4l^t;0}*ZpLKz+N>R`0c#tRY# z0-x&UoB5v<)ILF@eIpp|x}7Q&+ylhy%%(EKozn@|r65<|JbUZIx1Lgx>$ z$*|V?Ly&k%hTmIInTfX_Qmg;w=0IM|a+{I$KdiSyfg`+MZ~tD<->t>h^YeeXmpSV-_`i-*74h!KMEeq*hVMCgQ@an{ww?5-jTUtL8jGsP|&zo@S zv@;ygl@_fU#l{M%*hA2ffEFelq}+u>4iYpQ)bJ-PdAFb!B5i*KjxNMa3rUd zu+QpYbLp0^Sv_?!d^rv~_N(9;}~MI z8qXHa%UeS8XU>Y4L|yOg>Z;h8b~b1YN&Axa71T^AUQs4i3x(_Dab+J;XU;meS!~Og z2aAYB9O?5d_k?O| zMU_8GV~I7iShGF(_-XtLaX34VC%7Y;cD72$!Yd$o%1A}4h8YkZ@R(M6-s-f4Ms9yF zkEVII-q^w}MtN&F*dx9tqk$a7@&yB2=| zo4j7yE?QTJHCj~fpJ5r_XK@Z2Z{;vUfw`CaTlj8UFSL1vqC)96p*3uaQ%IH(>woUr78bTL<_zuBdv(w&q5~CTDRvTg&OMwtpuEqKeVfWHsJ-_UtywLvEK*waPoIM?c-FJ`YqN!aT6ikTihJfK`k#$ixs2@T07J!xI>Mo`@n1%N%xvrbFGd4cVhm8f!aHa3TSRe6GV6g`AanF@ z=N?-qz}fIXK2#)7dk@}y;sYVwcyOwE09m+7=#W*5HznShjHwrQe#pYV_dep@8L5%O zQEw3;>iKd<+DSB5J-_ydyWG(bPE=0AyV#cLws^BQ?!1Yzxj5BYfjAbz+ev`8OFA%I z)n$$4&UFGJTf3zY>)dEnUaF29JK?Gx{~mUhu8C}~<;t?hPT|Wx9y`UM^Hb>7no|}k zKQ=aPty};3sO$=By#JQF*IEgOvM|H-W5caGa~tQPWC_hM7-9pZ=szL0*+#*_xXh1{ zE^uqEaR8O#OzBZ{t6*;H%&(yz*8MHOy_*dtX60hyH=QgNerT^)et&f1u(DO@+bPqLi-g~1yn%{DLExfS&6Dw)J%DmO&_o_PuDZs51*)Q);(8k=V&4fS&91Co}bZ#Ycv|KGpR&xOJ;Lpz)ZOn2LzrrQPc0_e6UQEtf^SbEXI z0E-C?JX%NQ({|#&L>0mr9Q^7`x^ov_zQf_U!)b?gdgjks2ej=Pw?L;$a}|T~4}7?W zK0x51XNWf

    EujyVu_p6jO`(K#72+Npo-jfdf?}cgUd7KZ*0PPhr&@68%&f7wkk<_5>D3GyY)et8@t!S z&{f#Ev)w!$E(AKfWf!OOjjj9;a~z6{-4Z`Bt9c66u=Ft;^`hIBgt0@bEEv%O^)#RE z8{)QHT*3LioZ77EZIC=;R|TMjX9kO=gRve3UY^w1Wh?Kp@E294;$0Sw#GXu=$~$8* zd3FU>IO_gD9ZSxkhJ@{68>O-cb%zSharT*dC))>(A$GyaXMYhdY3~)?b*|HXlN6-3 zwWuV4$xn86drWiOnsI*5_H8j=wL1~Qf&kM%P3KGun8@#6bd)7I^or62cr(74k2f!P zFx5|YC(n+}%HEoUx_1}Wa*LK`4F7#5EK=pJaHvYT9rbIzp>&&|T|A>^+wWv~zz`10 zHdw)S5_x{P?f2d^J7OcB?!|X}Tkj|w1hBj>0GO2vwszT4n_K<1`Ut3k-ELbyz%RE`pZQ|_fnDkbLNj8~D472rj`TXN5M!C@(dvjXtKIJIa#t@X3t)3(r^~k} z0ITF{oj<`b8}*0kU)96(&TGYI)xY8)_6QlG78e!6sXy${7L{57(g0TL_@gU^xuaVK zoy@o1L*@Ywb1x52!5P``Cl?)H1~H1Y^Z_28*n7cY)v>Bce4`z8(2lij*Ovv+9Rm+zct8r>>!GYY zvTIVgo!GIbB7IxHu+95^NoG^t{%2MUJBC4LRc};{G|&TPq;Q?1mw+J=1Aed$$RV_r?g)nH6$Xw0XN+6vdNK-Xn(Wy_c74;*M5`g44a zFCGZ9g~^)nzy>ZxikY^A1{xO&*_$2Yi44j+LcV0;mpU%X&Hs=SZ$*rsTYUO!MZN(AVO4s7MXDTx}=Lbl120m4p+>ux2xwVc@S(_JMK!(5n>pAYEFIzCVq%^{3 zYcU_4=meRxd}iXQ;zZFTu?_7mTqbUY@8E6l85?)yp*N%I1*fy4aAiH0B_V&8@njsr zDa@ElP)9gf$ND9aI#Xgjc^MC0raXDH=aG^VQ3^ z?z||B%1g7>!2z%eopOw`E^+0e;&fYG^vY42SU`yQ%`>b`8W;W6h|_pi>$Pdn$~Hp1(d~Q9*0tZBnWZ`@LIWW>nFoL?-K@mnbf8Z5fXqB>TtGDs0?+f`Ur5J z+N|gmSyr}Ap*BqGv0?j(hgv`U{^pQXdzE{Ylcxz4r72N)Il-*S)A@Av$B)(?yzi_ zIj_)YP|QwP{7J!je(v)sA3=*Kj6Hos&-4v+#&BymV2ysWk<}AwNl&V>gEw#|TUu?+ z?m7My9ceC21<6fD zeeM|78NgEN)HcE%lkMwBYhWyLt|{ed)dAZNyRrvUl0B((FQ|s|xdo7Y?IVv!^#b9` z(QH3@a(U7d>qzr$RO{)?ORr}QjK~`wgjuW)gsX!M3 zE(I)AW__k;NluG+vtmWS3D1K)jl(nd)4%(%RkH*w!g;E59gPS|>lQBS@%$y*Ryo=^0rNaz7}0Fi z>7s2BHH*ASncW;vZC`tUpsN&Oh1||R_|T(f{xW*%eoHLJ8-D{Vz&<*i?k%sW$2#xB zQ=GDoRk;pES=86MX8Gd#BeDHTctswxmm<*7Y$qKhh+rk1jpni>z)Do6gfb-?4LAGm z(UUs@YGutKr*t$ai(_CsH2WX-Uj6sZz-e7nulVvT_HW%`u?qJD3t_sHFvA3cyb*?(c;MVugKlY!ir>GN!)@o}FtQax8-fjDP zW>knAS@=?CA&7~MqGs`3m*?V3>ft(}4bJwgSvCrw-(}kZYXxmrfpwyFtC>zuDp@RH z_3nu7+4aw*<$M6gzM0;#n%m=Q5sLK~`E%Ip&-e`PO4MWt+Uim-iNv_M=?!W8F>ne?h)jxakw#K`jye)XwleY!)-*(La`GxRxeHCxP@62GN zq`NQWE&RDK-peeXY7YKMcR`nYdr!Tf4n^p>}EC_s2XI_;_G zVQ-57ze#RxEBl|Ats3oz6;y5)Tg{~@`o?hP?*&nqY22_rUgMIp9_$)bbN;j? znx!P@nrd7CQ1efZ*+%r8I0?{l$}2X|@}PiFhJ6f1l^&x?!}A}pBRW*}0h(_{u6f38 zH~CSnFv>a@W?gjsySA>0+5pzGfsUv3#W}ufkAeTrzEg52>3WU60NL(Oz`?~&y4mM5 z8tvd@-_RFqFgwG+ow2HQKD1Au3XCbqlt`sB_BA?wy=alJK{e;v`6AjHPM5tKlHVv~ z8aeQ_0Fos1L27Y0^7orXaD1>d27kpb$$%r0Cu{k%M84;e#lS{`OekLw0U2FYeS_#U zYsj$*%_&JbO>oW2Q1y#05t3VpqwF6~Is`L&*QFaxdfe~YNx#UCdis)aN9DhslfsQe zn(AoA3AEr8rb(!scMjoo!>0VD6{Q$|T>fol>2AB(%-j>wOP!6PHuDcH-%iYtUzI|t zAkX4O%p|HwdO}KIQwA)PL61xxA3bC(vmMSP{9aHt(YlzdiSDG{;^u4jk< zD_oyDe5>BXG%?qUciV--q({hxqzH>fHeEk+>Xc&^d0LdLnPb`!1cnlX1}i-{6aY;e z_ZAt)41ru=OcRMiZ~!fHn>B5%0iVUJ3 z1&M=-N&3-IH&0s-xLO?*dPxv#iR-Y&tBylV^_->j>`8biQ8Xbs^iSes)ZKC1b75Dl zQ$~O)dxC8I(o#ozjgF z$MM{17xo36mvD%p*G{ny33{_PoKm}vm~PJPp6($Q*N;td08@%vu)8Gq%)v zPV1)}(>)TMSE?>3QU-!EhI2_gqoq$AIO!AA%Az%Xn zzJaQrj{XP+SiO>zl%XQXlymww1jb?6c;MclBO$R0C1II9CCy9E-WePq#mGhI5M9$> z$~hWunU3T_(lgg=$A;;2XY~oO)}PD2N5s(4o+P7~@Q8CGkbHA=nL6DLYgx?SV@&P*)jw+w}n1D0ep% z^k^l?o2PpK7{!E00uDIfa&IB*{;Nnutl0eQLjIyR=yMGG$4$Ee?Q5tdK`PS+v=48x z_-l$Ii&a9}yb&tMU*=`piLYBUU=$41$i^cU<+yNc`nvQ^02+~iH9kbdjrnuD64{X; zU%U@aiXht_2hPq+!AVIwb*VlY5;ng$%f%y#XL#10J}vjOCNa_0g{bzhTdF{~eyW-T z*HNmua1B*$f~%+MXSj+~tNrOOeLi3Lc}{Kfsne%>Y9{kPcOy^W9K|(mA@9z~Xbeaz0ULk!hT#ktd5kqRQJ8QU-ND5{{fTSEqbv(v$gJReqp zYX-b}w|LQIQRJe6o+>c8S46F*vB}$nlu&Er{JjV|D@-qZO=||4Jp70gNzEe~-bhXl zqYrT2vXYy_@F0DgEZewR?ehZeVK!+WDO_AgepXwtp`nyHxNU3=gdzcEqLSv0HG!g0X=gu;;3CO(k%-#6g_lM)?AaqJ5 z*0%|y3@;SN>Z;kZp8R?KAN<*TKzb0#EA-JFz8X8?e|pJyIJuy><$ru>7GK&dy;M6w zx4yRM(YGSZr1fT)+}#nn>|1G9qi??LlYQi(33V^UBh6e{9IJ1upS>yI&OaYdsCyCn z&*x`ne-?f39~H*cJ^RZ1{150QG$^0#knw;MV%eHe@T7jEZZ%d=vXXuI{JzHgnyD|| zU@Is8$r_}&cJ49fGEZarYLIR^m;hIq>;^JDH2Pd@zHrBTO{0a|sMN=y!k-G>SSKwu z{_c;R$6%%SZ^!`<1q7td`~Wf{&PA7OAGk#M!-dI`SdD(JLl;PbP{y8ws{Da|N(REE zU?85%a#ZcYm{0dDZA|u21_`n1OSSJ99w0C1u3JfTI6a)N4)ra~?xg?Q%EA9``ykuo zC9m!suyyQ3SMJr-F#~)OQQFf@eu@tV{z*ZmnZcyOjeBHFRB3>eWjZK`TN?eN#XUjK z0@6yNz>-Oo;ZIgU(FCDOq71fw`b2+Q$ zq6i0D7@Pp_VsjqU;C%;K^dX;kY_b&#(|Kt>A|B%yN8XGd!w-oYz?!w3F1@)Q>v6TD zAD3fM3mnb1Ur>%?u*uejeG+%D1>ExDu~k9=5l0qQEm^#Q^`ft3Ab7lV1-kX2*u;ie zkhvCvc#MHZo|=rmnNoh6w}3u^aZ1lc6_-31&bm_cdcwG8X`eqc+18n;X61j*0KI>k zg^hZck*)c|<>f?VF%QOcJzu4>Wi)8r`E&wgwZhI1>QDQ z?8+wd%iK04T^oT+1Nd54g0V}sb)wi!>P#(&H7_1Mx4mpxf96b5qhA&HnC@Qmsi>L2 z#>a%~!VFzKQwbUz0ab6n9eWq2TNV#3PvD~C?D4O0Ke4pui_dfd`nuO3Fds@65@j{Q zBbJJy5Ajx?oS1yI5K;{B){=xnc5X#_FIO;7NnAb zeI}CT9>yFZX&#yN8NPoStyb0IIcvPYayetwffRK(ax{N{gQ3Sw%$ny@T6xU?c|1wO zrU64e-!O)DKOqWu;1JDpfIIflW`rO`A}9fSqa3SUz$L}z$M_c1xE>l$aVH6s5dwsw z$Ez{jK8b$%C|DQL7sylj0|DE>mYMz|g6UGdpq26y}0fVgfWUT*YQMX`u}ySJX-az-zt2ChqUu*9LttbHT;4J&8*83aqofO z8wwp6bbm08uG~$0)&ZTvOo4JHHKKStU9y@;uG(QM=l1Ji7r8d=uT6ERx6drtpS{CH(`tT3n02J&3Akq! zTQEaAtN28UH8@WDOsR-s>j8-ahxi_Pg^kL3}XyvMI_KRp` zc`zID-yXFq?NX$n!8>5W_Zg~} zbZJxqjNZI_WY&6~gk_*tsf z2x$jiR8eITNJw}J%Ne9ku~rgEiL!lDHS3oc_AgK0fJu|JlGs`YNJsp&H%mumTi~pQ z>y|)sptxxBA)B^y^m&vhGPI8KBlT=7j~mWhPG043!^MFJmj?1C8!Aiz_Dmk`HkJc? z2FNi*-s5AsC)AMASfrQDtHNhcp9>*_w2qWSL_7n*!& zwDua={!1)h>H_(fYwtM{pV^UuOHK!(id-|P+vI;_Uk?2{`*Qxf?8_$cwM}IE^34J2 zV=#GmoN2F^Xt)R&2}FTlm?)!C1=p{zzZ-?4;e%kc<=x$}cXxNqcle47KoT)QNCcKV z>JylaM-S~mljVTM6XB(Nbr1!9y5kaD+D{u#M;uKFyx>?@wv^}(28z=f0 z?ii&$nm}1J1K~rJGxU%tk42|HWEKbO89b(f4dH?k&NCyt(7N>8xE7Il5!w`yrC(s?(g1%`uc;BZz5&R1Tw^s>_>I(TVP(mk^ z5*$*XICxe<1|odSzjUV;`=NaI=6p}^#C^%){kF_HOE!t3aV*NMd3(ChCc3c;PbHFt z4l4H9Hau0FR=6fq9$*l7tiEmV>)WZQf6bAY0ym= z6qqoOXV5^+(E}&(9D@Ba^z5gATIWBdD-RMDCHhAP5s+^S6;<4&9`QF zVs?7EY1s{Ao&wuc5Gh&*_OpE|(CJ{>;9He*&NyTX4n9o^*=nR^_k6301 zh#p;igMOT8U-t_A$}io=2UXu)d1@Q5RAk7C5VyFFYdy|0?Xp5&Y7%v6WG^TX#ffRU z*``O91l?Eh+X-HRH4vmalNA`p#!T7Q!AgUNp*fRO^#^*l^XGo9`x5V_L}2kjHAQf% zR0Ux4qVpq~zJaeH22MCml2xI|aS4hIcPpcozODpgs(E=`X}cRB!n_QY905@Z>;p_t zn66!IO(wpz=%(+$fx`}vfg^W-3|A>Jddg`RPm&D!3M`2Ry=0Q?g$hDDqgA{9KTZMh#rQ4yic^YTnpz=*8 z9`W{n2K@d0XMhi#Q>s4C^ohALnzP@?rW&oJ8^OuUHax(pz$fih z{i8&sTL=WLL}t^xG%yTyjpl4CXRq~xsb{losd`Zy#7~27-OC(f`X5q_u4Wq z@+RYt8E^Mfjz6%F!rktP!dJp*VG>)NNZxaZ{oW6M0M9ST(bo^AoUz~14(ZzL%}BLY zXK+OTdDagQzIQu7LuhB*KtG8wu_3hJ!`o8%&INMm;Fq+TOU?CkjU1cwbnKLeRR`_l zsjJGZEnUN7F7!hx2o;7=bFa8WQgeTIi9|nBRtrCfX{2Od-`?NkPrGck8&5X62elT- zqSRB2KLRnhb8UYaDX5682=KCiFn8nD0Zv@03}-{MSptC~B& zB>)6US*({B3MonUi?hgH3K#Tq;PO=iT(b2aydL|Q-D2p)Qvf1qOP}D$iKK)NQ-%kt zEjim1MG-}@SgTOI=jzu6!O8&B%KnYujyKdo#_N0AE%tU-zBVI_6mA@!uqMu^!lO)fzf$)cJbyb9G<|R_b}@Vj6-HwNYQOxj{6OiU}mdLDLlCJR=Pk}RP^EL+)IGhwI@nrtHMWl-z6 z&y>ed>mJl8TtyDR#K~2&1oALs`p+Wm!>XR~TO9g@C?&{J@|1;8Bu`016;eq1qY(Td zRVkTY=z*8NvbvqVYVi}r%NvNfpLb?g?=)Pse??yU-6`%Ec}d3p&7E~Yu-t1Wws6&C zky{_A;kwQfcHq1L|C1SQQ~8MX?6%m|&Fx2A#CJC6K8b!}CZE)yc(TDES#KfD_I?V; zSl9_KqY~pemuzFnO23145QZ~Ic~CCjxtF2IZ0|qy6{iO5?>b%CmTK#OK5JLrS#Jkn zNzk_DnAuE~$PDfJ{>u-1$>!gjJ_awztZ-rn-UmX8QHwz#=4shz`P2#+QBzhJSv4WaUIarqKEd&wM%;CLaSAyQ}S^GZ3y5=5&sm6 z$D8O^rrm$-W9Eqjh1R5f4X-WRDv|K=M@V>IrE7dn-se-&WDOATiS1Lpf7uo z`TjXK*gMUd?dpj&RX2tK2Owe%j=q|mc!Olqlu^kXUz+syE&D&IQ z;#nmSFc}BIVG8CWWO#60hcm2ZFN~vcK|wpL`#EOk|7IPM)LFqJ)J=@f1$?ln`F zmJS!#=%HMXYsU?T-!GH;bAZ6>g$I@XL5m_|Ki<)wSNDNTjXU|L7s4C#WT!oMO7 zBHR^qQN-{_6>0zQ(P-iF8$NE4ga{nWBt<*~J#>Ql8&&6A zW5~0gve1{jS5o43b8zOzB|spX{GN>EwPgbvx}RNcV~XxHZGXyYJ=Fy1?r}V-Xk>sJ zQGEt|cgGEImjGP`DS3jYAxSsJhn&6IL1ZnSE^k?c^1&#=BGNl0AqOM{KpCFzvsjT3MJj&hm$Y5ZRJ=*5u#G zpxk%4x|fZy9#B(c{25$k^5jM48rO^)og%4wu%0d$9&ntXZGAJ=Kh_BZmM!>rBo`n#@yew<=||0EAq-l8q8?(n0;H%Zv=(vA>w#*@Td=VoUVQv*Q;5=cRuDhc>P zP|s?{Q$Bi%deIp%EUZ^O42u9d7szT%?omB-P#$GJ_uM>pi#J2j!chfsgZ9>!D zA2OBpDYfL$l^b%1wK+^m0hmnv>L&Vu5Vk>8L1?nq+aIQaKbbiNdx0Od5w;%U_otMn zYxIP9Pw=j!DA-uDdoZ1b0wMs=#xrU=(moqB{U!Ef?tM27TL+GoEb{IpWL86gQC`MD zb&e6RW9J2VqNswbuha-_?$SGY_r2-0ahA^LK(>o7zQ`vhW2{BJRkIY+e;syj$O$DEkCo6Bt&8s0u*=%x3 zHZ<7-#%v`Ej#u5tzjmzT+z$w>VA|?h3|W+M+b?u;#@U;U5Bf!4Co~m=@gTBsda?2j znc~0^)0vnksN=1;@%>2Przm!1zL1pG5J62~mmro8ZeU43s#a)4UdDMYoatAZoZUUk zR}FUc#J(PE4VOKZvirFqQ7dd|ocyD;jUhc0&EmE9a1e%F5KPus)m(rXPv7YZ(+z>= zAgZHT7uYhhOWxzOv1DN;O^5#eJ!WBBxw)cbrC0Hd?IZK+P?TFg|M5boNS?YNTStNU zLS(Tp;> zIMqGg(PVr7@9>T&f&)9a9F^M3_<)P@LFyq<^Si<^)pKlFn&)I9f)WM7DnMP327X;l zwl<#v&Ima2U;qh`xzI~{vaU#Ku?zOfE|Fp)a&D;89y^$ySjCFP&<}x$A$6mNgrjZ3 z2LwJ{{LwTG*9|l2@4{>%8-~QJTsf<>O`_C0b!KD){<6^t;($Tv0ewD>03ChjeC>tu zXI;bq2&f|=0;*OLr~Uk9Z4io&vJW)PzDH?mKpyZEiG;$zq(&%2@|HYH-!^y33J}a< zQS@BS@>u@5)|PJhXltSDyL-W@nn%Sh>)mhCI;qoDq5yqk+cPea^1~Ut`)>N-eS6wF zWCr@sk$t;{g1NppvBrIvp09_cYSQO4|86gwJgcn~yo6{|K@f``ALOpf zbp*;+iBv)AP<=xII$M76B_q8xsi4iQcEg7 zb>$eQ$}k1o`~S<8^KM2=lh{#ee(*2UkcuDK#$bqRg8vJ4+f627Uo0hM91YO-LbC4S zus9xuBBy=FfBw0(Z*{3e1v50lpUjs++H%@Y?6D6`>sC7p?`^(w9jl&WGj7|?EuC@O z3Zwne_s6<&ri(&W^sh%sD4Gzp=x_|b`-e*x2QLBpk(55-3;|!xu;~AdKqLf^?y?|7 z5-81GF(1_vVbd)Pz)*S|ll@bj5yb+RC3SPav4s3g1-mWD+n+u(aI@;7G0@;pg-kh- zY`oa$qym1ggjnz0ggNe#BbF)+=S6MC-WsXrBT^z)R=H^9DL={v4vWU9b)Ggqu<`D- zt^-lP9-qTE&?SfZmzN0hgsve{0O^#g1`D;H-;M0y;sa-V2I862i!6BcqlY%{Fc0_$ z&?Se_*mP7hrk(wh8^dKd+Wa&E;zRTCx>UD;3Ra6O+2r%R(F#XT^L((x7occ>tugaM zS1&}R#vOR_!cb3l1W|V{NI0hX-!XC$WW6}^iTDL|*FDH>_zTD6e4V(;!xO7LTqteW1U&E41Gc0Wsw6k^yX zQ;bF)w3oVtheqMG#2rT^uQsoPA1|DY)663hH-OthOx$wBNm=Y8Q^9p$T7;a~OB&9d zcX3CLSr?er?l?+pe5;))%c zC`sVF7r4RXelz|C@leFBbf+ty6yKQcVldgZW{W7I!4bT5SFVzxEPqqZ^}60p(D<_# z5)$11mAhQ!n|RC=cOCTSRqk?R=d@?+1F(w-LBp0Za7_oUv7D+P4={GRCU1AlWc51et41 zgK^JsbQXF5l_4bR6Tai6whuPM9G`d*H&7?2AOkye`hLUgnBj|o2 z(0mJ-XSuJwHa`<#h$jJ$-~x|iTK~oTa^IC=aNRTFFdoz(-p2&Ty%B^i5_k@QZZf{W z`;!#k+72emZG?~XFuKLz+XHxm{{{WOtB2wAx`@P-_-j?@;MPAxUB2Mkyfg z^uh3zQX%t>c&y5co%U$mx0WCkWP>|@ooV+o9eK&JmhW--m3h_LE3iNg3~(XM z){q9YSKENRP^w_8b*z<6Q#mwGhWCur()I&ip}qWIXz36!kxGVOIY@K-1P0pyK{gPYachsR!14E4?Ie2LZ6BUA;@e zBS8)UPh*cuT4O$#lf=k09OnoA5j|LbkcSSI>nwjt!ZGB(xojctT}?{j)gPjsZFO62 z*e@~1u39pHnK~H$aJlPzo-FP}8}>j(_EU%K3-I^%*TZDv8LLsO()2#mcYK{GyAz}W z*v9}?s8!nhMfPsFFwJCpUedQa6p<|PuX1tjW$F772QA@Z{*-4l19ZP%!lR0{w^plBbpQ-c>Mvqnt8jd(c zE#X_)V z-zN#HsuD%!#{;#)nWw}di-#ki#*~4tJX!P`1tv63(@^w|3q6ie9>uU9^aAV$9TN1! zW8oS1>+|FD45NOGyXy*qq@Oz2n5wzjdL_a6XVdHp8Pz{Gmhz6f{tSXk3&_|G;m?#@ zQNi9(jBzUQt+WDfk@f>?Ln+vYqRpQrs%~y|ibDQTX+-rv!)G?f!PugeSP#9{^0H|E zAoh5n@y(N>fN%Iav7Xp8{3cOQl|EcPRP5b5R0;xCsRk} zKZcGjF^u|SKBl({>|8YvcJf)xpB*727`3%2E~@0Jr$LI#gxmh0>i^)UXPJ*9ZifAzmju7hdS` z7(Rsi8@l-ijBIHJMz)43G4xj*qThChix2&ZW2@hPhX+CPL-G%>s3mEzDIg~tE$UR?PS+#*Lhl9Ihu=^eFn0nLgC7h8E;WuV%>$Lh(|6|UK z?c^h*(X6INI14FQZ=A*<|NrvceDGb#R6SUJBM>YY&36k$5QBMaFFb70d$@{<7WV=odEW4^x=fp;@ss+EWVL?`gOK zCh>$cqGrJ2GGMg?oVLO}#5UemdL3pP55wdy>p<3M%78eyhkgt=cTr%E1lXkl?QYkX z7)A{-n;Jy-FvPE4z2brs!kDhWSbRel^ft>*0h+Qj*${T}i zHuRn|j6W~!;W`=fuo#R^=zGZdt(wEC5g~0yqC#s9hzwZGr~H8&&~~aPf)WTJ{CqNR z1%bTob?I^fiScIyA5K4zOGuK!oAjir4K{*@sK6kX zMRD$OB@(iETe{Fr81SHg9->t4Rez)h%Lgp_$z)R@0Pz^vezg!5{bTZ;gJ^F%fCDzZ zqcL2Z(clsR?3-DN5r+LJ3KvHq*o1k11pPp+8{9lt_;nl&IE$3z2H(+7k5}M~$utA} zd`kvnU`<3jC(|$xU~<0Nj_EJ--oAYs7I!X01r>HU=!2Ny1{wL7II!54%e1;=54?wh z4?Kl~)_|d$j|Wyl{c74qG>%*{7E>~tC?Nok*+gjvwu4kn1hf};s+4W4!^bsEHIQ5} z$Cz6)USu3$eHnJ%DGhO*%!bO_;ZL7CbgyykZXVaFjs8O$)})O-r;R%p=N!Lw>`zpI zVSm^G*z=9HORk;q?ajBFC8>f--Q6#=qkDkiR*)w~n;;^p&G>08Y`~O&&PFw8DSr2( z!_WLEv?sI66^h!sA2Q9UndU~TAb1t9Bn+6S#M3tgm=OBbx8{cyWQt`*jq9}hjB?kA zw)9rlpw2}V;Ng`;8hwh>9+OMx1p<3oBruv85VbA<06|i%85-bZCo1r3- z*b&0uqZg1wrra@x7XwB{N1H#u_SU!c|gwxg%< zwQCe^Lv1L)#*vrmM_a*yvKH(Z3R2Q0|7+E>2M~!7NE!^KMT0SFcb%4Ko4HxJ)&5l4 z=N(!xur34+kv$qavxV0pWM8UgiCZ%0uGQ?)2!U}L@GBdtqYbS&N)l|-*+(6c$?zY* zM@15z#pA|@KWQlG;1}?s&%(mJP@~R*9eAGV++Nr4`lJpW6zKJC5MrPLM*I*AUeB!r z1nlv<&~w@)M+Tt|vT#|q{`bUtpoYYpv`Cl+a_Wq48HrWV#Tz*bM@1f_TO}p8#@nDlH#ds}4tN1u{lJupI>2ItrGN2Y#}AI*fLP{nM+qfM(OW#S&@% zpj&J$Hu>Y!Mr#dUOeT*K4$4B?>*2zSR9lVv%|te>yQHFU_pXe zHa;Q{5O7apU+rv1y2>-B8~o=DpK<{Os*se{VsDnXA2wZ(MQI&Dbat|@W)mso5+8y* znRE>{N4X>ESRFFVb&@!j6d@bN<)IL~v)}aKwF<{*m?ZSaZqWb7*>?amb+v!r>;OV; z1|cA_i4({T0asN*P?0JUabOhq_no37+F zZHL)sxbK-%>g9&sVPZ$=8nZr(Y?|Su%uWUbx=3RM&fK|v{YeG48rv0i`1UW|w2fWS z2~%x7;C{UQXx3x7u&MQzfNaide;RDg@Q&Aq;(lUD7lN(EB-6LjLy@7w5>0>3J(O%B z-Q&RntDH#Y7N9Pl%r}N*$jG7uQokt0Hmp+yb-~e(Y?h$}Z}d%??Hl2qG{Y@IQWxv@3pq55!bh6t{@?1JegYZvK4W2OVm z({f3DpVb;ZRj(It-rM!J+Zo4qg40d_FY8*y-S()1Qe*^~JES%L3z{4A-S!ndB6jFH zGgu~%qDY_Yid9%iqvotaMCt)X1%fz8lNdlr0NC=^uV2H2fDpPHwyis`C$${VRZqj~ zJtzWVA*$CBB|Pt0txV++;#`b~*hD*JV1z)7Z-kq6VjxH`2`zkf8K}e7dmch?E|^gg z$#IJ}49Xy>VH_UKEQFec104%cK(N@t8adr3?k5=A!U8;mWF)o!<0ZHevQGy6XO_}O*ccbgsU&;;wZX94&C zGld>&MTo*@g_>&T#WXWFMWiLLTO`sJ46`+sPS|WIq@lH$_bqc@*mWAMb^nj=inEOs z7lf7PURG8+RMs>fI_+3({ht3&oElM42`4$e=M-^jBngHiIJo3>o9g37vMrAMHsX?` zilZRl;SZ$8eO2TzCT^U#B(9L-5tvip>pssVfb!ks{#BhI$KojPC^V{GX5G6V!KIg$ zID-06s(NWD2)Xrp?)_KoIvmRBEF7~P5BNWX%eK!Z@mE!wlRS!x)@^+6UjQ6mv8N>Z zv!+N>Mz*yN$+3B^=EdtRp0%MvGArgQtiAlh++NM*lb^-&*JlJ-aN$K$SC=gua_O`A zGT_W{sV~Jl4dCCQ+LN9T@2^HEKAkwu{6GP75ua`47Y;W{YLKxTKPNCM>jc z!W}WuY`V|LSbJL~p0m#K@R^r5`or_xtAJ2lfFZW>h_|9PV#t|4xb4#p1Ljb^>w}On zv2;z_@>tuo&ghW}-R<)0yLG=lE&d>c^}T3ml^B1jW=?0d$v_;%WImU%cZdFqT{}>d z0*gmzzX_ZDuev57J8l$@VBHKWVmg1>Fyv)$TW0s^P-@WbVy7{&5!;-Q8kzbF$LW0f zWeyO1(QtZ7XXrB@!e`9qYp49-e&6W?h1W?`i1|qm)8X*aJu(o4rbK@ zWfd;nB0%kY2p+Gl;%HfR!BHNl+P?JMDCgIy^;4XyZwF&Baf^TUN02l@i8?rZ&`-80 zomn5Sw<%}#IQ_O4{*LeqJMWo4TwA1DHZAT=$7R#lOqg~$k@bhxXuY~m&`{x`dhUJH zyAdqoa4VI2y``TS+td!q^7{dBeRib+=!?741B>yk@pXoGqu%YPylYW|L=V$TABBJ& zH%AESij4tMm4O{+*-J0D-?s@KSF>C&fr>UOsbCq0$-hphRTp@t2utRK@!|2k_s9nf zm7bNPnq(;u8vG=SL=Fb7aT??t817^VjgM|nY*>< z>BXHX4#Ra>Q^DoZv(Ys_cX65EZw{aXDLC*tJfBOGke9%RvhL*2E+yN+-8p&)!?o6u z0;KQPTbzMb=DFnlHUdQ*Cku@-u~Hy3D5*6B@pjm!Ir+i-vEghRDuaWXnhm`@u(K_4 zz&;HBvcDge+8?nHHg^Z{eJ>8rwtq7 zHN#;ibxQJdC$&$)lQ4DHpEZimkCLZ9b?VN zSwH)9;kg+7i;3ztkT-5y1955G`A9gw@8OO75ixAHh*N|?X@9^I>sxQA{8t_nu+%=_ z(Qu?94tPSf&*xc{d_zw1D+w&sMUu|ubaOks7p|7=6P%ZG$v1x=e-N;$ zCxAok#%c`nW2a6j9q5O9T{%F2Cc?Cynl2GaIgE5IMj^~l%Zj|SzgPCh!a72~P|bf3 zoEXH*xyVnVyJ3eTif#)Jg0dOCxUTWDqZR@Dn_44cERh4 z!7U51>cC!-Ik3w>Ajf7q8$*{?%EEXHc03lP>ZL^Vnn3ewFQ~HMSQDLIqQtM@# zAFdCg#yULYoAc=U1=K|SGW)gEgNI;=$#)?3m_i48EoKLLC7*T= z)!H&#LqD=*(4i-@*p^s9s|QcX{8N}Zs=y6V(4#t8_1WIno%?ahHpx^`O|DlgYaNaK z)EsAV2h$Utx-cbXSrLD+ccjyxvO<}PPnShHXL}1>${11hTcL}AOWE?i{nfc_tE~3A zGAe=o9`V(juN*5Jt|%F-yvoTkP+X$rZ^&@3C6<_9YqRxvMM9}kf2C+ll2sA`r%qUk z@tSk2o|1m>Vf3@3q(G9zPnHVK0Y7c{6>}Fug@t!-1*PpNYE1&Dd8>;$J8>(EbLQyoe zK%hw*ErrveLX*HD7uBL@?t(z}Vx~o>N#HH8=JusvMf6D<&1Wy0EqqM^8-Y?3%~{~e zUYu?T&?In41mU7+-hwcVDm8&`neB`h6GU7fyqoq;o;=(`m1h0vNpU(h^kyGone>5T z1cv>4vRgjVzVu`lOX}F2CjF9USV;4rU^kWBrc^fx>2#aC6`PePo9C(XEEZ0^nc;_? zZMKN-rcN@2)Z}^JQ3K|Dv6&$9n@s7aZ(CEaTC|ME=EbnybZNY4b;VfW1RkuNlcSu{ zmK@AAFIYIiA$o#)(xF3x5?}XSmOW1>7-PPYI^c9$0uwKqGIz=c=KV~~#4yQulrm}N zDTD|y&Gpn+LG)e0ouz96;IEKZ7$=Y$#nh{n8aPO9mr-i#DH z{S$&Rq5H5JtMf3Kl{SR;6 z=Kh~R|FhVJZS@7Wn{~s}JhIpE4-8yy-Md7qhg!7gu6-Y-lAj`HxpBlgO6!&SLmOph94=_4T=@?cF6xLk5OZukG`tkv` zb&BNu3_r0BTOH-R+q${w41-p1!qX zY-)bt#JaWbUuBHYv_IwTL3j{dZaBv$E`aPnLy{CFDI>Hq8EH zAzNN<2H2f^@BP#{&Hd=Ek?TYUMy_)MB8H!MffRw76v6G?`p>PoMtQ2m!v7&#Fmz*8 zm{lo`HtG`e!D*xAsackQbJoBaMOB*?ggZnh3oT)!g+vO4*PHq0MR$ZX+#06|UQ4aH zIYmNSarzW-hqIilF3eea<5Y?2WnB-&S}O*bjY(1{TJqC$WOT%MkT&b;zxN8T&@ne_ z9jX$Axm#Y3H@ScEDWTx$@vIBp7b-X9>=nH7G@RF=Lf;rEG@0azMUBBWQkWHqLUqw= zLE7#={yomqxod@uZ7$>eWK;Qg)3IO13Uk+(O;`H2!3WUMrH0>SSmBwBX{n=jo?>R? z`(Y@!AlVyxZ!tD*Y1tMJaoWayXg?lDNQ&$DOU1vS(9n8RO^n%8o?~gV;?!W_-si`E zYVwNCwRi{;YO!)LbxTz-MfnrN=2?s6@=4)RH+@^rNz;qBryj9Hi91}g z4yQ_-Ek9CfxYPb$Rl(}4e^kNVr{?3ozQ9O^p{hSM>rK$Ts$5GX8E})GG0fV_U$@p; z%E(CJGn6#b#GJc$)O!!4sgZTnxBXyJqjZF-sq;~1xA;no1xC-*a!pab`UU}K$h_Cj zZAY6Am;m05f35F{<{FeC-&47Af_Fv^28m06iF+cGN3FR|X!cqc*!Vg$aL%9SPRPkq ziu^DXI1UkasAqd8&3(Y9YGltcDr-)#l?tJ5kvjF_8TnvQOyVp_eZ_7pCM*3=Y!l{(rcyR#A(Y~6-Z)bNHa zR1ooyxZw-vo(2@EcZGC;Qwbz~V1(QvN0#TJ3AryH4f04V~>6ZQd+B zwZ;k$kGaYjrs{DBTy{ku0fAm5phn;!bTo>G^5;9oR`)c96jpaOzN+@c_1~m3Iy_PD zG(}N?WhQY@bsOVbMj(N&rl!2i+svz)3*-`BiNt1+|zoDUFg;4cec2ss*HKV{spOUz2 zV|3g5RSO!@Kj_Av&9cTj81fy+!e}BDrRim6&ShCcvLr#y4YBSjU8LxjBr~5r3m=0Z z=<1tnr|F+pSdFiqh^iQ^!U^CLvoJz&#(vw6+(yCb{b%@l3j0%$EwNciY`xu8KZMMG z+ScFjBL%XT{*>YUyKQjS+j|9Goxcr_l#xfaP=f|X^=)}7o5ax$Px+W9f69*_0wtY> zq$KXA?Rh7UCa^_ZyF3L}qZ7CN&ZJDCkKlblIZqaD`}-Zm`|mtv-`VmVdB^qr zccf25Ti(4x2~NM4@3;1JHjsA$-+#yV$-=^S?`Zm-d+(i}S6Ypo{kD9alp*v9d;cBg ziRi0$@8sWnPd3XAAIfjy8uCWp_utSzIkvLQulF3WPgvg{z|x4?(vs@%HykHr*)WAv z=EUWUc19b57@CiE?LXtZ%HME|y*-ZHUif+I?W?QF?JwWmP9V3pENs2qhrK;&k%%f= z%6eR)K^dTi`pqnyGs%=igFE!jp;$`ne1G%2w81@zm%zO&t6K5H&!>zpNw+S#or7T| zV@Koa(qO2*jPiA!u2RyK)5hH8($NboLUDqdC>km`QNodfYSpCTd1;%&vC6)`tMk3@ zKUGaC#0g2835BRB^*mF#V+@Ya;-?=J>fPP$eSdpKwryv68oW+lz4BZQuhUq%C1g*B zbvaGl$TVzt_u6+)W>jl^PdgstD&uROn`u=O;96kB5JyuSTN!WcJ%+=2N2T z+{bsERZY=L2ev6KTTiR_0}blSmNgEB-j^!~%e2>@s;F(|CdFG`cs7q3ud&{gb$5@V zDKY-JP$HL>0K)9QwNFh;4c#aUDF4Z`AD7sc?HJ@V$V{8c6cW|VvRjwoqU=!i<}!I= zrnK#YKH`#mdfmf5jEsl|-wW8h97SdMmVArZVm6sgaR|KoN0Xfl*Se}qE>YnC8GoxK zQb<`=A8ozffa}l1B~LXe6qPWtO~V(oY6czc{$T@QLKDhhbYriV;d%f>LVg1bY1fcZ z=q1)(VSk%x_KOyG2&m1*Cl&{E5T{m~WL+ba`_e7D1!w(*MwIDxLxwxqJ9sGdO3U8~ zi4q*R3tENDw5;~gB=(ZaFGXQyDp0qXcS$hVn@nW|6Yf?KFOiJ>ri-!uVJJclM2)hmjWf&^?9f! z)c}Jb3s*ID6gXSo76#lB^2wJ%#E0o(__!y&>b6X12Xzv2ri1$4h#`)hZWRuZb%L${ zO4_D*S1i!TKt*F2d(9a;fA%7Egs7{C-UeHuAbrXeg6eNtbh-7>Y3JBSp=%&7Vz&yz z3we<(zGGna^2I+h+t6BH>GO;8dyV6CUQ43bD3e4H6XSLjdNYT21RVXxu{IYo&KVIk zCDmB~n_NKh(js@&;T91sJ03X`MLLoPCZvlMVY7<`JLx8Kr3Lu`y8_utfE*9EVA}tUF|*LE-PYpMM`G-3=d7y zXaY2avo2JitF?uBojXT@v!Yb(LtUX(YhfcYje}AGGMc-Y45mJ&DANE_tSR1$*r|9MFO<_wzE|q7RWJvK zQx;Q;7RutCBb_>zEgcwh^jW8lIZx$e^$Bmo7Lps;^JPIDf{c#Ec@D(xSK3Celrv;9 z$5JPSL#0mANKc>3;*;V-J3ynO7G@w8|ulnkn-W>r%U&XQ?);iU2%&Y!2Lc9-mRT2JatZ%5u>>7wNk{cvO~uXcJY&8VG|x zlx!0wnWm&2???%}0?U3e(u8avfMT7agv8*)3kLEQqd}F!gTTi%D0vK95}Xf6{$#zG zDO|{dn-rsAorC(@OC%{9*d5pc0o((yi}27W@)^2-x#cxfdN}P-`7?FzzxqvyWBrBfpf82Qx5rgi3d_(^ zB=kt{I*_^38vnb8j{V6F90U*w?N7U2uTRc^n@VQgrcaYjjebZ-^QNepRx};#4tFtE z3r@r$zEUuBI~zMCoj!aD$DXVSZTDkWLIn*J@Q-bAxAEl6UWCoWl|w4U?hN)`Zm-pOIHU&EMQ8S7OK?*Y$f5sv@u95;Via>lk3C)~ytC22Nd6l`Nl;S%Y^l{DqHmg^W!hpWp%VZNkD(;|7;8-lI1Ue@CJQO;rs_J}KoMBaWcAu4WL_#?&0?k~d(tl%~B|JzMM08!&g!1%Y_@gSZQ2vVo{#W~za0MfSo8gV!jm1g;gMcO;yljtMN<@d%t(Fz&EbCC?7C#m8p}NR0 z0}4aJu@)^*owbOH98;h4Fn_ zmi0k(9VM=0W?Uasq2Q%!Bf3dg`^`WmPOWBrVb~itpV(FXYIV9Dzh4ocZh6fTBKiBd zqZ4n`@eXMthU*f)iVU_#zdP01KQM%$%1E1@upHQ`Y)4rg@t(KiUJMhPFLO z>M+!xypzBQiZO!Ve7VY@z~R6cP_S*vlrE%b0srQckpp5Kq?S-Mk~Ys-q0l%jei@5;B%&?_g-zes^>90(QOYoL1&r6z%nj_;!Y7wU^IZ` zB{>j$sMLyh%0dXrmI5+QIO~>o%X43lIKdys$o+9pP7JAS*xmgP5Y2YevNY&$E3Vf- zcgFTMRdYrA7cdI7%wFhpc*F+f@sj)6U}UV+kU~{tksgT-SxUTdMd-xH8cB>fB8#sC zAnYWH!viblfA-w|OUmC^x5!CvEJ#S3wzL;4B>&li?OCAZ@H{3((lqB!8nuSTi}bL4 zN>cC%3s#CL+A0M9Wa5Xy7C?-t0eOde(OOg=>{MUt-9opUOCd11gzd9^wcyEehKrPP zEHg7&pc6~~r#H{I4@G?eg+ypO?g*7{AqxOkI9uVE9~fe`cIDL8LKXJ@oin-Or(6)%$J!mT|R*E{-Sv1lx7Ge$~U>CA9@tu^jSG$psc znK8tnzlgln+uQ!yF#BuWS#GZk_qD6h=vd0I40l46Rpk|x(~dleW3ik&3u}j%EbW|x zwO*+$k|4f)Z~o`_zV`mF@uhpS9-UYu8JL{8dSOEwHskGAoAve=*pdLSl^iJXAVs#; zlrhp_OT9gcI zuAM~NY)K(qe-3mQisWNU;XTjP$)ajcPlP>r1Ltmn28aRdWdE^N^Sj-wi)E=ipoV{o^(Artrq% zkiD|OZ!NJ@(c@pIDD{n!yN@N!=^X657cq2qP5KCVcTF%4K8mb!*p)G4X~ess)v!~A z%M|%mT{Z_8h3C!1JCPP@WaH@gZkiE>_-I`YPadkvi8_2NJcqZzU)O`T+fTj#(3ukU^+sd@vr ziy!X-RYnA>57Yde>&}tMZRqx+*_qI$pjT^g_x)=oC9c&W1Chvuzt-m%5DyT$OJZC{ zUYA7nwTg>^)mnV8H~h64cbX0DPuxi|fDP;Pmgv3IEfVb1Xm;6Uv3aSR?4i1La5QJ- zLujQvv@=9A-yVYWkzDpJYU-3Jvj+siM~mQv4<*|m69 zMd#Ig#t+#?%zu(<`jeM=$ew*X_XoF>iFhet3}^){j)68;yixQ}GM9&st8Z=ZqN-RG zf~p8{`V0p+q=tS4jbu02ez;^ zUZLis>#KCB&vyB=0(VdW8E@kTY1X~9_p6J7Rpe(&voOtgcf*7C_YJ^Lz0^f98y-ql z2`W!QYm8Dm!+Y9NTkqdBM(Zwe(bnd^()QAvtn5m7i)aNq?<5PIE}BnShUaZn#W{cXR%k8i?>eq%Ztso<>g;wMJ0N z0N-1#Va6=Y)wgVc zXfnet`~{5kW)3n1=kaOu2+>p0CvH3p6AApg@ZyE|$RP#HB_+jXDoTq^aFGjPWBAC_ zfLGIJYI1lO&f|1sOD|{xA zJKCjsCK>72@Z7%02l{F)>g6AQIBR>N+-Gi={_($fH%9IrgeIlg8^SiEmH`|B zAJXm&(qMl0DdftS(7ho&NHHRx(K_wY5(aogpm@Io?d#`1&A3 zkQa5sQ`0E}VO>kSacquD%= zuv605wiwOW%&_+h8TG)n@rzstE;DmmiaVGWKL`zdLj$@q8c_19;!w!KRtECc zayQf^oNb!DKg1Zz!sZ6NLUTApYKfgwR%=mUj@%8G!vL_~7ZS`nOoj(!|B$vY6wLu? zERRCEh_54$9R=8tq2*zF!zE&%G)6>b29h#WXnKE$ju55wk=py9MkSgo`}c`mozKrkz)%(I9oq!ZoAW- z%0{FT8P?F6%K8=_R&a^A!}mw(fu&&CKa*>0`nMMRkDr#Q?w#(4w+JRWruPx94NM>T=J2<2Vwxv_LlZ5yG^xK(xg3ix`qkD;UCXCO%3iRAWDNtFYs zuAHI0i}ID!BnL`*^WLU|lQN7{us@Pa-#utOz%oYrd6V84YqUVXlnX%ab>RpZ?9<@-*8$Xy<d*(F2*t>niuBb>euAJx+MQnDN$CfO5&H>k z5-4VPU}&-KSO!(Rrd@fJZH#CMzhX?2#u=W)AOS^Q5HbFttuD61{)x8-T)^B@=8_G2 zbA@$TpWl_((G>n1#DPcNqM{IZaJ5~-YT|$}^}O43V~Vt>S!8XOBCLf%-`qTHIH)t) z-K%}FQT(H_&swYg@aZ>)9HAVd;ksFz-jE3^ZV1kRKPR-xxDkU?FDuCbc8A6|i&M=L zL#!5&Q^_|IZkYRUlzX2Qisn(4k9B>zVVedwwc3^ia5w;Ij-)x|cu>pw{M_tJ}E6 zPZT6^j{P3HsASBXvGkr}_nDbpaJV_nS=UR_y|Oc;?1M+=I#5~LB0Djsf32#@l?(Up z-wrGZJ-wUWXK_UcaWFD47`JwrfN4*oVA3E=NHZ?AgB2s6WtXZ{RO)lAAzl?*E}|-J z%EBPd=gYgck!H{~p|WfZI8o5v6!5`_R=u>T`qS9k5zc-~E@eshcp&1D({}HHIe$X^ z98VJ^^bmd!$3wHQ8fh`oJNgC0D&w0+>@dgNE2MdB^h2%+bH9D<{Mmue<_xHiTgwOA z?kp_mBfUS0AC$=2Or&u014z_7SLz<0@rNwy>&s1Fp0a#!NU~`4aHKtRsOR5lBei3P zSu^aMFNv{Hdg8R3ReJa|ASjHY%p|?A)cdTPnd5XmZ4f6_j8aG#??SNw(qokWh-k}? zMCIY7V@spB$#)N(`8CJ0h&A6h19EF}wh;3$b)J}@*PEmn2QSySmHk8JR*5-Fa-2ET z!mS<;OwvoPWkmjkH;#YP%og6_VYexJDOPy=Lx6=_|91k=(hnICn?K4mgP~fKd#5ef;O91|N=(hHyQ&CTg$0F@{xBMxdn6(Mz=r z^0U~j){E6527AB2a7<*2CuT0QFWQ%Ta*jv`dSZb>On=8I^7#t|FUomgH<-{`-ijEx zH1rQ9G*h7MbtBlm5y9H!MW~e7u)OPmAuM3M?z6D);W+gKE@U1&m)<`2!a_#?jsHz3 zuK5kOT!2FsHbB;~vT7+CV#uC!gkiS`n+bqRn?gNk6>njZxI?wu1UK#-?pn@7t{W$2 z%q=sMd&%rQo^p}(rTf7Oe|I@2i8S)gk%upF11R&sTqv0`&T0!24gI~0YWUR&sS%S{ z^J+WCUi{ne?aT*D68va9cEBJ=LJKF0k2eZIF-+lzJE#Y(me*o+=SWr-2)W#ZwN2L4WPcAhK<=74%PJBhqq@TgY{!82VL|m<_b~o^9 zx@LExIJHP+yxTDN+IqKq-PE^ZQ<18m{FH@mXAY0vH+<;60kB+C)KUZeU*n|han^R_ z`%#?K5n!NMZpx}^X$htw;#LiI{Rh}Pnh#0a>q0*e`6NY#ifm7@vLY^v5z(KV#_)fZ z=r_Kb+031`@#|S1|AUO+ z*qHNO!JY9vDm1H;uIyJ~i9|nrKOF#WxX-6pj9Tf|4Mt64ATgiIE~a9-4cPudq(9^V zu1^llF9Z53P+ru-Lm(d|ql}swpE*6Oa2-v^3xdLN>v(fJ8FB^%UXk|^IEq3ZT2bk; z0c3v#O&imT@m*AVH9ZS;2N#6sPkyYn7sP@S!ZmJW3^|l2oW<{Q=?CwxSzWD2844;H zYJ}`=@LM=U^aHsaCl@&qxtgJIK`X>yTMA%!OL|I);ev3Emy~3VkOl|9#Cpsbh=Mwg zkVzIJ(-6p^UFFFQ02vKMkEe$=P#pRPjit_HbXX%YToumQOuuS<7vg9Fz)8_?T&QwA zBl~#@*v2Ga%W&d}U6f-{R1OVa2~~R;b!?#K*K zB$;z}{(1|FN%WT`M@5b|eKL2Q_Y4Mla>5S@Tth#7E=(@_ z8X=p?GLeJn+dQOCRJvutUoelss7rLc8$ui(<>gVvhZ$a(4@+xTOoA8_l4M-9UrLr9 z-Ov1}H%7p4%9%j-T;*d?Z%oUpp?__q;wTN=n(m#s>v0b6w`p22$#mMhXx@hr?p;-l z4I}O>Ki?Umg#;0)n^&Xt?H{nQDOVbCz;~B*`H~l zA(Wz3j8c2*eQj)2ou&{vVZRDw4-07Rh`@;yO)R^n) zjN;kOO7ZMHFZ{iN8#QIY=b--7@NFjW>eR|Wtdnb*(w3jONlNn2QCCD2WOT_}XzAu@zN|6e z^gM7r{E7_(ZQno`MoUxxL(|FR5Ib&p|1W1(Vgnb%=Uk-o?KS3KIw`&hi2F39x zXuP#62K-CSm==Fjcz0xpMoaa`TfaDD?-+TAx-_ZyNIUzyJJm!$NK)$j`P^?!oNz8y z_U7kTwOJ$P`o~ysg^VcYFytuup{ZghB20(@NjJATt1g}MoRM*}I7oHn*x>e;0u&qd z-pY)EVCK)Nia~y_1AD`zaT~UhihnD9na&rxl^nVTOm{tTt*81FhA)H2Hnru@8KTb(0>A+ZA5c+kBGe z7nA&Fa0t_SV=_5L_C7g|?0&jg+!gM8)pBF^YfZvD`@+Mgqk4dbDbiJ%{L%tvbh6#% z3fiY8O_>4r)j^^$#MiZWxL>g@VUT=-Zu&mNRUVsPBv)&Eh3eY_cg_!W??rFbtxb=6 zA^Y@W+iG2Ptm$|Dw5~V)2(ONfi&DRiHr%rxTL|yT7qTtGi)EtH;nN3zECVr589t;- z=e6lRciMmYaYRA*;vvWqsOCnuXC(^T=Gze%Kso3lu@T3Oe7;;B6Mx2I#W?Ne@c+1m zrUuRciJXnOB~l24d{xS;2CO79S6LqG?N%@ov%68& zH$~eGg;!xj`$Y*p?o}9tcM$@CUz9o~Mb=wa9$R-;$UfZCh0LUz9oEY8rta=0XY09b zFX?LezG-m&9GoKCpxe|Ukc#KoP(XZ3VNiN8Qa-r*vru0*IC?%^CqKRldH=b)@lIIv zwE8vnZ1szS^0P~5(k48D=!Y7idHsDvW=_~_BYVR-u=`6k-4BYeuw@_>I`KTY=XkbB zqlTd~+Y`pxtMYV3(Q@{qI|IMNxfUoogL@+989J!)*&BlxD5Q+tizgwDm2hxMYs_#yj*u6RL6S_&%0zjT9+05Uk=RfCIV$dl z&=2Czd=U1fMJ820{_w_UVb|i4H|k2m&~~DOOZf}&XyW`gNc!MM0L}> zbxh2e!S;%8pN5_Nx!%?8YGZe!EYu@;!@I&pr~JEMfBC%iM!!)YEiray+dXhqOpJe) z{Fl_-j}SVXC10Cf|Dx-)u52qol|^aumxSL>k0Wi(9Ar=OT32RIH>mZC!}m?YK=tjk zLN-ZJw_j3Q(^xwL`MB1#%MX9(C*bN zjmW-fnm+a(#I_!`z}tHk5N~@(hJoW7bmaP%!oDf6&%~q@N2#wF7&FDKKxWCC5}S>`|;RO#_snQ=HR*IuGY9gVkWc#@DOOK5>oq zA*UZG+nJj2-&(e`Nyyt)r~uB40BzPYXPIX{@-Y~+O3E#1^*I1mR>oTaK zF_ zmS8}_qGD(#c}ppfHu#?vH8KT>lO+hpzBp+Ows5B4c&;*c;P~Zoaq2itlC&p_(hnD_ zQj5!elcQ?kY|-X*jZruPypEEs!7x<)LPaB|1rHaeX1sd#p;5Uahy_ zn~SA|#T85n8CoBDk6xve_kqsOo!o4jEk6a#+@$?%^(+Hj6r)(vz>_S(@r48{KQaYw z-+UV(-~|8x!H9ngl7)wbFz6WeZ}8PMj6=KbuZ6zFFNU=)#QBC|^`qjszPr{@i_>W_ zBFqfk-wTH!V_adQ{#sD+c!(@?@3{C&7??DdLt7SNv^2DN4yr`n9=K|vCD$?5Y2UeU z{=A+0?LGm}b7m8~ubbAU%8BICUs&p0{n9rRAa8x5V8jGAdPwlf%AVz2=!*ds*G?`m zzX*hG;6>p1QM-GGb?HG1b0!LTLKC&}@6iXPm%qc-IZc)fxt6sLuS2Im7?H zYi2FKeC+jGp!c!f=Rb(dNK_n&L?|GV?HoRTh{we4T3kU5?QrspB#DR>a8`hOOE7~8@ z=0B0Q?T2;+yHiK?Qv+tEaR#J_VDQdMY>IdKeN%c(}xnhi9ZBLeZ zSTooDmgGF7$ZWu36!UV+wHx(+3m^BX{kh8n@Z3jBsgbUJF`?-Sd4ApJpwvQBFU~*+ z7Qo%Q9>o9P79l^5(jr5W=<3yo6wBxYEvCV11oBWdAd~P^*GE8Og+_XE?2|;nizM#X zisOW}8p`tk2u^i;172*gkgLM&0^;Ql%R7U+wsJ|L`r=9Vb;gq#po! zY7j+ES`>-I>dtbHVZ!STjxN*JutMg$V(qu#2uPz* zplk@so8F+{s?UKKD4vg&BB8TO>2>5`4LI5@HgWYdO*-yEszpqFk>cdoAwPuv&@+|PmHa@p7 z!W!AF{LN9lZ^1F1ptncOwuqg#4Fn?xj!m@bl|ym9x6RdC4p;7$QzPxY|0;05@>35j z1W;JRKRO^ouQ}3*Do-}ONPiIgjiNuLe%0^>dYy(#F2w0of6IeF7Ks)MIxUogSMrl_ zp#x*26Y!Bihc1j^`!L!)thXD`81qxK?$CIXSst8QNs~M)N)-A9_{FkaIO}_0Gby;| zp=6XhIfRjXU>DA!vFWZ-EfO18YE|%I8D(6H8Y%c=VfIKHQ(rqR+#-l(p#Iv+jkYMD z#!vOI;4o$f3qOH@W*^LWtOcb=fowaq;EUM086w`RhbauIG-Xf53K|zsPO^+fbgEFYOFx1}$6fY5{ZCXA8GTb^P zG34vj8IcuB!TERQ)US!J0D6@fcnhR;bl!n{v2$p&jGN~gNLl?6~BrDb2X1kHs*+6>2v4>B+pbagp_?(?B5tCA<= zeWe^N)Lxvnau7q@`(n)uKi+pAr47>QKNn4u@!GiTx+_k|walzD-N#|b7Qx=vodyL% z4XbKqx^O(=$vcbq170o`ta(XhY#)uL&gb)G7J)c{dMslkT}R$ba~br?G(SIt~;a0-ie**A?kFs1G)#^FkX_nkOVig!L6EA&n*2M3{jHQQJSb{mf>u09tq~c zE$s-D>|}C-tKnWQYCwYvj55d6$(BbNCLI9GEJds$Fb(mUl*M$i{`$~|=!+-Se=#+t zKlUE_ z91eB16KN*3{&5-{1q^B;9>?UUfj{WBHE#?;j_FCCn=)$FUxpBl=~5rQoKn6qs5z#p zJ~|n-_mv@lW7^qgsEiukZ0Nu-ebr}`jB0E$bmEw@K{QCMd12_nF{Sr8E2F|24Igk! z34LzLshVfdb!Y%MV_Bgrt0qthi&0+DTP36w)6J)u!Z9x+izYU2nfS@(eXEzP6^x)&{M{0Hd7UNll=8^BTeor~-??mS z)9{<5R`yKQVt)Dd!@ty? z*IFxcf07@#a?@HZ_qk;eob@`JQB*VjDp{J%$+uu>24MaYm)n26&M|vd^jVd~4zYmr zC-o#l6ghzbg<2vZ2QV<&8FXk_M{(Os#uA@G} z+>G*#ajhDF$zmkYNU(s0*~5(P(BeU_(ViSpz^;TPG#9~tAVOen#IpaRrG;m)dcr=H zWpg{Sl%;QrxMUY2e;8CGVRkW0TJh0c+F@8WVi2FTAg)X2cya?+dHBOJtE*gK%CPU? zFnKnNgKv>)eQ}>I?Bkuro#`A_M#Q|BN&A5*)@;;$IvEx!7ed9Ez1$=W0CCHU${T|M?2 zZZF`o3BKRyN)xV;Iwj{(e9Q9a)x8X!Xs-=0>K)xR z7RNAv+>=diw8RdDCl|YLSpst!yZa6sQ?@7&`j=;}-zI!U@_-(gUnOeJS4&;gxwKT z*RNR8X?g=n&1Dp7`uEXg<*qC^(g|?-)b`jJkue0_^iPb*p(7Z861sHCr>Gu2X=9=GL$C7_J?^D>703=bx=i{G z^hfMFCVm*ux`~2u6QGt*|CP)qzK90}gRT#8wyT)>#br)zJ2^dG&=$(3+pZVO>`TFp z>ieHS=|(pkstMaS3nD3#BFV~}9SBhu+uyC_dqm0|5Gm*ag(e9glt2VV>)IK2-wuz` zVzm9F9n!W!ks=3Z`fw!9~6|%nqJHA7k}eXaQcYdo5DI}m{*4UVc$ra2Z&q-VXMe$Hm1+> z`yzb$yy>S!!DFG=4Gfe6k(l>2$Uj;^wwx%^S<6X(YawVD9rB4zBpk4jtWk zfSnMK+QE0BWz*nAWa9M3c--Ng!y>2GiE3h$m{9~wAI-4+ipb-UzsK(3X zzNM>Ic2G(?nhPoOxQ4;ujP%e)-4~CO7I4LmRC`24zk4LV5R((sE!Ht;M{HKV8autC zePG;>RM3GuJXT`S?lwl&-84oRhh_9!B&3W61iCrIdb#qY!@@W|l$1QPfjsk}$1v9| z3ycw|6g|v!;Rd6jYxkM2Jd3kY$%Q-EJ^}7QO#M9K_?O|`Rn-*AZe84Jm0Y(=YdE57O3s#BYpA;$ z|6+3fx=Lr3r`Rq%zPrHds0C$rKwL7op&5rxK7~{6f>9#|o#fjV7liCDH(p;{6e5Si zV6M;+b8@DtSsOFl=|iP3gS>X~oKy9Qfz$!j%R`HM$`7{Q`S&-Po>Rw1AE5VDHFEZy zn8n$0s*&n{b`~Z2qx8a|#wWW%F6;}sczW}WyQkY&-El}_KYfj}vfo`VC-cQUgDw=e z``6w4R}P5diyZ2s{o}9y@#AJ!Rf4Q14htaXZDv8R!yZ6-?D`{OSB@${)niFPz<@^< zYk*rDYyRgh|N53lI{c->{=NTkH$UVft2MAJ87~u`qtrqgXJ9QT3R(B}YZt!XcA+Q; z>9!>MkJz0|CVeFo7*1$ z@%|sSGLoO38&iJRnUX;ZTT3bR>u)Pkh*)I?wmw8j`Sxu74`Nom{5zZW^xj4LM?G7p z|5@69r}r}}$A46Z!yiR#J+%tx@L54?{;FPb>8?DCeHJAd{Al}$VJ|4GD~Z~1$(Z7+ z?J}D_%CsurrCL7S;<~MTro}Z8KbQrbMG4g&q2;qJu5+1%AM$@IH`vgOarSYMqy_jTg zI`mEilPsk}_eC+uJfLIXIC~?KD(`ReUQ19<*V*u?!IY}Gl7K9L{DRNhp+@ z79u2gp;ZCPAt3rK1ApjWJxG~&pYRC%C}e%TaPuRu_qNEI%Go)S$oria9zT=!(_J9Z zM8?Y*y_^Ah@p7f4=h`8Wc%zgyCX%VG+qQDhJu7F@=h~fLi7gC=Hm+}I&*|1~CdbRm zl_NdpOyBigp8uC6Z5$pbIMlgAUu<6bk17S~;?GXgT!yS#|RzLaK8|bBX`u`I# z81-XF8hhE~29jV68;m8vMmA-lLx5?<+>WSF=j4;~AoV%u$>?CDS;2|^Jx-Zu{pm_D zHS(7X6qiI+9M87&V1rR4_z@fIM}nWQ!DtfviVen);E!x@APHVzgRvyo%wGb-rK;&} z(lS1XS_Mcnaw(>ZZLNZd2!nv=5hLT_awSd+s3I(8M%g+~ffR?7Cv&Gg7%H_B%$yqY zcs--|LZ2n%4?MXv2@pVeN)mDAujyf~GdT{V?iEj%yt!h$_eNOGROo%X03O7|mUxxu zELklp>n0AcC^-Zo@$Z~dHH74N+BA6hw-W47=xr84siSJTj?0mtbWTp0Dh;-gLl3Ot>;)KB56?yN=fYQbkgFX(nKp%pIJTM%25k%fH-8 z%Kjc`k_siLi4Tz-8eP_>EO(#>D@ZO4fjDvJG3fk^ZqTEFu-!7?WuBN$)>Y<2PX)c)Y8 z3iR8&ccBFb_kfai@w~5=+xjeDv}n=slMnvdF?xL$jH6u}?0-+R*XW?F3&F8aQ2L@v zB;Z&CBV9M+#HJ6zISat(*`Pyf8hv5@5Z#zj|TLVp}@D48vFk$iQV^_ zyn|H8nv1NNUZK?MF{N@~j0rj2=s^(lXBYs{+AN)6q|p63rd|7jN$Y7S*-3 z4eu$;3<5HZE(~2of!WLeb{Pi|jfD|JOrp+!1vTm*wrJEDsvYc@L+&N-UQIVof`H_^X zvRcx=B_}}C*WGE-&9Z)$v-tNf7O%VDaavJdf9Ot=VV2d|vUv84#p}*{oPKzxe)*lI zA+xO8XU*1+RGE*C^f1Sday1_xB{uiD^zQ-8RiTArpj3oUIXJrJluC23rBp*aF-O*% zSahFZJ?a+^>&8Zt8SC%a)Unlky8W9K~%TWKmX#r4zUAM7`i$>NJ)2vd0VNWuK|c;N;)lUOgCJ zv#_)99qR_}X{Kn_TQ(Qpu7DrNC!(QO(Iwf|NAtycXd8+IDLr$kp7Uh^;2&^NibZIX&@LoWQV zxW-~O{5S$4lZrmbjfB*$vOVj{)A3^&6ry78}#Hj%YhqK9%Ruc2S zUCDoKNye8_2efH)b|!-+4a$mj1B3NfL$XOj$mI{318=PFgF@0^H>zkDOd7Jq(HndH zAh%T&napmTL5ADpQ~&-w)uR5M_?~a-QaND^9~&BsA3pZ9ixi-N5gVP#c&O4)5F67UnBNs z#76r2p-Ged%{XTGW=24N8Ro1<5OVnez2$H0(aEBj!gs#Z;yJ0(8u*#*=f#K*BvKPG z3OfT(uRXGAxdNj-`#ZxYS#H@z>~_5}t);zYD4+AY9SVB$?3u8e_b>dRhmm4Vju;Do z2yBwzmtlHor)f!Shu^cTEw{&fEbYafdRr+^He^f1Y%Kd*l6Gb(qc;~-BhpGBOF-hr&0U~}kk*2uCc!)FpXJQ* z#F!wjnwOULx`WA){1b(j;nB5u8m6{$|onUWNR^%&lE5E;PuVXdq`rjDN~cgecn6N;jxY?OhjXHudPHVSfD!U19$;$T z@Tt8J5%e_hovKykkB<&EQlYkiU6B5}$6&!CWdlfSN zYL;CkyK#}O&Xe9)x0t=k9c@j4FSBql)dyQ-a6r7_9SuWDc<4;xrvzR86;EWbYs+1; zKWn(+2{SLbTiVABzBTn+RkU1LAHDq@8&jZFhVgq@a4LT^ zGGPf0GM{kzX2BEq zss73*d5A1LS_RW7bn%2Z|H$&9Yj*!uL@D|cuot;t6>oe0+EZQW(El;t`rC6s?VM-| zbh^1IhtAoHkE=iXPDMQI_Ns^m2%)cMY}>Ik6}Q1xAshR~A}j`dmu2wGT?nY6He^;d zoqL{x(2ORRmpM^)L`{i`AcicNruHv#B0IAu-_RSU1b^MYnBxW}Z$`@^Qc1;`n76f< z(J*BvJVGF!@$&DN`8HjyHw-1{q4#eFcHrO?=CbgX6xBt;VgFZRiNXkU3Izg#hjbZ_ zCzsOFTQh(L;mtSsOP_EEJ}8neINwHE#@DrPE&}k1VZyUI>2m=c$D~f7_xbu1>972t zRIbRzj6D(Rc!%$~66Nzp0PNpRjT^bP-pFQ@I_n33+Lt~U)- zsxNR*JvIO8w*CG3hpu*b9JPNWbs3?!8wi9Y&^5IExKY;U*ssk9QS?;f$5pzWE%jH= z9!_Tg{MC34>bdavgNdxmGPIh0Yzs3ykv1-~zJOH=J$1AZhNO+lSo>+N>BiLPyQ6^P z5uR~92ySuI69B-%3+IFQLGMm7As0?QIM6bMP$h5pkWA~1BjO`4xOd{oh4Y=$rsgT* zF7@JNPYvEs$-nhh>K~in%Ht9Z66gU+3*2N!0WYKn z8~=zZ-M(FrKS~H3yMlI}&TN&Jota=P`loT$HZL8;;nw zWj^uY6Ea0I9f2jg36JW$0@2`zTFAu8Sp*xS=vyY!WDEh=ph9F$Gt`oIBSbHlwM^?V zl;l1Qo*sP-X4!M|fG+E-lLoCZk}%CnO2tayL!-S#N!7NL zK0WU|5fEEZYm3O)gy3MyDGANqTPTu}(;UNOTIwrODkACR6T!Am`LbUNkcqtX9g@ObV>TrS?O?mc(qh^`RA5X2Qimi+{?PYo$a?zRsNt*U z16_2h`kEEWkTgi3I>AuLg+J!QhI@ZP@m(>EE~#%D=fr5*N*U&Vk(ZJ(6#wTx$Xd3S zQ7_~3n9~34hd(4m{eOGn|6;@O@&Eh}R!Vrg{OZ*{Y&XO7?w?#dm~KLdubMOX39-mh znt{{xgW(7fy#t{ublsnv5;!AdDT%a#6B?mVj2E^ty-VcK-phtLP-P>?mIDYDaR+vxZ6LRcQQgU9?#+)&d5pgIKz-kygNa`PBHJ$W zzg+{k6&EJ%S^T~n1QRc@Y+941MPQT_0DjQn0Jk<@6*<;$3A@%5z+Y{&*mP6Kg;?xboan` zAWq1y`9*LX-nQ06ybCB5U_9VaqZfwSvk%h3$mNEp!S+6|P`_w?>QTWPGcwwB{)BLv9W6!_!n*I2%_91AeVcprcUNTnE86AZ8((i3OR`A}7 z-at^E{YKc~tUD16>v-?I=5Q4-B6x&YWRW%dvkpg3=B`mpW~qnwf>MJ6+OnItqoC5P zvT}*{!rf>FbxgrtM2cj&pon?_w*!gU8!voUM8N|i=Nb#21QPgxa_>ZVmQKuhA@h<- zGhz;w(o^~(i<5U3QmLFPLf^LgoHrbi=Y>>oW66O;lkicD%>8TBF~e+6tT&1HpbaJo zCl7GBG^zhd<#KIL_@CH210A`En;)p@PMP5}*TbtOSc1K&SB-f+^|`@E#z!Tc_r_M~ zDX2($G7ldPmP6q0M3)sVP8TywJvjfcQXioPkA zX?mt4kvHM77wK|GU&I3rg|m22yBtaasVf!H;zDaXepaKe$#cp#pJc5+AMZXz@v@^> z^@UDcuvHZ6K#^`wesUp4tNWMFPN+JOdl<-VyU zaTg+x9SR2SL&3*{}Q|On}ZHrx!1bB|2wsaww+l=eo?|!0o<>sPf=r{4+hX*E? zXzvcfmjrG^JemD5f0;zlCtIqSK;i*BJKK$gH85WygJ0B!LwuV^j;#v1r!v?1Tb&Ev zuu|xFJ#i_c{VYkF4GxSmD+7S6Jh|Ipg0AbPwbfSkYmt@mcr8VND6`G?&+1nM?$@Y(6XEuF$M}#27 zX|PQ-SNfgtC=0hhV4dX0qb>GlmpQfpv34W@x^jV*H0V2H;3Dl|J=Q839)efWIo>eM zTgE>9!u#Roa*Ov!Tk|y^a;=xmP=LvX_s-djUjBLWlAOO4iDb{u_ICPPktGVv-=AQW znzkSA!UwE_=4Cf{Cn8{Cv$j?8`4w7#HG2vg2jU35CKoIwi}+|%T_k*w&JX9l_h^)q zoIWM^Ec7lDLGE5}KBad7L;d%=&4mHH2Y@yk1eWY=^t0gYr|6?!>AjsqgBNPD9}6^t zQDh|X3Z(q+Vg32eVCpU2TCn#ckZd=pM4P^&Y-Gr*-hvI@X$1Oj#1>kW*%xsS^oxKZ zxSc@9&=y?Mp}y_hK8R~yZGn(=SdV8B{rurSe8Ncm`c9vA2 zFZVvIr+4wK_XsA(m)qGYZzgs9S~R-hH+-<-i1*Pbb1;IHF*AKg6m$RaxRw^x@I5!< zzS;uU&G-+e&%U+V_pE5+dO>J+BZ$YIO=p#w=Jc|H&~7H=6 z35DPNt#Gj-v=d1}x@rP5>2HNQnyxFjn)RFisu_h7O?V|jkf#2vFb(vfKPRU|biel;0bDifI?D>EBiT3Gf3!F1)&8JR(W|P3cTYr@G3!Me37f zAz8$oeenc@kv6ZZ%Q5}3KxgkyfN!du5kt*u$Ddacp7)Vx^=yQc(U)%>6Lgoqg<*i{ zXwT{EGUQwfhzE5=+&+4r#BpQCzvngeQI8)GwuKhcYwdQJA|ZY1c|JevrF$#(A4Q*v zbKbyHP^*=@m-O#U3lqBEk^!-9@8e9cI#2D<@qD(gppV4yd^+BtM`YU8F?GwqOX7Cp zZLY>gqC)dAX{e%)V4~0FecV#1^_uu-DM>twhWKSHRcHdsSuf2OH3uCz3`xxX;y9?yfwjs3K&!~F>j zWMib||LQ5wz>~d`1!3<7F-x($;IY264~ar29ft`uFYs0Gr+OcnFnUr2@C||)SnfQu zY^+iyvjtklheW^X9Te+>B*23-8!E6V{91wDc~${pGO6OMmnLAZ%v}?*5B)Tb8=9Ko z4kN4wram6{GU8~(61PY&c})>Z`&7K-I4Wn;di2vsy1Hr#+YKItbtg<> zXf?&lLnb|j_=c{{@~M9`Dc}C>2f@S4KY$6E7-6hTyBR+yc;6~9d~B!t+lOKo&=do{~qwS&(;e8X~V^B z$1M({TU;*62cS%%hy)V`3KYnz*PwW2WInoZN#`1a66CP6y9jv2mKX=+NHDc$+ z>Q0kyhwMDwaYIQ+dlDTu(o!U1^h`rhQu#rn=Lm_LUbirgWYYpP;HRyj;kNOC-FI_J zP8fq^tl&u_EvDu;o-t0NjwRLtNg;5F;)fU-4dNTPP3C{@JI(tPS+^ojHa6pEOe>=8(km>$m7KT~fi7bCXn`q_tpv|2ai*?=2!lF&u<20yrp|v{<=-q%< z0pkp!rSAGDzqhs$-#(bWxZUl8fxcjE$(lYQ%WnL!rRQEY_V{BTN#=Q0_}HhZ@y}#m zz4&{bf*d*O8;+cvKi($jA7*Blrv70@_$X}POBhQ#ukWoEf*Y{L*o?3BvBV{7gR4Qo z=OIyLm8y%b&`PmQ^@d3V`4#S?awzB(a8iO-5S;I1O%aYsrsi&#W0*0?XZ;XQZ=O$1 znQZx(BQS}xWvdOdh^G_hQdXwQu`IOEpu3_$>I>VL+F35@o1eM3zt=mD$h-|8K;TMW zjBz&&?Bk~Bvn;#Y(I^Wq`j;o^C%RIyu`va-s`FJSoA*3zzSh%#cx4*rH8@PZgugVR z?gHYsA&#t`jgTzw9)j)Q|KY}I~bvNHO_9#A>@Y<=6} zWnj{v0*90S-)mV@Sr)*V2qt{sry!lX48fDUD%^u4w4hzuscQ?`QA*u2?Why*iD(iE za2I1wnHIMLt)J2=og6`bmKV~~Krt(+meQzzWDnDdSj}L1(4cZar}uH7Y@z4KimnI{ z1G68Zfqb9yJ?7s`I{$p(fuoBe6lEnGawY}E-SIN4y>{K}@|vtayuMw7IcsKbxlOix zX$_NPr91>82-4U1D!-2+au?wdN^7C!2Z^K_h5f1cBEU$8v}sSKifWkwcc@CCaUkts zTCgsp4Wh*5nq!}6YMmlFqc>??RF9|-DiV^9t>-&2YMmN!+>j_}5c7J(FH^G+tu2Ib zxODHJap=Qxu(O1)n(v~&e|&w9V9haXFZfzH*kP*S_>Z?@*CS zM~eK%vjG31)dvw=F&dnNEMPQ7(3=Qbff!*LHCGy>?PCB2QA@-5N9Z6+h=4|P`1kAC zf6y`mc4NupW;qoiCBZ5}&jBOASKG21-D!;`?X=-h7XgBS766whQ0tzKeabxn@~kWY zn==*rS53wzc=UvlgRsz3DCTK4V;>rDqUd6K&-^)%HWLUpAY=2}rJpLB7lQYVg(h~H zP_eX6P$%f(@MapZ*z^Q^M(ruym{v6EChZi(SEwltiAw|He}F)H(N!?4f92>_cw!tn z3eP$}t*MVlI~6ds)y3Yx)v7&(ahNzolNP&b%8iAvB<6*DXFOLNvcov3bGsS>wo`iw zfD^zQ%g}};gw)`M6nacNQ35MCO87Ku5# z9g#t_MxlRZ7veO@!Dj(EUAViEXu`}cJ{9Ej*1r*gCd#N-gllzIT0KsKlEq`l(mPHA z()P^bL-izOQqYw#@j()>w3yitM-AYJYg)9S+C-!VvGqm7O*oXa_oWQ^j*7ogVwu`b4=bZbqHB~j->v1Dg;Gfpx%T{_; z|7EL=68>+FZkO8-Z`{)fJ)`z}5Dm{}9(lo6*CDDf(r1=-ysW|E4``m}r_O*;{^lj0i@0x_FKC zc000ISJA~A3xj0s7=;d^^^CfYzrgK6@S+4DTMx9>9`| zc*0k`!R-D(FpR|H2BusSx1Q+}sUL%I_;j^OpyEQLo;^$vvXGWzuPXNj>O-Go^qgS@iP~i9@jg>b*rjmtW^@==y+)mi0jpBW(jssQ3p_ zkGWBo)xA4wLpb{CY zIhU9b8G0rM-vlem9!wXg4Psxd&xlcMxJHhaO1PSb&Ysjs-I)HQKbB?jB#mtprIN-- z=y%jQ??N-J6q|WD1DZ`0=C$dQ#%d7tcnf|IAkBt}=T{z-0K)y&e zXpy!yox)eqDTGz^Yufr>BpySK&f&(j)sQHkSa7L?D$(XbC){et($!e{<|QHb$THH0 zO6LxJrzC%Xf~lXyo#7A8e9y7V9SUlH8Ndtj)ekXpFq!DV#0X1L^x)6~DJx?SkWQeN zDw{9ei3*MeV~CwQ7LpQuEf!?J_zD^N0bfNyA1OmLu^Z^%*7KM(0po$7+<1PRkuj2@C6it1n_ zygLX@zBb~Uo(Sg52#ulJ@?WP%2%{nz{!OFmmsVCZ0L8QM*Qf_|f`ijswH@ zt^#oLM;PL@4maiEla96hA7^FmuB@qRU<{_LC5=3JU{sH#>-QWz7o|_m$UcALsX#e7 zZ~2D3%8=-ugZ7>H<<|2-qox+D6ft6VGEdS2@DkM~xHBm5n95&?+ zj=5FH8LzwqYIQ!D%X zLioHO-2kW!%z677vaAT1%f=Bf41K7tFzZGT_p{54p0dMYsO<(iATf+<9yHj^2wnSw z!#109NjB5>NGg?71g#8<@0Q`HAh;H=MKD3;`PN^C27N; zMtylnrEiBJ0p8-x1Tu*ldX|wlel`*krgIu^o>1A#(n@S^1$wtL<*Um{c6W(wDSLb< zGfUrsA@HtS9N^7gg$-$^x>7&ez;khucYrO5KR&i8vMgM;2W7a4bH zdh?}3oeQLOSR!xog((9P5@vpm4Y@yY0AMU3XTpocB(MK&5?rE#g8j_mS?N@qj+G)@nqthj+X8(8Gan`fSIG@ zz1|wBVM<@SSzq<6*|K>Q^V$+Qmsk6<99>5z(G;STKK69aE^cB;dO={ba7eGaPy1#j zm9`39n%?6cr~hAY6=*%xrsmU~!{L}<*L}m(ZSAO;%aN8Foo=Yy)^t|E*=My0h62G>m479rStwBY1YW_5w{g-A*XN|LXJQ=RP9)aX9rOOc- zZtg!L{7(nTSbacS&p`6uAeqcp)+qb%AFDICeK^4ZtKs0`hHmiq3MBsz;)AO zs6tjvKoEfbb3j;BTn81dxNdcYZ(l{YUuCC;bunJqd(MitTxZFw2aogK8HTHLE zWH7?ZhhW1>lfz3h7IA@4QwFPZZ)E*i6#XG~7vP4AaDqrT;w*Ogc!~&^Q39s2&l3cL z-J8Xp>`})mvt4@Dc_+6Awae?~CUt-Nw)fUWhf*c)O3vr?PArMe`+Uf6yxK)$ zL2FV$N92&p&j;f2^nsB$0nvpb$G&Ay&~l6zX2B}mn+7TMfX1Oua#rwn zu5Xx6UrO4n5>%X%GqXu1VkoRZe?9b8Wv|!FFUS5sTGbqFVqQw3rKNYAcU-e(4ZTp3 zwD@ja$#zSvJk7e;Jx)~MRAR8UZCCO~&fN|%(xlAzy22RY+q5aIjmL_5y8oG(VXU=8 zpM0GeQk1ficiqu>cgr`$7A95c;X1bhS%{ppCN#e+pL!s^nNpVx-0t!#lxUMC&S?9uSU<<@Fg9^M^PJXtW) z-qO8yNwTa%Tb(lvyU#S;d>MsVwF92;I=8+$tHn83>e-VCYPB~@X1%+=eBzsx5$^JF zUluTd{%`hA#J@3o=F=zAqM2^HAKEonk-4ov1nWL^>NH(F)ek}{eB@fJ`#t#q5Y;$X&tqs4*oq_2lG}7 zUTB>k#V>zz*E(oFBfe)%AtWI$)u9S5;K@PEfp41eP3$55V76Hzb#L)o!|HeV!P&|N z!#aMJk)Lto2X-$zt5i84xqUl;X|MCUHS%dW=+Uyhes)g+$lv^X;7P6qfls*~OgWK; za=$m3DAH-%jgJTdZoj}PDZY%L3|L~CF;-H!i<0S$_T^WdV+nQmh$Q(UpE}|txN_JH zy)=jJ!&)eR0GZsr#a4C=1a%n~D1T5^5o6P#rO*N%u@l3iRJYxQ(`uuyj{4oX&rT17 ztUfW&c22Ik;OFbvq=RjwMb`15Pi*7!4^ItbMMyw$*=kj3FWlzOy1G1P9Z#Su==6xa z=nW>S)9;>5z1NvpWg>#7t?nD8`b4Wm6mM@XiuM`yTqj3Fs8knqyojG>4U0;Y1;z0D z^^dQ-3RvV$&wlX(oG}7PrTq}GTU*w;2OH{|v0feOkil1n?oK~<$#3z)YnT0YKh$0I zyYleb2EH>O9E%+&-y{{{Zw*o-3Pm_*paV_Ye`gFoi|g6H^SxyTnh4(ML|f+xeD zQg@yTe|E<(e9u0Wq*25?tX~>oarrpVuCm8+Wu-`Nj;LdSXP+t$hvy5|r3a?Tf)S7J z3RBwKHo)jXj}lnOp`j#axl;f3F(J_#Bz^iz=O5iv+Gp6a`2{t34Uyj%`6L0qA%ra$>Ge@D4XGLv_YkW4r19)WK~u#{9#aGQ$Bhwd8Mx0^&% zJwqF-$ovJ$r@dnTA%O-bHs2B}y8WU$y};E|rB82XR5M;GeOx=EzdC+1AGm=~Q?yVA z-{l*zt`Qbw-l;!3(NgWmZRiL$sqAEy`e%-WF>71J6S+oj?a^PHK~&G);qow*f5Lfn zw0lDG0oa3%eXcUT%(CY|m>i~F2>l@d$Jb5t_ZIWgp`bc89ZK>xBNSn(Tf_r|_Q`(J zxdK(^XJ->sL!K>Jt&%?gw=m>c<7!RE-rsCgJ$S-VqICG{?7kY~`;2!?<@=0{_2)f8 zM9SbE@W5K6M=~zt6P9W8u+?gyl&sJuzLT9*tkAMq%Q@(87!RR4ZmwpV3+WB8Y9 z%bW7UDtO8IiJgQPi(O9%0*4-gL|8XLPFRc}H!Q-Wjk86`69oBTo+ho?c21fgC>ZOC zo*_(5Le=piBDSD&&gqg%RA(m^_e6bok(m7^9bOU{bGTF4hoc$k$#Tuq@yk}LcBK@T zw8^*Z*`fjU-q<#F*U~BBt)6F%R9zffaTN;tx=_J{DE#EV!k1IOp3N(t9PCQJ*QSG- zWb?{&QazOkP}SfUSw-5T&;C)t(P#8oBqUhchtVP_C<8vK*SHtj~A3h*RMg5p9ViAh79O}i~e?PnS#5v{KGZsr3pRq zx0)F%Cyi}e)fwz0?TtyR_l)8?;$HTMvYv)zTpIWpPR~sZ4}Phe(v}wP z`m)(2C78(W^)Jq5t5%iLeGp$+)mf3#cH9fYx0-+wsMc4N(o_0HxI6Aex&1}+=HZp_ zEFy*J-AWe563cXzuqP~5=U>umHJ!EnIa>#lu058G&empQI_7s4Tvg?F#z4^q<&*Eo z@BGc^wwqUCmb`gsrSMFVW{XacHdQ+LOs7mSOnB84^W z8&{x8G%g1_93O>OVPag0$$xeBOBHezm#F#;RurgAO~_RJqw(lM73>YiqfZm26`K7^ ze((-{C!*6|GZ=AAiTAKBsF{XNjQsegcVg79@a&=c^akua^v1f5@ZqAdQ)eeuMxgiA zEn|>EBSLkF%vAbeuo0R#dmx;6$u`lf(Y9o-teTSF~TXt)3k6AxVQ_)t~6KWug zV|&4$#8B!T@fL@?RT&tOz>M-R+2l%q<3fJ--V& z^{AK`-LA*7Lz>DGyfXSNiAY&h$Nn;%`Mtop>yigTL)}_cm$lE4yszHc#n21Ff;zu# z|B_{UgY!y1{m9Mv?S*cH4n)$qOF_E6+ShvY<6w3V@# z6#*sJZwipp_jgP+Df(bY^0yi|yk=wl`IomHNV*O>c0SX4!c@~|V@CM*oNk^pGCO>8?9I^nn%GB%<>sqHQT8 z^b7B@MpjYf6~3$PW5@A*wF`)Q`L_e=g#KiUjwe-LLMzYDooEpqbjVGRk_Qnp29Q}P zhh&;IV*ejL5RZaQ%0kbk)m;s}suYv^qzWJDl!;mOh1PW`S4~P3W!+N_^XAT3Cqf`% zrPN>lWVIq&cdS+RcJ{pdxm58PaK5+e#q2TU0rAQ(0$>e5nk>y1a*~8ZCF-P!;527D zbj{nww~d;-Lb?&~S;_=M2^dzqov=d|u$u(4MJ_aru+A|^0U-rgBj9Xt*GYyt_ju2y zKDGiWqR5aF*@MfOm3V461LPL=Ld$}wj`nmOb`;%yth@w?zaARXMjudV^}e;aVRKAM zjn1R{GCrF-Hh>7-$~%T$?2?-UOk;XW6L#pYKy4Rm(h{$L0!ZZ=48p+)GEJ5HbEKxQ zJymn@wG$6@3S>Ht@=KteD&a65el9}fHa8`z9{oj#?_?=csuq*2dSR^p+d-t9y=`yz z)fHkWst6QJme=H=S;~E0z4U}?S9z`Q!i0E0*jJ@?4WaLMuA?L7l3dC@3CN}Ftn){} zCzx&o_TjZUSzpk5-Py&cipaY+ZjuJTH-9Q~AcXZG0P8ore|jiYUi;X!TI#0c*2Lhz z7^WAq^3NxNpb63D7U=@B(D+kicmJiEcrX3Pt(Z4Y1OddKg@^RJ6oP$cWw^xk+SQf^ zU*GUnUUPMYqO@JmwJBnmbcNr}=hA1AgCpdF;QJ!g$#y<3ZExsF!nMngT}^qx(DPcJ z*syxk+i40?_x{IE1R-O*&8-aLv1|*mzfy+pk(7++H8F6a$DFz9$xZ>_x2K8qzevv^>UE_5OCBAbaiU4i z7Hd(wKH5*qLTnJblOFL`K zx?rzA|JJW{DOEwD;&By+Y~!xibQ<= z4GVV8^Vj9hZ_6qsHy#X=YHV`3rcoJ+gC}ZEXr%qIKqA-LO5|7uMcc3p!U9;u024WI zyLPc~WQBu{ycy@8t<8k-R)w52I`@?)>R@u1o<~_64es;>dY1XvQzLick5}(*; zaPKye)zU*D%dxZ~vHMy*c7ZTA#MoPUES_kwAT@H9@RBl!rr&W(&_xN=p$Bu=csBIl zNohiDjbl!@n>h2iT38*3ce|fU9Qlc5P=W*bGg|cG?ev+J!e@yEQ_SY6yv*Z^LK5?q zn-RG_BEk}%IBNgI4MiiqPrq5-W^TEYTBy@h)61OM&lK9)!5JHCtf`ksXQAvg(fLD*Q^ zp*snaGSiJmiR5BSwd7}xHbz-Th3b{?hV(WYcaUJvv68eQ?um}#LJ%(V?MG&F*0X}G zu?dat&IFA$tS%^Vao9!0c-y%yJxsQ!&(e!lwoIJ2uPUYNL->BeGyPlOwmu=d8Q`k> zX34Obi`^#^iiq6^(Y!=(bOyCtNpL63teetoUU^$zj{tvZP(eYMXzG3UM$)J-(Zxp` zXO&EMxy*em$(P4Hky=MkwgjjVjV*HpyG1r7;5_k=jCc3JO*hVYOgRwwcH{SvZ{&Rq zv7Q~qzV1{!Z@$GU8aa(X<9J*(OiSvND*Yt2#jl~=q;an=ZE}5m%^{y4P6av4C>?Cu zx!6(6pDElB8MJ!&F40M+*W1Rup1&b($frnC@4v=6j>}EIm&Y9Zon#)5`BUN6R67={ zPz^)_V1LOxdlq6(W5tl5k@XjN9b>=VK2h>e;@o?>|J-7->qKtn>tkOX9b2xN2@}qI zi&#lyZ>^fyKVSd+_0qkL`WA2G3+OF?LyrXIpGG`P-oGEPnV%SeqyqX~K(E!v zI`bIW>7KrQr&Q_`)})7Pcyqs-^+#2|hD2i7p&QNQp&-urSbKAo@H-=r4cFCKg=0IV zNqb%Gxd@+$@5m83>Tk{>14%Lgu|BTFA_i*%TZ*hlnKx1OFFrzg-;?KFBC zx0yR_H3g^PU=%kql+q@4dd4tA72dNN5x73N@hP&HL>!5~Fb{C@ELlKfQTd4wLW8LgZn1qcz=K@pyj)E8v#2ttQA=MH>#w+gNPgE0lrr>@f*%+SjnamuE zH8PK2k6!A@FPJz#2KqdmA|>-23xo#5nBEl`9+-x?Eu+p5hObQ>!Qfzhff_H{dJrQ< zE*&3BF1_Y^oNyndhmJiSMq4P+JRfVuua;u zXPRZv7_n#5R;bm;?f=Z6lu3bCTvP&;fsxo*!BW%CBp_w{qDEfeP4@Iz~EwR#D zh?KQ39~qs$SPcuB{sf~p8cMOo|(L+dKJm38# ze{xiwE7dIr-oG^zfnSd>9?n+_J zKf6*WU}~35$O*3x1+(bD!XI{RR-6>s{}d)=P`H%kPo1g|T;dTXUY5Y}#i3cL0 zP9lCa{xt#PqaxV~FQOuc>gtQnRT`4dYyNL<#6$;en<1R~46u|8C-U&3X3KD8AE)Z=h z7p$U_icwT@57wg92b$qKEZDuBit|6 z_ec@d2&3DH(qwBp!YKFvdV=ijls+o@+CD>UubUEX28`&eI|K>FIB?aU<|vOpSCBLo zWa<-DG<^)Zj9bEW!*i&!YOvr<1_XTS2TG>AF@g|Y42pZOk?3c_F47nB&1|Z?sk0pS z3@#vtoMQwTld?!MM)An8*mL~ghFWWqT#I%Q!tk6ziUS0Zn1=8rAfpyEq^7__wErdM zglEdd=R{c7DOQnpjP=qL-izmaEwVZa_wsF_=aATANkPm0eM#7I?T*Ek!;d9ciGVBz zr)Ruwy!Nnb`GpuSLu6yhCTo2 zW6AdLhejaBc_NiOz;7B~18@-O-boSOCBT=>m=M0c{YPL@W_;=ka5!R83eNsY=Adycyvj~@(CquX)hIMmJk$K|r znnIVmE#RDWjTcCJL_^}aqj(N`-yro>`y$j*jl*%s`I4&Vx67|;x<)<$caW94dd zmT5^{&wZhiTxBMmi*-ySUMwr)fj#8=&Pw;%66l-n-rW7 z(~8q?ppQA;YZiMp$KAR7J>!WU-;L^8VAzmdkmx9ezJ2BvY%`x2;0&0Ur27bbr~Gv< zHhXRy#^Ebcb1w+lpkQ_j<1~jn|Ez*B-m0Kjp>`qWiGTvkKp6xIRxbBgf$gMx@N#_e zluRks(t@pw8pIiDMbAK_o`C;)$3U8c3@wlI$!wHjYdAfjsn$q?JMaY`ESbyNft0S@mgc@O|EZK=CuIyx}Q< zur9jTw#s@v?Oq>07S^UeCY-_w5=)ku<+}?DiL61Y_*<~` z_yImE``SSG5BXpoS&VKTtJsW{t|CI@@5wL%r8ft;TFZp3f(E~XwT(@`0*%~)dyci3 zF78oe?BlHj09a_f&iQnCPjYnYqwxWm90d*90MRZ-FPc5 zNc!9-nRLi6)SgeH{eK+)%{w71Rx_hJk>G!N`t4vKb$vZJsF?Hrg+2eR_G-}5Hqn62 za$uUY!SYWHpYRaL2I}F_%kT+%%cCsaE6|^qQqN$^TmX#hy(kGa>?A96N$2`6W4!&n6CM|`{8fyU#`CCY8!@J_8Bqa%u z0lp68s1K#6P;GXLqi;a$w;!1^Pvs7OFO^dM8kZ3%=(1q6MLPXOIo1tr|9p;z(k z2dgWGK5@BVY1edk?GBW!+!;u8A>956WgH=Fn5LNq7Hb6LoBz^*m669W=m&2fzk2dy zHNjG6AiLB+h)k?5+413ZW zY9~z83|);M5);Ie^unx1@&Vv;1ly)dGq%gwY3o&l2^AI0N7N*fcVEmhWCI}FJS-^E zL`W8DLwmWF)xhGfa~rKwDI{&Km5d4`36N*&+%txv8Sf+Pvm4uc3Y>3^cf^P8!ol>n z^uW9P`WnuU71Kh%fZrlqjV4&mY-eTr)E2dp+0rAX?1{lXAy$R2cYTda(wwq*qn}>i`K#P8$J!x0 zKC&gewyf8ueH9d)_j^Y^Zd7d6^U{}|0%r&PFaW);Lp`Sth=807I|Q%`%DQ4D!F94) z4kRl>e4;f)s@s`yFK0~W{k&>nx4UW?C3}dEAwm?)c%B_67G4mr?J8^+X zSw78}87=!!T(C)AZZ&4AWM8!?NRY7}k^XTmI-l+hf$XWH2o^ocm;LBm5Zbc*tTFSF zbev1UN$2ukjhR(ar#%j#3$#6Z%cl&++B6r>~xyv7$Z0t zHA?HAglO6}R0?++!R95Am|A}CPOz1D>B+Y63&}@E_GnLZcJb8L`7$S^BCTOzqRwa9wJc91rV)+#b@iKR69Z6q4r)$ee-DWRI0{AhlA)VAv=-9hy6Zy5q)FY8Ea9P59;9A=fv%$v*@nzn{b2{#fX8=V!G^CxtMGGRt0@uQ^Y;-erWInUtG=I?(e^Gt@o4j6mcWw#Az)fmq`36t@nYdWNk!9b0AN7}jRt!I&QV-MHO`eI^Cs$< zlqjUJ-rPdwoeXAD2AJE{{Qr!;mbS^;-C?<9cMs{6^Os6@j(=0p{Y~yx=caf(`8vvh zValVI%QcI_6>*z+{a99r2E+@K&iJbvJMg61ow~xYucd2vGZ-Jz!upt~6a{IaId-U| z^$veluF!ppf%MRMAP-JPy=q(6TtzZ6+sWozBNtmFlDSq(8_y3j&oPea|LSBtD zUx8AXu92P@tlKn`7Gtb)>xCzFDd7#)D_r-xhdVN1KhVlHAXTWTYFOi8oi8S-jFpzr z)GITNAfC4LL5j6T8q%Ed;HGq=>cxYRDvxAYTgEWdFuYNS<{Q=qcqY>;pPJnAbJ4B; zeScoj%oT-(3novEbC-GPW%mk}M80%5DLCxewEm^=8C;j8W!rgHYvg=f=aUkiCpr?P znA-xU0$l+OL>F3nNEYZFCGCV|U1z!6yRyGKdfHZP84%A1OCyuv5cP?^BYWPnNWtjN zNAYfYPquCPL#fa+JW}L@6F0$|M-Y?YA}Fajd-p!&oY{`I|HY@QbagTtHmg;&$N1JRfl zrSoIS{vbR*9LlLlw1|IgisUc?84uR;#yfjzVYR^-`0Qp zOkF?lnZI2dvr;+AZImn~tciJ_EJ}4NXtV($O!W+U?X*K}EPs{b=fh8){Ks;#uLOs2OWuw($+DqRI@gFb<^X35w#Lm=f2$^G` z(reO?dGKC=uD?teVK}>9i8Qon1r2u)<^b16n;iAhbcUEK@p|hnl6=wQ1Ag$z6l?maxowFx==GpY> zsvih==@F3F4-Z1$BTdP=AWwn&Xo4=sT9m6QaWHf+otFylRI2%-@qexx<{}qU&2({Z zRX-vUkqvRwFLQoyIU3|l$EKmCS zFdcLjmaz;RkMQlvmEpQaCvWQrt(3ZBfQ+95hN3qE!yE2uH^6f*os&;l9I?B!FN2A%BUh?P^P93T&fp(5Yqs$P7Ce;XPy?WBM|=)`FgXhGavk z$>+e3&^&9wpxd6AaruFYXt$AW9;PKmpGwCB-u9FE5f%%d7qmOn<=(yH%8UrsJv)Le z#HE}=lEbY@rc?b&7!+fmEKibvmyQQw2^Mxc$IlLOKFO^n8zCO4g)l@|?S=@5A=Jx5Xx5YZ>(8;N{ToN8Eid$f z$a9;WpB(OWM`*EjKNP>OWv;pe8Og$w%1cw+h;hnafH?AVE@;;e;H? zVljxf<$`y=y(7ShfBg1y|Mo^)G)55q`imj`lw`e_6W)bBw>e3J`0NC$aCRK55R~Lyo|P+L z7WG`WKot3#eo8&}U_hxWF-Q?D;ZF73p#joySp=H7VCmeJf%fBE@E%NtZQemQzP*bl z&P|l?!_{-AHWxqL^~Kz2A5IEi%pKl*a(hL|TkC4?5{1>#xg^W7h0jL<9lk!p=$T=p z`~+ct+>f&bab{Ksj1*yk$&>!mU+v8=2=L6I|C;(p>bc_ZVYf3W%@2tK)On(U&=-6? zB)CD5>R@p}!85)dGF<0K^>J~*?I(Oaq_}{{O=PNZQ6LH!8NAdrUKwk_EX@UpAzCiT zme^eAI3Vo*cPRyAh z?5bv?gbZVgidN$HI>~{9isq=}>EGowbKmz2o?>my^lLhsTa$dle^V2lJJ-5!mo?Zy z5JhJFq^7_w1HJS$U2xU)-$6Z@bbWViL*T4x|4TDxr6IN8Hy@?k_t&@UkNe+W5ANxl z)0&wk7gqM|n|8c!#F_YGeZ9(|RoR_Riil;M8D>)*sHO3}uMfi{{Lz(Yps~cR`D(K+ zWO|rC4~Sznfl(4lgVJD&WNiE>((*k~T+911Q5&qmv(lTq69=mO^?_(rLFCb(6)ahn z=}k3V1`7Q{>$tUK zKXX_+fT}(a>~17SBL~Q}dU2{HOkth(|FHMoVNE69|M*Qp8YQGbKtuybFDW#2MS&oK z1?gZ9Afl^6LIAs7LbD4hVp%nSeMLcC(Y0ZB(Ot2uW?fwo3)sO129@u*lK}4f^ZEUL z&+mD@<)1H4n0uz&nYnZ4PC0YV>)^p}ML6CUnA8q1%Od7t|;sPr^ohpfYbe?{-F{}0$8?x3c{4Nv+DSHz%OGvj}X78y-MSveH$hA zx!=P3JLGgocn%$S3jq=Y+!7c@5nRyGvFw|6<+fxRr=;VfKU>JLj+tJ`X%4!3w{9#K zX5UhL%?1i*>ApqB)OVN1a+aAdr%YD~%)!dVU5gTlMRQOQ9!$pYAKf4=!6MsqgRtc$ zIahb_B1q$@>#e32;Bgk#=KCq3OqfAsF#50Js6}wZ28OF)fSk*}1!(MWJ}t4tL7+_` z0TI=F_y#YL!Svfm7^t|w))l-0N1E_5j1LCc?1FMbSwv{Ua|v-+97Hf?_i%}WTyi&S z7I;kqC~K3GlYHI=L{_@e-@Y5`_cj2esg-zUy308!pukMpT#@ARL)kg4yRBB`>U8rI zDD5^UBR&;CLiEp>y$YI41^y9Ru>; z;Q+@!5&-C>Pc+I4AZu(SkN@)fIoke#3GnIzKqFXA!+j>Cz&lO=HXIrdM0|4T@5 zplp4J5#^j%x^556_9wsx1|5pOW11HF-pJ6{IU*iupWqZCYuQEL^5k=_PQg=De7|wA zb*=!?py)dUNn3!hHX+^(kbWR%?&-AZB_P(gr)C!Tf+Y403Sf|C`ha@G4}R{173W*T zIRfZl@+n`!@;vo|8>1!APzHbp^fc8!h;C$vvur`TS3?Dn==)?_06$bd(Tisn;J^Xa zN#!N%sF0FA@NX7nT4PPMy2yn6Sa_TozXm|e8WVi|@ByXyRIEDGa^ch)VV2vbwvDu$ z{A17w%S$tJPg%-lMP0N^n{`$y7?^!FOE7wlU4_7Vf!z^7)B@5`LB@g`e+V!*v=KNh zYI`FfFNtasxGbr8FEC*0#Pl@~>qZ-h%I*+ZH?hv6J8EV3UELuu-FL0)j&kU}OV*u6 z))TezZ9LbZ#u~KRC2COWhWF%cKN{4>#RR&KLw8oP(E$n4;L%#jsn&S^ylmAt|N3_Z z;*Spo;%dlTM~8FjfCdvojU2j5Ti0EFWp{qO?hwjKl-tz~Lnddtb35M?;*#emdre>Z zTHtm&TQ%7q#4INHH)pGs;JR!XL7nfRczAbMN)L6ohoa^}ftkZz}HHuVX6@o1EVIyOjc>n_hV<>I`cZF@u z-I@@t>@KIPuliB$y*|sUYAD>=qa}jAB@K20TgiRN3yZ*gK^yu2ZnmcH_7iOn`kdZ_ zQTZ$GKl<#xdh1y;erHU{c#E!6#c|w(Qza`*_Qkec;dI_p=Gz|l9Z-jlwE^lAYeMd# zz82fgGHl|iON@BO+tk}^cW5OiY}Vckvgf@3`# zX;N5Yo;9Sh>USMVce@v3chPQ@O;V*T>0Ws#>-ZDlXx7yyfn!(?p0q}=I-am2S;kKr zqgjKVVoN#mtIMH|MAS?E*q{`S#P>#W?CDR)>EF3bJN$|^Ey7q2FY zwA;d>PD1YMRcE)yG9v26bN;D_D2hc@1m{+I25*Gq|+Bz<=Mz(jI() z2e=t)J5S=juV85hyXB7AVXN)V`J!Pw1cpndF$FzHB_?SOQ zT3#PKppvAGqvNkXW7-mHJYWM!+s_y`+kt6EaPU(WBrTVTzb=6r1o#;6oulHfZ;`Ye zeetbwl6HbEZq|pSefI?qNHNo%yn=82Y^tSw!nZzUX&o=)p7Tt#f3)D9D_L4bJN`fo zHM@;_jx*B^xq?^y#nM_m#H-$zX+Qmgdy?RZ?&Ggtn`tfn!CyCnUf{MxrdsR*?%8Ulr9);{&9q+6@l|Ck?bQFwTq?oZN*Q)<^EfIjGejG9C$5?7Z;1X-84W5=;HPuoZ4VP3)ZSu6-fIlp?ZL@N} zUbobqQ|4Cr3bZ*{xs&D#v{CbOXP*&hFD}S^a8962T9`ZOH-UE0qFmeC0&O^4{uF4z zBJS%C0&V<~+}9rk+G%k4B+$kd2WXRx)Kz1I+A~J#F(ZZA zDyrIZoKSm;rVdCKYTwY*TQh{({!F#mR-yJOQ~k9anHvzaz<$822IKpO~v zOKttARxibXlW|FXYAvSqV&Y%NW7PX;cC`aGXBhS3@SM(2c8_IFV~8W^o9n!mpJm2O9dIFPI>H?Ln#>Z~ZL z+o>6=V^${Ub|lQ-Srqyec2(;|-B^6`Wc)J!G(AFSu6O)LJB+d4cE6zRP-;M>LDFl{9N<@~RPJYQ; zC-VOcPR{3Z>j7{TlrWfBg9hNVsNrKHgQBzCfTYL721UolMWS0kyB7hN#SL)$g|IVK zJ=p!{!|+_))L?f*E`c8}5U{y{>jzw{Ak#4ofauaO>=I#-D)NF)9Eyy55&~CqEb?hc z=>?!T7#Por{lv{%}Nyhl52eA|$XN_6ek-V+~gj2rpUvgbV^pNPa%di$H`2 zyI0T1X3jG*W~3`JGtvk}Rj73m+)^A)xHxhZ$dw~E61joM6(d)OTsF8gIHGY>h; z&&YIVRrc(hq|Dh~fr@Cq5hHe!XL~6WK5RNbz95LYp5)Mu{#e}0FoNB_UBb)}pVQat<5>6oDL=ujia9X+GG!jX0 zBGY2R(GX5G;nWdM1K~6hPAlPHC_lo9l!GHD90lRvgi}m78p5e2oI1j3kYlsG#ER$( zAOU9V9Ga1yH6kfHEfuoDAy%xxvfS7kL}i-u*9QgfID8mJ73eGf;XIEkCeS6pne8Q% za{+*o>?9>fDI$Su2KPA4gSS81D^d|WP2f}nz<32AL9t+}Cz1iUgM@w+yAk-~M&XX* zqQks|SZcu&G9_{hq!7xd!Y3W(CB{k}A>mPdK4QoR-qg`~YqvSy?+$9ZbLSbE;+&!A z=iW-e7%;?OU0q$>z2#q50E}EGdKf2WJC`a^#i|uji>YxTA+bio3t&6~JuzbBi7W-Z zq2f{jJ;o|8xv>TY1@s5c1H%g%W4?D#uhYZ+MZz%koj3m9-q>DmWa$t?I>m-=s<^D1 zs@~X5HEimpS~qu7?4P%D5&tUBI8n9yNB|BH64Z;#Sp|ES4u8ij|OxYM0s~uv0(-se@<0vyQ4M(*bU_T1u?VHBuD1X3Qmo9)K}4ysArAw{X_Kxq9ubNKbV&kil$G6mX|{B{zV2sZUdkgh*}dAyn6&vzB*=9 zcqFoD7`x?>7tvR4^;zpBHa3HyrZ*LlXq6#V+jptVds8)F*y@nsqYa5jB7IiCu>QsR z!8_=i2tLJNdl9TO-VP%yNLHPq?c)%ZG8u+?^bAK}=-=dmuvQj^Q)y z?ovkU#lX)lLyG1gGW`>rdLbx~$AV_+1DMT?Aww2{Zi~7RYiMAkp6%^E4)9n}nCtXz zYIz7?vg8E-wxm_0%G?i8zXqWthbGJiEUP(-?MLR3eB0%SscYzfId-Uv~ zzu*spD2oY{KK`pG?9ox1UZojnBFKg_b)Ll@M992iL7S8?s;KcM9-PqjBn0zUNiO%H5K8P|&V8ihsroG(1rkjKpd;XH6DRKp9ao8p2Xa3I2-QeO}p=~G{T z9vA?Emkd`8qZvBJnQwa- zz{enf6OfCiyUZtWOjtt!kR711>8`Ay#hdj2Lxr0%=enSKw-ni@>ciG-hSmC{&HA@@ z(DgX#~zkS@T+yHW;c$O>5nqdH{0EVtad><;S94 z`TJ7nGlU9LjO^MbHGobb&AlOdRU+tQgjpt#usl6I{!Ci>Trk{k@S9# zYr3>yCm`x)U>{A|48Zu!h3BL`%OU{@5se^)WjAvJCT&hW z4!sSamE4qa62Q)D+MxX?zqo*X)i6jbEOr5FQDA-S*(q!;X+6?KIMS@urMAdE7 z*X1`C&?7Dn*mFpdUl9Q45V!es_;&R;KOj+GxAEpqSFi%{oW{P#YxQe;Yv1K%cno+? zfZA^YvFzah+y&ip?JB@k>+=?2K!GtxG)~zN21&p^$x4?#!N^Vv^x&)zG;l*z0Mef5 zGcXFLh9KP(7?y78u?`^}J>J0!@Tg$Ndp8JyG{V6q>Th6hg=jfQd|w{{uLBwRATI+v zYUojhoMmonK=F{kl>|wf5g;^d4ys;#V!&9rN$6DL)h}p%4C9D#4D*adfM!BK2!QIZ z2Z2{(nYE{aGXR8(L3w$Xb^LJa5vM|RT9}C%KWxx^mIL03l@3dwDR#9>XoWDtC~9tG zuv4Jn61Tugx@GIS4};1yDP@D)D^*(tKi$XE3|8$^?H`o%Sv@=q5TOb9neiaai=Z)n z^n`(r_`KXa+MK&0*cW*1wa|Ii!)6WZ&m{+ zj2=J<)G(Jp3qgL@i0O(@nPi_T&OE;)`z?Vrvy8w*B(z51)9y8ahL!u~Y`S&EJ9NUW zwSGx@d@J}CVSXz2wbjCl0p0^0MmTuy$dm-YQ*8u$H)zDvq`4ZtUPYi7ID0b`3iE}*)Q4%&uv`?Q{*h7g)qT>ba zQ}v1Ytrg?-6nyk9FcrhNkRAkZS6BsfVwh*8u7)x9Y5o$L3(WdF!=zTQoJK3%P>M97 z;A2LkwO%+Dok6C#u-q> z9T$tgG_urtVRLpPLmsM6H#s6Q1a4~x(R;sscboW@(K*6oDNJa;`JPw79J+NqSkFME z4V?+%4%gQ=JphfgM#5o7>NB{q9;6X|EzL~*SA;y$Rj;B23a%j65ySzdH!Rm;fK>+w z?Xr_BQb5Yhd^sq21c4CSZ+$>>3xrhyWhNLd+629g^E(T)zj096A490VS%t_z5DjGJ zC_(uFeCnA}F49y)8mK{ex#m8xAS4(=2nB;YDnL>Z%L-8c2}Y@*6?@Eg!UD+vW)4Fl z0uqBa73ni34b0~{dW)HUQ-`BBpy2y)B;At`Of!Tv-MSxLmCu_IbUPugLCkxk#@m-J zUE+eUENEME9Y8FU#PJ4NnGXst9CnEZU}42{e;|qC)vQ?_Bx?r=*rn_4o_vh>&_UC!!~^72F+dUXPh|tNgut8g z8&?HjQ$bw#-Y;$>1d>2E4kUs>*Ns?C$by>h)I)0&gDelIwHcZyf&|*R@GjY$|F`Ub zgY={8WIfLjrppm}SYa5r!QkchOQWDfnC*7UW$`|SwNUkF_|`y5<(w2Ocje4>@N%LM zizL(%zMIv+vW|zK4r=8M(V#D?znZf`XmX<&;m=i3$>27gw6A8H+{Y6b%NCAxJ zgw?JLmjM{&`Kd#&uxhkQ1?3DD8? zu2Qf`Rw|P9+qob}OAPJG)wyf_S+RwG>=+Luta2@B$H+_i!lLT(f=5N7flDwHNl3Oo9bHdW7O7Y4F zE39uwiajT}@qNhtq}Xk_KdJFx3f7R!PX7(+O~K^fR@D>rZn#sI-tquU*QN^}nCv?R z;|#JF0mw}+jTR)8-_skmMcy?@kNyTPTK2)JsAHXeWa@7Lik-Kit7>k$CgKRD90Syj_yVx9YHp!!05r_PFe1?b&~u4V~-=A!H_a1^6v6gnCDrOLALr zYtxN6cn6=XJydOve>HKR9=OK!*~XE%#|2C2t1bWjxYEC#y2|fd!K5+Z z@t69KZ>a>R5UJ3rU(sUpyu!u4%O)eNdd)jmSsi_P|BCnMYG3gIT^%bvy2>unr@t-# zgs$((+tKx7d55d)ANuq&<)6{@T)7TiFP3+r>&fyjuCm+o=}XGLqN}?68@d*hce%>` zqE8=Nj=2%n=yDRe#+8%ZWRIczatgZImm8t0V>#7LRuAQCXz2P*Lr2$-8it!Joi+W8 zhKa7{G{)$9QDcIxCpD&SG8Jq35{((Usx>ThEzp>w>p~6NO*WS`eVB%WuE82Ex(?Uy z&~=E0?F!$Mp;Z51Za2i;^yxU!(a7i0-xuLIc$jfnv1UUx>W3Z%cW zsD(*_0*WBzODUcaL^P+D+{;aNk>#Sy3G}@C=}#QL7!=52BmzD)Ns>>n zTl&hh(MqAWo9sNxCCel5vESEGl|<%hf6|VH#$%5%5>s~fPmxOs>qH0lr(t9To2Wvn zQN-FO$t9PfLK_E!v)BYINqF%E2Ezq!956B#uI%uUoMn9>S)buX+<64C_6a5??Epcv zdY08wHSWS#YITuIL5noGq^LE&6>sHtaj+|t84d;jI_w%75__t|2zhxt z6iDtCZ6EIT=x0{Y-TpCqOfY`RB4lRet0ezd458%TzGMpv-5M@Q zY!pb2VlnoVYg}G^{6|`TVe(hNSuO6ONMgE&1h<{&6M<3QK*3hnK#50zzAzYf@rw^G z@dK-mgh{@J0yn4kaL2I-SX-gh-SwTsxzp&5gD(Kc309`cyX+&Nh}}5F4J@z5NApq$ zVZ0si;+>7yFhxbpl=xpdNX7_Vb;6?R8hJ2b!3Vx#f67%>1UHV)W4DtUcSH@Bkd!P8 zT9PawNx)RAI!RJgVs7=ht`G0ERoEfMSMM+`IZDPR7+5Ja8kUujq!7Jh>zot0v-i;m@_DgTFdm}WHAOfCs>}i0H2X@iq?sUTWj@MEtJNk^-U12bb z341Mp@8FpLEDL+JL;5MKEDLcaVSNbr*9J)IO9|v$H-mX|g)1~ADwk~yB6I*nTch_D z4|m${6o`@ZO5BsDo`VH^AaVW!uSp+8(MOF#QF47$qdtoIeN?eNN-@B@q>adh-IL4n zz2EuaR=vNs6un>kAL)CG(#J>sNBsBYt=;DK-BTFMQQsN`7I0xzG+A%Q2-@b957@^= zmKqU-)(2xx-z;$Zyc5h5Oxn}*v;QQ*yc;~bqiFm)WKFi|sgWMV3>kb32})V*jvV>B zca9>I7cvx^NNijT_nn*OXfQ=vanD4akeucS_8)&F)8wHrK>|l6$FVmXL`g=Tp9H!t z>`I?~7hx;=GQH78gmUPudhZ?oQ84nNCxP4Q+zj=A`G~cj>?E2(aESloanQsJD_*|O zvtz-8gVG_>YjVQkE!;6@Kf%-iNJBzlAzA{*1$)-wo+j?vGu7Oe={O9q_sPW=+q>-o z%jyG6j_!KYAo#rGFgx>tp4)qum!`Wi5-qk{;6c`-WoJPBOCb@&TKvG-;Kk$3f4&RH zV^aa=@l!{_G}Lmi!T0(B_(5pXgqG*%p`f!L*IO_RArPi-WI$qoHRtR1BmGif8#qP@ zi$xUiv?|jikQVRp%mZpdaHIfW(G8Q$K`w!Jh{=orR1p*V9{|V$v|HYjF0TRsfA6Vf zgZ5PTf#|hF;4KH8Uy+u=f*97y^52q<*|oZ%Y5@KX0rdC~o_~b0A7O!N`K%Q%@}L!b=Rs)h zxP#LCUj`|s?!iB~$-ex=8xhZ3073sikh-zMO%}eLH{uhm{Gb$Sshm17u+vTEUdbD= z!RYcqX%=&^a;l%^tDEfY4&Deq^6P`r+qnVCscZ~$UmOGocL3d!EZ-*Ijgj2}4he!r z?{Q-35s4o^;qyj=YC|6t>|J~$)FQXTmvm^y0nJH*19P0=jz|0=Te@9&BPeq6GC-3K3F2hFgv zRJc0vQd2(BfQ^^rV=&OFFtOvM#z-mCGU`5gbxj4si?!?~!&w9`wURKytnzZ2mH~V0 zvMiM3ysOin`Y*UH)hC*O%LYcpGcpXj|2ls}U&?}cFe4)BNtV!6FU2v62`2Ll-%$gx zxkax5EEvj;tR1f31{n=Mf5&&sWL}Uv9GgV?lu85R^&HmyM_}j!##^kr%Tef~FyYR0 z|DB+KgEPYst@zExft6d|?a`lH!{RGa9g!vGS@F>{x5V=3&#qKW^jBA34OlKgH9(0` z5)pBV|KuI2OT!fE*Er-v#zTjLLAo&{n(PM77gun)2&aQ^_(T}hZRjXonqyA9y$76e zuv`5SrTC)0!2C~joEqPB*k??(ZPZDf;ZU*U5j0=IBOcxG_6Fx~O@ zqiE2CI_Jf!Mdn)x85k}$HpfSQaLwKhRht^mO>@lF9I|xVxjp)u ztA!@oNN??QdM&5~4G69wS~rp|s!+n~pY}HMlUHx8Ccin<2S&Zd`R?3Z*zsEXtaVsK zvSr;ucbN`goT5fZN_P<226IgYxP`;;Cc|U|M~R?26oF?^)BwiI%!6c}LFX;r=|vbiL~4O2FNP zHCT~58nn+J%cSF5`BcD)0X-iA*>Dp3<*`g7`Q3-sDY^X7L0rD%4wY2m4p2|G2)pQx z$8R!W`vdN2 zzTnU$-aqTRDSYQ|XwP$jfrH+0w@yf=Nc}H?aKrzv=l%a`CO9fX%`~qS*z&1_ ziHzeL*U?2G(#G#wt$kd|T4%#h3OjzV^t;);x7A#TgO7J7!RYS0lQ863B%lp3di+SG zFPwuAeHvJ?24p9o(CGqbEqw#SlF&kJgdGo9wsz{9u181#W)}oxW?+HcGH^WmB{=k< zvxWjU0ZgtWyGjUi0#5V5Qp*)(_Zs;5VOaKcCI|O{BXKC;uP^M^dJtMPLZd|+^kQOn zanmsIpe19sH47r*-4XpLh$3KXU-2(5=!K!2qt*i36FptsU~DZs1ge4li9Kvyrq{8Z zYQonE`Yw2bUbt8)Dj)g2%-5dS!NAb^%nMq5DS`JZ@exaLW2pqqxA_4?$Ev!32^pdxD9}dTZPzK zFATtyfs8~XjUdH{#0U~25eYabEh2f)oN#zm>H6vIxsP5ylz~u5(&tR(U?hWhFjknU zp9$gorwd{s37q5-xucsc;pPx&o!0$LCG-&@X8{q3qeyFl)F9G^AnOomOOTBqW|Z zZT=(xEZ~>2^`;0?6OxHt3OI(fK=(H1doP-p**^o4_iEe*6PJCXvOx|R5MAK3&YlCL zj$L5PaUc*CpAs?_z|2l!3PO^647kSXC6fk3%}VkEwd|mLLZLL5*xG|RvhF`dLQ-b> zjP$g@oNoIgvZTzZ!jPn_Bu;c{N=8m&5b|mq;DAti_-royKi5A%UfYjr`kef1ZqlDJT+PT5cefaR|?I zF>sgfvVhHT%UUST$H%?;(_Hm{&;}o2LJsU`w`OM)cyxI8VLN!1k=pPp>S2{6$xUg^ z*}-;z0KPVALR2C^J5ZF=i7(h)UHzv>`cHY#|4dE)GmHA4Dd`U(U%Hlj@m&06@8U1z zi@)q#Owe6R+Kyhz94=2~XUz0Sqg6g{p%Sas*6QMY0^{V-#z*m5U zCU|88aP%IMv=;LlfS7N@!Q`_S$?P$gR8HXmiv7c$J1IKWrIQ8K#mmXd zL&AKglCVjhq@~wam~u=CMJ-P94t2V^#ybnch*MZX9eW7Di3fB$84YWogH=P~_`z2Y z(;?yHiDD#QF0RTS$HWWRyD=j?z}vIq*-dqSU(elqqvB#_N4&scTZ0k%+O_b}nB98Z zh)tGJo?+^TVks5hZ3Z3+W-sQ8v2ccXfEW{Ytg*&a+Wasv~XLs5s~B>#%*4#w@*ntEBRl~O8=py zAL9#^m3w`rs0M%v7UGKAIfc2Wm$HL&+?aC?QZpSP-CuBzAijapm~s%J~vYHplH_aSzT-y4@Mm6p2d9g41ghb8}|R+0754hkLe| zGxG1Sc?s#Sb}MRA1W9QMxF*j@nUh^M>rGgcwI!Z*DPYbp-TY!zq+eirM%>~FbK2s4E>HCgX|#-?Cp0IN zO(>hHTb!kSIbsAY=No-SnoXI=EaF(Y@<&y<8IHWtj7{ zGLQCgwL>pO6{hZ<>OVpdE*N=ttmW9U6zzIzm4mV{`L1GE-cW_2xpE9ixmdX_&bDY~ z+Sum%Val+qozqqn@}1)b*l>zsV{@!RX-<9SOfWprPSrAU@#>CSHcqnm?wTjsPSO!$zsKsg|Lg5rzfs47I^&CMk(e5jb9_NNs&Hk)>sIjH(& zXYUHLUp(mp0FaJMy`Ur68m4F_YX|dG*~)t5 zFy+ytG6%dBx3eNo(y?{+L)kjI@(0Cx)i+goAgftg^p4h5Hl%%!V3MFsocdvMOdb54oCdTz$>ocLeqf@UuAZInN)gdYQ36{rez^v-PxoMPJga znqO$+1u9$ID152LG*J<++|Z{k-h>=a;eI09Zy-zk$ia6=(K)1KOOpC1wl*HCsAJk{oaeTO2bjpgh z@>6Qo32<_HHPiq<^N?K8RL*f|0!HwM@#r)#K(?83su(42Wx!&I|XfJBpp{nGEsW2 z@VWb0mvd$2tcCkmyk0EHxuIKb%aiD~UBJRu+cyM|BOeUjOF14~GL!ySMK$FI=3)5f z204>!JB<|fOK5L%_D#X&9G*Rk=u<-Woc1zPl4+jVK#6uWPi3?Cx%=`(gC)B!wOF^8 zUClY)e9`}EbAxl0U&GafO8K1XSD{@+=SN`ie-s^0JK1csyLlXQ?FF0WTF>@O-B+^b;v1>w*DGF3Z?d-#=huSMl{oq*DD^CLH!zAY^%UR$ zGpN%taHf8PcTNgk2WeoNcw?)6XGNTifXIW3c^;7jgwi){nh~e}`z$ zut92oN12P0tF)V&a_J$js1OY=&POPJPPI_ zVXvc#i`f*eIEurwl5ol110*W4Of2!KT%!BcTxTziPFygauEUTXT#Dm>)Vwh-oI3Z_ z>UN6Aym6mNb*Aes8?gbwG@`R{z-0R0bwA-9V$$5ZV=yR>tJcjwkEn`+oTVWP#xoL+ zthxJn-X1)ZdeyWtqa*U6+LH0$>jT}*&+pEy$awDL(Xk<24OiXfe5~_{5$}2{9%Y`G z3k&x!5=ZY*<0e=b+2Dcm1}uzX@Z{q^U|~j_E_6?~2c2vZ=b8m@)X8SGu|MK*jAIxc z%MR@D`;<9&N#vT038eOqWxCMzG^2S8MGOw_$`4DR>h_7ql%2aNMPpw$>7XvfMHr`s z4(5vXiJ~1U)zA*QUFH#y+K1^)jt$bl=X>jh*qv2Que&9cJX29MwPKxpVskr58cIIMDvfs&w2jNg!#v&Oqu`rH9nR&Jm5)1--0L_e|H8#-G4$^2o` z2VTnjy-RdnCx+GSgwZ>OBo{-+Q4>{J`tZG{ZqGs8&7a>M>ZDK9EvUT1<32ZQJYoq4 zs&XH<#)qim2X=XGA~s|o?nDv2OyQQ0(=o7EpGY{tSgX7DV+mNagcHVg0)=a9i;aHR|k1-dFb=|N^|=5SmLxq5@Y7&DDgJ;N`S1qWRk-iJsW4e9AsMQ zlEZX8!+F}HXfu7p>I^8uu-_{_4c}>X86B~Y5%l-VN6D6uPHyS-XCo@8wXb)!BxSqv zzNRLoKC9glo~8GHtIz|g-ufT0E$hAEx+F&M-3@2|A2fh^Z#ePq8$e|UOiBO84+8f! zp&DYp`C3JSkw*96_uupn_Rr%(mfmCDw{G&@J_tth*jVW#Sw= zc65+JF*<3s6fqq^Z0|4f-WTsez3K)>Qr+O3FUkuYFcv;TQrpG*ybznpxrIP~C!D=6 z(4JPI_FA1GCLG{09gBz@?{)qu*Ux-yGOAf*zT-)`{d`9_EI;h?^36N2CYef}=jfD> z{KjjHWL>cSg_Na(awIke_VR|^EYzhq9!@}iZ-NS;H?`s!GH5DPdnHL?q!eKbmngD$ zba!m#_uks~$!f0`!7{a%BT>`Rcwp9RFF!J{&e!qloiQD_r1tyIJomo@Iv9(G#7HP=y12y!?$< z0%25ntEa}n=lL7xly3tRG?9Z8IBlB~Ak%>fP?x(wd5ijvb1d2C#jGXI&_7mjy!~Du z$nX0mHbCz@?u&42eDpXr>r^=M4kf&|v%RzQ-Y|XaErT~&?^R{%V<+mpyd1rE8hzl@ zI}FC$V)2Jq54qK6@s2{=WAtc`|6Kqi|LdSl{!irm*K?$N44eU(hw&9P$P<12cgXBJ z47(RnXk!W8?+6tmL>@aP5;jASOiaQHDZi44$~VI{d{K2L+yM!}&KfsXd0}EZsHPA+ zpjZ1~%rmxvL*2Vr!(gzF2e6&jvds+{fmU{c&&dE-dbF$9_VnA&yCrAElVts!8?yct z+d;$%L*I`D;TDijbbW%p5wJq+7W%#?m%3ptU*lrN)9o??w|e=gx`jJfL*W$DD%E=k z{Y##DJ4C>U(KQvkc9|dp*;{Vc)Vv0;tN>s5_*K9(MdJ=*6`cLQOb5p>ia;#sm7Zl* zr~eeTJ_ByF#Vb@H%`D(XN1oM3{PkS~p8j1#`*#s?#di@F&AnL#W_}j|HE8tu9M1d8 z%ey)Au@^e&pG0sSy?gEek@>&$v!)^YAQB)r^PSA(~;ze*|U5k>%*~QIlIQN zWu($&FWYKpAaloOvW~FA>1fk!dvoC0 z@L%_t{cUPzsDnjK+&2N6XVPTi2m<+`JlQ5Ae5TbsBMCop)3JUB z&Djo{cKm#=`ge93cBQLNH@6t9B^I2TM}sg=8;RwK9I)m4Lk7Mzh=1ZazIgGeAU+`{ z6g3BoaV`SW0U*H>rK$lfgpgB_;{TEyQiG(BK3-|`d-{S2GE{=1zT!)ycpwSDsmL-TihQ0e z(R^+=E-(egapa>K2GMYdoP2oDhJF42Hp}%~L<=)sf03$VV;nG;nn3QLO>Y#q|=B+LI>GpX~(U!QVuar@t?bGg8_8-et3O$XpR#?6+;vf1@}#*%Qb z6<#HC#PFA99bO4ZkB61#8q8J3xdJ{jzr^o7@ImUPSR&~uWVBTl4)$S#sFHPteK&^n zz=f~@8N{$6CHDl1djpMn0wa3^X+438-atSbF=SNS8(7j4C>+#N(7K+$z}~>pobTqyrHUa z`A^!0$bg;DI9bw-LJdJsu*aN7tRL=uwLAE`ju4H0Rk+UHt|@2-PKq z5cnGa52g>q;cXZKH$b2f5i5@&9*m$cj01uC0*TuVfxMo;z}`TMoa9sL}uhvLpW%OR|E2Qdg=s0^+xRPiY_H@+%!nGDQc~BxFB+%cuN;r z+tukr0?a$$J1>`c__Lm?=E%&uW`*)~WP&!PBlEFTe1Bz)A=ZR)n4xFJ?U!hr#EYk( zqv5(flx*_jcD=&%eo399K0-j^fjns$HJ2;y9(coN$y?>Lay|+e$DV*v!00L|ExL7a zrN9uptT*^V`MfLRwt{#RU;Iw5-VP#s21>~3ro`MHN}#9A$qvd@gSV&*usCV=i zSOKzQH;@dT9y@(WkkB)}Due7Wb^AeQaqzTn1!RY5%gh1Bh4ys|*&#)h;U<>u>Z~C< zBp|j@kIch!QNOk7(&Ny~Va<)Bei)#$wRL-M4@apGEO3(q9SPf1l-X8jKTDn>7P$F) zIg#l!Rk3>gCrm(7;p)<`{6F@{*O61iWsYTTEenm~T}RMVk(q0g?eSD`yF=Ivb9|b( z-5!q2T7r$82ISIIjLbx}SEW2qJwx2yp9r@$ekQD;skBNLHLG0CR?iZ*_a(yHna^w= z(Nues9l49Q$s2Ps#O>BZ_#ez?eK>U0T;-MAZJXssax=w6mI9lW9OfPCVRY4$D3eii z)o|tNB>TE-u`?fPP?sZi<`H*_na_9ybQL#u=mvaoo!s%!JaH|nWhArZjY$rtmab~V z`>m6I)+`jao3!*}TADwgtM=nwCGvl;CE_w>3ypcyl)_LI;s@5qkH~Yy{vh|murzjM zsO0#8Jo!&`dE&c9E_o5lY8k zOp(^CUA-z^qAhIC{J6$;nP~U7mOC%+V3)tPRKC=1>L3?{BwEjG#lhqTi*c+KU(eVR zg%4+#vIWe%x38pypE1o^ar?)XPjsh_0H$j6n$=4AV)IgQ+546>_R&u%OqJ7`)$`?v z8D(Psww9mh@gJ5kRjf7J=E|L~ZxY{q6J{so$ZH+95LQw#3!681)QkG!%Yygbz6@_l zp}JzYS@+x+%c{KWdBN~z?uWCQ>pJ8B|IK@ zNzUMSPzop@5QMmLrBaalxn;nqBRPW{b{``4yJZCz=9Q(yI;dx%A#aq55nR{0Y?3u; zZRvUksW<>aU`n*`qtiBwpg?V)fxPtj;KIP%-1TuegY2Oo^rQ-Zd3flm90(=C zt?*O{E`0del^8NB-lPYX!!RRwG^zL&k>g_se6&rP9_jB8VF( z_M)gF_48N#HW=t+DqROoy&9frX|x#S<}zqxGQ#)6QS^ zYokI|px^jZpA{&3KM_~62pOs_@=Ngqf-=ms)$QUT<|qT8!U!tJJdb}A8)KelLFiP{ za=e&D(vB;Zt}Rg=3TR-;bFqU zhmMlM4#7WGsz#)*TmFof~azWxuQ# z&N@o+sT3{_{d$QnK4ynRo7E@p!JiWCCEGkWq11l0%Y&0(?Zf_g55#b6=#aN6M5^_6 z%v&@~s!eywTLou{U2b_>tEF1Dd)}mj674@Wd6P~{w1++Oe*Z_R?exrB^jNCR^2)3F zEY((v@=m>xYA1*&JAeOmPq5kWy8WYmB^?QNGmSI8r&%tnFK88QD`7Jq)Sa}B?=mAZ zy6Vkt(dSf{-!a+w_1E3Wp2O=7ocNV;B-xDxH&o0Q))&DIHEia?y3>Q=yF7^-%qc{E zR1%ShT7EB@A#&TtWr+5fl}sJn#AFmV8nFj`DxPgWjvQ&;-g*3v;^_8#j9se>H^s^q z!u?D3Dvk-4dbLj(soQ$V%Jo9=9agw_Lw*RC(bedqTQpm-P;;O0wZ7thxJWaE-QwA$ zo5Y>5=%@8{!FM{FtoIeSu~Rptpdt>w?Af)y`yap1v7hFLQWL@6AS->s<=5t2>~ zBPZ)-&zgOayz;Ygdg@sF>0}V#DIYSbcA>bzsBUrxoz(n!E`7DV*gkCc_WHGt=mRs= z*>iI>N$WMPekAL~xP$%XL(iK)3dbgao^Il-87S5jwK4ymbUTPQVinlaIJmN2a~+IT zg|3RqOfq-`BNj!?Q65}aU(v+|M2$sJIY|Z&J5;xSbd)0LpsCK3!&mOOUeC7>v=ceF zREl&Crxp6vxzks7=vACX)TBGCh{L%q_9^%5Q#b@6zhaNu>sHnEPYI^%)EL{bQ|j|t zx7V7@+g5&Ew`LH7Y-vg^q#vu!9mW29ru>?23RkzkD_l`6y0&_|U<8PD1n-htQ zJ1inOl1XF&|TrzTTNGdFUSYI*3bks!Z)jj>^ z8Lz8#e^=L;O4A68r+i*|`oMNw*?M|JXTi1dHB$RKTwRq%{knF)d4CASO8L1Oqqypo zWFEup#b9#lYhBF)DaINVNxizUi{5$8<3Rs;o68$aeyJ@zSldaS)Mjbyf_i-%Yldm@ z1wOmJeEYl^W%;ILp79+naqM{G(k{=q>esV%`_ks`+D$e-Irh)uV(O?PQwX^i-KlZL zry>`O`wYjF4Fv~g)#LW_e$}|So&Hf=Up^$zeOJ>5;*%O~w^S~-UNw;R?E2Cqd3gG^ zZI`f((fLelBc-_AkIZA|P$ON*>z*ZVOwMH{ZuBlK(^h3SX!?&Dk6mSyJQK|@#hF$c zy>qSqA@f*Q{4p}mJlxW}W)57#~Vn7Xfe%C-FJ{@H8nbsz&{vg={E z>mw&kWM>?8!A|p=CNU=Ss}-f9)8dQO!xE?$ig$22pB(i`RSeZ!ziB*qPm}Rv&B)1{ zb>+WRk!2VKcQbYHQU8dIH*0dz1a`(!7wn*qO8Cr9oI%6ayX1j5qJVcnD9%k{s27(j z`b52KF*a_w$82e3a$C5@PgZVl-AF$4s$;K3UIv;l@boS6?W_OTEEEqQVaMJq{kEwZ z#eUm}m+_KY_A~SG$(!&urJ6CMyvb$YR+#JTPDhgR53FSeaW^4~#7vNGeI zbsgvDVfWT-A1|5f$~mj6{7T3-o?e4L%#cW#SD1F&8W=iF|L`y@Z_PHzM)TqlOzfh( zm_V<`@}%`8clq_z*T_7|GvRdBcIMHc^ zwo*_zh3%5JqyEOTOQFVT7vm}6OYxnlikghMIG3K8U6K!-4B(}$^Q2+>M36U^%rk}T zbJD`U+%J3))dblYZ)-MnspucdWuC4(DT?oM{@A4B;n&Hb9G>m!{|32&Nc>3E! zx6_-9Ps?>X7EZ%DcYY{6STu6d<59cTbdpw0ze9)&$kuLJR_{U5yd8JCZed|0wKKa^ zlc5ukGHIk_lL5PzbQVlLppX|A3|@NXfQY<&ub{J_-+m#!o4R0;55An$8TY<(I5T|F z^(C`*ozX4dMZF4I>XP~8b)^Rxi|g3LbI;#BXa3t@B3NBPXaq|Ug*gjL;tz90o3T|##ZxYd&`dnnbYKBRAY6dPZV3T$G zMd$tpdG8$-)z$rv9%g`{sLU`(vw(nfVTKt%Q3M3RPE$}5m1Y+h7_cRgq1mE>l~@w7 z8yhH5lNc4n7B!LBV~i5P_O*a$RQm6;_LjK?6db; zih{W2MGH1o9=P8p=6TwaUyQSh?rjwdF82yHH4aFtJ~+METCe%qoE_2K#imEC)|Od) z<#N#Oa`ltZ#)DTJF>mgs5xtP?&Pi<)x-9(Bz_jFWQl;_mtqrK6G3AlNCN|Cge)Pqe zck7Q#8aDCgB-k>G?uYOim3In*nF9STf1Inq)>2C>(|Th0}{X3IKvK` z3`;|h>!X6#uZkKgaMWzJkPp49x)y7Av*PISz9C%3pSyyZi#lh^2O0lS+F-o7T=hV9 z(O$M@z0Lk+hZVbwY)6TTOm|M2W~!P`Jwp^=zi8k4H-yHoSQsM!zS`F35E)OEV`s-4{XXdB_GbDZq`-;!8vx^0f5Fwf_4 zi@xT&A-lU@%tw~SXbRu&#SvwH`Os+zi;Hg=#&tgLdN%V!-XuGDUB=m~i|jVZj|WD0 zOis|xNt<7s7nv^a8{$BRgBF=cC2xi3Jr7I`ir*MIS6*)3d;i?2IlWV7WoL|7RT3tU z8egz)e*cF}{(F<%U7|%cBRhZIsUmXD`6(noTEi^ccP8yIm$A&bh@2qr4G*c zY-L^7_c+=YnK3mnas>v?#buiRxtCr1+s(>bde^(>UNqM{ZpkXYEW6Zc>sKZ_6HL~Z za$;8jTj_DrjW|)h&!XRPL0oU%OI2-@soT0ldB&aKF7q}Q-_jSqA8Dl?rP`kzE6yEi zB3}7m!`7U+7P%$eu1c*Jau0+L9`EWntTNg$r}g%+uKA<;3N&NH(+o;IhaaI6eJ2v; z>2bNsmGawh()^Kr^4puF`8dyqqlfu__Ltw*KvN=4`r#P&*FEJpn&YK7j&C5zW=Jm_F*sIwgFuGuh z>9i*@z18ssL(VTNvB=!jqxn`IhTqh*9p!cpwqJFSX*`{B7aHRUChsdvi!oYKU1}z> z8B-p{w3#1|Y{{MbpylwSX6K-cU1e-BHqLhAk?F%GzQscBv$B%r9kWb6t^1?6(0tgw za~BV#ziqo%>N&sTcJ4w^QFGDeZ28={TB*xP z)83a~UUcV)mTR2yw zaR}Ja&7k~`2i?YSqf8C*>E!S!oBTfLzEE_^cWr6#MNJonqM|stOZ(9t@vZ(Xi#pF~ zy{P)32uGFuTm74F&+eMzOWrMNva+FySeP*<=jR-M@u`a@xju8=-m)4u zulUT6_Zq1>CSyR3dr|!Y`K`t|?=HmEyCMaZ)5*(L=Hq@SF6canlQ;=gZx=+C(LIDk zEwlqE-0{BN|G8w}J~0l~W}0j6M|k7vi8@x}gT-o1T>*y0uR8RWy*Ig~cZ93-*Q>5R z%3Z#EJJ4#|`i(miZI4LAIMVD8n7Az`EiDbF$@6_g+`HPT53nXrXns7q%L=+T5@x%4 zt>LIqRyB|6T-Eg>ao|*gQ}?dw-{CaUq>hzi&eQ$%T3T(l6(g}>TDHb=N&>IQ#iF?f zhkH%iKX2|f*eW-{dRXOqv!2pZDn09C(CA_rx}{DpdUo@!0WchRX$2N-lBLx}O&qC| z#fb49!zTRb7`S(7RsVu$n=ejIy0g8LKrGV3>(Ku!onR@CYQDPDtobjeg?lV{>j$~E zqn~cj?Ss*|Lnwk?i7g?3fIvu~PXK*jE1_H-06p(3p_3k9OkhF)rPV71od`M;bRjS! z5EDoU%n76f76e@hED5X#tO;xgYzev%bSHp)x|MYLW2L~3z@DHN0q!NO6yVtGN`VtW zZvtlm7XnuTHv)G84+2kuJ_KF_-UKoNIe`y>f&kV5R|yS zAdVoOfE^kgN3QV%pAdXXFo9qq!6bqNf<%HOf@Fdeg2@C^2&NKDBbZJwgJ34XEP_;m zG=g*j6+s3;CV`qDiy)g|Ho+W%xdihF<`aBI@HxR31Pcgq2s8w_1bGDc1VscZ304to zAozx0GeIfA7J{t=I|z0X>>~Jq*hASRFyI1)G!$O(K16a-2FUjjb@e}cXQ{RjdG`V#~a3?zsq-~<2z0*R179{{VY zXh;On1Th3+1Av4eia=~gE&@&jNHhW@5lkjXBM@SZCXf)A6W9{;B5)vZCrBhnBA85& zMzDooE5RND!%hGZ0lpSs03a|W=;#dKx)5+yAUlHa={}(#FE=ma!v|CD!>3ie0DSn~ zD*muTPhXJj`BBpTgJ;6Wz4%~Q7r~7OnDQ{@$_?1vigFOR)Nr0L7|NJ`1M?4N?gU=) z6qCHf@FHOpGX=uI6bRf5D-lC4juZUzj|DD8$}mL|=ggAe;3tL6k?-o>WIbe&*fS{= z!%BuV49lx1at(7A^ZqPjrOe&H%P_3wk;%(gW;DRgoXY8MCnSN38evR=V-jM9_PjL1 zV1`i)6Bw!(Y8V#tX909G(Er6RtLBDR8wK1+H~Min=_bP!6!(*E<@oVD=~j&&FYxdq zgT|oO8wEZP!H@E!TNHl$PP(b^)AyuXF@6FN4nG4B4nG4C;LS$CAOyfq7y{rY90Bk% z1Of0f3<2;n0s-(d3JKvS3gQ0VD2PEg{ES98{KO#~e#Rmke#S%O?M6WoMDUXW5&TSn z2!5tP1V1wnHGXCxYW$=jYW%1W?%hT~Cc@z-3*qoH8{zOX7vbAVv6(j*(jmB zDCDpB2m3>6t^T%&a2|LvM5=^!gAmCk%Wk4Uj`qsG5ax*93&`E%nnI*>YZeMi>4%;1 zwHpNax~U5}M?@77=NmLgdblUlNN$RLdMd^9RBt8pm_|g`L$m!Un;Shxs6r<9NpMw0 zZ`QLe`QW=rVtvDAg!VGHr!u-;&-yXI2GJnLqfhl*`Btxfko51KP>}yOBA0H8esQX2 zZuE;OO}LR^sbC6t#%3lfC<}*x?btCb(mdX$Vt5DQ3`{vw`1T7@oXG&5phgZpcOQyC*Q1DO-~=EapKxzhpHvf zUF+=EDP6=V30uVx3!IHV8>)U9{PbbzSIS+Tcl3x@F!{xL>IDlz7P*hRF?pl%u}QWh zV!_TXmxij>N4>D@^2bp1lBmXvy7(LQL)F>A_YS|@tek4NR+HLh2$h?fEz0xyZzeu; z8Kw@5s=1!9O$ja1Y*ZLNOl=eVC^2PX%?{;M?#;w%N`&d6<;3~Jr~tc-Vw_5bsehRy z8J)OC`M71RrZcozle+V&Vd^cDo?}cIP_$q9i`*P0NgS6`c%utV!>(BfF|5h2T4zBe z9{pElD8o2z0E=5+r6Lvj!==e`{VCmp4=YE?#X~|2Et4lKV8$>K#Vbn=wYoTVv z254cz(3+9}Wp(H!p*WA=9)Si!@wiLn<`ycsMfgL`DildpTR7%gP$S$lp&A+27g;4w zxUkuPX%C5?g6j;I`*4OFdN7$RS*|C^(zB*u;^a;8g=LLhB#eTNZX3q~^4u%ghVMh8 zaX-mmq!cQ;?V;V{*Dsi@ld&0DVx{DXt;Lg{MUvlPO2Ss{DW5#$PpCATFft!ehenT- zmWHC0Vh)IX`F_QW$`uy3xI_!bkVFIX;vxU@=;qmT=S~&k*y;Ce1v|Sv=`WhQQZrKA z_4ctyq;76HM-!qsq0;O)s6yvJ(voo-zt*#+Znkj6uD>3LrOTntTAUjbiUZN&8#Z62 zYet5M!In$)<_eSy4)sp?Abio)Z#nQg&~HGV;O|r=a<|#x^Kj6LPC-QMzXC zN-;u*h#oE3Yjj~nyUGiFcd?}@Mq(&Ply?mexoW-cvQm-~(sdo~oxFPgZo0f4 z08a|1@Z@D)I5w3hVc~_MlH&D|VjktrNUQ)D2|b9!RhRH2R5G%3pYr57UO0a*PeR=d zacd9qBuxGhSyjf9ceKLa3*_eEA(psN&s09Db~{9S_s)aL7AI)Z*e&Fz&}Bq>$@KSW z=})`i@LzB@0Xk##QVns}tSAQ;oia5h|K5a3yAiu%KK-LGCV5W1tM8-tq;GhpK?1+N zg$5tJ$~ZJ2Pu~)5w`;;uJ2s0-W5o|+)SXUWo@JBZ?R(VDutONDetBxvPu_ChcRem2 z(d!kf-g9NvH)aaoqfNU}nUE+ktrejUw@0XZfSlo2e@JXOWqJ`6Pxj1}($j$T66b?n=n3=-# zsu%j1pi``q=P@<>xxWsSVA5G9S&XU0N*|-mHEyJ@{HjeT1{&-48xFb|S%=9JzSZM5ri1rssvcQ$LZ1=meji@F!b-CL92Y-EEz>4*g{5N;C1wF$x%*;UDC_@xCx$B^?cgoTpO$>`3zUj(h!o8x(aDeGk-SIB^U4 zjBw{?1UJkzY?yKX{<$-!-<)oQuFa{w+QANb@JGzrhu+7{(0Re zZN6jk4_vBGxs+bud-USvb1k>AGA#6^6eT0r%r<9ityNYA*4%|7wsu*9ygtjYSj(?d zm-=FbObarL=ay~f$L8OwD!TWs$fNr@y}!oh4?JBo@NJR1;6hMS+t~aCl|>8Q6wQ3( z*KRc~|K5orujBOvcW;`lrj!;ux!i*C(ee|v$(-9h8JGXfk3}!PzcTBXcZqK(%*K3L zI_fK58aZ<@hp!)ZtvhBY%%{_8y*K*mCff@E4ZnQgEZ!u%|GOajgDy~}Uv>RZ{>&9K zj=Iqm?g? z3qI!WrsDLVh3~3iI90cP0W6JNSd+X7<}z49IKubiQ)b>Kfy|8@dg{WC0ls=7cMyhu zQfsNy*(>P{1(rw`#|AABv*Y)^m66coRhx^8yH7u9m|&ol3pTXSx~e^Ve@oYN=W|dt zTBq#uNSw|!rvJ48`~WiYgNd_eX~j=*Czd6o`9`seKfZ@dqLh?4TA(TxO~Tl_0+k<-p*P-7--YFkZvJw z=0vQ}`N@9r{TNo4nvYQHLX~J;GPTadPMbq{pq2sMj#?Mfxr*n@j`6Masr*A13ydhS z+nJ2<(N#k?Hkn`j2NzU5YWZEZHlMZfT zatQO$xnO5Z>sQDh>jXDo5If)rmpoMGg6#rNKCD-No$IGSovY@9OC-lhOO}SmAe}4V zgR3x1=eP8OYq8wkiw}YP`S7mOA5_l9e`vQeKe$f&P`PS+S$#lhx>kE5G(~G&s5cnV zqUKs$p*xp9XK~CA@hRf@ zG@kfsUAXM8bKMgjNz(QHuAeYD#O(4Zb0N=KC73X|!!F!Hfo>9i^_D5S4hw-YM^=k? z)>>O=$3sK4uAKv*g3mpJ&xSXK0JI4vY!mpA0cDt8d`HD9;iE{-IGsM`#sCOk;A62b zg9udL@((T+`u|??43xZArY`qd7asaYzu(e>wT6J0GH$K)JOukKT{eJ^4?TD)>orh>XoT;-o)bG13EoN%TQ7=$BTgFe8T}CqHsbah;;XPDL`wUrf z0~QO0UzUTgkcyX3?~426jMOAR5h-)6B4wu<{uyC#&KajOswf=>s~aC}FlmP}SYt~2 zFpWIp70030GSQyySZnnvd26BZyiTG~B;5e3pix@C50) zXPWSFZCu+2C30QQvzjLu$+zN?GYn!9D+K&-s1$yIWg^>0B#mp~9=}w2sC+_b0FA1L3qTWai1& zEKQaz=E4Dc?U8fbY1qeK^Fo?&dOVko)-xA6P0qNAtF|AXl<$6C|Fn^_b}@tL%!6On zpdbOf3lBa1gP(Q|hao<#3vx^Oc^wa_h@7EK_Cy`EyF5;c#DuM+Vn2HiDMkFv?pVO!_bwsk&m~PPa}< z_rt};0@wklHX62^A8vm)Ikz{Z-d~l-@owh zNcKBx%9}(uWc$;?U#sDW+W*|S5u=T(zjjdhXpk5#?EnHb{~IRZao$j~omPB=SRfaj zJALLfOtcwjHIj7BBHpODR=X_PquuA%B4<9AEt^A`v#X` zGsGV|w3=sv3+Mh^&%6(;y%W5h?O151Wtf)JPTCEU*%*IU`3^pT$=ylYQYEv8&8S%A z%g7$t3TQpOJtSH$)<485IU$jDI74W2Gns8{8ps7!$^4govLT{IKD3+j}{jJyYa)6RyEj)H?EtJWKZX;01Lrv>ywv?B!@#>?+efIVN7* zpqhrY2qqKOCUB`}fFD*2y_EYkuqjXz2n8*D2G;b0h1Lho{3OQw+Qz_Wbk1NH2xL~| zSP$8p-f%*B_7H-V^e^6_JT)5&676J%xn(oiy{Hd_2(v;u)~9kTh7>IPmxe*heCpkm zJCuSs2yr}=brX!=Hi0#1eBXnzlOKdHXX^&+nRA${!JN!vp6y~g=yekep%mZfqRj@D zcK5U*l-g=n-}>PSweQlfZ9}lktXZSHH|JV^Of^h7c}<=_?Y+>3!SWERP-r|Z5_}Qj z14YNXGo_9p3+G$Pp%)ojyNY!jcGh-l^6;GAwqU>Pu%jmC4Fh+~rRzie+j z>o*^N5IP-MB}eC#O0Animfu|?-5#=eifN+6YV8Va5ew($iY>>8t>rNL8nfTJc_oZa z96aXvQS$$nTN{-Soho?gYoo}7&bOF*kBuA z^>f(i#WOfDACHOS(A==V+Uu_!e2c|+y_Y^Qn4eS;C>olHmmXNdbr4m30za(x75v-z zxX;+9hGnv-rM6j~_$Z?c#V9ueTlBvA{I(?Xqb~r)ssva;FtJjfI%7AQ9wlu#(eq69 zVumKQpCTfxby|^Ju$y|-$G>v8u3~hRJ ze(&Ru_=lb5qWRv*FoG5xW<3lx!6LqpTUhrA>1mmkHftcIg%Q`X_=KLV&a)?ZCgWp* zyleS4dfgr6;+0;s&Augsw!5+Et#_aZjY?ie-=iegtaA_ONmqWOXX_}Jb=J$O zPIz%8^Blj%RLgHXylR#EO_}`qmoT7-U8q+Q5!RfNh}}DXGta)({NTX@W^B_%ZWTN7 zK!`*xxqy~Y-F@XZUr3(bIVTRyz5ZqWLc>?%4Hs{*upUF|yE9%se!PfA?7NE)rTmti zqx`oEwnE8LWN4(kx?8LmTFBpGdpClvE*9%?DKifIC^*tH?1{rD_h3`*2&d`7ozko9 z!M)Jq9Jw)q1P|^HL8TYBLMR)|MH?0`=X{Mz*K+fX?e}uOn8*%rO(w+$Id9X3@3?Z) z;!~V=r>LK~EuA!1IQ`D{HC%9)$~tarmncp|3fjw|ie0rchJ9%t8s0~hnVzc3GEwQF zC2?fWW>-#yrQ&)HT353_HNaG1tN*aOY^_$j%ul=iz!Fca!3Kd=dHd^k{{K|jo}llG z?E`o3utXLNEx05}px1YVyjblQM_2bvR01Sdo^*&-Fy;ADp-Ko^_$63IDt+d>wgmE6 z)};?Dzw7txIL5~Zv>v_J(3mJSRv9oEEbg|_%Vh6{)5E1EDnod(BJ{~c5r&hRc}rgu zVc6X*-DDqMLdB$n-hjBqD$&2d4U)~fDY(2?m%dzHvU6XrO?K8pf8Mpoaq4z4rDw9VOd&C;XS{b&lPjK@DQS8&IjdE zkG>MOh7PlXdH8;TBV8VSO??zzeY5?ly!#&Xg9|EICEkDfp#*qgcxw3bQb&8g|6Tks zlm%=<2>K%7-UwFC9YrFX2h>&71cI(qOEFI+7UY)gFx#%F7WdvFIt6>O7Wk48ZvB3| zQRn7ChS8RSrWpz8y^3o2C?a5A%Ls_s%?GfePc&W1M49 z$#0O&7biJ}l3{mqHJ%*xJL~sD7Z|x_VcmAYRMiQ!&lcUOT#pRvZrK647OR)BN{J4*9xn!6C@soq4shg97=gVZCI#b_^a8k*>mMzlQ1pL zMfGYQ?f(aUP!`K@%6Ed9nAWhovpi9$&1q#;U+pJEG3>m;t~XkQ-5azB-z`f7nz57B z&*%1q%F;YLsa!L5O8h477T=Cw$>gEFcEw%ZdPH)7QjmskCAIT4I(U?lo_aTT+p`$%{xHFT6H&BvY$ zNY!-qUgFzpY2UALW&x|JDZftGBVr7JSwt zR9~VWtf0Ym;{u^qk7QAB|e)=1SIp${j)USLTQtQGZ^ z3oF4#=U~tI$A-Mm5s&J$WGdO75vY1V8cPc9F@hsA&(c62ZG@RJyyz)hnO?x2$*Zgt z58ptusnOrB%@u3@mRc&PTTRs$$+2cdXfj_|>S|V!R(ZNFzCIfHulk^ebA-H7?t5@( zZ86!yd1~0&fWol-*2LF%OTY+dE?l%ArqSF;Wrvhg?;d<KQ(t@2}BtSR>P-ol9l zt2-3eF@5xsH3fwRZsA-6*eq!?^jwBGdwc5!iWw@-p39sjj(Rd@T0?=MD_eST$uU-n z?@0x&E5}cuppWo0&2Wr=l&5KiWAt}CP178s5A!rlX^bxCX?`|Cdyqip0_f<5{2y}Y$97K z;`xxBSx5w$-++=rlsY+=4AJ5SEEt$*94|^eoh9N`tZ?L`#%yQoojDe}^Z5+|V{Z+` zfy3<(EKh2D4tma_A9ml zs1YO(P5r7u$oMK9UB%NH9j)lf_{BOp)WEx+Jl24DmVWS*GrC+yJ4zs=kTB0mooAH^ zqpLx)DP6&5x<*G!dAdPII})AHyB~We!Y5zxCjPC+0>{X)1h2NmB<((Mw@89t+o3xo zcyYBz+1-n?O0F|ku-Bw>{}0}c(1W|+wLpEFH%kRY7V8}VKl!e9L#?9Hw%cmot2K|k z=Dpnd*h^PaWVOwoqSz6R~Gf@XqLfZKGj_z7yw*3cd%HOIM6@ZTv6XY+DdV{Kg+5I zA7~H@RLKWw@L;SyjJ2xLoJvu{=PFT7GpQ=PSgL4A!mxF=5w^$J*A=c8=Zyd+$v$eu z{B_rsDLU0>E(aW10f;FAn6D<1z?}RV$uDLN`I!qxxi@f}Sl`(hXP@vEAE&2o@|8L08$qp;BqDeQPm5eOz?7a>QmM!ky8q(tSW< z@hVY7d$N)#7$5XDFGeeQem8}r52JkQON3T3WzrVnDpmZ(pd(EMF+Vt%NF zB^zH|IX}pkCtdY{0W+v`9^AMpSHWyHxpMxxl&0~Izb})FX<%Ktn3|l2vqc0>oA@{7 z-Ld^bA$^9O>(z-pU_o*Xd+?>aOxR=;1XbK0;n_0WrT$Pig-gA8Z@?i2_T+L0#7qS= z5@1yhKNSFDmP;VU$J#kPBb?CT0(HfHCcv7Lf(rDy z$wNnry;=K_jmMbUw;to>QZ|s{jDC$S>DniT-Ql#n2A@%nLr4tF5XN-SGVOV0h?W`3n3=CBq*xFPCL6C_`^u)|QGqp*@@|Sd zoTRtn5O=V*;yoALOL3t-W|rdT`o>v`AE-8SY1+u8X(P7*HEdsx*C2bUb-3ICsCu}F zfocXBz$(CASnF5O<~2_Fx|e~0LSbXzqTJ?f&`(}*q2FVl*FX1zZud)Q?Wjc)P9;|H z`xyzI{9f>lfpQz(<>(XjLK@Caarfc|vudUuNMCJUtj8lv(3PmlPg|lWD$x-=l<1-! zN_0;TB|1kXI!`6~QI|glp{b9w(Q7Y3wjUse;2?pizoU`2!Uyoq4{(h9^!x!H^5XOT z&~F7QU8?E;ZK`5Qb&vq5dI^x~3;|L-L#dvnRDY^(?9OV%O_=UO)n4p_t0vny*2R3p z{TR<(xKTm8QlIjHT8}d3k>FEquW+EscA#o^pc;3e#tuJ~LPL*7LyreDEcxLnfI(wS zDaRR61H}#uYL4}zr^1SEiWbUexDff=BSbz=Q$DLGpU3OX`MmgO^J1^i=EX0FsT3uYY6+!ULaBnG z0-SCSqK@b(T&ZxB26)KDmI2x^6Nxy*J+KbQ*`mvU30EpE9_3!ialuh~zyB`4=i7(+ zpXle)LKM6CY>VS?GVHS+O_yEMZ%rJOhn*apy}(YZppCzcu};2^;<0zH3# zhrGcH_b5Kbj9r#>G_0^4^I7^dH`sF{SXaT2zd;{~-W9&$N3>BG(ei0T3pK(JhC3Cy z!H^SFBQI<)lm-T1<3Clm;inxjiQk>md4ywY|Mo;GVPtLH&dx}V}CW0wC)I7%lJ`#FTR9e~j5e?J%@CrHo<<$nR8+A;{m{#Q&Y zosfDSo<#CR2vz+%COl$R-OmJ=kFy2r3uNUCS!-g_MZUf?x+t#YB8u2*M6vq6qS&;n zDivX3s`)U*x-eBL-N|o~hBt{4WE^A{GbYW}_ z5GLCYVf_9b1`TndPH4~`2%RM%w|@(LY{BCU5IaOz?2~i>zoUR#L1iDpFu=A9J{m}q*? z(g*O*hJ+H$)J4%mQS_uJdQucUDT*SBqKKj>q9}S&6oCJTVwNrn3o}H~jn=-uyuuU+ z7e7gR3$y(yUSWO!yz{Hr)JM-BuK(yV)rQ(7Uw)&^)Tio|SF}%UckjLATFF)yoFZzf zqC4fSJFS>s{*D}V|BuY{;%Fa-Rmph+WX6fg<3wScNK(7fz>Uw3(@6u;<=5778HO2J zo&KvUbFlEu_}4h_h5yAD>-a)_@L&I%pD(c2v1<)5q~onqN2^7Q4hGFux=ejA_6&5i z!j$n7czJ%VC>@8{#+93cGIGhEn#AY2D*R4}Dzv03w4^Guq-y_y8iFM?1WRfmY%c$TCa(XewrX8D zl7sL#^Iu_!060is>i=4VWh>yFA3)C^e#eOMA5qlkqNoT#6l#hBaFD>%zm}o^yz>L- z`NQuRG5#4vzMz3>#lv~OG1eNcoQ72!mKxrq*%SrM)fIH45ejNU1+}4q+WbeWvgh)2 zk_jYfOOm!EY5Q+US1w))q|ac&J7!`+v}( zC0A|PxjRw=RQjZo^!=yDyM?9S*)9bN0f=xRQy2?;E!6}nWvBg@;aT#=5}@VOve z+T}?}&8SZ7eHpV{?53i+a;q3ChG)rm)-Im4Mi{+^ zi*SD|J1c0}x!MTb>f_c07GUL60;=)ar)F4_JU8RJq=uGno>Z)l(yrVlM2{VpJVj;W zs)dSEjmYDePAUU$iJSdtF0O${eOg`z3nXsh5LnCBbaBRuR#)aJBhSIi(*d4ipdg9@ z=5eZqt7)j$@&o=S=3{&1*7s<}OZYtx9ZBV{MovqSQ@6^q-2T@{%d=BW0Ai5IxiTWV z8gTtV2J=bSBMA$ZZi60z6mr`rd!9xz6Ym#(sNiSwYxnxgB@SQr$6KW}lE=4vEs5dd zpN0NL_w4Tch>Wqv_Ljbgx^kNt=a59#>}pY1C5v(_tSP37?dDdBy4MA%ydy+bM!V)R5`L1Zcm;b&Yt{E(l%Y> zFL`>qjy}iJI~a|zU^h?i1kFAkpglGnBW|CRl(w+;r7Kaj^;6 zN@+B=RJ>_ILx0lmwUy#gD>mI)T9H+8+f^Gy@3yOb6aj6GNs7oe^C^mywyTbcZEdL6 zAWriK>b^mr`-R9!oc%o_4Y_wj=5UoYM4E8D+EEk3+u?VGi+YUx#^hR*l6^V&Smn&6 z5vWjdw9HWXYe(;q1WV*nCsrpKo|7oA?d>g*t5vQii&DulEJ8jY6MBA6Zb)YjuquL~N8}U#t7tu)TgqAB``2Ck_#s zzGXxAengB;9IBYtc!&V?GM+1T@#a?s_WtGkLL*c7j4c)H{ly~{^BWJ1RD4FFGq_3@ z?+o867u2o2i2H*4=93>~u!b+XME=^L9i)nd>9d3PpWkZpy^{A^KZ&LZBWLqRM0GW zHadkVc1%O-*-Tgc!IP(JbaXyXHxTXN?8J{>m8dv;AbQD9lARdKk!PJ|b&5|{ulNr} zRgA`V@OKT^yt>Kvpfm8qH!2H7c>}u9LHba2i07PTF|XniO`w=%&agtsZ%(Ut8hZdd zt>II4=2QNe1r_kDQk|$mfQktfu-Yuwc~($uZR2aJQs=pvJoB|5jdY%B@=WGEYv74T zJ5E{E+4~cpYqY_v5j5yLD+KVY;uGRJYbDi|@XWVll49QTil5Y+(e|KGr6p;lnFA;$ z8EDQUs^U`U2=Lh+>mMrASw^}mqA0%s)|B428DgGG^$bUuy@}JS@NQx$k z&z+E8wcKP64D*scPu~KKL5Y-k1;1sjKm+*(nt8<%LC;s;}7u!rM5Ib?9ukRuq5zsL~<#{+UCz)?#M6&!Vl z_s68nAA}yX?!&(2LtR3N7hlg(?4up>&a{~AOp95#WQq&Hcy(v*Nd|g15LypssD9K- z{_aB*k91KyrYQDP6kRBaE))e^GR55wQRwSk{}4s&(GO8PMilI;*Mv)0Q(-GCPYz(E27h0x3bk8J+{ zw4ZLcbq2T-P_7MK%!fAh5x&AkIw0E*kV9~g;Fw%^Wk9sgwkwFcs?|&3qoyr&fT=&= z7>Vfl177&$UmmbT4iL#hFQLJ*uL23;1ZrCaK4o@aZqBtpPA)d*c_(13NBbyz4xL)g98nLCgdGC28WT1GJw>;pa%7-q?`H zLa;h6*VS?8bJWA@R#a+jow=!xBh?q+Ac4Xsnd$~$>JKCNeaE$!)`~lkRiQPYB@1-t#TdI-0UnzS@Uf90xO4;j5 z+3QN#TTIzoOxXjFAF|i=L-xMpvxgxNxx+x#oA1C4h#Mya_%Tjw##nAVtC6wtc$SQ3 zUE-&SH(;?D!TlAM74EMvEo}V_PnK=Vooj?KhF@RinRD|8EupW|Cj{7~itQPLp`4K!wCGbno)J*2npvAAP|Q+u|e1o-=5Dd(NO(aN*|f zRVlg~FFMk%RvFmOPvIXJN)S(={Sd;*oecV~f)+CN_rq01!Ct|BI>;Wfa7Iib&MC25 z2q6Ni&`@;C8J;0N1$Bbm4`kOL33mIzmmMrt$(7gpI77>T+}vq*QXole{q!c=Q~2&` zg|8niy*6VRiBjNfuty-vpextJN_D6+KJ#KrgR<)3d}6-Bl+op&F@qTQt1|bN67(S0 z*cY&app3wU{C*%8RZJyPDqHUc6M{;IuOPndDS$<*Ed%8z?1}m3e35QFuI8yO3)f6heB*mN$!CCQbjjAfZb~(d_1Dw2NS~W%9moKOlbV;; zJ0$Z3z#f>nQuK+~75PUhg__2AB^E>tUW#~in(O>^nKRsQE7e>vI~5nOGS?@q^<6O# z_Zl-aXkVgw^E|f<|8X?D(ng_{_Ud~4w@kz}x9GBVW%y@lI=$pT)D3F<=UfNim-J7YQ zIGUc2?%I)pF}}xboEmByb1fXZ1-N~}F8W+sCiOFe?O6w$Y_FyZ5?l*zI-r8F-=E@2 zmn(YrOpeJ=IFH6_iVP%C)t)Pc~B?(F$9|tjz0E( z_<2m;I@K+6y@RbNeu+Se4}W$dD66@wH4(N06X%<1Lb$9?q2kHM;^!=pvFUXM`#`oOF7IKol%uqfNsU z+)={&zbm~YzpOtbQ8d(>TPo`7k#$>Iimgb)yCfgy?{aBH;5;9|5Dw}jm#hHJ67=HLc2q>uJ!-(Xo z->@Sp)kJ&n7w%oTE-28CNvG+aCPr+qNp1Sk%Bnr6C6+MOSh^90<6dB$B-20? zO2)I;{eD-@0<7|+(-uPQMn_lBzb3J(G8#bwM6nO`JB`$?oE2j^@cXbDp2hT^xpFpq zsD3PgQm`Ml-mCuQ>4#oTF9-3QYMyiKGxKfA9e=Tk7|7Dd{Lw`| zEY@})Yx%rTNm_8Pfh7-^P%tm_)Ue+JwHp%>Td+Koq}BA+2@TQ-pWA*GoAO0fTsbyN9(_ar~d2A5ekFXnQ;I%mg1T-7U2m& zRB#Q-gbAifq4vNoSh5VeV1RmMzK8dDrCR1a)fd1_DXN+AUXR4E)Oa1{jx)Zne6jq7XEpDMQ`%T!G&o}$o2K1#0X|~!9@O7Qu^Pi@O}q^P z?CpV9>V`dQ-h(vLTH>bZ#O{lP7e5H*N`N9$)4vAtqxapf5?YI?MGjLA3-(xm^Vmd@Y@Ej85`Fw3_czOv{puk=a zdw(ZJuaqjjqB4~5Wf+I(%99-47$i=@RrAEARRh@tk#-XLl&{20l#rH`xISUr10|LyR#s<- z;aU2F&Ad~n4~o1Rkz>kW*X5T!&6m)PJL4WWC|f5GhQ^M*(TIgY<>^&c-ATBH&&jJR z2<*yDV#%PrVCw4ceJRzkL!ati%Dqi${Mwu8%h4|DFx$eYAQPv)H--gI+l2tAx9}FkDBsrtV*Tb38v%s+kpUJ zi=%OjVq^whhp+KJbxymSMg`VEBRc7%C`y8IRUt#{0z$!JO>@8 z>X{e%`!lcJ1jw5iD^87$U13gL-Q2r30R?Ozj)!v;Hc}YPSuy%JpPLMpdJNxV?TJNm zz9TOx)6r5scfmT^k*A|{w1TG-i1u(k!$&=bkD6y`bfUF<)Wy8$IbL)=L=BSh(tLua zKhx2pU#*fW#_$#OIrBtC_PNH|#}}ZvWc2-=SLGIpJ=cCCV4MYv1Ie^&=vE=uz&=6j z6FfTyY`jnh_b`uhpi2^H%6hTqV%YeiVTs`BO`-9{Yf?3VN~}md!PvQA_oL>B9-jv{ zzIBt5cIrhkx;cW6w(w<3g*|+(3qa!|Y!l`TEGeU`Sq;1SC;-@5O7&dAu+wk?xB~g4l~j>Sz>3`=;`L{w{(wI-eVAYo%~DcsMh~ z7OvcvD9E)WK_D((W0M@LQV(AHg)6rlEG&bEux4l4BPfkvL~HtV25UrvWwp#dh`4;s5CI> z=@eFUD4BXU1b)_E<9X)337zhzedl$s_hZo)|3fbb?q(hxBRlMezF{kRmykTufDNrF z1E8Pdn^bIqKnIGs@L>k*c(Sli#^eT#57@P%xiOR9cUUa1c84dVnaq)i$B zO!&f$&v)@b@$!nQzS?(XR2z#W?C+1UQ1h*{Ds}K{kEyLtzM^|ixo@udAeXqZpE5Xq zgdd6%sbmQ&)o@Xna&&ts(C)&%7-71UD2(SIUwb_4y9_Gudazw^N5su*+FO$TdDCAd zS8|%HzVgm*8u?Yx!lwMM>X$VA@Kt0{ljC}`HBIU3uWW3(y1wX}ruOxbTbkTAOxoU* zu;Jvcrga-m?rplc;bd8px+OqawS&x>8Ly;aWO@|^CE$J0S{aapF z6os~Y@tyaG7SUnv(JfVnBU4%~ABoIvIdt^?f)>~B?H0Ct{(a7pmP6m)U)ECpz1_+d z#SfF#w#@kKk0-xvu{~y1(K7Pbl^6Y0-eoKKd$Yf)8}b!}a8 zs@}G>=jkA))^VpJU0RDym$|q0Jaa#+b;FsW$krZbJ7QbUp3Rxsdf{AsdaL^Um7LZI z7jl-jwq7{7s&)L&o4;z^{&UC1*1DhXZ)qKL@&1n1xfknqw{E{!wzu`h#j>(iw@V!r zt>Z6EI@CA%M6&s{osqE&o(QdR5t%N^%iw_onK)OzP~(9PE8zj)WQ_W1RFZR@OG zy`Qvx{cF*)*0aBQzi7Sx>y?+SO~0l$v`Vj-HMRy`sc&fwsDsQAuXnTIcJE6_`W_?oI{+mU!+V0)#$ZVT@`{bgwb+>bh+6Mf7Wn-J&oyfgy zrGIQb(Kh04(WSPX_clLkyLhkcWn0XByZ3E(?%x--kFBXUY%i!OGj1=hN$=Etx5nG7 zz4Ko|=I#Cd>ab{^{MSjV_H}>Rb!$KW*Zm&tf(J#t+Pxk`I<=2~VCK@k@WBw-& zn=f+iwZDHc>92O#%PTM1-@WvH)!wH*=uLZO{mJI`JN1(~+D#km1RVn!att~$8}1u* zY-`wT+Ht+1tV@T%t1|PB!LK5%I`+RZ>)Bz`c*UV3wz1y1V_{>FXNS@2AfFD~Hzx;m zguKZa+>!bwXh_HUH}%6iu*{P?=g4C_V{M`^^NN?N#a^NE3W*mMx`DQVK3H)3tj37= zx&{L-8_%AlX`=o9O4&Bpuj-TJM5RsgAkx{OBDH4a<>i&7#ihlXVvP!p5C1fSjJ^!j zx0ksVl=oeuDfbZTT%KYXlrA5(dssHbsI&ES!KR%<URp1k>~H!#G%^$z!?;eivYqWS6oeiS62Oe)?R8k*_|NW7IV{G^CTnOsokh z>@3#cJVhi|5Z%$y!KUK>AA=cf*S~BNidh|0kLREbWl;FOjJk+$|0&yNgfE&hdRzFI z8CiS6%V(xM56?)`KN~)MR?5%eRkQT3gd3+`|1JEFRHwV)zG>GVh964XZWysfrEeZF zEThge;)%*h5-}hn#WJEeWAu~o3mGXrBA`>&F59DUm5N= z>&!3V{Zrq(2v1Hub1QspYTcdiH>m|R;l0w<)P;9SuX`G9o1XGI+%-MyO?XVY{@d`h z^fT|mm!=mqh3`zSYYTs#zP%&dQdPi3IH{b35y7fD{fK=T+q*?@nHIew95Tbi5ndSu zT_dtGoU9|h$w)DaC|5a|L@ZRDF^I@os6T&*%VMX+LvAk#+dCv_S;562FPDYg9&&Pd z%KahPE7tTGZg6CC|LKThzg~YaBJ0MQ+L0sg)x8+G`iXMM zsOK-j#zhabyzympjrH21XmgvxtD?hfZmf+SI%~|uxNlPp=Er|Gr%)3gG>{k%zAn${PL_> zSI(KGF1xj^FxBDN&L7e)KU=sk{dK=vle0VG&Sz!+66c~+bKx$Nv$ls%P0tzwD_Rw8hvpyg8cwd(NaF?T5XNFHbl{Ia|u1i^+Mn1lgRX%dj zvN@j&7M)j@4-}nJm-iPPS4RzSQD(~qiXN+@28yn!#et$Pva1J(o~o}0h^o{LfueeK z@c_}EYVkl(o4PnqB+Rnve{`o>79{#xT^=NAQol%kxLd6X61`Ga4;1NTHT1XItBwkO ze0EOx0MRXV!vN6@b$Osjl(i&S)S(`hdZvGL=S?Li=RMqbD>VGck7wu3^tt7i6>}`% zMrB%bzVpOziz#dNjEb6^Jv(mb)ElefLZ(k%9JhB`VL@E#v>V&wrp?R;d-%<`ZJP?Oj@$qBj=STA?#aG4&gYx8 z!to{h4qq6bxo_>+@s@jc92$RO?^*BheYXuBFura6;l1&Gg}pC?m(5bH8-HS2fhgkH z?(9|L$2P8WN)Ko};*j3C@m#NTWB0f%Nxj@}ZcUozer{LNY4<7nlODS-EK9QYFsw)l z_V7ELl^u6N#N=o-KY)@+UcGgSw zki8WqPmo!Pl9$RJ87BwGclJsS@ww@oyxM2yt-&o5>S_l|63&=}FTOc@dg|xfkT^Gr7T z*QCAgojqXWoom+zj%-ef2%Fve#kqTFcH`z0Wq*@$Yio8y!O`Hk^9qg*o68m6ikTZ; z_&9FvxCv9QWglO5{`}l?-@BZednA9VUaI>SkCvr88@_I3%Bvya0iPYb^LAfqbDtX{ zQY?q8o0GCTujGDq+1*FgsrqhXUe0>+x8LOS>PwdWC!3C5czD*NJ>l+yAK$!LJ#zH) zx`-kBuZ(UR5o-JQzUbbzy-!3h>+btUw5F$TeYC`K$Mop!R+E2?w(e1QGrFU@!S(2* zuGu4_hgf7sMf-G}yfZq-cCzOvVeR(+MckLiHFbQC-kXg@mh1%F0wmyuCXnDR30c{b z5Eiv+!VU@q2&h#c?CzqnXj>H*&{o@`;?~v{1<~5pqJm4^q9SfxKtQNV`_8>!`~AJ& z@4e6G{q^{0=FXkDGiT16Gjrz5%sGA;&mStUEZ@f^Bgssk&MiuNdBe`=)HO-xqRZ<^ zHR=c7n0KiKmwAbaj^7=BnR`g>e=I>iC(oR4H#7Qq+Nm$v{4<6Qu!Sq?@&{>o4--lc zuG%=d{#eeSykgg?BdrzZR*}x0i(v}VRd)&fj6tZ{ib4Q)t>JT{JiSz>A_d4o_;$Ry84TACqG*il-cPk(*q1R8m--T%ch-A41?XxU?PQ{uA~{q<^9dB^I^2ZR2PQ@%d<>QRc! zeBC47;>&i6l$yFHE$fR)Do`)Gm-ixFaPRu@pi>X@x3qiR5)Wy8s!znHI@Nf^r4EH& zHzeFqMyDiroXV4@-l?wnG}Gp{>z7k6uk=@^epmG>A$82+WFM_}XH`MC>?!Y>F85&4 zi_}y(`$F`_1pjRHruzxsM;ouj%+1)_b>d~3%e{uHYM;;YPNYu%y5DbE&S_FZi0f(I z7a`8e_g@dsOZUI4X1uuGr7l@`;;Y0bC0<|Y-n6mJ%LZ@qI_1^@WpE<1B4JYehaVp=>+wsms+h2xaM^b5z?%#3%(yf&w8{M1XF|3)p}CO;HjB~v`th&W-{SE{~D zIQz3aH0F&tw^o;O*}p92;flu%!HS_1U#sgM=^uv4e{Q=F|6OL%n#_+kHMpjIf93#l z_3gXe_tWqE)NoP#`D^yy2_~7BZSwPT>?`ukE#+S%BG2RvVfnvQxrYv(ZTc%LE4%(k z;==hi9wlF%zx+t%NAWI)Geg|@9=a{1(ZMOFODXykeVNzFl$UFwcc#29ZEH#i*wEIN zQg@QAFivJ(KfF-!b8^wby(b?t7FHhN&s*qxtn+sCyVJQo@ySuqeGA>cD;rptoXlLS zY)Pt8%k<92q^Qey|ZJj3{s9i3&I z>f*n`_=(G_RmPhxCklZU9K*hB{CmvxD@NJ4SFem)$9w&0Y#3kj*672HCdbWo?`FkabZ3u?>vmUi<9_gH z@Qw5LET0i~&{H`(?zAUc5*Nffp^B^FMTf?9@Y*8c0{GXX;y&Y-e-QVAUt@@y;?<3#?AL`SQ%%GttwH3#p;U{xv{)$ikAyIPAgbZOr63f zO20_EiuJg-pzH7DM+;s&pT4y~|Dd*}K=Z8PNI}_~3nvQCKYMbzFmvF-Uj=`>c=CP0 z55HC{DJ*(bQBY|A$A#QN+uv@iEG)gR8p_{!zxGZ()mm{Zf3Ee0V}bWy%fHLF-cqF( zuzI{1g?IXw>kHQm44x~z{B(MD;r7?d^9l@4FRU$C@z7*qP}vkV_AIw6{JtlK zTKH?vAX>Pv$D35R_{D+K1w8 zCI72C6)pLfx^I{Y+@Cx#7nF8a#1;5h@k-Ab;dNqu}(Tp*aU{oo*{pzZe?7xM*wsLtf~zB=$M zf871rzWgulT^Pu})^{?X(6j%7tZ+rYOHg4;f3j=gU~et2@bt?IK7|7>FZdQJ`Uc$! z?mhB;l3#xBz(@JCH!g4Tqkq5gpg{b*c7MUap$lgV+^i>i)Y0L}@6x{McvYX9X7p}a z$q#F7%0Kw~jo%W|uCpJ@JGIQ7=$UUi4=uU|IM<|H+SB z(mcp=GyIO8@H7MyYWRk9!u45(He$nE1A$bdGu*XlTWe^tYx~A9&f&!G2FB||%7T96 zy1)>F=FtrI*L7T3*q3?SF-Dr!O)Ff|8#AWxUT=(NVZ}?ENrfeS%V!oI?^7*V+J8K+ zA=C1j5*-qJT<;oQFwpQpX7;=?x;f=w$82?ULPD@|$D6jlRRy>GD>Da{DPAQr3)=?L z8&;I=j;1KdVd;ymiY^Abl_;&ttcSXHEj_im^k}g2q1MaG-sZG^rB5u#+Z3L~pxg<` zEUB3llyJa2PM@@0IWd*j)O9C=bjqtIy>grR$-?e4k58$OyiID)ZSggE6Xyz zPjC#~^{3a2kS}V=lTxqLoJdI>7;IpM(%!OPgw6YkvUlkRUwPFn!|%W z{O+~E!_k}4_!aph}8~3Q48b$ywC=3o~A$)-AJM~PD0VIXM!gNtwQjiI8GLg91luDiicPekVeX)Jt`GJB{YCyt=g%A;+kLLKWb+hCk3j zQk+LAI)z3d)l(2>Bp(qtATN+cIueZZ5Rfsbg@UX`1XSdEgzA9oMl?>)9upf`jMlM{ z6qL&WlUH?2Bm#wRWoVrPtcStEqL_By_Tz+8#$jr>UupG7dWD1-1Pc5uNud)mlwLmyDumyhv!O zjM_ZtjFv=DB^RC1vcIT?6c$<$K((xJM%VsEt$XT(u7A$e1a{gGCaKSG>#`q@BFvrp zj4Mcx+Y)5DKCXe3NFfA;eax*SMNtT$;fuM=yvKAxcp2BdhnMI?&?!FRa?djnf=)-| z3KB)Ogvd}bSHL2Z36VM*uAx&sicmIroV(`cOB$gp*3(_HT|p;o)Y^bAgVHV=qBJma zu7E0P(t~B&aQR~awM!)C5T!cVO#zjc+d(2qBg0nQUA;iis=r7h$|Ax)7YO)>%9(w3-F=#L6a{XDTF zQLTvGDyWoqb=ebxlzM@nvP;hA5QD;_Lj{!`6B0SZ5XJnNg64j6KbaUNjZG7@>pQAg z#IPXnOVr*k@1hXH6{OEZ{2klWmDQMdUXE?s*;$A?m{A%LLp3IiE(< z=>kcRSJ7lc)NKs36L33cRN29!JPRJT>p8?oSg5{+ z0>yxyMU0FJ{6rvOb&1GCeT06BP{M!QZ%>St>U@Nj0bZFCu`Je?FVw85&ZQH}=KFdH z+c~*wsKkxYzQ+aaDdPB1B&jSSGFC!u?KhJsBxz(&c#MQ9XLVJPNzy2NM6-li8YQY9 zMGBNg$#bM!y`H2Xk^+OmBWFtm`l{Aa3P~0c8I~;-bn!aPHY8a@XxR*@pudC1w1r4` z@H~m2ze`?EgosY(4k@BCJ((oisENHGkuc>^Oq2xut_zh)szhWyktEkiW4@C}c&t*E z14JS;RH;PHGBY_OAOv40sYFkHoIoQfbUMLgi3Y}n4gwYlpCZvDuv)ty5~~S|lNgvH zxq?Dc$^vAYB?exUUd|>dBLifcBqqJQS~QA;Irv;FF_jMR6pkcySmb20#L^+^)Y)K> zjX4rae}|q&AOYs7Bgo*2_EDq>!M{&%@OwMdXCUMJ6%qzRIRxJZ#|k(}=ck=THr zBuFQ-w0aat10|f2Abhcc?@ZD}>4T0)kh0Dh2@WJ}lvJ*ja#>ySejAcbrqKQ=0rE^p zu!Bfw*;px8Y!*jBL?H{$kaD9$2?K11XhL^NxQ}_A3GhusXedX@9q5-IcP8mHq4U;C z1*{Ie+=&z!s0&#s6^L8)+Zm)txgvV9R1noAZ)KAr)e$i|si4~2)kPu!QK|J3AmaoD z6Cw)~brQj2y;%6^TQcaFZuqQ?7H8PP@qaY_H zFtA9t7>g)!ArdVOb&wcXJh6g6ijfBCr%Np2{#G7?6dM+#Pmx;416@@VQmigq^^2qu zQbY{We2CnZXx7wk&83sdVi)`JrJC)J`SEnpMj)PSN&7{SJi(E)F+3_vENP#i;PdTC z8}(9^MN1U{{Wp=xQjI2bK0!<6@vA#e*^@E0Q!mh9d{^2^CI^N}!$YoUxK)ZMQ6hmX zQ-tevUu$6KWb*21WLYRs+YBr!<{xK46u5n%RsfL6JDFtQxggnHjew`9;*sH7T|{K$ zhZ>C2nqH!0xm-Fwa-2q@Z)H|RIg{lIO}M-jq9jF`oJN*M04Gh-NO%JzJ_Dk_ec>#v zhQ|^`=^ePfky$U)&ibgQ(DdSJ-}7jmdHP!amQ zrnyR_=zMBN4pZnM64&2+%A%`nsA_BcN)_!1FGlv|ZlPh!!v`DTTU}lpsBKO;< zMXE~&x|$rwnut)T?w$tWN68Zg=wyvfA&(Vmv1k>U0a3ulD@YY9#7t+10yg?JNEAO; zU&!tHUb&*<0wWvwNN6C7O%YW8LI`v)p^DMGn7o}HQHIhUi zq$mP8Do`4!aMEZJVHg@f$Wh_C2>m*(h76q|CXl1`^EHYC8k6{ZzgdKmV|5V``e2Rb zVpW%ZKZCqcs?*K?Ow+E0K1)E!8&$f9z#E$Oi-5{9JMu=1$Xzt;v5%|dod`uL3z3F~ zG7VI@f+Z?VU{eC4l%b07iy)EMnhFsl?Y6qQj|J{Vu8ZX&|KA(P$eH=P(mYA${@YO*wZQ}@f8D3ln9L? zJSZZ~h_HCo@@j<(1;(NXrSeAulFNre`AiCqO!XOqK+J5_n;(y&L@IPJtYsNBk4b>S zCJtqDm{c!Q+Z&NvOu4wUifRMGggPi%Va(z(dF1o`^79OvKt-e;YL;aQTKhq8>~CV* z0D(g}`cWnz;wF8S__2#kC^SH-Q~8^)fia37Rq9{^LmN!+k%d_>)OA1?J!aX!6s(WX zDdMsKB)KAr$8xfP7g(0~lmg8?nS7KQQ%sf^H&&dvup@)GpLO*X0UX|l1bMqb#|wIMlQXHffm7TENe8HL~e{mKB7wk(DS1zqtT5_3lrVVKxpXoQIfaFq)}8m zw2^AHMUUD^b|IhJwTn?6%i@FnKy7}A1Uehy(Ew*83QcC!twq*T4TljDLof~Xr5jEn zgLF+da+gubMYr2)dJ&Ox^Gn3pv3V5g#Y6(pU3SfU^e`JSqLW#YUyze@i6bg@vd%}H z*%Aplp4kjG&KagR$ONXw8(qv4@X_bal?dv>stiGS%*yHLhYr@e$U8^m2V@VW*$17% zHYK5J=skClNV_@>I>XUA69s3EKOwgmJyGaN2Td+=p9v65urVA*b}^_iXg$*~1--`5 z{EGa-G}xh;Y|}(^3%$7xAvjBVk@@t-8>jMb#Oh=nLRvVM4QLw&*@QmkX!ar;$M!4l7dq4eRLbOLBQtEM z+t4uk%1rcEy5u*6%CMY65?NFR8s*S_4zXcSY3LMc&jG~S(bR_=a1q#{D>#x0^bV(e z4!Yl^rvhEY5k#O5ncN8UDGeEieoJd7qJb=GBs$rZdm33es{Iu5lauus;_KYri%fH_ z>qX2=#16HwH-(_@Y^=+WBuevUq{p_d3aPhkw;(I25(?@!%0xl~s3syBPX)#?G3)Lj zQyi@)5no2*7_^&eYC?M1NIbgSt#KDZc949CHaYY>LR6znKB%)TSgLPvsN8^1ZK1t< zW}O&KwXfTYTy_?mLF(+d8<1R@VK(YSH*isgeS0<1$f{h7p0yJcBcD39e}*_aw2wu* zU8r}F4p(Xg^2XM*0r||?5{Vw;SoWYtMsxGfBOIVfSXlDVhoh{YAj>(LTgV-I0J7B{ zt~o^5a|xPpJ>ixW+#2p44C6iRUR1$}X^zVXjM}p%Hm#N>R3X?KS~wGRiho1jBX_rA z(HJJdF&^yai4YXt3grk5d#h*mV3~^K?!RNvXy!}EL>GdMA}p%xpGt~<^U&Q!|4}dM zY0IcyUY*@Z_2Rly>5YX|8@l5=Ym7Yq-BFeWJ&TjDroUb;S=WmT>T|=jPQ8TsK zrDa9QWdfHhGhthea-vwdwzt9M$acO^7gXZ0Mdd}U3SzEA0m{^wsyv~J*(ht=;o7*@ zhuNrv2kIUlZlew!cBe)S|8bV3V@5l%o@M03QJfGOsYn>@El8X1UmWXy)g4N7=AwbI zi2FnhXW0rnr{TO#@n)KFA}cPJkh9%prY;^m=_Ob(Ke^WOw1}c|Z=Y)Nh|Subsz^pF zYODwq3f0o0y{Rr+YO9$@QaoPDc#~bSlsYqy%1Bt5!9>SZ3$J zT()daQ4wi=S8BR}u4o3AbW;lGKz5K+%%hYFAf?@Fm*aol9HTj%>6}64GpLO8)MW%= zwf^PV8gFmv663ZCQmM{R#ms7u}<)ouE6cx=nZzS4&OFzEhXF<#sNO<;wcSA|kCF7v}AsI!_MJy9GpalAPW z5OA%UU!=+_R|&Uvmz%M|B&xMBMKj9%Jk!(F$xP?J2$9sl6i;72Vc?*bx2o4VO+a=p z_4n{&u#>Zm3BaOTcDN^*qaq2tJ6!1oJBo$GxLOk}=2HVC@>EW?$d2uvWHhJ1-EyH# zULtW#@t)p>nBzP_?0g$WsqfM5S4tJ2Gf0mAY57SbZ9ryAKB7f&g+x+TKSSSJXTU-HuM**3^jSV)O546 zs<&)cQK(+iuh(=_px*7tN%-G`{a{E%b0zPzzb52Xf}s2vdu5fyOHvcWlOL4MEIVhbVhLGHMiP~#@@u0XVJgF@FkRlU!rnG zEXC)yR_n$p{#!|nx1ppS1Oe$*rr?KxMFnAnJlN zINaLB!~qe1p7o4kimq`Pv*tSGp9q~iP2vm-n-yVT3o2eXWywnAr@YaIITpT{! ztskDcX{Yo60rO>!Acull_s9c+OTUx<72MhcXax_y|6`t^kc4mE=fS( zFzxi=W{SWP=QrX_nN%y34QQC8Bu*VZM?6Uhz6D&dlgM!7IZiaNiUVx8dNFdFSW@!biMBJj=vz-d;FD zE(uP&qK8!c-C^vq>t8xJTWr-~RvNIPBEq#-<$ng1q@=s4u056G^z(I?{BIx~NPVe{ zr2Dlj#GN2O6r7y?ArB8C9)@eknk>-|O?jE3msqn}79KN+h*9i=!-XE&UxS@rhf6D& zCEZn`=2>tu8b7`q`EkR!RNTUQW=Zsv$#V$53UOlQBg_Og+@$_F3=p<4T(n2@-ZA7=`MeM~Ac^`$E`Tbb(0NMFL=l`# z_7fy2|AXN;dZOljwJ*B8uT^8K$d{hp-AMxv`Q6CFSTb_!2F z=nAkh(UDMPfU62Y2%ORWH#2QwB?$q$w>EIp8*hhBoxU}$xZeAZxp03e_QP!KCKR5q z_1k40!F^rK!x*jMkizZmG$0jVQaF`gn#m8V+AaG2IvZRnDZ%XVD5SEUcn%9K^+fs* zzsdmDdhwcymIT^iR!v4K-mhne0iyB7!ToS(aIG9hTs(>u zN$0w z-)JwPR7b+Cp#RMp;>O*#t!S+J>xeNP1{^F zt>ll7iNaziRO-SM(qvM$-sr00ygthrdMIV7AeseEvgl0s9lA8X6i~`}Ej(!39FF80 z`bO3gQLoGPj9*{$W%yX_bE}Q^nQ`0`&d~GRO-0iddD%K@=~h%r!;f8KN3IEPep<3m z2z~IYo1ZDa@3Y}Q`}ajm#ELLz|F9m={$?63==eq`$alCPgVx2mN6Rw(m*Un_2N(QD z`zRyr`?380)<9_}XUHn0sk9$ycNkr3p~Z_ZA9|in!mDe+OC6wy`;`J5lvs*31Id?`0k z?*0&+8U{)2E;$CwUm~CrI^_y{T0Cuxi=Pdd6SQ@|?K1zrrK2*&RS7HhjBlamyc;L% zxc$1n>9RGcNa87V&iKwtI@XW#`p97+!^(w%ELP{Hp7+VWN~#5bL@>n|1xKR^ND4cbLjtRdfBUt ze=gXd!6mH!Z4Tt6!IWc77tIP}4EV?Ta>>f*@a|(E_`nrDR0ZX=X!7VVQ~5b0PFd7! zJ1m&7l|<)ZfpDu4M2!1UxYay?f+atX3)Wm$B`$=eXW>;!qEip70>fVCj}|Y{om>0JO_l;JLINpRMLTMx=H`5~+rmK+|9G9G6(V-cH`4gn1{}h@^ zBcUSPCD?yTSWswbBpiaor))eGM3$TW-?f#e3{S-o;aR`PHzwpgql{hx(!cdSF4cg< z(fT7uanyupx*uQZIdgKM@|aO%o@APr@I;n}{eYJ+e7PZ$hRZ@*;_#IQ;J^{78|d%A z*8y1>>0G5OMZ|6g$Z!Bwo|XRXQ+qvW`m(LZ_BwivX~A*R{AwB4#K8m|fcCHwtYU=^ zi`R|K-g7Vy9Xow08Q||2QXj#MTZn4<7UEGGVUC;M>(Ou_6~tyYzq5T0kBO%H$x}V(Odt*%9 z^2ZHRKYf062^s9cxDmac1{P1{KJ_S`YIibw5wkl!J6_ox+Mel;_mf{3Kw1%|*$0al zZW`YsxTI6$lY0IRVLT$BBSX#vizSV4Gg=4N*Fi=d?QJ7$p#{i&4f8-a9F{#DRj|M; z#J(Io)-D$A&VGCmZyxpKLRt%5H08(pNAE)6fD5^zndOB$p57(|cQEM$I zg!&lLPmz)J!}*evd7pxtV=(j6l7y3{DNngI*z-d^cy+r)2v3Z=Owy zcDXNdK#6;3hI>lSDC()O`@-VEZVvx=tqn63{B`5<{lAcd>#4EcU@8GaB~$@dVKH+S zCJGqG!GSWYRl<~F3D|@7*3miUWkZjiSYW`0%am%b(HM>$=U=t=!hLf9)8~&lXeh4a zkCeitc;);AJ%BfDZ;S`lagFi($|LnVqv5jfhcWt89I4i1=raJ`?j+F6nrPr6Afa>0 zkCtQydijObjq$<@0LS1QVnP_zPgFf~+ZEy>%p$Vfx91`aS`Wr%(Ms%H-$hz2){hx6 zzzVgqsUM5rG-#8!Ehy&s$3=cbacVXIxsi1wp7zcm6osL6es0GVMfK2ZY7K3;(^epDc>TfER&mYTo56kDb zG{N>i^3C}tUo4i-faS9_LB5iuq*4EoFX^9rgK6d_rE)e-=3I{IapJxq<&;EEqUz6} zmT#56n4o|Wx7>)UYQ%k*=`&^R(u5`=+;0MlhFCM=fwX0=`z z#*AAgTynaYHJs3|3?6>6zEZ;NqVX!clauES5~{v&hqU+*&;Q0ywwNM^XLG?IDM z%E!k3D=nLgw>gH0$i@b6PmF*RQQwO zwKCiU*PZYz@z}kpbHfSTi^`g1c$UgGxNFsaX}I&MOmKG#&zxprJ{*4Mo>A)b{@weh zMH%uDAn|-pN9z4a*)v?I;78@I47_;!sjB@wZ9p#oCUyR?*iSLmKw73KZjAr5@mP>F z%?Ar=rp<<6O3joYENGh&g9WdqBtj7SYGMu+cugw8g6K(`A=nV@y%P({y$@l*3GdUH zBHe})ybD;+&FjPhHvdtk$af6eqZbR59)Dv&o`<7JQ1}+h6UyHH&}3jZkHu09&^Ik1q-^J`B=cF`av*-?I^_prDFsZ*z(V3q|dE+nozOgit5eJYoyXqVfgp2@NeE+-7ciR30j|@I; z@?y#)4T_lfT#1h-S4f*!hal-wH73IGu70rRXXCAbBLxb5`c#9-BMP>uJF$0gEF>&a zl|EHqI!b~UB=3m8VCN84rwi#DiU~fZ0gCg;gj&}6R^-wyz z(&%;JnEkS&yiRyQ_6{?y(1FhLbN^X^Eq|-hXTsR#mnZT7)nwx=(AOeiHV68A_lO=H zcz93z@IWaCq@-afq+U&*_oyLwdybjvcVHz9E?`XM4uKCgh~e1P(q+Ct z|CPH%SEYVyhHvrTkE)y%^k6PjH(E#xQ@u$6a|Dt^5E?KzTq5y2ptjHPe=UaqZWgRsj*9hWO=4|K-^CZJm)pl&?1@m&)bPPzm9|cpd zc@mfD{cSc+tXh$Sr}osV5B5E*5|yL?4s3)akNpz!0I{{3OZh}vE%fN%S#Ylmt|b3d zgBK;U->!7%!HO``6V>!^&5mL3fA~zytblxY14D(HUjI){frzP*oMjR(=YTudwX?eFKPk7*o7{?ABlz zk9f(byXJN!)3koL3zn?wY6!;LSu_i@^^BYZtg*Z&-Z)__4u@~6SCozcvT2_Ho(jP= z@uVz#R-+QU;BpXd{8CHDEWks#gG}aWyK4!yl<) z=ar{0T9CR9S8O{o`>S;=XH@wXaAf?^5-@k>y`mJ84?(i) z4n-M(SbOG5_%VD4hKPX5tHLqMJ`oMfcANJp14gwl<3nPg$`qwOlcm}^e3c4)s3vK$N|-t#<@{1*ka zJPi6{E^w+c*zc%H?hA%4Uty)*j{*U)86&&EERTP<2zZQE`!CQvGu61HRBJZ;0~QQa zhRrahs-^?ycXI(3!r+`Mkcvy!;JpqO%?Cu6jB)E!31N+IRD)-` zwyAEX&|LD7WPf!GvO3Ar#XS(O$pYn}NES!EO5u>5X-kF56QD7RzG>cd45o zi_x_7bq_U0IvYLKfRbDyhrWDnasJeaw%_Y>AL4n!b?TAl_BL(ByHAp7w_m@Cwv~=y zr+x5>fkG%`%g|fC=vDiQqAv+;^j0Hn&lK$(Bg1p3A*BS$SSDl;F@4rq$LDT2`KFAi z?li{dHzw#la@(@(S6jz3LMHjjFU399HoA=V_7%I8X7NcL7Fgl>4a@IRefCs8>+q@; zS_R(LKA5EPCEg?EMwf(!lohq!A$)*hs!C9TQK{;6&diYGGz)mNx4Niqeo{hrXP~J` z8{uujST3|R_&#Itv!uI#i5KNqYv`p$T0H7@PcOuA82h9x{r;#9J zopb~|9&JFWK+jZwgnC3;_W9fi&j>xQPIyuAt(@`_61Hln^a;sb0M2Ho2|eS;WksZW zM8B9u4_I>IgQ8#qEcay3ft8`h*9d{(zAnT+!-ml;7!@Gl3O$61sK=j=A4ToYI(znm zf!Eafl7K;k_Wk9{;qJdSU46)|eEw(o1I}glOz-yZ&(|-0SdMPI&D|$;+aLaV!spZ8 z9GzzSHzUBxW^mI^FL_he?)_5F@x`NIe2PzR*R$CSpznu-f;Fp_od{6di8-2sY2? z!^QkhAAhN*X8A`h-L^=*KCRCcEWEXZtD`Dl0=ygN5j0$WRKfySe!C z8K&io&v?((=a142YQU2(7%+Skst&_`z?s8*HFy@$0#sDhdwz#e8ZK|$A`G6z864^u zJc}dn{j{vq!0y`v&9)`OP(9Evwh)L2jL0N{z`>>@1s6VGPd9Q6j$`l&}Qi5%qMQZ$|t{NLn zHw;&UO%VU1#A1o|$AuMLPU&=LBS?I2bD&S155a(5?c44|ep_gsH4T^UYRyo!r3SzT z5?bT`@p5=N6)wqA<7Rhp`+h{~D4-!+INp~9rkxgSgb{pXQsUmSg%$W!8{E_v7%FbJ z#mx@?od8ex6!;}ZIRE)Aa#;*&$XmA1+qE_@${rKJEbc+H-3VA`1n;X-BmiG#m%;Pp@P8^^PXrq<2!i zrDGYgzh7R()vPzy!W^_|{r=Gcq3qEq^;amv4~W}(3Pgd%se-yc&+!Go`KKW&;Rx_q zX8oTp#b7qE9gL)5U%WeZ^lLSqMJR(-1!I)~ebF$IhBF)!xn~ia6aeGjsE76ZE-Gos z_&)-~Ig1hQ7~}zButP$SQlf>AOhMrpL2eL`IY=x483!-mKx_?Sv4I@$=K|X+%7f1> zX)ka3>q_47#2}FcO#XVk`Go(gxZ<7aqCk)`z&be-yj3AJfFYbS8mk2VwkCOL$xik2 zK*j_S=$gc$bsKPap%mPbcF9~YM}`*#GxUV_soYNW$Y+tR@83b8F9@)_SdXCyY^IGC zj7Z-=@jv>Q2#Am|ew9V);&*TXRgWwCajO07s6GfV2lUJNpk*qUJ+_2|Tx`N&==ogz z?j&3k2NCFj8k-j4Z`Mx+yKS!LV9*HtGj4|3d6OCQ1_U49U)S}RRD2911kVcn!(mc* zckJco>c!!bz>rhnf^0Q^6J9E4o<^h#-)X8(v)|Kx>^xBCZO;LQesmzt_r3N7#8zC~ z+q+3WW%7nf_{lOuAfq>Hifb z?%*^d$7Is)KJR!3koHu)7xJMU$p+teRURgArelIGbSFkL$XO7kp(s{f|8D<(*ChA~ zXisp-bd^Ui5ed4zrF5cd`4V4OSPvYC5F(igkhado4YQ5+1)Ee1to6S{O2KJ9RRe$x7+>uu=UonDBxpu9O(7P zl_0Uj$Yj_s@zPI4$iY|2A+Q9;2P3$Qiw#Cqvx2HItC;v;v_=T1Tu})eI=zx7Q0<-x ztdF0U=*yPJi*QXa48nUw&lXlv#gnomTPJ0t`eCyjAR!>9|10r_pTLGW%vGKu8v{P% zz@!bl`d!dLDSj5J`HDE<09+-;Rlh&W`gRN}-7}>7rohYtqyvyYqXb~9La><$LURUJ z0L8;f`;WO0eVhd-$3?ug^I+k9pbt)CS%#0o;A>ygN5f*@_H5=qt6;o;V9f|im(#?@ ziN}@(KTZUELdjw%8OGGvTbMMz*DJ0~7URm&mkmIL8VL>4QJM_m6LG+EpU!4rS-{Nf zrMP1rqP=m$2fHxMLx>_m36j28)wd5Oijnae$e|q393cO$19AMP$iCaba$i`8%?t4y zi;V(izum)f4Gc6kEC-8-PyG!VcAoHk&p4_If-1H}@+GA|4`XJj=565V^; zX9OL@IOm)%q~iM_c%%QAi#HmEkCMY?Vo*j5EFdelL3=9-fEd;YE1&w=VtOWgZ2fdw zE0)^fME+wK_dxQ_!wX{=_wb4&{~Uj0#}P*~PXFQ_Uz&oIQcw;gfmpW+TeIS_(9s%L z1o!M<8h|#Sr!Ra2?Ev}cF!Tbj%c?4pGsxKh#;U5OXWo;AhFwADk8Z`e!e2Efa@#+2 zZ+Z%;zyX<2I17PNaa9!zD~UN~ETIwm7RnPTaVw%$PyaKzk~5++UU1}S=O?7^{pUpP z8!ZCEogN?z!wfqja0BN_c6H1Vk6@BpAnwiv9B3B^ZenBbr65e;fMXm8c2Wlpe=r0- zj1z~YMY~ZVje2B?@Zm3kRK^MQ!v!`|VzXT>aEOCOWv=kBr1Qn-v+^y|hE^`5dP;Aw zj(j3yGHBSb2HIMSJ>sKv#JmXtCt6Pq)( zx03&u*1rD!NiueJz_m!otfAd16WuXqDX3&xysfLO<}Vr-Tf$0RBC}dQAPLk(ydOyx z7X0UP369dyE<&4f_Bh)W7er^Plbk#lANaCuQ+U2tDw9UVdKyiFJ(Wo|DJ5Lve8IIk z!^Hsfqu6I$@_Mrha86* zuT)HX>h*>#d_ChVKl#U>w-w)b7?(Ks&^K3f{t2wyB`MspBF(==$L`xXE#GG|G_~*Y5t*DgSLX`$+z3AtV0xZ%{Xe^pP7= zSTbz~&<1uEi1yr#Nn4LC!p8_ZsjbE%nVCQGH@{0FYF7zuu9w3_J6pyFsSOoUj>vs$ zk^{$rdQq?!%@NX0b^sd8C|txD8cn*&9$-vgTHO$Ou=`#@qV-7y%CWjg&SapIjUj-- z%B0?dlQ*S3dCRc>+_#*N62~aC3)Ti?RX2DZWRG7holLH%6!NL1Mq|U}h_bPsh%dTr zs+=+N*@?bAYjhv;diFm&KX)rDC0n55pBB2`ZSH7mZC$|R40!@T4SnI07QG(doamFB z^Bpd(?^JJ;wTu;QTHk>Q!r%h5YYz1@(a!bnX$~aXQ3xY{@neUzEtFDD*RD3YWcFC3v%Rb1N{cNvG=|(Z#VE*Po_ER1a%qa3 zI&rpbN}S*<{d@^v4rl#e_maLB|L7xNVD(`7e(F%o^Y&bsbe?v0dR9wVsx~0sPdVXW zoG-0((lUnr;8Fj+{UvGIn|)fw3#e+Hg~ynhN)(>mnm5rlmR_1wRJ2>llFr_;HOVf^ zn6-JXyEu>J^$w1u7@2T}PwB`IER}VpMf?(;7I78+UxNSVly8nuoH_d$Z>>oTc`EUD zk$bg&XE;NZy6=NaV2qGQd>$A-4YU2PAfNL!d?GTe1q?B`Nk|s0=?fCIBg`l)dGv0p?!NLy+Stn1$xc*W#OrYv0DyvhAL?sghppfT}1odjc9Z&8n+YE zRvi(Zb1NF!n%d5U0WM*xv^3pQjDRBfv*C?W)&Y>MWJ13jfF2I{;!m~M1}&Ix$?3Is z<}?Y*EMC}og?(AUcz0W{Auv9F$YTQi`0dd$KeYx^l9i1{hlDRIJFzWwe0!*=)`k%* z^H$+K`DwQKR`9_h*iNj-0g2=MQ851r%Jvn(FoV?5MLrBRG+8BWabp0s+P4KWg1322 z@bra^o_NIc)%g94`Ki~bO{q0Hwsg1GxaYIBRC_rvxY9+oQnxBh+v?Vzx>W#MLD2KK zqyt5qKl%{U$O4hp_7%B)A|2iJOn0P#L3~Cz`a2u_ZRspwWyUD!XAM$LO_nPt%Tlv_ zp;S9*%4q8T)M9GYc>zlAkdEO<$Fbo$!x-s!m((_R)hZp!hMtwK0W{)GGiUSS$d}^$ zV9nvxc872uG5rMx*I2cFlL{&vIzgQ%MwegGjFHWsd2JnbB(P{FU+m{T)5b1JsLkH4 zv1iPTvC9&o=3)&wOL!&Qj0M8%BrIS&%#mq$eujc%Vytcc6r5CJWH}f|^E!u@ z=e=>Dk^E*ZE(QatMTlw5cntKc(W7)0t;Zz29m5OPVdD+OmjynlfM1_OX8-Xpht@bs z-L6Z&ZD2U1xe1DL9B4-{(ohXmK5utvrrkcjgwkMtr)qrDB_XMvEB~lytw|+Nn&&?q{!sy}P~Gv>jd^nVG3uwNsy$TM}$f7ET$iUJ+z~|86kUu_qmJ8OGMZYsBHd(}FJ1j45INxWe8s)2sag5j znI}g#75-#u)Y{*0s`={zOHpK@GfsLAy{2XVNd5M?sn9ZQ3zBFkF)fomvSE_4mzx%7 z?U&m%yiKNeX0K^n{$a%Nlgx9YCtG$aCXr_Gni1|6_H$|E0ic$xt=aD@D=RWeLj=Xk;J-^`*AG)2Dsdw|BZ=q`<$l)B%fSHu66HyOw%f&}=o>5fH{?sL9@T z1>CS>{!K@;vP(x3w2JI2Gqi>4K9ijLNJDm;a^TY|qcI3#5$(_CMte}Pd{V&!E?KJz zjz$<3YqYf+9=uS(NPSK^YVQ67vc+N!Zb<0gclddEyTEyk1zCgGuBqD(G2uTk9)WXo zsO?$T04skV)Zv@y&DZ~OaOnY)D4oGC(=CPA+&`6iX+N&Q1>(T*Y#ooWoolNTh@ z!LT<6ez@#lXf#~TODyjsa>`Q2~;~;eS5KGrqxU9FqE>No`%rM5ZWQ==}neNQ%By^ zTYip!U9YYpAlnIA+byFYF;?nOWZ@)z2P4rPaFUIQp{fBG8tPzzs}#D_(Jn4_yzvT@ zcKf=}*ilbU+gH(m@%CqApdZd!(B|%nPDNKt-Mm{zxjA2VY%?r><0t!nW`@ycViN{D zzDbgfPerKPZY{_aMO!i`%kR;?A6MCxbtTlD2IeYVU7#Yx81$xN40W%t^yl?XH0mC7 z4L%Idoi*W1lc?!$%PZukCJ|F-F+h>+d%F*AZ{Bo>^tnmsQY9=Kv0442PY;R+v&Xj6 zM}q>7Nu<2Hbrfd#p||_#93QQNAmTU%QpGo2nu&?W%{yIzDPH?FYUdmQ4AalwDB9cr z26`=HhEjqfDT@~mEedGAw|u;YDzir{`7{=6tXO=wq9ZWbcGc}U>jcOfji^g71Kepx z+~K9|!M&EoseJ0fUW?Z2$Y|7J;n=>=(QOZ|EwZ>$P}{F{Hn!V~EVd~*7K@$M;m8~K zW{*2rI>y%L;P$f{EaG(AH5Q8vDML#tqSXsDR)f`&B59|VQD-4Eo~`;uF~ydsw@Jye zSdL4nUjm;wdJNnBo=!TKVlXsWWDB0yBInK`4;qo0IwYi0GQ)z*Fo$#s5IIp6C(D7b#coFjbDf1f&J}|?{h1VhY z6J7wWqP)KjSG~g8vUyg|NNUL`D5_=nxB*=zT6n5|k(hUo@FGN%Q@LTd0NCGpG5l0= zs)`ER;XTo0rh?NXbou2pL^nQ1!ttrrW*h>QX1zab4HyTd{CG6O5;ndHFZdBvdGvWAnBI z9M{3mApc}!k1O$a7BmqZNLI8093DZ{4FjPc^uoSgwSk78;AXTdcC$+TV zs-xB7?yFXDRUB2^vu-6~t^dzC3DvjX_xfFbuQoj6JZIeJKKHrLJwHDHDa!p37!BkV z68Hn5(+ACk+s7){s}u%@2Z7hHW-)E8AyLD#isyV)x9ivDds%m1wSM&P=zE*ew{JHc zKYrn-zRRTdFL+w_dpL9M+_os`DZ$!-Qx=Z;#*kJha9 zh1BXIn`WxvYU2{L>bP9O&2J`IS}0o^6^J-=5!T}FMXNDaUcU{k)Wu&Pnw0|Ay0ZS- z>*ndCN&rcUP>Q5wie^syc(2n#ts)>oaf;Z+4UUVzN#Xj>R#%3eQBz*kbp1+RjGe!2B}Xk2<(7jt?m zNV7gy@#Slyl!|1m9iaJD&bb_ThW(gMhXn!Jyzp&T@Yx|3&YE=849P43ql_5LKtDD! z0=RfB5yKi0w4@c%G3Lt9;Urh8!ED=t3YO>qc&t=1BG|nC-YD9nr0WwVJJ!RdkUrBZ zius>57D@zUC-n7?%otwra_7jgIo{{fe{MQm_H}{-RSR0xHkRYWRo%rQCMJMW5&N98 z<(5`%(J`U6~><_-3-hI>Y?Tn4E;1 zkvR|hpHoS{C!3P-ig+cD;dD97n=5;+{a$C^g015rJLiWRRc^~=p}J1C#VqEuugv2@ z+n|VIrxK&1aJY^0A&saLbH=WqJkF!8qwKUn7|IAc?l7j_7&0-r&8lhYjv#Q5R=mv^ z*g~W0>CsJR=7mR{pHs2Lh9|j|12!LrGU2cH(+$~YL~q|4i!;idB5+iAEK^sG;foH3RzJ+SEfY0;z-9VZOxsmu*Tn=a6fK^U|qd%1Mz+O{Z2G%ci~_Z8$-8zfjA?#dIp>#_ftY(I!6chc=`-d*uS*+YS1+ zN!HUgY;JSsiX>i-+WQ&megZUQOLfgI8E)f8oGqE4Y&F<5FsV7@t3Bl>38u z4XOt!){bTOKdbrS!G;;9tM1wyE3LJ<6x8iZ(SDt0-9F<+?(BQhkK!!gbZD=Kjmr1b zVPj5Bj*nrY8(FasFWG{RF?#E4H{PvIQV=TgndC1g z^Y3|@sLZ)q?bLt^R{1f9sF_;_N8c_vb+q$>ys|3(WhZsr1pSjbsc^#&qZ`lgLZ#B; z<)u|af6TNlHHL9I8ndke?w`{Ov)+F%Nl8iJ-=AA;^+;}gVRY|Uvez2}(t6e9>KnQlcSwfR4q3L& zI_k3B?;RWqByE+0j@y3a94>SnG;f`-HaBs|LB|FWs+tlb8w?IYGMDSv;>t@TetLitUeP-oL5mJXD)d2AfiG0A$oRqC@LBkyz8 z*5?<0S5hn5v#z3H@XB?!Mqe{GC~;vVLzsI9S~H!xWeAnCk?TG1Z2g#@K;TkFrl75 zuj&2kJ9lPPO5T(%lKvo1JKA;gI3sBIGfvK8ERBIV(|0yl8yi#-Q(IAsro(`UCJvv) zW?+5IJd9|!!JhmZeD%NjZQT{@SdABk$sNDThX-y(T@Ru_0OPeUnzDHJ6Scb$>fz~M z(H7o=zR=tlR{ZS7R_J4K#XSinSof1)KkQD@1J75t%W-hww)&kcPYq|OPGa zQ70|)(%5ijebY@|u{QTuc~jF?sf3-{Hu%$q%`9h@Y1gGVUUQ$5<W_ z(^*fgwP_nOPv0Th)a$i?Ic9YKT7IL$l=afKZ3ebbuxqh#vqIjsX4Tu$ZYS0+ba?8+ z|7xA}TL}}jaHfdGuklS{fmH-F!62BP{T**(+q3pP>)ZFH*t_MqBUt=zXY%J<3t&xp zn|!)3p7+aBV`rU%ZJjW#^W@Woil)X1_C`sxFT3-zHU~+S@ulgMK%c%469buwan(-i z=81olPCpY69UGI77?B(io)DE788*0u|8)Hj_5&3*%W_cp<+ zFE-x_2xSkOIIRBJq0=JB0mLjw;&h{QDb3NPo<7lloTxH@Qyl8PXb`jPU2$zmQ`ys! z#v;k!2ws@mLm*|R9Y zL&hrgA!e1WFL%Ba_Ql187u7H5#m?uGpBEz=clk1|Pz&)u+OZ0LQ-s6*Pohmuzl%!l zY`S)~d}dlSKWnr9z-W`{yohDmbhUKU@qlHUgy#t3c7jzn|BoPb-kh!_dj7fBjmP?0 zv5fU{{tnrqwfE+(_Lx=4Mti~l{K$P4yfhUzm&1Zk-n}8VEz)Mn<65bZ|GiL#wuQeae@h}Smt&o8hfs!sxc1>NL^s{WAkrt$ggP}AlM<6{E5r}l~l|j-a zx~D7I9*^VnO0)DBF&Fwrdj%Oji7q^kZ`8s;GtATMT)CnBF0Wpy`-TO%G?+Ss6ZlrD zJH?U+2?ph6NKMkKr3=3cur{u`In3m9HGihILv!Rwkulj}s^M|XFH`fA41fJ5`qT+Ot8kCzSWL=4Kyz zt>E(Zj6PE<4?l;VsO|I@EJ=;@&o(HhWQ(eDnEM==e6brdv2$Df`?dwBw7DW@&7igo zgQo6r;Gvy-Ud=acletWH#tS>SzIj~^1$trEnRnfpwsL^ol$TTLe%Gfh$jiC-7kBoc zH`=!Eo=D2o(fI#+{J(gG2d`x6CcDAA8e;b}XiRec+GttL6Fs|t#aiV2Mj&_cVs%)Y z%Wh+De8MxaudI>Ad9C#{zWdW>ixmq(4x#EaZ@rKMe`NUu-VR|#T`5el&XhJjbyL*K zYl){am$M++w)ZU7AI;?rN0|G~<;DdT!Oz2Mg`>F$O_3b~jYJP9cN-5xQyuuQi`0t2 zusqu0uhuZL=hK~wOL~5D1@<+*mvN-7x~yc!yiWIwXSrNEx5Z5APG7eYOFRF8ydhr1 z27B`e9L!H#d3iGWE%|o$eH!S6nb}ji3krR&AbmgS5Kct_g$!JS4;Pu7*-3Zo}QQCDf`P^*nY@01>MXYx4Uxgr|4S*IH#^r zp~F9?ZS{n-{D}otdGv%x9X|EELykTdf?GQxttqoVn(m~X)w~RP@WJVok4QB*CO0SiB)79gABpPRmm;wZh#YaQ8x*_v1is3fQI&cb__6-B} zONrtXaC{f7@wbs=sD)PY%)Xu8le;wN7(k zlHRd(zY?htVKiz+wFPyzW~P?(Z)KXzQ5({(i$J6&-y4|8X6ofKkLf!54oi%GzI1CY zd5GD1mR{@972j5&wPAj2s9h^-0v_cX+8TAG!Dpg6ZaX{u5- zrW((i532@3blRBbYR-}wNWv04GfE? zjW6phg_-cq;5#=VcbZ8OG(WsqIHoJKONc&Un)nC10^8dmBbdP*v#`f`-zw~7d8sAr zNf>s!Tj4PwP0;%w@J01(k2d!D+g^MlSk$G){^?ToIvoGJAQ5>xy}vf{mQXRDN&+aO#IuWcV|UDh9>+tE)EdY%$Ox-1@E1NmEe zBZ2VnnAZD=h)Gm+nNnd4pWugu#Y<+I>zs`J{X3dtdxUn~0wm9ri@IwH{f*g7nrQt1 zd{CF9Wk%kFwcR>)SEgpd6fW;hn){JflNGPK23&>zRuBFiLL~~57rxxmX5TCb-}2mE za+t^Ins!TUE)pRRqA15(FZ1YdgfD$!40xmi*J+=%l*irq!_c39v3{ zGWyxsekDBY!Q-}G@g83f?JS>=7w7wE8$jW8uj4Y1fx{7SiL@Tk6|wgjour-aU}uC` z8wVRIFyzk7gzYiGFV@UA&*$b5Kq9Q80WlE|A+j!hxP8k=I9>$_XI=o(&^^Pn5dbX z=fA%ipjpl`%nO|;++Dp}(}OV-h9(PlhwRcID$mGJHK#)`YerVT?VXqqtMDM!%(#A; zAux!)#cXUjJR!bQNI9EvVuddx^IP)J2s8RBV?#$?s;Q1!d9=e7vBO&F0ZtDYZwgoT z^w|qg7v{#M7|jd&I;ap6MFl_BV|6$x*bgxQFcy`xUm4unue7P)T|It=+EZ6+pHz_3GGm#T#d*sAGP z$0H4M6xbQ$ zgIJiB`5cH(ku3=n$wcN(@e+J7;Qo+0pTlLo)WpZcb>F!^i31@2Zx#CF=p0gcgDi zEx>~K7NDLnQ#+hnk)f6SmEfbuWmn1Zqw1*LXuAV~Irivv$_r1oyW*L6t#apctAnv? zncKPA^@cL0Axs2yul)KeBYq@YVIu8Oof*%;-OS1?IF_kzA%zYLWw zDMY0^0%c>#Pm#GuVG+JP?83?JfbPm#w+G5Ft(Lbj&$rJ)uhweKpCyye=9AA}zifX2 z@7_h)dU>NiTy-)QX@5=y&lN>Lve6a;936yVIgs%JLVeL)00%)-$N<}i`st8udt=Aj zz7m)L_UDVGt+BBL8o5EjAT8bo$5L1wXA(&T7%%??cK$b{h%P8&Fe$RPy~vI}D3VCv zvSXI^7MTEAA6!oN#!|2&%F`ODlorRz9RmLuR2+dw@Wa z{-m(i3T(#Pw$B2EX)XZ{?bVd`=R^u=!2B%Tv-&GGDe!QX~g@b{S@6e7)y{!kJkpa+0f^XX!he=-d_GP+~BIbzqnC`~E@zXP`z*~t!SgyAI z{h8j%=^cTNedGmd07tVY7FNc1K@g;KEBKqgxuesR2;k#w#9aiKJO)lVvp2An06gJN}LHR1O0;*bLEokv#d+cOujBW87*cZ~Jw!am%{LQ^R zkxcC*?a_{?dBhv5N0r zNH&PPxJq8szh699xiB0-z>>oGS1qV$ow<~f8j^u0$kijzr-(10H`^!9wjl>)FqGM2}>$~A{oxk20dD3)18bmxS;*-GBFBg1%t44)2(uZgA8 zo!wzQ!M_j0gDw(4D7BT6mRAIKKLDH37h1%+o+FJccmu4XYeD!e)q@;8({mVLzXneo{|I6DJj@ZNI`~~)`1wUS75i1y!}Aj zB8ZPs1ED$F*2QK|77*k@k&L&P+U&`6fI?R-JSrw=-~R;=V+)HC$3+&9{SN-%@YSe8 z*o)A~zJGJktNgbxznC#uuvYmuxq=-*p|5<%i+!<4lfyEUl-_^%mdaUn#Z5;mn@_;jHGacaxw>Wan?&G$w2 z1vT(`u2n%H`I&?tI6C#^0AI0$m2hQjnP9#;%Ym7}RqpKx+DHyCwZJJ!6&wg^nW#NU+BnNW;~}J61!*IM zEa6Db3wCftxW>{3?Wrpv(efb~ZD!!P$`Mld!!4h@wH;KmS{X;&I$#084c^bi^54(J znoVKDA|OYtunM+jD&8W)+<8l&6Uf~rh`oYj0vTnSp7o>Q4B)wSg56Fv{B0s6vR?iT z4AaxYgZ>Th@Hl7yrqG*#9v*dSa}b1!?DrnEuL8h{^1$gKyYU=`hza*ZScv00YrL+QI@SHU;B^^X!?_lyOu571k#NjR|Of~ za&btVprt?XWwtD*WU`zb)A4OwB$%?ONbC#)$PabIDJ@>p#Rp+Sh+kZ&ueMdkms!~` z_58L2f&!NF7HKbCfm|$hVvz^&{I>@LDyMi|9-lA#@src+BCpYIEdknq*UWvkO35&@ zKmJ+`J?x=h!u)#aOU49gFGL>gcv!xA@N)X^(x&eYE!)^}%7itWwLQwfyWiVxyIyX^ zVt(*0nNe!AFEbRD?kh7&Q>9Z*@E3hLgwJa893bLpSGe#@w^{{!{t91v{z_kNaEE2i z5T$`xNB1&F_q?4v5Mk1(q35~-Rt@R?_WRY^>ON!N(omNwr`o%d1X&u7!tauO`SS-l z%foP!w?FTjIlGMzdxCr1rgK1WbILZA|14MjL$0LwdOe#MR0=nL@s92 z+2`}bPVrO(v6g;vS8PTNmVQ(21npfxu+>?vN`xxdH@T|rq{FbhcW<1e)mSllhsMcTjWuJa;IT9Y zrZIcEyIFrBDwLnDsmo=h2U-*wqC(t_t+Qe-OYAKXhlt9$1hgRm8Nz;bYZ7KcbHuBMV^~V6c3#Zd6?%`B#IyG zWBk6G>bnj_qZhy8BBpM>uz<Pu|MBytH9?C3%f`#*$Ng9AG;%Y`|;16^PcOEHP&m#@>}hXfAM~}e73z4 zztthc-lo&oPRaJiKi{tZqNYJRyR(yB+nRwl;ukTzOEbTyk+ym5GuRzH88~TkD8=ET zDTXzMN<*PRXGk_oGDPV;^gFdjxks&RI59DIttPWgXI`cM^yhBvAnuQUgG@}9$d7-y z>NB}%tFUZhk-Rwye^l~j-2Kr{-lHsfw6r-@0LyBK(VX5l|NJ`t&M501Wq%l??1>Ys zWlO(W{uthN2DSDGaiftjhU%HeM~N@I+3&2(6N#z}^W2C1<+uj&ieI&PKsP6)Ts#cI zC8K}$JZI(pKDTm=h#gb7D~#n7ugUIwex9+*H#x9x?|I!IS8YG3y$uWj4JKhHwT7VT z3qFy&km{V8Q`*f2BI^!A_>An%)L|E8+B#M6L#Wp-Eg~_iFt9hx3tv*`eQ*jp+6Jbb zB-+QeYg%t&FPEXqnBd)e?RFDbG+}& zA*rYnJUnlwE@QuK_lv{^GkXz>BV zf*p@WH-TkKx>ElhC;aNdnr>*<%foD!O@(PM9TI!>4AFv#NY-F8-{z3W)qTgqnGT|w z9SR!B6(M#l(IqEm!$n^3sph?Qz|eTE?pos0*x(Uy*uQAph&K*cO*W2*41r+d@p*2b z4F$x229clVZ0h+#<_+S%=0X(U@EH^nStQ3PzPW200NMKKl0AwAyebk!g=6nW8I!+t z-M)ngk+&NT?TnocmFZEN#56oyFbIAf3tPL&j|vKOn!DEFau5_4fL9p1#OFB^LA1K8 zWMSlav{a3NIOVNfaivm10XUWsjo3IeoEcJoD1s^b-fwy&qj%K7&Y<*{Rq{~hKblG_ zC8j;>W(DaK)QFBc2yrHexAN)y86$m0#(=RwSWcLIW>R^iEYgSK5(TFJ^ToRnCi;Ap zvWv)(eydK)%0%?4E}~fvtuFCZk&spzyX%1C`$ZXgC`mwXjs7D!v$LJjMC*jU}sdYyNzj(uaG8AmbO96QIF2d34@%E-tcRIJRABr@F>QK11?o;A%{j>14 zBYwp1z{bd|f)4~4#)sfg)KAwIhkyvDb3>)N{Nc0>ER>y-a5lpW(xh=%pXVgSM7|DO zO_mO+Ei5rK&=;>Dbfbv)ra224J(06LIz@hoUu-Xq7Yht!b2^;RlgJf99CT9_v2iu* z4TMgRZuxP*6MJ&5TY;}V5x`?JrnAROXYT7|TJy3L#G4`sbcjo&a2kUkbHVY_f%khQ z{Y9Tsp`sIGytb>C>DyE3E2xVkx*783z!kRT`I_I-v*~jXg^($pL{m$(<{bP zN==FcKYFp&^5Q;sHDWN~kQX0r{iQh&NyB5V zzaxO(JPKn>4)Yoie9dS555d&Se~+4`XVI4Fa1Q8i(=8v;*oEPE)-B(_^HCNwSsWTp zx$Kyunm=5zPDeZ0hv-nNbM#AnOA|nsp=+(zZT#mgE!;P(K&8~U&;jD@1+(cnuFj}| zA+#1+!KQ>-fep+JHnNAk5iFAe)JvqI8$g|$aT%8CE6D%T+ce?7wx2ET=>w6QNR7rlC8 zCNH+BYtwZ#v+_NnJV7Q`uiLA+`CPR$96?Y%OgD*bqO4OxdQt!0^F2P>_8J%l z`PS8u2iv580c5W3w}WK#%Eo$|rMstGAh)VhW0S5Tg)QY0NiDQ-)Y6xb)cW^9{bkQd zEg!x`90Vtv)>}-vNNY2p=i~ONA@03-lF?J@jS5BIeQwzeM1BG7z0Vyv3lOL%r9o0cG$$qp)g=(^oc98T^=E)YDxTuUfn{DHw%EC8TEytUv z%znm>cxV@D7dN~tA}Xz`z7x6i=uB>h=e^|1-mxyt@7~(0xX>6Jq37qnVrECGOkWDm zUg`Y%-0ou)hVMg*)s3GYH3oMuopCCY4v`W&N^#sqAt#~ih0nCV_)q*dFoWIsURY^d*RNR zd)*tWU%>TT4nwpfpK&{%=q4iJ4bt2)r>BWB>uinV8HWWWE?%AFPuT^Z&K%|5F!_yD zOOph>AEbU^oX70qHu8i#y)J*Fo&0wjn?oFH$NiaQKgkgqarA7Q(bJ1H9%a|O@50*(=7OD|L@ycA zXmW59?l-XJT57y@DKsSs3x503k>C1gJ!6A* z_rsi2LjOZt4c(-+jh~d1KY7EbXPtT%1bb41Ei-hLvkPTBj=TVo6zc+-Bx>z;<8iLf zQ`6T%FXrH9%oQAQ$Zqc81P99Q3{UZlZzCy`3zfV4i7_#CQKQ>5-6Kx~Xl)=p%+SkW zG;q()m>r1Yum;M?>@MI7Pn>^}Sm(yB z%6-IB6b?O-gq1xKJK9|gEg~^x(8IB-^Y8f{B+pLgHq13|LlylpJbbMD58JVv zN8aakFz69fFG{40-R?b-LO91gpdqd36?c<1Z?u~KmZ*SwkA#>M;^=fZJ z+^c;Y3G)gp^U<_AzYJgpz;@3?LyOHt(9nN+?WkA$l(zUpdqW=oX>TZORd0p*1C{__ zr&Iv@pPykq?ysghJv#m!>3C@XZPIX(%odq=Pj5`T<`mrFG%+@jjCY(w^W6iyOe$C{c~MAmf*!@GUt*&bCU#CXL_Kj=eOF2V7%Tw zgg71sjWbvNKZU;ytRfh;_(6MNkGtl=bOxm#0qnq3^S2NF`F7=u{9gE0@Vx!on#bmE zFNTU;5+E~h1wOC&&ivVMX?y?PNokX3-p3`Ap{|y;57kn{j11Q1&yM_$&n&p6|Ldck zPB*p#XMwtig8dzLfULdAl{4aYDY)rjw(%GGZgcfv$^TUZ%f41!G0?9i<;4)|=iwY; zF9&K7IqqymJe?>g?e24z7=@*Nf|Vd(cW2>eQYJkangf1^7cXN;8m6+627a?^tb#7oJfJo@C-LGta}_<&FF?Po&{lcYU{?ukoxxcW$jLZ?WZ zT}f)Txn_1WO|w|CXvGgR&&@c6`Pe(VPi(!TL@ zdDsuAaaER##A*3(sCmY|N84}!{nr9Loh$2V9`0TB;cT{53j@PDc$t0|LYLn}=vbg0 z(PvoasG&FexqnLwNhD*55_WMbD)d{;uIIR_C=d}~M)G;hwqVFER=Oc(>!679$@Dg^=C&z1Gi3v-m1ap1@B(U1L8ofem7Agh$ zVr7T1{WFC01&KM=ux&OBUjMtFUodvehQUR5{2=MDzwbwk_c}JtS^$NcsU&10YhP z=&h^I9Phfmp?%Zb-*4OB9U({QXjiLN6~I_W|3K!O0xIw^ncKPn6|AX_*AbiqsgfjI z4FMIcRgaeXNLG=9`ctR>`ULyzdVGRC(9%II!RoDx%%i~$o3^^cj59dngx?n3rZP?*h$P(rY@B(s}Wo1%d3;aim+A`mcj2>p%-@3DvcXehDs5jt#ljQO;b;dBbd{G4^dqpC$=dPHhDPVZG88&T>D%HLs9!AraN%Z7 z>zwq2Gc)2WX?onxBrPdzaMBr@4WD4?9{r@@4i+}-S>l!fi9eolI)5LAh$*L|qhm66 zmL$w*$?yZPY3;&nb1S~nF|TvU2pUGUWAg&_;a||FP^XWuYW9qvIx~t;^4|XwRaX>g z{KX7A3l;JDkC}D)s~@E?Sk`h)kxDvS;WaY>TI?1WB^Ny5xP&2-Y3VQo4)lEiNg>rH z*QwVc7cY@`(!Id4*JGWWPlQ;!bePveKXreK!(y8rQp(iKLxMr+hLN%(Q@_coF+Ghiyi*eWDKM=wX zW25x=;#N=y@d)F7MAmw7EB-{o^IP#?{w;(6JMvEoB<|Q^O@}afKm{~a#N1Jt`7NBh z2YJ1BIxp}=HbVyU#yot9iyGyzJ z2yzIf@ypXln8Y93ByD`;=#<}bv3h3W;z$CCJRBOFL`3?Gpm@=8BZ{Soy#Bf8b(fgF zQWKFIjx;?IlE;J&O|Zb(ut~9eb$-W$n|*J(i&ym%?p7Q$G`;o){4AE(kOQQeM`S;s zVXzS`#ZqpVqoR@_MY5qnwRLrRhV{?=LDej{3i&UV zsO4LzN0uu-+(wRT--2t^hvhKL5b_e-)uWe!o`d=!l=DirH-lgB&FxB;!t8~DbIl0kRIG8Jr=3e2KS z7!JJS-Zl3x^caaCt4_EOMn#9vCtZ|dRVb42ZO>03#G&0lpp))y1z}X|1AaC*sl`z# z8xHXrqWP2a6a^w?kQUCo3b7t4mAIjk#Ne|<4XrPHU6$S|lh7r}Cco2}R(WNjjK@3fhNTTkGSd@rq$WIe~@-pt0(9=?3 z)Bmk-cQ{=jP8tX|fS*y4H%$^E`jGFB&gdMVNRc7f7b3rvr|nODBsv(~OV>{*tNXn% z+9j{nUYL?cU+mc{X)~Gv@0(E@!A2qW`Wi=J=*~Qd#%$8W7jFY$m79+2l9)Z3 zUK4stb}m0be|S-&y(V^$b&{QC${_1mD8b^H0R)}{0OFKHcFkMoZqVy_d3=dD*O{3O z_hAk8Y@l@rlte-h}%7n zZ15M^NPJjlW@#wiB2ca^#N~#v-hur9?XsvHM74>}=-WHPD*fG76MX~~F6{nq;esNX z`rddL1auDzA{$%~=BTMqzYr;~{`)!P(3H6v9@O4G!sNc?TJ~!!Upg`{goDkldT^BU zCZSgdCx&k0b{>|XaiOYb7&u<|Np!L)y$%6?z>tb-uQ>IYNTN%^YQgnM_Hwy`YVasy zLw`c=5a!%l88ZNO*blW&9DsN$L z8A?WgMA6uv)M5peHFlj}T{z|?4LPO6lwD=)y32mLLM=;G_v0^p+=ZZ!9Z+ab3H+(X z_tjPAJmGAr(b?wlxrm-xG#{n0R|pi-MtLv7Ne!y2Xt_ev1LlT=tqL`S4I&~XE8l{` zd~*Ao3ZJZeA$=mZp1x!7*2Z^S=9n=P#*(yXVHdcqTs*V&Eu3gDWTru4h4g7hUk8Id zuXOA2BnCT0 zMZYEY{hq|&?6!RM;(>|#$?b1(Rm&5XuU^wB@mq3xOk356w_)89Az`|j2&UJ{?&pN6 z8#wxJ)!}H^I5ZI&i~TlLL6xJBMF^}@WlY67w-|D@;2{n~?*1AF!FP+HbYL;TEhDML);LgA0`lbl|fEv1a~cq4Hhq z`4fp$-MI79_7}%TLGV8zw(4QxhiCM30n2B~`S~Cg`ipASJ5tM|ZU3r*kWR$4al# zcHsOKbykA6P4?#ckcCQ;SP>2wc#X6^_0gdJBwrjK1;Y!>s%6mh8Oz8%l{h>IsU|!I zXSgIHmXt_weBujNOe0qF-P9d~QKQ=^UV!;br ziH3HL0-VQ1|ErS*uYY%Pf$qOL84~w@J4v5eI*A@20jmq?8UZ%?_hGu9l5f!sGW&^9 zO2FkJJL$y@AI=Se474v#Q|RywD*-S@iV7P3GDB$h$fAFq(V5=C4YuF`5bkuY-UWp* z=V>IL0;2g#$Y+v7ORsP&cP8$38+7MC?iJ=O)p~Y5coyhO^{NluNL>+jN;Omq?&Z1` zrUJC8JY#-N4=`Kzxm}yjUU0J^CYT!eSrH6eJV%4y&VQTup#s=Aq$$^q8hwm>OU!K1 z7aVb05+_ze{A&R_ENO5C%7pNtGDBHCNZ8^AsAVc$Bcbm6DiJ316mznZpsn0cwT*_84sC2{x2cBs+TP*p7eiz42UFH+jk5fdlyc!M=(7OAL(hje>eBUlev%(%pXp(tIcVr_9e=lCRX^|%%wh#WMorzDL8@JXE2`dDgL20NUd2Uc&zdz@euEpWC{VIPr zO#y{dzDs6N+2l@o$ny|1ad47L*xIpvIYD#}ppIg)vsP>Jn2m{4FVlM-`gg1X=T_Q# zw~U|yMfQkSM*Qsf3O_{_$1_Y>*B;IpkfPFZbLZZW`-}+LwkHuuF@84p`Fu(K0k{=X za)=GO-^#M9eTJ_DWFsS^hhg-(hB84agl?J8I*+-=t>t)fj6J&yO>l%6+MpS9 z0U+ajFNA{M(F7BWdaEx+%Wc*n3EhWZxQ?Zmwuj2?t1!ADr_qjbT(W-F8BUjV~&wAwT zi=cwoY^nDY0Q2@EqH|>=Y>FNbsR;N50q6Qi6>?vx%lu*ZrmTw--Br&vhIMT&^LH^H zx-=)2mu8FiyL}B~TCDIckM{S0HkopsJiekO1r+RQN`*IvhK{FQugdZuTl7AlFT7rVKEcLF= zVaE7Uz206W!c9_7v7OI>t8fwg4ATLv0sP_gNsw^<@4|4-`7Q*!;3(_re)?5#GsQwt zmBEPf%UnueYkD|@2SJ~$%f-%``Hw^J*)N2_4%80w%UtvT=iQ~=blR}-NH{|~6cC4C zuRxzQNibjQHd-J>+Em=ai3nL4%vnEJGSPYE^er%iClLpFrKUM&)~#)F)>Ob)#xas_ z96#bw>WPW^jKBPunwjYkg2)A<7s-7LkM!re@w^~*;SKvsU4l3nazW%3aW4|a0v^hN zusH=J$BsQ57o771x&nGz{fvE5B^(W3uxVp4dDYK?bWpu$-vm-)fUJFx{6nFG@6w-O zYporEy(%~fd?1|$OIAE&Q{of5{BG1P->DF>^|GHL@c=~o*AhdWr7K2JH)X?Mo5NeN zwOkrk@i@>jQBAXw28AGlalMZR6UfjWAxeg`6q7U`Q`0c-f4r`I99X3W!LlC!fR;ar z^W(Jimze_X2Q-=jYo4vS6FBoR-HDiS-gMSg-`p@kd~0|eNbCQ(U|T>3=zEqX5uwz| zSH@>w*);Rk*UahA`^*M?#|<9xgMxVV><3QsaQdD7phI)VkOr-74_OPNv!&5B*ZuX9 zH;ls96y%w9XW{psVVlxtAp37dkQAH+60VLDD>YvcKL*|7G|^$VC^d7}Y0!@SYmzjd zI!H2Xd!Q1HJ_83-*??T{s6q*6TC8n|Sj zrqv8W{Zqjv<=EoHO(C+>Z5?%|G%zk+GH{!>S$c_l6q}SSDPHdt-|=330xMa?8>CmG ztG02N&xTJJ4u168&GIPbVF4v)STp-}-3Uy+vkOZgFF)d}uX-mR-unDj z&yv3Aht*St=>aYseWk>RHgYWyh(zhm%gh5!uGDad7Qv2_|B0q`wl0_!rnk>8y;e-1 zW=vfP3@t@kV}mVk>EI}0VtY!HA4Hox7Jx~B&1a&XwHlXxO`L@oZou|4sym1lEu-05!l4?yfx+^VqhYp0u8bVarcPC zaQID6n}S(_p%Zqmf+9cj`hdyiXju4%_LU;cz%g>3zsT<84|vDKCaH%dj{!{V2f%y8 z0$JWC$*>7AbHHX@c7(O^5A{<82isb5a9Nj=e-u1-H7;y6aadiq9seoqI-NG!I0?W&8@>2?8cThntmmO$l`tZeB|j{tDFh3G(w zj?h_y#kXKQPSLQ|O$vsr>Q!LvkoIiFd$WvO@91B@C;Hl1x|}_<)LjL@|7-l)D!I7>tfKgzsVM7 z=?maHeKK9?4LgI?lf_aWSNYk=WL6~1EiL7E|J z9}4G;E4#(!sD}-z?pL!S7*=$=LxtT*)^W@c^~$Bq&{C`~EM<6&JuD^o**lYka-%rbeL_c&| zvTZRPA=m?~s?U?Kr1B$o;0yzIp1bfjbO#YfLb`wNQ1vGwi!- zsz_tTYo+!?V>OSYOaiFaBzuz3L0GICfJapiWm(2SJ@$f{u%0~$#P|FT zMFGUH3ssW_V>7Yj9Y^8=)%R*^0VUr~otXM$x#0LC5@Ec9x{Eoc_?9)iI;rmKE%iLf z;SSvzl8pp{m!S-DBw)O8DTsA5OrC1uW*IMgWpylpN~rm#SmS!rfHeI!_xUJyMj}PQ zvq7x0j|JpALHMo>{CIgw)2wgCbLANxEmym6zI?2gpC`%l4Bu~o3fZdm9ak+71_))Q zl(B|%{x|5-e4~|Zl;hH7+b6vE1^olASjpu4?Rkria3^&hx2B|I*78}}8CMSfahX%H zLt=7<#;?4qliKx@aTD~*D#!5iDoVbIs}1k6Jx}-T-u^SLSTVu$^I0k51f}F-yDQ%I zHrJ1)UNG>?pNE@2_u(f?On&P-+MqEV;nR3SPbbqeeUIsobHAH_7IBm$tijC76lnBNrB3KW2~c=>DSNuG71`w4K90ce)Yx zJ*|hk{)YQHt#OB`rm5nHyXnT%ibKVAC7a)jFg?9w?Gz77Z%r=*7jq&`Yvqd^@-l6j zT0{kUmPoeq_tdEJJ=ViTmlu}oRg0n!{R?3T)nd|Z;l9^Rf|vEzwF0806&3zaaqvOu zWvkRJ2ka&5Y>U(QTUN7N=PxW-r9P+c(qwDns1bHluNY(1HJX21(7@vLd`7USpKa%5 z)C7}MnD~D1~k6uPCmKgQX4qE7RUjY zYf^5T`onc9@!S?WiZ=6q9}id*1$)_DEGF9*I&iB=mI zz9YZ6)~Ue#3YSxrxm#Mtk5uR1mIb%5N8A` zEa9vRkywj>Hon(K0|3}vu_TOB!mp$2h zZQ$pfIy1b~KOvu)Veh~o03cFbf8J?gC&q|p+8Oq__KXqF^mpu!x^UDhW<62QHBSoW zAuk6!ylqK9xBri}_W*19YX8Q+86=>LEJD~rmV*%pXq|*5SVa&JMA3vLpkffD)>che zT15e8TNgN~S`}A)+S-Bxt=ftUN3EhF&MG)@|3Bv>DDC_F-s^q;*Y)~54d;9IxzD=K zJ(+3WT9zAWYx}_=nAOG~oNb(aAM=0Y7wzfjZ4%979uxgUZ=e25N7SZ(iS7)eSvggv zeUz4z_YG{Td2~!`Ph?~Z#LSNi-a9d$B#CGx-+bb&eQMm1IB)gzBzDJ`%|>(e4gX+r zvHVhreoa{HNXFHn-TVA;tqATLjWa_T@vx@?!|7ww%}ofRNVu|e64$rm*DdkP#XU{r zb=wiS*=U|wx8x`DrZ+p1bFpZ?t(bKkC)P@L3+0q3?KrI<>Zu?fM&LIrT49bC^x@?0 z_~0(YE`5;PG5=x-R;W0tQxEBjpmgj-u!V^2=Jh*qZa`&QGD3?uDS7o#0T)~>0$6E9q%wF?i5 zaN4-m6pBJa?g(Vv(MG;yGVOOfylvSMR8I8mQ$bozO*m;|ZU$}R&MITtNd3_hq>({^ z?X;1Rq>*;gNWi2Li@LG?2y8x;Foo@$vPUb!=c?oPSr(|9MFoa7#%6G zm^pT|`F3(s(U!_aPD(aJ7j!?V6p%WMJ&VnCwMin-)u4Lj*hCHqf?hW9rSOUiT+hLyIhCR63K=rGBf-XtAO@rE-$;kB=LrcPw2f)sZ-;O0#+4-6Ha>&+GB_|40vaVEbTh zJF0$2ACa3aBu8BnxtBKdNuJzNtn*QZeK_(Cj^mn9pr7DAAW+|swXQZ?nR!i%m3wjL zdU{OWkZ}Js;;m%FqyNVd1IfrL5ZMutt>wZ!7;JqJ1|9hJ9|Jbk54iMM$Gu|#EFIZ9 z0=hdJ?qW$=5)@{>b|}*YOX)Iv23d?mWA4%kt$S9ysSyFMJ(xzY5wC4D0`0Q{yDv)A@rw^CV6+Zcdy=->Z6`pHieO@q> ztUmiU^|CxwM`IIk)frsvyH6){Cmkw$JA2$;OG=_fQotC_3!aV~<2%=vgnDo{UlUu< zvw`dpBT<)AB}G+FAVdefUG}QFW)~T^Ym`!eqYjdN9kPy#O6|ybiALnib0P!B`XX2j z{(RiaaLgpmb-V!GaFAuot9i2F6)_f7c+RX+Ubu~yBX@+Hj9yNbn!6)iYT*uh=sLs5 zZ`nOpbF7a5Zz4OaLx=1A^l5**IqI)3%W$nHPZxLoY&Qq2O<{fP+1XhawRna!)L(gX zKrIO!p_XuQc+Rt!k_?#4?rDI@h`HnNP`CmjyVko;d4o8j%x8N7pw$JHAScB7TpRJf zmXlIIj=lY}>l{LB_R*J{s1vi4KA0sI+beCPS_%u6A@+l5LI^t<~+&^_FbcBb-teo)6gJ#pFadXvdABXdBFWO?H zl=RXFTn&f~ryZDj{sZNCoz5{=P>5+INaofr$51qr$vSd{eS<}W*?=gebA+AyC~beX zssdvG&iO!@AN5ZZ*%3SFs6(7RAo_z;e>f3L6Tl$V{>ojtC z%->>s&rgu$SKXkT2kbI~O|~*d&|$u)WJub$4)Y_H1IW9TgX1+s_H9Y80beF?1P24W8w2FnF3W|1xDU+LIy_5nt|rfxPywg{Qi5#WJSdP{ z2X=W#Ac6R)sa&^u5;y^%$i7*J7bkec@EEaumXT@Z&7rFw+QEfeG4!(eMoPiQ$(pY#7jg(xU)(2$6D~wD zSG{+2nJYK_T$TTtUZt`4I9m@uMNu|5gmyt`KU9`*0_rev7f^qA zd(@<;Y|Fc1|9Y5%zSN~v8&0xVtOMLLg#7?_U}(+(SFOn%&D9+rW8ja0(jnuLLTTRK z@^k&tO)r$ODpU+(rGAHi6je{XpNa9ATxLPx{22eP!97wsrr#8WsG7 zL6)C8_CRvS=AD-Q2OL)0*_oTm1!U)8wQAO=gjeSNII<_%Honlpr~yC~FR7#o&#!>*Db?#k@pcp^ ziwL+Dc?+ZX(CQDxD>fv3zuN6+5{&R%VZYL^=v~__b*c)MO`eJXlh_W~KHN(j+^1vK zSP%+@)m8VbdSlW=;mX!CMo{9Gy((0R#aLp#I!yeM3>PfAj>Sg>1jqpkF$L<=h1JrE z2BYks!%OONOsX30Nwpf*{I$=LV4+=>&0^K$um;HMlX;`Nk@e~>*3VL5yrCi)Dmp)W zvT}ZYrdvrh@3cuNilUq>+qdH0mS64}=df~qTz-##v91i#z|~UL1)MiabL&U&q|fhl zzg%a>bd1?yDW4ST0CZXUQ(Kj}mZe1%LJ=bubBG)5zg#^jBjoS3fCXiQz?{p`q`%jK zM$1}H7bamF0&e7m%0a(Cm2lCTIR*@(shz8C;jE~1)u+wjFZV||Uc*F-IiQ7P&2$8& zJ5+h|a%rW{{_ENSCd5WLILRNMu#i#^K%2~WL$8xwT0EIyFwYMUn;(pXvN}1h)aQOu z1K`+}ijv3B7Vi5Qn`hC4xi_kkX>z~^(*Tyl4Y+_R}PK)%ZCq_aSvksFbD(HdH+r7g8pZP$ZZLO`wAE_*2mGWacr@qCt2 zhy5$mt2q!J?$28jV7T{k!i(>2T?Xx1J0VFfqNba8QjT7&qGNBPB{|R8w{5tSzqi;< zuIRKr%Hji-V``^ZT)ZJYqWOkZy4pMk zSC%J{<5^FJ=9}QC5tu&^>@m*VHM{qemQ#!W$JAF-TFRG`R84YYDSEp z;l?#Vby}?rZ=9)dO-NlaPW_+0Bb#e8!_vY(K<#hlkRI?AG-qTP3s&ODy1}hqo78zz z0bfY-rgx9qmd?9}+-9J@p>xd}XotwDT!ea)DK=oh*B01p+doj~`UiO%6#MS4Y-}9U zZNy0&$AX`b-Smw9xmB#EG48LapMOHEykSSujEihd%vPs2pO$dxgU1ObwRR<~*oI@l zXRDzT+T+})g&kgZv83u^q@JqS?A2k1HFa9P6>AmSnWl z7wLwGJU3qXb3XcdXln@+0UoFTvN}8Z+=!Jcx6IW9lsnl{<<(NPq0dEWq}uyWvpzN^QV`!Ec))~Ly((Lj2&gy;ITBd!)(S@ z&E3g-O@EL=_B5qmZb! zS6k_bE^`IsJoKdRnG72c7;xEX$r&rSa>P_F*YUcUMS1WuuQzISyj-=`-P}x;>BKk6 zyh$SRh6q?Af7*~EtjI7Hiv{=k%WK0ABmQ#>0c%nyBg?E%f(c`7gLvbztf zm95ecR=>mR*aY>)>$9UukB~OqTcGoi#6BdY@c^>nbi8~dsGlY4SYP`Pha7kVA-Z$6 zp`-=!@s%T_cU~iKc`9Wb5TAmYS)XOYry$TO%D)7+3Zi8zCo(hUoc60P#ztzaLjB6~PPCLM=L5OW>2$x2GDxxn z9=7S#Y8C5r_ohST;PZgRB>#IKga;1b@s z$u-H^jhWev_4Z`5mfkZ;EY09~J=h=7SazTL_x{MnzxcXvo>li5^NhZ#7IY&R-k>)G zJqM2G0UXZ}d*;XP7WV{(Xgf1ymTi>7j7qUi!!;{i$3R*dWwBt0k;Ci8qDr4xwd(})R)C`Py4z}H@iKMs=Fad&ylUr7 z?EFfHW@JU*7TK%H!5TUDLP@AtEYz8`x`XrCxFZ3wyO$Fv*4a875)W&pi2vrE{||@& z-jMyHbKddo-w|2)B;1-c!Mp~+;6>4OfC0N)0-!fHYhCJ<}24UxUfv(auJU`LRNaxizz z;12Ha3ES8=I8lcvZS0heht*hNd(9!q4e?Yk@)115bK2a_Av} z_39;-?%$#_j6vpFLuK>&q{B0OGztVS*Nb-HQ`oan!cZ|9$k(Lv zh^Qo&>6P0l2yOOrJ>-@c7C-@-)3DxD{7Dx5L>f3%4dp>FzAq;n`pnW(@#im4wCYWC zopGl5Ks77&b2rNSf`2B7I~1Ax5C_SJccYNSAz^VY#5AB!0Ev*U32T3n|71%O;0b0x z@5X${8@2unLn~zmU`KaK^hM29`yPyZ%c-2T<<@p6sPp2T9kANy`330 z(%tlca#C*qY;y0a&-VTmPC>VA55#OC1HlTIs>V3(1>d}!0Ey7rvB0kHBLT~aN`LLy zhcoW?ee9VDl)?g$tW(GW*gOAfDeqIZ?#$`2C$H@?R5~xkZ+TLYULFIE7U*a5AiN-L z=!3Om$rUZ|nz^&t&hDxd)LS^2I_ufF)CLA%iHJKS_~1VD91NTKjtw;Oe{$QV^}u;A z|2f-pZ;$;-FI=b^=K%}V5RVf`{3Vuq0u^;%c+10pgp$;LAvBM;4+6a}nz zE`)$HES~Cqxv{nHBI0I&4xnNB6>M-=pdJGjh zcQf5whCzhafx@CM%fOZeye+yV2QnQ4k7+Cm95g}FKj}-MBlnorG!w7Z!fKv)K)H?* zW0eBVZMH01o;{qwBbTuHv70HsCi?fyfiu4GRmbqe&JiVBjqlBmkC?0F870oGs4v&)fn?mJS1IkYsZAlimHjt zD>9Wjyg@2mjJ<410*zjK`M!Um|HqkqTI0OruzBV(RO9%Q7W%28kj!-?cO%>W){yp8 zK5CgmYx$u|Ept(ePnTNOe>QV2En^jO@2B3`)<<@YS;;>zW~CK*o;5D>67;C8!ZS|R z(d*%`;nq!e*h0JRy>!YOY~4_PX2R7A8mq!^6JyWowfb>LHkR{DUu~M$e7j4V#qO5+ z!5MqD7oq(=UD_`tji0d%QR3=YDbY9TEvP4rx_S#{;rW!V3U1VVstY$oE4t9WJTnjR zjJ}mkhLQK>W+xwlHN*l}GY>)LQUX&wNZ?4o(9_elA;ceX$SKh=QEE(*y!cu#vo24+ z*#edw;acGms2QUTQ;J%NAeLBX?W(r0zQx>&9x@|Nh%sw~cIZ(%NL4(8An7nBnH)Gj}vF=w327@ zEthU-2++A3M~wP9F?ezIILpi>T7|SDF?D9SuJru6oXN(X=U9b(*=dB z^c_N%XsEl0QA+;IB(%?JDd+%ue?1lRGS|`YXU~1RrMax+^K3z;sUVMKH?=!z!j2Q{ z9}T*V)$)bPgOaZo?f+d+FHhH<0+*>BG)zT1@V@-*TrJ*>`-e5!)XUE|Y0Y++sV~V~ zhwJXnvt>Yr+&_qju9znCI08~8KbaPC2x}zK`$sfdp6aGkipk2jokUrJ+O6F0g?6#4 zFScFQo+>hJKZS$W4MV!&C zWXdRP#B_sgtE~gDS<3JXwKQ{FlU6wPfb(CqC z3?YZdvW^@7=hfQP(TPqbH8_^*9Ai;KyR74SmyK^8KsG$x?+fW6U_-Vz2$(BO#FBL1 z_UhSUarVgGgw-b1v)Te3_7EoHz-0?zY=)i%oWjum4C%7?LT2@?Qhj;UEWXqN_T>{&yucC(r<oscN*O z3ig|Z?#7<1skH)c10=(_Q|0`7-aGmJ>9pVCeaX$GztLu)E!WBe*%V(GffytFRop5>nA@aEP@f~CZZ1uMCkz3=6Zo5sfYH-|Le z93Ze1!;Oel<1H^$jw9IxXO3CE#_nnmh0xQ6by5_Y`IV(-{XZ7F&hbIay_mZ?`ztY* zV=n1H*|G1_==S~dXOl7n5nZzWC^C%+Aempu%IcBd_UD-6B=jGhWuKUUdUkSs_Jr+h z;p8Edxh#rMwqBOK#*QuQ#umI_FRV?&wN&H8=sA56V5V=ss2d{~DPSV536_cP8|$D7 z_XMEN^5yV;TvI=*G9a*URRVfE4+cDd3uzAww96_Z-@ref=Y%{F)czX zi6~T12t1U7HLMH;AvFNja}<=3;Yb-7;SP8!LlOgT<+U*yu0qGUTekCS4i)UtpGPwby&Wap2LV-)u^EE+v zJ-L7I*$>hwIhATc9+7-v8LBxZe3ML<5AH3TIO}p`ur_?p7ZN?g7h0H8$-K~x*;ffW z<@&kjb;l*-qLp($V>%@7V@*OTOq$QkMg4f#<}4gHj!<>yfvP*aj8Jt0x@4=n_44{( zwqvJ&Ois_+L!uqnWWw>LLdo@00;Oe?S-n6KvdiV7%^EYI3qm zZ-;=91VRDFMC09raRlEeu6Dfqzn~nGXZie05RQ^+>312%W_8AW*s@*~iFUoZ3Dd5# z`4BV9>3;p54V3fKMr_}nE0I7zbN?vqVFBg>wa@4-NF6r*89Xf!`31;)goEP8qdd2> z7sVYqv8%3l0e9h*bk%SH6a>X!c0ptyLnI@d(o!8rxm5V0U%=l-lTXU6Ley8WYK$NV zF`5cOxZ_AQ)>TXT1HOG(@=Y!AjtWyHOBk|RrFIOj_#m{TvrU@?git3T=i}T-rW$Nl z!K(esAr8FoN~onPNKFSOZvZ%MQeF5W5)HP>ieX^lR=K#`l=g95!Bgc)} zLl^tk?Cj+8Z@(8Fv$2;-?r5Ju6n5~0^4Z4PQs!cwg?30a94}G6$8=xzHy3Z-7OW(w zqPY6F00@!>>zNaX1xph_uh@#^iNs4JarB$oBS11p&eC2CVT*A4c3cc;fNE#MbeEZK zP-@)`lMX>9lqg{lWZJQ7JHc4Yz?lTzF3`z~A1RF?1j7=hst5)H!U~}n0w)7|Nhi_C zEh}Xm!61_mOc+GQb($ ze1(!aR8n`tOTX^t939b4GdP#^ljxnxuE=RVoeV|vm&tQy-)K&Tmd-X*3Zq=m-^vaT z-s|Ex^jPkmzrsEDO^f8W^%*Y=7t8ycyavT8DCTb%4}X7YP}4Z;JD#ff&bDM_aJqIG^RkZ~M(w{aL_2C6jw(?8UHJ=y+h*k)L; z0wn11aH*eb!*@Iz?i2QsqnNjb5;UH5&MkB}!W`obE+3(-K5; z6LXuOZ>Z5)|Ebo0LiLcQPSSsBZ1kVgKlJK<(;Ajz0TH5jc7t;MPl5UZ&YF{aJY}8v z=6;$cAZVo z3`ThBpzf9E{O7)^!Kyy$+3GWD`;?8UrK%#;J=G`brRpmzEBWx@ePjbd!h6f=Rt#Mc zv00g*sKv)MykE~2QXVebWgA>1d`4)j&h6-+K0_V+x+WXka z@{P?Pz%d-`xJsXG@&-}t6P>I6f9%bkF(%<1Gkk^BqWLa@s^?6t-0q?%w7__VldxKr z`HGcoC9pjNqJ+uqmKT<1-%8^YnOp}vrX+**S{v zk879N`G=UZnr-~MB@^sh?jI_Ele_h8w`9&kZRGyN3Vewxv!lRmBX0p(r|`WHoQR^v)u@-6mgbLCm%cdU00nIax< z-+kdaW7ufJQ(jzg7mrF--YH+zEY3A*IHhv3u^C8jYDd~beFb;fz)P*VCI2dive+q6 zY_|!UglA>dX7jgruDQ(@3~*5O*4+LGCX9iv&oQMLt&rJlW^oZzAP3IZIeCC-~UKaTB$Ch7kHeOL(r9RVQD`m*e#NzC+|& zm;5*3VUaq$#G!Dx?6WTB4Ha1!*Cr=I{=;N1MMG=;$Tij8c-lI8Iom4Mi{lRM5*3!W zmAEWxxo>sVc5%16*{Yv4GlEoYsln_*ZTpf+L9<7dUo|_Z`N_=?COY25O~3>(ZLAj3I2@&Q^I9D^YG&f~MQhlt-C#)rRSFm*CYt%LKPHS*^Qixx^gouN2^P%G0Hc6& zdl{yT?bn^D^VC!@49g!OS?u>55Pquq(bVyG#R9JG}lEtvc_V)2gCiPoBDLhYm>W@x&8ahQ9RH7T6OA!b`Ac6$K z5XdBfp$N<)fk*^uNZ?Zhj*-9!1n!W)NCb>YJuwJ)l0Ym15hM_gKqd(!ATW;v#vo9G z0EA;Ay|RT>N zMv`C^4Sq_3bu>7F1e8U=yf$GH9fX?LN|o0i0RBBr51Ejq=mi!wN7oLMmm!#c(tk4Q;{XWAkRD))YF> zkLe>mrvIx%BW=Oo0?<1w(>%eKvW(qV|EV>6_S1h>7(PG2XX0T``WaHj)_>~DhUv>D z9+uIvVP!0m`n93vNPQ|kX=M;$ zH}Qxk?L9t8zQiLk+P^XST8xi)R_rDt4Hjac0yH5e`;ZLP5TWgi=x2zi=#2P;L`0*L zG=dCRA7QA24A~H&uY(MlL{xOPLWXUK(B~inClNuNm6D;8h_=omWblRveGxKzLj)PW zK4|C?fdGk!1_)>$2@LcRGJU5B6i5UEFwh)h&;u~Ldb$Ts0OK!!O$66hIFMHz-iLw$ zj+lskWCaQbLj37L?)vReO1@6T{m&56^8h)d6IW(HplMImK|INqG(ek1+$*b4V0B&w z0=DoWZk?(XX7=Jf2yld{gQ~6fIQWL2$;pSbcr;0r^3wceL1W zl!t9NbGsAq$4u3m**|GdEie~Cc%qmu_UJ|}&S(dQZe}Zs!Bnq5JVAgfQG4JuSE(by zhh;{xj{5;3om{dUB8mcte}vEF?0b#K;z5y{Vbnoz#JW`w0tR)cT2c*SN(lJnp=z#9 zFSU}cO0y_^w34HlB`4x2q!~$g1XI6`ZOdq$@`7LR4ocleHxv+S5irTY4r1_7qM~FU z!5B;>aJ|~Mh#(3YW3Xtz2QbVNm&Rb8;PaTHV!2hCowyuFgjq zC%4>_E6i7g1huUX&xYw83oAT59f}1q=u$c1m9D{6KV`D4V{CqNEU)2)tYaPeDC^il zsa8TT;hklfRgl+F+DWrVNB~BJvy)Wu@4Z;S=1T0)IQ#H{KVQJB&P52~FkCN_O?dTPE? z_|%;IgbY0T^qhE?VIeD3^kKL-<;>+VAAxgx_1NcOVcez}qjnFGGu|M(bKm?2{2 zc%Ys1LJx;_j8H;Dk!aM?x~LKgW-{I}&J+|RG^x3&&koP^cJ6bh;azFV_&#lFlD397 zENvZ)i6*1+VLrL4xFn>zq#MVe-eE~lc`PI_MdYi})kFmdTK z@||L{W~TQqd3(g0Nz_cu%gWE1n$v&%+mZpym=B-3-iAdmPSKsI58oQaGs97hzHIQ@ z^FEAIZ2lzuXZqV^0~x0g=~J9MKMn5Lzwf*FNG4=*mPVh-e`h(G%!#-DQzPFvP!>@{ zNQ4SmZ@eEsUg6|&FZxw=G@cRUsSYI0pE}qKxt=cTO=vnq9z;Z>ro1~AWj7w3x(Y(> zyjilBMU_KjFQ2@a_@yINrXz|cf1J5Jal9jRlhS5Ae+t*OL_Xy_m>sFB~A=t2aN zrpyX#HxP}(l}!_0IS>&cB5@A+zFAFwFaLY=-^!-j6OTLGZzTdk#m!B(v$$fe2 zR}j!yeisBBr5{k-n&pstg4{K>&a9@^L2pL4HW0mBy5&Gr`ExX$nGZYHT%mswyb26e zWmHYSI!2rhi;~Fa)0>*B86Oq2tUHypc%K$BP%k9DB0p$gl7S|IlhB#ieDVB zzX6Qp=exW6vU&(*${#nG%)`kkT_)gXPq;3Zvb;g#Dz z^=o+nQ*f6DYirv$_swB?#{ec6c*CRn1DH|xh5oCI1CNg} zoIQwJzv}!fmFH@7l8y}!tYpWseCO${u+Y!Ae}2aQ^KFMw&OB7|Ei<1E-#a%Rl>Rn&ZL^C%TgS4Kv3*XL{9;q8&C5X^<}*xbq? zu>Gm3-3n>>n*DWl+;Gz_+d(d1u-w-+b`O+SkJrr7z@jK_+CAbSnTx^w@D_+?-Yw8- z<02|DKvsF0^-M@rcqPOnNpGVlpUlTPtw?=05Wh3;PSa`=K@84XMYJihmO{@7+C9aB ze$(wY%W`nb-|I)98dPSve}(wWF&7-|L4ra636=EVY@BTr8=IAGw7g;GPhd)O0Mz_oLqJ;A+Em%Sp#0-?J zpw6)7tsTXK2k#!U31qwIqS*kKx);C#yW!i?%r2w6WxpYdO|8HfmDrI)?|&txEF`GX z3AHela;PB3s6CaysWv8#63FDugUIEFcAALxl)j-2St+F2hU83@s=96h@3}EybQFuI zrlf>uO4^2v$e>hs_d`T6Y@3!JWprX>5Xt7+HCxFDBD1Vls*L{CY!gfO&%QviZEHfm z^;CZeieAT8$BX=bg`!uZLP4w`4q`M*aZ=?pLsFlqwxnSQ>>m zS!PWr2RIa43SFI$?^V$Ki|P338|XKw`^tsjvh+S5!G9BP3~!up$pKs!8d_+ghaYnl zw#g3t3GeVdjwYS#9-gY89iVN`llvYA7Sm}E|77<-U^;TzTbNLy`9kD*YjJMkm^s~@ z*uVi3;XD~45;CzTPj1xmebWz)>o!9^${HUY(j#@__%oJ}T?17l7z>4v9RX%os$$!}p@%p~ zUQ&aa0^f;$dqLF;`?nCrS-#E4#Y&KMh+U<6J||>?w=5Da30G)j9WE+NwftPSCdfaO z{JL_CMlLCUOfeA`UXWimp$M)>F^d?Yc43=2g&k)69;OjfChY0UFh36h?3}_O(#c`q zJDUR9lOT0K#O|rUe7T&keHNC>i|-Hz8>B6&j^rT%Usf4_=*1}`x>H3uUVk~kYKzt6 z7ynlp(AzRdTGyJBeZVTB`H9dv?3s3E1~&#q?)t4yU!j=8&EO^7UL6n<*lEGjH-8kp zuE4Azs;PoIu$ry6u}AL-OeK{-gd)=|Zrp#UlqC$D9bRuqEUv?ih+X zTv0wDsnhdegOR)on%VU3gULeARB&%rww)nA;G*2p+v4m@SVa<6k%VvCso)`#;<4Df zqFYS#F$k67wsIZ|)XjvH!M{YEg-w>s_|aDpW3wBR-Nk zt#dw{KFx;vrG5}~-QD3}tGoNkW6pE+Cd?jAKX}`FfrYkM=wn=9MH6F7L*{>ZC z$1n~x=_;K7A{#nhKhtPMsYWM?%Wre(P9@>Xn_A0NK9IvGDMwdmY@)qkO zQuyMjd||%^`fzjCB1OIg{a9UPp$nON=@=o@_?NjrY2{`pKqWnv!<2* zV7^ETzbH-->N}MZNN)j;heX;e*riI&wT1{ph02mQmJZim&KXowm(yp~|FA04T zp@7`23!gf=KM(?D4_%1xSU4qxhK5!OUHE0GqYU}j>Rq3>Qv<(PnG)-qv?mFQvQ&8S zE=#>3?ezNYByeAuddA@Oy_@DqikepSg=G_QOBK|>Iq27x$l03;_7EP{j^LqU|4@D@ zyn#i4zl7&yx#cEj!f7J=AZTg|d>2egnI)kJF8xIR44+7NETsvEqnl>*VmYax6WN5h z#;3kK@<~$%TA*EcPJ7{t#?KfTU;qPm{e!{Ae4Nq=16pj56)gr?=EbALTNDS}OK0f^ zGf(c+6V3`!4Ncxu!?5YcCJm`*$N+pPY(oYsJ`S_)Pa{1~H8^#gzCsI`JDDFa)Tm*6 zjM|m+b25aZ0R$ICgTDI}Aw%HLf&4V*rgT;vbk!qRfyscjf(ySxwa!`bG2}50llxYM zNu!esGlAhlEM&k86EaW&uC`qGPgDob7$pSX3=ib1{kVb7(==rIMp>g_97$M9Qfq37 zRTh0SH>E0d)M~ZRhPO_A-ntXM&KYNy5tgtG0gsGByBakKn7@+^Cj3V@%jrzbAY%m( zKGsZEse=cvzx#BXeOuMVq=a(@SifKePD!CvfuT4BV^wu6dms%izRs55fb8K1=LmB( zaE@RA5#q`#bIHj`R#7F+r1hkybn441oj2;CU6_@+Q$5P2GXV&6gkl%TjEmuPz<`+b ze+5|B?Q>CdU52PxWsCmx4i2eT5B`)+Jr+i?+r9+#*%Ay3>#3)8@8BniYPv({DDfWa z!?BNngO~3|QFQ=_ARKUSicisJCLpe|!wZh~;5_L;zAfz)b6j1R71E&ItN%nppD&L2 zT9Npa-W>SE1LU;&yUz{y_&LCNbOd!ZIfWIyq`EUmH6FUF zVH}i}ftgSN-X;}cMzF{jp|Bpr1X#m&Nhs%g`&OxbISA#@s-S+Ez6tH|fb(Y_{4oBR zr*-2yPiu};eCtu*ra+0xfQ2Eue^Rj3aDKWnH8@hSF;6o;U~^&-3uc9P4$;4V+~ocP z;SGqKO-@!YGMIzUJVf2D5a+IwI>2;PnH@YY5J1W96An~LOY*1iW6X6ZpZ_f zjOZmXh9O{BxZs0BA{9$RpF9W1&R$l-J_R|rV1Tr|GNvb4kcQ)`D%ItsdXrvv?$!<-P^oL`S+Fuq(8;*R9{r_hkw$n}3p?>ZO!RvdVdRXV)RaxCb zF}bpqY(N|b8&lyi4_0em`dlIgYiZBNJGWY<3~&zL%yuI^1(FiVfmvC??+0|D*AYRE z*b{;1uCqcGjVwz;Q%zD5iGQB{!98rT?(sf3_MHbn#F%PJtAHz#YRE`jlUZir?0X31|)v>>$3vDmn0->do0rF00rPzO+l*+3@1)B>_+F@BW2rMr6ttuKR}S z7gm!yX|{qiOAkUEz~sb0Ieirr;&Z}wUzOp!dgX(GzVv~m)(0}fjfusbxkx7rfbaSd zDF$+_FJp8BI1jRShXdk$ zK0hZ1jS-w2=Re4|cQAgYjiW6c`)R6~rrV{PLdGChUpY`(CO3va`R z8;HCQYI=c=EEZh6TvRxyzvo(yf=pqMm6WAP%1sl(xB-wrcp3p-<}mc6MTDH-VR>51 z;qVO^D}=0elU2A0-tv@Gi?)&h@D zGM!U`Symz6YgBzyF?qRj6f8;o1J<}dFaA(eXvN!P>duSF1HmPqD|``?cfu3~Ox1H9 z2;R_0$@AM5xsCx=FGz;F4EI7eegj*I;=_5PUtT;?RA`^ZyEs=^bO29ZklO?JDBYKj zRxD^WC0$C4JM#RcA>jqv5E#l0($IbhPde1aPaZ#KSP*mjS;t#xkTw=CnS=ODEphI7{k}~BCi*#o;4A5SNz(GwsQZj<-kT*vbe5! zbaSh69`(rD{M!3D(Nz1hSHW<$Lq<{k_LLubG+%eOdfTg@mxyV;?!5E2mF5l(x@Pqz ziCgai*{Pj+Q!`}#=C8Yjo5-d<-?6{hNoI<= zwSO%)`m9gE&Z_FtcXRs`RPFrECj0!3-%|Q^TbX%e$MKX4{Eju6l-frpQdaO@*=t{Y z?|5&?ZQ=P{1+4ETwk&?s9-zBEbD59v7e6LsPq_a|qI)%EjALc?$OrKY$qG0#Q6myC z?4$1z7@;xNd*8PZh9VXn{qaV6_+VCUer98-i)_*L>_t6{Ch-F0Ob%~uW0kDi!XCox z;l|y`+t~E(*2eP2#vK+hVq>%UCgzNIKpV{d^>63ov~qh~OZn{a4{xbu2ovuD z!JO6V``0e9>mS{?kz(+H(DvHfmI%|W7z_uZpG5X}1TUh{0^B%Q`~Wye(Cw6jdmSUZ z+%-K<-@JW$#Us;uyE2}0UX?(%>rnN?nVVJ^;kPuZS8S_7m2j)W%r&=-?~Rjuv2XMjNiVa%-+Zrcb;WpN&St6DH{1HK zy84&TdzEBNVxtc9&F0FBI8?R8mBmc@nnu(C~7 zZp+SBh3*2*yg+gGXfw|IKqHPwi^mp_%@dD+102wMbJ+RD+Yq7&2Vd)bN1S-n8N!?A zjW>|j4+-lGA)4@?54F(Hdf$R?zvOFIf91m#r@pElGVIjmgs^7*hN00LcOtO4)o6R~ z{)=Lc7r)|vez)50^`6wAVHWY%-v0GA&1+qdQEk{pr(c2wxL0i*V_MZ+FhpKDHPt65 za$dE?a^_Xl(Z?63jH#IWv`laJ2q9f(WPHPvc6`(>a!e~Hic6So;33mN`0<)M#9 zYQk3b%ar7n62F3Vy(*?2vRv3R^+gT)rD)vulw!k=X6XIUSZBMoW(SUKEicv%XNK`Ir@kQ zhu@y)ix?snk3aK7U&IiBBCqvDhI}aUT3@8EJ_1EvlOim}<3lU2SsQM)b1X)-b+i{9 z<)D?<>|;-!6gjTwc=_b$DRk`2YwqILFAfdyc>DUrqiY<}ipd5NG4c(KAVoySNW=<# z1Syi%wTSyQ6xr0JNYqsn`J+pbHCNBRPFwT(c710ngRk9wZSo6=FtjrJ>Z#YFcO=5l z%Db!AUZ>FrL&x4-d;i+x-GJ-YJ{h^HO>=|GkOrfkiAa0*Q_F<@ z9?6e2chArWQpEA!Mb-{n`|lz{k{`F}i@ekqnX{^`?IvxdP4q7BV7cA}OkFv*2jko+GVhfx5&xmX`a(H(+4-T`#GZ>}OKT0voBC_tg{!_FCw|V>btoVjT z`UZLV$lG@PoJ!D3|4`NA0RItc@bDN`g@zA$-htE}PFh%aHvW32O7Axzvkg`+JxzZg zXuEHC?rxQi=L31;gBp5H{b+yT5_`&f-Uz;f!)Lr{23%c`lNK|SJ}?n-)Q8%J!5tAE z7F2}VBZf*@SBU)&w56<4#Kz!CX&8lb5G3_JK3gWi=f#0G@c!r}#3uBs>EoXaGXg7P zAlL)~z9+4q?(4+@VDFqVxOqfbMII1*JS%Q+-28#yKN_Tw={+~l>zP_Nqa^c#e$9e_ zu5BPQdw-mUOPLJr7s4!)p3Mk>q)t9;z6*{ORt)T0Gnndbu9 zQ$U%2IvEbkL7x=+EDgxOy9}0&nct-Dr3mH%nUl3}I^E8lldVUW=-A2%DIJ5%HWkJ9V zR>&!Mo9u*(cvy%dm}LTgg>mxk?tx1~0hb}|)7%sjhl4UJ)33?qxs^yl=j;bR@xbq*hWnI9S(p;-AI`-;^IbZhj!DI3mn`XDpL zb}Lt7>7PSZ?28E65Qad9|5TY5fc}B{hxI4&of8JKeRmFpU*025D4Aqfx$nst{3#q2 z!$D{dd}@a93)9v&0lJ_fT+st|=P~=t=qfvRYQ$oCh=J2ucaBFGOc1`(bfi&hgH$(R zLVF6|Js|^94v8}#Uj@xtyV1jAmevoBRG=JkEglc+kx?;cZ91RfEs`Cf&nSgSb;jw2 zp=v#*$p_L?Ow04BlP1*W(qe}G0s4j>U{x9#0yS(hC+{^675D;yt~2xinl59~XxZ6A zL2RXTTk6By$kH`nDL*;#<{cib;glH1?23Fk8USW|6ex-8Mk8?V;K%nmtg5tScByA+ z`166elccl=IC>u&SQ@^`ewvHRKN4_iD&QQ7ddP(bPN)SDE}szy!00@h<>9c^v*k^D<2=GFx^jt~egHUh$@tF>rW(K=-2_%< z^quKX!vOoPgKGK?6VN%(>*4##^{{Xw9;|7;gMKPY-;&6)hy8t%{YAbm!?3?gLPH9% zlMZ>i&j~Ba#@1d^m3A#2CtD8|b{D+Fxp0OJ0WNL7rNp9~%ys+@hOL4_q&o);23mEZU*|%_RiGGYVE~O_w2EeVR5L_t#DnP}T{OEUsg%7Q&u0JZE_qpF# zEH&zmsYZ!j)1`(3ttk!Mq%VaA!Wr%Wcnh=k2__TPKRES5piMAlW3!stBibqSPgJ=S zgO7Expez-5VY<$uVjZahA4=59EoCsBIu2ZyprRege(A)p8sG2?r|0 zaR0^((w~EiRx3BNT~}A0w?4Eg_jl|2tJ+UluUl1nzxZF&2t^Y(0&%re#GfNa z^y#5kGN_p*m@$oUEpbO4;fdaM(As3qgZ#k!%W~y9-BrpI(riPwX>B zAHP0^>LF?dr!5`dx&IR6yM6q3sU9DO%eQD}{}nk-w>_8<^bUuN-rQ*+o7qlZ`W^B} zoC)GpV}3=!B+$_54L`w%H59JVqhCn3D7r_XKHU1!bWE%;{q;lkZvhqK^3oL}!q=0I z0-{+@&X5wE=~JtR?QYg@fmaXDv`wBlLb65i`r$e+oXyA=LA)~a+d!LGm3k;KVAK8Im9rsC6Zg4Xr(!PzHsfBo=ay5j5bSh>&TQ55z&Nx~9Cg7irz zIKjxsRt%4mcDOB70bhjoHom)VLa>QDFgPwlKR3ilN9bYy-!cO=G4utN$izN($2!#p z`X^w4nlM!yKWn2qZHs?_rvU#v$X!=3On;{(F%)RNUOwVs9EneNzt|-HSJ9C0q|>%evn_e|`0=F83uCX6co@rBL`kQ}Fs8g8A~nQX>17spGWQI138 z1#)3(42OtnSzJDiuU(7E5&!W_7#UUDJQ4i5o>Cb(;(-D*Pqh2h@6yD%({LGbbWH;k zr3WEt_WO&5bcHkt%%#noJU47h+%>>4uYQ7KTI@f5D*RQiAfCzLqA?uryNd6ozK|~& z&+pUAm&L@XbBHLpZah#@yyoum5@$|3!}rR9Bf$4_fJhBp+K`;pw6NjN0D4OR!_Gzn zs#|H0D*c=5=!bfo#{jcmNAUE~QGw)C7c5R+hGQ4^N}Ds57eb+@Hl3Q%cn;8@2jh-V zFwXc%;9o1V!C(xFL%aT8qFp-8wQ*@`?7ymC10%xM`}=CbQ-1;Lx9(53ORN|G9?-@( z=XHviNwhzd^QwtQc47VxgcJ#J)k52P_{)R6@I*xQ_t^m5Xo8|qywdSC zMvfQRQlIH;JgqMG2bhMx#QA@hJgDfr-EIo+ne|5k$1lrJJ#!qp5DOyN4@F)-y?_Aiy<1=iFYEM^U|v>^GVh=f*s=$Ws+Pe;p`j`)fe7!QDxmAr z$vJ>Z7rfl{HLhujBjjCA-w}sLIepsG)Eqy}bwC67mMjL{wU5E0yn0xX8^?;=sn8#X z68ReF>4E^B$(qf3s_Bu8?W9KJ1~ zZbol0Ewme?6=i(f$P*uOU`%0gilv9Gx>S-B85K8lx4N?NQxZ5f6|6+rw)IPu(#D%`nQAzxr~oGnN7GnN%ZW{q7MXjtkq)rE(Fe1yo{ z7w?7u!J=@Gp1_j+X7Z@;o0*E)&o)iS=#{%OGb1bmmEusda`$-y)MSa;<&)mRHZE^lpa;z$xh)RnTo}`54PqQ%JNba#o>q2LH+;{rDza{Jm!PpQyUEK z)|_!9Gw$ki#S0Z4e1kv5{X>`MTmtk(Vqh5^k?c91d=W!O|0W+70B%~4#CMHUTp z0NIxr7#LhK2T)upB~Zxqx`GwCVJ?}5*u}1zqLx~jA(~rdispiv|KEAucVMvY_kDlw zZFraSp8Y)MS$@xR{s_d2sz%e49?zg>$-RxNVw6yl%~xvsDXxw*WR-inMZ(d6C3#_Q zrPm?46W8+DtmR8t%bR`mS*R|Qg4O@Q-u0pKN`e}ao4?nabDL-8%9N=V;$lgxuaJJ` zsCIcliUJzsmvrn%ye_1077Y1NN5nobpP#E!0ZWKHaAORln?@E&$g>D z+~V!kk(H_3giB&UMau(yG~C-HF7bk5!!6!k9eGDUzlPEC_hF3Z9}0pVFQfbE@Q zpwmNLumfKLGN`Q$(*n7C9)fBBM3LDe7i5~mwF94Z1mKkU#}UXSMv2+!G#v~DNv3r2 zx>qP>1W59K6keg&Jm&Xo5x{)QI2plbDr9f}4B9s^<&)XKFXjdwM`zReNK$S}Qg^1+ zSz8Rsh@ZjrZcA~@nQ%gvIgM`oBOI`#UAbTh&pN#tc=#qKs<`Z{_$)VR4fqGDK|*?K z7D8r#w~q9Tf~PgFmB-_gS>DQf?O6x5USnZ#!Q#d)#p;Dzm5oR^n$~=<`pHa#pvWXn zhS&-)?jNavX=H(Z(R;^t>#89@5^38pJ_m76{+9UoZj2=IOUePye$%{nZrxy(eG(GW zZM*}MN0Md7l+ss`X{;zawGLnGi_~w(I+H zo+#Mk2QD3Lqk>KpfUSM5(WS}eXdxHfiAr57%PmptUUMBF zE4@#P1?zpA3wUpYPnw@Wp8*v%Kf|*K6{76h)yUx9^edh*g^7kFevi+*8=W(g>g@bi zdhgDv=q!3x{uUBXnAyS@QpBe|!F(M^?LC#jvGNnb9DU%_H`E=(H55V#8Z%?XgS~Dh zYV~;@1Bpd9dbv5%O`+WFZyn)f z4b12GteiO;&q9U-4*GB>8u&`hp42R=mg03JROkzDw8=A-!b>S>v1>a;1wb zS17GE%-{6SylG8Ta;1@>RZIcN|n_Xf!n3YgQcm< zpwXofs!FMfvpz3HE*b_NpOD9pZ?GsKo{Z6{*7{W4jmN}84?rj>^uQ?A zcA2Fh8yAu3#z`|~7*`9G!oLX-<3gOnLn57>V{jM2{y&k+3tnWlLtIy|2C^z~|6*`~ z|E#%;eE9Z_8x;}5vY>xqlVc*rk00e688Ld)`08jVmy#t~f2;FSh_o0RTXDE5h4-v| z$m9ou9@JhOID=FqFdjCT(ykB77V&KWGp>j1f-!U~C=Bp9k#s}>q~bj}BrlpVAn+{_ zvD>|2#2fC@U~02kc0Wnj59unuVnvBGUagn{S?J){jLas!hUPK{=Q zu_cyxcrsKeL>-rOuv0rc5Mk$G5GcPZcYcS@S+mQ`)g$>{rMvykuPhKn%y-AH3LZ|m z7J;XS<}OZDI^8>DIc1y?^gA?Jp0=DQ}VU z(w)s9cRl9-gG`~rIAl<1WlujllG6f^YJ_wlYf}z0C9TiD0S>mm0rke6=NZOUHtKFD zPVVQLHwZcPkXl_7P+DQE@1S1f^9(%!o&&>hCS>qgCN~Wc+E1~E#VZts(ywRwvCStq zERc$2dZPq;Dz(*J>SZgQ?|CeB{@*h0^Uj{W_8Cc+nN|@59=;J%{E3;!$T@o@0}$Vv z=1&!BDM!^0BZ7X{gd@8*(04vW*Q2DKIf<1A3O-_4b(4T3fV31OoiSI^R+NhYMHt7 ztCCv^@D{JZK&A1-4@W#4gWi@c?PN($N@hUN$ewYdSk58EB{ zp{Ie}jU}->tX}zKPnG)4`4;9?73=0RHDa)LCLkTI0CVGN9^2-;9-Gh08#)z(l4J_Y zUq=~~oyCkgc9iLm{bTz@c~xT}ATwhJl+ z8$**rw{9G%H1sK}kbbV)!U?S-IaMe2-3Phu=Sy9MZ9kXkxdS8qd?^04AB{9GIh03< z>Gr;AL!)BeC~b=!HJ=pMP?=2?(V*N-qEMbVKqMds7!%tpC?xr3m=TC{IVi}#{fcW) zc{}sD z6ndu&f)R1U^W#OFGvzn)TY4F;bbYxi)B0Vv!NEY1T&e~y(>b50GBlbS#vZX0Zx}1g z!j;XD0Wg#>1t+ir=MsqtymM_hpV-n>I!g_UOB-1>$g3)7H^J%`wH$TmFxoKEFdi&pn+e@Ty8eaZf2%_q3Y)FEY9!M`SiFS;;x9X<3PzCo|c z{aka+wfH(=%(fX1lRKu0PESv{$(i(MR~uCj;C!F0$;(T`EI$-W7PbKADyFu2KkUc= zuBe~mnx4A;9H$v5{yEO_nQIO2r;GYmnxcnn1p2s|ggT+AwYyPPlhbCU1vqmpILftP zJ(rAH(88CPs4Ys<@O6L4I8z%zrF?V(8j4zJV(Wcn zJU+&Q?k)l;YM4FCZqo5DRqJ>bDNn0v<84V9sO z?kA{py{@af_pwoB{2s>)VnK(82=7kZb2D@MTVPL%mE|Y1p(`2#uin(3GQXG#L4{Y+ zY&xeNFS#>Set^kA#0k;)I|sw=UBS)hk=(8WI9iuTbp0oY^(@ydIOnOE?WSS)SBcxyk5kw8QPXczZ zc0}vP>H+Lq`oUIWCjXR)slX?0bIXW>a_j6e2)3Vg*10JrFjV5Foew_ew&#Dchm>WN zUo|yJgub`-MTn^&Y!1{VV}@H++RaiMSIBa{d?`cU-SDpt^64W)6CR|Lt&`pqqI;%u zmK*)%*QYYUf&_Gc_Dl!vjKEOwx9Ce^bcRO1z}f7mQa4E2ZZK*22DEL$c^t-U=u~vqH8}a9542 z!_Y54JcVT~3r9`YF(f6`^sQtxpPnu6`HWfwA9B_NR71Kv{tX{$uUnEnDa$QMFol!i zmIk3?X$`naQY*M;{*o{q$F;di?k(h=P3U@S)%A8l*IVzdx1v1dTjE8gu37UV_YHN4~4J`i*U-0Qb zM=yq8RB4rAr?xh%o~FdCU4Id;i!1avb7#jq-MzxVe(hcXZjpx@7?O1N)qCu%G=VIP zR3RFDW7GnRO0q4Wg-9BT2NohZKwrVd9G`;^)GYY4AYwdVH--*qMXL0CewT@4G3$d6KrgGY9hkL+cGLB&say>lNnw zfKD*EY|l-8FK$lKgd;c>{U9;b6gvR0*@cvjYV{_SOCRyLAq0KcaWfP0 z$QK+{VTi#goO?^SuVru0D#mE3`l-w~xOCylYfK8gb0yQBA-=(!+evq37={#w+PMfn zh=L}AF*pz4_i2;`R2B=u&sxb5{GB1L2iIn`Bx7AyuH*)vuSI3Ffw&vx1BL&8&sQ}_ zksz^|qu}QR?EH{_*f>B3@pMdMZ$GHW87NZ2>&bZ}B!p5TzsDLXHgkjth7Ep=US#9H zELf&LuSwZMJ%jho{G?xFu{$w#3x)05qP7_a}CwXd7_$Du$BFHHS)>t;~6h&L)9=R zzO_bff7Xq{2z&&(474*PZuZ4;-^-SJ-!x=TO@P*fS3U`+05VRy1vJPfvyvY}l?3(h zmx|OUK(3z^(qzVGJkg*K4(l^y9%HUHLY5Hxh&cj2h&g+r)!dMJ3J{N zS|T=iV{LuBkIf2OXoeu+MHIG9myt)d2kXzRp}*V({Y|g`dK=@Y4~A7c_4x_jqC-?&_h+ z;~w4J6n0->k1zqTx3U9S50TW26DoeprnUiz+m0(7R8Y};jx`WgzKl}0Y?<3!%S$DD zl!LQnWs?SF%f4$olZBHWz}vhkk^Yhios*;R@MA!tZa#(;20e7s+~Rj!St&u7JvIXg zuyI=BBDs|W5O(5~=^4It5x$#<@s)&CJ93y6D=t5b$N!uQaGTab8Wb|@{SSjo3s~?a zx}=r$)fwYyt74Ot)S~bAoVL^(g9>5AHSQ)52~hWE=0`unXMBe>rNelL7zlp^u2121 zOP8_tUWIxCi3x4n6cE*4{!1E6;dcM3yP#+aFsOnE*(_5+Io%*>@&u$C-3jYYY&NJu zii~*3Z?{nWpxq|YaKj&V5spJ$X$Fw6iK6Uy^{nCRys)L$2@AFr+&3q=;;KuNF*4@q6>ML&0cs=Ydw zXwbENDNDWRmNNBJrY6h2-6Cdd2EB3gvkEJYD8!o}oDXJ1Yrd!Q%EkO2ILHBd9Qw3e z?B*ZML>CYaVukHjcE86bhKf}=DixFP#iS-l>iED-gG7cIaweOFKY9GnMB zZ4a|LLk}v#J=lsOLq5iGV|K>s2T~4?u~C_tgJxkx zZDhEOnu@4EueBT%#l}y1mhbAXUChT3wC^f@P&MnhoV)GO8d6oOCEK!XPqJ)dL8~VF`sVJ* za8`q60gc|ex(6*Dzzp-)sm4H71oZ}!^f@>Yl?~&ehPs zC)R=%F9=V~>eYJYsKRHSGB(i5mFrjtP-rRyD7FBi%k5n(?9|fFviKbwQc6b<<=m6g zf-6}+PT{ z2%G{?2~B@=ijxqwWab?gH9|q4mmgG6fE;8|!^r!CPsdFb*0t!ocoUETKpGiNsR!Hv zO60!Wl0aCmxm`1m=F|W7EkPw{YVzN%zm*+kVXlAQ)(&KMUo;#ap2-u!8UqnF2!YH_ z{%(E}fnN$+^P%_XD_-H-I!nR->|on8{GO--ruD{hBXh^I=Wkws83X)(g9Ji%y%0-q zIuo^l61-+Aa+{f#JTq^&v!)$(K^*hU;3KW=!mv{7`SNFRvA$48I;-TaQq5o4wMDIc zIJn0~r!6U{8I(9(v5OqB9y*w=8(i8S;$o5FZVDu2stXX)h`SU@Kj^_9wGa#*sgQVO z_>nDn?}wEiSNKm0lUgtiKF@?O(%pe?j%b_SbVox*$u=idcfhU=S3Zi_jYFM(6#66% zo+wkOF?8#s;5XnK7l$!LGsi!6aaOPl=b5178t;CWi5URPLtX-|zhlR(8;Ob>9f{+X zPe;P+tx-Y>s%P$v0Sqa0VLEo)BV1i!k??!m>uUj$-{#aeUC0YfC0 z4NR=oDrhr%B?!6v5eT0|aI(X55O(K^`~Wkz^S*qj_|q|fWkuSAM98*sVZ`*Wa~l;z z_A$VJ0f&Ag1dfjAy(zhromBo`Y|q_oB`fr*>4hF*{#!KjW-&78b_H6p+kV{JR9fpE?BZiD?kvc; zT>x|UF9jHr@AlZswti?W4RKiZiK(RAbCASlVlunv7lv<^=-*=;$;*W~A>~UvBsN8N z_jy`Mw_00E@7juS(cxp(Ap8`;CrSg57VdQ|#jvK-=KCChQzvnG&Sg34_Y!T@f0pYW zmF@!&Q`5qnh3`~N6J5&+)8~M{{oeG)JX^+L>t7pPyxaPj`F2isf?Ui~0f6e@T$ogg z)R8vPDbkoYOoh|;T;iB?Y%l(hg#m*$vO#E`+IZN2L%}AV!?{O;mzcM0(E1$cg|0hQ zKfSgNqy{Ht`7<>jOjp;PoIi&Gbl$e;wOkVOXOskIYjr0H`W)E&dE2axt8ec|W9p4^ zKD>qdYzY6^Fr&|w9ih)Ya7?Dp08MklTOiLr@rA~^DS*!TLi1aSt8_WDKc{Yj@|O zfR#aWA=2h@o3L7mjcl>1?Wv7&3sj}}G zF4T_sJ6JGRp85%hL6VRT3?XjQ%)OOi@z4-iE(r(4$(JpPkmbVy3Gm)P-zy_6o|Z!! zw51p{l{gpoC}n(B`=aEn@y_qhX5}?L{mr zoHClSh*700eyU*KonIgGp-lHF4D3*-TT9Cs#eu{3c_)Mi%Tt_4gQGbOD9r=vUDpZs zzfxGS9}bB8^qj49!IKs**z}>I!;CoVRFj2SLRd^v7y$lpG8}g5Vs-6i`_pil!rPRX zJ@(S3RCH|6gyrN^E>45pAqjk@GrK|(9_O6m2Pib4p5z_{+Re^1G|a?*suf{H&7Yn7 zQZ0@{_P|M8cY;n%$E_&is@=N?Kc#a6lvZ6esFtLzN{52`tf7*M{?bJ)$R#BPSMy_W zMc5sFDx<^ZZA0KwYU;#Xo73SFb2lAjXznv=tEcHP|D{XHFTGf9y#zRC<8pOQ(l5Dk zaTU{5?pkgM{ZqN+3`K5pTn#J1e)Sj3m5f^cBrAO-wrMN_SFV+JtU1rOsE4|U?CzGY zmDnhH)Zkoy>3FUNxWYcqgVc3LfHq&s;MT_DQR!&3ez9u+8)8j95HusuLlYxIT$0;< z2F>Az3`uS0 zOIIQPf&l4-GjnT4YeP5*%4MJZGjpD3-T9XyY9^eP49=$3(yGQ?HC(!^z3?d^nv=B` zunwQq@e8r9QeCj?qC!K3nbE0hWR7dAj(bdd8#^GD#&Ih_v^aa3z~#c|0U(h71aHSw zU?2xjA;LFc(I@1(j2%2Kx2kbtUwE!id+3>P0-nWmJ*$k&U8jP5fk5(DPm#G`TX=Tl zs}qo^fP0^#7#0NV|IQ4Aa+=L>iWSj>Eiw2s2iV+YE(3y-3ecHr3eSHd(y4XM;67YK zzd8{=)C>Lq@5$q*gDd(X9V3}!bZd}DW+!(vW3Eg4!(+mi`AL8{phNx}_Mb&g2)k!3 z=Es1#5RmdQ3{pOyLCVR2f~IuGzq#Qw2Aq?B!LdKZ)46e(oxG7Pa5!#K;YrH!EI4Tx z-cF1h^c^&o+8@HP4P@mZnr4a&D@KWL1-whp#K`1xMoBPbSdzLiMoFOaa)C<&n!i+; z`hG5{r+)d5J)G91U`xG|5z1jnI5g+Cn~e*B|% zTs7W|*QpbrP`tC0g6j!!&?30B<%tvfV!nxN{cZQlAP?35iTA+%1|>PqQ$_ut{wyJ*kIpx;&b$r6Y+xle3u{*f0ioVrv z5WKr#V9}4r0tFWy$6t05=OYga$?w=1GR*O%oeh-fpka<Ni+kxr#6exUelZiHvmYv_w6cek;?53I+OK1$mYyikgxHeJy*r4-p8q ziCP6{8sU6skl?u)B8D1jkvj1>&9ghb#3P&~mFjuP)`8y3R586EwE|My76>m08uYe6 z#JZU%-%r%7Etb+`2h@wi8!z~^Lf3QAs0Zc zTwrw`?C-VWK0s1HWw^`Qe=*c$V&vViGr~`a{k>M+-t#^Dr&_+^`mg&1Jev55lmBzK zKXw~C+qj;qGrIGu6QDi)x$cbm-3DPl9=QhCYyePJ0k0|YmVt+EiWGq+tTFUa^VQux z-~1+kI$u8*KTkdC1A`;k#K;d~)Z4>bnBx~bULbnOtOyfV)!5EoJ<>yTMkF6zM>`?m z$keO}CMb7n2nGsTpi>GSh742Z))0Dox=1bw11Z7`?6Qwjkwi#Qjqp?HmIl{c2peD( zPH~|qzIj-4NL0~`A8bvJfVRO8BxHv?vfmR>#49w`8zaqaYcW}uAGVxO{CGhpQuO`a z{67l8nLV#yAq*az_iiGz5_C&StF0liEKGP*e+(#08m7i0=F@=<}^ILiTGEss7mZ%tU)=w5$<6B-jhB zgsKE=%NRovR6HS67?#IpkGB{FYav98t5A91135af~&+Q>QrJTY`Y9zyzpVx0JV zTPL;ZetRGRk_n&ySA{z>4CxHvhR)fPPR9;Ftl;+WbksRCj4d2Q2wJI!ba6dX$j@EZ z39=0`02S3TSnYE};G-Uy|H&~#IPM2-$1IoN6JQ%qq1E4<`_66QQ5|D%ns~3hiIInG zp%B4a#3pbSd^j79tq7#<$Y~s{Je>JwwJD+Z;duvjQB`B}pLqa@;^Y98DPN5jJgvwM z_Bg`kd6rd|W#t7+7jWvvHW5^Ei14%;zEu1SgDoa^4`vC1iKj5@O}L1TnWl(m>T)n2 zJZKyepexhb$1qX_0WJ-Wf*QEhNrImbBf8eXM7i#W2PbF2CXUEsyvH%QyAZ<0v%u$B zrsrIaY%WskR8_knj3W#>)_Gn2zFeC??-{og>*Nj@hV=#?F#s#oUGWN;Y^G!0^2H7kH>5h;FU z2Kmk$OmzO4i#Mm2edkA%abhy0{u6Mh;GX?>L9rq)GGcI}JVAA~GB5V~x<-X}DUJD# z_wx{|j4jS|rbR=05k~!t=;8`{cUfsD6)vpi2zSGCsNVs{VW1TH7IC^(_(r|qLs%C2 zmV%;@EO?h4@dcr7t@K^f*r8qs2E%TVJ@js0Dm*e-V?yCabZi=+JPBP_3&H{Pff*U% zZf@ft`3m11-az{R&vTXqn7TKe-nMmcx1Wd53+k)jFSB{gHHZTIA3Zs{_L&gaY%o>G zZHIZSr`{8fV~Sgt}jIHME>0FKfpxb`-6UBU5wryAiISPf9gpmEqp$sZN#XsgiW zCn^nkCH@NCS@Gz>x0sk9j4N-q@NTCQOb$=Y@_JmeG7q+$;apRNw{>zBc{H2e z7y#B`P~aXE<1_4Kzi=&r5oxE|^k@34`|Z6OhPOU(X{8t71#S8>VVY1{f~vd%jmB7> zQpNU{)7*`{1kncpd~W3N%mf&?h$k(7qFLB%c&-JgG!j7&HNSU040F7zF+|O{G~!GA zr(s|CA`sf>1uTj@m=mU3$IONXc#)iEvNQtNT(Ore2*-9uN@9XZ8YjV77%Mn~4zQxd zBi642p942J{J27HFjxSvv9PLPg^~v~@oO15_xj`)&e-TEYJEaoa;H!JEjDC@GYUtG zmqZH=ayT*2@npCHKn{ntrW6M@L^((iNv~7{7@C6=h`Unk_UNmsftalBmnkdEc84eS zww$pJ%-C)|P=XT#8ZZxH+eK&cVbuuV895ujN}Oc|nT6@CUKg0&tPb7v4&T`(u!;)i2kmVps2 zRkW2IEdsRf7xg zO09G(D-d`#2{GK88I*C~1x$3n5#P<@zrbi^KEf>4sW3)i`J0C42XI;8kePMd1UB@+ zx-J`O#Ut^g{MF1USrP{Euh|q-ukICql$dGC((5t2Hi=l){epQ+PVeAr{Rl5zf_pW7yW`2MOW>=P-C#7LVp3DNzJVEm?~9X6LAZ;V=iA8y zBF(BP`5BBr>&wY1TlLka}3 zE9fvY@Pf;^D+&BUXo?0Yan+p!`lkqp)X?v&WOi|&N}YtivP^$9g-;1_Ux-WQh^s~` z9N)n0BtwAi#3I2gu?Fk|Ai9O`VE&OUPv|x?jfL&2N;r27Q4z_iSB2ngc%Dkn{qS7q zR_Mz@v^B@4E9qUahTX8j(AXf7LMl9ZXjte41`QJ^nT1$j-Gm0d zbPM}m5c58!bi92XcFU_HX)1xa!kkcmr_cldsEHcnvapo(LUOxAHIkIlwbCS0AUI;W zuArexgYz{!>}gUVdJh~m83jz|Yzmfv-mVI$xHeA*{NGh!GtwLSp+Kph6rvqGr`-MK zs1U>pSC+6J0EKp5s+CH4C0o-M`J1PMJziLNq>DW!LK58R`U0Bph_w2lqGEdULsu%? z@3Hj-0EL|IizG6aOV){Gh+9YehS~a z-qEnUv*djQl<~XMtsfy{j9AatFA4tm6;wjUO8d`mhJDgt)5R7pS$`(q%^asTRL^(s zbP2NTJh~LeH9XpQf7glNVdf^dF#Wcj9TR8CAC?$pRr-5@^P|2Gt%EyleS%d7RqW*L zQz_m!02F6H*zD|dIE-@*VdTY}xWsrO1SG1gB{9pRva3E4>$e+^qL{X=cF^e60*=>2LM23IF_v z-s_djWL42JSF1%iPF7YsP5S#-*={hgZnClxSXo>0N-QfIft4-Yxb?m;Ii|et5IH;8 zu*szS=RbuePL|MQF$I)2JMZYwd60165&9{f-+I8pIACoju{8nCh@C)295DYrF1*dP%~gh2UhF6w=RxX3y=|S@ppJ@BW0HdegVkg7wk@V_;x;kaxorsE z+FcV&?WizIEDax1Ts>gW7+*G9?5#rfnOhA~npovJS#C&7v9vtAZ?@j`_u(e5Sy}yx z;~wVA_D#{tGs9X>+6uP4Z)Lj^mzS;|v-O!^Vq2=Ra?)GjXiodScfT{we93ZRzCNSh z)v~xpm&TPUZO5$7Y>VnW1t$vb8JGOBKHj{p4?FgD#@1|Az2N-94FgXo$Ig_NZWy>k z?DU(?1gg$_s5$ot@Vnlz^RQ#5WT<0jQ#@XTXjIT!24~)*#Jzrtr!@A4Po5%R>usi> zWl*@+i+&q!W;s6O=+X_|ZDkw0*?b@{pt>A0o9uxYAv@_4Ur?xtZ<|iAIKaY=6ux8H z$}!j*nb9N36k7b!0D&23I1x%*0j-fOYhYwq$+@v2)B@<{=Wg>WMF;GQY`f}U zYvmYQKxl>6psd#8WJ1eRf9kHCN;=**{V9;XK+gTexq3qt)$0MrvLv~MpVAGH#y((j zx$2CqI0~w$T=2uz7HvNp^b4aI$c>04P6TriW+q)3so)_|mF}2DP#%yFPrD2DyqlR| zM8A`-h)#WtYZdmR;ha_mfkc?w4Q0k%$U{AU^?#yPuuDhx`Wf5dK@(_IrT+tU3WYrm%ABq*38qi|ASJPQo1-p5-%F zC{wK@r$oC9pn`8oz^pzlRH-@a3W}cRB<$g73>-lsDG{V1tD>VfJqZcj3 zXTDSybH)d-Gr*__tzl>w=}mgSdUldAbV@C0zn9=E2}t_mQo zav9i)e}Unbe@Y%GnrwEy9MgIr%1JT{3X{V^FHtpse`9QNTpD7jxCn`Hj%#5&8p25P zOVfF%&!3&-W`KI$6e1`&OHa7t!7QMAn*hqt6~2}IFqfzURBJS_qz^#Aer!xoA_jP^ zl}K&f!D@1!@)wg4g|f9>IC+v_g2kVmkjwiB0e{`7wE023huQr$JZs73ZX3AUYpJqV zmB2Y+$Mo@8%0T8Do?Xj?DGy&DS{J)j^0&2I;FtAR)gFCtIs-`z=5C3(Y3W6I!!?>R z*IHc#lL*Y+Cg-Om7g8AKG+s!Q^Qt27%I)aWW8L|C{b@*nCoWebeHoJ@kII+UJwx5jl$$Qg*)P8r~Uzh*6pnxE=ba+87cSukSs5XjwxEb0qx3K;b>RT5F))7czRX{vsSw->`@2SyGy zl_O`3RaXUJ+SA0Ij5WkPo_RL~)7gq`F<0ku&acqulmL8#ShQWSptV{ObASYFQLYJ!ESqYdiMVW1|D3Qy^ZGsQbMlFn- zMTcqNEJrJ;N6N18Ik4=A0m~rQ4xjXF1Ad)NaIS^xHKFn53D=bA4q^uu7#;n?y`quC zD8mxUo&$bHPkOnfYg4r;$%SrnfyM%h&jSuAD2~AeD><8-a|o+N3mq7&%LuR5V?G_4 zbh^iip?i^AR8&X|zwLuo@niyraYN>jAigU?ki*RJy(wIL*>=8zg{#6*0Z&qV?SV6w z_8Zh-L0AwJ^-qIT&p@4c$Bz^^wp!EY{3$wyzld+U8Y+NIr?6Q;Thle}dtHF9H-v}i zdRp@L4A`XbRn&qmR6M+d@1t<%SAUe99|Fd&Ef9ns1+zm9y3*}EjpI3}Uevh*{E&wF zo3H4rbDg`~95g%JGUC9#qTve);ZS8QtYk2gpHez-dJXfDwiydO-dYJPc@MP!B)Uog z4+m#A4AH|7M+}qeO$!8F@D}sQ zr8PT&UxfA;o{{MavH^qX>}wB-c~YK{l>C|^@Ey_`VlNy27+k~0lLmbx+r}_JH}+%5 z3CjsxTu1TW$SXRX2AvW0Zt_YCdlvto>b!jgWkO@{zivZF`pH`eNjHy0Y@_{Z0i(6Z zvKRIuBEUpyEZinf&ICCo(zN2=4|HAB7)cpUN5q(f`bb0r- zvC0gZoq8b(>D`Ht@~lEAgU?}~CjwvxHfVbXob|^XOGwvGbFZ)AlX*?twwtH^V=G)dq!dd0pmnT?D zxppebKQYDrbtHfa?Jh5G5?cJ?_RuvZTn}(vKa+L_%69($AzNCm9DATUW6?F9l-G<| zAn}InW@CiUbk@W}{_sxXvadzxMjD;2TGy_JBF(7Qta0=AR>_T%X}=CgTwQ+2pa1C| zg7($O?#2FrOK6q+y@SoC{E2Lc+}O-^n~UBMxv}XnR*i~LOuVzpiG|?iShY9e4YKG| zca&K_s&IVw(a-Sq{g0qg@D}ZTH~U8w7*xapW)7PFhdqT`U)?-W3G1pZ7RG2?aCpzW zZ0x@-V#Elwl&VvF(>b3a=%P-V{nyQe_L~8Ru%8-pUf0Ljn+@(P zSQEqZf-}J__-LvuXhO`^(Ad)QLqg551vEWor+H0od?e-))+ZTO(=6`sFY2yDSN;@( zD{u7onq2;bl9yR@C!hI$$%Q3CE<8uo?KDZAtUi70q0MMQC9!++y-6)WXK`{n$DIEY zE%n*Wv8sRL)p>4pBZwUOz}#&LqkEsc1(vjXiNE!K;83NE)AP~9*dmB$BR3<7GyXqt zct-P!hzTPecT-|mJTM99l%3kr_3 z0QzECw%_B97|oZ<&oOW6#-57-pP0D~&Yv|b2+M+UpxamH?y$nHD`+&JGKs z!BDv%`>rwIP26nK?IB>X4li*Mxh zHikbr#v!W!p|M64Q3(RncPD|bvbVS@rI0O-?uqgLxvto1is0fW9AG|0*wN}0PsiLl zS}>kD!2!^AQV7fB(E@uVfIWW%;+d5a>Bx6--fIrtnD5xg+G`x5<^N_Gyb@#?jq`B; zZJzhqLPw4%;yViFcJdAb8}g>bph5ui9KvlJ<@=H#C=V*+DK!GJgxk#nq64OAY*jC;on#vl=ROll^2yTw>aVHpH`~TtgB@!SLikhZg!v^ z6rdULp92fK&TI@uNsz<;i|kn&1lGo9LKeLDhQgkN0eC@VGw?;rkrF5YmIw#-uoY0I zpcNo;%T%Xp*#mZ56jfV?2iZmh)*g=Qw0Jikw(CpgLjh|&v^SZbZPYjGPb zEUr1IJ{@aiytuJwH;g@-oK33g0d)``Em-7=Zh6XRjL5nBpJXnQA<_yORS>xTQNW@J zMAOTo&**y7{fh@X2b!Ld_I`u-j0#i_EZnSp%tMo1_&rYfa^ybG;BAop^`Bsrz>HL6 z)cVs!P3?U=_L+{K;I(hi_-vm9e-%g}j&QEJ;x9~KKWo|Ah6Hod{Ex+0u87&U;SEVZIA9HfMkhql`Xj-Kn;+nUhC|(fN%AmVk-%H6 z4fmiPP=YaS0Jrtim}3sX@z(?M4GflB5?a{3T_HMk57N6-4G1VCB8DMAaN|dU4J0C7 zG+ilRcw;)m-Ub?a$4(!K-Dt_e4gD5*|6uWFDRa_aT>7TOjJ)1p${3$Fetd(Z#X2mc zjJ>n9JuI``Dhye`l$a+jn!YQryzcmDFhin`4?!+YYyL~tB9`@qvl9W>KJsnLS6?}$ z4wcN`Fwoiz=gy;x#xvTxDH&kI=QBWd;dOi7j{2@aX^7B{fVM2~;GIdML~*0+5M7dW zE%2n-keDEX_MG*}g(cZoDcv39AbvPe0k7v#i2jGjXc3W7ag$1?p?5Ke$p~AZ86q7s zA-*Si7x^2CPb;hu8-y-KTO7LX%-qt_3P@md5L=v-ADIQq3?s_mw)QgQp*FejRkmm; z-Qp-sav?M$6BYacsVIWcWKz^&&@++{)DNMoyFzY4w?*wN@}$+qJq4*2~bx+rw9Y$tmiT~IL4RwJQ#_nM1^qxAYn zwvT#?BiPT0VLM(CJeu~vI@o0Y2?uTGNAo&${w32LKIoin?{L_n$gN;+@xp@ZTC0z? z`)RCZ4J>)C3n=+ZH=rcffve%(6A8IDzOuNUw^y?;H@c)g|M=VA>FRYY_D`crI{nP- z1XCpzU-h<&jV|b%vrqRgU4gE$0%xs<`yRb$>MhW-!_pJ-riM*1Y3d(~FJ6z!I5KgF z*0_TDzO2dC&cR2gv5GdC*lg&WeXH2g{&45)i=Uksom`)ERCRr7=O*tnHg=u!4i;Z5 z_C4q7v)N7%ye3LwSL`4;wtnc|gwaV06Van3D~ofAm)O}kpng``$l}`Kx9lDk%yZPe zS?roF-fbn_!nh_!X$I>XjXf0|+^Ku1*su7Io!sFe%c8x=xA@ua6VW9WQEn3s4@6GK z-}$xZpsiLl*EB5HMDSG~yV!(;^W&}N544f^jkTDNG3I>VQL-?6ZzL;a^!$km$?rMyR{k>I$-Z_3F5UPYf;%8Th%r@lM4ph3yy12x@aBQJnVMO7ph313VyWN%{<7|WXx<{8Bo@Y{a z%3reZ_2`o8uUowKa6ohkX4y*)VbL0^A%f-eU%#~{zmIKj?-W(Z(oZ$Q>-L;4@_URM zg>i31Ay&*J0Xq-W!RGzFugztP=GE9}ZNjT_!=?zDo*c%EEC@Ee-jCL(ObgxoAS8KBTc6AYF*=I}v6gXlhA%Vls36(q{?S@qsCAB&_gKq`z(;9V%94C{+TRs) z2}vN^qoUTAaUV#umu=u8w<2WJl_D;$g!TRU~BBfJWsO9k8CNAdgO zvhj)neMh904(+ZjvOJ^kNz~RW?)hg_!4?f0>U#%cRDo0!Wrfo+9ECS$s@BLXr%2

    (+WNc{%M6UyjjdYv2gn*wm1SS3yVbdAh>i(_h>BmgDr?1I^~v7a3f_^GL+gA zK-_ZjPA1Lol0g(6)UqQo6M;6KYj*JG@5GGFEwj3{BGNbHO%0@f>^;?@iG_pww(|Zs z#PA^%6*o+;MC*odz~tnGf*Eg_hhQmV9$)jp4g#jEv~?jcNa#fess~a*+n_ARs)h5Z zo==x8x9MoC+=i-op@1C`G4ZULmQVG5x-luA>VwoTNEu1ii@w3OY^7~~By(ASKsHao z*i@Kn5G+qkTyL78l4p~HDY+EMSWJJm4w70GHR@~bK{O4goF}dZcm332`c!S#%2h+D zvfncutrb(U|1-%|e6swRWDP$o2A5q&Tg7*Q1<>r8T+1gbpGmH_piioh+%Y#VQHM1^ zF&(1~R{@{1vm}mYLfa)ztdUR?L(#;~1VTDK;l<82<=j+$Vo|StFv0e8eoDJGRLa*I zj(S#E>xa|##&U2%4a`u_4|W9Q0eT{6x=XF-(;-MDP>ir->s@OF=&`3qnFNph=uyrd zx3NcwG>EE&KHXRq-&okwjd85nf6-XDxf)+q!#5W3bZS1I8u@gpj`f%CBt23m#q?+z z%?707t3{z2zXu{%Y6%T9vh$J3QmV=H0~Nq9angADk8fpry`0T2)G!f#E)fU7C3ZrI zGP~r!rQy)W4xaul>cUv-EtyLK!`N1dA#eys(2b|I%6eKr&9lj+Jbh$K!;7%Eak`zL9()+G3cY77YMN zB7R&TyrRfBpk$=h^UZqG4Jn^t;!4{%bD!4x>3R-mQ^abyV3KPGDK!U33glNQ+e?Hk|Hh_0b}nCaecCD;gL=mOERa8!k|S)a{WY zFQico1<=rBOj}Q@Q@Z9%NHTv&VuF3I3!w8q6JH2cSTmhnq|sS z8Hp0+(}cfsh2zB0^<;|$eQkDg#dV5Nc}c9e2E}Pi$(>_DKB*fj?5k_Qr!Hrj-MXF( zpMh54_GsB?*o6)pNUQ#H=FQJXpf(mA5qbGf<<0KQ1KKu^hqFQ-aLz-+!3GDg+!+Fa za`?)rAz8MH1w&sCPKl@6A zljiNlaw+21qeonYZ5n-HeGE;wGu%_ND$Yce zv%jvWTEAzg!XB5&Jyn1rYE0_bZ~S`%Y2cvQa{1EyO54euV}rnDWzl-3cuS+6V$NYr zyRgre+otma>x0kb_p|^t$NoBNrqW**=}h|Dt303na&k}pZ+;&C7epSFFXzh%ZECx= z$tXlt##Lyux6r1W(56^uQ!KP87TRTs4=$uEFZ=!BGSFsEySc0z+* zLPI`6Lta8d-ol5x(O~+&X)w3+Q_+~maLL!5t9^80!OKJV9WMEGkbDC$F_-T-A<>dd zI;YOgoAvTVV0*yQG^(}!xNx`Ilv~-Nhn=^0vocTG!go+umnK`e>E~KBi1JBXG5fO$97+8*>M8v#Zj1Yez3V+17s!_TS-Z6GMf`A6!M z3zC3jpQ))nE8EeJauJuBF&&+lD$C6)kY(k~o}Do#`%pUZHtPp2fxUz)eQ71u#*vdJ zH>fu^EV$6_4W@+N8@@)ExfSlDqx`h;O^D%oVZ{xRl_sNLo_v&_hI95A*=wng5FjKB zH7BTqgj91vkdW}QIpIYiVT(B-LP+SpOlUMpNEm5Oh#BQ4)2hJMfxv#jP)JLdDg|WA zY_j4oLvE2QKDZXJ$6&D8lCHTQcr0WheU_4MgSD~1f@bARUw~OTl+J|z48(3%i6*Wg z;}O6(^zNCF31}8L_y(z2YYW~0r0qk%l!6Zu%7L)k1D?7eS)Y&uZ^W1|v@ge(n}q`3 zPeFmMrSO`2KeKC5^q6$ZC?Fti<&OBOOtg0ucS(dCyib=K%cyR8V(~an5?cOjxZuf?n%%S0xYOqb^6LV`4-a2A1X`;AvkG4H1!>&=2f%meaJ_ zTHq7WUv8Up`6))nk<-<4tHaMlS#a7?xy7bjr_r`eMgryVDc-VMjpAhaUuz^MZ0@$TDA0{wws$Y7KKxWvx#Gfwlgo*HW8Q_F094h17eAZslL= zTq11j-*V(4uDSKLzp2x8AJpa`(&?U9kLMiTbj;qR4)LnuWb2$F+=A_wb6GR3h{Z_( zZ$XCc5|eQ*X7YDt@DywPatjU#S_d}AJ>cCQz}G7Wi8gCWzO`apkWY~a9oX|M%4nr+ zKA~^i9R$%rzNI5LU)areCNV$^w_&ToNNY5&NqlC#UTv)#%Z*>qeD{)ehFGlIeHF0shBzNactUWr`DWWWBs^#1x zlbi3pI+U&WPRn`0Sgq*?R)zh=F;9&n-=JgUuA8qt7w=)SaH0Ej`(@IK7cHb-pRKcx z?`cz6y2QU9XR~Xu&PulK#fTL%&P9oOa1OEdAFgwZw~?P3QsrdsRNJO|@TGhH@_EN^ z=IUU!GHRJ>RQ?ZeTRE0fxJ0==DIXH?L4&Pp+iCfnSua@XV9kn0c{^*Y!cVtI6 zY;qh5OBscwc;z;`x0|MTDSBnK9lWjM2geL$#zY(`X0B;ZT@mfD(79(zFoCtJFoWZZ zyvHxCQ0;f*_QKpIifb;`R8(qRv+u3YD4dSDw)M`jho6rqjypGXPN|>b!@-Vr(~F#r zWmIJ6Xj`RrvhaxEEhV{iE%qWO)h^4vWwP+7M~1UgU8Kiaq@tkgI``KVE5h40i81RY z8|SyWuZWL`N$RTalV6+{%RadNKcZXvyK zceQT3&BFOQ-Gqo9Mf||zUNR2#PX8jBGL8X=&PLez{0q?pr-qdFriDrWswcTJX0h)a z5&Mq$>s(b-9N{$Ae*Y0g%X*()%%(^e={!lNdu^&l%H9sOTe?26P&6zlD(mg2kZz7I zuvmiSDtfc#t)47Hx-EVlgC0Kooom}nOZka1kwyHhj1yzIh(62a+Pk>6y=N(p-U$|@ zn(}c_L^$PMv6Swgi;w1VzdG!9^q+qJ$XGYmwmz29Wf}IpCZ+r`B`@zA7f(g~T{q7n z`(uhFzpjeHri{+81Yh$n3qoK7WGk_P753JyUJ9xDx%hyLGbfH6tFCtN+^djg?^V>E zcDONpj@H)RQ=!{t_xp*4M9Bhl=yHyBVi7@|SA_l0QS$8FqFpIEE5N3IJm$jJ+>W$k+Y#N>ddpi??VZ!b(>(N%{Vb7m>7xxuGvAJsO$ zh`zmC9_1J=Gcqko)01M^ljnU5msBMMermUZNr|cP%nj z$l}@fRReuqU_6lj@!t6xb5A#JQ2l$11h+zPkrF%ZJCSA-_qkPhF87f{GY9Flz?&Wa z?5$;0PTpeCm}I$3>g_BRWk*hzOQWNYS&3strVN&AEwctn#AQ`GIpd~W_@vm#4;*wjBi-D{K2tv*Tn2) zO)y?=L}!aEqY_g!5#gG7*~ia`EJwveM8}7hWM@ZzVPQEoHfij<@Oo9Ucea(~xa6_p zCE@i+=QqyhEHzPaDemE1jSdAtowCqtOK>--v!- zX*E7ECLv{xMz`Gi<~$W=HDN-+xRI8cDj$qzfy8S07<_1grgjv1`JveAJ@%Tcsrr7S zD&`|A2|1>U8LP$m9oy)&%t8_!t5(Ov_tb_zIEE5mSV^Me5|bknleC%}(OA5BR+89p z>bQilW3;uZ`Cbo}-L#a9O^h3pl2D)p^dxzCdy6CqiIFi03Em*dqmyo^0wt0}&8V1! z7)Px<#yi>R+%hXkQgqCiq=;;7c+PpRq& ze67IRx#>7QL=auAd@=DJ3az2-|jI-55BqSy$s3W3cx|Pb0Kd?;B z-k5YO`WV+EIw2xeiH;^E#EzdSAItq{DIdcP7fY2~w52AU`_ro4hI@^x?alpSA+zR8 zT)rO{ZJ`~*owky_#HENd?%Z-q?em~u+IieXi|`@b zXlr?2?u-biz}K>BGS_aUnaXXjE_s!EEGb{W9uL zG;3J|mtj>ujVqPN7IGV{%cpWPtjia3mn0?QxIR|Wc%4F5m!hM@033oS&rXE$%OI$q24h zQaXdPx2jsf8Ev$aIF(2~uh6glZt>gt=I^$y(+~f?c$0qq_x|tdYrfChs_*+l*+=@KABsQGpZ+1N zO#l3k>HGCle{8DMm;dO0NZF=JZJFO48cgSlrx|Wuh+AY(T(VnXSb8aMz2W;`YCbmDUH1RN z&~&-xJH!4fO+OoCzb!s%Ncyd~&M@g}*d4?EtNxpfm3Pu*rl9+E-lh%r=}%PWjni*CzPMTMQRDtl|I+!z&lx|xUH1>;nY&F#j7R=VuQL`mrTdvo+k!-c zFWo-K^_$^Ywd7Du_kP=1LhC`9=M06T-5q4svVRAfmN4PTp|ekq%Rk`2z->*iMR*S{H}{qWosO!$(WQJrQi<0Y3j|I^!{8 zuL9ov&qTo1tv;l_zt8r$xDp&<5@Rya#$i25RltI8!3;qgI7U(18YIcW*}XctP#buS z`DnbSLsc3s#!LlFh1 z%kS#o1opeRvcAmf?H+ms4}?>-;7#=7G+zDx^08hIR!K~+paU-O=*!_2q_~0R=-RV9 zI!hkpH=IliP#^9=-kbr?w2c1%7tG7I!>85ndk?U*Qcu;XA>{~V6p_m)wb|OXephQ< z>i*C@7vFu?nEGX=nC|&tVXgitRjh~tLARQCRXTW*SM*YWqoA81Il(#3-t{pfj4O73 zxPlSxBdWJEB5h#_^DW=f+s<{r%|g-h{w=zQw{$MQoOq&$+8}6ez#me*I5M+ajuWgfIYo`?z&ueMiH;ewRdgv z^>P@R6SA$ur-%MV)#Rg>#x)i7t?WtM1^6c4q1yc+miw*oS>KYismht|u+LsV! z&7%y_4eQS_-@B{ee@Qc71_bs>)sCGj+%Wgef6gGiiLQMu6j&vlEh8$`g}{Zo3cOWL zpRL%1Z}3aDDiCpP2F`eI7e0=(MKe}PQwQ|2|I#~0>+DchToiHg!V}QI3aR6fr8V;< z3YWwRgR868nzk*|96=~=j#$#&a?Sf%g~Mf(ZRi~h+BsrL&B^E13~_wnx92L~to`*) zZ7(jv^5i&$R$=XucnC2JrJnZRxry@?&VS8y?{$1ujJ>;PMTE7*>KWD+7hShl40Vw> z>AY z3;`Dr@=D@3%CBXO#8owGum4`f>F*y^fBz;(^s%l_iuPW5El{?FRRs~x*Ji_s`rPBY zWB02ZaG|tV@krOw=IW|yLB_nsnA!_DgQUe6oFkhJ>)Th8d#o8>?~sJnxVE7=I*I5~ zN`hk+gG(vRfkSk@!qQ^5U#Wec#E6weA1_BdZNaM8 zsug#;*a9l{(~qsV(#21uZfR|+;09W4pZCnYA%NQN=lMOa-}BdF%gtS8&YU@OX6DS9 zGv^3wr5bk5nEIp#k`*5n)=B$-02f^I!yY%aOW!aCI@L;@Wa<;{;T<(cW@`d+IRT*e zoY*_z``^{^`w!mev7=C9^tjw>4^U1!JhricG*_U1DI7gW{QXOtZu&6;_3Zg8Hpop- zAoM%6yeBK^OxVPwfnZ?iZ!R@}-Y72A^=^8_o^6f~%}iWHSX;UrS+aGmSM<9I4CO!0 zO_Ye{9$thz(xVdP;leX>U~%ahJ8VJ44WT;+pHO2t=v9^_4!z*}9bF`b3!H+{Jsg~r zeE2g#nQ??;6p1C{N(k&s2)tx}d)B4KpaG7R?Wsp4sE7n(>0l$q((k5B$I<}$6A6sV zF^IumRT7M;vEze7QBu{J(Ks1J4_Uz($wlG!bR2*JgD_;7aW`5)AdgnNRw8(NlvVru zSD{s~ZVD09kMD(*(Zx9)RWNFi{;LdpA~gg|7op{79=E9We_fIoUpi*|@_w&3mC0JM zY`|aZ$he_@tb43GBCV?zL#2&VQQyv_1@GmQ|=!OaSe&q>8Fhj1hC{L7?o8&@q}?XXAYAirvRSW|cIt7FRAW?g#ivBemHaWY{b zap8~XVG-Dowo(d!0CkZ?^|m9E0E_Nb;|r#OBN}=*4rAJ(9G!g@o%wdu6n@Z$^dpyf z=S$V4zgcC2l?*$qvIQr>*`*kQ(B0>Te{WZ|p~sZI@&~N9ka9hh zG)djVcF?i&r8`+^-TX)AtZW)4gxmJY`8`g0z+;KW{oGU2ZfRv&30q$AF6*3X`!6?* zF!WEoe%7v8bH~&Q#quN&W|d*6b)uV^jsXg_^NWK^uh58kix>lnIiS3ch(igjUZ04H>(`}d@T>Zl@1BwA{+H*k-^TcqzgVUtaebl zMv-B055~u|AuM{NQ@&2KX`i@k54!OBhlu$iS?AHFeUR(%X0CwUGCHe$!B2+ucAAF$ zg`qLd8sUL5JPbcjcI%H`x@@4J2aq(@TIvs~Ei?ErN`|>9xhN&qPjNj-uXr=S{DymP zxz-&Fot5Q($Yoa6(SyFzvg!_QOUSx>fIc3~!y~@(kM!%4kKY}piMJWJy!PB<*$OT% z|46?gujNsgNY?j*J`JUj)N3lUtfR?`nV%OLNNDw#&$4Xik{2^RTTgzNnlG~c?h!|V zv&VnhP%Fk!W&PGHyq7Rc%cm}|cM~w-d$WW?$O}LX7vTkhbC1T5Q=7C^nho#evVt z3^sUCaWKn{V)EN(_rDCcCI_vzX7!xK7#JquQ&Jo3Q|`_ZNElCs@&3%W7Ph$*YA|`x zWobgi8Hr84=-BUAxYZ`LyqR&RXq@w33*%zIa-8ib{@Rv1~!cpta8@KA)J_+J^|0 znU|Gzwby@v_Ll+e8VM64 zmN~cHW0rci4>)qc+EufOJna9j@eCu7{tZR?jzHT?NzenClhfTr2H)OmM=V^pa72bp z>+ueVjY{X(koZ2WQcA2UWqgQFdLK!WgF*eD%Vh)-xz|n&5G^7Po^HpIJ?&Ev@tZE2$l&kxb zS^78Glsf6TTy2R_I$B-!QEzBjMGb$kWkY+iPG6O^XYOIOl^^f(95sI8=y@3enbnP< zFQ2=+c)#np+&wveZfn?IJN37NZLDlHE7jbTKM-D6vfATffpklq^sc(^o5|W=^b$<$ z3kUDGiF1E++W+~B>sGVq-Tp6dHhn8urcr6*IOZc~LHm-QHcxyQBx3S5N|=X>ci#wT z&z)WBVe)+#9D-;3%c_;7Z0Pr>#tYv8tkZW6#iS*nz6A%xj@rD);C-fzDjov)iM$MkOc08pqZcD3Pvc=^T=~T9JC8bufo(MBx{p-{kml;zlU8+R^@->zA1U6uXIaCWC zmWu5(j4Jmck?`7j2igYM_7vVYzxk~MyQF|+#mic(b4OP?U4?4yoRhb+mCt#nH@C)J z+Y)!&DQ-@1yw$znh--J#M#Tl6tDJE1##dX!(fXZi>%BR>C9XwGZnCH`NFdvv_0v$n z2iu~vqjzdfIez8trJcq~MoI1`d$`mty{LGtBacTOe~mEzN1oapnz0b`cHAmkCkxH>Xv-B$`Bj=*VK{ZlWHSBTa{A{hckZ;b zuBO-4JByC)yVKgLY`$`qTumoVta7;d+rPiT_1AAtt#Vj->eQ`Ux0d31^Ve0UPW|!Q zZw^I2ORCye&TK5HV9HLMFqsZD@*tH*3Ej1f;_stnA%^)3? zo?4Xykl%hoLB1%F%EZ5ZsvNNT;{j5MXrTIb-z73iz5^?VIa$v~8&9g)wgSRQpyG43 zKrUf}g4VpXbm`JT0|yFE9CwQiP@i%U>|_VHUsd;*?eb=_l&nK*NA(7)a%4VEU6!ld zI5z-rYeMEaI41eK`#&=Cb@>Oy%|&4hT>@zA8ADC5hG{OZQL@1Z$s8!e>_=jOLPk_C z2Bu7N(I74$C6*6=D9#ZPaOg-xC}|>E8CzWt1Fz_ilW|!1d*Owflm5UNJY90g)00p) zS8(M;eFeZFb{$hb9!H50iGWxj3(5X{EwNqv<0ib#!mzeY@e3)B`beUAG#`z8fHT96 zH9f{h9yKYb8i^ipr8L>OA0IN)7flX*`8E#T(F55y73?(VY5~&HkH)mkCWohaodmOD)@icg)A$um zDD&zt9OX~CJup3Z{Abuc|As`oMHODlrbrGPn>sg}J|b=`iR?s424jdz5IYcF7Jo|o zh2t*(hmTH&v!acCp%8*yLB$WLyw>VIlm&p*Gt&rJH}zE#1u_j_u;4HdP2bzkW6 zugQY%PffV zP?All`Q>xErNn77ag;#9t(Gxl8=2dS%(|q+ng*+11D5sKQmW$8JWtmh=}P0(GwwfT z8q^I`ThUtSC@*NgVlsf4DBRSh!Zuj*G%MisSalGMK}n(iQ3ahwN&A(ZG%35NxD!3Z0fPP>te&xe;M5Z3L}?HpSPI?1 zSB3Vp0eDYhXyo3*m4(?E1vm-?D(#yQywz@s5#_YFo8|O zOJ{!#4&-(&wBnHubzgC+8e3mM6X1u97n9+?tUn4S3roMThZ zSX6-u$5u(um|{6Qa{J!li2DYOgAFVD7K$^h;O0y_8$879+$j}MS_m69ZUe>59(3xP z&K;njq!b7|q9v(myr@)vgkbv(DFSIcG zauD^)ivh!`g#m-YZ*KYX z=ESK@8JgfhWHXmqXnO_eH}s%&pccX_8ViYeu)#+}_iB08_MHg7Gc+C0cuz%Hn<&SR z)(;v?Ylst0Uqjyk4?Y)~E^M1c73L=|nLRL2!W3qssiWBnKi`u9dhimjLezgesw~|EC9?xP3_vjh8K?Md zPJsR9rFeks#gH&DFuADV!6pdXy%wa!*`ynlQVZNk?JjY`wX|6_jVLmHaCQ+2$fjZfd5Ib=?EKV{(j7by$T z50^WDeoqEL`tC%>yV*f8q+8(w#od9ajZ2F^W+v}_Vjw_sP?V!4#!cia1;vfHxi{uI zVq80!iTeahLCkY+F?`pieZveEj>hBStl)p0RxV@_h1#5v4GB)a9PS{bm#Oz%jaD~< zzDt$lOY7b9*`MjB_p`+7AF)kMK}Mnh!qC5e{jR_vvxsA-$IxmoC*RvK2sV~so)DZ~ ziJ>rhg~J;fy$w-Oty5aP&AdkyL(qe*{*U16^AGCnVBOb)ygh~N9AG8m z2rtUStZC5>@vaGq*}6@C{62ryEZfZRTI>ypU;ErPQ&U@3 zCT-5%Wx{GHfYDELl-Ul-tqLsZAMe^WbILsqMXE~0#vBQ7y0)L_b&~isMt@O4wyId? zV2usCXz-x+%(0rGghRfnME+6bnA$m1i|ikk8mrYmwujyqIw=p?O2-{v5@u-@Lr9F2mlJJ4KQNNvR#azY70BC0pwGr&z@bEblRT4c+K35{2D^D{{To9;% zEVaz=2H9t;|B>#qk$Vkd%r7&%M4}5}Jf|9J|B+`)6wN=v360+rYzq>cxGEA{?7^dy zG|&-!JHkr9>||@*WumQ#+9GX1uE%}yV?W-NtW}^4@VM{10u{ao*B3z9wP54fPQL=pHCovA4`Tf|IJvqmWZ zY+8Z{)wCZ!tP`d@!j>QBHz;QHCJtd<=xBMl5T~j>51A}5yJWL`@F5>Q6=0u)iZjE< zUD+edVVZB^U+*q!m;d>pd5LT;44{GZL=iOMppdu;p8E_aV^ZfnIkdpm87?vsNC?;El9 znK3nmqH=sLOTMu@_eObeW*Hk}x5yB3zSMQls8xQpiLvgYbxOyX@9AykY7HTo>AH3a zmAR^9YA;a*9I5sfA?IRV3(MFafOS6$URuTp8-kTLlcO|7DNb(>qpt`fV5N_OMM;lT26`IZ*Dg{uTwL2l*U zF%AyF;h70a{jz0h`9moy-GJ*uR==z~cdqN45d(^%igK;|1U~8r=TQ6|%u-LoQpwV#;Y%fqL8oKB@(j0a zx5c9^l(sr%yQflLVcX)VpUboW&Rd?gwlOURq;E0caj9cIi^0;l*)5ygSt!90_?P@`7Y+C>;n9Fv{scy3eM-L)-?30?tMvD*rBz230vAUtq zS|pFlU0moS8=Se#Xbg;(%KB!O8H|ClIP~<&_h>ua5Exf%3(gcN*S!6LSV`MY-Opz1 z%3uizix1?TAOn zqEB4V$N7fCsE>ux+Ti3H)V-JH>TK%mOa1$O;_XXycQ$qJwWfu7`-+w1BnIi4+-bEk zzt}tgh+`Q@171*(ocgy|O+si8f$2UY*IpsMIU!{RFrM))4dTm_n|vqx+6+u^N!Z|< z5Q)P=L{27QDm|aiS!;q!D*n}_NO3=9QjwxsbTm|1XrgjSV=+8~Run68O*j&qpn+UY z0{}s3vOYx0E-EG}1d=5DTh50XPRx?ht*>0#KM-Pf}xELM&CO zYRV6A)t7I&yf3(5aC2OKpV0Ez`3J(_4+xL@awqpSUC1r#Z+eh>&=c<k6hg z-v>@nm*t?<$erkI+#&jRw3|Un7?h@zx|Fa8V{!d4 zrt%|SfbGV!@VC7${Z65xS1eQ>@ceI5@Q$6KgQMEnaUZTGWCHK;iD@`pAlfh|s91p{ z^K-Vf5z&Ak&%cvZ=lDLvyS41ms2n)a&CL0p)%>1Q9E8pN9pn;4F8?7H+B{Edl>gru zj#9%y97H{%97dS|SOs)>1Z9tWar=KJ6GkRlH(Ew(hs7OtJv*|kCU+RChHzo2%S;GoINLgbs+S*{UlJ&gNHpwX~=#UZx%*=gw+GiIl!ftmk; znhY?hlQ3izGGp*jpNsGweB zX-Vi5a}~UQLX12)rh4Me2xCF%9mL~7q#qIs8vNLMxWN@;3$#I5B*}v@i(GSh53ej# zd}Hr=COe;uyu-)ECKOm{4ry{q@0bU>{F@wWe=mG6X5Xg#CyjF6`9rxClak zO(qunOVgBQt{XsM{QpI~&~&CqF^`m6&kg-h4Xm6EkIiNx64cOC{E&_+RKIxQ6F6|g z-5bNg-p3ujHq1FwsOZhnAe1mAqR9jjm&J>?N~1JNjVx0T`Fi%U2!2@Cq8>Forr+3y z6)BphUDYs!;wE%QWT%z`yt$p2I%Fo+21 zhJ9g?VveakR0*YHkwWWe0flt51z#Y6J9ABIPMeuQ+))ME<`59xHbEtOi%1E5W8oAu zWEV^N8|@3A_(s#3VuY-v@X(eTqWQV{5@ldY4fKyQqrDEG(tC--0?7}01sP&{;%oCT z1DRAree-W~ty)nGrlw>94^ifKjSABhZ2AvnZ!jE1S8syY33s?W)rL4(ss$QQ35&`? zw4ke8BnNP(p3I@9&x-9LSknISr&mVMC%6UD_fBbG(8YDy$8A}s?W0umC)cgEM(W}V#N{S>@8$h zD?g)!?2;0(4|Jww&}wZYBPI&}UI=ZCGz>CywWbuz^I*0qgQ({s(IPMFNALK0!1ph|HT$X9UD*>cLc84L;E1 z*Dd>66Rm6R7(K6^rG140?}7q3nKW-c?Ym~!=sv{=El6=V6aUow)EUFbF;V%Zfj_u) zE15Dj4#e#g<(Ysa-O9@%G6>?Z67Poku!ZH=0uEL8G3aiKcB5F)DJx)=u?<2tr9uLnXzOC~gl8FHt-J z2UMRoAGZ4>7U+JS?=~mUwvfJtg##U!D@q_Nz>&(Oc#O_ub(X`xcl>~~(mRw@AzJhz z;dMfGL5D}jXd3m-rs7xEzANZ#K?|RiHGUy?^z)zwfnh!n>%_K+r z-ysr@s8J05H?#h_AWsQ4(b0QpYi~5|m16yZX(ePA0H=Uo^O=RZSSbbzD4O`C>F>{LQH-4i%GCrj45x0 zW8|bozMtOaNSyT(nnF!S9VF2^K8_;zn@0MjLJ!S>$OI%Y-Fm}U^S&b4iNoXj>0wR; z-UbBe#KJ!NWiw-r;iA7v`rD17F8{5BS?ik7#Ja1YJxur%i~VdnM(Z>@$@2vUVP$mL4oOVOEz@)MGANZ znWuPN97bkaI=@ghFP)*EZOWUepJ{><-7Tg`w-m>@BH^7AGgq;KEZMA?*OE$$6!&gU za#YPH8@o93K<+NT7P8q?|40v45QU1_WF3!X8pXGS@B*KByUEdo%l46JZ=oWajP~?Q z3mx;Q1e{I!moy$?AuntJx7nn-9d8-fFZf97-rj+66E?&<(sLF0M0VfAw)M^B4HOK$ z1HXvN9b-eS6lkM_U&1uH#x(H5V2MpR!VMBe6gRq{EnZq{l!GxHtFqfhV+w$ZzgTfl z?6)WMxHu{sW0Z0>EQC1K#CpsCn7dvVpZJjknEDVwtWvX(1dV?0CdQ%fI|zmF5r|bt z2m_~3BmghO&JRuEZ$lQF2F_I&Ot7keL*Z{j7MSXb6eZ;GQam14n(F5&mYIYp!8ED_ zqMr`5@d|=hDLRW`Eg(_pO)&020}&@v2%$m8zkuPAQtRDudifxl!zB{--A7*~_T4c| zZJQ6ak>)B&O+vD`fU1fvE_672=Z4S{8xvwRaOvN>|m>F1h1!YGLF%Dgj+A9bMd^eI2@ z3*H?EfuJuJYJ^ICH9{BJSV(=4|JcB6;>1I8=S(DmGtpiH2BKBEP4qziI>ZIU_)pTI zI}FIfQCS*nfoiT0!?lrX3%g!zBz6Y^!Vbu5xsIr>`q|jDLJPPZ{vZ&Jyl}UG+|jQ% zr#a9jXE+6g#5^e7fAo9{U^s!jtMfpcq9knDI=>18gY!XnTK@~Z4o&AuqI83 zK5Mlxd$_&bmo3lhNGs+He@4bhmV~sqEfqregU>^_9!E>G>y_{v<~#ToF*h(B7(mK< zH`nwtvmCsX@%5+Z(j?|Sf#L4ckRlUYRW#?1QP?Ue^i7`oB3ZYtK24zvk8%Mm)7MF=s3Q7fITNrn@hH7Sq+XkdWdq(kos$WgZeRlaWVQ zTG+7pzxYW~guc*=8c4Plw?K>Wz&Z7XBE>4*ZC6f{$}i5*p+AuydOokzk1p!KvTZI2 zo_TFPbY+L>kS^OOWt*qK+Js+#V3L5Oc`q9wi6sbp1kEhYvXHZHEkraoFCj0C!SLRP zz2lE0Q1HNvMiKm8#Jv>o`zsDT0Sd9ORtr-Yxb@=G?eiz;$kYY4plSoU>Ux1&bwP(L zWo1XQBZ2_bIJB9sesK`0zp!hKpw5+{=8FU&e=2QAVhsKW#B~HlUKpZ0$6To`pz^f; z$Sb$B=a5h1Lc-52;(Y!HO(0dn^o}+W z9Xz&4{~8YL_Y`tL(hH*-Z3;91(P($6LN(z(1kww^N|u7EA+eFVfl~GF4hmB16QDc@H9CXB zjQj+seLetno0JBb_L(%LeTE9udx)794W?l;d0(+Y8V{o;1jQPGU@vs^p)oDHtl})a z%+gS_m)#nM9DBxq8oc;P>x&uV2_*B~36ejdT**d+>F5F;ocKh|uMi?W9XxpV3GjCY zJR3Z^)f3=fC4}X{pY6P0eJ1^Qp%E2)f+KEsX zMgZ^+xBwK7OHD_*XX1kK6kW0_E*M2AE|$^pX%i$J{=qL@2jp%O8bF!(r6ZjM7ev&{ zoE7V;!YTV-M6=bPD*?|6t2Z@()$mKy+NG zn@H$d5}{U4v>A?C1c}8^+Ln*0oJy3Nh^lgVqUdZ0)wW_mOYk#`5ZfatC9A!Hq5SWM z;Cu|9u3Pn=nGWJQfoJYz&rH{iF3(IC$m7Rz-4p3hH(HNwQ#lAmM4TvoCEi&ML&Gm3 z4UgCoIOfM*>6=GqXDXXnWU0;#B_j^^Ap!7Xow=bXTXY*$I%h-wrP=tQpi8!HosQ4e z7NYFd1NeGSQLV9akJ>XvH5XDYWS?>Hp9=>5|JeFK(o*RssB39`n$A3qKQmo7YCJPt zxAE_p>AI2WiFB6M=kVjlgKn+gSyV&o8@bkR#QDWet$&9X-=5z0&0n9+0_Ly$1k|Oa z>E;d<44=*i=DhqMZO%(afo{WGXJ)AB$_z4|8M6P6n8Az-PXohPZr~X@5=*i(YDja+ zsb}dXP{%B3p0S^388hc#Rm2mPC(bj0Li*}9-8~a1!e8+~d8$1L6skRfX~h$BMK|8q z9EnxO`Iey8JRHXoF=`dg)o-si5Z5DpqZaJBt|%wB(LM9&GG>Sdv$|Zfhz*|d!*#Nt zfo#8j99j5`gpKSJvJJ3GS1JghOOf8uMG_VN0a89zHT*OrWzPmX%v8EcRUwNULmj$U z+F&bjh&J{RB7&#d=hHJi#euF~du(xtpDi`?u})r0@PX}Ok06beFEtCnN-5OgXA)W* zI_q|EG%>BO8mn@_UM*I=f2IVvgsd5>au|T+my-)c`Fb=QeKP_*ag`G5sCtiB+N;K6 z7=e=OtW}SovrfLWXlhCPbzu2#R?f;3jl)J_-olqdOCeR3A&fkIEk1I0@A=|C;@MVnKge4CqB zKm73U3?Vp^lY7joxNcSG#)>r)K-XXo`&gftm|2pJT`OSw@ zjB-=a=-_@NBHgr0@R&AaDy)aUY=t&m!`|r=_~mo8mlf8Lv3E8K2faFpp603$3WeBa z;I++Ad{KMh1oo_xN|k`E9BRG>XFqoIfGCc6D31x4sT$0`gK;v3<<8m5f2!`8?6gJZ zIb*LX#1-%pY)O&aHMYYG*vz}EE*XGUL-u% zY7vjUJP)zthL1xeUXLJzAPXb`h;bed{m1inuFmD;70$Wl4`Gjww@pr3^e9c2 zv&ipzP|qF1)1YggoM4dYzuq=W69aYvq3<>>)YfKjPsM!)6M}iGp#iCSVHC=uZK&%K~PFCRm7LeYS%Z zyD&Y`4l*BCXV?3=yRTpCztwG>n@Tf;6k|Im{D&YLfS2;@!t;*2{0GPL@^bqrCpi43 zb_P6>u#WAZt2zKy*2&uIJVIQps{#0}I=2IEOJ+lPSZ18K4Fb^fBg z?OU-nwo7F=%b{KPXaDmjBr^M?Z#Zga&~t|9;f-?I#l7vAon9wvzn=Oh%MKJy6>XcV zUG?WmgB>lmWe$gXO!sn~Q0_n(t?vf}cY-|m0rmzU|LLvG%`F7^U7e5*x9^60|9=G1 zy&}8+RM_`+=(woiz_+nukdRHMW#tbIJ$zsVb!8LA<8+XpfqCM z@@C*1A#4$U73B}bPFXFnt8pY}Utm8ui&#=paWrm15ivqFe@GHx!(AhW{YmtLNq$Pq zuS1o;lD)qn6QVlGu$-Gg;i~5<-lps+p(S90o0^iso0)V{%34V=XyF|00)_He3~o=?FK{;)gxdp~82c&h=qeJ-ykr7Cmn*2d zDEz5Yk#vN_L|1MQ7OtvFC!IU$7ufEiPj{a2;yIzBR%V&Ru9Bm!{N#PYUcTaV9Vz->5)%NQum#|J zkUG41LmkR1+DKmOP1gCCt~{DuN$M~^6e~GTG9_V-b?;VU94YakQL44cHFP@IR+&hq z)4IyHI?udXYdM*FL6KSuMgBKtH=#irkW1${N6c}lz)ODKWjc|RJc*UU8R`d|>6oK(T`)BEz?>0-IfI=4Ba_xvGB`r$vg?M!Vo;l(=wt)QY#|R* zVy+YS-gnD(slgz(?*js8ZI-Vzynw;BmSFSc)3G^b`@fA%Wp|3KeL6Naov^{&H#X@! zP{2z6mzII^72}EVDbh}6JAG#F~$G~K3i4G_FRt|@&3#>(n#t|WthL2nO zh4s|!0~dtAqmLtOTj6KsCOMR7Orkp>;Z_Vxn)$piD!(i`Z^G7siZSn;(XBzM9Xn^5 zq=YI6V**6r9+o~q1Z|czRxWs`Tty@^{M*gVsJ39H6IR;X+})SZe|I+^j!)K>OGGeL zm;{|(zmE38BbBfb>L=+Jh>rUIx`gufPN29Fd{IL6y)LgGDz(5cFOc*w7?Qk(bMlSd zC4+CfH^~$8@1a}h7OwZm58xvEsoDZp8>@qv<(yiy5_~rIX!5uJl2!>m}LiSUcenje^e)J zH+sltCSAr!dLq&o@W*Hij2`Vq;L3?ZI=EjpLvc#8K&ea4zx2KEA~E=*^VWM@-@g-Y|*zRlMwPoH3!!sHjeRP0H1?NAiiW{sX&CJQ zD|4V-!y~U{Mmi_e%GqG-=jLLqP4(ealg*#-gVz@%`OEK*g=ac0;AC0`c1#0~K| zF(=v+kY!`m@3qcuCgkuV-v8j3786DX9<0un3;qhc*8mB({Wv{L|l%xzvk)nQh z?Thew*Nc!!gS^0bln3~%lV0IhE+^7CO7D0WgT z)S$kNK&$m3ltE}|uZyRD&097T2PgEyTV3BBC*0HpE2)YeB*4k*eucET6WILD1<|j3 z8$mQjB(Y?=*aJ}4Z$8XWXpGMaGiqp%=ZJ;QYy=wKdQ z=nBYzQ94}>KDM}RD!&G*V3>*H!Y;v26CFkA*o3qBr!mq%{r}6Nyc~Fd!Kg=0Y!uLl z(62K!HywXd?7cbiH^ueCXZH6PK5m~$ao{E_XG?Ad{RXS}wI;KS{RN;1jU?%69VGJ=+vAsHgNir986~bV&!bb42~3~;5->> zf=#e{WEnLZv;pjfIrZMYK5VLDYE<$SUlE&`u*X{d8fr6&aOWj5S)F_XkJ9JDS>^>Y zF(F1N@sMSRJ7xvSOP_1*h4-=V7ygibnPk8an9O?lmyS;WOa48hZ7OHe{m(?ZJ5{x6e53;}pl zzKlKxGOa~S$mWD1KFXW<1I-I_`{n*P`%quVf5jcFqU9pQDw%1{fjhi=ROpev!N2JG z;YlNl`X|H&p?y4$77{T4K7CyI2!j2#x67imNw!mM9c)L~2HJYqP89aLC~tp0zOs+J zT^?U4Z%&dwtlflgeu($i_@i^`{5|??S9t%|BnnAPza#7tJghSedru^9ALBj3iDA^v z`SWSmxb<-MzFCMMf=+NH%htPlt^aHLw^FNQr&RXt*L@Oi>gG9gK%GJ<;ASt;pXME*2}?*+2CcJC`n6xk5rWL=!h=a$qS+4hOnV=*31yr1rgj3c91pP+Af~| zXioA-flc{GjAOa8r`j=92fZ^1CwI$We1F0zE->Xe$E&mYr!9y2TMTXcB(-x?veCGk zKD_dWc3Kze{UL838eiE%-tHb>NfS$>bO>75oFji&_pyGv+-UUpR{FayqREvS-;cM~ z>oZzx2Zan!O4m6jpp#X!ILq6AE!Y*P{Uf(GeB~aSD4zU>p46xhsN|-R4;?TxS}gvL zQvTvMIn+;}371VvB>zvXna4S5p5TL{ySG0LQ4{-@lNY=-GbF+{*{OCOWvw0PE)TO ze*`X()v`3Tv(@A__|}p?tY8HV%M64d;qnJcsL@C?zWK zumzWygdVJOv~|B&JyiHQwM%NUoA=>L)v~6{8iR3_bAsCCLgpTWakum2 z(FT8;U5W6-FK?fFZf}np2mRH3t|GYMufmGi&V#32A3OyCr5M2#|047v;ubV}KHSYT zhPW}zkioSR5j+EZAY3htLL>*H({Z=;vwN#+lg@$4;X#%xCuxj|73>MpA_!|@fM;va zX8R21G*%2ROg1i&xlVW08#DUlx~-SDza^hhIlKKo8pHt5vk|=>U93y{$io`}QxJwl zEsZ7{D_@Nl7q%VI@f`_0JDgxweM6u{>I@wE>SnO5X?r#BVbGc z>G86-Iwv#%!(MKdc-0+CsyHTvAE}Sz4@&z;a?`7FoFy)L*7`*6jIUM!Es{eT#k$76 zNBj^|UOqFOX(9oG7R_n0a{)*LC=#`xAMn*+L>v4Px}#xm&*a79tX6=5w!bThYPeS6p!nVy5d2` zHXZ@gLE^oAl8i6wSC6+?$7qy}>X90hJwkYzrX}!w2cJ%8vF5o&27*A2K`d{-k*8o_K+!?dBArTzx@ z1h0>lyN~y}x!hgjC3(aB1+SfD?tw0U{C-{;yjIvC!f(L_VS{jcvTl2CbknIv2sJ&y z>P^;Xhc14Pd?@U{UhUFuEFJu%%k>-ZL1+Jo0>$?Z#03JZYdpbL>1FJ5$EleZ>1k9W$rgBew@;9`AI_8>yPjsTvt( zq&jvKN#s?X2lrq+t*?=yD-h_E z)}CNENi&+1w znxWZY2ZI!;H|MB9YChPij_O+u|kb6rtz?8~tv6>-VU<cNz!3 zH_RsO(qdIy2hN%HQ7&23khOuQmGV~z+{!Ya4YSF!(yHZkAF?DF$rKE(T<4csJaB{G z{Nl}T`K?hH?4tl=y8#6m?8nfmK%_nS%^rE+8bzf&gEv%hgHzJC{0TC|1*jw8wvQxW z5TtD`t>@ATpGZqicXDZ!=Co(Hw1kzr!cFK%8)HtpnM*5vBJIl^Y4zRG+CGssr6X+x zmzFY}rFX?moES~1P9pH}J*778Y5|y{x`XAxhw4eA)N2%a3&$gT$vx7as$uA)=AQ4=Obk#z3nbcAsVe84!> zHRfbs#+XT?ICy<6>B8gBS&?*&=5#=BRP-nf0oUJ>Omek=)}qCn4B(>2M2$ul(A#^` zbm8{F1U% zl|GW68ituwoJSv%=g^-l9>5IxadtL-QHAUo@v+noLuzI+0fUnA02^O2k_$4qn*x#q z0JCSzq6i(J*W)x>MtWZM48q78$cWh}F?TG1J8k?POyhMQY{vFtlo#lY4ddBB9xI~w z_qs?Em!RT0|E7jZX~!5`kkp2e&1Qd^xPEfTH7<)J)HlHw#Twi!Dolb)FLdC} zL?pORQ_;%hgJP&$Dt*RHaT@u6n~VbfX2xuCqX+$H1*a#^iXTT);0^*-4a4Au!ph~S zujhWUxtFP+Ho)bSWZ;?J@YxGe^7S-(0sotl!sSTe+DD&7zh6>&z!el;f1N%l@dZTN;s=UU{udMp%%=#ZX7e{01>^?x%hIFa@taM4QH8A8IjEu@ zRHN0No=gzjc$(;p2R^OQ?UlZ)`&1Fs|Tq6ZV+M$kui z`L^qm4?qw_<>>pCZBevBN|MZh(fhjc^^BpP8}B!ermy8H`m|OD!V_pc(uz68o}R%~ zZwA*6vr@QcecCLNeG{z^)r3E_R)~QG?0PUUz65``$PRXCpcPT_zn&2Zz)Z^MBCG3t zGq^gHPxfu1i5lZFjuT?UWRO{^8CXA~5Is$15R+DHd3NP0FiIuU>LeGSW7jZDN;0}T ze)aiW&o0Qx!;3~VWA^Cj^k&9va?^s4U9(3AO(b=${HI1_UPOHnohyqrN)7kmPtcdR zKZD+rDVwP26@5hy>5X0^={14k7nxQ}pGMQC?93ec6icshl)(~G2>8waV|y_FCfwo) zqW2=~5eY&|8HsP$17zDuKpjgJNWNxsWHJ2hp`T@S? zr_i5S+_zK=lQkG6l4*b4@=ui1ze!ovlcEUmC*cB61zPD8J5MJL$v5#5)gc6qF{Ann zCSfR(C`XZM>A19ATBNx&kDKi6F`d9QgksRrR)G4b=Bab`C~fo@D%0herz9eNA`m#{ zqz{$Qi&Nndbsay7PVEJjWHF=G9Sf!yBbj;X;ypL&6+Nja75YW}#^TT3fexJdWy;@< z>T(YHNB!nU={+i9Ox*qjkleAiQC>m;bxunB^INxYNhgmPmB1`~MpBSA6@ch4+^t0GG2sQLd(`u`}9>n%F6Mr5_4_74iQmSe{l!?z6HiYSWL1wbW{sk` zmkP_LpOjo5CC@?R+0)!-JGym2@vL-8yoNb&>cmlN$a^;57vFr>=6G?RcTXGv@EGDa zn2uFIso=djbLXRRL9i)%XpMO^paVhV#0hcKZQYubJOx(N=A791puV%z%GFoX;=M!S zBfLfZ{aZvNSS2+ggC$c{oTMsVQk5X7@|9G1OYnxr4jy|0+5Eun;QBF2R;j%f5$ApU z&8t|?JOOY=dSCx|5C6EnJK{V(Nbf6PnbiUsq=YCz#gPZLqpvf4eR5{@8v52R@`q|UtZEugCz3J6c-UXJl6D+#P6oW7< zG_(pF9q(?%uuWa86>ZFY&KD*&0fC9c{~S+hnt_b<2t2~4XdGZB9N0h@?z~3f$;3gp z=NFdBQTNgY{VJ>?(;DR;PbLuy`G0>2GYzlzAwdfb&KpungM2k?tW94V7K#nLp&BFt zDKVGq&(UTk;47ujGCe?WE3ii1t;^?zfipWO1LPp0V#}-^!B*lnuI~JSAJU0KUR3iP zQcZeyjobdmJ9^idqhL}0+*6q-<1vJ zh~gAH3Nt>0=i_$^%-kz|4z3bc6w$CJFnAlxNK~!=?k%5VFnYSiL)G6W()O#)lx-Xo zS3q%BcQ7{v-k5kbg1*;web2}3iQBj*z}yHleazzcV48kUR~i_cjzys5;x-O=&bQwu zv{}tcCo=ib2|aFOD*=X`PE64U+z#IXsVrpSyQuzd#674q3kFvVEuriZw=tPVji0*d zFdz{yv7^*bXF*9i4x=CXINIf9gt)>U=ay~LvrBBN6C80&U31&}w{wD84a5CP)#LQ;_2slaoKAU`Ebtk6YWQ@Pg{2n_a1Q@}1le z+9u6254ja`)uBincI}44(CX^Kl6R`BUn{v=?N?d?hjnf$?}=;Hl`Q$3swP1IUT*?h zU{(=1V|JQ{w%S~h8{>IpV7&N*OX%eL(z#~jY6Ogmru3YUKDS^`M{0j2+?-k*6c0;> z$PM?eADrKjO~`~OCZ+3VC8wqbl7eV7Xo##N<-U`a71w%Pj}`H?gNP^6u0r`t{-ZhyyLhW=0@f_ zx9&}zFO6OK(lg%bI4xmy*Z0kFi$~D{sye@iKuurn>HHFs-o48dMqSs}l4HlPH$Zvw z4-x~4XTLfgWqt_G+Z^gQGxZ8a3K(c?PQb4D${cv}q3)=UXuL{%CJ@6g_mR{(3_N8K zN2zwK8=Kg$XS?!6#Wd@M9dxCM>9)3pn7be}jyCk-#-~G9JHuVMNwr(*+OxWr5bknKo$9I1`b?Wib zpK@9se|>3UufJyf?BVs-!pmQ({@QqDMATo>YhS+lSK{@YnSa$@-<|yz%#Mh+B=pch zsc@e7<&HL2)sUTsTyWVS!zIiO7dWKEqZ}94)xuK@62DM7@PhkxGU6hR)o0*ZoNlBf zv*Y3laUmYl#o8da{S#H%fm07pfCDlt3E&2>hT)E+J{G^b6I}uADHo01>Duuqk%tUP zze2)C!4xR%79t8@o9#C|a+#^I7$9QCaPi%_|1wDk2-Ip0%H))J6cd>HZNeRn^a(yg z4jN8!$G$vgmBu)7f(^c2ErCz8p7Y8V0{l^HBh}^LycF;uc_dq{Z41Gvt&= zm}!LU`uVy7!R3gBhG%-Pkr?2D8p==&i4{ogaf$g#4@MJ-dId)2|0@3BlMSiC19U0L z!Bt}yr3J701itNPWWh<1Yb7DnAWxjCN<%AF9xItZ9P=87A}XPV<=tlqSAIdG;T$JCnxv>KAKoOBq9pXcpCO& zY0v9GqYL&{K!ezyJq7y-Bpa-?pN73PvcdY3&t}0H#Q6vO;3T6Pe#snobGVT#?$J!d zIou=MbWoZukiX|R(uL3*$Nb+8Xe>2x5kj?H1qRRnE1Sh z4p_9XnRKM@I6)Qci2tOP!o5P3rU% zB_&9>atR!aJFIr8lRc!jP!3+vT;`5sFPI`N|SR(a{j$YLWt}7B`&ZEk~jd`(PdQ* zj-)uekW$pE9AqRPo}CEXCf6jKqm{|_fI!}?VZ^sCqZh}GE-Pq#1?{js(J-ntA8oOH zk|CZ@oV=Ms8i2e>CqxZqCD&;i!VF{uZAW!!mR0tBVD9o7pkkVZ>qhFsGFaHj9GjGo`bB0XbULhbB0QoyvXV2V%?Sh4wbK3I@#CS=uNN7Emm+@S5`!@qPAea-zNvOn z+4N7|a(7g3>5flJNt8nCY_H*O!2Y{fT&eOY3fbIbiWwu1QSEE0GHUCDkrc9P(TpIKPgqs+}mQlkT74 z>){H!DCz52R=WUXO@DTRAhoPNdoo>D(q9>B8YXYg=OZV29VucS&2cz={_BSN1_Wnx zM2u~T?4eR1UDxN(%xU+=M@RS6%=iDw9rj;)cJ9n|Do|K8!uFz0B7^OYVdOxVTv%oQ zZe{2d&s{wyg(!|^M26rRfz_YSGgEu6Q9wCupksE7 zzb}!~wn8p5Fj5SIj1uOY#4~p|QQq20gcvmsq#!a~ANc#`x+kn(YTt!frh#F(40BjS zoE(7ftZakYRmGW#d`@y(Avcpc$(4FNucn1)I~QW$3K4V39BHy`G+8c}3^Njr83Dr& z=v!mw%t|h^UFXc3X|gIlGnt{jO~Gmxp;J}B7-KvJ`gAd@QLBX~UqJ+~k z--#qJE2d`_Y$ZJ?To~eGT|NYc%Z437HWpc4=*V)I%VL3wBs^5=W7)vebw>nqGC>5T z@Q9$0ZiqneA&3Afk4P_y$QqIbPULBnRrntGUbs6>7w8L_lT7XA52RIoMxkierL1R# z_4)WK)xlKJW-D? zyj1s7KF-bg;siy!#_Au!}M zVv|=u;&+!DcQ0NYsDtgbA!k`AYLja>J+S_TE(xp}$}SzUZr_$ELon10dSCA!kCF+E zBzA(a-B|epVcD&XA{Z6ILd=rP{kdaYGSP~5H>D)?J>4uzG5U-?)49*Cu@)#O#`waq zi$b;2dJ7!sCp4i3eh<3fAxaPYc>+OH8HeNG#CrTK&4j^{h~(EhYO;}ueT{1y63A7u zUM=oY71ThVVPACIb%VTJrY8O(P%S>Ci>A)06NPfqM2%sB52nfN9xZmSB6qE0LoK z52OsdYfZynFQn{NV~>u@ab7Lqyh9Bz43m*i>#R(&Q{FyWQ0kK*zS2;1Nm`kEwdkz0 zA~7Y(Q~#P;rUE5%om7IlWyV!bo(Bc~CyF-EG|QzGqf1e@c5!B7WrM<+H(sUm94#Hu zYEUmX_*y42;D(5Qv5ul4^V#!`aZ;%a_W?7%y*#e}9sBSJIiBOwv$cl zX4Plb>b+4hBaG}&Gl_sBz)K%6P7zXxDA`Sx`@-gMb)UsBX`SKXu|H>qP~xiY<0?~T zjdhdR|C*=Nf9$a=^WvpGu+S}kB~Z_XR5>0?mVT~%U;A!upY<|(bzhfzlBn&|db-9o z+$S}3D_})NKijWH^rjy%9sSZ*@=J?D9nQbC*@(Ux$9xs}zsP$N=q9ggZTP&Ju^D7p zmYEV>j4d4z?vU7)YALOeRT7;sBQ0+omNnnB1gk zorFMo(>9cVp-p?EFqo$IHl@Uv(Azc+F*2E&@7b>go237DzyGfFul23FIkXoc>svr}!K4%^!`VAP4sGm$pS7JI14+Q>IZU zUaPN-M7BkqIJP~q``Fgl4_WEBQ8k!{PJeL;WV z2=9^#t*8o?DR!gj(~6mB{<;6Is_E06(ha@tn!d)n?)%HXJpS_`3~u+aj>r?kTRT?2 z*wXUj6>_zy%FMro7yDbQSJ`-avA<=nDdp+K{+7*-cX+YCWinGcGuoNVW%RBL?Mm?u zFVqh2@M3?O;o+!D;o?o81}DPFStf6i@o}iO6#wey7%#zW+nT)1N*uff<=xVbk%vtpI;| z{1xKQfWIRA8Sz()zuWM)7=Hyi{1xC&kH12Gg_Y;6WjyaoshT|XhCk)Ls0jDVr2EOY zMjk1#sxLbXh9bkceUg(6MV_J^`%V}_juYmP`J_W4!hgHE6pwW&<|*s9rXNhNufEN_ zedf^)EIp1tK!t9kLy;~jyo0a4!!6!=Osl*6{`=b_vRlg2>J`)KMW<(`D*lKS` z=taBTu~M!UEAYXm2`{2a6S&u%&r*zIqz4n{-ALTvq)NIk+ zj^C$0geJkC(yar2!W+KK6s1bUE6aMuf3^z2fMexgqPXd?t7B$>bPqP&c(@qfasXcgvlwB zeGu(zW3*GOKdzgtKH=W@&4myC`u3MH(8V`@_N~P5SZBxG$*yjnn4X6LZ98;y+{RmS z;ne@b#{1xs+^2XhFhk99PHE2$X5 z7uyBjac{|9^w6yN-<&r80X!d8`TPr_fZb&+#q2G7W{jAk^& z_uGrkD_>R0A3yzU$%<92D}KCU1)h+ix;$gf<2yQJ6BLugFL@Q~_uvcz-Dg@Q${&=b z8S-2HQ?Wjvt6gW|plNo0L$UeIq9<3V%~Eu~twW>!c%f;j+2qjiiuGN%P$^trpc7$l zRR5>D^=RS$dE*zC%kHQUnF|&i;>@}{IcF}&Yhq^I0$TTs`s&s0jKdpi9}MW(+4LTf zZfSsLXUjHm1xq(hR-P?%v4W)r6F8pBtVaQWNoj0VtgKEi*wt0At5P=``U&?t zv_`w{y?5$_txqXa*(uCMRX>OQXl<)v(swp)TWtDx>9S>a@^|Rwh_KaGX~d#{skF@e z_`Z%yp!#of7U^;gYJ>UW{B=K=y7A@O$Id7ZZ+u6QS>K$OMq1=M?g?q(>IVum*pZO7 zM=^#r8pB`z`r{}|=V|w@_icS#^^1Z`)HVbjYWkv7{N3jisY~`xRjjRMZe_Vr7I`&~ zZ9Mo09w+3N?kw6V)l1JvvLt?Kow`1|-cWC@choo32h$~I_Aig|SVMuz>=wiSeQt7F z>U;C6B~|U$)2BW5Zx@eTd{LztnN*#+F>?Ck&Zm@9C%nXb3#Wc^OjTdKw!kQ|J|CL2 z|IE%O)3n!U`jd8ka=+raE^g_U?_a7DiPF<;>W}TK%NOJ=wXG0UOO6Sn6MZI`t;@_d zn4eufVe>D%pY`8+O%y0CGnGl+Q@$FRDksigZ#woH$*Jjcs^2S6oxJ79dQPcP(kPCd zkeq@=(_xtMUx#b&zxNYS_4nP)3m$HtlvUm>6`i>xRwdbD@xip@`!xpxq4x$peRtpw zpG5!g?!f9TYu;=B?z_?Nelqagci;ZOmZk3v+<13j?I+RSzZ?Dimf7#|-+i~_yYF^B z{ch*((6NQ(mkkpC2>zbO+d)GRdG*1|ZK2vY3;IFQ*Bvod98CpC=`9i~WdX=co?H!be^unv{vSF|xXc!r6*cUXM z+iS-6J00cagNE4aVG&}xSv7_lvoy<5RAi9o&xxh50MH9g7|N+pUl;2oH9Mpt)oVTF zd5=G~b${9X+KN|wiq~FAJG`-@V}{K6t1HJW1LCKw@{O#3pCGOMWU71;B#S(&BT_$i z>BGCuoK-0nY>Vg>^LGr}6giI`+pD?m8+^UZ?DPjR-b5i6?y%oYaH_b7-^_+NIiWpu*%I;($H|YuVR&b#VXhQhl+}_YaD~w??BK~a(Cg<8uLjcK$y?s z3*6Q`Z#Pn*(L#N;rmC#UQejSe2pXaLoa6ABm6c|b)w)c#RG^>v#2GvfkG@FHBa&S= z#$G^E{0N?o1*EcV|y~gZ00TYkfOjWGk*zxm+pUl|w?aC_0 zD(GCBos=ZM!bGn;&8n2=O{JBNrMlQZ1^lwu$JjpwWwGCcfACxEW9**-YuVDdrg=gy zX0mdZ&MlkA(~T?^p2z{k2^sjZUU!jSC;sE(_XU4y*SibuD17$;MD^{n0B9p3b-?+UaIp{}%9I zqiNW$Kfim~XX5i>k*Kah_nEi|8@;Yb_ZcmyxPFfAvqCJjxGqh2BNo$|L%DuXHFEk# z*9B4f+iyQ?n^JTx9kQY593+J5oVbVt4ZW%)MUEX(z3{q?J;ecAIUxEOr|Ztw7%O_5 zLo!=-k5P7Dq;sg3cML_t7I~JsU(;JGKcF^7wY|C>+8(si49P@0!~J2I+||2(#ORXk zk{#GLAk!B`Eft6OZeyoLTOrFjp*iA|mF|oVXpDz^C!-eU5p+DHvFyU-2Xy5PDALKhhr_>ecO}E3>X^op@^D z8MS4Xv;C0rMA%r78P?+S5Ds;4xnz49GKYF&PYh(wV5V$=w)7hWkVOcPc=w7>Ik}>y z;~PJlT%ekw>@cM%fAL~jm-ymcnVfHCZAoc2JT0oRLscZ(_1;s!wBISUoAk(cehy}S z$HXU4gSSm62hID-6TkUm^YdxvHa>G-i+cyq>c31ow=pfiZJAtKl6C#uKC@)kFCQye zTA%{ZR#8?sujBqHH}qAdGjjB1x9GY4jt{S7pVXyw{CNBR?*Xu=E_x}2n`)kVgXhxk zPU|o!b3avf-+BcVvH(w(KcMuL*mjglb3&3$A6HmV^hkcwlg~`qdax{Vk_ra1Q6z|Z z&ve=8@5&2Q>Re8djSOA8siNHX!4q;%?QfJXO}$ZCkdgLxQ${*xK&2h39`o>r)NEXD z5Q@=zOnRg|JSQqB==iO#_M=<2KIA@^7ON-KqFu-RZ=*W>&cSbEviHfp_ysq$kW2d& zb$fZbdgFW39FsVG_JVEPH&q=ab=`*U>=O>jt~;Ac9wHhPQqKo;rrI@{iddQACBu$E z5aN~!)9u_-ZNK}VOlF>0pQc7(a0jP0yVcKB-_ge1{~W3()#6DeA zV$uyhiy8D3r1N>{H8>OP{aunYl^EMN--I$uHUHAfSyQv0Td$duw>53B`P2^S?zWb+ zi+7>e{D!A?=}gq!PM<@Cnrg9I?MXLQ7j3M2W|r8!zUN7~5*=+lr<80cPJ7BIlU={L zUksw*q0iOl(q4rXUt@ z+di||F(}#f4~tdSn}XTgCSl_0VuX9f(Wkn0nmSG&TY^3XyM9no^1C#g1%SHMsU;{P zO`Cr5ea(K&XL(bXJVRu0fNYaYIuIWx5PSqiGH|Ld!QOA)E7MHcowglO9&y?<(8eH; zt>WpHmha;TT2lrvx9RC=7uU)fpW&3Ic>miTuiNcDlwUo0>iX#(eTV55Ic@_A;d}ui zlqwCCz+764*yq&ZqZ$1-z@&0co?W)8%2HY3``~%eM`~{QLqKU4-D*$!^R12ouo1Sv zd`+2J+c7`IHDyS=7wG#_qUxtNzT5Fkx=Ov#5S+h=_z@U7__>hV+Pmr{HHeKvHQaa| z*z|ODO1iB7mR}SYkc$o?Y)rep^O^MNCo|Ftl*W%3CXEtsPMKa-vOwuTnXQteidpQ| z?X$ikt-ejb`EGPBiQotX;uVE4{8`Za~9!~Vt{*-sbL zu#M~cpX?}Q?3rE+J<_>bol%fMRmx|!e^H*DGT+Lhl%8iy#_)0nL)u`Fl}uoV89#{) zvx`c$kh`d6K8{Uevr&oJnAsn;$Vvstq!!^c%64~4a|564sC29-&lziQ#$hPR2s#|& znm8-%m8C1n=ZrOqv9e)Y8ze+nZ54A^T=eZ367J_TidgIpd~@uEo?KQEzl9{xs2z>s z_eeI&VTt{cXyrt!*joJ+q{<#~=Md@t=2MYKXc#5$p1ek8$WwBH*JN zoKnKg-MMTyOMgSWs8mCP!NCo!&xz^XFFun9X(~d}$#Sb94lM3#^qW~{~?lg$D*ve5DuIk3kND5OiQ0SV{f%?8sagST)koMs8QI4 zjO+3t=SRqfLd=Q-uPRvw`$%}hAv%e~H6c1#f*Nv~R$AqxjKk5C@Aus)>Hl9r`U*{h#2Dxk(s9Hnli>c+V|yy zC%^Fl7C|WlSyYJ(T7@zjV;5p?uhT4kn`cdB|C?A%b>LIQh0G~w9Uo6z{Hx28hxh-v z`ioyJTlJJ`&15!b-L2=}UNtjzJ7ALWJJR_8u`^y0u~v{LzD&py#sku);)x@|!!|*@ zpE~gTXdKZtnj`Q;zS-06Y4Q46J#9h0rMYfzwQwR6&Mp-ZXwRIYb62raGYa;W(;4dY zg5HHhz#G)U$~xo-T3V;FpK~2Eg-h@fxi#@l_;>%UOk~^t11GVUK3u9U z(dE=MTxXKqrWF;bC6UvH@`LyQAvCchGB@MgAd{M`<>hy)th$kNlJmc3(lQ%Lo2FYk zPVUPd%oNG&<+e)Gid%dU^?Eg~#(u)>pTZ_`zA5Z1E1AObxULMgf$N*X?%{M9?Au()t?Wmf zbq4zmvntuGA~u;t*~M(ONo1YHrg0^+*dLj73i2vDCbG}p_#yZC?Z;-xKY#JqmlHq# z=-9Hf&zJn_?TpVK{?#J>^UmWx)qURh=9I;s%TIh*`gzTXx9|G=ofFzeU~5E^)Mc0jfaU+&S9goh|6QUL{_@#BKwKTiLx z2Pt?x|GNiLw8G_<<5q*s_nrI$`dS zRQ80oHt5?t*8yfoYy1_qOe|eqrKVChy?&0^!N7fCzA1b@=Cs#6hzj0VBtEzow zLgO>Fp_HMwYBx>lpWuF16)tdZNp-= zMgQXQxWn4U+Px+O z8@~67?9L7I4@Z}8c<9y6dp68F((c``_GshQ4S#se@-G`||1JFJn&@|~KfmU_r(gZg zHK%?UlCSOF?@3$x-9w?jtj+o9$s23`{?g8zdzQT-t-5E+tLN9;C z(vBC+zjyhY*YCLZ>Zy}Y-P`%=niuX}|JL~<_h$cg=jTnKJ=%ii@BA)w@!l`bX56*z zt#dW2)=hpSliRF%|AgwHtM440`p{kHFHfs^zWU%J>yDpsO51i{YP_fI;ooyG zrd)h4J0<*vA*FA~oZ|ewBW2oK4Jn7-kxXoTL_6{5AIc|g{atrT_qAtJikf$(%=BeU z^na&l;vN6mK6%a0Ws`sKcIV`m{}N4oSvHvZch$Mndvi~udh-sa9xr@0HD~F*)Dnw& z@*?@@mn92)Z!-2q-|Gwqx&8`#)$s$-fmFZ_9IKVGTohaAulK{Xw`p9NRGbj4raB9| zx24^~H#9dk@}7;eW}&(w)=D(mA09;uL%c;xa~mJn5}1|4tnn6g;UUcs)kcVzebowQ zIbU8~1JrC))naDFA?jLrU1q=2CA+4Ti*jAYV!8hMiH4fPIJ05nlEOp_=M|w&LRLB| z(~n|sPL5eZZS?^dn~Ru^hKp`8VrNInu4Pv^wLKhjx?z9SwRi$cO!0oMY4MBvS|gn^ zSu96qrD3D|lqTGh7}}cLxsG{DEpr_U*UX#1YI|`G?W2v4Zdo#gb*%4Pekh%TY2M)R z;d9qu*g~ICqv3ABXAEMf_bd*=@Cu*GU9v;C*d7GI%D*}b3}DZo*&>hAc8nckrB; zmE+KNKi>e8vE3bP2B|mY`}2eOJV;ixEZ#vWrqzfw!Q%L@WL+t}A`-gkPF#(05s%M< z7Z?}qZa?4VZuKOt-7^%n^l18Jdxk7d8Au){`;o-8jWiFC6Fmsm!T||+67&bnofTjO zqMQ7ZX29u`#0T8mhQb?M81S})r~+r~+H%HnlFKQni{gf0gnn8->IX}%Np#|_6E64g z9>3q~=Y!rBkKf%^pS*oy?D`6qOs?^CzjDDzj??(_$7%;Q8yK*m9Yl}CB*5DJvj$of$iyBfahFxqtQcKJ2C~9=AV1xjJWsE7uicJd!oS)g$1e^}Dlq!Ll^&VqLk zXi>&WJx$GRC|z>2Lr$4iu0p(fZ8^?t%@C$gd}uGntp4V<`eq+QMdRpsQI{4La@SneBZ@3wmqoq;W)~0N#@-U^ zO4#j^NIC14`0i$-l3^QbmiDb-2c?m<>{V&kI`&^uotqWN`s&#hnQjAnL+10c1#(@G zRmz8h%q7>gvyJk|CiX3P*A{kG9_e5vMOP;~sPOG(QzmrnV~hLRUWoqPAwjtGblx&K#wneo)y`w{xOgdb7ywGiR zZ*Fc4west|{^kd~Z9xceLFSv7(or#LEY{$DbuMj1j}by!bSg^QcBtJMJ)5|BD`Y=) z(C+aEn=zNzWrqdhwh*3LbyA?Bq9qxck|rfyoLN0yv|Epp^py8PB}X-2n{W= zI_UgPeUCqW#g<&OUD`M|xNyt7|F0ElNX%*=69na*FnLJBVW!Kb;8_J~%b~M43l5qd z$C-3ndiRPF>f0T3Cl(@;DYJ7k!^Mzz1Bu`3p(R_}5-sM$NtLD1%KbeS%PxoxbQ)Mv zmX!AWWbxRFA-AAE$CeWMuUxPf&>{5}!e|>IF%wIX#&j@1iVr2%YD}*O+^xPA4`1&M zwFMIfSZUlM&}Y&L$e`S=SS~=o&`PcH5rYMA3eZR|l)&<4%vrg^Wz0lTFP6V0hzj(P zp&`_<;u~x8W=~6i7`?RHc%-)wHdvmcxqicvgcMJ3?C-WxQL8c1hK%5r!1MM zAa)j?3XcX7BpkaHB(mQ_%4;bJRM14QH*8nJFbGt1%brdb%85TtTsdy%U;}L613q^> zpopZ#No=0d9^(<2UY=Xs<~Sql8Nzv815md;Nd-A>vM?qtQajZgrlmxoLe6lCkUj zC5J{B)|xyEhLy(lpFcj*eh3`2Hg7o^CHF*P(%YnUJD(k3u7CUK8ISi=%c$-+T)x2km zN8n!UPOrZK26@nvSnEAfTi7KV4Z{M`N1^{=N?TmXwO;$rE}hME8SoTTgW&;d@lAy6BFr4i;lgYLE1ZMC9E;zTWQ*1aL~9Kd=mk1JoE@7C9-<3yhf?TY`|E zP_S_imev7o`1O8`c9f)lTXQ{Zh8$PLt}w)@+Yb*e=x?r1XC?a@8)Y{2CJrJv5cD?T z7g(5TZ879RPa|EAQ=N-0=tqVuqt0BkUXy2UX|9Li z;mhu^3}|FMxQ{>29`a+Zp8tv2c=7drklA>#ma$*(YXBV<8OEbc!pydQW0a$?{zY;2!96ZPy01gQ_K?PJI`Vq&B`76Q6 zKHjt0=buGJw7DjjonfvS0djz^pr&de=)ki!PXKCa2>=NJZLoF931$G(97(9|nFyte*qNTaDIS8LEW|?KVjIL7_d1;T_1rZc?CmNaqKGMk8 zXo6yP*Vl*q?)ojWu#OE4j_jI2bGO=D1F7gFKYK}D{HE})h38+yHWFBXrULH~T!PSC z#=esy*;3K<6Zm|+%zkXx3J=t0!Y3K?=Dlq#Tb9j3|g+m_sdogf^NL3-uT$6(t~9jzU2!9IbZ3@gIY zn-qq=*i~fQ1mMNhuO~7V#i^9#N_GTCuot!mcA-7iED-B8Mza9lNS!ZBh#Y-%$Py-5 z2+EA{0k)!jOKY7M+ajG^bX)++VjTK^ee%M7#-@FWt$bKiC1b}@&qz@po{PuFu@B~T z-GgATk}(K#5zY@O^?NtLV1uXUZw<@>UEbH%z_Eo0xDeea!m%NCEJm=o)w7T!vQ_~Bc$v-q2Z zuXGs}S8nVpdx$Qb#4e5uIl};6R^l+l^XE7=eztIj%g$~iT#+x}?{c?=-2N>y7|RmZ zIkZ|A_N@!Q6!I&HSu=nEh*gr@o_-C!EW(!<7poH=a9nX3@l7#*SEywRcHlO#%CX5= zTyX(kE=IuE7xYlDcp9uG@iha~i&J})V<=Lo^0o`VptN+3xYS{E4&Wy!6qm=d0Vi{+ z!+5_O3zNno`-T8@;J$Vb@Sp~W;~M7?BYrl!w*-J=j(`xwpq8-Wu+?=nwAjW>>}hy` z>ldNfqBYn{Q&?oAbYxG4h%U?*e#?)2Uov=Ra8CxD*cFsI`ae+_T~7;0!$qJbuk%lk z%GeuI8NXHtDnlt@vj~UoCa-q@LU9xdL7#8&dp3qVz)d`XSu>z9>h?kIV(m$z0Dlg( zwqi|y2fBlSSzwlKobc;_xr-!NN_Nthlk6(*HW;omwi65`Y$15(XK`Ml$K3`}lvl_~ z9gSE>n8wY7!(fwLhwF?rTN!hg(}}+1SZfk|O}B$a7Cc}ws20U{MN*XOqcBm2&_2GK zk{1Mca`hoy)%`~2DdK7P_d`)^;PK$58?5PX05aU(ELd&J7L2<x-14B&v(d0?X@ zuyOVcArlZ@BSBlGhyb{n8-icA+3R3xRmii#Lo!(J1V$ts<2E5jf>4jT=C(l6F-A+l zF?M3tRys%snBc*jN77+$I$1LCmf2?7CL*9LG#tGB_^0yZ1b=DPX?3mUX2^9sfSSYtNyXN?($xJd& zUZHn-dfSaJt9F9xlgy-dU65UC1gT@I9^E^BwF3ZdK*-Jii7_D7C|n%a2pQ-B(u;nU{gXS3az`!BVoUL;ef-5^OHI2a;jT|(#~`-=gkVn> zi`WWp6Lw&5eQR?)?1LZ}VuyTm2n$Cc3^dt9T)7Fh7=FwE&}yup3te=0*77YrZ*YA+ zA4Fn6U{)^9%YyBTXA5IVT-v70{^+0oC#wC|Q9-q9@F=d-e^EfSe@IV2{9vB)(U@wl zhQx+ywE4e^w+Hs^LxNUeKH#WGl6krf! z3Og;ET+Sic@i2g+F(?N6&Ao-M^8`0}fW{+|=m{)K+)Ixf=1e1bZl$@ILq>>8a{ETb z0+LR-G;N+nkEh`)SLY-y&(b)N0ZrZqHd74p_YsF}DUOS4VJ_&Mh9o=g9BLQfII9gw z@^KIsvtQNjcfqeX7sLP7Z-Ct%_X31LH95(B(N+{EVYGmV?zUuVr*~? z4M6p}{TpEYOEZm5{9^aP|5X}__U%Ii*kmtDBi*9W_8bK-Hn+trG^2=Bc{b6C^K;AA z^98zj_}If~ZpD)ngmRC@;coK_DweQ8E?ba6+L5%N!&p&7T*(|%gP{dZXdGZ>X zo0@}w-XLa>85tTKC=IuVVTXg&ci|R}^?pyH5z?e!IZ4j%$v%&X`OT(OrYw5}BP>{a zcPi6ur?*ALcf+$!w+mkv(fc`KF>bFn=yZ5=$9CbvVxtauaMq$6xNfoZ!2gN)q}(W& zPZ70<{Y*Ithxyg2kQ|0E{%gEoJ|T-~Q9Szka?!}3`MeZHviyv5$O+D*C|ht5wweb^ z7hK;=K9Z-UVFp-&fQp!2rbnI&4Fvc#GyWT%&|C|Ea} z_3hN3lbw>Ow7}AP&eU-1L4F0;oPP*wt{!k=&0pZHegO~RU!TEzsuS%_El!{}wx8kH z93D(VHX-EDEo`{vGS)XX#-n4|vEycvM+_{a;>KqpP{Rp?Ij;NQ0j-2t5SR^yBg;Wv zH$vXWp>z=@+XP%4hGZb*_bfqz#0X$InZCQY!Zko9W~s-6EHvGTsPPE++_G{ZLe4P+ zAx0H>JQpGE&=e=&%!b&r=Yh~cQVT*pt}T)h;ilM-Gr2p*KtxK&fMY?HDLq_Mrmx6^ zdq*W9PN!@%UChie{R6MAegg@R`WA2fhGlS9i(H5X3;-ok8KJ)*e<5^XK5CCf?OKAW%sQ|hY)KBtjB`q zbtlw8!+8--?d2;xZHWJm8OXKS#W0un`eCh}<&@n>H7?A=(!6xvLkfnctj?rnz%hBj+S{9^UuOVreV;bodH{h><+jTe5DPY*~Kc7xsrq$qRx!Gt-Q<$k6o}b&{;qncgQG~ z;gpGTuh7s6Z{tl34M_zYK*POa{Z3G1&&V~&8K<#0v)ySt3J*=kn*n15`M`P*M_@7J zk*AAQbIuYLA=md~YhXDHdcL)FQA5L`EnDKc4`KL1lv^5$JDnEiDW^<83os9ZfsczR z0bE$Xtf<4v9>=A<;!AsA6M`&s%T_n!kziHKW7b0Pr4d=oCJ{kn4bcdT47{TmZ6NxD z1l`@d4rriVtj}n4$&RBS3(8@W(9nqBVB9gQ!@lOdZGaa8V$}&?IKr-yUmF^L4R>4Y z&XrY`Rp=>BmxO0%1eJ|C{+@5I!~Z;OxxfNen=XF2rYPt9tMnp04w4u_WTT!(MAFZ1 z@N6M_uMzDE#d=3^1x!jCkk4%CwZ=v#+7;2UuQ7OqW}3%p>%}k~5scd|m^O%mRpe5K z#ZcSOf7l-Jm8jiL6j1@14kP$AL;*nKV#r!(Sx-ZAZ~^m)#b-8WU(c4P#DbB8jyB=Y z*@D;<-3<){RC=)fK5R1KmW9sTT=22H4!xmeAzzM;mVh}aPX}w;M!lAav%1?mfyP&0 zlme=Q;T0G0cYC&AXcQ~Md~=wuUM#A~-9*vJp~f(TE*dT79XMOJ&g(^+wgs#M+ff~o z>WP;sjv{0_WH~Bgw?PotNQW6lX3JS*hoU>1w@Jf3%C=G}o- z!JAybx-eU)S>VNI#K&<~bkRBUVU8^>;%(L{p~*bf6%Zfahh&iL6u1|Z!Ugnn8}Af^ z&JrO)Avg@Tur4r^+Hf%4)#D@r7wB|gOK@Wyfgr?{jg52Qmw;17gwQ%%xyE*CSHzcZ z1|BHfQ6QaC3^wT=kX?bBB-6XJJx(JgS)c$F~7u^t*%kIcNx>CqvX#b}EdRge6R^aLNi83aM!UYE0BcMUc33pHVJXy|N85 zblXwYE7Y)vw^!R7LbDbq5l;hk2o}h3HA0r@qsCo(Y}Bqez6^Yw7orifP2WrW6xEJ8 zi?Iifpp70>fo%(pBafblvIw?WAvPmaw3TlIcFNB#GRw zC?Z$@?O)YHu#78L7T!H}Bm` zn(HQQ6w^y+j41(TP6W<{I2JgA^pPOT8xmRxs8qUGh{(m%5s2R(24_Ggp_<9#2jC5| zLMs8`_=;BAlO004@j7V}JPNe4i?amdKj!j5iQ&!(wFEpg=Jt@n35ZJpYXT}9(@e!^ zdK+NVF~x)q_mYSkua;nnLM;i}VN4-q0q6aSLTYHpZ*9%LSs|5<47Hca5&ns*B`^dO zQY^$u(EdMDN5{dm33cR!WF;9bC?i2((i70fDksVJ0Vw< z{9Wot&`nS|3Ei}9Ov|A=C?{}0QZ>yRQ%z@Kj0qZI)0ko+=u;5oXjdjajwFR~N{M>A zNhv|$Kqp}}M6Pja$@mqu)Yu4R6Vpo+EEiM=DVqy7DW>F|Z`Mr06*1*`+t)NxW22y& z;9%rRPf8N1>F9XXG_Ko(Zh8|%*@WmF$G_AzuA%H(0yu0zkYn(Hl1l3M`w1--L|d{g znml!WH$XWOrMXF6Rqp~eMg9wQnN(HSp)qI+sxhXi&@LC*Y)2r%zNV|%a4P0_RVB!7 zXeyJ>=l5>Tj|=ZM2xI6f)jwBORiW|9ij<2O6VSqHNa(5_+#0%S_D#wPeG1CzQWPtm zR9H01uPQ7edQxLSSBcLkptmki%ecmxO`7eWsjQx%&OO&CmQxHPy)nqIEU&5|r8Zt) z3H$VG3ac%qui$Ft4vD_5ujtT!L0PqVq5h$-sCiOfU5iNzC@c*|2_e7SnpbHPsEMgS zW7QE@Na;;kE=|9&7$Ic=!UL{8oNWY(2uG|6FyoT{2~e^BZ(lH$GQTSyASut-1g2wb z7gMINS6J6X_73Zt%syi}C7Z+{QRsGVSk3CWJ`IjRP)=trQ6bl_Ip3}93(h*5-6HCn z!zx8x*?1YIG}i{cA_RkTt|u@L0n)frH~I=?=p)|j4( z7cN?R)$fJ++d=pk1-Io0Gw8e9hn!A|-v^OX7HZ94N{L_NgsQ-oCceS%g#-fzwnLs< zjK~}O7rq?eT`MxkK1P^j`1bgOT+y>*Gos%nF`Yv@3NcgWZmnzfA}$0Ysj1DI9-may z$(R&%f*`x@`54(j9>gX%6bBGcKsoN^YMBI?Ux)gqskJxGbXFNu^3*?Ez55tE9$ z^sG!gT*N}+zT4Pdao-YlL9ATHG9@}QtCvKUvsWa;E0NsWSIy>0`y6bYROw>7rI9u4 z4QXT@`$F1P$8MKd8`w8w%JuArGF=P%P&Vvii{+6JdrWS9fc;F~_Ye;1>)Of|DTa42 zk7D>y_JX48+w8ictBa*i0F+MaYjxLeKqS1BJR`nry{CRdx)Ae@IxC>JDeH#nB+98~ z02n(Gd%}(2Vn-8Mh}Rk*YFt+aDF1+9-dHo>d`Wj$4cya$Jpu42=tUGH)&eGa907_! z?Q;D&%h1adZGbE*YeA}b!!+VHa=d|98EG6r08DcrLxP!M`VNovAdp_T(gxN8Bu|)% zkO_n#QVUoCv0X;)Mm-=DPeTSkcHMkE>88DsF3 z)#k98Y%`Fb*^aY8EEO=`kAm-7eV8|7T-AMmOG z5nKohIWbXyGFMyN&Aj=l&m9O{g%Oi%m(_izQ%2cVh-I$4+UkXo#ygNs3X|XNhTysC zffJl;Ey|#n!9M_`#)0f0X>Nb0J{aH6luie#=_H&_G7pJ#eck+v@RX zMEE_o2r&y}!8)`T!uN&2{FL#znerJBC_pZ&AAxMEp*Rx?)-Pf_{YN-mqNhyYO^u^r z878|2D|WRWfp)rhHe_5c(Y!`3&+Qoq-$(3%5Oa{915jiHz!#-N+Taqw9wdaNausMj zHm)3?tmV>-Z0VjsV-);`Bv=GO7TK3r1u#A6_aY0(-Apw|nT&Mv-gglQ3zQ*;dwAEw@b;BZN|b3le1;Lc*WP?jj>E-*apdr-#XBbiXZB94I} zA;5LPX&Dm58*7~78vC#f8r%(wk~;v9M_41P!y_@n7R~r>p>Bl@;VmE%fC5p0qkAk- ztsE#;=D%yepdsjXH(w7y>uzuhI|3U5s9Llg;C#r_?j^_-K9`qo>*K*}2DwX%7($f# z8=?(D-EAUJ5ExWjgO?ZZ=dd;m`58^@4_pnb)q@A#Hh7V0kpWc9;*wpGrCv*H5#dr; zmT-jVEes9X9a1`#;NL+lBiaeu1EXpGGk70!vX1BvibcrGFrE@+X?is>y+*r96UNFn zLkPFK>;L9P{OjD`k!p{rcw6hh<%z2yQ)kCys)S_f9jrvkT3CmIJ^}!`XT}bF$P&_au=rJQ2q=O>o~nr)2rND>9AgldQ^b~I zUwFnC(6b1tYjRH&b{c@$BrCbXz@w=PYASS!svzvnS_h5-k|Db{&a9Z>ay&>J;O_6Az0Vzhwg%Gj-}R?OD2{c?7Iv5Dg*Zv*JwL*feA zD1rF&YAEX&!h(L9JT~e95u;zO280Q=A_q*^I&gc?P-97s2XX@Kz|BIyik#qh%ar*g z*?71IOpP@(redkm$-X7E-oySw+P994N+Y#wp3GX$DrLGxwt>`Bw@i0GdsU`vWq*?O zwXu(7Rv*ihTm7s+t_-qO@~(FFpj@|wy&#V~$WF>553#?=BM-B5g>^ftQ4H^7yA*wo zv-66+C)unCk-e;Dg06>kPZ<6lduKxAX?AsjZal^B>j>MD8hMR9lWKjPy`DP!Iy;rB`~~~3ROOp&*~H;~ zwsoTKE%v90!*8>)Nxlp0N0WyC$Znb3H^}auJUqm9PS*W}{dDs1U)hI~yFO%-rVM|? z3a0d3XPc&U-C)m5>HC!ZYKrv>_O~fY#-%BhB5tX2Si&_^RZEX@cmnq;Drk9I*)@fm zl@>|o?oRV%az9M-&E)=;=9|rxsfKg7tt#Jq?j4mcpSzCYeQrUzu8>=qt}Et#m>yZe zy_4=+#!XXqnYcW4R~ffX?Xz$j)xPE2LA7!P_b0V-6(`N;s^;=CbarlWhSI@RW<;Fa zk20+Ha35yqYPm9vu94fRiL`O^GIb&Dk<7jaxU-qMhqzBNhda2usa@N-d!`QW;vSni z{22GjROPq1vr~tk;J%pJg@-Ck)9vAkrs?)^tELTibFI^q-{oGJ=6jm^Y+B!bZrb#| zA90n_yPoAj(RsdW_4N89BkZXGZ$Dhh|28 z%^jTC_ZIgbGj$Oz?H21khV3;oHeJDtzB!Cl%HwnVcBJGr{^D_Uj45wBLDD|Fu%sUH}aQWxWV_7z8WW z%wdcClH(LW#~m8&6$re9^bm01M7&}FRESLPh{3Ejb*x|)7T}n8(RW|5WOl+L5W;G3 zkdR)6Y}+^>c*#LgtV~!b$TG$$3b8PqiV9ao$>NO#=}Z)in}nnQV+A^@Xz|toHYO_q zSsNo%9&`zjIG92(TPQCXl`n}PoJK@pTZ+JuRo>+BQ`&K+Y**N*L4BsXsflcK+TELw zOoRg1cKGDkK`^ys^h^Lsyq=?bQI$kB3$usUnYhH zD=P~jM~K}O-k2Fh@y1&yvjJ9?Oqe2WTDBfJ*7a~0U{?bIq~@{v@n(0>EqDqp?G;Tw zXu5zM17b^gIfla$K$e*ZrCHiVY=y~=V{ca?N3l6T<;H+2=?Qz%OCuJ!fHAr#m?h8< zKt;|dMyAT%gsKI23PREpq+?mLpQ>5?@KJ;+Ry_P|j0o~^JslDBL|)9iO9tM78po|x zq_0t!3EIF2x1u>_L&m2xrjSIiS&Cvk32b2#QltSJT^8blrK7SvhEe1^xuQ3-DMe8P zHqB(d4DFThPlu+Vig2Q2C1kgu6h6@=A0%t`qv=vza2zpX9APmyF5x5nup9NY1 zhyX541_1>^2<|swxJ_+B`6%i}P9T;-X^FyBCVvyEI8fLFqY2E0Y_p-p{xA}M1uiA! z&l9pNWqo7r5*$EOmQdQclfbG(jxWE`4QAhrJPyi<$I5^)g2*r5QGr+mScBNc3Cn3S zG%*ZwvcQRTGFa^ijd7Q(T*#VD{AdmOGlZ1DMs(IA_~Zh79|}`hR}E#0 zRjoo=Ku!%MtXoVg?B&RK%!alfb;|Xq@r%A90q1Ut(-4Dz7eO{_inRqHW)JUjHwW|c z^RWli=8O{~L5KJz144LoU_A9Y6G8$(7|PE(a&s$N>_LO@w1gaOAgO}zsoO_&={5c2 z<3tH?Ub7UyK5`}6-LR3s;+12|A9H(+C}0D4NdQU~7ALb2z_%D8hcfSlODTjzSHglo z{lBY#ydCmAMD*B1gc9ZY3}=&z%A+VoM7DXEurWWt@kuRwC7cZK2CgroRTG9Kvz7ON z12Qe-#f;eyMlnqI0N;>Xj_fp{qlAYbWq3xSeG4ibH;=cVW{?$*3|?7Q_kI1?G;xzJ zzUs)0q8a|(2`V^f0`3r*-nOf#b3^np12RB^1&fJOmtfh$f}18-_Wl!5t){=7qb>p9ipZwa(uR*JCzi-}JzPCFnb>b>VWv!F}uLH*8=tq()C; zIQ)dZ=Nk4KSxdqM$hFyqvvc;5dxIi{AbDpco3k)sm3Wb;*k3~EXc*p=@Zph6ac z2TR~5hwn3DDzQ-v>0|rAPa72)P>`I$gTLW!1|Wu;+pi+T6ce-O%n-77qQ{=bp8K#a z%S|gBJZxm%O4&s4_u|Bd$5ll(dP8nPMhMoUAK`DlyDgj#KL;GSPh0FfMf4mH#R-%z z#H!pV#Pv6mp9?!0DCQ`dfQ^R+1V;_I&sPPonHVzZjly{zPgfZZxWrKzNG}9YtT*|G zx#;yyMEf$K%SVO=h{KLRlP9?ugQg-EkAIQi!QnUuqpJzIinJd{W*z}ngq?{z3UAwz z6u7v8cTJ^p<&9LX<3}=Z$-c>%#$usbPkv_Kdr_JrijU!dqS(X%A>EmeJTLg3xU(6B z7|kCbPD?_Kgr+A@z?2P*EaRcREoOA;@6lJOC}r#KNRwNi4*X*o(Z3%IYGRoSiti z6AL6s`tL1f#|I75!0ooU9yKsRjkKh^=22 z%mH7>1BbmS1UUkW#Rrv8z`D-KMvYgpT#Y@ji{yIbYTjwNB0_2r8Eb$jP@;_Xz$;^} zW*!g$CkkQ(CsUvVmed7i0gl>@Vs+34&@;KIR{#xx6RJLK#fSlUxLfAnw1Pi5V`u^r z)O({E5F5T=n;Xf#6sRA%)cYqI3)DD8u`N`FmEZPhYaqW~Q04biek*8?-SvN;EgKdR z?DCNYpHFK{4s$Ce7N0UrN_HH81pz^zNn%C_bGrRaUIgHX00LcYLq-kqIEHLQ9si%n z#)Yw9_|g(?Cy)l_tv9d`>GpLk%}C;`cMAYAn3n+Lf}2cTr%{l?nU?54TxOHC3)vw^ zY+y6Faf3ICSQr303$Pui4uS45cuEfg2fwWr3A3y#In0vfKZLiZx(RzanO(^VV+?8OL%Zc zKDs3K!fBht%RR*Rs<81CtWbgLJwkam4q1R*A}~FQbj&ar>CRM*5Ho@^*zf|xX;86Z z7p{WVZgBIhWC%CAaePX5zXojg2UI_`#(K$N`+sNY8HgH@)F6OuM%>OscCZi%ppA~z zfqYAkS;QJ*Y2kV=)s4rjVlNVh07^HKMLbG^=2DbQ8c<=y-;i!Woq+WTA(Jwk=kc}# zX`&*WAj!mZp5VWrT#a31$EL8E+%Yw~pR1h;Gy38!Y`Um+4qGd_IG6oWbS$5##m5TS zdhxN_*vn#eCz~wsiEze_m$!H}@d@1YGAYo>6O@Ni1ASBrHf$01`iB1cxy4ALpTkW<_WW2&}c^i zQu24eZYPff1&DX>D=VvP2=(n7%$6QU%23=)J1(Xy&RFmxmIPRaiDJfA$JufyWeyVy zfDMx!#uvuxdKwduo~?bjT&L3nmvI!g7kSG1bZVG%Db@5(**l1dBLbw zPRPA+bO8Mdt`q2sB^0Ix>>9bDaqS$%ste0F+Ph!$(KLa^u&2cgQM^BjB8%7@abF>8 zqBD7ZB(~nc{wB7XShYl1!M-JlRI-zjzLo4_$#6BRkm{Ulmvne7J1N!O$3Bz#>X=>T zYht@)%4YV0%-X`la%+eMo3@7s`5C_3vH%xms7oRjMOqE}$M>&Ye~JY~0-$T`sPN0Lk|Wkes8@HE{Ks$a?OmM%TuT0c$n| zVEs%dN%=9{p2`X-gh*yQgb~a^d92;Q82rBzE&>duIA9a|S$2GI$0bL5_{*8ue^!TNpou ztg75)iXkYayAaue-$HhO{{cqwN-m_5*1$_f25jOy6)Ir?I&uz?KiG8^6i~H8xuak< zw&7y8u7HPAiXZ8?8qujJ+3txWjsPnnIU7gxQQ)%O#mLI|Uy|7}0C0fMI%SA97fkM$#t#E4sylI7PB_XOf$;BN+h4Mv5 zC$e_?p~QO&1(kq|lu*3(8YSsU!;ztAI}}ViV!??TCO1V+5(GmPGU8wY79!7b$y^!> z3{x2Ss3Z%=B8`=cR>7POhI~--Z6U;|P67p?;+$Ub9@GbC!SL92t)W4p7ao_g@7fqA zSRHGuF$#OkPGEcSD(3Cq+%oa4vXe`r#lh;kBZ zEkQ3OxtT*Sv>>eYQH!$|UPFv;ae4xPx`n7x0fqz4T`a7;p?DOLON$G3L#$R`R)tFyU&E6ppt63W>uNE87C0#>VCVj1k3GqPU5MLTC9) zunnuqE9ODI$1x3?B4#=qdUJ4xXzv-=f7S8ZV&@>SP957>vPAIs(8qDdEe1^GCj-}T zg$6CTu3ouKbERJ-a$!*}IfCaU*d(p3FkV`cNY=s>|^Zk6>?%w1NPDN+#m!Ys?u!jZE`qEEvQihMkXVd{=|{6i6Q; zI1k#j-I*)MMwx9yp8-RcPGv*qM60WGFk_Y<+kftIJS3AhSuB-h%keaidB7m>e5@Kt z(ySa!u497S#Ccy|$m+yU>oWVDKrpr)xE>wo)%D0OrSCl+;|f7Ill1rcny(5hfOs{$ zZ@^Le(HLplxpLJGmu#DKn+i`=+IIjORyY%fxWxp_b9Ks`n_KQV2%}+qlK_uHh=Tl@ z6gWZI*Y(}`J4l&jWDmtd2uRtP`PDaCIj({LH5*^VNC*_PW z$2*L*3oMCgXPkqf9-nehULT72Zm{k{?v?_QTH7>Xxy=}dJYXTaGW)R;!GC^lL%xSD zScoEf;QA1A&szQNI#C9Z)+aGj!zG%EJE4#nQmd_RtwYxW5lU?AZGuoV&4gGuu5 z(e^0Lk1-DXBh0Ze>rqhDGz{ozA{5{q%o1IZqRw;Q9|F=q%i*DO3Ei{E)*OY>h6xkx z6=UjlAooz#-T;YB8g}S`dUqZ>2G12d8%4klI-ADmeCW&9ENI0#M@@Eyq!iD4%@{=3<%D{l3Zo}Aj^oapzgkggUR9Y`y*Ql#G+74j zthh3M0lTHKrOy|$x908}2;{ccI!7TU^yIv-Kh*a5*Uj;!W4&rxeDdfJ%nyA~{+a<=dotMV}I zC-JS2FKGM+7Q)VH^8R-kAMT}HEVw?k=W1uL zOWZ}C=|v?utX*_$9{ah-H)dy>k&T1I6fd%D6GpZW9G2To2-xcdWW-S|EG6UFyqjRH zI1u+GV;09y;0%c<*>iwX6Ad6bVg76BY{Ga8*kH+~1sFtb#n&$ANe%@}9+!7O7p<|WBJ3NN zdF{eL{5a?e*gL>QLXiM5)d*Q~Bobh$38$JkiI6mV0+(X#C>Tuy0JfcMW_*pY1N>8r zF<%%jcoe~4=;hBBJe?Q$Ms8Zc`;X@=D8Pd-eyr88r`f5OU!n(Ul-!s5)*ENu6@3xH zv*>@a8c(|KX~W|~BtEHc;SAwf2V-6QFWTM&E~={kA3t-4MXw73jEY)uk;QO<85m3} zWmttm8Ck^oRt(~nm5zd%Jr#pX+w&BI;+7R8F7RLvQ?_S2Nk1&xe-%t&2SyO}Iu2eEZACSI=lM3UhvRK%Y*fm^O7 z@Q&|s_Q)!U8s)CVmoloOpn-w2C}?7!o`N-lX@fr~*v7!g80MvA$-l%r7%v|d)tOnc zcjUTb>Q^E=D_G0%j0Ls~j15i}qm4 z$d}rgfZ84y9lU$LLqHM|b1x+2P9)N8RX+y}V9L;9j4zJ|l1F+WX_1i75fyy(Ew^Q_ z>_q&)5BGOUGqHcKOr{yr^QS{(@|QLP9avRAhmr5!`>Nd8hRVbOLO2Hsdw*d$JU#bT zb@Zl1^t#@umNoZd(x}cefqb{@0MlHPrpS*4KGoQcqV`s3LBGf8Gzw zNJF>CT`Djr0Y}rUTnzb7E0UCu?@!qgINE1GPao_l<4{|E5H7yb^v3N@9YphO7DAgV zD5$^*L;@c~K@|g)6x1nrX5dW}Y+>Ln6tplU>M21Za& z$G|8G8W?yh1x*YbLqRhG$5F6_fiV=cFi=H71(Qx3cDue8Ug&@KA8MD=$EXCdxf+~W_84_73XyveM($PPjsp7sQA11Ye#@d9MM_5PE6@syh(h# zGj_B1OlSLMv8uCii&)dS_(gGdXY5w7yR+<7QQZ}~UA(ueeW&SR3CK4c5Z<#Sg5ZABvZ)WzFKvw#0+tBwOM~;&R*3!{RDi#V6u6 zTg7MMep}fQ@e5nx7vi@z@eA=MTho`~Wn0-%vD=o|BKGeVTf`yVO<##&-DStb@!g5X z#Yx@baWSpC>4Z3=yX>TRe|O^7;)C7d*W$A7rf`-6?I-aATih({9)G^SHf(8cmqo9d_JO#}R97w?y z22vU9urQFC(GCSPU&qX7hl+vJjCSZ4NX=-6fq~SFc9G=Pf8NFZ)cu!ns&3;eZXsvipe9?OJJ@FN5!29A(YsLHGKdndK7vHc}d?4<#2J96N zShM$vA6t*^6~D9wd?+5XW`8JtZLRoF{LXsxL-C9?V4rx+n%FD`*+LJ9qiszG#mP4D zpqOMUJ0woCiHF1))JE>Hi64nYw#1Lcxwf*8#Yb$3hsBjP@vyko*7S*3X)F6weA$-x znOJWVKNH`wHGTg7qZu{&AxE7;Eoi-DM$OQ$R%jsfZ5^x$Uz^s&sCcSQwFa0;^JoB6 znN&Pgrdp~@DxNA+EmbBJPnD_Gf|fe#R&FCy7E1mSbeW8}yp?+ZC_!K|?gH}`m=L}u z11l7M3bY)-|Knv>RzxnQSqU?!cM_at6c|l-De%1YYG5Vz2|;jyeIixZuH~AdN!M2H zK70XvAytP6n9`GQ3m~7!Vm7C(J?0j(cO^B`n2lD?Q?{uh)hd9H;JnD41VhpDGF;m! zFi=iGEdzZisAr%*1&s`(k!xoS0|!vBnSp~S*v7yB3KAHDo(}}kmnjfTuW8w}Ar#az za2N%R3>;3u8U~J}U^4@6reGTbLn%mL3VJ?_f;4vOd78`Z)G{!Vf_f^Su>h!-(eu&t zS`Dr#AhRZVh5DJDZR}<&1qm!l#m}LjAph@wX(#7e-WC^IL*EfgtcCB0E3DP;h-KEo zcg3fzt?!EKt<~>|)ii=MSVKP$_gD)*5Z|#@e;_tlL-&dYt%ZBV!`AA(;^)@Zz2Z?C zWR6?Q_K7#Fjm_dMwtxd-l&#``IL3DLfEZ)TJ}6GGRU8y=rse0TM6F|oVwgm`y%=t;4lyY-}4*j@Ow_)vG~ zH)2V5;Wy&nxsz@T7!#;|6GrR)=wG{A++ z6A%(%j>w*mI^&fBm*YSXUt=j>F=(x#fC_*>fjBU|oq%aAGoI}N1F7+B*D{bA&vrcn zsqt(#GLRb2_8JCK{*{)?EHJ|Nz22%6cZe$=e zpY1gaq~^1|nSs=Nwzn~mn$LCuz1K4H*)A}Unh$&my-LkzyPkogDQILMHK6S^3>-_r zW(HCt+TO-MYDC+q5ovif1^;hGB)lh9Sr@-2ZnieQC%$BDe^0Ej#=b9Zw>G{n?zXnS zFPg23KM?m?WA}=Otc&-GpI96BiY?aI55*JK#UF~Ntc@Rv-&@;16x*z^`^59s(EVbt zt#H3M%vQZ$9B&g3h-#X+CD^JDiFeyt4~f~f(2v9dTlGg`p)K@dm{aS=Vu`K#uvlg* z{6ze_E%Z}yldbhrvDQ}onb>G6{9OFN7J5WHY->Ft9=BD0A-4YCEUCD=`fG7|05&4vA_9>NEbr|xAqZ}mmG_GT;fk?PuKu~KI@a)R7$#Jb&B7wmQ;rRN4+#~7t> z@-coYh_$|!WRtx2*kZ=9czsT~k410HxU!x_ue6X6q(#Zg@A(#5OeVs9zN zVti8bSM+0vB7V|E1g~ucXZOIS^q*|w@XpM6&Dx;#vmbSo420!q?^tNJbpjEv{p+K1 z_ue^HZSGl0vm3?>V;e7T8y-7WO**7SJIvP6gGSeY8OKN9@YPZrIY9lTYuNm^HfyX<}NK(92--ZY6WOJBltppYVO?$0Kvd2&?nT{t`z2T*R3 zM%0;^dm(1+T+n;I{lLliP3>3C0Lr-_h51>O(=5uK(TBObcW4R1A9yv3IoJGRbmS#pb3xnzxB|C=Ak*Zwl?)Z+QNQfwPT zgpFa4_Sra7Rpiq4vsIA~wr>m5;H2EgQ9}9emy%iqnbsM)QC!wpy;*#@Gjyx?QRm{9 z#T%VRYsAPdu~yvERkmBa))o4Om}gCV8@aOhf%vU;F+FoMcE1>6Yu_(M(C~Ukck6L6 zrMvosIIFwyq^%G*Zg%dv5vz9HfStQ;r1ad#+Zq-f^>lk&M@-FSXBEqF zExG3!RSHW0o01<7ELFt+y*=(?%nB(7Mg42t?6}UD;Jb49G0#b=>AHsLeebGt_xOme zD>(zkFr8dmv#J9Vt?NIg|BU!oaptkE-Y?!jwX<@G4cPkEvv9if2T=9AtgF^|xd!JAZ*KzE zHT{S1$3X7f_*f|B3Dg6rVB45qxQl@S)Q?DQHHV6v%JvDy!N}lQ@4YlF70) zU;AfF3N@#yO9vFN`FLg2uQS2hEd}eANNPcuQA^HR^3FBR0vx15Z*C>h^)_EuUL;v0|Cw)ahj(>N#14a7^ulps(E zml#LlaBmrTetQ12TcuK7G;``SZKt(?S_SeZ6{`)@su)OX1GPE^Iu>)Z0j&-E`{f+? zM*#eG3T+(#VbE_y&!F0z^*q!S>75{yG;y#vA$q+_Jhdt$TPmJb5o&b|q*a7k0|RLl zq1MDeT1BWeGmushYFijcs|d9gdN8_FE53^fm|j%4r2at9MHLb-6;CS*wK@jU%0jJy zfwZzvYhoa+EYzAANGl7qEexcUg<1;(RT!hgbH{%jzfbbq>{?Jx{4;9PpA%B`$CM}? z|MxBz)w|nnG|dqUZzRqapT5!bpxAgL_7U;=ji$xoEq{iVir@SxmWd%9g=@u?9f{A2 zXFEibIHhy(M)Bd!*iGW2o$Z^%HJy!{MN{YEE#ga^u`h~$c2?Agqq!`KxL-DjVbf0+9 z+PY7?YOQV(MQdTRIKWnTKpbl;JoLX=PO;Qav=z391G+=M5{GrSekF!?S058&y98h{+xCIryIcO z2h{0Eou1SgNWCtoj*xmX@aJg3Pa-gg82NrizQ2*@jr;&3KhVsN70BPr{5Uf|-pt=_ z=I=1^%_cqyG>j4rK?WK;*T!=eo@?eCbaIZs(gtv<0UQ~?DF$%O{kfL@4K?xxvs@YP zt4#5&uL-Ja@femsCY!MkC(8x0!pz@l=A+E~7=b)$=0|JQX(m3poF9Z8bX~)0(8?Q# zyg`sRDC7+)c|#l5VBs(t>0iBBBG4w6hUHJp{6sT9$;>C3`6*^TiOEpqA*cquyul!E zXpuKG1Fuhm%BO+&xG*Y$d$DZh^UeG{X8v9?|A3jl-^|}<vU3x!2_yJ7A&ex1k=tJ9 zZ^BG~z;+j3&UyD~x=g5fxCL8K8l>!JK|DXB^BK22)~sS-m0n=V;g52t+0jUx5Ifzd+Mh=#d14qq3Fdj~F=D}R^V6J5_o=&>!2&aX<@SLh2r|rk-`f>VxTw6cR(yu`$qw2%{ z)vJ{CWYEviE=3hcy+Hmckj(-fWfNl<86=QuJQorO$}T%#OJSr=AUg%J3p_ElQYF#4 zd`exLtj;3iOgv}oFFCCqdI0Km5=nOheM2C71Y#D*>jJ3}$g5_4hMCWC5=bxS1&DvP zq$n+fG?;xGw7v~`-v)zkgVDF4#kZl&w?XCWMg}UPba%%B`9>gL3FNpyP6*^BfxK+w z4FWj{dS+^cn1U7)p8;!mN+P3z9}os{s)1bFK+ZCdBZD~OAkI9HYaYn84CHDCa{7Us zVW1mHrVM0Iy~%^Hna>i))35W>;QqtNB*bW9xJeqBb9^9t7YMt?N3oj*)hYZrLC#U9 z?89lPjrIJ)oYk9^r8L{9Qy{M}vd15FDhARdg=|DItJ2YY?pz7G#T4vVjxY%c9|JSld)Yb45Z1}E(-$%3eqtd_)(a2H}_{I zTpN5d;VcN0uvtaD9xkA*Co~bmAYuq1cB6hA@+J zPZcmJ@Kh=zuQu{=Mn2wMKNvjT#OHVnr49wGA$Y@t(+%Mi__-JU4dt{Pr^6G@Az-=QGz3A#lg89Ak`YGk z3L}|e3FK6PoDj&>gmA_{&J@TQ z0y%RC*Al{M1GzQ@rw`;5ft(I-2-h6KSwb9>Avs%WwL_?8`+8`0oz90d2h=H?_O11) zZ}yluGcTC=a5Eof<|EAfC^H}FoG^)9e5RWC`#ol^LF?0?^J&mKQ!gNG15%f{2qZ&F zN}afXqR<0Ho!+OR#;3vTQ)gmWfPxIA?9&?iE+c%2fxTL>s|G>Kh1kgF8~K?=UgktR z!^9U+7hz^S26~RY#<$MwTi5LL-3s4&fzhC4`dze4Z$Recp^|NZoF$NJ4y;o#fwlS6 ztA;vUp&xZ`v(d9o#lRj6CXY{Kx`PJ3<)tUY3jX>%WyFhLU zBcWmBrgENUEk^!f6aOF;J7In`5JGf|FwH@nDTp%%amFC720$>^64cNlYe49h;!Lw& zeT@fxBmanzUu5JLJGlh@hrps6(wbndEr?U#4c1^z5yS~W4HhT59;D5^BoQ7)BEm={ zOg@Z^4kLoo1bZ|aWFGM#Q>XQ>)A`rw{WUf$=LK&}YnvOsPKQXm%Ra3zM&(Lg(Ddv#n8 zMji|!kA{(zVPr)ZS?D#4l_q`(hT%#;ISYK&P|h%v(+_Q^@v9exy*%DGudy=RcEI0FoW?paRi_H9NGhb}x=a~7q zW`3TTpKs<4JcSIRX zl*KY-3jWC{zu^Sf>&?LBE`c*9{s$A^YT|E7Qm1OwDOz=$R-K?#$D8=afz%bBlybSU zR(?h&Qxbtb+OeiHZ5)w4=O(y;+ z&nYeORi1-ZQ0-P0`zpizl;?bv>wT4bFt<<}{7_w{T#f6{LZUoKl*fs(1TCFegk-uP zYye@sV@iV&_Z~w%NFXbvT9j6uu2ts=8~POHw>s&mY|N~@lsRcC9}8K@a))wzth zXFNw7+_HeQDlDJXf3^zb0T{nP3I+0FkK!`I|L`Epwc!ba(qX4CovTj266~jx`zcHO zl&b+abE_Uvw}7zA<(T-NP5ea@|BH$L)x`g1;xC){-%b23P+BCZtOcsUiXQdm0Pmtl zUlk9RZ4v`sGnYxr9fBICp}$mgaMl&1$^lXgM;XM#J8B><@zx6i>Qw{IsF1+$Tnpb& zLraTN$r05>sp?4Ukj=PDSMsPj)@z|qLGG0olpI;H5h?qltk}356-ZWlbd($suRL-O zT5Ke=-gw4Hyi1PMT0p}L8ZK+;Rdr;6;J>Uo0;xMjEq>#uma%ZaK_Qt6ynu;u#YBhk z!P;PIurN>Cs<(td#XaRvkfeTGtM0E=^Ctc?t-4UFMwrn{YG&dqEBPi5IXL1~iBC_+ z>hXXs8zLS{T*+S`f@#$uPOjH^DsBq`fsb;%4`)Cm$3toOU8L}c2)+$99EYUIjJ%0& zFmVk=uED@5bA70|jUM9GsZtNM)-Kq`odgO5S&Tv; zNNR$Nc%_bnBL5f2Qh}5Rq*Nfw1ah-LLQMQTFzbp`brysNS)D>wC!jz_I82=`pk5zP zZwTPD{W)EK>OS?TD!YQEKznCa5KaY62&gyq>dy%T zvg;=hH^BZX|;?X!0}(f$F3P zx!XfxMZY`ESW%2sYkRms=t;>*OUfHJ20?^DX~BWPo-D2NCO3#!eDWheZ8!sP*7UXW znluk$&HcTIwb0EUQ$Wjt4U+(5=VacSl$V*^O9WNk^sq}>{*cr;hqhrcPN4{Ty0y>j zYY`_?J&3k=6U7L#GN%iy!1%! zO$n!YLZXpSq(BB;kMI<&mh`1WS(&+cZfb4zZUj~`?$P000U7;H%Sq18%1rT`f`Q)L z;P8Na<)Js-ENyU~jg*>v_eKGIH6oGMB?(eM8BukpDs_YB*joBzJ3ZZfXeyc4_$`?7 zX}YXgOwK9U0Mll9j!fyz54NSH1`0XT<3j-97rni-Sl1`1xYXGAR3=B=!`Kv+ZT;b( zMt`5ErN7S_t5&V&hNT?716}=KLx#MN|?KDh*BOOZOYuj{=-F?FKZ}scXT9j z8Psk#ehhuRG-AjJFRjyiGuc8&UYdtK5Y9_zv=Q{cO=%Q;Hkz7~o$S^~*JmSLW{Ue9 z>Af47aB%K)H#`RKCT6<*qB|O6pKWsTrz2!wbIAPZLX?o2mYhG;bF!mbmfhqvTnje( z&B>&;Xu*&1C^RiCFEho7ST zpaEo0&jz)eKFB@hO%95g@X;LV0I-{j!`Jx4T|YD@zn3R4dK1Pd|AQs0@+LS4TW%ey zVv&miKV3Ufh5f5N#@N;;DV&X+hC#x)F(|EwZd zAM>ZhT-7>tW&t zG{+~0V({u0@7)i=WBo=mc}imJqo>BZXLHqg))U)eSDnvOM)-QuOYrWcck~Lwk-O)W z=QVkK5S!4u+W?}Sd(z!iXZIyFMZ|{Gwao1>=tLfJ3(uL-d(RZ?Hz`Zf2Yja`=OlUB z9N8W0-7fV_|LdbwbucYueEPt8fvWw<#LQ=hGvj<9^AFKv0zo0|Y^+3oug z&28w$@4mjXxdZ1tM{V{d1Y1wZo(}CaAzK8HmXqt1zCG(7$_=qFb78 zpw1G*0^k#O?fe|i7~k9{xn3g7^BUG_Z(1nXA?-jwL;~Nl5UBHRhwWakl~!romA>A) z6|%spRQDytKfT)^8>&k4NOT&!8$pYHQbufWNA-MPt-$;S52jw|tCfl#H{i~Crgtl_ z6_K!pO|TF#biu22{)r!Z^4Bpf*w5-gj8FUQ|=)w65Nz>_sDq*D(K?Q-ssz>9$jz%_sG0 zj%ovT0pFlW087IFOt|d^-JjG`;x&D;l|MZ*Pm(x0@W{)jjqxTmfEcTMS-OJn{D?@p z(ClT+yq5xD+>Df4M6BsklT(tiFe_#RDggOe`MF*!{mq*tS5%~XrThNG(XeG{)BXay_RO&!UAzLd6i z8mH*9RoV<348#V43B<-o>^LA#4O-gQKvb}u2pDZ7miHIfR{Q=3s-mK>9i^x3s=RgA z3}2rH%f+asVZY!9asG>twq%iz`|$Fmo|H@bqO42Xa7g2>LCc)2=&v423H@A#v(uod zv?}CQ5@R4u@iLL)A^DO(L8?MZ{IHusHYSzLD7b_@JK9apc1*eB?`cVQBRDEB3aOV= zVT^G{G$TJLHAYBh9ZfwAT}45U#%Y;T(~#k&_o* z*kEaqs#gI@Qc#o_l9DsCGV|_X?SKT;U`Qu9DHr@(;MTLJW>U|EOPN4HZ{3rJTeyJg zkbB*SNf1kq=_!z_2}K7u0yIx?Vxn7&qXX@jox@tBW-}568JSs*OaiqN)``|f7$7mO zLU_(f!@0fEU0qH#SORWZAz>`gDoB2g#Bt_yT|U|=a2Qg49s@y=l`af2=B*(lx@yp2 z@tiKC<>XLqEC`$u1hm*uQo1xPJC!OUP|<0kg=w@)nm*ORZhBS{atCy{JMA7c13-@! zmVnG$u!xS+(xzqSK)9ftnwi6@ulS3ianwWzVdt>0UOCy>66f%qaGLCzE;|by%xFew z;5%<7buNU&k4G&GXmwfHc>-{tr}HnmS)%JNiA^02p}A)ot35KjQu;<2$x5QSi@p>I z6ot;W<1Yb-kVZQHQqQD?pA?7#fied9jf) z(@voZg8q);r;}3*5@W;l^vvn72xumJfm8m1bM9SJ;?PNp`xTZlw76Yi8t8E$8!F)5 zM_N0g2?ZEV#)muY{OL@%?!6>q*SRw&RS`UqOVU%hHIr8No?~O71=H%*3{!yw#4#CE z2$EvwWJ{CaNY*eNj+K!DN{}{vD)rBpG-)M+YcuH+Du<(BYY+55=u3kP&`eq@;1W!g z$r~y#JuPRdWNo_a0;+a8OfF5vnXfQIOli}YJ7<4G05o}q=u(7~{2ZFRNJ=6ZJWxBb zT?0y>NvWAE3NQtp32V>JWlj_noYTy1L2F?i(`hye$+2m1Jp^FadSz(rT2|&XB(M+~ z>?P9?54|!f<^|whnV#jO6+o9IJ#)ky>gL$=W1w!C2)a=tW6z$FbUNrbovYp{1TzFW z)W-R3#%&b>h#$VFtc;- zhKi!jy&I2~bUwDJ;%}XnO%cxQ9 zJKx-zeX!H?($OzFr@tI&+PvaXRep2}vNmx-*Vfvy#IAd`7v9}9 zY)9yQU59rR>bvIeEL_-iZfEGyuF<<%mv+VPsxIkTv8#1O*XmuNk9Qs3)%tkX@m-CR#WiHV*L9;I`(W4YyN`a_wQYBHOV^#R zEk4nudoA`lLG|_BSdt)^&Rt z@3eAn#wJ_WycwHiefX`|LTldJiyyMy`A+*vYs9-1Pg%cycku@6_wQBIT3>v>;x()0 zgV=YhUw+Vd!1|B9jYq7y58F>!k9=5h);e!r#qZXPro|oBLrt;7_CWK|fwq|ai-+2_ z?>~C8?Y;xq(Y7N8vQ@S_4^~XF-8fjCV%u@3RcBlFQQ`x({Ey2Xwj~@cTxqi&u3l?< z>667K+q_RJUa}4PEOD3Z-OpMZZSy~GeBU?_;oFUpSFUj8EX zjBWInM=#i3|1!4SmT)w-%NEoU>)(B$rEy62zONRK>VEFn(U@-i@z6WF$DL@(?B-53 z&Fucy$%>-xN54M$NO$-*g^zas_D$m2?)OfGuIn!Qw)K_n-0zwiy8TYKzS(U$UHD=5 zP2VSe-2Kn*8(X>;{?Pb+chs5epS#=61YGNW2|M3(-`CbSz%KmQ7-F~ocr?_j~mLyYBbu!}glr#n0`heh)orxBp)D zl|Akc@wh$fkEWCMd4D8+V}J6G&~NSA{%HEn{_Y=T-`kJ<(e#7;*FVZy?LL=6f3!zj z3O#3^aw+sDyZ%z>Mf>BI5`VGRT`K#{e&|x-ANKQ?65H*hz13nL(O!1NKCxZAW`Cf) z^@jbi_NET|=Jv!c`@h<&t@f7oGP~X0o+uLqi^z%TmR4V})Y8;Xtg#dh5RX|B2a8uM z)e7;Z%VLn2e7SIlxbSlIF!8y|Wy8hom&Fm{zRRIEi@#oO4HXqv3P*_(uQWx74_pyP zi?3X19V>o!r7Tt)dNna#%)6R+o4EOE*&X6{SDO;WQP;#|@y=^asp7rYn$pEbuT^J= z8?P1KCBAVjG)p{oEp)ng<67tpal-Y&JTdQj(@b&I^|E`!e_ao~U%Ym`tVo=4qk4{b z-;LJ!;^rHP4~gI1NL(yl^dmL=L_a*Od!BwsFWJ{%Zw@1WH+{*T{u*2$9|7bP1L;+| z4@O-JYcQRH7PgPar?dfK4Sd)`2>N&PAlml_3brw@m9@ez_04RvFT6@aG1B+syuq9v zG=>2b%^}*ihM_r4!Dd`F^0^c=vjzt!*v7yQSzCZ+w!34U78?l|dHOqcZ#wix18md{ z&EUq&e%IbWf5u>D8!0u^Fp%yu)XHn#IGt$4}(T&bDCml}3c04$XzMKM}haB(kX(a?x;l<;9_By(qf|32Ozs~Z% zBR0JUjfJ7n0u857QjEzIQ~@;N4RMDAIX7a0|9?yD;T|;qj#!DaRb36E@HaYs)iBCZ zDP>7u;4(ViX4c>dDqKnWZeo1YiH6g$?IhZ1D+}vjbahycR{wouP9myJqOG&APSjbe zKNPpqtt(5rn@)?V_NJdjrMP%4N9s)Zc%Q26UVPwvoz{FE-Gc|v)uqYwA9-CUQ>v+59+m~6r zPrxe}%SObr3dWbOKr9UknXAzUv=Iu(RUcKI2a1=~*z5Mn?S>K9_G|W=pbli%+vNA* zRAGbghvV%c^XcJiO^~b0KuroeDh)@6rG54acJ*R!NU_ZFZuf`vdhb^y&`2r(7_g9_ zE5)qLd(%A275>gbgnN-muaw?52__WsdY8xOP0383d1blPcT9b@!MfkAO^tUOB(pS2 z{I}1ueEVYA`DWKJM_tV8y)Ki-Q>M1FkUW^qNSn1w+AtKe^Y^!zs<0QooDEXbQXcAQ zVCbVkc1m7BPlKI(G)T^zKC-7lzFPw}j~Fm3Ww?ojc)z~^PEqD?YoqXP(;}5X+!_hq zjZ`vLLP3?+t)0bt9!#`O;?Pn@4Ksv^9Tu^u`YZp5Wo4_c-NtZirGMUUy!z*D8D&g< zPRn8M<`fr1UsCzgB=Lp4wmOGDVLa|XG3D>8-;g$A(NSb6fA_`%<4PM6k%k(Y z8=@K~B5de#)9O7VoH#DenAlM6jRQ}Uu0?oaFneGKk95P3v&tJof1LJ$M{jN{v^Wv8 z-58$tT<-9R5A{JffEdscr`&_PK;%TEd!JY?s!|+6pKFITW+s7cGaerSC znn24^Y+323PxUHuhkKh49w0?trw`uQi$$8e)V#?2UZr)d_ag-86D@^#>XYEsj;(=H z@kY+Nn3h39m}RD$eK7CcOStZWRz7*cAFh#Wd<<>~(vk|S}xiwPt*@#y6+!|^7ZiHHZTO*x!BOU5j zw6N$onHKr|hxfa`ZaYJI-By*BR;q|+7{7ew)xtYm!O+n_U$tgPAR5%%gL}-UDt?lj zE>4YM9`XIRFfq)Q99?whOY?$gm;0Sv46Ra^^l9UKBjoU%aR9Zg7*oH^3J*8-wk&(xm@6E z0@cJT<@uWY)RQz(z;0l76GiyzT)@NtQK1!(_$xjNy>S)a$@rhlu&GzQUbM!z*O7t9 zQ*!fM%)_?x@_d%XgL4D@VC*{woRW1n+rOH9xcb0wHk@QK(osQqj5s&%?rk%%Nf+C_ z%CXy6m}B#?O{Hx=`Rt~5cgwI5iocVaK7J%orS9nN z>kA#?5iS3Fx-dnb7=v*x-?h|U5nu+8zVI@34_$cpGTpTj0(A)uArd{@ALG&H1B+(A zq;Z7-R+>dEH!ZKm0u#xI(b7|f)7*bdz>WuU8?mlW{xD*6bf-46uMwN@#3j`YnU*3` zM17oj(BZVf0YwB3T&yt{@$yxiE`jYmTuS52NP9DA{0j!P%G4q5Q}RE3F$fi+3okbo zO?{%nS=4Dmde29Jw}2hl0MH^@xi2|tJka)X)v%ka&Y+F4w{g>Rijts z^)l1H;MQHBOd%Z0LdBYV&4y9%#3uT|+%fZ~K$C)p-jnGO1nh%#`cqm!2 z7W%6ZmtoP94&Bvk_Fv2* zeahyBPWu<=dfUj{zR;PG|9C8D^nZa(m4DLX!TJ2Yut6r&iFnF{cwp2IpTZo~#vfgd zs^%u?+GlRpEVoG4+TE@xo{^kf`6nqoKEbql62muXv+J5mr1b4dcf%<5j#Go!36maj zZ}!qM=MpM%Zlrt52m2C&1pzqQ)6i->MBrpE0Ga-V^B#Wep}r6*AXWAR)NRsR`otJW zOxLdTdhK$-U!cU{sGjp=^n=4)cGEOVGBriULp(PPN+ zqF_Nf`hfzEFB?BwKzL+n*s)kKK=6xo$Ic86Bh=;OdCIKWZG;&ydJ>t|r}Mo1vA8}E zVh-5LDQ*%|_`9s`zpsH+aKeu6qVKZnx?lJ%w4wX^??T_`{`=|JrtaImZ~e4e_CxlG z?x%kc&vX}@$^NDLt26DE?z>xKJG)P|Hp=XC+d>2EkN+r!+MhgI7Gs}z?&uwM;e17g z{rLI9YX+CJ z_KIIZU$S$*Htw>o`Zcz}-u7#|+5Yrzg&){uzb78FZ~8s7#Xk3s&{Os={%HTvzWCD7 zU+sThD!gJ}(%xjXpJ~tL#6^~h0b;+)WkbaeE?3_yp1UlL5?5ZS9w#2Za#SVGx*B`C z`1{qxsiNsx<8*P#_4b+KE7#la6N7KG&lT%##4Z-^{B!Z6;+KC`l#2`K!8-ry2z_3> z)=^d|-q+dmqIkU%r{+B0)%2PeZC(5>&I`%jCt9rS2gJv1ji2D~4pAp3`&*{S2@z89 z0ZYhI>+VmeN<9eOu=pFEOL$;9-PoG=8-JtwNPp?`=`EGexI`la_P8i`oB^?_BKW7Nqs@V{yU7(qAcYNIN!z6wbvc2ZHnlCg0aZE8x0 zD)_F|j9Cl8F>W(lg3-`4rY(D=xBGyPD|55szd&@02}wHVcI5n;7q&l|Uo{mT#R zmOjm&alY&aaBeQrXwnakQH`5>oQ)y-h4R1zY(ZWX`|@~fM!q{rPacrpm`xL>^n=HI zcdJbSs&Lu*YR#$H++fvx9D`Pc$fu>V{^{XyEwn$Rc<}kxDMRRqX*wHnmF}WECH>s; zgftnXh~OC^*QCp5At!zH9L*Fe_j&2^`I6it(`)BrzL?y(*_yG*dx|v8w@W&sl%LE`$<)vd z)SoB2W}U-A3}6X)cRKX&LRQ-@%~y0emXjXL$8IV$`uQ^MXqzPj8x3drvz*28@y1xq zJC8x_b~Cjz_A?c0V$*YHYp|=l{a(f%CV4LX6IyBNXIQ9t!A%Xxd}!dFd6F8w-lK*F zH#O8h}|jgouoV%S2>W-62B^xB7=x~P3bbEZcZA4^YJAn9UR zdhUF%1zlvQ9l9vo46AbLVwSq?ynL<0JZr)(tl+NzV$Pr&Q@AQ*Z0=+f>TtmKkFD!RPmP#RjGyoC`H;Yo2g_CRB>s;83Yx*hzde zku)k;F$ub7oTE9-$!}G$ZNW3ri;FY|;&c;LnO3MQoQ9h|MxyD#;$zfQ@(#ZcHdiy$ z^EP^Aq{rVGMcG}t?Dr7*JzMjA2<)JU`X3i6-EDoM+U(H$W$S?o{;Q{hF6dU{ol$>* zJZH8O`J{ErRrFtPnv9|5&>7FCKcq~}d3yA-nqmHHlZP}8#dB{`qp7rIvC_WqaS3+D@48m8NK-eK;i7?1KVa=JSatu&`Ja_)=`hNaPI81@u5nG)S-*RUUq-Z-27!<8609ExL_3l6{V6`gKLsYX(z zl5~-dSn`>NUnrjgFUsa>r7T&VsV>s>rbI$ql(x(WS&M&x5HRC-%a&(XEt{I~)Uz|3 z)3SL><^<_Kw26_!FxSe@Q8^j6I6a|La=5axpk%_cTPh(rCSAjpEi0t|xKD~5EPEV|o z{l>+w$8NfGYE`mIIdjYKB2B?O-3HEOSBCHB_p&Sfuk$m~OTM2U zSNb)Jf$feNA4d)Rz2cyM&5NYd&ISu z!!|A%y?*DD^Qitq+g16#rTr(a?6>pDr{-w>-5_uDZEK+ABIqDO#{`mhj-O^NX#s|DzNpQ7MSlRXw&Lxxj*XgxcTI@8|cjKcLk} zLcxFwhUWJly(!1%@Dmpt1~2irY@JIek^yeSl?iXh{zu8M>1P%w@!`~xjC8mZHfETH z!yGYY55p%RV9w$1oaP8MV2a@~KJ+S>hdh$a*sZfxB5kzXy*j1O@$h=K$xYr+@J8ABi?&p79o5 z;Z;j=F;d;D*%P*ks~lnVK%CZ*I^Nc~ZKQ@J#*%!_htNdkZzPgtPQN!^&z=xYkC|cF z-nyJ~Rj^&hIln9L!&F3ezm}oMukT!sT{)yA#^}%5oA<_!OfR7^Iwu-wsWVywY8c&8 z$^voTH_tDT+~v~i=R>BYhmY__vfJVJUT5t*rDb0SiaM96)3j&ZMg9PIxvg30!+m;|x%IQh{ z5PMxKkSTO{?4D~KA=&wUJVRBGaii5|?tYe2onYi-9reSm!XOy_|l_P<#89gCVo${r8Z6=mRV`k?D#kWmvi$Y!4OxHb9a>nNDBn#YZ#WN;-k52*) zPZ=MD*>gZlI3Y6-uWsv{9W|koqHDV^I6M}yDAWHLwIVS7;Qv4-Bh|$Z`M!D=blqW^ zJ*jX@KlfC4wPWUme$G^wEg>@g*Qu~D7smX5O@+gwrFB;hO^TgHTUpHJe63{4a&13n zKJOmXdzM!^js^8+Sy0z;y@EPbo)zSg7?ojmX#!1Y5eU}G8=4;cLF^aB z@O+!B$L@?`NLX^_nL_AQQZ6p#iAe0-EMMQ>k)Zat6hZb$u`9ZHW`578p~7y-Y^uK_ zxpH_TtX0t){J6DQ~U|AK;ex32Kj9U`O^is!kEKaAfNrGz!kOta)iU^ zQS84>K;{_5N}5Udmk#L@nJbt4KPuUy4ki2OY{=j%kl*mhBw_fE3y~-_tuLkv_0pPv^?s|mZs+4D3m^#q23d0Luj=;!sF!5O3! znxzCiT0*LJJ{dI^Wg@m7b6g&B&qUSECqJGGe+#FRv}j{7LLu02AFrQl-RUCj9=SGp zB{@MzY3B8v**eGnjM^~Qk12$cLv1N~v1G}4g-|?9EN;4;j0H%syNpt3+U3S@1_sLV zqaO1bifpLYB;txw7)}+{Q>Aqm#@7girC2~namuyqYNyMtUiuCZc$gK51na%@9annk zJFXmvb9UXl#i{SO(o5g_MCP8f)!d&@!IHL?e&%NqP@d^R1&}`Jhwps)--HJQrOsG! z&T2>c=BoU;CsskXYCcFV>B+7f34>S32}!!Z3L~a|mh1_zjlan5q-+i$fxb23mgp^^ zM?b2_qx4`zTG;7_$|?(dNcZS0Q2+l^v1aF;QkwRC$Zs5K0j$Ni7u2EBYA-wv)k9=_ zbmfXwAyqSX`#_N)_MSlnENPRKTjIuDFdu|$KFN&=kE z)ClEVR>WltxGAWX%b}4aJWe%C${rX_CrXk5oa5#q2hQqTIu=V`fnY|ppe*3 zky2bKyX_Hu@5J`p0#xBlH$n`wDsmu>&{7gDP1W>6K{vi~|3aytbeeNF`Ur5qDo&^| z&Ov`B1>=L7N$LLnf|Lc$zsZ*$?X@t}d;ewHkwieDnTIv-g(O1!S;2H|lvsI$DhAbw;A>JZKEbkQp?ZC7scTTHLLG4kI0hT0t(JPae+g015DE{JfCbS#ggG} z9gbW4VKy=o2P8@9dv3aPZsL#qY6FgRjhbS5RC!jTSg`WP2-TETsu?Q_q6@m#-ux`q zD7iyp3)I1rqQYriwm@B?h&sFZ^2G_Y-^INhTmBmAZhIaNIyL6Fyf#$@HK5)`yJPsg z%d=nBq{ay^3@=+0|IhJME)|5`{_h{Uy-C_Wutgnd{K2-S<>=t=dO>iog#r=MG( z?^wTx8`fN;T&vp7k)olgMJLVV13q^A}h5Bx{$&r#)} z{bV=ooROS)>(E&cS44EYsj7|b3ZGoGr{s=ZV#n>ls~0a*FUU0?DGI$& z^w>ReWk>mraWhiOLp#cqk=qa5{p6OQ8%2uLBIW)hW%~Frv&sbBnE6SjL^T_=19WMo!e9o1=bPQwa_Q$yX=*v z%YtsK7~7E%T=LA)yrtXUIO2b6$IRf81xsI8RiRN|40|VX#i$jd=SR{OfkAWBes6=h z^oxX|#El)>Gy?I3_{s`_UFO6OLOZm}BYX4EYZr(J~p!QS#oOB@QLXt8g z37=1m@r!CN4}B)->u;714ZM)_@yOJoTjrKtR%}jMHKyMqLobwv*3C$!!%)tBb57=L z{lF(xfpcUb=`)gLf&0}b1Lp;PwenHp-!(7CJdyPE8u7J|FVw?wW7K}jBMgG!Q!*?i zX=waz^|>MCbtn12h@@euNrCB0l##=h4NDs~WY~=*0bl8Zn%7YM@tJZktf2pLjxqGAF$ zRW%$7K36?qL!4fNSdRqGk@^VZ;MSgt&$?Y)VL1?|`BPtPk14-=;K+oF?Li^27uuKFV^&?p zn)H18fv(sK4@uP;7_Km^=aJ^7MZ|FbrbXKM_peQ5H5khoIa~4HlZUbo3SoORnbzb_ zM$-qNCGuh`TUNY1O7mrjVwC?sig5_D{0a_S71D!8`J-m?JRl4zY$?$Eqd4xCs10$J z0u8HVjiH4$Jh<-g)07~@rs9#E!$+Vh5;;86x-DFjxfG0rEhT58pE?0@e5_K!x}duBl2reyifSR6GKGo(l_AtWA{%DZ(het;NWAD(GG0w2{(XU|BYQ zY;y1z#nAMtXXI>c#fE8E%F2Mk4+DVoy8);(hHIu$CaK8&N4_WtrLoMVApB#m3J)Hgv?vMvFwRL)(+bde%#ya#(u=|` zty5!>XN?P)aJmFD_C_WC3|rbf5t45nI{e6Z(*WvzlY$F3aO$TQ4(r%^W9eM&xKouK ztExps$DH7jOx>*=#^91WbdlPQWAL>$=9%fGA;#D{)YN_b(NB?rm*sv7!e{wd@|p_Y z&pw22jNuN=AM}a#e;>?rL=`XQUagoUzI%0Xl33o^{;HVLRk2fix2yF-agMF}q${Epe_L9QZVsL~Pavf$w zW7tguYbTe&F_1&%7N}mI=Iab+iaI%@hE{qxt!JUzt=IuYMaB?y3Qc1zGN@-og1K8h zd@_=LdP`spBFU^c^k7CyuZ||D%LK;Xlc#lB4p!iwj79|ySd4P0Hf=S5j7Vk|I7+jI zQ^Yfrq2w90WtRMOqUkFff)2mpq7yDfVtOHx5stzIyg&dYqs7woUqLYtsfSWi8$3n$ zT@Jf}vQUK;(n}H{r<;IDoU!8rN%)F{trmb;d^YJZw#H|hp1~T>>qy> z@1zi7^jX*Obl_?@zOJ)76VDEKx-nkeu}QHSNzvG3)RIn@z`dPYzLRR-3|e;B*#Fk8 z#j8d@9<1yD)Rg0Bf`uK;AXFrRF@GDO&+U7hfHWtVgWj_GapA{QY<Nq?f z7|SGT;^1K@p&b7(Of{$b1?l48?mOm9D54v(CLz5;eeiH>=tPBps z)r=ipkc>*`Qo~@<-JJK%fE^ONOR>GPpWe0tZ}0 zo!qgxn4y!@KUAf{Cv8cMztbNze@bnqYIp_pweLP0zi2*l9Eb+X06{hOPF5HvU^*k^ zjQhQlF{i0W0Ub`Me4as@P{?d+Emcx*C%B{gO*TyPBs{3)5DP3-pTOT?UUgEXT=$1 z2~2ApytLe*DM-eM5EW?B4f!#~x1>Vjw-_Nrlo2vDWWiq!{|43E^3NxnTRt;d{;;IO zctCkhfAF+Cg?_N%k4R3TMKos=l`A-mbqqDSSMP%PZCe60`TqP{(S?Jjz)cA0(2!4- zz&M##SeqLBPdFQ9ErP=_`=cLB8n zQ;mU~01`V82Wx$H{+>~EAdwhm%gPD2Cu4GvGh}GOmcq^!&4I?S01zWbj~!I0 z9HAg*IM`6Mj7Dx1Eg!i~=6Jp3oy7 zT;oq?jtP|shT&?X*^a{zpoCkI3j9MBFq>%mgK9!1I8xBeCgqMOrgyIyF#`@kKSdQ8 z-Ja{|R-_J(0hZc$6@y^@@v7Z4JAH`WxLqE6D~d?qC5C=frD6uyWNxADU|Eh2ya|{I zl28+-nx{FK+-VN}=s=u#yedY1wE$RxAJQDT4>gKi>BW|WTiWH8TknnRW6G*|qP)C6K3 zB`-+9hwKTgzBh8KZ-QsC1P-rDVnzx_0L%YUnkjI#X#UHz$N-0X8UtKT3r3jM#Zyoq zKev47Lzo5Vz}tw?nko?%oF>B)J0zJ45i?NWKj{PLmgn(089Z@3vip_?0YQjkli^+9 zVI72+%VL_z2q7B28Ox@E5pwt_%;1((DADVg;GVg=ZRwExaat>aS~z^!S~`ROkGVgA zi?ZJS!0}nwRh(f57Z6n3nPFHAR~QBLnhkE~bsIp%6mSLxZ~+}eBrQcmC9i2}8D{Qf zdQAj03wCKWqk@lZ^GzdJghgf`rJ?La@C%%d2f;Xo#eln0%Ohs@g+nbW^3WITEPKxe4Z z^h3mONXhs7aM^gDI7q1UAJY@uyf{+u(8hRFPsHIg98)cy7OWhXs?hk~b=3rI9^$+a z9}ru-H?U)ek%*4Na3K}_@8)(99f6v2HTzH>$IK=*X;rTTB)0I|vhDG2MjDK>{&68=s zZ1HEy&GO)=VEtgp911(N^ISn|$$uplfG&KbqrE0tfs#xYk+7hPxX6tQDyj&e%jO~2 z5WNQ~qJwSKIUS~{wOHx>!|~x0$-)>1IsEun8&yc$A__&wTxQ3^i7YL^f7}}njh6>U zNe2@6#B0sNZ64Y?D$E?qm@6zJhQ@;Nz|wtWOt4jxMk z=~OJ6VgHI^ghwTcLzaYiOjL;=S#gHXm?pYhKUBbsC@BkJzwITfQ(p3v$>?%jAj0e^ zlOg|?lZb?x3qKq0NWmnhrZvNHWOs~a5_}_BcO*LSUR#0#0f-d5;hJNPuw_S zQ<&;n`VK}nX*BmeKwb2tKn)lIWIn^#g?*9^kllcyLi40+M_L*@=1lIK#PHP4XBswZ?%J3PRt!72~Xm&3tk zkbl{vNJ0Ylff8ELzpICie}H7=`_9BWb;A$1{E6=SGJc5^SbYpUR}OM=1FVVu_YI&u zR)a9e?(%Hf#C-7aftEW2M<5QHu87;fHrWwg$mXsS1Tubb5CHtJd4SI)y$nX!Q0b}B zA&3mP2muu|6`)#42PDANzCf~opL2)2;{&}1A8lshl-xQ(+Zi|%9N;+Lh-wgctQxG~ z`$#p|rACC}X99qP$y0-Ylm>~f$||Dp1P*IKKhR=mFHrG#U|*ogavMs_Y!?66|mFqLm3Ja6ySr}w9JGOS zs~-*hqh|zm9j^lG|5`ovV0?i`^kKc}7W z&8$Gf>ElIwOM64(7?Lu%yf4-bm;7Otar#Ep4gYmCz6v?E0J2<4g)E76;VfnFUCLw_ z8u3qj=?4T7*U`bigxw&Vd|0UZ(VU9|xyh61Nn&90kPnp_%%h9v3w(w9;N0=DT~Ca} z^Wf7T82^CaUNhpmb%P!2f>18UrP(!uKJv-1{%<)azu?4-|10OfdqXE5&e^aCOrc#O zj>-9Jz86znu#Y-G4g(o=sQ@ew!*3QHwo0%b)KVq!BqL4QslkNxv+=GjkZLLCkPR>7f1#hJ&_!H5Cp# zcyhYKyNU_2TZOHpBWs}4aIBl9w1O5Yp`=QF6mszS5fe@qJ}#4+t(IwA6`;pyPPEFOwo$L^Tr zq&Z>v$=X1xni#b3XMPGqa90NJACBFL?49nATB<2i%M#(D_%m<9R2%4h<0nFdu>OS@ z?{8B#nB&NA215fbAMzt0@(<5RJZ^zpXE$2P1RlQbukGqi@J6BKkK!-(gricE8Vo3G za)RhMKm#yq6c{8o1$B&f@gMA7SggGiuc-%j=sNIkIOfoRXcey4FCN))@f(Z(J6x`Vg<0<`w+J8l9l{?a3A?iH`r*P%Xv~%QYPbw0Fcu+$a-Zb z-rl|BN2g#~_~ zqkqK^>=n-e>?32zw%*@!>j?O70EzX5D@fNJP~X+;e(oaYV-ptf<%DY!Sil-qB`lkN zD-#|RJc|=#XV7jl4ir&*RAmMuTkc8-`!K~3H1a5hHZKGo6tZuz`)g96j&@3cpNzK| zpV{-*D0c?!2uB(vZ|HRt7HU>`|9UK<7qQU38~B0(aG*gBxuD=JiG>r8{ZO#0fqkx$ z_Z-78aSSam>-5Ut9!5+H?oiQ3J%s4D&B(35ZpaycnlZe0VTM%*gs7eek-VN_BtII< zO`ryrnmx6i zE{&^IMFIgbsNEVRsk{(GEid8U_RwJ~Gr>eJZ;2N?glwwdIP@!wCZ*P|14J!oU)KAc zm87;!&62>{@$NYRcIw)E*PK^2s1eW3xu8@lH;l8dUFJ#=iWLTgCo97XPXLdEB+8fw zXt_X4l1Bt5G<&?7opKT#VPU(eE)NHrL5rKC@mFaaD2uV|N`r}tq~skIPG6afi9kVU^|W^yuBCmz|x_XgtLDgh}SBwpLCUnZJLf>`XqncS!lEmX+O z2WP^)>l08v8xrDFDz?a}RIq-h6u9Ae=O0c)o3dDR$r~IBfyVab7?2fm#wR57vCx^M zJ>^tTIJ0@?CD&xB0zhfXpmJA}+O^2o(UfKU?AeK@_bNJQdZ}Gfd#OL~&Ni{5c?@0A5v!cdmm75=_26n}7*>_z4 z)d&bx8}w2;t7;p!@WaVH&Cg+~W|jKEO6Y;B#uz3W0i< zC{vHQgn5H)BKE|>6rfl-;*6rAi#1q8AvW;h9h|PvD|(Rqzs;y1Zww9<_O@*xMYH+Z}$v%ayTdhK#9mQmEjy%f-r*2D~54{`+86W;^aWZtze-QGJ%=i ztd?_VOG<*S8Bf5^vIssIh|?cRS11LSmGkp#9pG}qh_ z3k3nNmL?4&pqKnSh2GfCbSP}x7zj)fjt72FUVU+B9BYN`B!;B1j8IYNJ|1r4uZW*C zJqDFR3|RkJ#MaFm(o8xg&d~uF3o{oWM;#z;K$njQ+v7vTfhAsrU5=ggfsqv~W;5^= z4!Ag+P*9;b_6Z%<%NE8u5fN%R+|Lvv$BYoLjt6hBf{KpVutZu)f1KdZc9;{JZ|)fZ zmgn8e)4x6g<}L?4UK!-cKPr;&MFn%+cY@2BWd|E>LBnJ|H{kI`= z5yF5Sz}p&ng~+V%t4g{tHDUy|ML-oug)V3rJRU>(1M74_k+AvB7)v?`JD-`5J0Cw0 za^~bfT}BADI{(!jCpDG~(L#|z>u9C+@bJ$c-Lq_!#cm$2cek#J@J9>n26#Ji2nR&M17KEL3@X*P*fBfRY7*k z!y)BM(HarBz}vKzVqxrXWalsAEMl|}JQD)hl?26|y+}|{3xFW=nF8g*?ClA>!+8V` zF|FCMF>k_+jx`5KJ_>+Pr}*6#9~E5Yec`c%G0k3ezd|EDfqBdpvJjw0u5Hl0tb*Tj z09@Q~<*uZD9SUQ+c*1`{xDBYem@kx8QlG;J#!(@M{?JFB+7>|+gfGj;16(SBr?@N; zheR#~`C)oW{m%>aPM{>9%k*F#DgU4;kehq_P;cgF8SGV)F$_@LT}Y%r42gg<+%lZve4K%Z^c@DtGHk;T{BVg( z?Mvh<6ECBO1tFP=dh?O`qXMWO(l>mH8gp-v*f#oQ75w&nRWVvn{s@5{J3{-oEu8Jaz>(u9<~3y#_JwtBd~E-4 z+>DUN^Xm-iiR-NBhNdtTUhLP@@N2S9L8}K@aq!ZbV$~4EAUFWlnXwDvLSTRXM*`Ej zU_J~}!7?f9EwK@mP^g}j?nU9w)y98Wmd>>#kQN$d zHS+9%=|3vQvBo{+J``+bK(VJJ=_tx|u`vfRnorIc*Om~(2uV9qdS!7?qlFG3^>@g# z!$2uAKL`#8u?2@NAqmK&xhJQls`yi4g{AMo0KzR)c9T6-)C}2!lrX(T4q^5|`rhms5g4v9m2SySa$YSOpI?Z8!C{zeU27d_l2!vh| zLjed5;d1OAw4en3eQN;4!C}a%#&4R&`>=Rq3&Grw&O%chXMoSS30sKoT6P2zkUMH_ zKg%RVp+H9WjG`@_uKBC76S zMB)zUT-o@4Yalq}U$fN0(hI;O=IW^EIP5*edd6xUgx z%c=kWAP>O;?5%muB+LPZGj;R-Z>NeWh*MQfiAP|ot`)$Y zjY!KQ;Sl@(J<<|(1qUfbwGqsZ5O`;JV4;km>VaqoLUU`fJ#mX$WZ_NZdyXLk6f|JH z?!PrarL&wxcqyU;P54R{WtcCQzW|5X`EMNoCgf9(Bl|#~bp`SYUG^|y1UTpisQAdo zVf`|Jv!YaGqyc#7@DUaP_iwTY3X7xIAt5HAKVOyMm_vDn{`_9OEKY7|2&z9Q6CT+pL9r%_N{pheoMQI(BcE)Cj9=N-rZ zh0u>7y8^CR0z?5e$gmbzUK9f0kS#+AaSL11S7p#2f+8WSS^qmkxpG4(n!u=c=&a%v zhq@XZq=`wL0ph>~UMj(vT`IwFMXxpe#;|EA?c=3LZRhDL45)L) zfKI-}YedMQ=?rXug3gt}=ojqk^tXx)ysYfSf!;C=HG3 zA#pK(V0lQb1f5|sdB|DwWNe0}0QLve^S&w|Ery{{wER;9AS}$RYli@M0cQy5)cAnS zL=Zz%jd(a20jf(@=!kbu&j@smY4sFfg4_z@LlN*2Au-SjrLY`;g+d@_8y1->FM^Wj z*SDKm%V-@1c@#e+a|uCN(Sd{mHv!haxr?;-PuqV9~A!$s@eP+pn?YBxS3kx4JoC>Xup3 z()DD34u9f114SOOcTiT0q%$lkl*%Ni4jcyqNqj~V3>rs&JjqZt|M)N3+ejYg`?$^w z%TUOQ=^!DzDlptS1tG9P3)}dyORYk6BPxT$h^bskvM80nmaQOb6$%O2qr9J>Q^A-L z&7ikpFm`b-g5gDMu&{_^>0+02sQ)pw_uI6_$Eq{8`GBH026+93QKW$>Dmo#N@NrcJ zJDt(kEC|3YJ^?VHMDR0W$5=2@&w#X<4mr*64me&A#wUr0OaoEevHuK_c_7osyMac( zjAzdX^gFmXWbm6{=ko#0#9;?Clsplz7^CI=&Zup;LSo3z!Mmuj^Rxuf=?XS)*#PuF zq}28A3QrZmBcJPyQRM?ES%TMB^m)5!2)stih+~QoLx7fx0~g^j>A{fQmDyQe zMjc-r38WGnS7hd*H?{V+VQ|GU-~eMr{yrUmXq1VKny5rgK{ad3PsaNnxb;k#{t8i z+=$0^hKP=yg{_uNkzy7o%Rbp{9}+nheoscT{54dVpTJ4GCK#bh(fiDSbl9V$I73dd zBN4{eH?k)(h$`M6EN!)f5oE_bXZcl823{vh4ZR-g)RZ&~&fXZ0h%Q?JaB+CqD#=U2 z_5d>`;0H=gjo>eV_3J=5KRDjLk$DrK@CZ?3V|<)dsJOSFT#A@@EC6&|8W5v*pq23M z?qSrwiGTt23{)K_TSi~-p$L&yC2v25F_G-iflFHi%m5*St#;c6V(zxh`VcpzrYIRU zAU+1+1BP!=GOYdm6PVg@W5moN#|Q8N^DM8XLP>suaDzy5>n;?B z;zVRl;)OHShm=9ot|3K|(by9no>T|3334$U)v(!9N`9A@;dfE&K^T1BiJ1WU30{*Z z$^12)wgt7fM(v#2V=?qECOvY}z}@l@0^6uEB9^9mt}Zv1r9=KWrOSfL?Wlwa^n(tb zf{zSnz}qtsb~}dRqg;3e);BDKTAKh`I+VRy8vIgZ{8>4$A%kaN*=Yi1AF8`det!<8 zL!8W_MD`UFL1Fu0WBh~uumBrd1{d@~eRQ_9&)$7Gh;1)e~niz{JHW3_xhC z(ZvT?f)|1Sj8BDHup=D48WB|jHHZ!2<~$3>2k;iQeh??FB|=36We@vik_LCF1c|Z&}dm(p-p8`lm>gw$Uyz zeYouo2D%um$~y`NT|{PxPXO~Ta4w?%R z)+j6jD}9xqC*LGgh}PHnm>eI06p;qVxr+oTX7u4D$|0GMfv{;a@_{!7P)$|AL8)LB zL@3Bth-A-`q)dUi``f}6W#3O03Jzeuazqz7!oIdRq^1BA!cq{lOe{dq2%2UZDv`mQ z0p!vuggv5MG=M>NNN@3#b4S~zg4>xHYAD~9PcL9<(p$AS9-gBd8-%#Mr= z5rJ}GTi$OX*>R}YKWIEuHuc6x0o@J&t)K_AQ#1BWq11FrfrM{83&#N;L(tGX1Q`%S zuepVYDF9*dtcMOGJ(bENF3dv4EUd$DBeJrOgkvAEVhrev8PvT;XAEi91+Wgq6$I<~ z5SpE%sBqV5Y`q0+wJH#=Z3X-di4)gk-!qCR+T@rJvSjC6<@Y0$xLW%2u^-Wm{_syLTqbPmRolkJIeQnH`RW^)QVkvu zLLJT{PH8-gl67t~i;@k2Ganl9#sT^+4o)}coHHC_8Hlf zi2QKQaZu!`mjHPK-|@5OQ-SkeH5coOvI;MCWvPYph}`zaau zH0nj6KR<-(SioWzG72GpKzL%A2Ji`^O&bdf5QGpZUP7HZg*EbHP?brkfd?xNoB^@T z6Xtu6uRq+j$kZ5jVRd}*&>V^$!_CHi;`K6=9AKm$yFNHLy@I?|>tz_i1VX*0^+TCB zuLyQU;aC%)9V{2HQ=vN%6a$w`r|`ocWCYPWo4mD-`Jrnx(;i$EUwNj@$BzqVDq6SEB2dZvS;ko$rphE9)M8@av7bSN8dP=;D7pnege`kDrV?^~%(zoln0#^Xc8wZBw6qUHbO2r?FoI?0h=+ z+_Vc%&z+y^@ND{5gE~F??9$$?&kC--ec_qycNaR;m;CTbY<))cpxk=x?S_5z|NQyw zlKO;SU#YKmy`S&d;PqgyU&F2k7kV}H`fYD)Lvqb`%Np+21{`VF`gHH5hRPYstUi|9 zoUzP0&)xW0=B*qTj*i++IAJQ3y2ba>XLOhsxYVu7GG~MOYX{rYvh)q9*>aaC<6^n) znzF28iM2VaU$=R&`s4aphIqNHn>H$_I_O+${1NN&s5J0|%hLpnK@T8c>|&49c639L z%IH!v*s$B6@1>8D%zP}gGNpgFs6M#S^m)o9necQ*&*mHbp9E)ar|%QG*>!qt`h?&0YEa`J`TpUvqT^$XbEFttsSC|(*Axu!l$U0cK1rW&_47B}ZQg7Bo^75J z4cp%6OgDlyQEfq+>bCfjXj5glxvvag&^>1)m{;ky*0xkCtHS=WP5PmvrHkK};JISE zVtet4%opyOGv!dVH8n8EFubX;J}=zXVai8W-grIx**`r%-YW-Q&rY%=T$#7%^yZnv z40Ag~#df?^mhnt^<@2nHe1RG4C!F}q6~I*2__y>$S7&_{x5<#-7K5>^F?vTC)GjCn z7Ox-de|%_GEPd_&u=Jrg#@^l|Pb?0lFEQbw`=$5Kwa2RA()}Jk=e=HSV`F+UC;vOV z&b;x}JQU^s6ND;z{aDK6#D3@pfejy(gcwBkQzXGy7#{)2r z7TGVwKRA$ol7A?rH}8m{2!jibbEpDhan_;h%~C!uNb`eza2`5V z>fr<~V~#>q(^~|Hp$^3cZJP?i7{?M9Kk$-A&q9cmb(4!T5HArGiti&sU`~`Vf7eUOliyi2Xf4N+^M7q)ERxhMG4`_YJF4nq?m$UVse{|A-7T2T36 zL=_}o7Q>4S@noIoYHC$vlRDH6o)a8qNbiC%Pny+V;K|r0h{Klwn+&v3Q|6R6*<!Q}WO3XG^iMyooQpZRex8HzO(Yqu}$j*N+ zXsp=^T^{Q*N^A;_$v6`$d^&C@s z)+NW*d6seYx~^0{?AKS+^tb($Rg!|=AN|>>x~%C`{oTHELT&g=!x1OoyFnB|2X!$S zzgV@?+PKtZg1PfB4XLAJmI%~wn{XoN>kYUzTQ>?}x-~Y4#A$`uT`^&_!>nj?aMGR5 zxwbAevJhY6Soi2uW4^budho1NMa`YsK-ZkEC3OnW!`l7PrP*h<1|jVitg^ai!?NP3{|Cz)HTL-uOLtys@^E@~MS zeyaUoqg6ps`{<0?LN2xCZi`0Sx`dZWt+xIxVVJ&^eq_P~vrBa?8gl89hgrsY$LnY5 z_LaFmKA1GsJIMG$-m&>Mg!*^4zq0M&lHOASdZwkHUp#Oxf#Y?c(L1eck2(A0029B~ zJU3V!`f%LJ#bIjM_|ps1+)QeMJB^v3HWkTsjLvq^ZUXGy<~{3}-)XfvegtwE-#z_m z->=+FY#~J5nHQ}nGI|FWeePkrF!dHn$C-EUm(%}}_Q`91aFKUeeaQhPg(4~OVUU%? z=det%@SZt*h1sUHRxa0#*>Bg@<6XN6ils0#zS`;iWOsY2G56XW$$lI9VOFZz1=jYk zs%2S9*Wn|T!n47y;vZeYXAR4T+zp>ulBwv(3|yJlq=$gTyo+XUe$U!yigCv&l#9fG zc?IS#8$4?3U8tJfl#FHIgEHd}8S6WY1T%zR79X~rploE%VJhOaRI~L+qsv3%`?p>N zixkgcwP0y}Y(nkJt~oaCFu_>`X5msk-R2i_Lg)n|m`hM^`Pn7EZj=wp`Sb%v^^)ER z@}cw6k7l~dE?;(U%xusInGI3lm0sY$6^bC^*QXbkDO1%Cv$5sgQd^f^uT0;ijQ5_U zFZuj4PwmQU(J9dx(WYo)tar_|wB&AOs}f>P*t+YJvUp2@eQC&}&DL10-L$vtp!Fs_ zjd3a+Lx~cp>d!pK817^xg(`}psZE#ox71&s$vUZcWV|rtxAli#pP!z-@GBw9B)l?D z*ovHc;ciBg$U6Blv)HuX^eI%Ok&`o(SDNxqvck+Z9vIajS+>i_Z11P|RF}3JqdwhE zdo4HdvezHWcG_k?+wE~>${-3BX(aU!$lqcro+gr`mEXEYDeX=#TIF5P z{#x}*d0{;M)VI{GiaLdlG{;3}bO|nQUFR_}JjbSs(Yq)*@>j$~$f)%j%*siRpHfnb`#X z%T8QQWF@YpK6JaD?zmcVHvfp#u6e7Ofzclr_*3kaS5HF);_91-*19QnsSRmVi-@42 za5-frA|%NUtk5hs5)O`;-ke->`uy3`Uh>#)6kVJp>E9c(+~W0g9^j*C0Y*|1j;yro zk=BuJYCtXtIliSk@@SM)GC zqpr9=ZU+ZAyBIs~8O}2G#2xA6_he^w{(hmmMAG`@?sz%sHvA>AbiXH;^y;CINTiZ| zGRe5)*tol}XZi9q(e+0)%&gMOetr7OyR#!P}H-BI)UGnM39?BE#618RlJG*4nYDFil z*~({aiS6O3Hb2I-_E9Z;bAxo=3U|}s#AK8rchYk2mYeGz7>e@h_nI9G^(!*!+?*{%_7+!r%NaY%czcW7 z-g309Wqj-LY2i62PHf3{u)N>e@=Y7d0sERcy)D{SmQ!|?6mBtZ)dBOW73S-ong>2J zpFd$j~gasWG~yi+MK*Wp>>bNqV7XZ zS6z0WeDmFGNp8pA6}8z*SFJRkUnNQFyR74K^Qc0D?XvT)8-B>!d|z>3$JBjgon9Yx z(0qP{c~P$6VcM~@bGdu+%tWno9rtyy&mFbWaOGf`rPPipo)+fzS&9Zt#Hi5lPU6TUKer8#-KAu!{^JS3atO`opcpHgg+<=)+9*kkG$IfQQWeE903 z>{V|VhMQ7N*5fX4y&pkfbji;cQBqapdXqk58CfG(IXZW^DCDTo%VB#H!u3ht%Pvj)h|82*s$9)AnlIn>kM_;&>@p-|6biI zLHn7hAnmkiq3O8kc*a~)gOz)#-c}bn;?O*U+Vn)L3>_cUt#sfF{ih3bX|qhdO<$N2 zO^F#DpgbKKf?Cf5Gd|RQQLT#^6czUF!Uof=9ITxo%W!A9-fHpuv^sh2=8p_pa^Es5 zPCyDoM-5Nb?~`mtz4lH6bt}54ZnVxDh$-fc@b|VIR_TR5-TPT?Ik=~~x65ni@0Aef z`Ko?JmW?UF)H7ON~ygN=ZqrmZv>1^fmTOmBuTwelcB7$xrE@y7!%clYU*c zF8=nw9e;<)wngzE>y1`vqf@q|d6?$W&P_iTH9V$UX`4IJd37#Y<-DG**~y7_raZUC z*q|q;Tzm9J-TRB{Y@{yX>Q1W8{*qmaD=5R86s*4TmUB*4nEDD8uu2H$Bw5C}@5g!#f3)61wRppW`}R*%3o8)3Z@!x}-!ne078E z4?9Zkujpx|0BKaZbBnV3Y%Y)tx04uq7_AJx*=_o&6I@Q$C%DBZ4k_L1i`v%h{It&6 zc++rp@m2ljiys=+q~6gVT>LM?lGIE3?Tb6;Y$`kJib8B9d9D1bLhPB|2X!dsJ+j4r zRM@))UW?}cyo(el?A_wO+H89z91{GW_j-E%%FC{(d%m>y7&TqMx_Eh%`bxcvpX%!_ zlG75I_Mx=g{lws-I`#B_2B_BhJpbL&mC@>WZ!7a#p#RB7by4xCjm*zC z_G=$iiu3x`GQZf^<36eb9wDt{ep_O9_^7tEzicn_`!05kkIG5<$WG?hRln2+Ev&bd z`Ms-8_E9Zq8)75#YZE&G1%aF{Tgm)FV51Sx$@m7G7WQ{eqke9XbyF*_``2jzy zUfu_l%k$o-TvfW$*3SRknlEB@xL-N6%=VlPzo(|p%bNFT)}{r07vzISP0EFRJ@CH{ z3y&Bh=Ecv;o&8|Jo-AFa-@M|9l47&l?&8xiTPuqzw-mn<^LFt+iry>QTy);n!M3=j z$bXyrri3>u%c_gqHx`{uutP2Xm~~NGGXCLjlef-NQIoOO@)%59eNN0#n2%7478Q0_>S?r5!eFYktO!}qplB?Vu#vb_7~ z_f?~k7wcZzla#;tRT!&c?fj*`EK*xOd{mQddH>Ow1&`QSM$w%VshHIh%(&k2bx2f? zT^H=JsVQFsejzd6hk~btoMcjfYS~Ee0T2ecHwF!R^Pr^l_@k1xI_AGr(mXp0UI3U; zu`Yk2uqhLi&Ms=r^sbU!YBf~-PF~vRl-PV5>sWFEA5yrK zWzy&)va?I>9)i|(rIj+!YM3O#KGXbjtga79lh-zQnk~~D!rfP^v#)=>y2w?hJhP(y z6Z6!sScCbZ=M(cQA!^GCJ4?@2;4sTfJIlBB)AgP6r!L)sD9Ag%TaxW8 z4_jFlI9Q%K=q!`$>fQ-Bpc(2?mw!FSysF-Oe3yC8$6KH{PTgs)f4_Xmp3*I?Ewfs& zb_FeM(J^zM%Vx)|=K39GY*~vh+Fq2FpYc=Ps0zdSyn(9+k6@AT@YT)P=Z_i!GA8C7 zU#asgHCcXk(8Z)x&a-6NTZY(kb4|+HrdH~uqt>J9z>C_N<&s0fY|9S&&_v5IJ6&~> zCEl(m(Kg94&d%a&Z^^K;eBjWewUy4X^lWYU+0HV-{%p$qs6hXjmOXZsfw-uQaU?p| z*+H%8>S9@9XR)#end!SLc9v=OYLf;0ApHrd`b9gn`#yD^65+>QsouRK=aek?JV6G%>uWO(>XKJoO(9O; z8J6@PmJYO-@9r?%Fa_j}%28-DW`~XlcX!@>M|#%ra{6+2jnr9VNw?2SsdF0Y{wUfM z>pj$ceWi*17!qsh=-z2ZYo}D{YolIMWUJF|r+X#%NNkt&R753V(2pFz7@_G=vy1eh z$vXGRr9+A)70t;QaxSyoM`gCJ)}+{m=OrYJouSvw-|6-!)^s#&eR{ep{*akwrA4Pd z`mn6H|GCV^X|Jb$n%X=4_pvsQ@{49bUY5?#Rrc%TtSO$Mb`H$zTk|R`1-b2I_pOI( zjE_tk(t1K4H>G}9RvlD2Y=(aQyqmc=UX*7$Zkev%>X`9%T6tP@+NIo4D-2ySZlxSa zKWUZbnz|$HdP@7$Gbw(l-XE6Pj#ay9)oG=sgU1&EF2oXP|1u;?k7Q(zd5; zPdnt4s&-4w(}j+y=~~+JTzd@q&6Iv=b5m}bmZUkP6_{Mpj47|DJTR=0PMX#@70myKGFyiuC(1E&M5uorsmCs^ zP>+YYX8)OPeCGGx|F6pNqqsj+j{E-a%JEq!$FP@_ug%5FfofYPY-uZ1D3ou#+h$Vd zcv z7xNNn#kSx7e@`p!)k$?g?&c)()9KwhskYgEtRS5hy0Whm>B^z8(3PFsNLPNHbY+BNCEo`8}a5<}&HZh6Se=_F6D~_OV7?c@Kr6e_eO8iodw$WbUU_ecV*T&m>1OE-HwFE;`kZ@F^;Lh?kAL~QP2?MV7?OT$ zd#Pxhe__S^y93B(#-brCoXhZn2_=#>Bo6%iVE^}KtG=HTB7sf?=o*KC|dCC zg4ji~G7l^myzn6F$HjXpSF?Vcx2O7p$`zu19JMoJx&Ip(tMcB@v#Z{gan8NC=$n{j zd1b608|G!qtIS%yp!0$vl3~vl1kUr%?BkHO&{($c7MSyL=` zE>i8bzqwKKI;F_964Klh!v?LLseLu%=0v3KUiQYVdS;7cVlSBjj8kP&i)O;J!_kf1+SWp@l zc>-iFy+L^bToDPS5XIL*VUUd0ZCPjNejE^0^K^hY&@|^DiHQbX?k3WD66`GVSKX22 z+gQjAbwns>2N`K(jU`JMeu$EmKERU#hZn~A^CdPI5j7Z&Q8z9>6C1^nlz@C==y(+X z;kUsuLZADB6`G*d1WTrd6NLnS8$}RWVg`JEq)9K1lxrSO9E)InV;MK(P_%yFI{-jr zd|47kxZx@r&JhCA4h7#RyB9>3w;1llCM3uGI3&{19FnArKLj0_GRzSw$yB^ZzUrHh z{)Gkh-DGjdkfdAFq>MSD;k6h7IcRQ4s4@V=g+MgH{BK*H@j}a}B8B&o@=I&WZ9q!l&no(}vCaa}tXu>Esa1{3iRBq! zJ3M7|R!B)0>i4XgOZjh<>auDs)+k%}4pn#=w0=PgwiXxTFNqT?L7FoWM|tbtPhooF z6cD!(mx*{!!Id=1ZMb`3$uMql6HCsAFqs&#jVv_0M29%&rK#XQVaw`h%K{?gg~CtN zoIV8nw<+`Ao6?GJ_GQwClIiOP*Q~4YaOzNiZnlsrJDxZ zFehWBn)XX9Y6}8I>N`T~gEUVXY~xMcelH0_3K9f4SK#jj9^$GLls6QCvM~8WQfJsSSO3II zodSezxkL!{IEl9EOI_*DsdBMCh>8R>GH&*cB~q4X^z=|uRc>X9(E# zW1}&dDBbzAJC8t1kK#uA1DB3A8pSS_3#AFMd^5&W2cvSE4x5hJxgU2R zwL3sIuY};mXh(v3Q?|V40K>;zVA3pQn*FD4XhqC6H1>UhkErF?HJ(lrA?}sqKyr^w z5Xh-IqZS9leme~MF97vu?9mtRV9Kk zxH23kZE(2^psia=5IHxm&hH7c=uDk8d+}W|& zJiyvBxzDpH#?My%!wxau0DuDA%navPt-Ml6fFJcKghGBciJ!Y>AxQ^=7AzmD8oJYXDyvf$!_V74|G%Aoal#p zd~hNU_E0?t1FTQe9Z_rgr`p&2GnfH&sx;BQ(;*Zz-B;tnXgg+%AxtG)1p4^JmV_Wf z7;IlmFR&244vo{P`5tO-gCSCZdxT%Q`{%@5^0Mi&oMH*BpFKg&9A#))= zise9d5p+rL3#wM5~+N5 zu{^#gV456H0D~W<8WxF5P#{=!@G&ybi^W^04}1sMW0;Clh^IAO&Wywlw`rt5%P^MP zG$4rm5S20#lV5F5q?1UuQd$^l63rBDxGir4LMpotR!JORR{Ubc!b@CuoJY(DYx)=* zt@wn&%KA~Iar#CEiS^utrn`!}k#tgsZ;J;$wNM5PAOG|y8@zg;Q0L6AnTrgrAadD37V5#eiP>c9fF=o}QWWq{4Z&1}pBsXUsdDmdstYzvPCTfC?gKqx7v(CT zJPe(h+OtUc2PJq_hD^c3i9|ML8US*K3qLe5tQ(I~&pc0!bGDX$@jg9b>rWBFq*-V*B_^ZHBNfVZrRAk7nk+UsD#%4#=SLm*2ub`?@n%$ z*-G}AGI}E!%r0QLjvn3DwBekn%(S?@RLvL6mgDJ_U?{IuD0>r2{A!+7pfXa@)(1=$ z@--yqK_noFkz-aUTl3QR=)m#OMa8r~*1r0tue~-w4$2WTP~{LO;qZ{D2G z*?&^zOKKZ2bVPAh zOrg2!MuiaTUKp@d=C`ehYa1Cg*A2qScZ5J(O?N%y5d>Bgn4Ec~m`0`P?nB>7^w5*R zGw6XYCGJw}-R)%nacwJ<4wb2VjEOKqx)Y z)IWBLtQGH+!NoF~q!Tf@O3;;3g)vIH38ml1d_pJA7TmVaVH$75Eg$xzXL{n95AF%? zGwH-Pm9)4?b&zlBK{rWkczj`e(>}gQ&n+nq@J+p1+|;tW*cZA}2raejPPnOMcRnw6 z7xzMU;!Q2PoBl#~gJ0}UxT$4#x)-~f@j`dvP1}wVG0jYZc)kh1{_15;l)zn{Js>Qi zVwynp9+dIiuZZq0mofGDo8t8?zIpBf$53)Nq!!+`>2L+|_t`jbMOklsTh`Em)PR!Z zWaoSM7{7LUDD`x26W&f@RHo`{m$^vYe-l9V*u71zmV@*8;y>L_f3pWL- z{&-Ut=NE4ZeBmbTi#G+oaMPc37y80YIgKrmt!5>hq9w6`pS1h_;&|)il{YTm>Qj`g z@0NtB1+OIKEke2BTd!8!lF90tom-vW4!KO*stoO z?iF0?M|Hw0I}DT?t*bO9(1>PC(JHeX`^j zdOsIx!(-eA$(lYAM^A%7L;v@xszs7LeLomJF5Uf*m(>~<&57T9x8X&WI2G9*r5oGu zvr?q(L|F>gWNbml@)IrYw(&Eu?2Bq&-Dm5<+caBMFr!FiEl3gC}gvxYVX3p#p4r60`0c^>5W)$FHpS&@A2)yEthRU0%B~UWLo8=aT*vh|7On zOYf{%J)_VcA0PI>2Xus&sU-798qz*k>bo%wUAjn+5gpw z%Px3-9Gn=zyVWk5!}n$Ny;t7gJ-|==;g%Ea0;;~d*e!Wn)#Yx* zQ{na2Ny!Th#2nl2rm4Hq*j~)BuRJxcf5Vrn1CzohoXQs}?{&Y1?^fPGt&}Gh@ZnVv zd0wdLheEzj5*Jk5s*+#1u&j4749Hf=-Zyab-5(l<(Y*psEU#Gqm3+$Z)FVm14k+)2 z`}Q>?qBKru62B{i^X{%(cu$RA(Vp%HJn>Q0qfVGd)hO)w#_>J=Zhc_ViloAmNh@#Q zX1vcJFliLkt$K3dGQFXrYEaUExo`#XU)~eOJV|_V0YhVI3<>nvA9C=*#|??~wE3@G z03}hjU}O`m8Xy(c_f2|<28rfFlTbKxiJ23G@x$D zaKtqv!hQ1u!$lwCsvfl*>GBGU?_?k{r^Qyf(i@vFf?(pI=2k>HW4Nxf&=gPlg0Q>6 zJ|L$mX}M0d8~QiSB=Ac^l6}R;O3kTBnx^kA4oq^YLPcc%>z6MI3=HdJJ4#*{`fB)v ztyqzQT(K$!iWCx|PI_{WQDc76cETK;))Q7~gWC z70d`FIlOFDQ!0MLlKFH98ao5)!JR*=zU*j?`l|mFs)rrZrds^DdAx0y3gV%?Ge%xj zaM-NT@2Hdb8O!d; z4BbLe5%L=)cMD}#0* zP-;-(i>=1Sk z9OEHh%Uv)Fn275~-sXkU<@9`61)w_+yKAK*>-cI0Daj8HfCO2R54nVOHT1e~#TZ(=%;SmWSj>fin zR=vIhxNGov!F@j@P}N^!-S?DNR}|&NXt!7e-Ai$W_JXCY)TC-Ob?vxxhjW4K9}-n6 z1kmaaQ3>ju{Lr3b;L$>{B!vd?NiSRRb!Mo@k{p9lz%TW~i0kHI#6KEURKNb-6l>Jp z_p-eaqv;3<#<7eodqQriHL2Fg;TlitZ)5SqFT}f=7_`E^iAQtMfT_nlCryAF>OdDY zbO*dIlHOB=>fEO$Rk&!1oI82Jz&59JI3EM`!gB!3YHJND2;Q8CkS3q&Tn>gs^p8fv z^K($`@U{KG7 zuO7S-(BS^tg~1IkKfExs;rhe3V;VmGz3t?NuYb><+R*0F;+YK#ALVB@sB0JJHI&s( z+uSg;ZtwO6Q{At-8mjBQJJ2xqS^kxV?au#j{6#p$c-`oI@^(y4M1Tr|CUsXeWG^|&X&yUt!2?Nb;{ z?&?V@PwSSyDx?yhq2t3x;%B^0V&r2uX2i<1CEH|eC6XIsmkz~SvH=}9=~Ngkd>1%$ zoE5$+jK&5zJPM~5Dx7r*_-Yg``LDaZPPkB!cP}{~IaLEz4~5W#OfNFw7T$Vm`j{PU zuz4&h!Ja`~qJXY7!w|+CNpIpxPx9-7z)#f&p{t`2M*3GAa12~oec^cM`sXM}j2cPT zQN|fAxsmEEQ-bmSR3CpfM6LakOlgMGquEZ?8E!Pp>%T*RkO* z?C0AyoUzS6 zq>CDHVxoxsKGJB$xIp8A7_=B9DKz_@GvFA(^N)vrI2s}cz2Ico*pV+cEJ7o0Iv;m* zieIS_N9f@_XYf%${pw+OnH^j6Kyk`0h=V*xPtxeRzCCx}U7O~S$Y&h5ONGyF+Z38_ z9*{o>gHS+tH5cQ=dlVz7?2UW|j;C$LMxuSMW2Y!rWrS1o&|L0=`Xpnou}?H}KQ1L7 zLjw1XR9F1~(1N})+f>u~8lf;i!b#;h;pz7*Eh!rS~cGhz;P|yqS zwxnq}?Pz+4bpv)QS|liffzoJ=7hlb#K_~>5AJhtwi-dKMkPz>Ux9vDTv+<-pz)~*q zZ^yyaTQvY9cp*A7I6kP&82EIdW9-0dk?>-;E<%+npFZ;A3*?^Y7J6h^?{XQb9Oa(c zZ129|fj^Y_?(j7a@C)8K$1f;^OI8$_6ir=%q4>3eLG;GF(*FBy0VjY1JBZ$)6cmZz zYSjQ;Ae#T}u?;vVBgVc=*OSwgk352$QrP^jJKivW4!xsjx zYO17`IOVtOU=vkcEbF~mD)E?P*X<)4$u7Gyh`~_EYK$jJs_;pVI?8EZ|vwyU!HzE+Yie|0L5-Ic7i3s81f zI7*h^!(~U|Qg4I!>gwZ&{P2ff3(*1Jcn10Oa0>X+QQ#{NnT{R6YrY^3CiIm!Ay(uc z@|0vTEG}R9S94KJ%2Q(ApKFfzq5i@O(w9ZKR?=vnGVZG+KHB*O6y+LH| zq6(Arjt1P%n@>6kV`_QJmbf5c^KKCua-9SL+=a-(MBv6p?@@{y*%!2Ut{B`UiZOfdNZo7=~hrj#LZaRIn0e1_m^UbganG6h(TmBslb#qS!D^ zVo8iij1f!XKgAGRNH*&d`);!8s=*uGs4+%}Yw-J>bMF)oH)eOg@A*I9e|a8e?!9yF zDermPdC&X4XMfBt5BIk}p?rwm-t=@oKyGO*1h_-NF3I=frpp4M|FWm;3t?4`3X&J> zKGV@R1Y}A?D!doMwR^6E@~{|z;JSuq;EP5zt$tHQHzEfH@3>wAf5cSKY= zV29tH(Yj`&HGePi%-k<=xt3?r){P#3X!4D|8hk$HLo8%oYU`maB=aq*L+)f42EIYA=$ldMKPnql)9xvP85{Qu3F-K632Ei`~Yep=&ahxDQb2v>s@C>QjC>TH3gFJhnO+;Uje$mry z=oPPjnCvwC75FgKoI28|vJFLjMk2hCietG%_>(C>LxGAkU6akBOy-o*$iDb@;*dq= z1O#y~l-5WA3X`L89$C*2q&OIg1q3{D$Q58go8M4E@TY(qBY?-l4L`%-5x+E0PV5W# zK~VK&kO0iI*|}!3^K(cM=XqD=dA9+wi{y)Y;agYGmtjb$bCh4UtZuz@YF4EFzAL?G%zUN338p1aACyBn@If#)%c#;Fs0a|KsgJX_Kifv zX7#O9s9^a@!V?6J=c-|%P6rCTlCVHY%=ijJw^B_Xl|HC5}z%7RG75QLe3gLF(4r&rW>#>a%EU zajD5PL)+g)M4Zd6**|`u$b(y-5$NsYgxqU!n4legGNwN>YbLn$mGoO<#-tJ@{;NQl z8*emed!};Ls?E->uAKwr;*6%JJv)EuY;qQtdbIo$6&n?+9v7&O`*nJy@AT?sbxD6_ z2ZmrXx@T%l^Z6mJ7utY>gT&@xuC6XalIox6VAh$QkUIP;Bh-@YW!*-&U5f)p!SWQ4 za+sz(#+=-)qws{M8tz+UBtCk)wV=;gRlG{NS^$qIMb#(=x_#L9EPjvO|5e~7ixP+2 zh{pn|MhQ^*((m5I+vLo=c6m%j*VOhWa=H#&x$#ujoh!~Oy1r$Xuj=~n`?(vtzW@GD zo4bZwUH)d*M^``nQ`hG|z2Errr!(%~``LNkeN`ti6At=idE@=Je|cil{oQxR9J>GGukT&Bzqkvlw!MN~ zgBkIFUk5Q6cJYI;%!VqEB-yd|B3&_F34)*Gn}S6_Y4XFFhuz6(63}m!7r2ZxNe0wU zMFQljef^t*uk`WRVx) zsPY&Sd%5KBZBm0*_X^>8Kr4(l{;mq0nb_~vg=^LalN#R>ZrMmJWMp$f1^$|qzt-OG zw`;VH80%`Ro0B3eVDz)}(%P-iC#gk+u0?rhmmPQH2QKOg6tq zRFHdv0tBrEjA~<;xTML66wn8cW3u>{(q`q+TQIuOn%c=QH~BM26n|*ep)GmNhpz&LnMXe(>F0d< z()@H|5xp&>nthHucsHrym`5_c!r98EksXHZmpdAE+iu$_r*Efcm85pY%)Aj z0Gu0>w!SNX_s<5n`G^XNFu(m6S$N9lWM-Jr>v1Hm`A*JZk5=)M622rKh5IHV`+$) zx7wcnmAV4aA7EZ$8rB=^=s*gJbF9CtMsLHs3%Or(C8ZR?n4t!S$u2RHo=!UhQYB;B z_afH|+YX!H&E!z1c@Z5Z9X<1GAph&lb1EJ}VzkYKc_^(#XtlPrG`xr+PF^ZH>=wUl ze%Kz3=3%2Zx#3?WMZEp6NR^E)$o#=F3!-Q>H_3@rV!;T;t&IGiW}YHxi|m7 zf$(R(Z#`P12t_OPhF@v$aDiyXM3DGnOu^|pM;mQXsT>nAT{ITcg+`~)&nImmDMqV| zR_jGuZ2=s6se=>|M<|@kb+myzfrngWy#+2hX!K7ctC;bs(NqeV)M?{ZyC|3MXX_BcWLZoSCv z!^D=RrHeR#y?YjvXeA*0m|Ya%z|TmJA1nJXs`BA!+>d(eOF4a*f)#7UeNKl~*T5^! zh5^7>+gLfBptK_+&*b}KJHv$GDAJ4E)A-+LrPK@2&fhKA6YOR~AI2%6c%&nRU~M19 zs9r3>1U6tQ(yd*v2S=u)wyd0wyd$5wbzta75Juy1@O(MIIv^u5n(4 z*8ZoVcZqf-YiR#B9VVj)>&6Rwd`b~s+g5GHT1*ht|VLM%2k!4ze8#4I6y-?*2dk%?b zkuhoZxL`BHL1CauAaOlcWs$wP;RE~wpg$A~5i5k-LlUY^U}?s0waWugz5HWh>J8@J*cq2G zBp6!*s|7L!9t8BYX2seL*x_NSKYEw0{B{jSs(&~R(Pw5ST1JMkQ9X%fLVkNcEsBap z{*C&EnwkWM>@gHOra{2?GvdsSGIxVtN14*`V)7ZkWWRDdMwg#kvUHI#FYj@t?aonm zKgaZrqseEI@7OV=c{ycSMa9Nk**s&hH~e@bMY@#Jq7*+5LyCXOX*;I4BvV#UlvP|@ zT9oC>$Rkp+-P=!l-9Bn~^Nf3YySsoXF38Htl;vm3a&zX*FL@la=Xa*j5V;|HgJHuN zJEkD3Xi=6iJtsG(WQi{$4h~K}D!P>|D)RFn1wOE2<`o&sa!QOPIr({R5HIfS!S9zT zL+qIFoFZd}f3ZIkdo(%N;NQ{S7%WoOx%-uqZfE6YWt0@<=gAfsi;D*`;*R6VA}l zC*u-VMz%hZ01p-F^5+-H@HD5ico-wQUFYX`+`X(l+0fCREMW3VGjg+xMd--9yezcq z&oK3O@RO*>BRl12a(kJf9;FKA(>`SvWfhiYX4m4*_G6<>bjqigM=37UgGVxiAImQK|9+hFLhK@G(Z-=O@V-Xp^JX%6*xz#$*bs z4S*EE>J$N!kTXpw%giD0l4a!QkpZM+i`HPU?ZJS5xd6l$laQ#5NlcJMPu9h2<7bS- z+QN{W-G~v2l($h0Ky&4HFB`@7%+AYCBy~lx%WJy^e4oFzYvHw3%>DhH&KvI6++Fn+ zHU<-SG7ZchcgV^_ci#nF(@m3-QNZNkjQG-)Q@W(!$Tx)&Vf;UgIYqph9xGs!K{Epr zvx-Z`%l0V(_bG=}2g0<$zb3bNP4IJbaIy6@wdJ)~MPRIQ*xM7Vuf<-{*|Zinw8Z*a za8P2m*6b(aH4vkV%4b?pmI#4#TLiw0X`N#S<~bN?%ycQiks;+-B1Z+7k090&EJ+}9 zl)a@MtWbTdK@=ugnn0_jJsw5}y5@5D8+4qNf>OR^IXBM9F^T43E=n->cNjy4$-gA{ zS&?V+5*a0Zi5ukeGp#R?L0Vd}`@79cWQ;Z~`J~e!V(Zd6#6aL{dv>ECxji_UVvpZE zkE6lAHB9g*yFLJby~zQ#TkJ*T6>Xk^y{bk(wD8O13^J`)BA;5}u^M*ShQ~3D%#QNQ zOUvIYZ(7>1r~JL8DA!g3<0`gWMmxi_bFheR($2kpailY=#d?(P*!)?6S%7IkARsv7 zDA;lex*EL~;Lo?i?=-!a`vBvE-H(d+-!1o&vpBkr-_1Zt4@RuUFe4q~zoB=sq;23p zxD)OuZ>tR<8_{jph&Gmxjpnz?=TsnCg@1k%GF=v(9E}a?fW_=We@!_;1k=m0aWDsK zssiXdEA>S=B|)-EenCp?^Tdohn}k~6I2}@Kmrb!3&<4g&tEa$ftHr|0gCTvtB9NSQ zg6j^g>I>zG|0!!(nj%+iT=*uACMi2Z4hr5>UBo_KPb?bm%@b&W!Oq`SK+|k z!KwvG@a@Iz7~Hlg&9||`aa%Cbe0y^^Y^^w$_96!exgA3&T{d$Pgy}$s%JD5b$`0&@ zTQwl7S{O3}`|Qw8 z+5$b^R)3u@KMQgL9a4q~EAz(1Fp@FMpUE1Z4y0r0mAA^jUh257+-X?{KN^}I;DcMR z8Q)UWlg*=>-vu?@DtKIdhHS^u17XK0);^Ad4B+9zp{`6O<7drsFOw0FPonn(<~bQq zIA%^dpR~!A?w}sy|y4N&2n;B?iEx!8o^DZ})F8GRp>GOAxF`}-qNM$1Zb)xU=_C@F}2e+Mb>sE*0z zQ5^(5NC%eX!h{h%xaA006%$xsdF(=2hU1nbiE21utJt}C95LoVCK!_Yh#`HM(Fhio zGkrMYdWz!EjB?74DF*Xs0R-WhvTURuHMO@a^?0`&v4MNaf#2ih9ZNTa%43(+(+JRA z<=>N_!Q1vwxi{niwf&z)oZ#DpHSw4ZjoC^EICzd=I@ldNXyrJ?I@X`#O@efk`-9So z^9P3)KY;Uc4(DfbIKN*-aefz30f6%hRdmP{=VN)C4_FrRemTW?enN=eOmK>xkauOwn0eIfJ|1zgNygf?;4M?MLMvM`UcF5~tuj zKwsEH?8NpicC2M>WKS&5^y!pZ1rUF0BZUN3&QGOKz_R~CQfRrtI|$+#;Be)rPH+mc zX>DBE%F$mfs3(46(1L`03ig-NwIvQV z*>N1rw(Ks?AW{c9RCk#qC-|O1h^jg+gchN}&jHImUxyCwFad#Z`<;xy5MPm8H0N>>3mb@oHB2}sUUE8g^m7KRz))lmwu z$PXY8t(=dtiCCu+E1O^~Yyu(SguBq!zz9p0)e|0wK>HLu=6x`aA#NuGz9;DY?@(F0 zu?~xM z2+vqfc+Td8r&33SXDnF=LwJ6tH4D!a9kMXwX|X+LyIg|~{D2s}xujS6pt_=2Eu>na zERjR`LCxUbrRx{)HPbvA2aAxBuFG;f7~oj$6R9#6pa=3paZUF}8Fk#+Id#JIkqJ z`v5UQ7lJ7uSdQi84obfyBMMNbzZrEicmczCy zIwEth+^`|gGg=(~{y{#C!h#1ZD)14WCw6>lMB$7oI;*lP=*_62 zJN45X2V2sFt9Ttu zkuDTOJ!~AbAS~3p7}`A$=9BJnh}vHo%p&NON{b9?2;gLpBYZ=8H?a&vy-rGMWBLCN zsq(8kx{TPxFt7AtX-TssSlF^GTCJ{^<)^OqWil98DSkc1r3+F57Qc`O3nSg|lV(|X(S;S3V%7;;6V$*s zQBg`QlL$C|bm}T{>P}s_?=fe#b`_4!>i<)82IJGRg+S|N3t<~>tEDEB$l;}wg8G;# z$OH=7#8D7ECqv9p&}KqGbU^{RPPa&GSN0E`Liz?(WTJlov&bc>)99k_wmrP8X~HWg zGG0iwcH#}PXJJ{G>o=F;Omy;rwFF(5hx~GoY#djos_+gSE&xVb8;>PnVk z104`B&tnudanOw&gh(|o=Q+;a7wF>5p$p6`LK%lH52_v=OJUc`CE4V#$kE7+zpM$B zJ3sS55R7{;uVdQy{U?5X(__~OEWk?3{ppO!xfv_)E2G*Ezfp|dJg|`j;o`Im8%cE8 zLD809s1y+!du&vhm9(*u^gCwpk>sp-B|jXC1dhIE4E|5iw^bviw0tCuirp5=gT5j8;LsnxJZh0f~L%T~k z7OyVA){Y3gJsJpXZY9TUH)8Q=$4t&E$to%{<_@;l3+k7JY*s6YqxnF(MMgaY$lAq? zX}D}iA&w46PQmY)$zCaonGZgNAUZeI<4IfRXnYlTvk!A&L=xFw#2z<=!0wzgE1&`c z7k<(p-BbT$L@HDLA^rv5;GepD`7Gg^UNl#StBqX6@PC6d4E}sEvB;drIm0mmYFeja z7k+Ki5h29;Tfl! z=D8yf4}pJQ1-2l%1!oRN-*cM(CwYlj#U-hm=q03ynU|#@B%2OzwQB2Nb)Pt-Vf2EslHR4U(K?|yzmN6Y;g2_tvnW&lSmJYl}#zlXH&^I?82 zWJKmm`rQKe%5D$PN?NxE{Tas8tr8)AwynfOid(vX>ooEJ^;rIB3oVvg`Z}-!0~Tk3UDc z0g03&jtE-<-iN3X(p9_DE;b9++RFq?HCGotyR5yW&syw;Sbn1ya&ElVhy8oNi*%Fr z!(4=nmJZeYAPg5`^9}iy@&DwS{*hn9xJ&Mnyie+}{LvO{o1s5a*l}e{^vhliWlOth`~y0*{dWIbvK9b}NQZryj6K#_}s^x|(~z=96pnpFNP-{75e! z{)(k&@BN{R2+C91oH24M>#($72D0S=$gca}10^i;VJ>HRU_p!?z`5@T-X#FdHvq5g z!tI`A;_T)k{2#dk==mlzr5$xEhBbyy#jJT5`Go0t0Z0I+6fRqc1OPWCT^J`+7q`7J zGEWI3FeT+{c?eIxmUr`Qs0R(3AlRwEz)Jh;e3};oyR-Z=>VN_Vzm>$z@e{rI3Zc=Y z0(`u;6rLeiA@It`aV@o8A6z$PRrpW#&{bidYa%<;ytarRnuu9XQICDu-djWPar7^6 z>$xUC1xAuM8bPpcm6wt{&PV~X78M}6=6hi`qZ0P9ES)r0FzqIwVcR$iQnu}ar#%!9 zvCL60FIRVG#I;38vMJl@hS1UU}_Byb##h<7Z&uL)2=Z$n7YU3v>Y^ibb% z8VV1Rwh3GXElU7h+aaKFsQ$L?A~A$DJ#)ik>R|(|kmelcaO)-elx#>{WLR+EB5tW# z;H$#3%2X%_141c=Ab|))j%7&^8f@K4mf<}%ayCpEqpj@?JlFP^?G zV1st-g(AR*h{_6dr`iPq|Hwr_vVtm9CG<~xf?P|G0VpLKzI#Zz^Jl^B^N4vQKhb0; zup2(GYe#44yaVaWqpb@01MIGVMv)95TR?%(;MEDao5lyMj<#7lm*Kfeisv z98$%87o^(^Tw zxh}6CmMJ1}{F|NIJWCXAI0vKhy_(fy3Qu~#CUY+bleOmzKYK7AxHJ+kTnqH2*dEX7S-peH`!r?rrvq={i+67gtz@Yt$)v@5j~fTX9%S z`i3rkl~qkb-8%={dqnHcCy5h3Q(KhL=aH5GMLh4yNs#^OCpx#ycio`%NWeK8o}E)X zf00D~dcc9i#Gn0W8pin-LEYwIC(d51+wA=1Tv2jg?cf@W@FE%EQjG9@$v!ta#zvP~ zx8%aw%1`4ze&69+ql?GAeG8^A}wVTaLdxZLyZ@E9aR2u!>4kAe;%&a6y( z|8Bt<0Uw%w?=z{Lwi40*D0cQKO&b8iY=2pr;dxj4mFL|s^>YM1sOuuqDjXk_L16SP zZm-Q@Dk@!uXeTIEXUjfw-CMXeTk@IfSkF%H;9o0J_dSm+3oAD}Pm#Iy)#94GEE!VZ z_rtbJSO)eDft$^6zz&cN7?mbv;)xbwZ@k zVEyeg=PGfKzE=r-Pg0SA8KX!D z=k_sk=YW-@=#Zd^I+0;dgt(0pA4#(Cqu%8R*PP-oHHGff6);S**>~p8g7|dTx8X5^ zRqIo8;lpfyK?njnRa=kg{|QqNOLUC8n)^`diH7sua;>YYR;6Am*nU(R*)hOwY@!|0 zd0?CzPqb2li)VyKl%fhqtF1KYzSv%6nuu7i?TsY;!8gs1f73kan>~{XmzcyRoO2uE zXg4lgNZ$^Ble~?SZN%Y5DLJ(sXT(Zf@cqPIiBK!;tQ^L6t93}J;~VS0+qFpIbYp_Z zzQPe%2(jXoz~qdCS5}krU(+Gsw-iDHfiGB;dfH8VP!W7hfTc4D`NbcW$27YaBp)?s z4803UItW<;1uu;ZGkL9h5!MYD9q1nZcZEn|M3I!9+F}-o)ZPkH{BWGEBBPZyOa@j^ zXY7ae3nwD2!`Te9$FZ8RUiFJx|@96rZL+XeaJ7zpQUq7l8o-y zBrrx`pI5-Nk)EN4#1XKNXwFr_F4KE0dq2d_(ckGEfa)_g@ zK3Q}z`SYWqszygkxJAC*(vR!bdRISDMtlW z_FILB!HDm7NFXV5Z$w~{qoiFVISL!i6}*_8VpH#xEt_I%JWh)~PZsIi4IbOX_R184 zBjV2Dg+edHGu=6jo{-?U5XW@Cj?*H6P}d=n91;{IwX4K(=%pDBN)m46?uRhE^0hxO%X9|!DbNqwDI~Mr`y5(( zVMPT?tEfyt&_VVbYU4-5O~U5)coB28jm&_HV_#lxFqqeUW)=31>*QW_{4C@=_K~AjALOJ5->b78hq+ z608YNc0YQw@pA!r!>m2`ge#{rdjZ%)yIi9N{{qM3>;Ekk5scB0972@CZcK~nt_DXU zJ9Hg)M9MSh#+~lEHzpd~S9gXoYe0qjMn50AO0mL%Xv9_p+bS)|(EfD|8w&fQsn~KV z7zDhcjfD$F@=(@)MX=^_uR3>ko^PXhLkg`qEuy-%t@_;_KbJ`=hH_dyA8eE`78?b- z7nPVNP);MJYU2M_`uZbFg@0T9rm_S&HmB_O0tCtll_4R)oV0kzDxkZV=tZILsr+*a z`y;kKPOa*pRbv{#&r1R+g9p##z8_Rz31j92gjH+qwt)KIt$)iV=M|S`XXj+(U}^CX z1>AO#MYWXlEG&0=%7v}=U>8`B-u4405$PI(BmFn{B~vAv=uW()fG`x~Udir}Dnpch z$ImhT50nY&{8LgaoDj;N#qe=dU=cdB%!7>esGzD3_%t>-$pN#JGY5K1PI@WP zNr)0-)>jCbVsYQok4BcAPn0H@7x;xU7NkV0#uJWEiSF86#fF|{X4?<4DNZTs)pn7H zYM|ay(sjO1o7%hD)v5YFe$c7(bBnmSFC7thE3DwkW-musL zP)gaol#-ewsNn+qp0sN#j;w}@@qKyAMPIAcqPt#gwl@%9j~nOv9|AaMP3dj&c&iG2 zDuLw*3z8gerO|EeV1{Boj6`JVVKtUOhlb&VT1w0&38Ji9PzIKuUN8pIcvfJLQX$8> z3U-UJA<8*i4|}NOLF2|*xxNj0nP<9(+~?2@l~eSi-zC(?E@+wqWtoJO{|&ZT)M{m$ z#QgUV%SLxj>g65`CH@wt!gHoxvb46?LSP;}A^=H(TXR}2`EkRx6wyU+hetFW+v?QB z#QX1?HMVSeIF}U>yTb#9jh>vfHx5Q*4`ruB@N|cu*$Cdvx+3H>YNY>y5u9q`mi0f; zBsunF7684lUrT9XE%;X%u9sd&8E(2zD0~ElOC`#0jqPH*5Iw@I(?MAn@tVaPBPMwL zZ!lx5rvtH`4(Q312_r_$$T|mg*mredNgDI4RK(KWQMp6R3VtV>GL6Gg+9g5E?ARE z7Yb$-p40JfVTTa8K-;amg~a+~qk8uuyRcs%<99Frl{G=eBZw%QF+Frm5I^54iV{jn zv0GH)50gpY|NDyrZf)?ebwO#K*@k1o7J3s*ycvYI74V|vp|%mia2`=q{9m=xn6-dM zS(#83!-mUKCTY7K#N=7UH08A2796m~+ipKYD}a%xhwc1d5D{{$ITVl)WX&=5-w+Zu zedpJ>y$OQR2-^w1(;j>@IfVFxc%=}Z1mv$(T70Mt)Pd*WAL71@ed1)r)V^V1>wQk_ zW$b6-MijPby;N9BZj@6UapNOgkDElrR3>awgqzTp-Xz)M#`lDj+$dv(Fa z6{l|t(&6E}!!L~~hWC@$3qHMK2KNO>^yf9jmE5Da)nRsq?`Km+*H_>uu7FW;J0>=I zS|Zfij31R!9Ot<9`BBKI10S*m`!HwsQH2eu4h?4SVJxkGI&Uc2OX%YMjA4OZ{FVobcT8aT*d$C3s-}?n#a`H6d=5 zelChjtO&=Bu_B{lZP(K&56hHp`X_bJ9}dToq8`d9Ld zcC!z2bMM}-Q7v`mZApO#Fb+IJ*2eBmyz#^R{zyD|+xH*e+i%fzoQFew{Sj!eMR0?; zsjM7-Q}^q)9qIU%{Q7N(>)^k>8P;{7BW%v!-W20ojPJBx|JIS_d+|*>29YB^SH#0#w>Pg}A_XxLX{AO&zW&oCp6k z(g!n2aJ#_4?Av~{bobX!hbv>xRIt_XV!tHR7sEcY*;wC`_d?|R5)H4Ty2@&jTF7M5pxDcnpBpUqR!hPEUi z-0T85HWX0_HzuK>8HsI~YIg$w;9^L~sX!Y(gc2;kOE;?TMJ1dV6mP(Jg!PpdGjK#4 zj>D$Gu{bo*Pe_l7z7>u(283Gc!`Xn8@09*{ zM}#a(OJ9U0=~N;77+L=k4=08v*-H)|z6~$oH-7Yb3*%p#q5eJzT}2)O0*QH+R}c-L zH^8NsufZz|o}HLoN5$H;052wt9@i*{i1UBG?N1x)Gs0i-3~f`kNSWdJ zzi!}}oVpm{mGo4{J!xN)cTtYXz>$i8Iyp`Yp!Zf@P=IM}P4Lr`kE!ItsMyo~v?ICV zql|a`0tbFzjU&fHQ46B~){c2;GKz$gaA6?e6bJS_9Fsd;iF2HOO}aErcxL?CK!2Le z`kP{K3xt0GAtx6#JRN*1d~LuOdYrSm8031TPPYbfhMs`u`h)$-d^}qb+Ym6OD)GlD z4x=t0$VHHhtec;Z1NtaL@|0}`&QltP=f-KiDMlACgMZREl5!tU5_{ng+JZDqTQNE8 zu^5xQh#Y(jCs;BhbRQ7DP_bqT@Nd}?U~#yzAi2VopqcqR2lp}5_xsQ+P~1@?NMb5U z=iWdLby!aVrAkH>G)~<3#ZQ4a*m752C!ApTP8&`R-qp7sx!goA`;f~PdN}~C^D=c$ zS;)Pp6O9@iY|c}A$|ucqMlz5yUQaMnI6@O@K+ne+iU(KVbjft}X+ktSf)t$^yitLm zmr!y{;|y!t!tMr2K0i76L9}J4-IEj2RWiJ$xk$2e^YuwwRCrgc8e_m8~9RlTU zp$4#>Mi$E#ZJt0E2}N)JL9bG{leI zg`u*FvdL&g8et!p=GVsIjCkZyBd1tn{!?$kkNl;{5DCXp_FOPeJ%B*D1d3e5XoTm4 zILDQ+1snqYQFnG!*&ca6a6CDxI+W-nqxOQwmHvQ9x_w?UAIu>3#31u@iB(&EI0FuT zlV)fKE8aGdq8vuJYzg?vyzl(qQjgZH?K1+L?J3Q+i8N#g?NY{cJ_&h#i6qL$A>5bV z;%FES@!twG3^~tH>ndbF>{Dxc>RECIqsySg&aimI2&{;w=T?G^BO%Wehe0~XhQB0T zD%2dFYyO}iUQl!@Cm}=oT+O0H)EQ>3(>bV?v)S9;>>d#H@l!_G0pc zZ&V-=*|!1(?LET8P3NEJ*Sy>7Y~2$T1BkR5B*gjH8ETg#yaQw`4+i}k)wJ7ST|5+o7T%iXCbLH;4;DT0H{O#VTK-YtpRuI7d6(rjxbdCoXH+ z_XA*453SJzKwJ`Wgws}Wh+f|j@;MX~m}dT6oU3ac;Cf}7?YrShoDurM_mrnR*n8h# z3}Ib3PQo>%(Vl{NL9jorHWh=r3^pXB6S+rb3o{s~5;{Q!&?0Hs>V`O)wwK^`GEQ(E zKmz(ZLeZBSlW;r^QVg6!o&gm0R;G>dBde6389uLj0mDqlQs#2@;8C?|};2fZky0|>Qz|m>?FlnKE{hta%IM`H7Pd_CIiJ?CtE?y!WuLBRy zPp8p-z|Qp?ZF%SmSD-1QG;Wtt zzKfVGLfy^luGN!(jHg(Ciax4zsOOFfhyi`2F3343o$8Okp?JfdZ#a#Fa-H6|9X+oW z%OP_9GxN6!E;Pinb8whD8Ov&It+S7YTt!xN&WHynktzL31s@%UE2<7GzfOXR0IIfc z+yJbP3QbyxFseo!CBJ>W!tUGZ8>v3#csH?1QRV#105hD#-gYkDolH$ZgxEz9YcGFH z`(;g~b9)p+*iB;L$vOo80S?B>8(Js1R*5LZ?IN*3t6cZWSnfjIhrd8r=l0X4*X)Fi zU0P+$JEUBO-JlHa%+!-BsuwVXm4QfcVejgr-#?06oy1iX*qd_&VQp8Q;9f)nHJ51( z3TXpZ1NS0oa2aV@&>s_Kuv56G(MY7$!?4{E=dwP2*0v2XRz}|n0&%iI;pO^DXK6-r z<^WH7MID*8ZwD;Lx%Wiw%AA*PR7j(=2>l!KWIKVHR*AT%?Q4!qEBs62{`VaChHQ+#asi5_PPio7w2&by_6VmyvGwya+_d2dBxeke=cP~^-9gfA+*HDSz} zDNysS5+*Q>BGH>03dh-(Go8}=369e;FIu_C7-nXh;kOW-iH3lR}7a45>^_9aqD~HgNYZs7{Yqx$F{B=I_r5A9tM$|L< z{lEABg}{Fy@Lvf07XtrQSfGPXLRg5y;e@bf-nIXJ$`4NS8ViIoKiFC7J?r!RrI9l`T1v}i z&pT5(B{k&pl8)$*)uq?xeEzr6=U)H$)XWp_es_81{`OOEq)uy(SddzH^^NVR+plKr zNWFa3cUP+H+IM?WXJ4xgob}CzZzRut@!A`!=j^%>v3rjGFPbmsjJovm^KEY;6> zXZQN~Gq-%4^!2RQUSI#@oYO~q>u2BDy}n}R?l-?{o>lnfsS$Ix{@_qGv+C5Tq>Ps) zA>Y8@=A-8`pPG9*Kl9x^?YHN-?K}O&!tIB$pUc%BE1S5ejc)3fF_wX~`1<%=E*;4TG<=c~EQZK)5 zh$*}56BV=aatU+b=UV2}&p(qqS-u@qF>{|z)+^{E{POc8y+GpKcVJ|q`E)M(D z@$$1_L;6a+ugq@##M?8x`5-=o;%fm_arQ#-KggG>y!p77=V3+Kt8U)Zu!>TyZLj}btTSPuWJfBXu2NhKI{XV zKlegAl3v^SO6rY5!A+qWFy{C7CqMjshJSxS&-d-^E$@$gg!ivXX#1pTI$(8W zZPRQG1{B`LjhY9vm>ac`2lV^?+^ETvnY%kP$+o-vJo3X8^WE)Vg@xfFg@gdO2AU%pi~{Ah|3IL)teC3y9$$R&hqI@z$s`gB zB^0X)6g60_Hg}3VeJZ7yI|E(auK!F{)va#|Jv-N=b)H?ooWU|ydSiT*_Q=2|0DR5i zEduSyfva$N%IyZ46AIU)`56a#+f`ROOT>0Hm9NeAYYi3}J+PdWliL)hR%~h5ZSU7S zz}Yj)WEuqrWp?FA;2+lQh-T=#+KTn$LN8f-Db$EStX~2sJznAG^uzN%G;B=6SgJYclY6#u0!32EO7y zptDS$iIfUgnifPids0}0jA!4U_|x#1X)^t^@Q7P%XFl6Fv3PiVY;+NOA-{E)p!rk0 z-C*)&I}7v!)R)7i4X9}fs{i{?QsJ{=2MXJjra^<)5fh8?R%j7hl;7HH$F3^)X29Mb z!nO@a{2|Q6rFo}kXH>1J>yzpMcU)au1}E&)8vB@zF;X&ibVtg*J;60h!rskm-sA1* z{T^&U7<#bLtVrtr#v0+u^7-@L(es9mr9SZU4>+Ixd%{%cH zF(pVn2OF>uMyInHF7yGWoRvfrB%Asl8s;5o*Xn(*LpYCVb-SmK^aDIZeU6E}k$Pv- zh&X#i)eTqCS=7Kcc~Tjxl|F}gJ~{}<@G@H&gC9*RZ#3F#SBq<|A3JhzY}$s~$H(5= z5dP<}*)H}Bb7SM>?E^1jqKJkcRO+`Zso#n=cJpEG0Q$SYG{JAB{r z%Ixo-kg=Qc*v4_L6C`YVu1giH1+rGvBJM(1SJ7U#^254-uib|On0Cro){w{6FKj*7 zk1u&XmjX{A-lmlpv~}-fEf&=!ZJ%jM%+uCr*ou4PwIkxtlM$Wo#2n4&tg-lILe_i zTa@hFy{$#lYu|Q=`p!Lkdi8;;Tn8l+06k2e8`?{n`9OQDY2rmUzQ`~G>2Z7ALQ$QQ zR{CNfI-FGAm#qqMog-n7FJK3cb)6+)TNX^O&Aju|kH8S*EO}Gw3X99D*PnKg2=Cdu zsM(Mi_acUQ+oh+hI<~&9YZn=X%yb}Mb>ft7b<^v0F=y+(daK(oTnI(Gk`8XqOVfxq zQTPZ+^)OhZXxpE?YX6wlINQ|qPF>fc>Y(T9hQ7BgTsuW-Z@}JsOn5xol+)Ugvj>;q zljC=@RXMHSi1$1ISz9Zt})zSEJA=iKC`ro9qjt{c#$b#Wwnb0Pb4 z3WFW~$@gBfJeS?&P=L*uH@(!?G&D~2wSVQ%y1E++CbR1ow!S;R`727rj?*106UB=g zi|3m(?CgcC5jE}VJ7wl()Wo=x7WNw0zhzIaPD&B5b!r0r)AKraHrDLiRTogz4S2u- zLqCj`GgHNvbfCul3)oMRtu?+*YZM!}zM(9!yVd!b7UWJZeaTcYk>Xcj-2j8C*|##a zpe~6N94L#*o;Pf`0(LZ5+D7$flasb}0aWgt?0Z@0*gOH7s8Y?Dqhz;av+>K>GdZm{ zvbznB-Io;bys&KYm=_K$pB(bcrKh#kFH~1+*S#QI4$2gNF*$4_hAZ$S!@U#9b*^<@ zHh+=CU$FDFdOOCnRP?^59!GF56*Ug>8^(re^+IxURIInB-%hPpBlRN2l&W`k#dphJ z#@@DLz?BSf0%3zplx?r~W!j{|&i?b{>z>yVHZD#|Ggc0*uM5)FQ)X(6QB2f zI`eNRkJG#36Ul2s7O8#knxuf8lgCEqvLi#-uw1s-?)__%c6W%8;PgUbO$7A&SkX2I z_G7!F_LFvd48UV~M3Oyu?9>`#AfxW;tP5IL-Slx?s7IPGO(-)}q)92UxE2m_0rOFa zGk0q1M>(;7k6^3QT`Iv>#CQfP`A&t4&`1omE+%j<=0}cJU)8$G3#Dp1X{5HgS+ZK; z7Og!rZ2;lvja>x_=^djqBTZYkV7TInB;l@D<6?*_Taqnfycx+iqpP${+xm_f^MPIS zM_!(nbKbsrtH?fWcU#C_0w1-Di|Y=%uLqxU4aqRIPk6tB>ixgxUk%h7(%#{OM$GTLrDo0&@Z!Ji33tPt1l zxT6_tez}_}8#4lRRe09MXifK~nhxA|_*ok}%>K5Pyf?7%v_1Xy zF^(g7%CgfO(?)?~fKV5R${r&`vp}?MP%xvdyDAb*WM7`fwoeOm9mKM;6^a@UN{6l| z3&rSUqj6wnd(;;Mck7UoyZvF`@y1pWS6!SD4cu@)Id*F|?(I?!x ziQcC51hnnO6%|f(p%>n8*Od&v?4e^_Gs^7P(Dc&`E6oUI*!@#k`xqiKr_Y{Vt2qNg z9l;7`H(w%643*U;lAfeKUp4eow+UlNPyQ0e^`vP8dwy24&>O`<2Xj5Cs3$$C__((J z!EQZq;eiL)`71VJ0O}HAqrS9~iq|8i>2CX+jMu5WWlHwWbS>1hlS;eF zh4xtZxfa$`Ot0IqMpIv-aqy~ddam~R*1E46YF8f41mD+wQC0 z7cTIsZK`wgRw#%p=%3a4-t@KlsCe1zHSEOcWH5R4bdgzZdr6t+%HA*)fch!dGAwk9!bho6f}7_}#G52F_;HHjGJfgCqqk2`E? zGB)QZT~4Uibcpnx-P(N}XiH;Uiwu7OkGdw{ z(K+)Y(Nu8aRZ<~QKMzCcnX9QarB0|>Sx4r(tmc4QRcdP1dR_8J=>~3wBCpo&e6lt- zhG3mxk5(U>7!SOkpBN~tjhRvxI?m02s{xbi0;bgFMPtf`=-D?T0iojt_MnW7PP#Gj zc9X8}D9WLY;LyVpTc;)xR8Y^ekMIQ_m{i*&*AQ*w`waF@yipmB%M%%`!bH|zU28gr z2`@(9LNjVY1y$#!e79Y1M&n47Vd|J0-9PMSGcIDfC36sM? zm!1ifP?)UNj0Cd(x^rAze@*SN`KYmLdQDdc;W7r6Nt`fx-G{oN0koIHH>a|v;@NX? zr1qgc?C#hE*%{Pjim#OVu#K^m1HBcMHxB8(lNb6`rux?YeH4g6?D|;^o~@0HkC-95 zEMMaDvk%a@X}DXXwyH}|8!B~+(pH_bs~zf!3v4zIZD)5HTgS!Yg=sq38un-$`(#Gz z!1%&}CD3F%JJURWF`1-JQKn(KexD6QI@hb8)eK_ftVaZ3J1Cs(JCu^sfe{XW(CrFP zx9KSU$7$USaYe@WR(-i5^@r*M{oOK+Qr|am*K|#_+N<(_b8WPnCL}Rl;8haXt)eh(*N1ZR6 zk7SSN(W#p{_QDW!ip`9>7P$AE?o6Qit@W27b61>W+zj;fn&@%W$AVF9#mJh9RtkIW z`ASWKluc2wNz+=#tJnw?tDpAeJG0r*s#?>l3RRp>WkqMrSBkB#ep#QV!0S!JYnocP zse3lIIY@d<=P`y(T_L7!?lg9O3;_+a}kxVl}oq_S_uw4R7L5j|NKu1%C3 zXJ^N-f1BI-UJQFp3jkaXW6uquv(okR;a_#%jw!j%k(zC4Xr{!K}(tETeBhK;vdX7@DvQXniN2dabmlKH$_o%&K`*WV7i z=!YowO7-lE8EkA8=`;mP*VWplaLXlm?`v3&ExvBikcz%1Ycj!i!2)63ugR#rMmyonq$9^^50i?eSLVi zeu(nqNIkpJ_+9nT`pSy%y3oc;4VSY$kfTg=Tx#&&P*)!sQJ4EEI(^_$v7c7dZqGIc zvV%OSEYw17?62AJ5wA1vtjTDThWoCsaogoe@KvkKoG;jZtM=To%ArTA&wZ)N1XI~L zSs@RfO?6Xogef#Q7;00+yL=5vt;3&Wm7c8qL^gIJ0qRf$W9X;36Hdy+*|VYyqB^jP zrx4f=Vmh5_c;F$ zIlE*M=JlzGY_2;+oO3%bhwEe1iBWnw%BZWgL9f;vc%HP>NJQ&^S8D?{s?V>xye{+h z<#69sP3vpAo~c>+Zf)+%q>RrC3i0$frMIBL+t-`f;H_XckE}ISEU(`AWyXB5-(%24 z%A-pb4dgC!qoujSO~=;9JF&Y%gq2O(YF<54b$u;v*M+n`7R1I(V2@2+q&b;35cN**-Ua#-!D@Y9uj;O1skg!<65?oRXl?Xj zwF)m+6iSJF3M#Ih^j##ok-WWW9NXYZp*^(n^&B5K1P^0B)=qutGE3 ztFkMn=J|YSChVvx+=b4UVgX8$Y8%+N>EwkpL+k$-^Z}zx1M+Kg7t{nb0l8CGR;LCM zVrVM$snGk6t*Oy-ly%Ic+3a1}G?${AqD^vn!nO=33PV@dV%DJgimK|01>w)>_l^x;q35YQL1~{9GdU6KxWhBqZ(Xn& z3yNS%L&$3EOT9wAw}noF$M0H=)%<<*%AguDo|5WRSB@LLA5l9l@kRZ)aq5h4|LRnO z)bN;gkULwZbDb+;qr&OUY#kX%P&gfldvfcN@U_SkuY`OPg|p8kway4<*N0#ZUJPcR z5z{$niuKv5SB^jVI*0L7K-ZIMc7&;C)I|6Sp%0F$ITlyDBeW*32)$`auWqvAdh>Gl z=JC?E^&gL?e7_lrMZUiE6+LNAh2}=+*>@9Lm+9HpyrJI=s~#{PuOFCM-INvX#6BO+ zKJQFhKNog+w?1gX-u?PGrSZ5+*4A09{}|*SmaA7BA+ljb#YpK0LN;%Qu?Muq<6__H z)IK#|1xVkJ_&pvM^kMCRn>we~cXcP?r%fe_(Q!6dS9x41XXE18RFucnr1;iFI$`CI z2_-+R`gr^D?^nILdHMNOJ6^9iwJJbf@rPCS-d+CLs(ULcK3H{c((-p#<@T-Ex~l)7 z& zLoIkEO=3iZdww=aN$B z<5k#0YQokQHJE9fgw4Mw1H;qqDOuIzb|A!&hIK?;7`rfRXdMxy?YORe{1a(d$i@Vq zRm9>jwtNS%a9+eQEYd8Z@O*Td z1(P3=CQtw~mH)lg=NrUB)I$x5MR+P1}AkFc=a;}f1k{T`m%Q^{gYd) zr!V^*rGIb>IQi$%-Vm@+i5y`Oz|Mp#Epx4-KsWHT!O1Jo-C;Ur7A1Evx(3~@*-)_e zE!nOa&tqukv8QJ|#o)p&uw(}k*=rW8;126PvwQO~5gDnEwq#fS0jikKCOw1V^5qru zbTDBtMGfuD`Hyvv1G!08uKjOVeQWIRONE-Onyi}o_FRo3bM@f3v2^-%i?{lfaH+1a^-=-T^5SS z*W%cBF=Z@IEF*1!eR|6}P#cnJ+!i+tkVt1Kx!=)|`gf-m-@khAf z(&5RLdF!9td5Y>8gMlLk!=azg5yeBNln(to&iVLbr3kjj*4TZ*t9!YRs0r9ZjN2lx z$~kbu=v52c0|{t@VPkb=DtUswC|?&CN8+^Bl*oDKhIN_49uSjh>kG`^ZMARIzi!Gt znD!IX@KwRNC1tyI7FaeGthuYp?*&e0m?E6uu`J^CmDX6Jol6XJ=ndvEuPDD9ZUOxQvMF-)24ndBRQPyufc0AUic#wP5}X>6ew_||RB zHmtWddum#D!D1bwyHJon5CG$E)6?-M5xDa>RORrs(-M$l(n#dTY3O=-DINN>o-WF| z%UaK1rBS=q(@sBKZkV(6J;QrybIlDQN&ydV)Z3e|aW6b893BN9(`W-Xk3L5ijzM9} zX0wMp*yF}*+*H=j7;z%;|Uu&3SGWnK8;zjtNtj*(KPoyug$`W2md!Te zU&NvG~4D;sk!RCW?#0KQmj9BdZiX#BQIPb)+bXj zC2JhC;7SBnsJ(WU!^#ro6sgT+t0;Y=Af_l6U%5b&XU49C_&J0&F~(RkOOj#C_D~KpQ}cwkk?1tl)8!O`0;A zAYF2ZwsXtZeKHBtS2wY-Phe|0Siz2evW)=Ma2p5MX&FsySY(5UlP6Bp@pyz`>-+-j z{g%R0!3z097tk@VBJhQ-LS`qi(dW*(bXu$zHNmNYE0RQ%X~5gqNNs~~**zN5w>Pru z9tTMZnNV{Ff=5P>rV>`BxM?qB984Vu;&v&N3IkAi?x8-=Fv>k?in%T@av?S1LEdO4 zZD<=`i2K5B%1yf;VE44-JuG7evw$F*d1vYgsRoOoB## zqa98WO+CP%Km0Hqr#W?ri28w1a$r6hnIO!7TmC29ggsr$#}yQDjC9FthlhFE@n=u)bR+CxTDh?*6e;oM4;9{Ep0%JAOca1pfUPD#VNNBR3!qYp3K9gE(&jn z-o=OLj5Fq8T8H25d54Uc(7_34TWP14a&!Vnrvq@>(HQmvaP~v5CTReOnLi^y6n&>t zLhuBoSiYov9E|3| zups65eTBPLDJtj1u_KL@6VT*p7YJLl-U3Znwzelx+u^V6=?w3(g4r}b`O1u}8;w-x%zZy2}GNaXac*5auaOK?ILc*X#rX_`Y|1w_tQ+B(_S_ z3T!(jLJ2!kwaHnEN>v=YS)}}CUtvQE)3DGV?E#twa`E%DQ9c~5G=v4Te2_)*Xjo#H z`>`TF6c?CMyek9d@p+yHe&&j>>0Fw%^sOv5*yt^G^|*Q{mD@R?M99AH&+erR-pRVD zEoJ%gOY>88=DQ`+QVJ|+&74ngaL^^Y;_(1)fp+YrL*kXy8!N2P-V$|8fbksS&(&B< zQHv$d;99If$Ts@30}A$uU!SeJJQoI;R~B0tz?I_MzL3fpacrkh`5QEG6w?r>O*SQW zqZ}Sba`tEOcC@C$*x;Vi&4xcxVlYjya({NZg52J65h%yw5Cy`L$YJT2$UOFjC7Qn` z2d5;f$|mn5Z()~!RG*v&^tY@v|BipsfhEG+z`e(Y4=p|*9J2yJ`715oCVVR{ry7^F&w z1DdG(8-R>u8tg&nXTUm>{h7}$6#)O2E1{L4(D_!%D2&-7y6T6s4t(W@`wH_%F}tk& z>9l3vLC*caUhtK_)f6U=QB=MZ$2##@7m9s}>+wKJ+u;p4zweHQqMf30Y8>0aW3wo7 zeu(`j&C6^CmxIQ zl`rlChEP$N630gI*!>hcS;4OH<|b`fcnM=KV1QS-Y99b8D%0ZFH5hwU z!M^6p9`)if`B8V?lzA+He2hk|9Teh2oAI?Db$&jt8`obHO*C+xbn&~`q5SL> z230UjzoCC9mmBa&$wuKXrxXZ2tX7HfK5KXR@$yDYA{c|^h?sK|3bJC4zB~EA%bf6w zJ6|QbVS?n7p58!wK*ej}bIe)_5>=ty8v0PGJa|5^dygN4<$#>W>ms*LJjEY8JI4au z8fGs!2()T7$ZNcKr44-uqQRYm2%C%`=8Q5>I&`{AlrDZg_i6t!_b|2t<$Ed=M3(nN#TWeHhvg z9{~dE$s>k1&IKdb*LffZ{+;nLju6R&fgpOjy9~)Jma^wvhL|$HM4)WHDfDI|*toj} z!20X1pd*>0Y4FhAv5_e?bj9>kmuEDrUSo&_G$r{NX zN}Bc%8yzF<=c8~JP!!w;8g*)*k=(z_AH9mZYVYnA%i;=Okg$#IWnjrE$QHk$ZB@u) zBry`c%Cu9Reb>Yi<8(mzpcd(j^c3BQQcsMMxYhEpOV&SUG4xH_#2njzCTZ?2HT{$B z=UP$U4oi6=eFHWFI&okfqEm!73qZ{GWwvPcDH}jvg86n4x7al5KYMvA3C|m zB=)hR`_yLUF zK^SA~9Gp$x zWt;5HKBH#WeS*WuJc9xmO~4j+1WaK(684qQY8c!|Z4bgP`q8KDFv6_3r(fsvvo7pC zmx>{|`t(9$4>;cpSHtc1VRL@Y=Gnvd5W^;zfx>})grj$9`{w~Q)=_oT1<8HX0l3J_ z%+Afs+1bp@6gM`*M6@K;ixOV=>{X-Iw?n~GI|XYg7!ax{=?w2p@`o=jP@l%l=^czP z>*@ma+sN5yadp%WDaM^=UjJ4EDycg#8>M3LR)z4%6Lz73ZMe%ZBAN={wSyYG#zbD9 zOM27rvLf=V4Cj#|4ZZ+x%W0a|n@tI|?}|?FYJXPnTs8S8cs5FxS}W=j-&Naj40+gG zhqLo@y`qTJ!VZ=evyBdH@w9%zvC{rAY5+$8NoW^ay|≺K{R<76qC^RgEvgR@8 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 z

    -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%0D&|$wmvz`t;BscII zc#Hele2iJ?H?ZN|v0-K4Y<1uz8CMh`m`8d-PR_bw+%a&_xEE4@*H>?)7Ul;inPesN zh!`}w2=~Ux0oq~?ePWCKg(@9Hiy0{#0zn@Y?#sp<3H=8dRxq<_HwpcdtO)j7?kB-8 z$tD)d9<$r`SJ0jm=`e6aNSS*_&exV>#nM4S?22nND>`Bh$Hh#O61J2LVW&QVEn@oI zl=K>`Ewn&hw^)hN_Yfg5ny;rsrHs*zRfEGt#YM}#+Es(YdNpWBKGjjVd3{#siQglMuRyn$$7<~f5oA% z57X!Bk>5AaBJLGKh^NfkcR{`;PXIW6eb0@GQ%tAZukRrZDT$E#ULB@ipAs%?PYKog zOoug4Mp9dZ%$Smh*R>1tFew;KI&KA>6AC#xDP`aubzs;{??PkAu^@!i2R*58N<9Pk z@Q|PR!!j|8^qieVWx;E2&?s9scq0R$@_bP9HDa zXI+32F-B0cs)M>|3Ck;}0WUsHa#|B~#POozkPDU+C+_9jXnU6vlVchaPTU8j^RN*? zR8PinU(uRn#LfvbDaI^o3k?{F|#P>Gh$i*w@{c6OQ!S4;?-*ssVbrawY0W z)Ja$L;w!!4?9KtÍ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

    Fpy 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 R!Kse-POYD!tEX0Z{|^R8k1GHG literal 0 HcmV?d00001 diff --git a/EqnLib.lib b/EqnLib.lib new file mode 100644 index 0000000000000000000000000000000000000000..42c4ce8fabf8bfab268783b66598903b565c89e6 GIT binary patch literal 11315 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 MtnF>L49tlAC;c8^^Z)<= literal 0 HcmV?d00001 diff --git a/HP49GP_IO_PORT b/HP49GP_IO_PORT new file mode 100644 index 0000000..0b8c173 --- /dev/null +++ b/HP49GP_IO_PORT @@ -0,0 +1,185 @@ + +I/O Port A (23 I/O Bits): + + 22 (???) (output) + 21 (???) (output) + 20 (???) (output) + 19 (???) (output) + 18 (???) (output) + 17 (???) (output) + 16 (???) (output) + + 15 (???) (output) + 14 (???) (output) + 13 (???) (output) + 12 (???) (nGCS1) + 11 (???) (output) + 10 (???) (output) + 9 (???) (output) + 8 (???) (output) + + 7 (???) (output) + 6 (???) (output) + 5 (???) (ADDR20) + 4 (???) (ADDR19) + 3 (???) (ADDR18) + 2 (???) (ADDR17) + 1 (???) (ADDR16) + 0 (???) (ADDR0) + +I/O Port B (11 I/O Bits): + + 10 ??? (output) + 9 ??? (output) + 8 ??? (output) + 7 ??? (output) + 6 ??? (output) + 5 ??? (output) + 4 ??? (output) + 3 ??? (output) + 2 ??? (output) TIMER2 OUT (Piezo Speaker) + 1 ??? (output) + 0 ??? (output) + +I/O Port C (16 I/O Bits): + + 15 ??? (input) + 14 ??? (input) + 13 ??? (input) + 12 ??? (input) + 11 ??? (VD[3]) VD3 + 10 ??? (VD[2]) VD2 + 9 ??? (VD[1]) VD1 + 8 ??? (VD[0]) VD0 + + 7 ??? (output) + 6 ??? (output) + 5 ??? (output) + 4 ??? (VM) VM + 3 ??? (VFRAME) VFRAME + 2 ??? (VLINE) VLINE + 1 ??? (VCLK) VCLK + 0 ??? (output) + +I/O Port D (16 I/O Bits): + + 15 ??? (output) + 14 ??? (output) + 13 ??? (output) LCD SPI data + 12 ??? (output) LCD SPI clk + 11 ??? (output) + 10 ??? (output) + 9 ??? (output) LCD SPI chip select + 8 ??? (output) LCD SPI reset? + + 7 ??? (output) LCD enable? + 6 ??? (output) + 5 ??? (output) + 4 ??? (output) + 3 ??? (input) + 2 ??? (output) IrDA shutdown + 1 ??? (output) + 0 ??? (output) + +I/O Port E (16 I/O Bits): SD Card Stuff. + + 15 ??? (IICSDA) + 14 ??? (IICSCL) + 13 ??? (output) + 12 ??? (output) SPIMOSI0 (IrDA Tx) + 11 ??? (output) + 10 ??? (output) SDDAT3 + 9 ??? (output) SDDAT2 + 8 ??? (output) SDDAT1 + + 7 ??? (output) SDDAT0 + 6 ??? (output) SDCMD + 5 ??? (output) SDCLK + 4 ??? (output) + 3 ??? (output) + 2 ??? (output) + 1 ??? (output) + 0 ??? (output) + +IO Port F (8 I/O Bits): + + 7 ??? (output) + 6 KEYB (EINT6) Right Shift + 5 KEYB (EINT5) Left Shift + 4 KEYB (EINT4) Alpha + 3 SD (EINT3) SD Card Inserted + 2 ??? (output) + 1 ??? (output) + 0 KEYB (EINT0) ON + +I/O Port G (16 I/O Bits): + + 15 Column 7 (output) (Keys STO (K), NXT (L)) + 14 Column 6 (output) (Keys Up, Left, Down, Right, MODE (H), TOOL (I), VAR (J)) + 13 Column 5 (output) (Keys F1 (A) .. F6 (F), APPS (G)) + 12 Column 4 (output) (Keys HIST (M) .. EEX (V)) + 11 Column 3 (output) (Keys EVAL (N) .. 0) + 10 Column 2 (output) (Keys ' (O) .. .) + 9 Column 1 (output) (Keys SYMB (P) .. SPC) + 8 Column 0 (output) (Keys Backspace .. Enter) + + 7 Row 7 (input) + 6 Row 6 (input) + 5 Row 5 (input) + 4 Row 4 (input) + 3 Row 3 (input) + 2 Row 2 (input) + 1 Row 1 (input) + 0 ??? + +IO Port H (11 I/O Bits): + + 10 ??? (output) + 9 ??? (CLKOUT0) CLKOUT0 (UPLL: 48MHz) + 8 ??? (UEXTCLK) UEXTCLK (connected to CLKOUT0) + 7 ??? (output) RXD2 (IrDA) + 6 ??? (output) TXD2 (IrDA) + 5 ??? (output) + 4 ??? (output) + 3 ??? (output) RXD0 (HP50g) + 2 ??? (output) TXD0 (HP50g) + 1 ??? (output) /RTS0 (not used) + 0 ??? (output) /CTS0 (not used) + + +HP50g uses the 3rd letter in the SerialNo at offset 0x03ff0 to determine +whether to use the serial port 0 or not. + + +EXTINT: + + 0 rising edge + 1 falling edge + 2 falling edge + 3 rising edge + 4 rising edge enabled + 5 rising edge enabled + 6 rising edge enabled + 7 falling edge + + 8 falling edge + 9 falling edge enabled + 10 falling edge enabled + 11 falling edge enabled + 12 falling edge enabled + 13 falling edge enabled + 14 falling edge enabled + 15 falling edge enabled + + 16 falling edge + 17 falling edge + 18 falling edge + 19 falling edge + 20 falling edge + 21 falling edge + 22 falling edge + 23 falling edge + + +nRSTOUT n.c. +PWREN n.c. diff --git a/MEMORY b/MEMORY new file mode 100644 index 0000000..05d8b25 --- /dev/null +++ b/MEMORY @@ -0,0 +1,21 @@ +Saturn CPU Structure at + + 08003340 + +contains + + u32 Read[257]; Saturn -> ARM mapping table + u32 Write[257]; + + armptr = Read[saturnptr >> 12] | ((saturnptr & 0xfff) >> 1); + +"standard" Saturn mapping: + + 00000 -> 00060000 + ... ROM + 7ffff -> 0009ffff + + 80000 -> 08040000 + ... RAM + fffff -> 0807ffff + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5d5988a --- /dev/null +++ b/Makefile @@ -0,0 +1,321 @@ +# $Id: Makefile,v 1.29 2008/12/11 12:18:17 ecd Exp $ +# + +X49GP_DEBUG = \ + -DDEBUG_X49GP_MODULES \ + -DDEBUG_S3C2410_SRAM \ + -DDEBUG_S3C2410_MEMC \ + -DDEBUG_S3C2410_INTC \ + -DDEBUG_S3C2410_POWER \ + -DDEBUG_S3C2410_LCD \ + -DDEBUG_S3C2410_UART \ + -DDEBUG_S3C2410_TIMER \ + -DDEBUG_S3C2410_USBDEV \ + -DDEBUG_S3C2410_WATCHDOG \ + -DDEBUG_S3C2410_IO_PORT \ + -DDEBUG_S3C2410_RTC \ + -DDEBUG_S3C2410_ADC \ + -DDEBUG_S3C2410_SDI \ + -DDEBUG_S3C2410_SPI \ + -DDEBUG_X49GP_SYSCALL \ + -DDEBUG_X49GP_FLASH_READ \ + -DDEBUG_X49GP_FLASH_WRITE \ + -UDEBUG_X49GP_SYSRAM_READ \ + -UDEBUG_X49GP_SYSRAM_WRITE \ + -UDEBUG_X49GP_ERAM_READ \ + -UDEBUG_X49GP_ERAM_WRITE \ + -UDEBUG_X49GP_IRAM_READ \ + -UDEBUG_X49GP_IRAM_WRITE \ + -DDEBUG_X49GP_TIMER_IDLE \ + -DDEBUG_X49GP_ARM_IDLE \ + -DDEBUG_X49GP_ENABLE_IRQ \ + -DDEBUG_X49GP_UI + +DEBUG = -g # -pg + +#2.09 +FIRMWARE = 4950_92.bin +#2.10-7 +#FIRMWARE = hp49g-u.bin +#HPGCC3 (copy HPGCC3 ROM first) +#FIRMWARE = 49_hpgcc.bin +#2.15 +#FIRMWARE = 4950_215.bin + +BOOT49GP = boot-49g+.bin +BOOT50G = boot-50g.bin +SERIAL49GP = DE00000001 +SERIAL50G = DEA0000001 +COPYRIGHT = Kinposhcopyright + +QEMU_DEFINES = -DTARGET_ARM -DX49GP \ + -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -fno-strict-aliasing + +# Use this to debug +# DEFINES = $(X49GP_DEBUG) $(QEMU_DEFINES) +# Use this for speed +DEFINES = $(QEMU_DEFINES) + +ifdef QEMU_OLD +QEMUSRC = qemu/prepare.sh \ + $(wildcard qemu/patches/*.patch) \ + $(wildcard qemu/patches/*.diff) + +QEMU=qemu/qemu +else +QEMUSRC = +QEMU=qemu/qemu-git +endif + +QEMUMAKE = $(shell if [ "`uname -s`" = "Linux" -a "`uname -m`" = "sun4u" ]; then echo "sparc32 $(MAKE)"; else echo "$(MAKE)"; fi) + +ifdef QEMU_OLD +QEMU_DIR=$(QEMU) +QEMU_DEFINES+=-DQEMU_OLD +X49GP_LDFLAGS = -L$(QEMU)/arm-softmmu +X49GP_LIBS = -lqemu -lz +else +QEMU_DIR=qemu/qemu-git +QEMU_DIR_BUILD=$(QEMU_DIR)/arm-softmmu +QEMU_DEFINES+=-DNEED_CPU_H +X49GP_LDFLAGS= +X49GP_LIBS= $(QEMU_DIR_BUILD)/exec.o $(QEMU_DIR_BUILD)/translate-all.o $(QEMU_DIR_BUILD)/cpu-exec.o $(QEMU_DIR_BUILD)/translate.o $(QEMU_DIR_BUILD)/fpu/softfloat.o $(QEMU_DIR_BUILD)/op_helper.o $(QEMU_DIR_BUILD)/helper.o $(QEMU_DIR_BUILD)/disas.o $(QEMU_DIR_BUILD)/i386-dis.o $(QEMU_DIR_BUILD)/arm-dis.o $(QEMU_DIR_BUILD)/tcg/tcg.o $(QEMU_DIR_BUILD)/iwmmxt_helper.o $(QEMU_DIR_BUILD)/neon_helper.o +endif +QEMU_INCDIR=$(QEMU_DIR) +QEMU_INC=-I$(QEMU_INCDIR)/target-arm -I$(QEMU_INCDIR) -I$(QEMU_INCDIR)/fpu -I$(QEMU_INCDIR)/arm-softmmu + +X49GP_INCLUDES = -Iinclude -Ibitmaps $(QEMU_INC) + +INCLUDES = $(GDB_INCLUDES) $(X49GP_INCLUDES) + +ifdef QEMU_OLD +CC = $(shell if [ "`uname -s`" = "Darwin" ]; then echo "gcc"; else echo "gcc-3.4"; fi) +else +CC = gcc +endif +LD = $(CC) +AR = ar +RANLIB = ranlib + +CC += $(shell if [ "`uname -m`" = "sparc64" -o "`uname -m`" = "sun4u" ]; then echo "-mcpu=ultrasparc -m32"; fi) + +COCOA_LIBS=$(shell if [ "`uname -s`" = "Darwin" ]; then echo "-F/System/Library/Frameworks -framework Cocoa -framework IOKit"; fi) + +CFLAGS = -O2 -Wall $(DEBUG) $(INCLUDES) $(DEFINES) +LDFLAGS = $(DEBUG) $(X49GP_LDFLAGS) $(GDB_LDFLAGS) +LDLIBS = $(X49GP_LIBS) $(GDB_LIBS) $(COCOA_LIBS) + +MAKEDEPEND = $(CC) -MM + +CFLAGS += $(shell pkg-config --cflags gtk+-2.0) +LDFLAGS += $(shell pkg-config --libs gtk+-2.0) + +ifdef QEMU_OLD +export MAKE MAKEDEPEND CC LD AR RANLIB CFLAGS LDFLAGS +endif + +LIBS = $(QEMU) + +SRCS = main.c module.c flash.c sram.c s3c2410.c \ + s3c2410_sram.c \ + s3c2410_memc.c \ + s3c2410_intc.c \ + s3c2410_power.c \ + s3c2410_lcd.c \ + s3c2410_nand.c \ + s3c2410_uart.c \ + s3c2410_timer.c \ + s3c2410_usbdev.c \ + s3c2410_watchdog.c \ + s3c2410_io_port.c \ + s3c2410_rtc.c \ + s3c2410_adc.c \ + s3c2410_spi.c \ + s3c2410_sdi.c \ + s3c2410_arm.c \ + ui.c timer.c tiny_font.c symbol.c \ + gdbstub.c block.c + +OBJS = $(SRCS:.c=.o) + +ifdef QEMU_OLD +VVFATOBJS = $(QEMU)/arm-softmmu/block-vvfat.o \ + $(QEMU)/arm-softmmu/block-qcow.o \ + $(QEMU)/arm-softmmu/block-raw.o +else +# TEMPO hack +VVFATOBJS = block-vvfat.o \ + block-qcow.o \ + block-raw.o +endif + +ifdef QEMU_OLD +VVFATOBJS += $(QEMU)/arm-softmmu/cutils.o +else +VVFATOBJS += $(QEMU_DIR)/cutils.o +endif + +TARGET = x49gp + +all: do-it-all + +ifeq (.depend,$(wildcard .depend)) +include .depend +do-it-all: $(QEMU) $(TARGET) flash-49g+ flash-50g sram s3c2410-sram +else +do-it-all: depend-and-build +endif + +ifdef QEMU_OLD +$(TARGET): $(OBJS) $(VVFATOBJS) $(QEMU)/arm-softmmu/libqemu.a + $(CC) $(LDFLAGS) -o $@ $(OBJS) $(VVFATOBJS) $(LDLIBS) +else +$(TARGET): $(OBJS) $(VVFATOBJS) $(X49GP_LIBS) + $(CC) $(LDFLAGS) -o $@ $(OBJS) $(VVFATOBJS) $(LDLIBS) +endif + +flash-49g+: $(BOOT49GP) flash-noboot + @cp flash-noboot $@ + @/bin/echo -n "$@: Copy boot loader \"$(BOOT49GP)\" to "; echo "0" + @dd if=$(BOOT49GP) of=$@ bs=16 seek=0 conv=notrunc 2>/dev/null + @/bin/echo -n "$@: Set serial number \"$(SERIAL49GP)\" at "; expr 16 \* 1023 + @/bin/echo -n "$(SERIAL49GP)" >serialno + @dd if=serialno of=$@ bs=16 seek=1023 conv=notrunc 2>/dev/null + @rm -f serialno + +flash-50g: $(BOOT50G) flash-noboot + @cp flash-noboot $@ + @/bin/echo -n "$@: Copy boot loader \"$(BOOT50G)\" to "; echo "0" + @dd if=$(BOOT50G) of=$@ bs=16 seek=0 conv=notrunc 2>/dev/null + @/bin/echo -n "$@: Set serial number \"$(SERIAL50G)\" at "; expr 16 \* 1023 + @/bin/echo -n "$(SERIAL50G)" >serialno + @dd if=serialno of=$@ bs=16 seek=1023 conv=notrunc 2>/dev/null + @rm -f serialno + +flash-noboot: $(FIRMWARE) + @/bin/echo -n "$@: Fill ff: 0 " + @/bin/echo -ne "\377" >one + @COUNT=0; \ + SIZE=1; \ + while [ $${COUNT} -le 20 ]; do \ + cat one one >one2; \ + mv one2 one; \ + COUNT=`expr $${COUNT} + 1`; \ + SIZE=`expr $${SIZE} + $${SIZE}`; \ + /bin/echo -n "."; \ + done; \ + echo " $${SIZE}" + @mv one $@ + @/bin/echo -n "$@: Mark blocks:" + @OFFSET=524544; \ + for block in 02 03 04 05 06 07 10 11 12 13 14 15; do \ + /bin/echo -ne "\360\0$${block}\000\000\000" >header; \ + dd if=header of=$@ bs=1 seek=$${OFFSET} conv=notrunc 2>/dev/null; \ + /bin/echo -n " $${OFFSET}"; \ + OFFSET=`expr $${OFFSET} + 131072`; \ + done; \ + echo "" + @/bin/echo -n "$@: Copy firmware \"$(FIRMWARE)\" to "; expr 16 \* 1024 + @dd if=hp49g-u.bin of=$@ bs=16 seek=1024 conv=notrunc 2>/dev/null + @dd if=$(FIRMWARE) of=$@ bs=16 seek=1024 conv=notrunc 2>/dev/null + @/bin/echo -n "$@: Set copyright \"$(COPYRIGHT)\" at "; expr 16 \* 1024 + @/bin/echo -n "$(COPYRIGHT)" >copyright + @dd if=copyright of=$@ bs=16 seek=1024 conv=notrunc 2>/dev/null + @rm -f one one2 header copyright + +sram: + dd if=/dev/zero of=$@ bs=1024 count=512 + +s3c2410-sram: + dd if=/dev/zero of=$@ bs=1024 count=4 + +sdcard: +ifeq ($(shell uname),Darwin) + rm -f sdcard.dmg + hdiutil create sdcard -megabytes 64 -fs MS-DOS -volname x49gp +else + /sbin/mkdosfs -v -C -S 512 -f 2 -F 16 -r 512 -R 2 -n "x49gp" $@ 65536 +endif + +config: + ./newconfig + +sim: dummy + $(MAKE) -C $@ + +ifdef QEMU_OLD +$(QEMU): $(QEMU)/config-host.h dummy + $(QEMUMAKE) -C $@ + +$(QEMU)/config-host.h: $(QEMUSRC) + cd qemu; ./prepare.sh + make -C . all + +$(QEMU)/arm-softmmu/%.o: $(QEMU)/%.c + $(QEMUMAKE) BASE_CFLAGS=-DX49GP -C $(QEMU)/arm-softmmu $(shell basename $@) +else +$(QEMU)/config-host.h: $(QEMUSRC) + ( cd $(QEMU); \ + ./configure-small --extra-cflags=-DX49GP; \ + $(QEMUMAKE) -f Makefile-small ) + +$(QEMU)/arm-softmmu/%.o: $(QEMU)/%.c + $(QEMUMAKE) -C $(QEMU) -f Makefile-small +endif + +%.o: %.c + $(CC) $(CFLAGS) -o $@ -c $< + +ifdef QEMU_OLD +clean-libs: + if [ -n "$(LIBS)" ]; then \ + for d in $(LIBS); do \ + $(MAKE) -C $$d clean; \ + done \ + fi + +clean: clean-libs + rm -f *.o core *~ .depend + +distclean: clean + rm -rf $(QEMU) + rm -f $(TARGET) flash-49g+ flash-50g flash-noboot sram s3c2410-sram + rm -f config + +depend-and-build: depend + $(MAKE) -C . all + +depend-libs: $(QEMU)/config-host.h + if [ -n "$(LIBS)" ]; then \ + for d in $(LIBS); do \ + if [ "$$d" != "$(QEMU)" ]; then \ + $(MAKE) -C $$d depend; \ + fi \ + done \ + fi + +depend: depend-libs + $(MAKEDEPEND) $(CFLAGS) $(SRCS) >.depend +else +clean-qemu: + $(MAKE) -C $(QEMU) -f Makefile-small clean + +clean: clean-qemu + rm -f *.o core *~ .depend + +distclean: clean + $(MAKE) -C $(QEMU) -f Makefile-small distclean + rm -f $(TARGET) flash-49g+ flash-50g flash-noboot sram s3c2410-sram + rm -f config + +depend-libs: $(QEMU)/config-host.h + +depend-and-build: depend + $(MAKE) -C . all + +depend: depend-libs + $(MAKEDEPEND) $(CFLAGS) $(SRCS) >.depend +endif + +dummy: diff --git a/README b/README new file mode 100644 index 0000000..1b0456e --- /dev/null +++ b/README @@ -0,0 +1,63 @@ +Next steps: + + - Verify Locks needed + - Audit Keyboard <-> IO Port Interaction + - Add remote gdb interface + + +Registers to check access to: + + IO PORT MISCCR + MMU FSR + MMU FAR + MMU Alignment Checks in general + MMU r7: Wait for Interrupt + + +File Manager: + + Read from 0x08080000: Probe memory size??? + -> Add mirrored mapping of SRAM? + + +Annunciators: + + Bits set in Column 132 of the LCD screen memory: + + Row 0: Transmit + Row 1: Left Shift + Row 2: Right Shift + Row 3: Alpha + Row 4: Battery + Row 5: Busy + +IRQ Branch Table: + + 08000020: IRQ reads 08000020 + (IRQOFFSET << 2), branches there + + IRQ returns with "subs pc, lr, #4" + + + +The speed of the emulator is an issue... + +It is running about 20 times SLOWER than the original calculator at the moment +on my 400 MHz UltraSparc. There will be quite some speedup running on a modern +PC or workstation with faster processor. Also, at the moment I have a lot of debugging +enabled, which slows down the emulator. + +Getting the full 75 MHz out of the emulated ARM core will be hard work, I have not +looked into the potential optimizations that can be done in the core emulator, but +there are some things done during every instruction that we don't need for this +machine. + +There are generally two options to speed up or use the emulator: + +1. Emulate the hardware as closely as possible to help debug programms digging + into the s3c2410. +2. Emulate the saturn part to make it a usable calculator. Here one could implement + some of the most often used KOS syscalls directly in the emulator without doing + these on the emulated ARM core. This would speed up the calculator significantly. + +Optimally there will be a runtime option to switch between these two modes. + diff --git a/README.QEMU b/README.QEMU new file mode 100644 index 0000000..40777dc --- /dev/null +++ b/README.QEMU @@ -0,0 +1 @@ +Fix ldX_le/stX_le on sparc: use ASI_LE diff --git a/README.QUICKSTART b/README.QUICKSTART new file mode 100644 index 0000000..b61586f --- /dev/null +++ b/README.QUICKSTART @@ -0,0 +1,158 @@ +Quick Start Guide +04/25/2010 +Egan Ford + +NOTE: READ ALL INSTRUCTIONS + +Prereqs: + +* OS/X 10.6 64-bit: + + * Install X11, Xcode (from your installation media) in that order. + * Install Macports (macports.org), then: + + sudo port install gtk2 + sudo port install pkgconfig + + +* Ubuntu 9.04 32-bit, 9.04 64-bit, 9.10 32-bit, 9.10 64-bit: + + sudo apt-get install libgtk2.0-dev + sudo apt-get install subversion + + +* RedHat/CentOS 5.4 64-bit, Fedora 12 64-bit: + + sudo yum install subversion gtk2-devel + +------------------------------------------------------------------------ + +Start up X11 and use xterm + +------------------------------------------------------------------------ + +Download x49gp source: + +svn co http://x49gp.svn.sourceforge.net/svnroot/x49gp x49gp + +------------------------------------------------------------------------ + +Edit FIRMWARE (optional): + +The default firmware will be 4950_92.bin, for HPGCC3 development copy +49_hpgcc.bin in to x49gp and change FIRMWARE in the Makefile. + +------------------------------------------------------------------------ + +Build: + +cd x49gp +make +make sdcard +make config + +------------------------------------------------------------------------ + +Mount SD card: + +OS/X: + +open sdcard.dmg + +Linux: + +sudo mkdir -p /Volumes/X49GP/ +sudo mount -o loop sdcard /Volumes/X49GP + +------------------------------------------------------------------------ + +Put stuff in SD, e.g.: + +OS/X: + +cp BACKUP /Volumes/X49GP/ + +Linux: + +sudo cp BACKUP /Volumes/X49GP/ + +NOTE: If using HPGCC2 don't forget the the ARMToolbox. + +------------------------------------------------------------------------ + +Eject SD: + +OS/X: + +hdiutil detach $(df | grep -i x49gp | head -1 | awk '{print $1}') + +Linux: + +sudo umount /Volumes/X49GP + +------------------------------------------------------------------------ + +Run: + +./x49gp config + +------------------------------------------------------------------------ + +Where's the key labels? + +Good question. This is a bug when compiled for 64-bit platforms. + +Hack: + +cp hp50g-hack.png hp50g.png + +------------------------------------------------------------------------ + +Do stuff, e.g.: + +Restore backup: + +BACKUP +3 +->TAG +RESTORE + +Install ARMToolbox (HPGCC2): + +2 +SETUP.BIN +3 +->TAG +RCL +EVAL +(Right Click ON, Left Click C) + +------------------------------------------------------------------------ + +To Exit Emulator + +* ctrl-c to exit (from launch window) + +------------------------------------------------------------------------ + +Start Over: + +* clean slate? + +rm -f flash-49g+ flash-50g flash-noboot sram s3c2410-sram +make flash-49g+ flash-50g flash-noboot sram s3c2410-sram +./newconfig + +* soft reset only? + +./newconfig + +------------------------------------------------------------------------ + +Known Limitations: + +* HPGCC SD Card I/O + . libfsystem unavailable. + . f* calls unstable (HPGCC2) + . f* calls stable (HPGCC3) + diff --git a/README.config b/README.config new file mode 100644 index 0000000..1719a90 --- /dev/null +++ b/README.config @@ -0,0 +1,11 @@ +[x49gp] +basename=.x49gp +[x49gp] +name=hp49g+ +image=hp49g+.png +[flash] +filename=flash +[sram] +filename=sram +[s3c2410-sram] +filename=s3c2410-sram diff --git a/SYSCALL-28-TRACE b/SYSCALL-28-TRACE new file mode 100644 index 0000000..64c7a6c --- /dev/null +++ b/SYSCALL-28-TRACE @@ -0,0 +1,327 @@ +sp 0801e314, lr 0001ebb4, pc 00036ae0, insn e8bd80ff: ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, pc} +sp 0801e338, lr 0001ebb4, pc 0001ebb4, insn e20000ff: and r0, r0, #255 ; 0xff +sp 0801e338, lr 0001ebb4, pc 0001ebb8, insn e8bd8008: ldmia sp!, {r3, pc} +sp 0801e340, lr 0001ebb4, pc 0001ebec, insn e3500000: cmp r0, #0 ; 0x0 +sp 0801e340, lr 0001ebb4, pc 0001ebf0, insn 0afffffc: beq 0x0001ebe8 +sp 0801e340, lr 0001ebb4, pc 0001ebe8, insn ebffffee: bl 0x0001eba8 +sp 0801e340, lr 0001ebec, pc 0001eba8, insn e92d4008: stmdb sp!, {r3, lr} +sp 0801e338, lr 0001ebec, pc 0001ebac, insn e3a0001c: mov r0, #28 ; 0x1c +sp 0801e338, lr 0001ebec, pc 0001ebb0, insn ebfffef9: bl 0x0001e79c +sp 0801e338, lr 0001ebb4, pc 0001e79c, insn ea00627b: b 0x00037190 +sp 0801e338, lr 0001ebb4, pc 00037190, insn ef000000: swi 0x00000000 +ARMul_OSHandleSWI: PC 00037198: syscall 28: args 08000a98 0000004a 00037ed4 00000000 0000162e 08003b40 00001629 +sp 080004fc, lr 00037194, pc 00000008, insn ea000035: b 0x000000e4 +sp 080004fc, lr 00037194, pc 000000e4, insn e24dd004: sub sp, sp, #4 ; 0x4 +sp 080004f8, lr 00037194, pc 000000e8, insn e92d0300: stmdb sp!, {r8, r9} +sp 080004f0, lr 00037194, pc 000000ec, insn e3a08680: mov r8, #134217728 ; 0x8000000 +sp 080004f0, lr 00037194, pc 000000f0, insn e5989008: ldr r9, [r8, #8] +sp 080004f0, lr 00037194, pc 000000f4, insn e58d9008: str r9, [sp, #8] +sp 080004f0, lr 00037194, pc 000000f8, insn e8bd8300: ldmia sp!, {r8, r9, pc} +sp 080004fc, lr 00037194, pc 000369b8, insn e94d3000: stmdb sp, {ip, sp}^ +sp 080004fc, lr 00037194, pc 000369bc, insn e59fe144: ldr lr, [pc, #324] ; 0x00036b08 +sp 080004fc, lr 08002360, pc 000369c0, insn e5dec000: ldrb ip, [lr] +sp 080004fc, lr 08002360, pc 000369c4, insn e28cc001: add ip, ip, #1 ; 0x1 +sp 080004fc, lr 08002360, pc 000369c8, insn e5cec000: strb ip, [lr] +sp 080004fc, lr 08002360, pc 000369cc, insn e91d3000: ldmdb sp, {ip, sp} +sp 0801e338, lr 08002360, pc 000369d0, insn e10fe000: mrs lr, CPSR +sp 0801e338, lr 60000093, pc 000369d4, insn e3cee0c0: bic lr, lr, #192 ; 0xc0 +sp 0801e338, lr 60000013, pc 000369d8, insn e121f00e: msr CPSR_c, lr +sp 0801e338, lr 60000013, pc 000369dc, insn e3300000: teq r0, #0 ; 0x0 +sp 0801e338, lr 60000013, pc 000369e0, insn 0a00001c: beq 0x00036a58 +sp 0801e338, lr 60000013, pc 000369e4, insn e3500064: cmp r0, #100 ; 0x64 +sp 0801e338, lr 60000013, pc 000369e8, insn aa000001: bge 0x000369f4 +sp 0801e338, lr 60000013, pc 000369ec, insn ebffa1e2: bl 0x0001f17c +sp 0801e338, lr 000369f0, pc 0001f17c, insn e59f1210: ldr r1, [pc, #528] ; 0x0001f394 +sp 0801e338, lr 000369f0, pc 0001f180, insn e7910100: ldr r0, [r1, r0, lsl #2] +sp 0801e338, lr 000369f0, pc 0001f184, insn e280f000: add pc, r0, #0 ; 0x0 +sp 0801e338, lr 000369f0, pc 00005568, insn e59f107c: ldr r1, [pc, #124] ; 0x000055ec +sp 0801e338, lr 000369f0, pc 0000556c, insn e5910000: ldr r0, [r1] +sp 0801e338, lr 000369f0, pc 00005570, insn e3100002: tst r0, #2 ; 0x2 +sp 0801e338, lr 000369f0, pc 00005574, insn 0a000004: beq 0x0000558c +sp 0801e338, lr 000369f0, pc 00005578, insn e5910000: ldr r0, [r1] +sp 0801e338, lr 000369f0, pc 0000557c, insn e3100004: tst r0, #4 ; 0x4 +sp 0801e338, lr 000369f0, pc 00005580, insn 0a000001: beq 0x0000558c +sp 0801e338, lr 000369f0, pc 00005584, insn e3a00000: mov r0, #0 ; 0x0 +sp 0801e338, lr 000369f0, pc 00005588, insn e1a0f00e: mov pc, lr +sp 0801e338, lr 000369f0, pc 000369f0, insn ea000018: b 0x00036a58 +sp 0801e338, lr 000369f0, pc 00036a58, insn ebffff76: bl 0x00036838 +sp 0801e338, lr 00036a5c, pc 00036838, insn e92d4003: stmdb sp!, {r0, r1, lr} +sp 0801e32c, lr 00036a5c, pc 0003683c, insn e59fe2c0: ldr lr, [pc, #704] ; 0x00036b04 +sp 0801e32c, lr 08002368, pc 00036840, insn e59ee000: ldr lr, [lr] +sp 0801e32c, lr 080024d8, pc 00036844, insn e33e0000: teq lr, #0 ; 0x0 +sp 0801e32c, lr 080024d8, pc 00036848, insn 1bffffee: blne 0x00036808 +sp 0801e32c, lr 0003684c, pc 00036808, insn e92d4000: stmdb sp!, {lr} +sp 0801e328, lr 0003684c, pc 0003680c, insn e59fe2f0: ldr lr, [pc, #752] ; 0x00036b04 +sp 0801e328, lr 08002368, pc 00036810, insn e59ee000: ldr lr, [lr] +sp 0801e328, lr 080024d8, pc 00036814, insn e28ee028: add lr, lr, #40 ; 0x28 +sp 0801e328, lr 08002500, pc 00036818, insn e8ce7fff: stmia lr, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ +sp 0801e328, lr 08002500, pc 0003681c, insn e8bd8000: ldmia sp!, {pc} +sp 0801e32c, lr 08002500, pc 0003684c, insn e59f02b4: ldr r0, [pc, #692] ; 0x00036b08 +sp 0801e32c, lr 08002500, pc 00036850, insn e5d01000: ldrb r1, [r0] +sp 0801e32c, lr 08002500, pc 00036854, insn e3510001: cmp r1, #1 ; 0x1 +sp 0801e32c, lr 08002500, pc 00036858, insn 0a000002: beq 0x00036868 +sp 0801e32c, lr 08002500, pc 00036868, insn e59f42a0: ldr r4, [pc, #672] ; 0x00036b10 +sp 0801e32c, lr 08002500, pc 0003686c, insn e59f52a0: ldr r5, [pc, #672] ; 0x00036b14 +sp 0801e32c, lr 08002500, pc 00036870, insn e59f62a0: ldr r6, [pc, #672] ; 0x00036b18 +sp 0801e32c, lr 08002500, pc 00036874, insn e2866f40: add r6, r6, #256 ; 0x100 +sp 0801e32c, lr 08002500, pc 00036878, insn e59f829c: ldr r8, [pc, #668] ; 0x00036b1c +sp 0801e32c, lr 08002500, pc 0003687c, insn e59fa29c: ldr sl, [pc, #668] ; 0x00036b20 +sp 0801e32c, lr 08002500, pc 00036880, insn e59fb29c: ldr fp, [pc, #668] ; 0x00036b24 +sp 0801e32c, lr 08002500, pc 00036884, insn ea00000a: b 0x000368b4 +sp 0801e32c, lr 08002500, pc 000368b4, insn e5940000: ldr r0, [r4] +sp 0801e32c, lr 08002500, pc 000368b8, insn e5951000: ldr r1, [r5] +sp 0801e32c, lr 08002500, pc 000368bc, insn e1500001: cmp r0, r1 +sp 0801e32c, lr 08002500, pc 000368c0, insn 1afffff0: bne 0x00036888 +sp 0801e32c, lr 08002500, pc 000368c4, insn e5da2000: ldrb r2, [sl] +sp 0801e32c, lr 08002500, pc 000368c8, insn e3520000: cmp r2, #0 ; 0x0 +sp 0801e32c, lr 08002500, pc 000368cc, insn 0a000011: beq 0x00036918 +sp 0801e32c, lr 08002500, pc 00036918, insn e5940000: ldr r0, [r4] +sp 0801e32c, lr 08002500, pc 0003691c, insn e5951000: ldr r1, [r5] +sp 0801e32c, lr 08002500, pc 00036920, insn e1500001: cmp r0, r1 +sp 0801e32c, lr 08002500, pc 00036924, insn 1affffd7: bne 0x00036888 +sp 0801e32c, lr 08002500, pc 00036928, insn ebffffbc: bl 0x00036820 +sp 0801e32c, lr 0003692c, pc 00036820, insn e92d4000: stmdb sp!, {lr} +sp 0801e328, lr 0003692c, pc 00036824, insn e59fe2d8: ldr lr, [pc, #728] ; 0x00036b04 +sp 0801e328, lr 08002368, pc 00036828, insn e59ee000: ldr lr, [lr] +sp 0801e328, lr 080024d8, pc 0003682c, insn e28ee028: add lr, lr, #40 ; 0x28 +sp 0801e328, lr 08002500, pc 00036830, insn e8de7fff: ldmia lr, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ +sp 0801e328, lr 08002500, pc 00036834, insn e8bd8000: ldmia sp!, {pc} +sp 0801e32c, lr 08002500, pc 0003692c, insn e8bd8003: ldmia sp!, {r0, r1, pc} +sp 0801e338, lr 08002500, pc 00036a5c, insn e59fe0a0: ldr lr, [pc, #160] ; 0x00036b04 +sp 0801e338, lr 08002368, pc 00036a60, insn e59ee000: ldr lr, [lr] +sp 0801e338, lr 080024d8, pc 00036a64, insn e58ed00c: str sp, [lr, #12] +sp 0801e338, lr 080024d8, pc 00036a68, insn e59fd088: ldr sp, [pc, #136] ; 0x00036af8 +sp 080004fc, lr 080024d8, pc 00036a6c, insn e92d0003: stmdb sp!, {r0, r1} +sp 080004f4, lr 080024d8, pc 00036a70, insn e59f0090: ldr r0, [pc, #144] ; 0x00036b08 +sp 080004f4, lr 080024d8, pc 00036a74, insn e5d01000: ldrb r1, [r0] +sp 080004f4, lr 080024d8, pc 00036a78, insn e2411001: sub r1, r1, #1 ; 0x1 +sp 080004f4, lr 080024d8, pc 00036a7c, insn e5c01000: strb r1, [r0] +sp 080004f4, lr 080024d8, pc 00036a80, insn e8bd0003: ldmia sp!, {r0, r1} +sp 080004fc, lr 080024d8, pc 00036a84, insn e25ff004: subs pc, pc, #4 ; 0x4 +sp 0801e338, lr 0001ebb4, pc 00036a88, insn e92d40ff: stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, lr} +sp 0801e314, lr 0001ebb4, pc 00036a8c, insn e10f0000: mrs r0, CPSR +sp 0801e314, lr 0001ebb4, pc 00036a90, insn e92d0001: stmdb sp!, {r0} +sp 0801e310, lr 0001ebb4, pc 00036a94, insn e59f408c: ldr r4, [pc, #140] ; 0x00036b28 +sp 0801e310, lr 0001ebb4, pc 00036a98, insn e59f508c: ldr r5, [pc, #140] ; 0x00036b2c +TIMER: assert TIMER2 interrupt +INTC: assert irq 12 (00001000) +INTC: vector to 0000001c +x49gp_set_idle: arm_ID 4452, idle 0 +x49gp_set_idle: arm_ID 4452, idle 0 +Exception taken: pc 00036a9c, r15: 0000001c +sp 0800077c, lr 00036aa0, pc 0000001c, insn ea00004b: b 0x00000150 +sp 0800077c, lr 00036aa0, pc 00000150, insn e24dd004: sub sp, sp, #4 ; 0x4 +sp 08000778, lr 00036aa0, pc 00000154, insn e92d0300: stmdb sp!, {r8, r9} +sp 08000770, lr 00036aa0, pc 00000158, insn e3a08680: mov r8, #134217728 ; 0x8000000 +sp 08000770, lr 00036aa0, pc 0000015c, insn e598901c: ldr r9, [r8, #28] +sp 08000770, lr 00036aa0, pc 00000160, insn e58d9008: str r9, [sp, #8] +sp 08000770, lr 00036aa0, pc 00000164, insn e8bd8300: ldmia sp!, {r8, r9, pc} +sp 0800077c, lr 00036aa0, pc 00005338, insn e92d500f: stmdb sp!, {r0, r1, r2, r3, ip, lr} +sp 08000764, lr 00036aa0, pc 0000533c, insn e3a01671: mov r1, #118489088 ; 0x7100000 +sp 08000764, lr 00036aa0, pc 00005340, insn e5910004: ldr r0, [r1, #4] +read INTC [4a000000] INTMOD [00000004] data 00001000 +sp 08000764, lr 00036aa0, pc 00005344, insn e3100d40: tst r0, #4096 ; 0x1000 +sp 08000764, lr 00036aa0, pc 00005348, insn 0a000003: beq 0x0000535c +sp 08000764, lr 00036aa0, pc 0000534c, insn e1a00001: mov r0, r1 +sp 08000764, lr 00036aa0, pc 00005350, insn e3a01d40: mov r1, #4096 ; 0x1000 +sp 08000764, lr 00036aa0, pc 00005354, insn e5801000: str r1, [r0] +write INTC [4a000000] SRCPND [00000000] data 00001000 +sp 08000764, lr 00036aa0, pc 00005358, insn ea000001: b 0x00005364 +sp 08000764, lr 00036aa0, pc 00005364, insn e59f0278: ldr r0, [pc, #632] ; 0x000055e4 +sp 08000764, lr 00036aa0, pc 00005368, insn e5900000: ldr r0, [r0] +sp 08000764, lr 00036aa0, pc 0000536c, insn e59f2274: ldr r2, [pc, #628] ; 0x000055e8 +sp 08000764, lr 00036aa0, pc 00005370, insn e5921000: ldr r1, [r2] +sp 08000764, lr 00036aa0, pc 00005374, insn e1500001: cmp r0, r1 +sp 08000764, lr 00036aa0, pc 00005378, insn 1a00000f: bne 0x000053bc +sp 08000764, lr 00036aa0, pc 0000537c, insn e3a00002: mov r0, #2 ; 0x2 +sp 08000764, lr 00036aa0, pc 00005380, insn ebfffd7f: bl 0x00004984 +sp 08000764, lr 00005384, pc 00004984, insn e3a02676: mov r2, #123731968 ; 0x7600000 +sp 08000764, lr 00005384, pc 00004988, insn e2821008: add r1, r2, #8 ; 0x8 +sp 08000764, lr 00005384, pc 0000498c, insn e3500000: cmp r0, #0 ; 0x0 +sp 08000764, lr 00005384, pc 00004990, insn 1a000003: bne 0x000049a4 +sp 08000764, lr 00005384, pc 000049a4, insn e5922008: ldr r2, [r2, #8] +read TIMER [51000000] TCON [00000008] data 00499909 +sp 08000764, lr 00005384, pc 000049a8, insn e3a03004: mov r3, #4 ; 0x4 +sp 08000764, lr 00005384, pc 000049ac, insn e0830100: add r0, r3, r0, lsl #2 +sp 08000764, lr 00005384, pc 000049b0, insn e3a03001: mov r3, #1 ; 0x1 +sp 08000764, lr 00005384, pc 000049b4, insn e1c20013: bic r0, r2, r3, lsl r0 +sp 08000764, lr 00005384, pc 000049b8, insn e5810000: str r0, [r1] +write TIMER [51000000] TCON [00000008] data 00498909 +TIMER: stop TIMER2 +sp 08000764, lr 00005384, pc 000049bc, insn eafffff7: b 0x000049a0 +sp 08000764, lr 00005384, pc 000049a0, insn e1a0f00e: mov pc, lr +sp 08000764, lr 00005384, pc 00005384, insn e59f1260: ldr r1, [pc, #608] ; 0x000055ec +sp 08000764, lr 00005384, pc 00005388, insn e3a00001: mov r0, #1 ; 0x1 +sp 08000764, lr 00005384, pc 0000538c, insn e5810000: str r0, [r1] +sp 08000764, lr 00005384, pc 00005390, insn e3a01000: mov r1, #0 ; 0x0 +sp 08000764, lr 00005384, pc 00005394, insn e3a00002: mov r0, #2 ; 0x2 +sp 08000764, lr 00005384, pc 00005398, insn ebffffc5: bl 0x000052b4 +sp 08000764, lr 0000539c, pc 000052b4, insn e92d4030: stmdb sp!, {r4, r5, lr} +sp 08000758, lr 0000539c, pc 000052b8, insn e1a03001: mov r3, r1 +sp 08000758, lr 0000539c, pc 000052bc, insn e1a02080: mov r2, r0, lsl #1 +sp 08000758, lr 0000539c, pc 000052c0, insn e3a01003: mov r1, #3 ; 0x3 +sp 08000758, lr 0000539c, pc 000052c4, insn e59fc314: ldr ip, [pc, #788] ; 0x000055e0 +sp 08000758, lr 0000539c, pc 000052c8, insn e3a05001: mov r5, #1 ; 0x1 +sp 08000758, lr 0000539c, pc 000052cc, insn e1a00015: mov r0, r5, lsl r0 +sp 08000758, lr 0000539c, pc 000052d0, insn e1a01211: mov r1, r1, lsl r2 +sp 08000758, lr 0000539c, pc 000052d4, insn e3530001: cmp r3, #1 ; 0x1 +sp 08000758, lr 0000539c, pc 000052d8, insn e3a0467a: mov r4, #127926272 ; 0x7a00000 +sp 08000758, lr 0000539c, pc 000052dc, insn e28ce008: add lr, ip, #8 ; 0x8 +sp 08000758, lr 07a00018, pc 000052e0, insn 1a000008: bne 0x00005308 +sp 08000758, lr 07a00018, pc 00005308, insn e5943018: ldr r3, [r4, #24] +read IO_PORT [56000000] GPBUP [00000018] data 000007fb +sp 08000758, lr 07a00018, pc 0000530c, insn e1c33000: bic r3, r3, r0 +sp 08000758, lr 07a00018, pc 00005310, insn e1833000: orr r3, r3, r0 +sp 08000758, lr 07a00018, pc 00005314, insn e58e3000: str r3, [lr] +write IO_PORT [56000000] GPBUP [00000018] data 000007ff +sp 08000758, lr 07a00018, pc 00005318, insn e5943010: ldr r3, [r4, #16] +read IO_PORT [56000000] GPBCON [00000010] data 00155565 +sp 08000758, lr 07a00018, pc 0000531c, insn e1c31001: bic r1, r3, r1 +sp 08000758, lr 07a00018, pc 00005320, insn e1811215: orr r1, r1, r5, lsl r2 +sp 08000758, lr 07a00018, pc 00005324, insn e58c1000: str r1, [ip] +write IO_PORT [56000000] GPBCON [00000010] data 00155555 +sp 08000758, lr 07a00018, pc 00005328, insn e5941014: ldr r1, [r4, #20] +read IO_PORT [56000000] GPBDAT [00000014] data 00000000 +sp 08000758, lr 07a00018, pc 0000532c, insn e1c10000: bic r0, r1, r0 +sp 08000758, lr 07a00018, pc 00005330, insn e5840014: str r0, [r4, #20] +write IO_PORT [56000000] GPBDAT [00000014] data 00000000 +sp 08000758, lr 07a00018, pc 00005334, insn eafffff2: b 0x00005304 +sp 08000758, lr 07a00018, pc 00005304, insn e8bd8030: ldmia sp!, {r4, r5, pc} +sp 08000764, lr 07a00018, pc 0000539c, insn e59f124c: ldr r1, [pc, #588] ; 0x000055f0 +sp 08000764, lr 07a00018, pc 000053a0, insn e591000c: ldr r0, [r1, #12] +sp 08000764, lr 07a00018, pc 000053a4, insn e3500000: cmp r0, #0 ; 0x0 +sp 08000764, lr 07a00018, pc 000053a8, insn 0a000001: beq 0x000053b4 +sp 08000764, lr 07a00018, pc 000053ac, insn e2400001: sub r0, r0, #1 ; 0x1 +sp 08000764, lr 07a00018, pc 000053b0, insn e581000c: str r0, [r1, #12] +sp 08000764, lr 07a00018, pc 000053b4, insn e8bd500f: ldmia sp!, {r0, r1, r2, r3, ip, lr} +sp 0800077c, lr 00036aa0, pc 000053b8, insn e25ef004: subs pc, lr, #4 ; 0x4 +sp 0801e310, lr 0001ebb4, pc 00036a9c, insn e59f608c: ldr r6, [pc, #140] ; 0x00036b30 +sp 0801e310, lr 0001ebb4, pc 00036aa0, insn e2867080: add r7, r6, #128 ; 0x80 +sp 0801e310, lr 0001ebb4, pc 00036aa4, insn ea000007: b 0x00036ac8 +sp 0801e310, lr 0001ebb4, pc 00036ac8, insn e5940000: ldr r0, [r4] +sp 0801e310, lr 0001ebb4, pc 00036acc, insn e5951000: ldr r1, [r5] +sp 0801e310, lr 0001ebb4, pc 00036ad0, insn e1500001: cmp r0, r1 +sp 0801e310, lr 0001ebb4, pc 00036ad4, insn 1afffff3: bne 0x00036aa8 +sp 0801e310, lr 0001ebb4, pc 00036ad8, insn e8bd0001: ldmia sp!, {r0} +sp 0801e314, lr 0001ebb4, pc 00036adc, insn e12ff000: msr CPSR_fsxc, r0 +sp 0801e314, lr 0001ebb4, pc 00036ae0, insn e8bd80ff: ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, pc} +sp 0801e338, lr 0001ebb4, pc 0001ebb4, insn e20000ff: and r0, r0, #255 ; 0xff +sp 0801e338, lr 0001ebb4, pc 0001ebb8, insn e8bd8008: ldmia sp!, {r3, pc} +sp 0801e340, lr 0001ebb4, pc 0001ebec, insn e3500000: cmp r0, #0 ; 0x0 +sp 0801e340, lr 0001ebb4, pc 0001ebf0, insn 0afffffc: beq 0x0001ebe8 +sp 0801e340, lr 0001ebb4, pc 0001ebe8, insn ebffffee: bl 0x0001eba8 +sp 0801e340, lr 0001ebec, pc 0001eba8, insn e92d4008: stmdb sp!, {r3, lr} +sp 0801e338, lr 0001ebec, pc 0001ebac, insn e3a0001c: mov r0, #28 ; 0x1c +sp 0801e338, lr 0001ebec, pc 0001ebb0, insn ebfffef9: bl 0x0001e79c +sp 0801e338, lr 0001ebb4, pc 0001e79c, insn ea00627b: b 0x00037190 +sp 0801e338, lr 0001ebb4, pc 00037190, insn ef000000: swi 0x00000000 +ARMul_OSHandleSWI: PC 00037198: syscall 28: args 08000a98 0000004a 00037ed4 00000000 0000162e 08003b40 00001629 +sp 080004fc, lr 00037194, pc 00000008, insn ea000035: b 0x000000e4 +sp 080004fc, lr 00037194, pc 000000e4, insn e24dd004: sub sp, sp, #4 ; 0x4 +sp 080004f8, lr 00037194, pc 000000e8, insn e92d0300: stmdb sp!, {r8, r9} +sp 080004f0, lr 00037194, pc 000000ec, insn e3a08680: mov r8, #134217728 ; 0x8000000 +sp 080004f0, lr 00037194, pc 000000f0, insn e5989008: ldr r9, [r8, #8] +sp 080004f0, lr 00037194, pc 000000f4, insn e58d9008: str r9, [sp, #8] +sp 080004f0, lr 00037194, pc 000000f8, insn e8bd8300: ldmia sp!, {r8, r9, pc} +sp 080004fc, lr 00037194, pc 000369b8, insn e94d3000: stmdb sp, {ip, sp}^ +sp 080004fc, lr 00037194, pc 000369bc, insn e59fe144: ldr lr, [pc, #324] ; 0x00036b08 +sp 080004fc, lr 08002360, pc 000369c0, insn e5dec000: ldrb ip, [lr] +sp 080004fc, lr 08002360, pc 000369c4, insn e28cc001: add ip, ip, #1 ; 0x1 +sp 080004fc, lr 08002360, pc 000369c8, insn e5cec000: strb ip, [lr] +sp 080004fc, lr 08002360, pc 000369cc, insn e91d3000: ldmdb sp, {ip, sp} +sp 0801e338, lr 08002360, pc 000369d0, insn e10fe000: mrs lr, CPSR +sp 0801e338, lr 60000093, pc 000369d4, insn e3cee0c0: bic lr, lr, #192 ; 0xc0 +sp 0801e338, lr 60000013, pc 000369d8, insn e121f00e: msr CPSR_c, lr +sp 0801e338, lr 60000013, pc 000369dc, insn e3300000: teq r0, #0 ; 0x0 +sp 0801e338, lr 60000013, pc 000369e0, insn 0a00001c: beq 0x00036a58 +sp 0801e338, lr 60000013, pc 000369e4, insn e3500064: cmp r0, #100 ; 0x64 +sp 0801e338, lr 60000013, pc 000369e8, insn aa000001: bge 0x000369f4 +sp 0801e338, lr 60000013, pc 000369ec, insn ebffa1e2: bl 0x0001f17c +sp 0801e338, lr 000369f0, pc 0001f17c, insn e59f1210: ldr r1, [pc, #528] ; 0x0001f394 +sp 0801e338, lr 000369f0, pc 0001f180, insn e7910100: ldr r0, [r1, r0, lsl #2] +sp 0801e338, lr 000369f0, pc 0001f184, insn e280f000: add pc, r0, #0 ; 0x0 +sp 0801e338, lr 000369f0, pc 00005568, insn e59f107c: ldr r1, [pc, #124] ; 0x000055ec +sp 0801e338, lr 000369f0, pc 0000556c, insn e5910000: ldr r0, [r1] +sp 0801e338, lr 000369f0, pc 00005570, insn e3100002: tst r0, #2 ; 0x2 +sp 0801e338, lr 000369f0, pc 00005574, insn 0a000004: beq 0x0000558c +sp 0801e338, lr 000369f0, pc 0000558c, insn e3a00001: mov r0, #1 ; 0x1 +sp 0801e338, lr 000369f0, pc 00005590, insn eafffffc: b 0x00005588 +sp 0801e338, lr 000369f0, pc 00005588, insn e1a0f00e: mov pc, lr +sp 0801e338, lr 000369f0, pc 000369f0, insn ea000018: b 0x00036a58 +sp 0801e338, lr 000369f0, pc 00036a58, insn ebffff76: bl 0x00036838 +sp 0801e338, lr 00036a5c, pc 00036838, insn e92d4003: stmdb sp!, {r0, r1, lr} +sp 0801e32c, lr 00036a5c, pc 0003683c, insn e59fe2c0: ldr lr, [pc, #704] ; 0x00036b04 +sp 0801e32c, lr 08002368, pc 00036840, insn e59ee000: ldr lr, [lr] +sp 0801e32c, lr 080024d8, pc 00036844, insn e33e0000: teq lr, #0 ; 0x0 +sp 0801e32c, lr 080024d8, pc 00036848, insn 1bffffee: blne 0x00036808 +sp 0801e32c, lr 0003684c, pc 00036808, insn e92d4000: stmdb sp!, {lr} +sp 0801e328, lr 0003684c, pc 0003680c, insn e59fe2f0: ldr lr, [pc, #752] ; 0x00036b04 +sp 0801e328, lr 08002368, pc 00036810, insn e59ee000: ldr lr, [lr] +sp 0801e328, lr 080024d8, pc 00036814, insn e28ee028: add lr, lr, #40 ; 0x28 +sp 0801e328, lr 08002500, pc 00036818, insn e8ce7fff: stmia lr, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ +sp 0801e328, lr 08002500, pc 0003681c, insn e8bd8000: ldmia sp!, {pc} +sp 0801e32c, lr 08002500, pc 0003684c, insn e59f02b4: ldr r0, [pc, #692] ; 0x00036b08 +sp 0801e32c, lr 08002500, pc 00036850, insn e5d01000: ldrb r1, [r0] +sp 0801e32c, lr 08002500, pc 00036854, insn e3510001: cmp r1, #1 ; 0x1 +sp 0801e32c, lr 08002500, pc 00036858, insn 0a000002: beq 0x00036868 +sp 0801e32c, lr 08002500, pc 00036868, insn e59f42a0: ldr r4, [pc, #672] ; 0x00036b10 +sp 0801e32c, lr 08002500, pc 0003686c, insn e59f52a0: ldr r5, [pc, #672] ; 0x00036b14 +sp 0801e32c, lr 08002500, pc 00036870, insn e59f62a0: ldr r6, [pc, #672] ; 0x00036b18 +sp 0801e32c, lr 08002500, pc 00036874, insn e2866f40: add r6, r6, #256 ; 0x100 +sp 0801e32c, lr 08002500, pc 00036878, insn e59f829c: ldr r8, [pc, #668] ; 0x00036b1c +sp 0801e32c, lr 08002500, pc 0003687c, insn e59fa29c: ldr sl, [pc, #668] ; 0x00036b20 +sp 0801e32c, lr 08002500, pc 00036880, insn e59fb29c: ldr fp, [pc, #668] ; 0x00036b24 +sp 0801e32c, lr 08002500, pc 00036884, insn ea00000a: b 0x000368b4 +sp 0801e32c, lr 08002500, pc 000368b4, insn e5940000: ldr r0, [r4] +sp 0801e32c, lr 08002500, pc 000368b8, insn e5951000: ldr r1, [r5] +sp 0801e32c, lr 08002500, pc 000368bc, insn e1500001: cmp r0, r1 +sp 0801e32c, lr 08002500, pc 000368c0, insn 1afffff0: bne 0x00036888 +sp 0801e32c, lr 08002500, pc 000368c4, insn e5da2000: ldrb r2, [sl] +sp 0801e32c, lr 08002500, pc 000368c8, insn e3520000: cmp r2, #0 ; 0x0 +sp 0801e32c, lr 08002500, pc 000368cc, insn 0a000011: beq 0x00036918 +sp 0801e32c, lr 08002500, pc 00036918, insn e5940000: ldr r0, [r4] +sp 0801e32c, lr 08002500, pc 0003691c, insn e5951000: ldr r1, [r5] +sp 0801e32c, lr 08002500, pc 00036920, insn e1500001: cmp r0, r1 +sp 0801e32c, lr 08002500, pc 00036924, insn 1affffd7: bne 0x00036888 +sp 0801e32c, lr 08002500, pc 00036928, insn ebffffbc: bl 0x00036820 +sp 0801e32c, lr 0003692c, pc 00036820, insn e92d4000: stmdb sp!, {lr} +sp 0801e328, lr 0003692c, pc 00036824, insn e59fe2d8: ldr lr, [pc, #728] ; 0x00036b04 +sp 0801e328, lr 08002368, pc 00036828, insn e59ee000: ldr lr, [lr] +sp 0801e328, lr 080024d8, pc 0003682c, insn e28ee028: add lr, lr, #40 ; 0x28 +sp 0801e328, lr 08002500, pc 00036830, insn e8de7fff: ldmia lr, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ +sp 0801e328, lr 08002500, pc 00036834, insn e8bd8000: ldmia sp!, {pc} +sp 0801e32c, lr 08002500, pc 0003692c, insn e8bd8003: ldmia sp!, {r0, r1, pc} +sp 0801e338, lr 08002500, pc 00036a5c, insn e59fe0a0: ldr lr, [pc, #160] ; 0x00036b04 +sp 0801e338, lr 08002368, pc 00036a60, insn e59ee000: ldr lr, [lr] +sp 0801e338, lr 080024d8, pc 00036a64, insn e58ed00c: str sp, [lr, #12] +sp 0801e338, lr 080024d8, pc 00036a68, insn e59fd088: ldr sp, [pc, #136] ; 0x00036af8 +sp 080004fc, lr 080024d8, pc 00036a6c, insn e92d0003: stmdb sp!, {r0, r1} +sp 080004f4, lr 080024d8, pc 00036a70, insn e59f0090: ldr r0, [pc, #144] ; 0x00036b08 +sp 080004f4, lr 080024d8, pc 00036a74, insn e5d01000: ldrb r1, [r0] +sp 080004f4, lr 080024d8, pc 00036a78, insn e2411001: sub r1, r1, #1 ; 0x1 +sp 080004f4, lr 080024d8, pc 00036a7c, insn e5c01000: strb r1, [r0] +sp 080004f4, lr 080024d8, pc 00036a80, insn e8bd0003: ldmia sp!, {r0, r1} +sp 080004fc, lr 080024d8, pc 00036a84, insn e25ff004: subs pc, pc, #4 ; 0x4 +sp 0801e338, lr 0001ebb4, pc 00036a88, insn e92d40ff: stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, lr} +sp 0801e314, lr 0001ebb4, pc 00036a8c, insn e10f0000: mrs r0, CPSR +sp 0801e314, lr 0001ebb4, pc 00036a90, insn e92d0001: stmdb sp!, {r0} +sp 0801e310, lr 0001ebb4, pc 00036a94, insn e59f408c: ldr r4, [pc, #140] ; 0x00036b28 +sp 0801e310, lr 0001ebb4, pc 00036a98, insn e59f508c: ldr r5, [pc, #140] ; 0x00036b2c +sp 0801e310, lr 0001ebb4, pc 00036a9c, insn e59f608c: ldr r6, [pc, #140] ; 0x00036b30 +sp 0801e310, lr 0001ebb4, pc 00036aa0, insn e2867080: add r7, r6, #128 ; 0x80 +sp 0801e310, lr 0001ebb4, pc 00036aa4, insn ea000007: b 0x00036ac8 +sp 0801e310, lr 0001ebb4, pc 00036ac8, insn e5940000: ldr r0, [r4] +sp 0801e310, lr 0001ebb4, pc 00036acc, insn e5951000: ldr r1, [r5] +sp 0801e310, lr 0001ebb4, pc 00036ad0, insn e1500001: cmp r0, r1 +sp 0801e310, lr 0001ebb4, pc 00036ad4, insn 1afffff3: bne 0x00036aa8 +sp 0801e310, lr 0001ebb4, pc 00036ad8, insn e8bd0001: ldmia sp!, {r0} +sp 0801e314, lr 0001ebb4, pc 00036adc, insn e12ff000: msr CPSR_fsxc, r0 +sp 0801e314, lr 0001ebb4, pc 00036ae0, insn e8bd80ff: ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7, pc} +sp 0801e338, lr 0001ebb4, pc 0001ebb4, insn e20000ff: and r0, r0, #255 ; 0xff +sp 0801e338, lr 0001ebb4, pc 0001ebb8, insn e8bd8008: ldmia sp!, {r3, pc} +sp 0801e340, lr 0001ebb4, pc 0001ebec, insn e3500000: cmp r0, #0 ; 0x0 +sp 0801e340, lr 0001ebb4, pc 0001ebf0, insn 0afffffc: beq 0x0001ebe8 +sp 0801e340, lr 0001ebb4, pc 0001ebf4, insn e1a00004: mov r0, r4 +sp 0801e340, lr 0001ebb4, pc 0001ebf8, insn eafffff9: b 0x0001ebe4 +sp 0801e340, lr 0001ebb4, pc 0001ebe4, insn e8bd8010: ldmia sp!, {r4, pc} +sp 0801e348, lr 0001ebb4, pc 0002e928, insn e3a00000: mov r0, #0 ; 0x0 diff --git a/bitmaps/.svn/all-wcprops b/bitmaps/.svn/all-wcprops new file mode 100644 index 0000000..91fd5b6 --- /dev/null +++ b/bitmaps/.svn/all-wcprops @@ -0,0 +1,545 @@ +K 25 +svn:wc:ra_dav:version-url +V 32 +/p/x49gp/code/!svn/ver/1/bitmaps +END +tiny_braceleft.xbm +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_braceleft.xbm +END +tiny__i.xbm +K 25 +svn:wc:ra_dav:version-url +V 44 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny__i.xbm +END +tiny_hyphen.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_hyphen.xbm +END +tiny_comma.xbm +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_comma.xbm +END +tiny_math_notequal.xbm +K 25 +svn:wc:ra_dav:version-url +V 55 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_notequal.xbm +END +tiny_large_comma.xbm +K 25 +svn:wc:ra_dav:version-url +V 53 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_large_comma.xbm +END +tiny_math_radical.xbm +K 25 +svn:wc:ra_dav:version-url +V 54 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_radical.xbm +END +tiny_numbersign.xbm +K 25 +svn:wc:ra_dav:version-url +V 52 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_numbersign.xbm +END +tiny_colon.xbm +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_colon.xbm +END +tiny_braceright.xbm +K 25 +svn:wc:ra_dav:version-url +V 52 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_braceright.xbm +END +tiny_guillemotleft.xbm +K 25 +svn:wc:ra_dav:version-url +V 55 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_guillemotleft.xbm +END +tiny_quotedbl.xbm +K 25 +svn:wc:ra_dav:version-url +V 50 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_quotedbl.xbm +END +tiny_zero.xbm +K 25 +svn:wc:ra_dav:version-url +V 46 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_zero.xbm +END +tiny_math_numbersign.xbm +K 25 +svn:wc:ra_dav:version-url +V 57 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_numbersign.xbm +END +tiny_math_summation.xbm +K 25 +svn:wc:ra_dav:version-url +V 56 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_summation.xbm +END +tiny_math_downarrowright.xbm +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_downarrowright.xbm +END +tiny_greater.xbm +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_greater.xbm +END +button_round.pix +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/1/bitmaps/button_round.pix +END +button_small.xbm +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/1/bitmaps/button_small.xbm +END +ann_io.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/ann_io.xbm +END +tiny_xsuperior.xbm +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_xsuperior.xbm +END +tiny_twosuperior.xbm +K 25 +svn:wc:ra_dav:version-url +V 53 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_twosuperior.xbm +END +tiny_math_downarrowleft.xbm +K 25 +svn:wc:ra_dav:version-url +V 60 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_downarrowleft.xbm +END +tiny_overscore.xbm +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_overscore.xbm +END +tiny_three.xbm +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_three.xbm +END +tiny_slash.xbm +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_slash.xbm +END +ann_alpha.xbm +K 25 +svn:wc:ra_dav:version-url +V 46 +/p/x49gp/code/!svn/ver/1/bitmaps/ann_alpha.xbm +END +button_round.xbm +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/1/bitmaps/button_round.xbm +END +tiny_math_less.xbm +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_less.xbm +END +tiny_notdef.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_notdef.xbm +END +tiny_A.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_A.xbm +END +tiny_math_equal.xbm +K 25 +svn:wc:ra_dav:version-url +V 52 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_equal.xbm +END +tiny_parenleft.xbm +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_parenleft.xbm +END +button_normal.xbm +K 25 +svn:wc:ra_dav:version-url +V 50 +/p/x49gp/code/!svn/ver/1/bitmaps/button_normal.xbm +END +tiny_B.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_B.xbm +END +tiny_math_pi.xbm +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_pi.xbm +END +tiny_C.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_C.xbm +END +button_large.xbm +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/1/bitmaps/button_large.xbm +END +tiny_period.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_period.xbm +END +tiny_D.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_D.xbm +END +tiny_E.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_E.xbm +END +tiny_F.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_F.xbm +END +tiny_G.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_G.xbm +END +tiny_H.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_H.xbm +END +tiny_arrowright.xbm +K 25 +svn:wc:ra_dav:version-url +V 52 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_arrowright.xbm +END +tiny_I.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_I.xbm +END +tiny_J.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_J.xbm +END +tiny_K.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_K.xbm +END +tiny_L.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_L.xbm +END +tiny_M.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_M.xbm +END +tiny_math_e.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_e.xbm +END +tiny_N.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_N.xbm +END +tiny_O.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_O.xbm +END +tiny_guillemotright.xbm +K 25 +svn:wc:ra_dav:version-url +V 56 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_guillemotright.xbm +END +tiny_P.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_P.xbm +END +tiny_Q.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_Q.xbm +END +tiny_math_arrowright.xbm +K 25 +svn:wc:ra_dav:version-url +V 57 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_arrowright.xbm +END +tiny_R.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_R.xbm +END +tiny_math_greater.xbm +K 25 +svn:wc:ra_dav:version-url +V 54 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_greater.xbm +END +tiny_S.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_S.xbm +END +tiny_T.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_T.xbm +END +ann_battery.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/ann_battery.xbm +END +tiny_U.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_U.xbm +END +tiny_V.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_V.xbm +END +tiny_W.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_W.xbm +END +tiny_equal.xbm +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_equal.xbm +END +tiny_X.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_X.xbm +END +tiny_Y.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_Y.xbm +END +tiny_Z.xbm +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_Z.xbm +END +tiny_underscore.xbm +K 25 +svn:wc:ra_dav:version-url +V 52 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_underscore.xbm +END +tiny_ampersand.xbm +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_ampersand.xbm +END +button_tiny.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/button_tiny.xbm +END +ann_busy.xbm +K 25 +svn:wc:ra_dav:version-url +V 45 +/p/x49gp/code/!svn/ver/1/bitmaps/ann_busy.xbm +END +tiny_math_arrowleft.xbm +K 25 +svn:wc:ra_dav:version-url +V 56 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_arrowleft.xbm +END +tiny_math_integral.xbm +K 25 +svn:wc:ra_dav:version-url +V 55 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_integral.xbm +END +tiny_math_x.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_x.xbm +END +tiny_math_y.xbm +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_y.xbm +END +ann_left.xbm +K 25 +svn:wc:ra_dav:version-url +V 45 +/p/x49gp/code/!svn/ver/1/bitmaps/ann_left.xbm +END +tiny_math_greaterequal.xbm +K 25 +svn:wc:ra_dav:version-url +V 59 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_greaterequal.xbm +END +tiny_math_partialdiff.xbm +K 25 +svn:wc:ra_dav:version-url +V 58 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_partialdiff.xbm +END +tiny_math_infinity.xbm +K 25 +svn:wc:ra_dav:version-url +V 55 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_infinity.xbm +END +tiny_parenright.xbm +K 25 +svn:wc:ra_dav:version-url +V 52 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_parenright.xbm +END +tiny_arrowleft.xbm +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_arrowleft.xbm +END +tiny_less.xbm +K 25 +svn:wc:ra_dav:version-url +V 46 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_less.xbm +END +ann_right.xbm +K 25 +svn:wc:ra_dav:version-url +V 46 +/p/x49gp/code/!svn/ver/1/bitmaps/ann_right.xbm +END +tiny_math_lessequal.xbm +K 25 +svn:wc:ra_dav:version-url +V 56 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_math_lessequal.xbm +END +tiny_bracketright.xbm +K 25 +svn:wc:ra_dav:version-url +V 54 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_bracketright.xbm +END +tiny_two.xbm +K 25 +svn:wc:ra_dav:version-url +V 45 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_two.xbm +END +tiny_one.xbm +K 25 +svn:wc:ra_dav:version-url +V 45 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_one.xbm +END +tiny_bracketleft.xbm +K 25 +svn:wc:ra_dav:version-url +V 53 +/p/x49gp/code/!svn/ver/1/bitmaps/tiny_bracketleft.xbm +END diff --git a/bitmaps/.svn/entries b/bitmaps/.svn/entries new file mode 100644 index 0000000..a45961b --- /dev/null +++ b/bitmaps/.svn/entries @@ -0,0 +1,3091 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/bitmaps +http://svn.code.sf.net/p/x49gp/code + + + +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tiny_braceleft.xbm +file + + + + +2013-08-23T00:54:47.000000Z +6a96ca03ae4d3131ae52b9ec2a8df2c1 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +230 + +tiny__i.xbm +file + + + + +2013-08-23T00:54:47.000000Z +e45172ee6d333e4d51d3a3952dcc9456 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_hyphen.xbm +file + + + + +2013-08-23T00:54:47.000000Z +02b721c95ca75c341d95fcbb796a6e4c +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +185 + +tiny_comma.xbm +file + + + + +2013-08-23T00:54:47.000000Z +427fb7c5c7f62bb831d531023236b266 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +174 + +tiny_math_notequal.xbm +file + + + + +2013-08-23T00:54:47.000000Z +7c6f9077263882d4c7d3f639e28ac981 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +244 + +tiny_large_comma.xbm +file + + + + +2013-08-23T00:54:47.000000Z +f9c5465b96c7f134416587673b0fe580 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +221 + +tiny_math_radical.xbm +file + + + + +2013-08-23T00:54:47.000000Z +e6bc9c176bf8289c8a2a160c20c20dfe +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +258 + +tiny_numbersign.xbm +file + + + + +2013-08-23T00:54:47.000000Z +a3110308b1ebef44c8facd04915ec313 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +217 + +tiny_colon.xbm +file + + + + +2013-08-23T00:54:47.000000Z +bd62ab99812302fa0bf412cb33e31c9f +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +191 + +tiny_braceright.xbm +file + + + + +2013-08-23T00:54:47.000000Z +2a70fe7d34d3b1705c1c550d5e7097be +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +235 + +tiny_guillemotleft.xbm +file + + + + +2013-08-23T00:54:47.000000Z +250bf68b6a3ba4d65843c8a093dbbdcc +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +269 + +tiny_quotedbl.xbm +file + + + + +2013-08-23T00:54:47.000000Z +0e9aed0029bebe338cd135b0cc9015e3 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +213 + +tiny_zero.xbm +file + + + + +2013-08-23T00:54:47.000000Z +05dddea7641296e8fe9c68839f4333bf +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +193 + +tiny_math_numbersign.xbm +file + + + + +2013-08-23T00:54:47.000000Z +a0a8c518a2d57279b1d26339e1882b83 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +306 + +tiny_math_summation.xbm +file + + + + +2013-08-23T00:54:47.000000Z +5174f3a9d0384d92876c174101b6dcc4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +255 + +tiny_math_downarrowright.xbm +file + + + + +2013-08-23T00:54:47.000000Z +9f2b6bea47636d415a09e8e822796b83 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +323 + +tiny_greater.xbm +file + + + + +2013-08-23T00:54:47.000000Z +c25726fc89e3fb76af461f8915c429b4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +208 + +button_round.pix +file + + + + +2013-08-23T00:54:47.000000Z +f15f0737c0a09735505fce818dbb11bb +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +10070 + +button_small.xbm +file + + + + +2013-08-23T00:54:47.000000Z +4c26a830d99646aa716fee86b517d6f5 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +983 + +ann_io.xbm +file + + + + +2013-08-23T00:54:47.000000Z +b24a7a59cb19b584bdbfac87d01d76a8 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +239 + +tiny_xsuperior.xbm +file + + + + +2013-08-23T00:54:47.000000Z +609f8d464b3ed9316aec849c808cde01 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +230 + +tiny_twosuperior.xbm +file + + + + +2013-08-23T00:54:47.000000Z +fd65cd07c1144c654a97a23efd4f7a76 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +240 + +tiny_math_downarrowleft.xbm +file + + + + +2013-08-23T00:54:47.000000Z +cd8a369fbf3d1deda3eaf7d99b2d76ce +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +318 + +tiny_overscore.xbm +file + + + + +2013-08-23T00:54:47.000000Z +e9c53c81284ecfa8adb417e0c4d141b7 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +230 + +tiny_three.xbm +file + + + + +2013-08-23T00:54:47.000000Z +c7ae04ce1e55c19e2e1b54a1f4fdc942 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +198 + +tiny_slash.xbm +file + + + + +2013-08-23T00:54:47.000000Z +86d8e5949fb643f6ab346e52cb07f9db +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +198 + +ann_alpha.xbm +file + + + + +2013-08-23T00:54:47.000000Z +a69e91c81fb2cf254290833e5b25facc +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +248 + +button_round.xbm +file + + + + +2013-08-23T00:54:47.000000Z +6518ef3935067e1f6a29da6d36f7ebd7 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +1139 + +tiny_math_less.xbm +file + + + + +2013-08-23T00:54:47.000000Z +8935056ad75a52e9f7ecf626d199ffc1 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +218 + +tiny_notdef.xbm +file + + + + +2013-08-23T00:54:47.000000Z +f8ddf3eea89729fbdf557b9e16ef1044 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +191 + +tiny_A.xbm +file + + + + +2013-08-23T00:54:47.000000Z +d115248bf9d36052d64e8952238d83f3 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_math_equal.xbm +file + + + + +2013-08-23T00:54:47.000000Z +7e20ed3eaf621d49c87da739d4824d8a +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +217 + +button_normal.xbm +file + + + + +2013-08-23T00:54:47.000000Z +c64b706e97d20ef524a024a49c03d966 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +1160 + +tiny_parenleft.xbm +file + + + + +2013-08-23T00:54:47.000000Z +bb48568441a7b0d9e69874a885bf537a +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +230 + +tiny_B.xbm +file + + + + +2013-08-23T00:54:47.000000Z +71bd5b0ecad09a679c3a8d3fccdc05f6 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_math_pi.xbm +file + + + + +2013-08-23T00:54:47.000000Z +7c9e701a58a036fa12cab9a591b84fd6 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +238 + +tiny_C.xbm +file + + + + +2013-08-23T00:54:47.000000Z +aaf99e9138ecc75faedfadd60d98226c +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +button_large.xbm +file + + + + +2013-08-23T00:54:47.000000Z +b201374266ab1b3fe5b6595ff92d01da +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +1307 + +tiny_period.xbm +file + + + + +2013-08-23T00:54:47.000000Z +c765fa4ea7a16850aba7935fbc11118a +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +173 + +tiny_D.xbm +file + + + + +2013-08-23T00:54:47.000000Z +ce07d0dc51abdea43eb72f3b7085ceea +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_E.xbm +file + + + + +2013-08-23T00:54:47.000000Z +26e0735e3b882e183a27963793cd4140 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_F.xbm +file + + + + +2013-08-23T00:54:47.000000Z +4961173732dc639e4c082eb068227541 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_G.xbm +file + + + + +2013-08-23T00:54:47.000000Z +81572038798aa20853ae863dd95c54e9 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_H.xbm +file + + + + +2013-08-23T00:54:47.000000Z +2b4113578593f6d7c28a328b8a0611e4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_arrowright.xbm +file + + + + +2013-08-23T00:54:47.000000Z +77a9645449129d773a378b26429f0e3b +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +210 + +tiny_I.xbm +file + + + + +2013-08-23T00:54:47.000000Z +1de086b1f2322748816e03937933423b +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_J.xbm +file + + + + +2013-08-23T00:54:47.000000Z +ed255186f2eefde7b621cf7e9f0b2299 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_K.xbm +file + + + + +2013-08-23T00:54:47.000000Z +a65402d6bed8531560cf33b70cd92e22 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_L.xbm +file + + + + +2013-08-23T00:54:47.000000Z +3b628d5abd97e8cb7a9f960b509bc601 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_M.xbm +file + + + + +2013-08-23T00:54:47.000000Z +aac0dc403d21ccbc230d153523506ff5 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_math_e.xbm +file + + + + +2013-08-23T00:54:47.000000Z +aec00d703dbc898019a71f724a4546af +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +197 + +tiny_N.xbm +file + + + + +2013-08-23T00:54:47.000000Z +f110f872da1081193af100a0bb248229 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_O.xbm +file + + + + +2013-08-23T00:54:47.000000Z +7348b768df5cedc854c561a9ce12de69 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_guillemotright.xbm +file + + + + +2013-08-23T00:54:47.000000Z +68a9cf18f73ec3a14abc7cc7c466764f +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +274 + +tiny_P.xbm +file + + + + +2013-08-23T00:54:47.000000Z +a9789b1b6f5e43ab1bfb6607f29f11e8 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_Q.xbm +file + + + + +2013-08-23T00:54:47.000000Z +ee8b504d1969c72096ae64719397c3d8 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_math_arrowright.xbm +file + + + + +2013-08-23T00:54:47.000000Z +d9d647b0b038378ce4a9dd97d468e7c7 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +279 + +tiny_R.xbm +file + + + + +2013-08-23T00:54:47.000000Z +224a2bb0fb66ea7963beb3afa8405a50 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_math_greater.xbm +file + + + + +2013-08-23T00:54:47.000000Z +47acdca9158d3cf5e04cf4202fead77f +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +233 + +tiny_S.xbm +file + + + + +2013-08-23T00:54:47.000000Z +10307996f827bd06a19345c4d2074dc4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_T.xbm +file + + + + +2013-08-23T00:54:47.000000Z +e23a0eb281304a2e457c151cb3397af7 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +ann_battery.xbm +file + + + + +2013-08-23T00:54:47.000000Z +917cf2439a9f9d878b6d5eedc40aad13 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +254 + +tiny_U.xbm +file + + + + +2013-08-23T00:54:47.000000Z +ffc96f4ed1390dd3c736a04b6a62be62 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_V.xbm +file + + + + +2013-08-23T00:54:47.000000Z +304163b43679e4dfc5df7fc9293285bc +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_W.xbm +file + + + + +2013-08-23T00:54:47.000000Z +25c909c38cfdb595e1ce2ea2bd307efc +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_equal.xbm +file + + + + +2013-08-23T00:54:47.000000Z +d57654dc8b7338e3bfa24239a10951c1 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +186 + +tiny_X.xbm +file + + + + +2013-08-23T00:54:47.000000Z +ba7244aa01ff8b65616236adedd5f491 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_Y.xbm +file + + + + +2013-08-23T00:54:47.000000Z +4775998ea1125793b35a6bb2e109b3b4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_Z.xbm +file + + + + +2013-08-23T00:54:47.000000Z +eb7ace0d75d226e0f37eb2f04821724d +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +178 + +tiny_underscore.xbm +file + + + + +2013-08-23T00:54:47.000000Z +e8936ec5f80e2e66bd33180c82ce26ae +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +199 + +tiny_ampersand.xbm +file + + + + +2013-08-23T00:54:47.000000Z +161d44f473663d54602232e99d35f2f6 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +218 + +button_tiny.xbm +file + + + + +2013-08-23T00:54:47.000000Z +2eab65dd0f188474e4f4e3602ad506cc +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +794 + +ann_busy.xbm +file + + + + +2013-08-23T00:54:47.000000Z +eb8778604ac87bb01780633e4162cbda +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +245 + +tiny_math_arrowleft.xbm +file + + + + +2013-08-23T00:54:47.000000Z +feeb8b82ea001df3a98de1f16c130c2d +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +274 + +tiny_math_integral.xbm +file + + + + +2013-08-23T00:54:47.000000Z +a5be082029e753d65b85798c82d11bc4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +320 + +tiny_math_x.xbm +file + + + + +2013-08-23T00:54:47.000000Z +4e37ae052a1ae3ae3f3394a9924925d0 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +197 + +tiny_math_y.xbm +file + + + + +2013-08-23T00:54:47.000000Z +90f36c96ecc01f2c7fd2cbea59c2cd4a +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +215 + +ann_left.xbm +file + + + + +2013-08-23T00:54:47.000000Z +bed7766441991ca46073affa4027afaa +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +245 + +tiny_math_greaterequal.xbm +file + + + + +2013-08-23T00:54:47.000000Z +00bb2380cab2e1263aae461aee640cd8 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +264 + +tiny_math_partialdiff.xbm +file + + + + +2013-08-23T00:54:47.000000Z +fec532a68b1e04cf43ecb2d941719b6b +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +259 + +tiny_math_infinity.xbm +file + + + + +2013-08-23T00:54:47.000000Z +748f10ba192dea564bd8f0dd7f94c9a4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +256 + +CVS +dir + +tiny_parenright.xbm +file + + + + +2013-08-23T00:54:47.000000Z +775c932938d28cea7494a65276181110 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +235 + +tiny_arrowleft.xbm +file + + + + +2013-08-23T00:54:47.000000Z +102e92dc1ba66a16b5ac9fd2c916c583 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +205 + +tiny_less.xbm +file + + + + +2013-08-23T00:54:47.000000Z +dc000d556138b58661bfb24e68752d95 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +193 + +ann_right.xbm +file + + + + +2013-08-23T00:54:47.000000Z +08ef6dc67604a8b5429d97abbcb59eb1 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +248 + +tiny_math_lessequal.xbm +file + + + + +2013-08-23T00:54:47.000000Z +d423d39e18e87067c3f4cc1ab7063584 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +249 + +tiny_bracketright.xbm +file + + + + +2013-08-23T00:54:47.000000Z +996b4b228fb1f8df4357b6800e63dc53 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +245 + +tiny_two.xbm +file + + + + +2013-08-23T00:54:47.000000Z +4653e8359d0e1ffbd8a1ed4f30c7d183 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +188 + +tiny_one.xbm +file + + + + +2013-08-23T00:54:47.000000Z +32b5178b5420d3268d640a62c8080604 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +188 + +tiny_bracketleft.xbm +file + + + + +2013-08-23T00:54:47.000000Z +a9ab178a25c65a8adab75bbb1376a4c0 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +240 + diff --git a/bitmaps/.svn/text-base/ann_alpha.xbm.svn-base b/bitmaps/.svn/text-base/ann_alpha.xbm.svn-base new file mode 100644 index 0000000..e7cfcea --- /dev/null +++ b/bitmaps/.svn/text-base/ann_alpha.xbm.svn-base @@ -0,0 +1,5 @@ +#define ann_alpha_width 15 +#define ann_alpha_height 12 +static unsigned char ann_alpha_bits[] = { + 0xe0, 0x03, 0x18, 0x44, 0x0c, 0x4c, 0x06, 0x2c, 0x07, 0x2c, 0x07, 0x1c, + 0x07, 0x0c, 0x07, 0x0c, 0x07, 0x0e, 0x0e, 0x4d, 0xf8, 0x38, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/ann_battery.xbm.svn-base b/bitmaps/.svn/text-base/ann_battery.xbm.svn-base new file mode 100644 index 0000000..b4c6a45 --- /dev/null +++ b/bitmaps/.svn/text-base/ann_battery.xbm.svn-base @@ -0,0 +1,5 @@ +#define ann_battery_width 15 +#define ann_battery_height 12 +static unsigned char ann_battery_bits[] = { + 0x04, 0x10, 0x02, 0x20, 0x12, 0x24, 0x09, 0x48, 0xc9, 0x49, 0xc9, 0x49, + 0xc9, 0x49, 0x09, 0x48, 0x12, 0x24, 0x02, 0x20, 0x04, 0x10, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/ann_busy.xbm.svn-base b/bitmaps/.svn/text-base/ann_busy.xbm.svn-base new file mode 100644 index 0000000..1856111 --- /dev/null +++ b/bitmaps/.svn/text-base/ann_busy.xbm.svn-base @@ -0,0 +1,5 @@ +#define ann_busy_width 15 +#define ann_busy_height 12 +static unsigned char ann_busy_bits[] = { + 0xfc, 0x1f, 0x08, 0x08, 0x08, 0x08, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, + 0x40, 0x01, 0x20, 0x02, 0x10, 0x04, 0xc8, 0x09, 0xe8, 0x0b, 0xfc, 0x1f}; diff --git a/bitmaps/.svn/text-base/ann_io.xbm.svn-base b/bitmaps/.svn/text-base/ann_io.xbm.svn-base new file mode 100644 index 0000000..0c4536d --- /dev/null +++ b/bitmaps/.svn/text-base/ann_io.xbm.svn-base @@ -0,0 +1,5 @@ +#define ann_io_width 15 +#define ann_io_height 12 +static unsigned char ann_io_bits[] = { + 0x0c, 0x00, 0x1e, 0x00, 0x33, 0x0c, 0x61, 0x18, 0xcc, 0x30, 0xfe, 0x7f, + 0xfe, 0x7f, 0xcc, 0x30, 0x61, 0x18, 0x33, 0x0c, 0x1e, 0x00, 0x0c, 0x00}; diff --git a/bitmaps/.svn/text-base/ann_left.xbm.svn-base b/bitmaps/.svn/text-base/ann_left.xbm.svn-base new file mode 100644 index 0000000..604b9d5 --- /dev/null +++ b/bitmaps/.svn/text-base/ann_left.xbm.svn-base @@ -0,0 +1,5 @@ +#define ann_left_width 15 +#define ann_left_height 12 +static unsigned char ann_left_bits[] = { + 0xfe, 0x3f, 0xff, 0x7f, 0x9f, 0x7f, 0xcf, 0x7f, 0xe7, 0x7f, 0x03, 0x78, + 0x03, 0x70, 0xe7, 0x73, 0xcf, 0x73, 0x9f, 0x73, 0xff, 0x73, 0xfe, 0x33}; diff --git a/bitmaps/.svn/text-base/ann_right.xbm.svn-base b/bitmaps/.svn/text-base/ann_right.xbm.svn-base new file mode 100644 index 0000000..bd9bd6f --- /dev/null +++ b/bitmaps/.svn/text-base/ann_right.xbm.svn-base @@ -0,0 +1,5 @@ +#define ann_right_width 15 +#define ann_right_height 12 +static unsigned char ann_right_bits[] = { + 0xfe, 0x3f, 0xff, 0x7f, 0xff, 0x7c, 0xff, 0x79, 0xff, 0x73, 0x0f, 0x60, + 0x07, 0x60, 0xe7, 0x73, 0xe7, 0x79, 0xe7, 0x7c, 0xe7, 0x7f, 0xe6, 0x3f}; diff --git a/bitmaps/.svn/text-base/button_large.xbm.svn-base b/bitmaps/.svn/text-base/button_large.xbm.svn-base new file mode 100644 index 0000000..11570f8 --- /dev/null +++ b/bitmaps/.svn/text-base/button_large.xbm.svn-base @@ -0,0 +1,19 @@ +#define button_large_width 46 +#define button_large_height 32 +static unsigned char button_large_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x07, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, + 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/button_normal.xbm.svn-base b/bitmaps/.svn/text-base/button_normal.xbm.svn-base new file mode 100644 index 0000000..e979828 --- /dev/null +++ b/bitmaps/.svn/text-base/button_normal.xbm.svn-base @@ -0,0 +1,17 @@ +#define button_normal_width 46 +#define button_normal_height 28 +static unsigned char button_normal_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x07, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, + 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/button_round.pix.svn-base b/bitmaps/.svn/text-base/button_round.pix.svn-base new file mode 100644 index 0000000..e25abb9 --- /dev/null +++ b/bitmaps/.svn/text-base/button_round.pix.svn-base @@ -0,0 +1,157 @@ +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (button_round) +#endif +#ifdef __GNUC__ +static const guint8 button_round[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 button_round[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (4356) */ + "\0\0\21\34" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (132) */ + "\0\0\0\204" + /* width (33) */ + "\0\0\0!" + /* height (33) */ + "\0\0\0!" + /* pixel_data: */ + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\0\0\0\244\0\0\0\232\0\0\0\232" + "\0\0\0\232\0\0\0\244\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\247\0\0\0\215\0\0\0|\0\0\0o\0\0\0_\0\0\0Z\0\0\0Z\0\0" + "\0_\0\0\0f\0\0\0o\0\0\0\201\0\0\0\225\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0" + "\0\211\0\0\0h\0\0\0W\0\0\0D\0\0\0:\0\0\0""1\0\0\0/\0\0\0,\0\0\0/\0\0" + "\0""4\0\0\0:\0\0\0H\0\0\0Z\0\0\0r\0\0\0\215\0\0\0\255\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\225\0\0\0o\0\0\0R\0\0\0:\0" + "\0\0*\0\0\0!\0\0\0\34\0\0\0\27\0\0\0\26\0\0\0\26\0\0\0\26\0\0\0\27\0" + "\0\0\35\0\0\0#\0\0\0/\0\0\0A\0\0\0W\0\0\0|\0\0\0\244\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\261\0\0\0\215\0\0\0_\0\0\0D\0\0\0,\0\0\0\35\0\0\0" + "\26\0\0\0\21\0\0\0\16\0\0\0\15\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\15\0" + "\0\0\16\0\0\0\22\0\0\0\27\0\0\0\37\0\0\0""1\0\0\0K\0\0\0h\0\0\0\225\0" + "\0\0\273\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\211\0\0\0_\0\0\0:\0\0\0#\0\0\0\27\0\0\0\20" + "\0\0\0\14\0\0\0\10\0\0\0\7\0\0\0\6\0\0\0\6\0\0\0\5\0\0\0\6\0\0\0\6\0" + "\0\0\7\0\0\0\11\0\0\0\15\0\0\0\22\0\0\0\31\0\0\0(\0\0\0D\0\0\0h\0\0\0" + "\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\222\0\0\0_\0\0\0:\0\0\0!\0\0\0\24\0\0\0\15\0\0\0\11\0" + "\0\0\6\0\0\0\5\0\0\0\4\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\4\0\0\0" + "\4\0\0\0\5\0\0\0\6\0\0\0\11\0\0\0\17\0\0\0\27\0\0\0&\0\0\0D\0\0\0o\0" + "\0\0\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\244\0\0\0o\0\0\0A\0\0\0#\0\0\0\24\0\0\0\15\0\0\0\10\0\0\0\5\0\0\0" + "\4\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0" + "\0\0\3\0\0\0\4\0\0\0\6\0\0\0\10\0\0\0\16\0\0\0\27\0\0\0*\0\0\0K\0\0\0" + "|\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211" + "\0\0\0O\0\0\0*\0\0\0\27\0\0\0\15\0\0\0\10\0\0\0\5\0\0\0\4\0\0\0\3\0\0" + "\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2" + "\0\0\0\3\0\0\0\4\0\0\0\5\0\0\0\10\0\0\0\17\0\0\0\32\0\0\0""1\0\0\0_\0" + "\0\0\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\244\0\0\0f\0\0" + "\0:\0\0\0\35\0\0\0\20\0\0\0\10\0\0\0\5\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0" + "\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0" + "\0\0\2\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\12\0\0\0\22\0\0\0!\0\0\0A\0\0\0" + "r\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211\0\0\0R\0\0\0(\0" + "\0\0\24\0\0\0\13\0\0\0\6\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0" + "\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2" + "\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\7\0\0\0\15\0\0\0\31\0\0\0""1\0\0\0_\0" + "\0\0\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0y\0\0\0A\0\0\0\37\0\0\0" + "\20\0\0\0\10\0\0\0\5\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0" + "\0\2\0\0\0\2\0\0\0\3\0\0\0\5\0\0\0\12\0\0\0\23\0\0\0&\0\0\0O\0\0\0\211" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0\0f\0\0\0""4\0\0\0\31\0\0\0\15" + "\0\0\0\6\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0" + "\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2" + "\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\10\0\0\0\17\0\0\0\37\0\0\0A\0\0\0y\0\0" + "\0\261\0\0\0\0\0\0\0\0\0\0\0\232\0\0\0_\0\0\0/\0\0\0\27\0\0\0\14\0\0" + "\0\6\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0" + "\0\2\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\32\0\0\0""7\0\0\0h\0\0\0" + "\255\0\0\0\0\0\0\0\0\0\0\0\225\0\0\0W\0\0\0*\0\0\0\24\0\0\0\12\0\0\0" + "\5\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\2\0\0\0\2\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\27\0\0\0""1\0\0\0f\0\0\0\244" + "\0\0\0\0\0\0\0\0\0\0\0\222\0\0\0R\0\0\0(\0\0\0\23\0\0\0\11\0\0\0\5\0" + "\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0" + "\0\0\2\0\0\0\4\0\0\0\6\0\0\0\14\0\0\0\27\0\0\0""1\0\0\0_\0\0\0\244\0" + "\0\0\0\0\0\0\0\0\0\0\225\0\0\0W\0\0\0*\0\0\0\24\0\0\0\12\0\0\0\5\0\0" + "\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0" + "\0\2\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\27\0\0\0""1\0\0\0f\0\0\0\244\0\0" + "\0\0\0\0\0\0\0\0\0\232\0\0\0_\0\0\0/\0\0\0\26\0\0\0\13\0\0\0\6\0\0\0" + "\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0" + "\3\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\32\0\0\0""7\0\0\0h\0\0\0\255\0\0\0" + "\0\0\0\0\0\0\0\0\244\0\0\0f\0\0\0""4\0\0\0\31\0\0\0\15\0\0\0\6\0\0\0" + "\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0" + "\3\0\0\0\4\0\0\0\10\0\0\0\17\0\0\0\37\0\0\0A\0\0\0r\0\0\0\261\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0y\0\0\0A\0\0\0\37\0\0\0\20\0\0\0\10\0\0\0\5\0\0" + "\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0" + "\0\5\0\0\0\12\0\0\0\23\0\0\0&\0\0\0O\0\0\0\211\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\211\0\0\0R\0\0\0(\0\0\0\24\0\0\0\13\0\0\0\6\0\0\0\4" + "\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0" + "\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\7" + "\0\0\0\15\0\0\0\27\0\0\0""1\0\0\0_\0\0\0\225\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\244\0\0\0f\0\0\0""7\0\0\0\35\0\0\0\20\0\0\0\10\0\0\0\5" + "\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0" + "\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\12" + "\0\0\0\23\0\0\0!\0\0\0D\0\0\0r\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\211\0\0\0O\0\0\0*\0\0\0\27\0\0\0\15\0\0\0\10\0\0\0" + "\5\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0" + "\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\5\0\0\0\10\0\0\0\17\0\0" + "\0\32\0\0\0""1\0\0\0_\0\0\0\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\244\0\0\0o\0\0\0D\0\0\0#\0\0\0\24\0\0\0\15\0\0\0\7\0" + "\0\0\5\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0" + "\2\0\0\0\3\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\10\0\0\0\16\0\0\0\27\0\0\0*" + "\0\0\0K\0\0\0|\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\222\0\0\0_\0\0\0:\0\0\0!\0\0\0\24\0\0\0\15\0\0\0\11" + "\0\0\0\6\0\0\0\5\0\0\0\4\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\4\0\0" + "\0\4\0\0\0\5\0\0\0\6\0\0\0\12\0\0\0\17\0\0\0\27\0\0\0&\0\0\0D\0\0\0h" + "\0\0\0\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\215\0\0\0_\0\0\0>\0\0\0#\0\0\0\27\0\0\0\20\0\0\0" + "\14\0\0\0\11\0\0\0\7\0\0\0\6\0\0\0\6\0\0\0\5\0\0\0\6\0\0\0\6\0\0\0\7" + "\0\0\0\11\0\0\0\15\0\0\0\22\0\0\0\32\0\0\0*\0\0\0D\0\0\0h\0\0\0\225\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\261\0\0\0\215\0\0\0_\0\0\0D\0\0\0*\0\0\0\35\0\0\0\26" + "\0\0\0\21\0\0\0\15\0\0\0\14\0\0\0\13\0\0\0\12\0\0\0\13\0\0\0\15\0\0\0" + "\17\0\0\0\22\0\0\0\27\0\0\0\37\0\0\0""1\0\0\0K\0\0\0o\0\0\0\225\0\0\0" + "\273\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\225\0\0\0r\0\0\0R\0\0\0:\0\0\0" + "*\0\0\0\37\0\0\0\32\0\0\0\27\0\0\0\26\0\0\0\26\0\0\0\27\0\0\0\31\0\0" + "\0\35\0\0\0#\0\0\0/\0\0\0A\0\0\0Z\0\0\0y\0\0\0\244\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0\0\211\0\0\0h\0\0\0R" + "\0\0\0D\0\0\0:\0\0\0""1\0\0\0/\0\0\0,\0\0\0/\0\0\0""4\0\0\0:\0\0\0H\0" + "\0\0Z\0\0\0r\0\0\0\215\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0\0\215\0\0\0|\0" + "\0\0o\0\0\0f\0\0\0_\0\0\0_\0\0\0_\0\0\0f\0\0\0o\0\0\0\201\0\0\0\225\0" + "\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\0" + "\0\0\244\0\0\0\232\0\0\0\232\0\0\0\232\0\0\0\244\0\0\0\255\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0"}; + + diff --git a/bitmaps/.svn/text-base/button_round.xbm.svn-base b/bitmaps/.svn/text-base/button_round.xbm.svn-base new file mode 100644 index 0000000..f0d3292 --- /dev/null +++ b/bitmaps/.svn/text-base/button_round.xbm.svn-base @@ -0,0 +1,17 @@ +#define button_round_width 33 +#define button_round_height 33 +static unsigned char button_round_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xfc, + 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x80, 0xff, 0xff, 0x03, + 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0xf0, + 0xff, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xff, + 0x3f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, + 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, + 0xff, 0xff, 0xff, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, + 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, + 0xf8, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, + 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, + 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/button_small.xbm.svn-base b/bitmaps/.svn/text-base/button_small.xbm.svn-base new file mode 100644 index 0000000..e3508d3 --- /dev/null +++ b/bitmaps/.svn/text-base/button_small.xbm.svn-base @@ -0,0 +1,15 @@ +#define button_small_width 36 +#define button_small_height 28 +static unsigned char button_small_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, + 0x03, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, + 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, + 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, + 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, + 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, + 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, + 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, + 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0x00, + 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/button_tiny.xbm.svn-base b/bitmaps/.svn/text-base/button_tiny.xbm.svn-base new file mode 100644 index 0000000..39d0abb --- /dev/null +++ b/bitmaps/.svn/text-base/button_tiny.xbm.svn-base @@ -0,0 +1,13 @@ +#define button_tiny_width 36 +#define button_tiny_height 22 +static unsigned char button_tiny_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, + 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, + 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, + 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, + 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, + 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, + 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, + 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfc, + 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_A.xbm.svn-base b/bitmaps/.svn/text-base/tiny_A.xbm.svn-base new file mode 100644 index 0000000..cd0e0d2 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_A.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_A_width 5 +#define tiny_A_height 7 +#define tiny_A_x_hot 0 +#define tiny_A_y_hot 6 +static unsigned char tiny_A_bits[] = { + 0x06, 0x09, 0x09, 0x0f, 0x09, 0x09, 0x09}; diff --git a/bitmaps/.svn/text-base/tiny_B.xbm.svn-base b/bitmaps/.svn/text-base/tiny_B.xbm.svn-base new file mode 100644 index 0000000..3fa73c1 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_B.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_B_width 5 +#define tiny_B_height 7 +#define tiny_B_x_hot 0 +#define tiny_B_y_hot 6 +static unsigned char tiny_B_bits[] = { + 0x07, 0x09, 0x09, 0x07, 0x09, 0x09, 0x07}; diff --git a/bitmaps/.svn/text-base/tiny_C.xbm.svn-base b/bitmaps/.svn/text-base/tiny_C.xbm.svn-base new file mode 100644 index 0000000..bd10b3e --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_C.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_C_width 5 +#define tiny_C_height 7 +#define tiny_C_x_hot 0 +#define tiny_C_y_hot 6 +static unsigned char tiny_C_bits[] = { + 0x06, 0x09, 0x01, 0x01, 0x01, 0x09, 0x06}; diff --git a/bitmaps/.svn/text-base/tiny_D.xbm.svn-base b/bitmaps/.svn/text-base/tiny_D.xbm.svn-base new file mode 100644 index 0000000..4c49bf8 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_D.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_D_width 5 +#define tiny_D_height 7 +#define tiny_D_x_hot 0 +#define tiny_D_y_hot 6 +static unsigned char tiny_D_bits[] = { + 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07}; diff --git a/bitmaps/.svn/text-base/tiny_E.xbm.svn-base b/bitmaps/.svn/text-base/tiny_E.xbm.svn-base new file mode 100644 index 0000000..ee69976 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_E.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_E_width 4 +#define tiny_E_height 7 +#define tiny_E_x_hot 0 +#define tiny_E_y_hot 6 +static unsigned char tiny_E_bits[] = { + 0x17, 0x01, 0x01, 0x03, 0x01, 0x01, 0x17}; diff --git a/bitmaps/.svn/text-base/tiny_F.xbm.svn-base b/bitmaps/.svn/text-base/tiny_F.xbm.svn-base new file mode 100644 index 0000000..1a998e7 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_F.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_F_width 4 +#define tiny_F_height 7 +#define tiny_F_x_hot 0 +#define tiny_F_y_hot 6 +static unsigned char tiny_F_bits[] = { + 0x07, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01}; diff --git a/bitmaps/.svn/text-base/tiny_G.xbm.svn-base b/bitmaps/.svn/text-base/tiny_G.xbm.svn-base new file mode 100644 index 0000000..e0e0814 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_G.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_G_width 6 +#define tiny_G_height 7 +#define tiny_G_x_hot 0 +#define tiny_G_y_hot 6 +static unsigned char tiny_G_bits[] = { + 0x0e, 0x11, 0x01, 0x01, 0x19, 0x11, 0x0e}; diff --git a/bitmaps/.svn/text-base/tiny_H.xbm.svn-base b/bitmaps/.svn/text-base/tiny_H.xbm.svn-base new file mode 100644 index 0000000..2efb290 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_H.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_H_width 5 +#define tiny_H_height 7 +#define tiny_H_x_hot 0 +#define tiny_H_y_hot 6 +static unsigned char tiny_H_bits[] = { + 0x09, 0x09, 0x09, 0x0f, 0x09, 0x09, 0x09}; diff --git a/bitmaps/.svn/text-base/tiny_I.xbm.svn-base b/bitmaps/.svn/text-base/tiny_I.xbm.svn-base new file mode 100644 index 0000000..7c85dee --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_I.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_I_width 4 +#define tiny_I_height 7 +#define tiny_I_x_hot 0 +#define tiny_I_y_hot 6 +static unsigned char tiny_I_bits[] = { + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}; diff --git a/bitmaps/.svn/text-base/tiny_J.xbm.svn-base b/bitmaps/.svn/text-base/tiny_J.xbm.svn-base new file mode 100644 index 0000000..ab7de19 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_J.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_J_width 5 +#define tiny_J_height 7 +#define tiny_J_x_hot 0 +#define tiny_J_y_hot 6 +static unsigned char tiny_J_bits[] = { + 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06}; diff --git a/bitmaps/.svn/text-base/tiny_K.xbm.svn-base b/bitmaps/.svn/text-base/tiny_K.xbm.svn-base new file mode 100644 index 0000000..f9563c4 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_K.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_K_width 5 +#define tiny_K_height 7 +#define tiny_K_x_hot 0 +#define tiny_K_y_hot 6 +static unsigned char tiny_K_bits[] = { + 0x09, 0x05, 0x05, 0x03, 0x05, 0x05, 0x09}; diff --git a/bitmaps/.svn/text-base/tiny_L.xbm.svn-base b/bitmaps/.svn/text-base/tiny_L.xbm.svn-base new file mode 100644 index 0000000..946b6f2 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_L.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_L_width 4 +#define tiny_L_height 7 +#define tiny_L_x_hot 0 +#define tiny_L_y_hot 6 +static unsigned char tiny_L_bits[] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07}; diff --git a/bitmaps/.svn/text-base/tiny_M.xbm.svn-base b/bitmaps/.svn/text-base/tiny_M.xbm.svn-base new file mode 100644 index 0000000..4091719 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_M.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_M_width 6 +#define tiny_M_height 7 +#define tiny_M_x_hot 0 +#define tiny_M_y_hot 6 +static unsigned char tiny_M_bits[] = { + 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11}; diff --git a/bitmaps/.svn/text-base/tiny_N.xbm.svn-base b/bitmaps/.svn/text-base/tiny_N.xbm.svn-base new file mode 100644 index 0000000..068d682 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_N.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_N_width 5 +#define tiny_N_height 7 +#define tiny_N_x_hot 0 +#define tiny_N_y_hot 6 +static unsigned char tiny_N_bits[] = { + 0x09, 0x0b, 0x0b, 0x0d, 0x0d, 0x09, 0x09}; diff --git a/bitmaps/.svn/text-base/tiny_O.xbm.svn-base b/bitmaps/.svn/text-base/tiny_O.xbm.svn-base new file mode 100644 index 0000000..4ef2d53 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_O.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_O_width 5 +#define tiny_O_height 7 +#define tiny_O_x_hot 0 +#define tiny_O_y_hot 6 +static unsigned char tiny_O_bits[] = { + 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06}; diff --git a/bitmaps/.svn/text-base/tiny_P.xbm.svn-base b/bitmaps/.svn/text-base/tiny_P.xbm.svn-base new file mode 100644 index 0000000..7fd19eb --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_P.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_P_width 5 +#define tiny_P_height 7 +#define tiny_P_x_hot 0 +#define tiny_P_y_hot 6 +static unsigned char tiny_P_bits[] = { + 0x07, 0x09, 0x09, 0x07, 0x01, 0x01, 0x01}; diff --git a/bitmaps/.svn/text-base/tiny_Q.xbm.svn-base b/bitmaps/.svn/text-base/tiny_Q.xbm.svn-base new file mode 100644 index 0000000..4ecebc5 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_Q.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_Q_width 6 +#define tiny_Q_height 7 +#define tiny_Q_x_hot 0 +#define tiny_Q_y_hot 6 +static unsigned char tiny_Q_bits[] = { + 0x0e, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16}; diff --git a/bitmaps/.svn/text-base/tiny_R.xbm.svn-base b/bitmaps/.svn/text-base/tiny_R.xbm.svn-base new file mode 100644 index 0000000..5088b22 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_R.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_R_width 5 +#define tiny_R_height 7 +#define tiny_R_x_hot 0 +#define tiny_R_y_hot 6 +static unsigned char tiny_R_bits[] = { + 0x07, 0x09, 0x09, 0x07, 0x05, 0x09, 0x09}; diff --git a/bitmaps/.svn/text-base/tiny_S.xbm.svn-base b/bitmaps/.svn/text-base/tiny_S.xbm.svn-base new file mode 100644 index 0000000..d567911 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_S.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_S_width 5 +#define tiny_S_height 7 +#define tiny_S_x_hot 0 +#define tiny_S_y_hot 6 +static unsigned char tiny_S_bits[] = { + 0x06, 0x09, 0x01, 0x06, 0x08, 0x09, 0x06}; diff --git a/bitmaps/.svn/text-base/tiny_T.xbm.svn-base b/bitmaps/.svn/text-base/tiny_T.xbm.svn-base new file mode 100644 index 0000000..4cb3ea4 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_T.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_T_width 5 +#define tiny_T_height 7 +#define tiny_T_x_hot 1 +#define tiny_T_y_hot 6 +static unsigned char tiny_T_bits[] = { + 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}; diff --git a/bitmaps/.svn/text-base/tiny_U.xbm.svn-base b/bitmaps/.svn/text-base/tiny_U.xbm.svn-base new file mode 100644 index 0000000..f9df60e --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_U.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_U_width 5 +#define tiny_U_height 7 +#define tiny_U_x_hot 0 +#define tiny_U_y_hot 6 +static unsigned char tiny_U_bits[] = { + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06}; diff --git a/bitmaps/.svn/text-base/tiny_V.xbm.svn-base b/bitmaps/.svn/text-base/tiny_V.xbm.svn-base new file mode 100644 index 0000000..07bc1cc --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_V.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_V_width 5 +#define tiny_V_height 7 +#define tiny_V_x_hot 0 +#define tiny_V_y_hot 6 +static unsigned char tiny_V_bits[] = { + 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06}; diff --git a/bitmaps/.svn/text-base/tiny_W.xbm.svn-base b/bitmaps/.svn/text-base/tiny_W.xbm.svn-base new file mode 100644 index 0000000..c8a878e --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_W.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_W_width 6 +#define tiny_W_height 7 +#define tiny_W_x_hot 0 +#define tiny_W_y_hot 6 +static unsigned char tiny_W_bits[] = { + 0x11, 0x11, 0x11, 0x15, 0x15, 0x1b, 0x11}; diff --git a/bitmaps/.svn/text-base/tiny_X.xbm.svn-base b/bitmaps/.svn/text-base/tiny_X.xbm.svn-base new file mode 100644 index 0000000..82b3429 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_X.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_X_width 5 +#define tiny_X_height 7 +#define tiny_X_x_hot 0 +#define tiny_X_y_hot 6 +static unsigned char tiny_X_bits[] = { + 0x09, 0x09, 0x06, 0x06, 0x06, 0x09, 0x09}; diff --git a/bitmaps/.svn/text-base/tiny_Y.xbm.svn-base b/bitmaps/.svn/text-base/tiny_Y.xbm.svn-base new file mode 100644 index 0000000..1b51bf6 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_Y.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_Y_width 6 +#define tiny_Y_height 7 +#define tiny_Y_x_hot 0 +#define tiny_Y_y_hot 6 +static unsigned char tiny_Y_bits[] = { + 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04}; diff --git a/bitmaps/.svn/text-base/tiny_Z.xbm.svn-base b/bitmaps/.svn/text-base/tiny_Z.xbm.svn-base new file mode 100644 index 0000000..f20296b --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_Z.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_Z_width 5 +#define tiny_Z_height 7 +#define tiny_Z_x_hot 0 +#define tiny_Z_y_hot 6 +static unsigned char tiny_Z_bits[] = { + 0x0f, 0x08, 0x04, 0x04, 0x02, 0x01, 0x0f}; diff --git a/bitmaps/.svn/text-base/tiny__i.xbm.svn-base b/bitmaps/.svn/text-base/tiny__i.xbm.svn-base new file mode 100644 index 0000000..4706d51 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny__i.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_i_width 4 +#define tiny_i_height 7 +#define tiny_i_x_hot 0 +#define tiny_i_y_hot 6 +static unsigned char tiny_i_bits[] = { + 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02}; diff --git a/bitmaps/.svn/text-base/tiny_ampersand.xbm.svn-base b/bitmaps/.svn/text-base/tiny_ampersand.xbm.svn-base new file mode 100644 index 0000000..86f807b --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_ampersand.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_ampersand_width 6 +#define tiny_ampersand_height 7 +#define tiny_ampersand_x_hot 0 +#define tiny_ampersand_y_hot 6 +static unsigned char tiny_ampersand_bits[] = { + 0x06, 0x09, 0x06, 0x16, 0x09, 0x09, 0x16}; diff --git a/bitmaps/.svn/text-base/tiny_arrowleft.xbm.svn-base b/bitmaps/.svn/text-base/tiny_arrowleft.xbm.svn-base new file mode 100644 index 0000000..25a8126 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_arrowleft.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_arrowleft_width 7 +#define tiny_arrowleft_height 5 +#define tiny_arrowleft_x_hot 0 +#define tiny_arrowleft_y_hot 4 +static unsigned char tiny_arrowleft_bits[] = { + 0x02, 0x3f, 0x02, 0x00, 0x00 }; diff --git a/bitmaps/.svn/text-base/tiny_arrowright.xbm.svn-base b/bitmaps/.svn/text-base/tiny_arrowright.xbm.svn-base new file mode 100644 index 0000000..ab37763 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_arrowright.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_arrowright_width 7 +#define tiny_arrowright_height 5 +#define tiny_arrowright_x_hot 0 +#define tiny_arrowright_y_hot 4 +static unsigned char tiny_arrowright_bits[] = { + 0x10, 0x3f, 0x10, 0x00, 0x00 }; diff --git a/bitmaps/.svn/text-base/tiny_braceleft.xbm.svn-base b/bitmaps/.svn/text-base/tiny_braceleft.xbm.svn-base new file mode 100644 index 0000000..0f6ba86 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_braceleft.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_braceleft_width 4 +#define tiny_braceleft_height 9 +#define tiny_braceleft_x_hot 0 +#define tiny_braceleft_y_hot 7 +static unsigned char tiny_braceleft_bits[] = { + 0x04, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x04}; diff --git a/bitmaps/.svn/text-base/tiny_braceright.xbm.svn-base b/bitmaps/.svn/text-base/tiny_braceright.xbm.svn-base new file mode 100644 index 0000000..2af45ee --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_braceright.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_braceright_width 4 +#define tiny_braceright_height 9 +#define tiny_braceright_x_hot 0 +#define tiny_braceright_y_hot 7 +static unsigned char tiny_braceright_bits[] = { + 0x01, 0x02, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x01}; diff --git a/bitmaps/.svn/text-base/tiny_bracketleft.xbm.svn-base b/bitmaps/.svn/text-base/tiny_bracketleft.xbm.svn-base new file mode 100644 index 0000000..f3ae7ea --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_bracketleft.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_bracketleft_width 4 +#define tiny_bracketleft_height 9 +#define tiny_bracketleft_x_hot 0 +#define tiny_bracketleft_y_hot 7 +static unsigned char tiny_bracketleft_bits[] = { + 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07}; diff --git a/bitmaps/.svn/text-base/tiny_bracketright.xbm.svn-base b/bitmaps/.svn/text-base/tiny_bracketright.xbm.svn-base new file mode 100644 index 0000000..de4d785 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_bracketright.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_bracketright_width 4 +#define tiny_bracketright_height 9 +#define tiny_bracketright_x_hot 0 +#define tiny_bracketright_y_hot 7 +static unsigned char tiny_bracketright_bits[] = { + 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07}; diff --git a/bitmaps/.svn/text-base/tiny_colon.xbm.svn-base b/bitmaps/.svn/text-base/tiny_colon.xbm.svn-base new file mode 100644 index 0000000..0dc2622 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_colon.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_colon_width 3 +#define tiny_colon_height 6 +#define tiny_colon_x_hot 0 +#define tiny_colon_y_hot 5 +static unsigned char tiny_colon_bits[] = { + 0x03, 0x03, 0x00, 0x00, 0x03, 0x03 }; diff --git a/bitmaps/.svn/text-base/tiny_comma.xbm.svn-base b/bitmaps/.svn/text-base/tiny_comma.xbm.svn-base new file mode 100644 index 0000000..2adbc03 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_comma.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_comma_width 4 +#define tiny_comma_height 3 +#define tiny_comma_x_hot 0 +#define tiny_comma_y_hot 1 +static unsigned char tiny_comma_bits[] = { + 0x06, 0x06, 0x03}; diff --git a/bitmaps/.svn/text-base/tiny_equal.xbm.svn-base b/bitmaps/.svn/text-base/tiny_equal.xbm.svn-base new file mode 100644 index 0000000..512b5c8 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_equal.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_equal_width 5 +#define tiny_equal_height 5 +#define tiny_equal_x_hot 0 +#define tiny_equal_y_hot 4 +static unsigned char tiny_equal_bits[] = { + 0x0f, 0x00, 0x0f, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_greater.xbm.svn-base b/bitmaps/.svn/text-base/tiny_greater.xbm.svn-base new file mode 100644 index 0000000..44d9caf --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_greater.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_greater_width 5 +#define tiny_greater_height 7 +#define tiny_greater_x_hot 0 +#define tiny_greater_y_hot 6 +static unsigned char tiny_greater_bits[] = { + 0x01, 0x02, 0x04, 0x08, 0x04, 0x02, 0x01}; diff --git a/bitmaps/.svn/text-base/tiny_guillemotleft.xbm.svn-base b/bitmaps/.svn/text-base/tiny_guillemotleft.xbm.svn-base new file mode 100644 index 0000000..96fc88a --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_guillemotleft.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_guillemotleft_width 11 +#define tiny_guillemotleft_height 6 +#define tiny_guillemotleft_x_hot 0 +#define tiny_guillemotleft_y_hot 5 +static unsigned char tiny_guillemotleft_bits[] = { + 0x18, 0x03, 0xc6, 0x00, 0x21, 0x00, 0xc6, 0x00, 0x18, 0x03, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_guillemotright.xbm.svn-base b/bitmaps/.svn/text-base/tiny_guillemotright.xbm.svn-base new file mode 100644 index 0000000..50d736e --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_guillemotright.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_guillemotright_width 11 +#define tiny_guillemotright_height 6 +#define tiny_guillemotright_x_hot 0 +#define tiny_guillemotright_y_hot 5 +static unsigned char tiny_guillemotright_bits[] = { + 0x63, 0x00, 0x8c, 0x01, 0x10, 0x02, 0x8c, 0x01, 0x63, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_hyphen.xbm.svn-base b/bitmaps/.svn/text-base/tiny_hyphen.xbm.svn-base new file mode 100644 index 0000000..4696e05 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_hyphen.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_hyphen_width 5 +#define tiny_hyphen_height 4 +#define tiny_hyphen_x_hot 0 +#define tiny_hyphen_y_hot 3 +static unsigned char tiny_hyphen_bits[] = { + 0x0f, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_large_comma.xbm.svn-base b/bitmaps/.svn/text-base/tiny_large_comma.xbm.svn-base new file mode 100644 index 0000000..f130f02 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_large_comma.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_large_comma_width 4 +#define tiny_large_comma_height 6 +#define tiny_large_comma_x_hot 0 +#define tiny_large_comma_y_hot 2 +static unsigned char tiny_large_comma_bits[] = { + 0x07, 0x07, 0x07, 0x04, 0x02, 0x01 }; diff --git a/bitmaps/.svn/text-base/tiny_less.xbm.svn-base b/bitmaps/.svn/text-base/tiny_less.xbm.svn-base new file mode 100644 index 0000000..c9ee854 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_less.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_less_width 5 +#define tiny_less_height 7 +#define tiny_less_x_hot 0 +#define tiny_less_y_hot 6 +static unsigned char tiny_less_bits[] = { + 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08}; diff --git a/bitmaps/.svn/text-base/tiny_math_arrowleft.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_arrowleft.xbm.svn-base new file mode 100644 index 0000000..117ee37 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_arrowleft.xbm.svn-base @@ -0,0 +1,7 @@ +#define tiny_math_arrowleft_width 12 +#define tiny_math_arrowleft_height 6 +#define tiny_math_arrowleft_x_hot 0 +#define tiny_math_arrowleft_y_hot 5 +static unsigned char tiny_math_arrowleft_bits[] = { + 0x10, 0x00, 0x1c, 0x00, 0xff, 0x07, 0x1c, 0x00, 0x10, 0x00, 0x00, 0x00 + }; diff --git a/bitmaps/.svn/text-base/tiny_math_arrowright.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_arrowright.xbm.svn-base new file mode 100644 index 0000000..5f23875 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_arrowright.xbm.svn-base @@ -0,0 +1,7 @@ +#define tiny_math_arrowright_width 12 +#define tiny_math_arrowright_height 6 +#define tiny_math_arrowright_x_hot 0 +#define tiny_math_arrowright_y_hot 5 +static unsigned char tiny_math_arrowright_bits[] = { + 0x40, 0x00, 0xc0, 0x01, 0xff, 0x07, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00 + }; diff --git a/bitmaps/.svn/text-base/tiny_math_downarrowleft.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_downarrowleft.xbm.svn-base new file mode 100644 index 0000000..103f777 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_downarrowleft.xbm.svn-base @@ -0,0 +1,7 @@ +#define tiny_math_downarrowleft_width 12 +#define tiny_math_downarrowleft_height 8 +#define tiny_math_downarrowleft_x_hot 0 +#define tiny_math_downarrowleft_y_hot 7 +static unsigned char tiny_math_downarrowleft_bits[] = { + 0x00, 0x04, 0x00, 0x04, 0x10, 0x04, 0x1c, 0x04, 0xff, 0x07, 0x1c, 0x00, + 0x10, 0x00, 0x00, 0x00 }; diff --git a/bitmaps/.svn/text-base/tiny_math_downarrowright.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_downarrowright.xbm.svn-base new file mode 100644 index 0000000..bf7c8bc --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_downarrowright.xbm.svn-base @@ -0,0 +1,7 @@ +#define tiny_math_downarrowright_width 12 +#define tiny_math_downarrowright_height 8 +#define tiny_math_downarrowright_x_hot 0 +#define tiny_math_downarrowright_y_hot 7 +static unsigned char tiny_math_downarrowright_bits[] = { + 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0xc1, 0x01, 0xff, 0x07, 0xc0, 0x01, + 0x40, 0x00, 0x00, 0x00 }; diff --git a/bitmaps/.svn/text-base/tiny_math_e.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_e.xbm.svn-base new file mode 100644 index 0000000..1cb6fa3 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_e.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_e_width 6 +#define tiny_math_e_height 6 +#define tiny_math_e_x_hot 0 +#define tiny_math_e_y_hot 5 +static unsigned char tiny_math_e_bits[] = { + 0x0c, 0x12, 0x09, 0x07, 0x11, 0x0e}; diff --git a/bitmaps/.svn/text-base/tiny_math_equal.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_equal.xbm.svn-base new file mode 100644 index 0000000..cf30759 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_equal.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_equal_width 7 +#define tiny_math_equal_height 6 +#define tiny_math_equal_x_hot 0 +#define tiny_math_equal_y_hot 5 +static unsigned char tiny_math_equal_bits[] = { + 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_math_greater.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_greater.xbm.svn-base new file mode 100644 index 0000000..581b902 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_greater.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_greater_width 6 +#define tiny_math_greater_height 7 +#define tiny_math_greater_x_hot 0 +#define tiny_math_greater_y_hot 6 +static unsigned char tiny_math_greater_bits[] = { + 0x03, 0x0c, 0x10, 0x0c, 0x03, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_math_greaterequal.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_greaterequal.xbm.svn-base new file mode 100644 index 0000000..7675bf9 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_greaterequal.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_greaterequal_width 6 +#define tiny_math_greaterequal_height 8 +#define tiny_math_greaterequal_x_hot 0 +#define tiny_math_greaterequal_y_hot 7 +static unsigned char tiny_math_greaterequal_bits[] = { + 0x03, 0x0c, 0x10, 0x0c, 0x03, 0x30, 0x0c, 0x03}; diff --git a/bitmaps/.svn/text-base/tiny_math_infinity.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_infinity.xbm.svn-base new file mode 100644 index 0000000..ed48a6e --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_infinity.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_infinity_width 13 +#define tiny_math_infinity_height 5 +#define tiny_math_infinity_x_hot 0 +#define tiny_math_infinity_y_hot 4 +static unsigned char tiny_math_infinity_bits[] = { + 0x9e, 0x07, 0x61, 0x08, 0x61, 0x08, 0x9e, 0x07, 0x00, 0x00 }; diff --git a/bitmaps/.svn/text-base/tiny_math_integral.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_integral.xbm.svn-base new file mode 100644 index 0000000..1a91ed9 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_integral.xbm.svn-base @@ -0,0 +1,7 @@ +#define tiny_math_integral_width 9 +#define tiny_math_integral_height 10 +#define tiny_math_integral_x_hot 0 +#define tiny_math_integral_y_hot 8 +static unsigned char tiny_math_integral_bits[] = { + 0x60, 0x00, 0x90, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x06, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_math_less.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_less.xbm.svn-base new file mode 100644 index 0000000..9efe921 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_less.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_less_width 6 +#define tiny_math_less_height 7 +#define tiny_math_less_x_hot 0 +#define tiny_math_less_y_hot 6 +static unsigned char tiny_math_less_bits[] = { + 0x18, 0x06, 0x01, 0x06, 0x18, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_math_lessequal.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_lessequal.xbm.svn-base new file mode 100644 index 0000000..ea49a90 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_lessequal.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_lessequal_width 6 +#define tiny_math_lessequal_height 8 +#define tiny_math_lessequal_x_hot 0 +#define tiny_math_lessequal_y_hot 7 +static unsigned char tiny_math_lessequal_bits[] = { + 0x30, 0x0c, 0x02, 0x0c, 0x30, 0x03, 0x0c, 0x30}; diff --git a/bitmaps/.svn/text-base/tiny_math_notequal.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_notequal.xbm.svn-base new file mode 100644 index 0000000..9b71a4f --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_notequal.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_notequal_width 7 +#define tiny_math_notequal_height 8 +#define tiny_math_notequal_x_hot 0 +#define tiny_math_notequal_y_hot 7 +static unsigned char tiny_math_notequal_bits[] = { + 0x08, 0x08, 0x3f, 0x08, 0x04, 0x3f, 0x04, 0x04}; diff --git a/bitmaps/.svn/text-base/tiny_math_numbersign.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_numbersign.xbm.svn-base new file mode 100644 index 0000000..caf5b69 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_numbersign.xbm.svn-base @@ -0,0 +1,7 @@ +#define tiny_math_numbersign_width 10 +#define tiny_math_numbersign_height 8 +#define tiny_math_numbersign_x_hot 0 +#define tiny_math_numbersign_y_hot 7 +static unsigned char tiny_math_numbersign_bits[] = { + 0x48, 0x00, 0x48, 0x00, 0xfe, 0x01, 0x48, 0x00, 0x24, 0x00, 0xff, 0x00, + 0x24, 0x00, 0x24, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_math_partialdiff.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_partialdiff.xbm.svn-base new file mode 100644 index 0000000..cf83622 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_partialdiff.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_partialdiff_width 6 +#define tiny_math_partialdiff_height 8 +#define tiny_math_partialdiff_x_hot 0 +#define tiny_math_partialdiff_y_hot 7 +static unsigned char tiny_math_partialdiff_bits[] = { + 0x04, 0x08, 0x08, 0x1e, 0x11, 0x11, 0x11, 0x0e}; diff --git a/bitmaps/.svn/text-base/tiny_math_pi.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_pi.xbm.svn-base new file mode 100644 index 0000000..2d3690d --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_pi.xbm.svn-base @@ -0,0 +1,7 @@ +#define tiny_math_pi_width 9 +#define tiny_math_pi_height 6 +#define tiny_math_pi_x_hot 0 +#define tiny_math_pi_y_hot 5 +static unsigned char tiny_math_pi_bits[] = { + 0xfe, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x00, 0xa4, 0x00, 0x42, 0x00 + }; diff --git a/bitmaps/.svn/text-base/tiny_math_radical.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_radical.xbm.svn-base new file mode 100644 index 0000000..c281986 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_radical.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_radical_width 8 +#define tiny_math_radical_height 11 +#define tiny_math_radical_x_hot 0 +#define tiny_math_radical_y_hot 8 +static unsigned char tiny_math_radical_bits[] = { + 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x17, 0x14, 0x1c, 0x08, 0x08}; diff --git a/bitmaps/.svn/text-base/tiny_math_summation.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_summation.xbm.svn-base new file mode 100644 index 0000000..d83209f --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_summation.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_summation_width 6 +#define tiny_math_summation_height 9 +#define tiny_math_summation_x_hot 0 +#define tiny_math_summation_y_hot 7 +static unsigned char tiny_math_summation_bits[] = { + 0x1f, 0x11, 0x02, 0x04, 0x08, 0x04, 0x02, 0x11, 0x1f}; diff --git a/bitmaps/.svn/text-base/tiny_math_x.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_x.xbm.svn-base new file mode 100644 index 0000000..e77a564 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_x.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_x_width 8 +#define tiny_math_x_height 6 +#define tiny_math_x_x_hot 0 +#define tiny_math_x_y_hot 5 +static unsigned char tiny_math_x_bits[] = { + 0x26, 0x14, 0x08, 0x14, 0x53, 0x21}; diff --git a/bitmaps/.svn/text-base/tiny_math_y.xbm.svn-base b/bitmaps/.svn/text-base/tiny_math_y.xbm.svn-base new file mode 100644 index 0000000..71c1a76 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_math_y.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_math_y_width 7 +#define tiny_math_y_height 9 +#define tiny_math_y_x_hot 1 +#define tiny_math_y_y_hot 6 +static unsigned char tiny_math_y_bits[] = { + 0x26, 0x24, 0x24, 0x14, 0x18, 0x08, 0x08, 0x05, 0x03}; diff --git a/bitmaps/.svn/text-base/tiny_notdef.xbm.svn-base b/bitmaps/.svn/text-base/tiny_notdef.xbm.svn-base new file mode 100644 index 0000000..57f36b7 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_notdef.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_notdef_width 4 +#define tiny_notdef_height 5 +#define tiny_notdef_x_hot 0 +#define tiny_notdef_y_hot 4 +static unsigned char tiny_notdef_bits[] = { + 0x07, 0x07, 0x07, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_numbersign.xbm.svn-base b/bitmaps/.svn/text-base/tiny_numbersign.xbm.svn-base new file mode 100644 index 0000000..82931c6 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_numbersign.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_numbersign_width 6 +#define tiny_numbersign_height 6 +#define tiny_numbersign_x_hot 0 +#define tiny_numbersign_y_hot 5 +static unsigned char tiny_numbersign_bits[] = { + 0x0a, 0x1f, 0x0a, 0x0a, 0x1f, 0x0a}; diff --git a/bitmaps/.svn/text-base/tiny_one.xbm.svn-base b/bitmaps/.svn/text-base/tiny_one.xbm.svn-base new file mode 100644 index 0000000..050a714 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_one.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_one_width 3 +#define tiny_one_height 7 +#define tiny_one_x_hot 0 +#define tiny_one_y_hot 6 +static unsigned char tiny_one_bits[] = { + 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}; diff --git a/bitmaps/.svn/text-base/tiny_overscore.xbm.svn-base b/bitmaps/.svn/text-base/tiny_overscore.xbm.svn-base new file mode 100644 index 0000000..c3fb694 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_overscore.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_overscore_width 6 +#define tiny_overscore_height 9 +#define tiny_overscore_x_hot 1 +#define tiny_overscore_y_hot 8 +static unsigned char tiny_overscore_bits[] = { + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_parenleft.xbm.svn-base b/bitmaps/.svn/text-base/tiny_parenleft.xbm.svn-base new file mode 100644 index 0000000..3631fa9 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_parenleft.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_parenleft_width 4 +#define tiny_parenleft_height 9 +#define tiny_parenleft_x_hot 0 +#define tiny_parenleft_y_hot 7 +static unsigned char tiny_parenleft_bits[] = { + 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x04}; diff --git a/bitmaps/.svn/text-base/tiny_parenright.xbm.svn-base b/bitmaps/.svn/text-base/tiny_parenright.xbm.svn-base new file mode 100644 index 0000000..82b182b --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_parenright.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_parenright_width 4 +#define tiny_parenright_height 9 +#define tiny_parenright_x_hot 0 +#define tiny_parenright_y_hot 7 +static unsigned char tiny_parenright_bits[] = { + 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01}; diff --git a/bitmaps/.svn/text-base/tiny_period.xbm.svn-base b/bitmaps/.svn/text-base/tiny_period.xbm.svn-base new file mode 100644 index 0000000..705a7c8 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_period.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_period_width 3 +#define tiny_period_height 2 +#define tiny_period_x_hot 0 +#define tiny_period_y_hot 1 +static unsigned char tiny_period_bits[] = { + 0x03, 0x03}; diff --git a/bitmaps/.svn/text-base/tiny_quotedbl.xbm.svn-base b/bitmaps/.svn/text-base/tiny_quotedbl.xbm.svn-base new file mode 100644 index 0000000..8ff40d0 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_quotedbl.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_quotedbl_width 4 +#define tiny_quotedbl_height 7 +#define tiny_quotedbl_x_hot 0 +#define tiny_quotedbl_y_hot 6 +static unsigned char tiny_quotedbl_bits[] = { + 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_slash.xbm.svn-base b/bitmaps/.svn/text-base/tiny_slash.xbm.svn-base new file mode 100644 index 0000000..c747f38 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_slash.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_slash_width 4 +#define tiny_slash_height 7 +#define tiny_slash_x_hot 0 +#define tiny_slash_y_hot 6 +static unsigned char tiny_slash_bits[] = { + 0x04, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01}; diff --git a/bitmaps/.svn/text-base/tiny_three.xbm.svn-base b/bitmaps/.svn/text-base/tiny_three.xbm.svn-base new file mode 100644 index 0000000..ba91803 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_three.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_three_width 5 +#define tiny_three_height 7 +#define tiny_three_x_hot 0 +#define tiny_three_y_hot 6 +static unsigned char tiny_three_bits[] = { + 0x06, 0x09, 0x08, 0x06, 0x08, 0x09, 0x06}; diff --git a/bitmaps/.svn/text-base/tiny_two.xbm.svn-base b/bitmaps/.svn/text-base/tiny_two.xbm.svn-base new file mode 100644 index 0000000..af93ea9 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_two.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_two_width 5 +#define tiny_two_height 7 +#define tiny_two_x_hot 0 +#define tiny_two_y_hot 6 +static unsigned char tiny_two_bits[] = { + 0x06, 0x09, 0x08, 0x08, 0x04, 0x02, 0x0f}; diff --git a/bitmaps/.svn/text-base/tiny_twosuperior.xbm.svn-base b/bitmaps/.svn/text-base/tiny_twosuperior.xbm.svn-base new file mode 100644 index 0000000..8761f31 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_twosuperior.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_twosuperior_width 5 +#define tiny_twosuperior_height 9 +#define tiny_twosuperior_x_hot 0 +#define tiny_twosuperior_y_hot 8 +static unsigned char tiny_twosuperior_bits[] = { + 0x02, 0x05, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_underscore.xbm.svn-base b/bitmaps/.svn/text-base/tiny_underscore.xbm.svn-base new file mode 100644 index 0000000..b7f3f87 --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_underscore.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_underscore_width 6 +#define tiny_underscore_height 3 +#define tiny_underscore_x_hot 1 +#define tiny_underscore_y_hot 0 +static unsigned char tiny_underscore_bits[] = { + 0x00, 0x00, 0x3f}; diff --git a/bitmaps/.svn/text-base/tiny_xsuperior.xbm.svn-base b/bitmaps/.svn/text-base/tiny_xsuperior.xbm.svn-base new file mode 100644 index 0000000..fbd699f --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_xsuperior.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_xsuperior_width 5 +#define tiny_xsuperior_height 9 +#define tiny_xsuperior_x_hot 0 +#define tiny_xsuperior_y_hot 8 +static unsigned char tiny_xsuperior_bits[] = { + 0x12, 0x0c, 0x04, 0x0a, 0x09, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/.svn/text-base/tiny_zero.xbm.svn-base b/bitmaps/.svn/text-base/tiny_zero.xbm.svn-base new file mode 100644 index 0000000..be374ab --- /dev/null +++ b/bitmaps/.svn/text-base/tiny_zero.xbm.svn-base @@ -0,0 +1,6 @@ +#define tiny_zero_width 5 +#define tiny_zero_height 7 +#define tiny_zero_x_hot 0 +#define tiny_zero_y_hot 6 +static unsigned char tiny_zero_bits[] = { + 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06}; diff --git a/bitmaps/CVS/.svn/all-wcprops b/bitmaps/CVS/.svn/all-wcprops new file mode 100644 index 0000000..062cc84 --- /dev/null +++ b/bitmaps/CVS/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 36 +/p/x49gp/code/!svn/ver/1/bitmaps/CVS +END +Repository +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/bitmaps/CVS/Repository +END +Root +K 25 +svn:wc:ra_dav:version-url +V 41 +/p/x49gp/code/!svn/ver/1/bitmaps/CVS/Root +END +Entries +K 25 +svn:wc:ra_dav:version-url +V 44 +/p/x49gp/code/!svn/ver/1/bitmaps/CVS/Entries +END diff --git a/bitmaps/CVS/.svn/entries b/bitmaps/CVS/.svn/entries new file mode 100644 index 0000000..c0b5710 --- /dev/null +++ b/bitmaps/CVS/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/bitmaps/CVS +http://svn.code.sf.net/p/x49gp/code + + + +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +Repository +file + + + + +2013-08-23T00:54:47.000000Z +2c17e51e27554afae683fcafbe9562e4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +14 + +Root +file + + + + +2013-08-23T00:54:47.000000Z +f51b768066a9e7d88829b19678326fcd +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +60 + +Entries +file + + + + +2013-08-23T00:54:47.000000Z +156818d09a9c64a5b52e9ff57ab0b6f4 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +4370 + diff --git a/bitmaps/CVS/.svn/text-base/Entries.svn-base b/bitmaps/CVS/.svn/text-base/Entries.svn-base new file mode 100644 index 0000000..e32251f --- /dev/null +++ b/bitmaps/CVS/.svn/text-base/Entries.svn-base @@ -0,0 +1,91 @@ +/ann_alpha.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_battery.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_busy.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_io.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_left.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_right.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_large.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_normal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_round.pix/1.1/Wed Jul 12 11:30:39 2006// +/button_round.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_small.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_tiny.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_A.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_B.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_C.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_D.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_E.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_F.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_G.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_H.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_I.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_J.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_K.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_L.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_M.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_N.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_O.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_P.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_Q.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_R.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_S.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_T.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_U.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_V.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_W.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_X.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_Y.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_Z.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny__i.xbm/1.1/Thu Dec 11 12:19:15 2008// +/tiny_ampersand.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_arrowleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_arrowright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_braceleft.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_braceright.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_bracketleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_bracketright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_colon.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_comma.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_equal.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_greater.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_guillemotleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_guillemotright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_hyphen.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_large_comma.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_less.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_arrowleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_arrowright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_downarrowleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_downarrowright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_e.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_equal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_greater.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_greaterequal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_infinity.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_integral.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_less.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_lessequal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_notequal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_numbersign.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_partialdiff.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_pi.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_radical.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_summation.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_x.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_y.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_notdef.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_numbersign.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_one.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_overscore.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_parenleft.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_parenright.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_period.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_quotedbl.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_slash.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_three.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_two.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_twosuperior.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_underscore.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_xsuperior.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_zero.xbm/1.4/Thu Dec 11 12:14:08 2008// +D diff --git a/bitmaps/CVS/.svn/text-base/Repository.svn-base b/bitmaps/CVS/.svn/text-base/Repository.svn-base new file mode 100644 index 0000000..a01358d --- /dev/null +++ b/bitmaps/CVS/.svn/text-base/Repository.svn-base @@ -0,0 +1 @@ +x49gp/bitmaps diff --git a/bitmaps/CVS/.svn/text-base/Root.svn-base b/bitmaps/CVS/.svn/text-base/Root.svn-base new file mode 100644 index 0000000..6f29e94 --- /dev/null +++ b/bitmaps/CVS/.svn/text-base/Root.svn-base @@ -0,0 +1 @@ +:pserver:anonymous@x49gp.cvs.sourceforge.net:/cvsroot/x49gp diff --git a/bitmaps/CVS/Entries b/bitmaps/CVS/Entries new file mode 100644 index 0000000..e32251f --- /dev/null +++ b/bitmaps/CVS/Entries @@ -0,0 +1,91 @@ +/ann_alpha.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_battery.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_busy.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_io.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_left.xbm/1.4/Thu Dec 11 12:14:08 2008// +/ann_right.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_large.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_normal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_round.pix/1.1/Wed Jul 12 11:30:39 2006// +/button_round.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_small.xbm/1.4/Thu Dec 11 12:14:08 2008// +/button_tiny.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_A.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_B.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_C.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_D.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_E.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_F.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_G.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_H.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_I.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_J.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_K.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_L.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_M.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_N.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_O.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_P.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_Q.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_R.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_S.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_T.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_U.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_V.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_W.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_X.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_Y.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_Z.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny__i.xbm/1.1/Thu Dec 11 12:19:15 2008// +/tiny_ampersand.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_arrowleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_arrowright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_braceleft.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_braceright.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_bracketleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_bracketright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_colon.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_comma.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_equal.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_greater.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_guillemotleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_guillemotright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_hyphen.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_large_comma.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_less.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_arrowleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_arrowright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_downarrowleft.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_downarrowright.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_e.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_equal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_greater.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_greaterequal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_infinity.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_integral.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_less.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_lessequal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_notequal.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_numbersign.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_partialdiff.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_pi.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_radical.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_summation.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_x.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_math_y.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_notdef.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_numbersign.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_one.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_overscore.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_parenleft.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_parenright.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_period.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_quotedbl.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_slash.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_three.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_two.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_twosuperior.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_underscore.xbm/1.5/Thu Dec 11 12:14:08 2008// +/tiny_xsuperior.xbm/1.4/Thu Dec 11 12:14:08 2008// +/tiny_zero.xbm/1.4/Thu Dec 11 12:14:08 2008// +D diff --git a/bitmaps/CVS/Repository b/bitmaps/CVS/Repository new file mode 100644 index 0000000..a01358d --- /dev/null +++ b/bitmaps/CVS/Repository @@ -0,0 +1 @@ +x49gp/bitmaps diff --git a/bitmaps/CVS/Root b/bitmaps/CVS/Root new file mode 100644 index 0000000..6f29e94 --- /dev/null +++ b/bitmaps/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@x49gp.cvs.sourceforge.net:/cvsroot/x49gp diff --git a/bitmaps/ann_alpha.xbm b/bitmaps/ann_alpha.xbm new file mode 100644 index 0000000..e7cfcea --- /dev/null +++ b/bitmaps/ann_alpha.xbm @@ -0,0 +1,5 @@ +#define ann_alpha_width 15 +#define ann_alpha_height 12 +static unsigned char ann_alpha_bits[] = { + 0xe0, 0x03, 0x18, 0x44, 0x0c, 0x4c, 0x06, 0x2c, 0x07, 0x2c, 0x07, 0x1c, + 0x07, 0x0c, 0x07, 0x0c, 0x07, 0x0e, 0x0e, 0x4d, 0xf8, 0x38, 0x00, 0x00}; diff --git a/bitmaps/ann_battery.xbm b/bitmaps/ann_battery.xbm new file mode 100644 index 0000000..b4c6a45 --- /dev/null +++ b/bitmaps/ann_battery.xbm @@ -0,0 +1,5 @@ +#define ann_battery_width 15 +#define ann_battery_height 12 +static unsigned char ann_battery_bits[] = { + 0x04, 0x10, 0x02, 0x20, 0x12, 0x24, 0x09, 0x48, 0xc9, 0x49, 0xc9, 0x49, + 0xc9, 0x49, 0x09, 0x48, 0x12, 0x24, 0x02, 0x20, 0x04, 0x10, 0x00, 0x00}; diff --git a/bitmaps/ann_busy.xbm b/bitmaps/ann_busy.xbm new file mode 100644 index 0000000..1856111 --- /dev/null +++ b/bitmaps/ann_busy.xbm @@ -0,0 +1,5 @@ +#define ann_busy_width 15 +#define ann_busy_height 12 +static unsigned char ann_busy_bits[] = { + 0xfc, 0x1f, 0x08, 0x08, 0x08, 0x08, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01, + 0x40, 0x01, 0x20, 0x02, 0x10, 0x04, 0xc8, 0x09, 0xe8, 0x0b, 0xfc, 0x1f}; diff --git a/bitmaps/ann_io.xbm b/bitmaps/ann_io.xbm new file mode 100644 index 0000000..0c4536d --- /dev/null +++ b/bitmaps/ann_io.xbm @@ -0,0 +1,5 @@ +#define ann_io_width 15 +#define ann_io_height 12 +static unsigned char ann_io_bits[] = { + 0x0c, 0x00, 0x1e, 0x00, 0x33, 0x0c, 0x61, 0x18, 0xcc, 0x30, 0xfe, 0x7f, + 0xfe, 0x7f, 0xcc, 0x30, 0x61, 0x18, 0x33, 0x0c, 0x1e, 0x00, 0x0c, 0x00}; diff --git a/bitmaps/ann_left.xbm b/bitmaps/ann_left.xbm new file mode 100644 index 0000000..604b9d5 --- /dev/null +++ b/bitmaps/ann_left.xbm @@ -0,0 +1,5 @@ +#define ann_left_width 15 +#define ann_left_height 12 +static unsigned char ann_left_bits[] = { + 0xfe, 0x3f, 0xff, 0x7f, 0x9f, 0x7f, 0xcf, 0x7f, 0xe7, 0x7f, 0x03, 0x78, + 0x03, 0x70, 0xe7, 0x73, 0xcf, 0x73, 0x9f, 0x73, 0xff, 0x73, 0xfe, 0x33}; diff --git a/bitmaps/ann_right.xbm b/bitmaps/ann_right.xbm new file mode 100644 index 0000000..bd9bd6f --- /dev/null +++ b/bitmaps/ann_right.xbm @@ -0,0 +1,5 @@ +#define ann_right_width 15 +#define ann_right_height 12 +static unsigned char ann_right_bits[] = { + 0xfe, 0x3f, 0xff, 0x7f, 0xff, 0x7c, 0xff, 0x79, 0xff, 0x73, 0x0f, 0x60, + 0x07, 0x60, 0xe7, 0x73, 0xe7, 0x79, 0xe7, 0x7c, 0xe7, 0x7f, 0xe6, 0x3f}; diff --git a/bitmaps/button_large.xbm b/bitmaps/button_large.xbm new file mode 100644 index 0000000..11570f8 --- /dev/null +++ b/bitmaps/button_large.xbm @@ -0,0 +1,19 @@ +#define button_large_width 46 +#define button_large_height 32 +static unsigned char button_large_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x07, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, + 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/button_normal.xbm b/bitmaps/button_normal.xbm new file mode 100644 index 0000000..e979828 --- /dev/null +++ b/bitmaps/button_normal.xbm @@ -0,0 +1,17 @@ +#define button_normal_width 46 +#define button_normal_height 28 +static unsigned char button_normal_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x07, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x01, + 0x00, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/button_round.pix b/bitmaps/button_round.pix new file mode 100644 index 0000000..e25abb9 --- /dev/null +++ b/bitmaps/button_round.pix @@ -0,0 +1,157 @@ +/* GdkPixbuf RGBA C-Source image dump */ + +#ifdef __SUNPRO_C +#pragma align 4 (button_round) +#endif +#ifdef __GNUC__ +static const guint8 button_round[] __attribute__ ((__aligned__ (4))) = +#else +static const guint8 button_round[] = +#endif +{ "" + /* Pixbuf magic (0x47646b50) */ + "GdkP" + /* length: header (24) + pixel_data (4356) */ + "\0\0\21\34" + /* pixdata_type (0x1010002) */ + "\1\1\0\2" + /* rowstride (132) */ + "\0\0\0\204" + /* width (33) */ + "\0\0\0!" + /* height (33) */ + "\0\0\0!" + /* pixel_data: */ + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\0\0\0\244\0\0\0\232\0\0\0\232" + "\0\0\0\232\0\0\0\244\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\247\0\0\0\215\0\0\0|\0\0\0o\0\0\0_\0\0\0Z\0\0\0Z\0\0" + "\0_\0\0\0f\0\0\0o\0\0\0\201\0\0\0\225\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0" + "\0\211\0\0\0h\0\0\0W\0\0\0D\0\0\0:\0\0\0""1\0\0\0/\0\0\0,\0\0\0/\0\0" + "\0""4\0\0\0:\0\0\0H\0\0\0Z\0\0\0r\0\0\0\215\0\0\0\255\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\225\0\0\0o\0\0\0R\0\0\0:\0" + "\0\0*\0\0\0!\0\0\0\34\0\0\0\27\0\0\0\26\0\0\0\26\0\0\0\26\0\0\0\27\0" + "\0\0\35\0\0\0#\0\0\0/\0\0\0A\0\0\0W\0\0\0|\0\0\0\244\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\261\0\0\0\215\0\0\0_\0\0\0D\0\0\0,\0\0\0\35\0\0\0" + "\26\0\0\0\21\0\0\0\16\0\0\0\15\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\15\0" + "\0\0\16\0\0\0\22\0\0\0\27\0\0\0\37\0\0\0""1\0\0\0K\0\0\0h\0\0\0\225\0" + "\0\0\273\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\211\0\0\0_\0\0\0:\0\0\0#\0\0\0\27\0\0\0\20" + "\0\0\0\14\0\0\0\10\0\0\0\7\0\0\0\6\0\0\0\6\0\0\0\5\0\0\0\6\0\0\0\6\0" + "\0\0\7\0\0\0\11\0\0\0\15\0\0\0\22\0\0\0\31\0\0\0(\0\0\0D\0\0\0h\0\0\0" + "\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\222\0\0\0_\0\0\0:\0\0\0!\0\0\0\24\0\0\0\15\0\0\0\11\0" + "\0\0\6\0\0\0\5\0\0\0\4\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\4\0\0\0" + "\4\0\0\0\5\0\0\0\6\0\0\0\11\0\0\0\17\0\0\0\27\0\0\0&\0\0\0D\0\0\0o\0" + "\0\0\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\244\0\0\0o\0\0\0A\0\0\0#\0\0\0\24\0\0\0\15\0\0\0\10\0\0\0\5\0\0\0" + "\4\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0" + "\0\0\3\0\0\0\4\0\0\0\6\0\0\0\10\0\0\0\16\0\0\0\27\0\0\0*\0\0\0K\0\0\0" + "|\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211" + "\0\0\0O\0\0\0*\0\0\0\27\0\0\0\15\0\0\0\10\0\0\0\5\0\0\0\4\0\0\0\3\0\0" + "\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2" + "\0\0\0\3\0\0\0\4\0\0\0\5\0\0\0\10\0\0\0\17\0\0\0\32\0\0\0""1\0\0\0_\0" + "\0\0\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\244\0\0\0f\0\0" + "\0:\0\0\0\35\0\0\0\20\0\0\0\10\0\0\0\5\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0" + "\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0" + "\0\0\2\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\12\0\0\0\22\0\0\0!\0\0\0A\0\0\0" + "r\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211\0\0\0R\0\0\0(\0" + "\0\0\24\0\0\0\13\0\0\0\6\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0" + "\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2" + "\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\7\0\0\0\15\0\0\0\31\0\0\0""1\0\0\0_\0" + "\0\0\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0y\0\0\0A\0\0\0\37\0\0\0" + "\20\0\0\0\10\0\0\0\5\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0" + "\0\2\0\0\0\2\0\0\0\3\0\0\0\5\0\0\0\12\0\0\0\23\0\0\0&\0\0\0O\0\0\0\211" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0\0f\0\0\0""4\0\0\0\31\0\0\0\15" + "\0\0\0\6\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0" + "\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2" + "\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\10\0\0\0\17\0\0\0\37\0\0\0A\0\0\0y\0\0" + "\0\261\0\0\0\0\0\0\0\0\0\0\0\232\0\0\0_\0\0\0/\0\0\0\27\0\0\0\14\0\0" + "\0\6\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0" + "\0\2\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\32\0\0\0""7\0\0\0h\0\0\0" + "\255\0\0\0\0\0\0\0\0\0\0\0\225\0\0\0W\0\0\0*\0\0\0\24\0\0\0\12\0\0\0" + "\5\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\2\0\0\0\2\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\27\0\0\0""1\0\0\0f\0\0\0\244" + "\0\0\0\0\0\0\0\0\0\0\0\222\0\0\0R\0\0\0(\0\0\0\23\0\0\0\11\0\0\0\5\0" + "\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0" + "\0\0\2\0\0\0\4\0\0\0\6\0\0\0\14\0\0\0\27\0\0\0""1\0\0\0_\0\0\0\244\0" + "\0\0\0\0\0\0\0\0\0\0\225\0\0\0W\0\0\0*\0\0\0\24\0\0\0\12\0\0\0\5\0\0" + "\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0" + "\0\2\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\27\0\0\0""1\0\0\0f\0\0\0\244\0\0" + "\0\0\0\0\0\0\0\0\0\232\0\0\0_\0\0\0/\0\0\0\26\0\0\0\13\0\0\0\6\0\0\0" + "\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0" + "\3\0\0\0\4\0\0\0\6\0\0\0\15\0\0\0\32\0\0\0""7\0\0\0h\0\0\0\255\0\0\0" + "\0\0\0\0\0\0\0\0\244\0\0\0f\0\0\0""4\0\0\0\31\0\0\0\15\0\0\0\6\0\0\0" + "\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0" + "\3\0\0\0\4\0\0\0\10\0\0\0\17\0\0\0\37\0\0\0A\0\0\0r\0\0\0\261\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0y\0\0\0A\0\0\0\37\0\0\0\20\0\0\0\10\0\0\0\5\0\0" + "\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0" + "\0\5\0\0\0\12\0\0\0\23\0\0\0&\0\0\0O\0\0\0\211\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\211\0\0\0R\0\0\0(\0\0\0\24\0\0\0\13\0\0\0\6\0\0\0\4" + "\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0" + "\0\1\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\7" + "\0\0\0\15\0\0\0\27\0\0\0""1\0\0\0_\0\0\0\225\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\244\0\0\0f\0\0\0""7\0\0\0\35\0\0\0\20\0\0\0\10\0\0\0\5" + "\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0" + "\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\12" + "\0\0\0\23\0\0\0!\0\0\0D\0\0\0r\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\211\0\0\0O\0\0\0*\0\0\0\27\0\0\0\15\0\0\0\10\0\0\0" + "\5\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0" + "\0\0\2\0\0\0\2\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\5\0\0\0\10\0\0\0\17\0\0" + "\0\32\0\0\0""1\0\0\0_\0\0\0\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\244\0\0\0o\0\0\0D\0\0\0#\0\0\0\24\0\0\0\15\0\0\0\7\0" + "\0\0\5\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0" + "\2\0\0\0\3\0\0\0\3\0\0\0\4\0\0\0\6\0\0\0\10\0\0\0\16\0\0\0\27\0\0\0*" + "\0\0\0K\0\0\0|\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\222\0\0\0_\0\0\0:\0\0\0!\0\0\0\24\0\0\0\15\0\0\0\11" + "\0\0\0\6\0\0\0\5\0\0\0\4\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\3\0\0\0\4\0\0" + "\0\4\0\0\0\5\0\0\0\6\0\0\0\12\0\0\0\17\0\0\0\27\0\0\0&\0\0\0D\0\0\0h" + "\0\0\0\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\215\0\0\0_\0\0\0>\0\0\0#\0\0\0\27\0\0\0\20\0\0\0" + "\14\0\0\0\11\0\0\0\7\0\0\0\6\0\0\0\6\0\0\0\5\0\0\0\6\0\0\0\6\0\0\0\7" + "\0\0\0\11\0\0\0\15\0\0\0\22\0\0\0\32\0\0\0*\0\0\0D\0\0\0h\0\0\0\225\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\261\0\0\0\215\0\0\0_\0\0\0D\0\0\0*\0\0\0\35\0\0\0\26" + "\0\0\0\21\0\0\0\15\0\0\0\14\0\0\0\13\0\0\0\12\0\0\0\13\0\0\0\15\0\0\0" + "\17\0\0\0\22\0\0\0\27\0\0\0\37\0\0\0""1\0\0\0K\0\0\0o\0\0\0\225\0\0\0" + "\273\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\225\0\0\0r\0\0\0R\0\0\0:\0\0\0" + "*\0\0\0\37\0\0\0\32\0\0\0\27\0\0\0\26\0\0\0\26\0\0\0\27\0\0\0\31\0\0" + "\0\35\0\0\0#\0\0\0/\0\0\0A\0\0\0Z\0\0\0y\0\0\0\244\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0\0\211\0\0\0h\0\0\0R" + "\0\0\0D\0\0\0:\0\0\0""1\0\0\0/\0\0\0,\0\0\0/\0\0\0""4\0\0\0:\0\0\0H\0" + "\0\0Z\0\0\0r\0\0\0\215\0\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\0\0\0\215\0\0\0|\0" + "\0\0o\0\0\0f\0\0\0_\0\0\0_\0\0\0_\0\0\0f\0\0\0o\0\0\0\201\0\0\0\225\0" + "\0\0\255\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\255\0" + "\0\0\244\0\0\0\232\0\0\0\232\0\0\0\232\0\0\0\244\0\0\0\255\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0"}; + + diff --git a/bitmaps/button_round.xbm b/bitmaps/button_round.xbm new file mode 100644 index 0000000..f0d3292 --- /dev/null +++ b/bitmaps/button_round.xbm @@ -0,0 +1,17 @@ +#define button_round_width 33 +#define button_round_height 33 +static unsigned char button_round_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xfc, + 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x80, 0xff, 0xff, 0x03, + 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0xf0, + 0xff, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0xff, + 0x3f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, + 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0xfe, + 0xff, 0xff, 0xff, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xfc, 0xff, 0xff, + 0x7f, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, + 0xf8, 0xff, 0xff, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xff, + 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, + 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/button_small.xbm b/bitmaps/button_small.xbm new file mode 100644 index 0000000..e3508d3 --- /dev/null +++ b/bitmaps/button_small.xbm @@ -0,0 +1,15 @@ +#define button_small_width 36 +#define button_small_height 28 +static unsigned char button_small_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, + 0x03, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, + 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, + 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, + 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, + 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, + 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, + 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, + 0xff, 0x07, 0xfc, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0x00, + 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/button_tiny.xbm b/bitmaps/button_tiny.xbm new file mode 100644 index 0000000..39d0abb --- /dev/null +++ b/bitmaps/button_tiny.xbm @@ -0,0 +1,13 @@ +#define button_tiny_width 36 +#define button_tiny_height 22 +static unsigned char button_tiny_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, + 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, + 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, + 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, + 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, + 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, + 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, + 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfc, + 0xff, 0xff, 0xff, 0x03, 0xf8, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00}; diff --git a/bitmaps/tiny_A.xbm b/bitmaps/tiny_A.xbm new file mode 100644 index 0000000..cd0e0d2 --- /dev/null +++ b/bitmaps/tiny_A.xbm @@ -0,0 +1,6 @@ +#define tiny_A_width 5 +#define tiny_A_height 7 +#define tiny_A_x_hot 0 +#define tiny_A_y_hot 6 +static unsigned char tiny_A_bits[] = { + 0x06, 0x09, 0x09, 0x0f, 0x09, 0x09, 0x09}; diff --git a/bitmaps/tiny_B.xbm b/bitmaps/tiny_B.xbm new file mode 100644 index 0000000..3fa73c1 --- /dev/null +++ b/bitmaps/tiny_B.xbm @@ -0,0 +1,6 @@ +#define tiny_B_width 5 +#define tiny_B_height 7 +#define tiny_B_x_hot 0 +#define tiny_B_y_hot 6 +static unsigned char tiny_B_bits[] = { + 0x07, 0x09, 0x09, 0x07, 0x09, 0x09, 0x07}; diff --git a/bitmaps/tiny_C.xbm b/bitmaps/tiny_C.xbm new file mode 100644 index 0000000..bd10b3e --- /dev/null +++ b/bitmaps/tiny_C.xbm @@ -0,0 +1,6 @@ +#define tiny_C_width 5 +#define tiny_C_height 7 +#define tiny_C_x_hot 0 +#define tiny_C_y_hot 6 +static unsigned char tiny_C_bits[] = { + 0x06, 0x09, 0x01, 0x01, 0x01, 0x09, 0x06}; diff --git a/bitmaps/tiny_D.xbm b/bitmaps/tiny_D.xbm new file mode 100644 index 0000000..4c49bf8 --- /dev/null +++ b/bitmaps/tiny_D.xbm @@ -0,0 +1,6 @@ +#define tiny_D_width 5 +#define tiny_D_height 7 +#define tiny_D_x_hot 0 +#define tiny_D_y_hot 6 +static unsigned char tiny_D_bits[] = { + 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07}; diff --git a/bitmaps/tiny_E.xbm b/bitmaps/tiny_E.xbm new file mode 100644 index 0000000..ee69976 --- /dev/null +++ b/bitmaps/tiny_E.xbm @@ -0,0 +1,6 @@ +#define tiny_E_width 4 +#define tiny_E_height 7 +#define tiny_E_x_hot 0 +#define tiny_E_y_hot 6 +static unsigned char tiny_E_bits[] = { + 0x17, 0x01, 0x01, 0x03, 0x01, 0x01, 0x17}; diff --git a/bitmaps/tiny_F.xbm b/bitmaps/tiny_F.xbm new file mode 100644 index 0000000..1a998e7 --- /dev/null +++ b/bitmaps/tiny_F.xbm @@ -0,0 +1,6 @@ +#define tiny_F_width 4 +#define tiny_F_height 7 +#define tiny_F_x_hot 0 +#define tiny_F_y_hot 6 +static unsigned char tiny_F_bits[] = { + 0x07, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01}; diff --git a/bitmaps/tiny_G.xbm b/bitmaps/tiny_G.xbm new file mode 100644 index 0000000..e0e0814 --- /dev/null +++ b/bitmaps/tiny_G.xbm @@ -0,0 +1,6 @@ +#define tiny_G_width 6 +#define tiny_G_height 7 +#define tiny_G_x_hot 0 +#define tiny_G_y_hot 6 +static unsigned char tiny_G_bits[] = { + 0x0e, 0x11, 0x01, 0x01, 0x19, 0x11, 0x0e}; diff --git a/bitmaps/tiny_H.xbm b/bitmaps/tiny_H.xbm new file mode 100644 index 0000000..2efb290 --- /dev/null +++ b/bitmaps/tiny_H.xbm @@ -0,0 +1,6 @@ +#define tiny_H_width 5 +#define tiny_H_height 7 +#define tiny_H_x_hot 0 +#define tiny_H_y_hot 6 +static unsigned char tiny_H_bits[] = { + 0x09, 0x09, 0x09, 0x0f, 0x09, 0x09, 0x09}; diff --git a/bitmaps/tiny_I.xbm b/bitmaps/tiny_I.xbm new file mode 100644 index 0000000..7c85dee --- /dev/null +++ b/bitmaps/tiny_I.xbm @@ -0,0 +1,6 @@ +#define tiny_I_width 4 +#define tiny_I_height 7 +#define tiny_I_x_hot 0 +#define tiny_I_y_hot 6 +static unsigned char tiny_I_bits[] = { + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}; diff --git a/bitmaps/tiny_J.xbm b/bitmaps/tiny_J.xbm new file mode 100644 index 0000000..ab7de19 --- /dev/null +++ b/bitmaps/tiny_J.xbm @@ -0,0 +1,6 @@ +#define tiny_J_width 5 +#define tiny_J_height 7 +#define tiny_J_x_hot 0 +#define tiny_J_y_hot 6 +static unsigned char tiny_J_bits[] = { + 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06}; diff --git a/bitmaps/tiny_K.xbm b/bitmaps/tiny_K.xbm new file mode 100644 index 0000000..f9563c4 --- /dev/null +++ b/bitmaps/tiny_K.xbm @@ -0,0 +1,6 @@ +#define tiny_K_width 5 +#define tiny_K_height 7 +#define tiny_K_x_hot 0 +#define tiny_K_y_hot 6 +static unsigned char tiny_K_bits[] = { + 0x09, 0x05, 0x05, 0x03, 0x05, 0x05, 0x09}; diff --git a/bitmaps/tiny_L.xbm b/bitmaps/tiny_L.xbm new file mode 100644 index 0000000..946b6f2 --- /dev/null +++ b/bitmaps/tiny_L.xbm @@ -0,0 +1,6 @@ +#define tiny_L_width 4 +#define tiny_L_height 7 +#define tiny_L_x_hot 0 +#define tiny_L_y_hot 6 +static unsigned char tiny_L_bits[] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07}; diff --git a/bitmaps/tiny_M.xbm b/bitmaps/tiny_M.xbm new file mode 100644 index 0000000..4091719 --- /dev/null +++ b/bitmaps/tiny_M.xbm @@ -0,0 +1,6 @@ +#define tiny_M_width 6 +#define tiny_M_height 7 +#define tiny_M_x_hot 0 +#define tiny_M_y_hot 6 +static unsigned char tiny_M_bits[] = { + 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11}; diff --git a/bitmaps/tiny_N.xbm b/bitmaps/tiny_N.xbm new file mode 100644 index 0000000..068d682 --- /dev/null +++ b/bitmaps/tiny_N.xbm @@ -0,0 +1,6 @@ +#define tiny_N_width 5 +#define tiny_N_height 7 +#define tiny_N_x_hot 0 +#define tiny_N_y_hot 6 +static unsigned char tiny_N_bits[] = { + 0x09, 0x0b, 0x0b, 0x0d, 0x0d, 0x09, 0x09}; diff --git a/bitmaps/tiny_O.xbm b/bitmaps/tiny_O.xbm new file mode 100644 index 0000000..4ef2d53 --- /dev/null +++ b/bitmaps/tiny_O.xbm @@ -0,0 +1,6 @@ +#define tiny_O_width 5 +#define tiny_O_height 7 +#define tiny_O_x_hot 0 +#define tiny_O_y_hot 6 +static unsigned char tiny_O_bits[] = { + 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06}; diff --git a/bitmaps/tiny_P.xbm b/bitmaps/tiny_P.xbm new file mode 100644 index 0000000..7fd19eb --- /dev/null +++ b/bitmaps/tiny_P.xbm @@ -0,0 +1,6 @@ +#define tiny_P_width 5 +#define tiny_P_height 7 +#define tiny_P_x_hot 0 +#define tiny_P_y_hot 6 +static unsigned char tiny_P_bits[] = { + 0x07, 0x09, 0x09, 0x07, 0x01, 0x01, 0x01}; diff --git a/bitmaps/tiny_Q.xbm b/bitmaps/tiny_Q.xbm new file mode 100644 index 0000000..4ecebc5 --- /dev/null +++ b/bitmaps/tiny_Q.xbm @@ -0,0 +1,6 @@ +#define tiny_Q_width 6 +#define tiny_Q_height 7 +#define tiny_Q_x_hot 0 +#define tiny_Q_y_hot 6 +static unsigned char tiny_Q_bits[] = { + 0x0e, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16}; diff --git a/bitmaps/tiny_R.xbm b/bitmaps/tiny_R.xbm new file mode 100644 index 0000000..5088b22 --- /dev/null +++ b/bitmaps/tiny_R.xbm @@ -0,0 +1,6 @@ +#define tiny_R_width 5 +#define tiny_R_height 7 +#define tiny_R_x_hot 0 +#define tiny_R_y_hot 6 +static unsigned char tiny_R_bits[] = { + 0x07, 0x09, 0x09, 0x07, 0x05, 0x09, 0x09}; diff --git a/bitmaps/tiny_S.xbm b/bitmaps/tiny_S.xbm new file mode 100644 index 0000000..d567911 --- /dev/null +++ b/bitmaps/tiny_S.xbm @@ -0,0 +1,6 @@ +#define tiny_S_width 5 +#define tiny_S_height 7 +#define tiny_S_x_hot 0 +#define tiny_S_y_hot 6 +static unsigned char tiny_S_bits[] = { + 0x06, 0x09, 0x01, 0x06, 0x08, 0x09, 0x06}; diff --git a/bitmaps/tiny_T.xbm b/bitmaps/tiny_T.xbm new file mode 100644 index 0000000..4cb3ea4 --- /dev/null +++ b/bitmaps/tiny_T.xbm @@ -0,0 +1,6 @@ +#define tiny_T_width 5 +#define tiny_T_height 7 +#define tiny_T_x_hot 1 +#define tiny_T_y_hot 6 +static unsigned char tiny_T_bits[] = { + 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}; diff --git a/bitmaps/tiny_U.xbm b/bitmaps/tiny_U.xbm new file mode 100644 index 0000000..f9df60e --- /dev/null +++ b/bitmaps/tiny_U.xbm @@ -0,0 +1,6 @@ +#define tiny_U_width 5 +#define tiny_U_height 7 +#define tiny_U_x_hot 0 +#define tiny_U_y_hot 6 +static unsigned char tiny_U_bits[] = { + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06}; diff --git a/bitmaps/tiny_V.xbm b/bitmaps/tiny_V.xbm new file mode 100644 index 0000000..07bc1cc --- /dev/null +++ b/bitmaps/tiny_V.xbm @@ -0,0 +1,6 @@ +#define tiny_V_width 5 +#define tiny_V_height 7 +#define tiny_V_x_hot 0 +#define tiny_V_y_hot 6 +static unsigned char tiny_V_bits[] = { + 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06}; diff --git a/bitmaps/tiny_W.xbm b/bitmaps/tiny_W.xbm new file mode 100644 index 0000000..c8a878e --- /dev/null +++ b/bitmaps/tiny_W.xbm @@ -0,0 +1,6 @@ +#define tiny_W_width 6 +#define tiny_W_height 7 +#define tiny_W_x_hot 0 +#define tiny_W_y_hot 6 +static unsigned char tiny_W_bits[] = { + 0x11, 0x11, 0x11, 0x15, 0x15, 0x1b, 0x11}; diff --git a/bitmaps/tiny_X.xbm b/bitmaps/tiny_X.xbm new file mode 100644 index 0000000..82b3429 --- /dev/null +++ b/bitmaps/tiny_X.xbm @@ -0,0 +1,6 @@ +#define tiny_X_width 5 +#define tiny_X_height 7 +#define tiny_X_x_hot 0 +#define tiny_X_y_hot 6 +static unsigned char tiny_X_bits[] = { + 0x09, 0x09, 0x06, 0x06, 0x06, 0x09, 0x09}; diff --git a/bitmaps/tiny_Y.xbm b/bitmaps/tiny_Y.xbm new file mode 100644 index 0000000..1b51bf6 --- /dev/null +++ b/bitmaps/tiny_Y.xbm @@ -0,0 +1,6 @@ +#define tiny_Y_width 6 +#define tiny_Y_height 7 +#define tiny_Y_x_hot 0 +#define tiny_Y_y_hot 6 +static unsigned char tiny_Y_bits[] = { + 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04}; diff --git a/bitmaps/tiny_Z.xbm b/bitmaps/tiny_Z.xbm new file mode 100644 index 0000000..f20296b --- /dev/null +++ b/bitmaps/tiny_Z.xbm @@ -0,0 +1,6 @@ +#define tiny_Z_width 5 +#define tiny_Z_height 7 +#define tiny_Z_x_hot 0 +#define tiny_Z_y_hot 6 +static unsigned char tiny_Z_bits[] = { + 0x0f, 0x08, 0x04, 0x04, 0x02, 0x01, 0x0f}; diff --git a/bitmaps/tiny__i.xbm b/bitmaps/tiny__i.xbm new file mode 100644 index 0000000..4706d51 --- /dev/null +++ b/bitmaps/tiny__i.xbm @@ -0,0 +1,6 @@ +#define tiny_i_width 4 +#define tiny_i_height 7 +#define tiny_i_x_hot 0 +#define tiny_i_y_hot 6 +static unsigned char tiny_i_bits[] = { + 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02}; diff --git a/bitmaps/tiny_ampersand.xbm b/bitmaps/tiny_ampersand.xbm new file mode 100644 index 0000000..86f807b --- /dev/null +++ b/bitmaps/tiny_ampersand.xbm @@ -0,0 +1,6 @@ +#define tiny_ampersand_width 6 +#define tiny_ampersand_height 7 +#define tiny_ampersand_x_hot 0 +#define tiny_ampersand_y_hot 6 +static unsigned char tiny_ampersand_bits[] = { + 0x06, 0x09, 0x06, 0x16, 0x09, 0x09, 0x16}; diff --git a/bitmaps/tiny_arrowleft.xbm b/bitmaps/tiny_arrowleft.xbm new file mode 100644 index 0000000..25a8126 --- /dev/null +++ b/bitmaps/tiny_arrowleft.xbm @@ -0,0 +1,6 @@ +#define tiny_arrowleft_width 7 +#define tiny_arrowleft_height 5 +#define tiny_arrowleft_x_hot 0 +#define tiny_arrowleft_y_hot 4 +static unsigned char tiny_arrowleft_bits[] = { + 0x02, 0x3f, 0x02, 0x00, 0x00 }; diff --git a/bitmaps/tiny_arrowright.xbm b/bitmaps/tiny_arrowright.xbm new file mode 100644 index 0000000..ab37763 --- /dev/null +++ b/bitmaps/tiny_arrowright.xbm @@ -0,0 +1,6 @@ +#define tiny_arrowright_width 7 +#define tiny_arrowright_height 5 +#define tiny_arrowright_x_hot 0 +#define tiny_arrowright_y_hot 4 +static unsigned char tiny_arrowright_bits[] = { + 0x10, 0x3f, 0x10, 0x00, 0x00 }; diff --git a/bitmaps/tiny_braceleft.xbm b/bitmaps/tiny_braceleft.xbm new file mode 100644 index 0000000..0f6ba86 --- /dev/null +++ b/bitmaps/tiny_braceleft.xbm @@ -0,0 +1,6 @@ +#define tiny_braceleft_width 4 +#define tiny_braceleft_height 9 +#define tiny_braceleft_x_hot 0 +#define tiny_braceleft_y_hot 7 +static unsigned char tiny_braceleft_bits[] = { + 0x04, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, 0x04}; diff --git a/bitmaps/tiny_braceright.xbm b/bitmaps/tiny_braceright.xbm new file mode 100644 index 0000000..2af45ee --- /dev/null +++ b/bitmaps/tiny_braceright.xbm @@ -0,0 +1,6 @@ +#define tiny_braceright_width 4 +#define tiny_braceright_height 9 +#define tiny_braceright_x_hot 0 +#define tiny_braceright_y_hot 7 +static unsigned char tiny_braceright_bits[] = { + 0x01, 0x02, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x01}; diff --git a/bitmaps/tiny_bracketleft.xbm b/bitmaps/tiny_bracketleft.xbm new file mode 100644 index 0000000..f3ae7ea --- /dev/null +++ b/bitmaps/tiny_bracketleft.xbm @@ -0,0 +1,6 @@ +#define tiny_bracketleft_width 4 +#define tiny_bracketleft_height 9 +#define tiny_bracketleft_x_hot 0 +#define tiny_bracketleft_y_hot 7 +static unsigned char tiny_bracketleft_bits[] = { + 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07}; diff --git a/bitmaps/tiny_bracketright.xbm b/bitmaps/tiny_bracketright.xbm new file mode 100644 index 0000000..de4d785 --- /dev/null +++ b/bitmaps/tiny_bracketright.xbm @@ -0,0 +1,6 @@ +#define tiny_bracketright_width 4 +#define tiny_bracketright_height 9 +#define tiny_bracketright_x_hot 0 +#define tiny_bracketright_y_hot 7 +static unsigned char tiny_bracketright_bits[] = { + 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07}; diff --git a/bitmaps/tiny_colon.xbm b/bitmaps/tiny_colon.xbm new file mode 100644 index 0000000..0dc2622 --- /dev/null +++ b/bitmaps/tiny_colon.xbm @@ -0,0 +1,6 @@ +#define tiny_colon_width 3 +#define tiny_colon_height 6 +#define tiny_colon_x_hot 0 +#define tiny_colon_y_hot 5 +static unsigned char tiny_colon_bits[] = { + 0x03, 0x03, 0x00, 0x00, 0x03, 0x03 }; diff --git a/bitmaps/tiny_comma.xbm b/bitmaps/tiny_comma.xbm new file mode 100644 index 0000000..2adbc03 --- /dev/null +++ b/bitmaps/tiny_comma.xbm @@ -0,0 +1,6 @@ +#define tiny_comma_width 4 +#define tiny_comma_height 3 +#define tiny_comma_x_hot 0 +#define tiny_comma_y_hot 1 +static unsigned char tiny_comma_bits[] = { + 0x06, 0x06, 0x03}; diff --git a/bitmaps/tiny_equal.xbm b/bitmaps/tiny_equal.xbm new file mode 100644 index 0000000..512b5c8 --- /dev/null +++ b/bitmaps/tiny_equal.xbm @@ -0,0 +1,6 @@ +#define tiny_equal_width 5 +#define tiny_equal_height 5 +#define tiny_equal_x_hot 0 +#define tiny_equal_y_hot 4 +static unsigned char tiny_equal_bits[] = { + 0x0f, 0x00, 0x0f, 0x00, 0x00}; diff --git a/bitmaps/tiny_greater.xbm b/bitmaps/tiny_greater.xbm new file mode 100644 index 0000000..44d9caf --- /dev/null +++ b/bitmaps/tiny_greater.xbm @@ -0,0 +1,6 @@ +#define tiny_greater_width 5 +#define tiny_greater_height 7 +#define tiny_greater_x_hot 0 +#define tiny_greater_y_hot 6 +static unsigned char tiny_greater_bits[] = { + 0x01, 0x02, 0x04, 0x08, 0x04, 0x02, 0x01}; diff --git a/bitmaps/tiny_guillemotleft.xbm b/bitmaps/tiny_guillemotleft.xbm new file mode 100644 index 0000000..96fc88a --- /dev/null +++ b/bitmaps/tiny_guillemotleft.xbm @@ -0,0 +1,6 @@ +#define tiny_guillemotleft_width 11 +#define tiny_guillemotleft_height 6 +#define tiny_guillemotleft_x_hot 0 +#define tiny_guillemotleft_y_hot 5 +static unsigned char tiny_guillemotleft_bits[] = { + 0x18, 0x03, 0xc6, 0x00, 0x21, 0x00, 0xc6, 0x00, 0x18, 0x03, 0x00, 0x00}; diff --git a/bitmaps/tiny_guillemotright.xbm b/bitmaps/tiny_guillemotright.xbm new file mode 100644 index 0000000..50d736e --- /dev/null +++ b/bitmaps/tiny_guillemotright.xbm @@ -0,0 +1,6 @@ +#define tiny_guillemotright_width 11 +#define tiny_guillemotright_height 6 +#define tiny_guillemotright_x_hot 0 +#define tiny_guillemotright_y_hot 5 +static unsigned char tiny_guillemotright_bits[] = { + 0x63, 0x00, 0x8c, 0x01, 0x10, 0x02, 0x8c, 0x01, 0x63, 0x00, 0x00, 0x00}; diff --git a/bitmaps/tiny_hyphen.xbm b/bitmaps/tiny_hyphen.xbm new file mode 100644 index 0000000..4696e05 --- /dev/null +++ b/bitmaps/tiny_hyphen.xbm @@ -0,0 +1,6 @@ +#define tiny_hyphen_width 5 +#define tiny_hyphen_height 4 +#define tiny_hyphen_x_hot 0 +#define tiny_hyphen_y_hot 3 +static unsigned char tiny_hyphen_bits[] = { + 0x0f, 0x00, 0x00, 0x00}; diff --git a/bitmaps/tiny_large_comma.xbm b/bitmaps/tiny_large_comma.xbm new file mode 100644 index 0000000..f130f02 --- /dev/null +++ b/bitmaps/tiny_large_comma.xbm @@ -0,0 +1,6 @@ +#define tiny_large_comma_width 4 +#define tiny_large_comma_height 6 +#define tiny_large_comma_x_hot 0 +#define tiny_large_comma_y_hot 2 +static unsigned char tiny_large_comma_bits[] = { + 0x07, 0x07, 0x07, 0x04, 0x02, 0x01 }; diff --git a/bitmaps/tiny_less.xbm b/bitmaps/tiny_less.xbm new file mode 100644 index 0000000..c9ee854 --- /dev/null +++ b/bitmaps/tiny_less.xbm @@ -0,0 +1,6 @@ +#define tiny_less_width 5 +#define tiny_less_height 7 +#define tiny_less_x_hot 0 +#define tiny_less_y_hot 6 +static unsigned char tiny_less_bits[] = { + 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08}; diff --git a/bitmaps/tiny_math_arrowleft.xbm b/bitmaps/tiny_math_arrowleft.xbm new file mode 100644 index 0000000..117ee37 --- /dev/null +++ b/bitmaps/tiny_math_arrowleft.xbm @@ -0,0 +1,7 @@ +#define tiny_math_arrowleft_width 12 +#define tiny_math_arrowleft_height 6 +#define tiny_math_arrowleft_x_hot 0 +#define tiny_math_arrowleft_y_hot 5 +static unsigned char tiny_math_arrowleft_bits[] = { + 0x10, 0x00, 0x1c, 0x00, 0xff, 0x07, 0x1c, 0x00, 0x10, 0x00, 0x00, 0x00 + }; diff --git a/bitmaps/tiny_math_arrowright.xbm b/bitmaps/tiny_math_arrowright.xbm new file mode 100644 index 0000000..5f23875 --- /dev/null +++ b/bitmaps/tiny_math_arrowright.xbm @@ -0,0 +1,7 @@ +#define tiny_math_arrowright_width 12 +#define tiny_math_arrowright_height 6 +#define tiny_math_arrowright_x_hot 0 +#define tiny_math_arrowright_y_hot 5 +static unsigned char tiny_math_arrowright_bits[] = { + 0x40, 0x00, 0xc0, 0x01, 0xff, 0x07, 0xc0, 0x01, 0x40, 0x00, 0x00, 0x00 + }; diff --git a/bitmaps/tiny_math_downarrowleft.xbm b/bitmaps/tiny_math_downarrowleft.xbm new file mode 100644 index 0000000..103f777 --- /dev/null +++ b/bitmaps/tiny_math_downarrowleft.xbm @@ -0,0 +1,7 @@ +#define tiny_math_downarrowleft_width 12 +#define tiny_math_downarrowleft_height 8 +#define tiny_math_downarrowleft_x_hot 0 +#define tiny_math_downarrowleft_y_hot 7 +static unsigned char tiny_math_downarrowleft_bits[] = { + 0x00, 0x04, 0x00, 0x04, 0x10, 0x04, 0x1c, 0x04, 0xff, 0x07, 0x1c, 0x00, + 0x10, 0x00, 0x00, 0x00 }; diff --git a/bitmaps/tiny_math_downarrowright.xbm b/bitmaps/tiny_math_downarrowright.xbm new file mode 100644 index 0000000..bf7c8bc --- /dev/null +++ b/bitmaps/tiny_math_downarrowright.xbm @@ -0,0 +1,7 @@ +#define tiny_math_downarrowright_width 12 +#define tiny_math_downarrowright_height 8 +#define tiny_math_downarrowright_x_hot 0 +#define tiny_math_downarrowright_y_hot 7 +static unsigned char tiny_math_downarrowright_bits[] = { + 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0xc1, 0x01, 0xff, 0x07, 0xc0, 0x01, + 0x40, 0x00, 0x00, 0x00 }; diff --git a/bitmaps/tiny_math_e.xbm b/bitmaps/tiny_math_e.xbm new file mode 100644 index 0000000..1cb6fa3 --- /dev/null +++ b/bitmaps/tiny_math_e.xbm @@ -0,0 +1,6 @@ +#define tiny_math_e_width 6 +#define tiny_math_e_height 6 +#define tiny_math_e_x_hot 0 +#define tiny_math_e_y_hot 5 +static unsigned char tiny_math_e_bits[] = { + 0x0c, 0x12, 0x09, 0x07, 0x11, 0x0e}; diff --git a/bitmaps/tiny_math_equal.xbm b/bitmaps/tiny_math_equal.xbm new file mode 100644 index 0000000..cf30759 --- /dev/null +++ b/bitmaps/tiny_math_equal.xbm @@ -0,0 +1,6 @@ +#define tiny_math_equal_width 7 +#define tiny_math_equal_height 6 +#define tiny_math_equal_x_hot 0 +#define tiny_math_equal_y_hot 5 +static unsigned char tiny_math_equal_bits[] = { + 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00}; diff --git a/bitmaps/tiny_math_greater.xbm b/bitmaps/tiny_math_greater.xbm new file mode 100644 index 0000000..581b902 --- /dev/null +++ b/bitmaps/tiny_math_greater.xbm @@ -0,0 +1,6 @@ +#define tiny_math_greater_width 6 +#define tiny_math_greater_height 7 +#define tiny_math_greater_x_hot 0 +#define tiny_math_greater_y_hot 6 +static unsigned char tiny_math_greater_bits[] = { + 0x03, 0x0c, 0x10, 0x0c, 0x03, 0x00, 0x00}; diff --git a/bitmaps/tiny_math_greaterequal.xbm b/bitmaps/tiny_math_greaterequal.xbm new file mode 100644 index 0000000..7675bf9 --- /dev/null +++ b/bitmaps/tiny_math_greaterequal.xbm @@ -0,0 +1,6 @@ +#define tiny_math_greaterequal_width 6 +#define tiny_math_greaterequal_height 8 +#define tiny_math_greaterequal_x_hot 0 +#define tiny_math_greaterequal_y_hot 7 +static unsigned char tiny_math_greaterequal_bits[] = { + 0x03, 0x0c, 0x10, 0x0c, 0x03, 0x30, 0x0c, 0x03}; diff --git a/bitmaps/tiny_math_infinity.xbm b/bitmaps/tiny_math_infinity.xbm new file mode 100644 index 0000000..ed48a6e --- /dev/null +++ b/bitmaps/tiny_math_infinity.xbm @@ -0,0 +1,6 @@ +#define tiny_math_infinity_width 13 +#define tiny_math_infinity_height 5 +#define tiny_math_infinity_x_hot 0 +#define tiny_math_infinity_y_hot 4 +static unsigned char tiny_math_infinity_bits[] = { + 0x9e, 0x07, 0x61, 0x08, 0x61, 0x08, 0x9e, 0x07, 0x00, 0x00 }; diff --git a/bitmaps/tiny_math_integral.xbm b/bitmaps/tiny_math_integral.xbm new file mode 100644 index 0000000..1a91ed9 --- /dev/null +++ b/bitmaps/tiny_math_integral.xbm @@ -0,0 +1,7 @@ +#define tiny_math_integral_width 9 +#define tiny_math_integral_height 10 +#define tiny_math_integral_x_hot 0 +#define tiny_math_integral_y_hot 8 +static unsigned char tiny_math_integral_bits[] = { + 0x60, 0x00, 0x90, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x06, 0x00}; diff --git a/bitmaps/tiny_math_less.xbm b/bitmaps/tiny_math_less.xbm new file mode 100644 index 0000000..9efe921 --- /dev/null +++ b/bitmaps/tiny_math_less.xbm @@ -0,0 +1,6 @@ +#define tiny_math_less_width 6 +#define tiny_math_less_height 7 +#define tiny_math_less_x_hot 0 +#define tiny_math_less_y_hot 6 +static unsigned char tiny_math_less_bits[] = { + 0x18, 0x06, 0x01, 0x06, 0x18, 0x00, 0x00}; diff --git a/bitmaps/tiny_math_lessequal.xbm b/bitmaps/tiny_math_lessequal.xbm new file mode 100644 index 0000000..ea49a90 --- /dev/null +++ b/bitmaps/tiny_math_lessequal.xbm @@ -0,0 +1,6 @@ +#define tiny_math_lessequal_width 6 +#define tiny_math_lessequal_height 8 +#define tiny_math_lessequal_x_hot 0 +#define tiny_math_lessequal_y_hot 7 +static unsigned char tiny_math_lessequal_bits[] = { + 0x30, 0x0c, 0x02, 0x0c, 0x30, 0x03, 0x0c, 0x30}; diff --git a/bitmaps/tiny_math_notequal.xbm b/bitmaps/tiny_math_notequal.xbm new file mode 100644 index 0000000..9b71a4f --- /dev/null +++ b/bitmaps/tiny_math_notequal.xbm @@ -0,0 +1,6 @@ +#define tiny_math_notequal_width 7 +#define tiny_math_notequal_height 8 +#define tiny_math_notequal_x_hot 0 +#define tiny_math_notequal_y_hot 7 +static unsigned char tiny_math_notequal_bits[] = { + 0x08, 0x08, 0x3f, 0x08, 0x04, 0x3f, 0x04, 0x04}; diff --git a/bitmaps/tiny_math_numbersign.xbm b/bitmaps/tiny_math_numbersign.xbm new file mode 100644 index 0000000..caf5b69 --- /dev/null +++ b/bitmaps/tiny_math_numbersign.xbm @@ -0,0 +1,7 @@ +#define tiny_math_numbersign_width 10 +#define tiny_math_numbersign_height 8 +#define tiny_math_numbersign_x_hot 0 +#define tiny_math_numbersign_y_hot 7 +static unsigned char tiny_math_numbersign_bits[] = { + 0x48, 0x00, 0x48, 0x00, 0xfe, 0x01, 0x48, 0x00, 0x24, 0x00, 0xff, 0x00, + 0x24, 0x00, 0x24, 0x00}; diff --git a/bitmaps/tiny_math_partialdiff.xbm b/bitmaps/tiny_math_partialdiff.xbm new file mode 100644 index 0000000..cf83622 --- /dev/null +++ b/bitmaps/tiny_math_partialdiff.xbm @@ -0,0 +1,6 @@ +#define tiny_math_partialdiff_width 6 +#define tiny_math_partialdiff_height 8 +#define tiny_math_partialdiff_x_hot 0 +#define tiny_math_partialdiff_y_hot 7 +static unsigned char tiny_math_partialdiff_bits[] = { + 0x04, 0x08, 0x08, 0x1e, 0x11, 0x11, 0x11, 0x0e}; diff --git a/bitmaps/tiny_math_pi.xbm b/bitmaps/tiny_math_pi.xbm new file mode 100644 index 0000000..2d3690d --- /dev/null +++ b/bitmaps/tiny_math_pi.xbm @@ -0,0 +1,7 @@ +#define tiny_math_pi_width 9 +#define tiny_math_pi_height 6 +#define tiny_math_pi_x_hot 0 +#define tiny_math_pi_y_hot 5 +static unsigned char tiny_math_pi_bits[] = { + 0xfe, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x00, 0xa4, 0x00, 0x42, 0x00 + }; diff --git a/bitmaps/tiny_math_radical.xbm b/bitmaps/tiny_math_radical.xbm new file mode 100644 index 0000000..c281986 --- /dev/null +++ b/bitmaps/tiny_math_radical.xbm @@ -0,0 +1,6 @@ +#define tiny_math_radical_width 8 +#define tiny_math_radical_height 11 +#define tiny_math_radical_x_hot 0 +#define tiny_math_radical_y_hot 8 +static unsigned char tiny_math_radical_bits[] = { + 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x17, 0x14, 0x1c, 0x08, 0x08}; diff --git a/bitmaps/tiny_math_summation.xbm b/bitmaps/tiny_math_summation.xbm new file mode 100644 index 0000000..d83209f --- /dev/null +++ b/bitmaps/tiny_math_summation.xbm @@ -0,0 +1,6 @@ +#define tiny_math_summation_width 6 +#define tiny_math_summation_height 9 +#define tiny_math_summation_x_hot 0 +#define tiny_math_summation_y_hot 7 +static unsigned char tiny_math_summation_bits[] = { + 0x1f, 0x11, 0x02, 0x04, 0x08, 0x04, 0x02, 0x11, 0x1f}; diff --git a/bitmaps/tiny_math_x.xbm b/bitmaps/tiny_math_x.xbm new file mode 100644 index 0000000..e77a564 --- /dev/null +++ b/bitmaps/tiny_math_x.xbm @@ -0,0 +1,6 @@ +#define tiny_math_x_width 8 +#define tiny_math_x_height 6 +#define tiny_math_x_x_hot 0 +#define tiny_math_x_y_hot 5 +static unsigned char tiny_math_x_bits[] = { + 0x26, 0x14, 0x08, 0x14, 0x53, 0x21}; diff --git a/bitmaps/tiny_math_y.xbm b/bitmaps/tiny_math_y.xbm new file mode 100644 index 0000000..71c1a76 --- /dev/null +++ b/bitmaps/tiny_math_y.xbm @@ -0,0 +1,6 @@ +#define tiny_math_y_width 7 +#define tiny_math_y_height 9 +#define tiny_math_y_x_hot 1 +#define tiny_math_y_y_hot 6 +static unsigned char tiny_math_y_bits[] = { + 0x26, 0x24, 0x24, 0x14, 0x18, 0x08, 0x08, 0x05, 0x03}; diff --git a/bitmaps/tiny_notdef.xbm b/bitmaps/tiny_notdef.xbm new file mode 100644 index 0000000..57f36b7 --- /dev/null +++ b/bitmaps/tiny_notdef.xbm @@ -0,0 +1,6 @@ +#define tiny_notdef_width 4 +#define tiny_notdef_height 5 +#define tiny_notdef_x_hot 0 +#define tiny_notdef_y_hot 4 +static unsigned char tiny_notdef_bits[] = { + 0x07, 0x07, 0x07, 0x00, 0x00}; diff --git a/bitmaps/tiny_numbersign.xbm b/bitmaps/tiny_numbersign.xbm new file mode 100644 index 0000000..82931c6 --- /dev/null +++ b/bitmaps/tiny_numbersign.xbm @@ -0,0 +1,6 @@ +#define tiny_numbersign_width 6 +#define tiny_numbersign_height 6 +#define tiny_numbersign_x_hot 0 +#define tiny_numbersign_y_hot 5 +static unsigned char tiny_numbersign_bits[] = { + 0x0a, 0x1f, 0x0a, 0x0a, 0x1f, 0x0a}; diff --git a/bitmaps/tiny_one.xbm b/bitmaps/tiny_one.xbm new file mode 100644 index 0000000..050a714 --- /dev/null +++ b/bitmaps/tiny_one.xbm @@ -0,0 +1,6 @@ +#define tiny_one_width 3 +#define tiny_one_height 7 +#define tiny_one_x_hot 0 +#define tiny_one_y_hot 6 +static unsigned char tiny_one_bits[] = { + 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}; diff --git a/bitmaps/tiny_overscore.xbm b/bitmaps/tiny_overscore.xbm new file mode 100644 index 0000000..c3fb694 --- /dev/null +++ b/bitmaps/tiny_overscore.xbm @@ -0,0 +1,6 @@ +#define tiny_overscore_width 6 +#define tiny_overscore_height 9 +#define tiny_overscore_x_hot 1 +#define tiny_overscore_y_hot 8 +static unsigned char tiny_overscore_bits[] = { + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/tiny_parenleft.xbm b/bitmaps/tiny_parenleft.xbm new file mode 100644 index 0000000..3631fa9 --- /dev/null +++ b/bitmaps/tiny_parenleft.xbm @@ -0,0 +1,6 @@ +#define tiny_parenleft_width 4 +#define tiny_parenleft_height 9 +#define tiny_parenleft_x_hot 0 +#define tiny_parenleft_y_hot 7 +static unsigned char tiny_parenleft_bits[] = { + 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x04}; diff --git a/bitmaps/tiny_parenright.xbm b/bitmaps/tiny_parenright.xbm new file mode 100644 index 0000000..82b182b --- /dev/null +++ b/bitmaps/tiny_parenright.xbm @@ -0,0 +1,6 @@ +#define tiny_parenright_width 4 +#define tiny_parenright_height 9 +#define tiny_parenright_x_hot 0 +#define tiny_parenright_y_hot 7 +static unsigned char tiny_parenright_bits[] = { + 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01}; diff --git a/bitmaps/tiny_period.xbm b/bitmaps/tiny_period.xbm new file mode 100644 index 0000000..705a7c8 --- /dev/null +++ b/bitmaps/tiny_period.xbm @@ -0,0 +1,6 @@ +#define tiny_period_width 3 +#define tiny_period_height 2 +#define tiny_period_x_hot 0 +#define tiny_period_y_hot 1 +static unsigned char tiny_period_bits[] = { + 0x03, 0x03}; diff --git a/bitmaps/tiny_quotedbl.xbm b/bitmaps/tiny_quotedbl.xbm new file mode 100644 index 0000000..8ff40d0 --- /dev/null +++ b/bitmaps/tiny_quotedbl.xbm @@ -0,0 +1,6 @@ +#define tiny_quotedbl_width 4 +#define tiny_quotedbl_height 7 +#define tiny_quotedbl_x_hot 0 +#define tiny_quotedbl_y_hot 6 +static unsigned char tiny_quotedbl_bits[] = { + 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/tiny_slash.xbm b/bitmaps/tiny_slash.xbm new file mode 100644 index 0000000..c747f38 --- /dev/null +++ b/bitmaps/tiny_slash.xbm @@ -0,0 +1,6 @@ +#define tiny_slash_width 4 +#define tiny_slash_height 7 +#define tiny_slash_x_hot 0 +#define tiny_slash_y_hot 6 +static unsigned char tiny_slash_bits[] = { + 0x04, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01}; diff --git a/bitmaps/tiny_three.xbm b/bitmaps/tiny_three.xbm new file mode 100644 index 0000000..ba91803 --- /dev/null +++ b/bitmaps/tiny_three.xbm @@ -0,0 +1,6 @@ +#define tiny_three_width 5 +#define tiny_three_height 7 +#define tiny_three_x_hot 0 +#define tiny_three_y_hot 6 +static unsigned char tiny_three_bits[] = { + 0x06, 0x09, 0x08, 0x06, 0x08, 0x09, 0x06}; diff --git a/bitmaps/tiny_two.xbm b/bitmaps/tiny_two.xbm new file mode 100644 index 0000000..af93ea9 --- /dev/null +++ b/bitmaps/tiny_two.xbm @@ -0,0 +1,6 @@ +#define tiny_two_width 5 +#define tiny_two_height 7 +#define tiny_two_x_hot 0 +#define tiny_two_y_hot 6 +static unsigned char tiny_two_bits[] = { + 0x06, 0x09, 0x08, 0x08, 0x04, 0x02, 0x0f}; diff --git a/bitmaps/tiny_twosuperior.xbm b/bitmaps/tiny_twosuperior.xbm new file mode 100644 index 0000000..8761f31 --- /dev/null +++ b/bitmaps/tiny_twosuperior.xbm @@ -0,0 +1,6 @@ +#define tiny_twosuperior_width 5 +#define tiny_twosuperior_height 9 +#define tiny_twosuperior_x_hot 0 +#define tiny_twosuperior_y_hot 8 +static unsigned char tiny_twosuperior_bits[] = { + 0x02, 0x05, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/tiny_underscore.xbm b/bitmaps/tiny_underscore.xbm new file mode 100644 index 0000000..b7f3f87 --- /dev/null +++ b/bitmaps/tiny_underscore.xbm @@ -0,0 +1,6 @@ +#define tiny_underscore_width 6 +#define tiny_underscore_height 3 +#define tiny_underscore_x_hot 1 +#define tiny_underscore_y_hot 0 +static unsigned char tiny_underscore_bits[] = { + 0x00, 0x00, 0x3f}; diff --git a/bitmaps/tiny_xsuperior.xbm b/bitmaps/tiny_xsuperior.xbm new file mode 100644 index 0000000..fbd699f --- /dev/null +++ b/bitmaps/tiny_xsuperior.xbm @@ -0,0 +1,6 @@ +#define tiny_xsuperior_width 5 +#define tiny_xsuperior_height 9 +#define tiny_xsuperior_x_hot 0 +#define tiny_xsuperior_y_hot 8 +static unsigned char tiny_xsuperior_bits[] = { + 0x12, 0x0c, 0x04, 0x0a, 0x09, 0x00, 0x00, 0x00, 0x00}; diff --git a/bitmaps/tiny_zero.xbm b/bitmaps/tiny_zero.xbm new file mode 100644 index 0000000..be374ab --- /dev/null +++ b/bitmaps/tiny_zero.xbm @@ -0,0 +1,6 @@ +#define tiny_zero_width 5 +#define tiny_zero_height 7 +#define tiny_zero_x_hot 0 +#define tiny_zero_y_hot 6 +static unsigned char tiny_zero_bits[] = { + 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06}; diff --git a/block-qcow.c b/block-qcow.c new file mode 100644 index 0000000..86425aa --- /dev/null +++ b/block-qcow.c @@ -0,0 +1,600 @@ +/* + * Block driver for the QCOW format + * + * Copyright (c) 2004-2006 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifdef QEMU_OLD +#include "vl.h" +#else +#include "qemu-common.h" +#include "block.h" +#endif +#include "block_int.h" +#include +#if 0 +#include "aes.h" +#endif + +/**************************************************************/ +/* QEMU COW block driver with compression and encryption support */ + +#define QCOW_MAGIC (('Q' << 24) | ('F' << 16) | ('I' << 8) | 0xfb) +#define QCOW_VERSION 1 + +#define QCOW_CRYPT_NONE 0 +#define QCOW_CRYPT_AES 1 + +#define QCOW_OFLAG_COMPRESSED (1LL << 63) + +typedef struct QCowHeader { + uint32_t magic; + uint32_t version; + uint64_t backing_file_offset; + uint32_t backing_file_size; + uint32_t mtime; + uint64_t size; /* in bytes */ + uint8_t cluster_bits; + uint8_t l2_bits; + uint32_t crypt_method; + uint64_t l1_table_offset; +} QCowHeader; + +#define L2_CACHE_SIZE 16 + +typedef struct BDRVQcowState { + BlockDriverState *hd; + int cluster_bits; + int cluster_size; + int cluster_sectors; + int l2_bits; + int l2_size; + int l1_size; + uint64_t cluster_offset_mask; + uint64_t l1_table_offset; + uint64_t *l1_table; + uint64_t *l2_cache; + uint64_t l2_cache_offsets[L2_CACHE_SIZE]; + uint32_t l2_cache_counts[L2_CACHE_SIZE]; + uint8_t *cluster_cache; + uint8_t *cluster_data; + uint64_t cluster_cache_offset; +} BDRVQcowState; + +static int decompress_cluster(BDRVQcowState *s, uint64_t cluster_offset); + +static int qcow_probe(const uint8_t *buf, int buf_size, const char *filename) +{ + const QCowHeader *cow_header = (const void *)buf; + + if (buf_size >= sizeof(QCowHeader) && + be32_to_cpu(cow_header->magic) == QCOW_MAGIC && + be32_to_cpu(cow_header->version) == QCOW_VERSION) + return 100; + else + return 0; +} + +static int qcow_open(BlockDriverState *bs, const char *filename, int flags) +{ + BDRVQcowState *s = bs->opaque; + int len, i, shift, ret; + QCowHeader header; + + ret = bdrv_file_open(&s->hd, filename, flags); + if (ret < 0) + return ret; + if (bdrv_pread(s->hd, 0, &header, sizeof(header)) != sizeof(header)) + goto fail; + be32_to_cpus(&header.magic); + be32_to_cpus(&header.version); + be64_to_cpus(&header.backing_file_offset); + be32_to_cpus(&header.backing_file_size); + be32_to_cpus(&header.mtime); + be64_to_cpus(&header.size); + be32_to_cpus(&header.crypt_method); + be64_to_cpus(&header.l1_table_offset); + + if (header.magic != QCOW_MAGIC || header.version != QCOW_VERSION) + goto fail; + if (header.size <= 1 || header.cluster_bits < 9) + goto fail; + if (header.crypt_method > QCOW_CRYPT_AES) + goto fail; + s->cluster_bits = header.cluster_bits; + s->cluster_size = 1 << s->cluster_bits; + s->cluster_sectors = 1 << (s->cluster_bits - 9); + s->l2_bits = header.l2_bits; + s->l2_size = 1 << s->l2_bits; + bs->total_sectors = header.size / 512; + s->cluster_offset_mask = (1LL << (63 - s->cluster_bits)) - 1; + + /* read the level 1 table */ + shift = s->cluster_bits + s->l2_bits; + s->l1_size = (header.size + (1LL << shift) - 1) >> shift; + + s->l1_table_offset = header.l1_table_offset; + s->l1_table = qemu_malloc(s->l1_size * sizeof(uint64_t)); + if (!s->l1_table) + goto fail; + if (bdrv_pread(s->hd, s->l1_table_offset, s->l1_table, s->l1_size * sizeof(uint64_t)) != + s->l1_size * sizeof(uint64_t)) + goto fail; + for(i = 0;i < s->l1_size; i++) { + be64_to_cpus(&s->l1_table[i]); + } + /* alloc L2 cache */ + s->l2_cache = qemu_malloc(s->l2_size * L2_CACHE_SIZE * sizeof(uint64_t)); + if (!s->l2_cache) + goto fail; + s->cluster_cache = qemu_malloc(s->cluster_size); + if (!s->cluster_cache) + goto fail; + s->cluster_data = qemu_malloc(s->cluster_size); + if (!s->cluster_data) + goto fail; + s->cluster_cache_offset = -1; + + /* read the backing file name */ + if (header.backing_file_offset != 0) { + len = header.backing_file_size; + if (len > 1023) + len = 1023; + if (bdrv_pread(s->hd, header.backing_file_offset, bs->backing_file, len) != len) + goto fail; + bs->backing_file[len] = '\0'; + } + return 0; + + fail: + qemu_free(s->l1_table); + qemu_free(s->l2_cache); + qemu_free(s->cluster_cache); + qemu_free(s->cluster_data); + bdrv_delete(s->hd); + return -1; +} + +/* 'allocate' is: + * + * 0 to not allocate. + * + * 1 to allocate a normal cluster (for sector indexes 'n_start' to + * 'n_end') + * + * 2 to allocate a compressed cluster of size + * 'compressed_size'. 'compressed_size' must be > 0 and < + * cluster_size + * + * return 0 if not allocated. + */ +static uint64_t get_cluster_offset(BlockDriverState *bs, + uint64_t offset, int allocate, + int compressed_size, + int n_start, int n_end) +{ + BDRVQcowState *s = bs->opaque; + int min_index, i, j, l1_index, l2_index; + uint64_t l2_offset, *l2_table, cluster_offset, tmp; + uint32_t min_count; + int new_l2_table; + + l1_index = offset >> (s->l2_bits + s->cluster_bits); + l2_offset = s->l1_table[l1_index]; + new_l2_table = 0; + if (!l2_offset) { + if (!allocate) + return 0; + /* allocate a new l2 entry */ + l2_offset = bdrv_getlength(s->hd); + /* round to cluster size */ + l2_offset = (l2_offset + s->cluster_size - 1) & ~(s->cluster_size - 1); + /* update the L1 entry */ + s->l1_table[l1_index] = l2_offset; + tmp = cpu_to_be64(l2_offset); + if (bdrv_pwrite(s->hd, s->l1_table_offset + l1_index * sizeof(tmp), + &tmp, sizeof(tmp)) != sizeof(tmp)) + return 0; + new_l2_table = 1; + } + for(i = 0; i < L2_CACHE_SIZE; i++) { + if (l2_offset == s->l2_cache_offsets[i]) { + /* increment the hit count */ + if (++s->l2_cache_counts[i] == 0xffffffff) { + for(j = 0; j < L2_CACHE_SIZE; j++) { + s->l2_cache_counts[j] >>= 1; + } + } + l2_table = s->l2_cache + (i << s->l2_bits); + goto found; + } + } + /* not found: load a new entry in the least used one */ + min_index = 0; + min_count = 0xffffffff; + for(i = 0; i < L2_CACHE_SIZE; i++) { + if (s->l2_cache_counts[i] < min_count) { + min_count = s->l2_cache_counts[i]; + min_index = i; + } + } + l2_table = s->l2_cache + (min_index << s->l2_bits); + if (new_l2_table) { + memset(l2_table, 0, s->l2_size * sizeof(uint64_t)); + if (bdrv_pwrite(s->hd, l2_offset, l2_table, s->l2_size * sizeof(uint64_t)) != + s->l2_size * sizeof(uint64_t)) + return 0; + } else { + if (bdrv_pread(s->hd, l2_offset, l2_table, s->l2_size * sizeof(uint64_t)) != + s->l2_size * sizeof(uint64_t)) + return 0; + } + s->l2_cache_offsets[min_index] = l2_offset; + s->l2_cache_counts[min_index] = 1; + found: + l2_index = (offset >> s->cluster_bits) & (s->l2_size - 1); + cluster_offset = be64_to_cpu(l2_table[l2_index]); + if (!cluster_offset || + ((cluster_offset & QCOW_OFLAG_COMPRESSED) && allocate == 1)) { + if (!allocate) + return 0; + /* allocate a new cluster */ + if ((cluster_offset & QCOW_OFLAG_COMPRESSED) && + (n_end - n_start) < s->cluster_sectors) { + /* if the cluster is already compressed, we must + decompress it in the case it is not completely + overwritten */ + if (decompress_cluster(s, cluster_offset) < 0) + return 0; + cluster_offset = bdrv_getlength(s->hd); + cluster_offset = (cluster_offset + s->cluster_size - 1) & + ~(s->cluster_size - 1); + /* write the cluster content */ + if (bdrv_pwrite(s->hd, cluster_offset, s->cluster_cache, s->cluster_size) != + s->cluster_size) + return -1; + } else { + cluster_offset = bdrv_getlength(s->hd); + if (allocate == 1) { + /* round to cluster size */ + cluster_offset = (cluster_offset + s->cluster_size - 1) & + ~(s->cluster_size - 1); + bdrv_truncate(s->hd, cluster_offset + s->cluster_size); + } else { + cluster_offset |= QCOW_OFLAG_COMPRESSED | + (uint64_t)compressed_size << (63 - s->cluster_bits); + } + } + /* update L2 table */ + tmp = cpu_to_be64(cluster_offset); + l2_table[l2_index] = tmp; + if (bdrv_pwrite(s->hd, + l2_offset + l2_index * sizeof(tmp), &tmp, sizeof(tmp)) != sizeof(tmp)) + return 0; + } + return cluster_offset; +} + +static int qcow_is_allocated(BlockDriverState *bs, int64_t sector_num, + int nb_sectors, int *pnum) +{ + BDRVQcowState *s = bs->opaque; + int index_in_cluster, n; + uint64_t cluster_offset; + + cluster_offset = get_cluster_offset(bs, sector_num << 9, 0, 0, 0, 0); + index_in_cluster = sector_num & (s->cluster_sectors - 1); + n = s->cluster_sectors - index_in_cluster; + if (n > nb_sectors) + n = nb_sectors; + *pnum = n; + return (cluster_offset != 0); +} + +static int decompress_buffer(uint8_t *out_buf, int out_buf_size, + const uint8_t *buf, int buf_size) +{ + z_stream strm1, *strm = &strm1; + int ret, out_len; + + memset(strm, 0, sizeof(*strm)); + + strm->next_in = (uint8_t *)buf; + strm->avail_in = buf_size; + strm->next_out = out_buf; + strm->avail_out = out_buf_size; + + ret = inflateInit2(strm, -12); + if (ret != Z_OK) + return -1; + ret = inflate(strm, Z_FINISH); + out_len = strm->next_out - out_buf; + if ((ret != Z_STREAM_END && ret != Z_BUF_ERROR) || + out_len != out_buf_size) { + inflateEnd(strm); + return -1; + } + inflateEnd(strm); + return 0; +} + +static int decompress_cluster(BDRVQcowState *s, uint64_t cluster_offset) +{ + int ret, csize; + uint64_t coffset; + + coffset = cluster_offset & s->cluster_offset_mask; + if (s->cluster_cache_offset != coffset) { + csize = cluster_offset >> (63 - s->cluster_bits); + csize &= (s->cluster_size - 1); + ret = bdrv_pread(s->hd, coffset, s->cluster_data, csize); + if (ret != csize) + return -1; + if (decompress_buffer(s->cluster_cache, s->cluster_size, + s->cluster_data, csize) < 0) { + return -1; + } + s->cluster_cache_offset = coffset; + } + return 0; +} + +static int qcow_read(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors) +{ + BDRVQcowState *s = bs->opaque; + int ret, index_in_cluster, n; + uint64_t cluster_offset; + + while (nb_sectors > 0) { + cluster_offset = get_cluster_offset(bs, sector_num << 9, 0, 0, 0, 0); + index_in_cluster = sector_num & (s->cluster_sectors - 1); + n = s->cluster_sectors - index_in_cluster; + if (n > nb_sectors) + n = nb_sectors; + if (!cluster_offset) { + if (bs->backing_hd) { + /* read from the base image */ + ret = bdrv_read(bs->backing_hd, sector_num, buf, n); + if (ret < 0) + return -1; + } else { + memset(buf, 0, 512 * n); + } + } else if (cluster_offset & QCOW_OFLAG_COMPRESSED) { + if (decompress_cluster(s, cluster_offset) < 0) + return -1; + memcpy(buf, s->cluster_cache + index_in_cluster * 512, 512 * n); + } else { + ret = bdrv_pread(s->hd, cluster_offset + index_in_cluster * 512, buf, n * 512); + if (ret != n * 512) + return -1; + } + nb_sectors -= n; + sector_num += n; + buf += n * 512; + } + return 0; +} + +static int qcow_write(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors) +{ + BDRVQcowState *s = bs->opaque; + int ret, index_in_cluster, n; + uint64_t cluster_offset; + + while (nb_sectors > 0) { + index_in_cluster = sector_num & (s->cluster_sectors - 1); + n = s->cluster_sectors - index_in_cluster; + if (n > nb_sectors) + n = nb_sectors; + cluster_offset = get_cluster_offset(bs, sector_num << 9, 1, 0, + index_in_cluster, + index_in_cluster + n); + if (!cluster_offset) + return -1; + { + ret = bdrv_pwrite(s->hd, cluster_offset + index_in_cluster * 512, buf, n * 512); + } + if (ret != n * 512) + return -1; + nb_sectors -= n; + sector_num += n; + buf += n * 512; + } + s->cluster_cache_offset = -1; /* disable compressed cache */ + return 0; +} + +static void qcow_close(BlockDriverState *bs) +{ + BDRVQcowState *s = bs->opaque; + qemu_free(s->l1_table); + qemu_free(s->l2_cache); + qemu_free(s->cluster_cache); + qemu_free(s->cluster_data); + bdrv_delete(s->hd); +} + +static int qcow_create(const char *filename, int64_t total_size, + const char *backing_file, int flags) +{ + int fd, header_size, backing_filename_len, l1_size, i, shift; + QCowHeader header; + uint64_t tmp; + + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644); + if (fd < 0) + return -1; + memset(&header, 0, sizeof(header)); + header.magic = cpu_to_be32(QCOW_MAGIC); + header.version = cpu_to_be32(QCOW_VERSION); + header.size = cpu_to_be64(total_size * 512); + header_size = sizeof(header); + backing_filename_len = 0; + if (backing_file) { + header.backing_file_offset = cpu_to_be64(header_size); + backing_filename_len = strlen(backing_file); + header.backing_file_size = cpu_to_be32(backing_filename_len); + header_size += backing_filename_len; + header.mtime = cpu_to_be32(0); + header.cluster_bits = 9; /* 512 byte cluster to avoid copying + unmodifyed sectors */ + header.l2_bits = 12; /* 32 KB L2 tables */ + } else { + header.cluster_bits = 12; /* 4 KB clusters */ + header.l2_bits = 9; /* 4 KB L2 tables */ + } + header_size = (header_size + 7) & ~7; + shift = header.cluster_bits + header.l2_bits; + l1_size = ((total_size * 512) + (1LL << shift) - 1) >> shift; + + header.l1_table_offset = cpu_to_be64(header_size); + if (flags) { + header.crypt_method = cpu_to_be32(QCOW_CRYPT_AES); + } else { + header.crypt_method = cpu_to_be32(QCOW_CRYPT_NONE); + } + + /* write all the data */ + write(fd, &header, sizeof(header)); + if (backing_file) { + write(fd, backing_file, backing_filename_len); + } + lseek(fd, header_size, SEEK_SET); + tmp = 0; + for(i = 0;i < l1_size; i++) { + write(fd, &tmp, sizeof(tmp)); + } + close(fd); + return 0; +} + +static int qcow_make_empty(BlockDriverState *bs) +{ + BDRVQcowState *s = bs->opaque; + uint32_t l1_length = s->l1_size * sizeof(uint64_t); + int ret; + + memset(s->l1_table, 0, l1_length); + if (bdrv_pwrite(s->hd, s->l1_table_offset, s->l1_table, l1_length) < 0) + return -1; + ret = bdrv_truncate(s->hd, s->l1_table_offset + l1_length); + if (ret < 0) + return ret; + + memset(s->l2_cache, 0, s->l2_size * L2_CACHE_SIZE * sizeof(uint64_t)); + memset(s->l2_cache_offsets, 0, L2_CACHE_SIZE * sizeof(uint64_t)); + memset(s->l2_cache_counts, 0, L2_CACHE_SIZE * sizeof(uint32_t)); + + return 0; +} + +/* XXX: put compressed sectors first, then all the cluster aligned + tables to avoid losing bytes in alignment */ +static int qcow_write_compressed(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors) +{ + BDRVQcowState *s = bs->opaque; + z_stream strm; + int ret, out_len; + uint8_t *out_buf; + uint64_t cluster_offset; + + if (nb_sectors != s->cluster_sectors) + return -EINVAL; + + out_buf = qemu_malloc(s->cluster_size + (s->cluster_size / 1000) + 128); + if (!out_buf) + return -1; + + /* best compression, small window, no zlib header */ + memset(&strm, 0, sizeof(strm)); + ret = deflateInit2(&strm, Z_DEFAULT_COMPRESSION, + Z_DEFLATED, -12, + 9, Z_DEFAULT_STRATEGY); + if (ret != 0) { + qemu_free(out_buf); + return -1; + } + + strm.avail_in = s->cluster_size; + strm.next_in = (uint8_t *)buf; + strm.avail_out = s->cluster_size; + strm.next_out = out_buf; + + ret = deflate(&strm, Z_FINISH); + if (ret != Z_STREAM_END && ret != Z_OK) { + qemu_free(out_buf); + deflateEnd(&strm); + return -1; + } + out_len = strm.next_out - out_buf; + + deflateEnd(&strm); + + if (ret != Z_STREAM_END || out_len >= s->cluster_size) { + /* could not compress: write normal cluster */ + qcow_write(bs, sector_num, buf, s->cluster_sectors); + } else { + cluster_offset = get_cluster_offset(bs, sector_num << 9, 2, + out_len, 0, 0); + cluster_offset &= s->cluster_offset_mask; + if (bdrv_pwrite(s->hd, cluster_offset, out_buf, out_len) != out_len) { + qemu_free(out_buf); + return -1; + } + } + + qemu_free(out_buf); + return 0; +} + +static void qcow_flush(BlockDriverState *bs) +{ + BDRVQcowState *s = bs->opaque; + bdrv_flush(s->hd); +} + +static int qcow_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +{ + BDRVQcowState *s = bs->opaque; + bdi->cluster_size = s->cluster_size; + return 0; +} + +BlockDriver bdrv_qcow = { + "qcow", + sizeof(BDRVQcowState), + qcow_probe, + qcow_open, + qcow_read, + qcow_write, + qcow_close, + qcow_create, + qcow_flush, + qcow_is_allocated, + NULL, + qcow_make_empty, + + .bdrv_write_compressed = qcow_write_compressed, + .bdrv_get_info = qcow_get_info, +}; diff --git a/block-raw.c b/block-raw.c new file mode 100644 index 0000000..294a680 --- /dev/null +++ b/block-raw.c @@ -0,0 +1,885 @@ +/* + * Block driver for RAW files + * + * Copyright (c) 2006 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifdef QEMU_OLD +#include "vl.h" +#else +#include "qemu-common.h" +#include "block.h" +#endif +#include "block_int.h" +#include +#ifndef _WIN32 + +#ifdef X49GP +#define QEMU_TOOL +#endif + +#ifdef CONFIG_COCOA +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#endif + +#ifdef __sun__ +#define _POSIX_PTHREAD_SEMANTICS 1 +#include +#include +#endif +#ifdef __linux__ +#include +#include +#include +#endif +#ifdef __FreeBSD__ +#include +#endif + +//#define DEBUG_FLOPPY + +#define FTYPE_FILE 0 +#define FTYPE_CD 1 +#define FTYPE_FD 2 + +/* if the FD is not accessed during that time (in ms), we try to + reopen it to see if the disk has been changed */ +#define FD_OPEN_TIMEOUT 1000 + +typedef struct BDRVRawState { + int fd; + int type; +#if defined(__linux__) + /* linux floppy specific */ + int fd_open_flags; + int64_t fd_open_time; + int64_t fd_error_time; + int fd_got_error; + int fd_media_changed; +#endif +} BDRVRawState; + +static int fd_open(BlockDriverState *bs); + +static int raw_open(BlockDriverState *bs, const char *filename, int flags) +{ + BDRVRawState *s = bs->opaque; + int fd, open_flags, ret; + + open_flags = O_BINARY; + if ((flags & BDRV_O_ACCESS) == O_RDWR) { + open_flags |= O_RDWR; + } else { + open_flags |= O_RDONLY; + bs->read_only = 1; + } + if (flags & BDRV_O_CREAT) + open_flags |= O_CREAT | O_TRUNC; + + s->type = FTYPE_FILE; + + fd = open(filename, open_flags, 0644); + if (fd < 0) { + ret = -errno; + if (ret == -EROFS) + ret = -EACCES; + return ret; + } + s->fd = fd; + return 0; +} + +/* XXX: use host sector size if necessary with: +#ifdef DIOCGSECTORSIZE + { + unsigned int sectorsize = 512; + if (!ioctl(fd, DIOCGSECTORSIZE, §orsize) && + sectorsize > bufsize) + bufsize = sectorsize; + } +#endif +#ifdef CONFIG_COCOA + u_int32_t blockSize = 512; + if ( !ioctl( fd, DKIOCGETBLOCKSIZE, &blockSize ) && blockSize > bufsize) { + bufsize = blockSize; + } +#endif +*/ + +static int raw_pread(BlockDriverState *bs, int64_t offset, + uint8_t *buf, int count) +{ + BDRVRawState *s = bs->opaque; + int ret; + + ret = fd_open(bs); + if (ret < 0) + return ret; + + lseek(s->fd, offset, SEEK_SET); + ret = read(s->fd, buf, count); + return ret; +} + +static int raw_pwrite(BlockDriverState *bs, int64_t offset, + const uint8_t *buf, int count) +{ + BDRVRawState *s = bs->opaque; + int ret; + + ret = fd_open(bs); + if (ret < 0) + return ret; + + lseek(s->fd, offset, SEEK_SET); + ret = write(s->fd, buf, count); + return ret; +} + +static void raw_close(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + if (s->fd >= 0) { + close(s->fd); + s->fd = -1; + } +} + +static int raw_truncate(BlockDriverState *bs, int64_t offset) +{ + BDRVRawState *s = bs->opaque; + if (s->type != FTYPE_FILE) + return -ENOTSUP; + if (ftruncate(s->fd, offset) < 0) + return -errno; + return 0; +} + +static int64_t raw_getlength(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + int fd = s->fd; + int64_t size; +#ifdef _BSD + struct stat sb; +#endif +#ifdef __sun__ + struct dk_minfo minfo; + int rv; +#endif + int ret; + + ret = fd_open(bs); + if (ret < 0) + return ret; + +#ifdef _BSD + if (!fstat(fd, &sb) && (S_IFCHR & sb.st_mode)) { +#ifdef DIOCGMEDIASIZE + if (ioctl(fd, DIOCGMEDIASIZE, (off_t *)&size)) +#endif +#ifdef CONFIG_COCOA + size = LONG_LONG_MAX; +#else + size = lseek(fd, 0LL, SEEK_END); +#endif + } else +#endif +#ifdef __sun__ + /* + * use the DKIOCGMEDIAINFO ioctl to read the size. + */ + rv = ioctl ( fd, DKIOCGMEDIAINFO, &minfo ); + if ( rv != -1 ) { + size = minfo.dki_lbsize * minfo.dki_capacity; + } else /* there are reports that lseek on some devices + fails, but irc discussion said that contingency + on contingency was overkill */ +#endif + { + size = lseek(fd, 0, SEEK_END); + } + return size; +} + +static int raw_create(const char *filename, int64_t total_size, + const char *backing_file, int flags) +{ + int fd; + + if (flags || backing_file) + return -ENOTSUP; + + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, + 0644); + if (fd < 0) + return -EIO; + ftruncate(fd, total_size * 512); + close(fd); + return 0; +} + +static void raw_flush(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + fsync(s->fd); +} + +BlockDriver bdrv_raw = { + "raw", + sizeof(BDRVRawState), + NULL, /* no probe for protocols */ + raw_open, + NULL, + NULL, + raw_close, + raw_create, + raw_flush, + .protocol_name = "file", + .bdrv_pread = raw_pread, + .bdrv_pwrite = raw_pwrite, + .bdrv_truncate = raw_truncate, + .bdrv_getlength = raw_getlength, +}; + +/***********************************************/ +/* host device */ + +#ifdef CONFIG_COCOA +static kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator ); +static kern_return_t GetBSDPath( io_iterator_t mediaIterator, char *bsdPath, CFIndex maxPathSize ); + +kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator ) +{ + kern_return_t kernResult; + mach_port_t masterPort; + CFMutableDictionaryRef classesToMatch; + + kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort ); + if ( KERN_SUCCESS != kernResult ) { + printf( "IOMasterPort returned %d\n", kernResult ); + } + + classesToMatch = IOServiceMatching( kIOCDMediaClass ); + if ( classesToMatch == NULL ) { + printf( "IOServiceMatching returned a NULL dictionary.\n" ); + } else { + CFDictionarySetValue( classesToMatch, CFSTR( kIOMediaEjectableKey ), kCFBooleanTrue ); + } + kernResult = IOServiceGetMatchingServices( masterPort, classesToMatch, mediaIterator ); + if ( KERN_SUCCESS != kernResult ) + { + printf( "IOServiceGetMatchingServices returned %d\n", kernResult ); + } + + return kernResult; +} + +kern_return_t GetBSDPath( io_iterator_t mediaIterator, char *bsdPath, CFIndex maxPathSize ) +{ + io_object_t nextMedia; + kern_return_t kernResult = KERN_FAILURE; + *bsdPath = '\0'; + nextMedia = IOIteratorNext( mediaIterator ); + if ( nextMedia ) + { + CFTypeRef bsdPathAsCFString; + bsdPathAsCFString = IORegistryEntryCreateCFProperty( nextMedia, CFSTR( kIOBSDNameKey ), kCFAllocatorDefault, 0 ); + if ( bsdPathAsCFString ) { + size_t devPathLength; + strcpy( bsdPath, _PATH_DEV ); + strcat( bsdPath, "r" ); + devPathLength = strlen( bsdPath ); + if ( CFStringGetCString( bsdPathAsCFString, bsdPath + devPathLength, maxPathSize - devPathLength, kCFStringEncodingASCII ) ) { + kernResult = KERN_SUCCESS; + } + CFRelease( bsdPathAsCFString ); + } + IOObjectRelease( nextMedia ); + } + + return kernResult; +} + +#endif + +static int hdev_open(BlockDriverState *bs, const char *filename, int flags) +{ + BDRVRawState *s = bs->opaque; + int fd, open_flags, ret; + +#ifdef CONFIG_COCOA + if (strstart(filename, "/dev/cdrom", NULL)) { + kern_return_t kernResult; + io_iterator_t mediaIterator; + char bsdPath[ MAXPATHLEN ]; + int fd; + + kernResult = FindEjectableCDMedia( &mediaIterator ); + kernResult = GetBSDPath( mediaIterator, bsdPath, sizeof( bsdPath ) ); + + if ( bsdPath[ 0 ] != '\0' ) { + strcat(bsdPath,"s0"); + /* some CDs don't have a partition 0 */ + fd = open(bsdPath, O_RDONLY | O_BINARY | O_LARGEFILE); + if (fd < 0) { + bsdPath[strlen(bsdPath)-1] = '1'; + } else { + close(fd); + } + filename = bsdPath; + } + + if ( mediaIterator ) + IOObjectRelease( mediaIterator ); + } +#endif + open_flags = O_BINARY; + if ((flags & BDRV_O_ACCESS) == O_RDWR) { + open_flags |= O_RDWR; + } else { + open_flags |= O_RDONLY; + bs->read_only = 1; + } + + s->type = FTYPE_FILE; +#if defined(__linux__) + if (strstart(filename, "/dev/cd", NULL)) { + /* open will not fail even if no CD is inserted */ + open_flags |= O_NONBLOCK; + s->type = FTYPE_CD; + } else if (strstart(filename, "/dev/fd", NULL)) { + s->type = FTYPE_FD; + s->fd_open_flags = open_flags; + /* open will not fail even if no floppy is inserted */ + open_flags |= O_NONBLOCK; + } +#endif + fd = open(filename, open_flags, 0644); + if (fd < 0) { + ret = -errno; + if (ret == -EROFS) + ret = -EACCES; + return ret; + } + s->fd = fd; +#if defined(__linux__) + /* close fd so that we can reopen it as needed */ + if (s->type == FTYPE_FD) { + close(s->fd); + s->fd = -1; + s->fd_media_changed = 1; + } +#endif + return 0; +} + +static int fd_open(BlockDriverState *bs) +{ + return 0; +} + +#if defined(__linux__) + +static int raw_is_inserted(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + int ret; + + switch(s->type) { + case FTYPE_CD: + ret = ioctl(s->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); + if (ret == CDS_DISC_OK) + return 1; + else + return 0; + break; + case FTYPE_FD: + ret = fd_open(bs); + return (ret >= 0); + default: + return 1; + } +} + +/* currently only used by fdc.c, but a CD version would be good too */ +static int raw_media_changed(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + + switch(s->type) { + case FTYPE_FD: + { + int ret; + /* XXX: we do not have a true media changed indication. It + does not work if the floppy is changed without trying + to read it */ + fd_open(bs); + ret = s->fd_media_changed; + s->fd_media_changed = 0; +#ifdef DEBUG_FLOPPY + printf("Floppy changed=%d\n", ret); +#endif + return ret; + } + default: + return -ENOTSUP; + } +} + +static int raw_eject(BlockDriverState *bs, int eject_flag) +{ + BDRVRawState *s = bs->opaque; + + switch(s->type) { + case FTYPE_CD: + if (eject_flag) { + if (ioctl (s->fd, CDROMEJECT, NULL) < 0) + perror("CDROMEJECT"); + } else { + if (ioctl (s->fd, CDROMCLOSETRAY, NULL) < 0) + perror("CDROMEJECT"); + } + break; + case FTYPE_FD: + { + int fd; + if (s->fd >= 0) { + close(s->fd); + s->fd = -1; + } + fd = open(bs->filename, s->fd_open_flags | O_NONBLOCK); + if (fd >= 0) { + if (ioctl(fd, FDEJECT, 0) < 0) + perror("FDEJECT"); + close(fd); + } + } + break; + default: + return -ENOTSUP; + } + return 0; +} + +static int raw_set_locked(BlockDriverState *bs, int locked) +{ + BDRVRawState *s = bs->opaque; + + switch(s->type) { + case FTYPE_CD: + if (ioctl (s->fd, CDROM_LOCKDOOR, locked) < 0) { + /* Note: an error can happen if the distribution automatically + mounts the CD-ROM */ + // perror("CDROM_LOCKDOOR"); + } + break; + default: + return -ENOTSUP; + } + return 0; +} + +#else + +static int raw_is_inserted(BlockDriverState *bs) +{ + return 1; +} + +static int raw_media_changed(BlockDriverState *bs) +{ + return -ENOTSUP; +} + +static int raw_eject(BlockDriverState *bs, int eject_flag) +{ + return -ENOTSUP; +} + +static int raw_set_locked(BlockDriverState *bs, int locked) +{ + return -ENOTSUP; +} + +#endif /* !linux */ + +BlockDriver bdrv_host_device = { + "host_device", + sizeof(BDRVRawState), + NULL, /* no probe for protocols */ + hdev_open, + NULL, + NULL, + raw_close, + NULL, + raw_flush, + .bdrv_pread = raw_pread, + .bdrv_pwrite = raw_pwrite, + .bdrv_getlength = raw_getlength, + + /* removable device support */ + .bdrv_is_inserted = raw_is_inserted, + .bdrv_media_changed = raw_media_changed, + .bdrv_eject = raw_eject, + .bdrv_set_locked = raw_set_locked, +}; + +#else /* _WIN32 */ + +/* XXX: use another file ? */ +#include + +#define FTYPE_FILE 0 +#define FTYPE_CD 1 +#define FTYPE_HARDDISK 2 + +typedef struct BDRVRawState { + HANDLE hfile; + int type; + char drive_path[16]; /* format: "d:\" */ +} BDRVRawState; + +int qemu_ftruncate64(int fd, int64_t length) +{ + LARGE_INTEGER li; + LONG high; + HANDLE h; + BOOL res; + + if ((GetVersion() & 0x80000000UL) && (length >> 32) != 0) + return -1; + + h = (HANDLE)_get_osfhandle(fd); + + /* get current position, ftruncate do not change position */ + li.HighPart = 0; + li.LowPart = SetFilePointer (h, 0, &li.HighPart, FILE_CURRENT); + if (li.LowPart == 0xffffffffUL && GetLastError() != NO_ERROR) + return -1; + + high = length >> 32; + if (!SetFilePointer(h, (DWORD) length, &high, FILE_BEGIN)) + return -1; + res = SetEndOfFile(h); + + /* back to old position */ + SetFilePointer(h, li.LowPart, &li.HighPart, FILE_BEGIN); + return res ? 0 : -1; +} + +static int set_sparse(int fd) +{ + DWORD returned; + return (int) DeviceIoControl((HANDLE)_get_osfhandle(fd), FSCTL_SET_SPARSE, + NULL, 0, NULL, 0, &returned, NULL); +} + +static int raw_open(BlockDriverState *bs, const char *filename, int flags) +{ + BDRVRawState *s = bs->opaque; + int access_flags, create_flags; + DWORD overlapped; + + s->type = FTYPE_FILE; + + if ((flags & BDRV_O_ACCESS) == O_RDWR) { + access_flags = GENERIC_READ | GENERIC_WRITE; + } else { + access_flags = GENERIC_READ; + } + if (flags & BDRV_O_CREAT) { + create_flags = CREATE_ALWAYS; + } else { + create_flags = OPEN_EXISTING; + } +#ifdef QEMU_TOOL + overlapped = FILE_ATTRIBUTE_NORMAL; +#else + overlapped = FILE_FLAG_OVERLAPPED; +#endif + s->hfile = CreateFile(filename, access_flags, + FILE_SHARE_READ, NULL, + create_flags, overlapped, NULL); + if (s->hfile == INVALID_HANDLE_VALUE) { + int err = GetLastError(); + + if (err == ERROR_ACCESS_DENIED) + return -EACCES; + return -1; + } + return 0; +} + +static int raw_pread(BlockDriverState *bs, int64_t offset, + uint8_t *buf, int count) +{ + BDRVRawState *s = bs->opaque; + OVERLAPPED ov; + DWORD ret_count; + int ret; + + memset(&ov, 0, sizeof(ov)); + ov.Offset = offset; + ov.OffsetHigh = offset >> 32; + ret = ReadFile(s->hfile, buf, count, &ret_count, &ov); + if (!ret) { + ret = GetOverlappedResult(s->hfile, &ov, &ret_count, TRUE); + if (!ret) + return -EIO; + else + return ret_count; + } + return ret_count; +} + +static int raw_pwrite(BlockDriverState *bs, int64_t offset, + const uint8_t *buf, int count) +{ + BDRVRawState *s = bs->opaque; + OVERLAPPED ov; + DWORD ret_count; + int ret; + + memset(&ov, 0, sizeof(ov)); + ov.Offset = offset; + ov.OffsetHigh = offset >> 32; + ret = WriteFile(s->hfile, buf, count, &ret_count, &ov); + if (!ret) { + ret = GetOverlappedResult(s->hfile, &ov, &ret_count, TRUE); + if (!ret) + return -EIO; + else + return ret_count; + } + return ret_count; +} + +static void raw_flush(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + FlushFileBuffers(s->hfile); +} + +static void raw_close(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + CloseHandle(s->hfile); +} + +static int raw_truncate(BlockDriverState *bs, int64_t offset) +{ + BDRVRawState *s = bs->opaque; + DWORD low, high; + + low = offset; + high = offset >> 32; + if (!SetFilePointer(s->hfile, low, &high, FILE_BEGIN)) + return -EIO; + if (!SetEndOfFile(s->hfile)) + return -EIO; + return 0; +} + +static int64_t raw_getlength(BlockDriverState *bs) +{ + BDRVRawState *s = bs->opaque; + LARGE_INTEGER l; + ULARGE_INTEGER available, total, total_free; + DISK_GEOMETRY dg; + DWORD count; + BOOL status; + + switch(s->type) { + case FTYPE_FILE: + l.LowPart = GetFileSize(s->hfile, &l.HighPart); + if (l.LowPart == 0xffffffffUL && GetLastError() != NO_ERROR) + return -EIO; + break; + case FTYPE_CD: + if (!GetDiskFreeSpaceEx(s->drive_path, &available, &total, &total_free)) + return -EIO; + l.QuadPart = total.QuadPart; + break; + case FTYPE_HARDDISK: + status = DeviceIoControl(s->hfile, IOCTL_DISK_GET_DRIVE_GEOMETRY, + NULL, 0, &dg, sizeof(dg), &count, NULL); + if (status != FALSE) { + l.QuadPart = dg.Cylinders.QuadPart * dg.TracksPerCylinder + * dg.SectorsPerTrack * dg.BytesPerSector; + } + break; + default: + return -EIO; + } + return l.QuadPart; +} + +static int raw_create(const char *filename, int64_t total_size, + const char *backing_file, int flags) +{ + int fd; + + if (flags || backing_file) + return -ENOTSUP; + + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, + 0644); + if (fd < 0) + return -EIO; + set_sparse(fd); + ftruncate(fd, total_size * 512); + close(fd); + return 0; +} + +BlockDriver bdrv_raw = { + "raw", + sizeof(BDRVRawState), + NULL, /* no probe for protocols */ + raw_open, + NULL, + NULL, + raw_close, + raw_create, + raw_flush, + + .protocol_name = "file", + .bdrv_pread = raw_pread, + .bdrv_pwrite = raw_pwrite, + .bdrv_truncate = raw_truncate, + .bdrv_getlength = raw_getlength, +}; + +/***********************************************/ +/* host device */ + +static int find_cdrom(char *cdrom_name, int cdrom_name_size) +{ + char drives[256], *pdrv = drives; + UINT type; + + memset(drives, 0, sizeof(drives)); + GetLogicalDriveStrings(sizeof(drives), drives); + while(pdrv[0] != '\0') { + type = GetDriveType(pdrv); + switch(type) { + case DRIVE_CDROM: + snprintf(cdrom_name, cdrom_name_size, "\\\\.\\%c:", pdrv[0]); + return 0; + break; + } + pdrv += lstrlen(pdrv) + 1; + } + return -1; +} + +static int find_device_type(BlockDriverState *bs, const char *filename) +{ + BDRVRawState *s = bs->opaque; + UINT type; + const char *p; + + if (strstart(filename, "\\\\.\\", &p) || + strstart(filename, "//./", &p)) { + if (stristart(p, "PhysicalDrive", NULL)) + return FTYPE_HARDDISK; + snprintf(s->drive_path, sizeof(s->drive_path), "%c:\\", p[0]); + type = GetDriveType(s->drive_path); + if (type == DRIVE_CDROM) + return FTYPE_CD; + else + return FTYPE_FILE; + } else { + return FTYPE_FILE; + } +} + +static int hdev_open(BlockDriverState *bs, const char *filename, int flags) +{ + BDRVRawState *s = bs->opaque; + int access_flags, create_flags; + DWORD overlapped; + char device_name[64]; + + if (strstart(filename, "/dev/cdrom", NULL)) { + if (find_cdrom(device_name, sizeof(device_name)) < 0) + return -ENOENT; + filename = device_name; + } else { + /* transform drive letters into device name */ + if (((filename[0] >= 'a' && filename[0] <= 'z') || + (filename[0] >= 'A' && filename[0] <= 'Z')) && + filename[1] == ':' && filename[2] == '\0') { + snprintf(device_name, sizeof(device_name), "\\\\.\\%c:", filename[0]); + filename = device_name; + } + } + s->type = find_device_type(bs, filename); + + if ((flags & BDRV_O_ACCESS) == O_RDWR) { + access_flags = GENERIC_READ | GENERIC_WRITE; + } else { + access_flags = GENERIC_READ; + } + create_flags = OPEN_EXISTING; + +#ifdef QEMU_TOOL + overlapped = FILE_ATTRIBUTE_NORMAL; +#else + overlapped = FILE_FLAG_OVERLAPPED; +#endif + s->hfile = CreateFile(filename, access_flags, + FILE_SHARE_READ, NULL, + create_flags, overlapped, NULL); + if (s->hfile == INVALID_HANDLE_VALUE) { + int err = GetLastError(); + + if (err == ERROR_ACCESS_DENIED) + return -EACCES; + return -1; + } + return 0; +} + +BlockDriver bdrv_host_device = { + "host_device", + sizeof(BDRVRawState), + NULL, /* no probe for protocols */ + hdev_open, + NULL, + NULL, + raw_close, + NULL, + raw_flush, + + .bdrv_pread = raw_pread, + .bdrv_pwrite = raw_pwrite, + .bdrv_getlength = raw_getlength, +}; +#endif /* _WIN32 */ diff --git a/block-vvfat.c b/block-vvfat.c new file mode 100644 index 0000000..33a610b --- /dev/null +++ b/block-vvfat.c @@ -0,0 +1,3045 @@ +/* vim:set shiftwidth=4 ts=8: */ +/* + * QEMU Block driver for virtual VFAT (shadows a local directory) + * + * Copyright (c) 2004,2005 Johannes E. Schindelin + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include +#include +#include +#ifdef QEMU_OLD +#include "vl.h" +#else +#include "qemu-common.h" +#include "block.h" +#endif +#include "block_int.h" + +#ifndef S_IWGRP +#define S_IWGRP 0 +#endif +#ifndef S_IWOTH +#define S_IWOTH 0 +#endif + +/* TODO: add ":bootsector=blabla.img:" */ +/* LATER TODO: add automatic boot sector generation from + BOOTEASY.ASM and Ranish Partition Manager + Note that DOS assumes the system files to be the first files in the + file system (test if the boot sector still relies on that fact)! */ +/* MAYBE TODO: write block-visofs.c */ + +#define DEBUG +#undef DEBUG_SECTORS + +#ifdef DEBUG + +#define DLOG(a) a + +#undef stderr +#define stderr STDERR +FILE* stderr = NULL; + +static void checkpoint(const char *where); + +#ifdef __MINGW32__ +void nonono(const char* file, int line, const char* msg) { + fprintf(stderr, "Nonono! %s:%d %s\n", file, line, msg); + exit(-5); +} +#undef assert +#define assert(a) do {if (!(a)) nonono(__FILE__, __LINE__, #a);}while(0) +#endif + +#else + +#define DLOG(a) + +#endif + +#define VOLUME_LABEL "X49GP-VVFAT" + +/* dynamic array functions */ +typedef struct array_t { + unsigned char* pointer; + unsigned int size,next,item_size; +} array_t; + +static inline void array_init(array_t* array,unsigned int item_size) +{ + array->pointer=0; + array->size=0; + array->next=0; + array->item_size=item_size; +} + +static inline void array_free(array_t* array) +{ + if(array->pointer) + free(array->pointer); + array->size=array->next=0; +} + +/* does not automatically grow */ +static inline void* array_get(array_t* array,unsigned int index) { + assert(index >= 0); + assert(index < array->next); + return array->pointer + index * array->item_size; +} + +static inline int array_ensure_allocated(array_t* array, int index) +{ + if((index + 1) * array->item_size > array->size) { + int new_size = (index + 32) * array->item_size; + array->pointer = realloc(array->pointer, new_size); + if (!array->pointer) + return -1; + array->size = new_size; + array->next = index + 1; + } + + return 0; +} + +static inline void* array_get_next(array_t* array) { + unsigned int next = array->next; + void* result; + + if (array_ensure_allocated(array, next) < 0) + return NULL; + + array->next = next + 1; + result = array_get(array, next); + + return result; +} + +static inline void* array_insert(array_t* array,unsigned int index,unsigned int count) { + if((array->next+count)*array->item_size>array->size) { + int increment=count*array->item_size; + array->pointer=realloc(array->pointer,array->size+increment); + if(!array->pointer) + return 0; + array->size+=increment; + } + memmove(array->pointer+(index+count)*array->item_size, + array->pointer+index*array->item_size, + (array->next-index)*array->item_size); + array->next+=count; + return array->pointer+index*array->item_size; +} + +/* this performs a "roll", so that the element which was at index_from becomes + * index_to, but the order of all other elements is preserved. */ +static inline int array_roll(array_t* array,int index_to,int index_from,int count) +{ + unsigned char* buf; + unsigned char* from; + unsigned char* to; + int is; + + if(!array || + index_to<0 || index_to>=array->next || + index_from<0 || index_from>=array->next) + return -1; + + if(index_to==index_from) + return 0; + + is=array->item_size; + from=array->pointer+index_from*is; + to=array->pointer+index_to*is; + buf=malloc(is*count); + memcpy(buf,from,is*count); + + if(index_to=0); + assert(count > 0); + assert(index + count <= array->next); + if(array_roll(array,array->next-1,index,count)) + return -1; + array->next -= count; + return 0; +} + +static int array_remove(array_t* array,int index) +{ + return array_remove_slice(array, index, 1); +} + +/* return the index for a given member */ +static int array_index(array_t* array, void* pointer) +{ + size_t offset = (unsigned char*)pointer - array->pointer; + assert(offset >= 0); + assert((offset % array->item_size) == 0); + assert(offset/array->item_size < array->next); + return offset/array->item_size; +} + +/* These structures are used to fake a disk and the VFAT filesystem. + * For this reason we need to use __attribute__((packed)). */ + +#define BOOTCODE_SIZE 448 +#define BOOTCODE_FAT32_SIZE 420 + +typedef struct msdos_volume_info { + uint8_t drive_number; + uint8_t ignored; + uint8_t signature; + uint32_t id; + uint8_t volume_label[11]; + uint8_t fs_type[8]; +} __attribute__((packed)) msdos_volume_info_t; + +typedef struct bootsector_t { + uint8_t jump[3]; + uint8_t name[8]; + uint16_t sector_size; + uint8_t sectors_per_cluster; + uint16_t reserved_sectors; + uint8_t number_of_fats; + uint16_t root_entries; + uint16_t total_sectors16; + uint8_t media_type; + uint16_t sectors_per_fat; + uint16_t sectors_per_track; + uint16_t number_of_heads; + uint32_t hidden_sectors; + uint32_t total_sectors; + union { + struct { + msdos_volume_info_t vi; + uint8_t boot_code[BOOTCODE_SIZE]; + } __attribute__((packed)) fat16; + struct { + uint32_t sectors_per_fat; + uint16_t flags; + uint8_t major,minor; + uint32_t first_cluster_of_root_directory; + uint16_t info_sector; + uint16_t backup_boot_sector; + uint16_t ignored[6]; + msdos_volume_info_t vi; + uint8_t boot_code[BOOTCODE_FAT32_SIZE]; + } __attribute__((packed)) fat32; + } u; + uint8_t magic[2]; +} __attribute__((packed)) bootsector_t; + +static +uint8_t dummy_boot_jump[3] = { 0xeb, 0x3c, 0x90 }; + +static +uint8_t dummy_boot_code[BOOTCODE_SIZE] = + "\x0e" /* push cs */ + "\x1f" /* pop ds */ + "\xbe\x5b\x7c" /* mov si, */ +/* write_msg: */ + "\xac" /* lodsb */ + "\x22\xc0" /* and al, al */ + "\x74\x0b" /* jz key_press */ + "\x56" /* push si */ + "\xb4\x0e" /* mov ah, 0eh */ + "\xbb\x07\x00" /* mov bx, 0007h */ + "\xcd\x10" /* int 10h */ + "\x5e" /* pop si */ + "\xeb\xf0" /* jmp write_msg */ +/* key_press: */ + "\x32\xe4" /* xor ah, ah */ + "\xcd\x16" /* int 16h */ + "\xcd\x19" /* int 19h */ +/* foo: */ + "\xeb\xfe" /* jmp foo */ +/* message_text: */ + "This is not a bootable disk. Please insert a bootable floppy and\r\n" + "press any key to try again...\r\n"; + +#define MSG_OFFSET_OFFSET 3 +#define MESSAGE_OFFSET 29 /* Offset of message in above code */ + +typedef struct partition_t { + uint8_t attributes; /* 0x80 = bootable */ + uint8_t start_head; + uint8_t start_sector; + uint8_t start_cylinder; + uint8_t fs_type; /* 0x1 = FAT12, 0x6 = FAT16, 0xb = FAT32 */ + uint8_t end_head; + uint8_t end_sector; + uint8_t end_cylinder; + uint32_t start_sector_long; + uint32_t end_sector_long; +} __attribute__((packed)) partition_t; + +typedef struct mbr_t { + uint8_t ignored[0x1be]; + partition_t partition[4]; + uint8_t magic[2]; +} __attribute__((packed)) mbr_t; + +typedef struct direntry_t { + uint8_t name[8]; + uint8_t extension[3]; + uint8_t attributes; + uint8_t reserved[2]; + uint16_t ctime; + uint16_t cdate; + uint16_t adate; + uint16_t begin_hi; + uint16_t mtime; + uint16_t mdate; + uint16_t begin; + uint32_t size; +} __attribute__((packed)) direntry_t; + +/* this structure are used to transparently access the files */ + +typedef struct mapping_t { + /* begin is the first cluster, end is the last+1 */ + uint32_t begin,end; + /* as s->directory is growable, no pointer may be used here */ + unsigned int dir_index; + /* the clusters of a file may be in any order; this points to the first */ + int first_mapping_index; + union { + /* offset is + * - the offset in the file (in clusters) for a file, or + * - the next cluster of the directory for a directory, and + * - the address of the buffer for a faked entry + */ + struct { + uint32_t offset; + } file; + struct { + int parent_mapping_index; + int first_dir_index; + } dir; + } info; + /* path contains the full path, i.e. it always starts with s->path */ + char* path; + + enum { MODE_UNDEFINED = 0, MODE_NORMAL = 1, MODE_MODIFIED = 2, + MODE_DIRECTORY = 4, MODE_FAKED = 8, + MODE_DELETED = 16, MODE_RENAMED = 32 } mode; + int read_only; +} mapping_t; + +#ifdef DEBUG +static void print_direntry(const struct direntry_t*); +static void print_mapping(const struct mapping_t* mapping); +#endif + +/* here begins the real VVFAT driver */ + +typedef struct BDRVVVFATState { + BlockDriverState* bs; /* pointer to parent */ + unsigned int first_sectors_number; /* 1 for a single partition, 0x40 for a disk with partition table */ + unsigned char first_sectors[0x40*0x200]; + + int fat_type; /* 16 or 32 */ + array_t fat,directory,mapping; + + unsigned int cluster_size; + unsigned int sectors_per_cluster; + unsigned int sectors_per_fat; + unsigned int sectors_of_root_directory; + uint32_t last_cluster_of_root_directory; + unsigned int faked_sectors; /* how many sectors are faked before file data */ + uint32_t sector_count; /* total number of sectors of the partition */ + uint32_t cluster_count; /* total number of clusters of this partition */ + uint32_t max_fat_value; + + int current_fd; + mapping_t* current_mapping; + unsigned char* cluster; /* points to current cluster */ + unsigned char* cluster_buffer; /* points to a buffer to hold temp data */ + unsigned int current_cluster; + + /* write support */ + char* qcow_filename; + BlockDriverState* qcow; + void* fat2; + char* used_clusters; + array_t commits; + const char* path; + int downcase_short_names; + QEMUTimer *write_timer; +} BDRVVVFATState; + + +static void init_mbr(BDRVVVFATState* s) +{ + /* TODO: if the files mbr.img and bootsect.img exist, use them */ + mbr_t* real_mbr=(mbr_t*)s->first_sectors; + partition_t* partition=&(real_mbr->partition[0]); + + memset(s->first_sectors,0,512); + + partition->attributes=0x80; /* bootable */ + partition->start_head=1; + partition->start_sector=1; + partition->start_cylinder=0; + /* FAT12/FAT16/FAT32 */ + partition->fs_type=(s->fat_type==12?0x1:s->fat_type==16?0x6:0xb); + partition->end_head=s->bs->heads-1; + partition->end_sector=0xff; /* end sector & upper 2 bits of cylinder */; + partition->end_cylinder=0xff; /* lower 8 bits of end cylinder */; + partition->start_sector_long=cpu_to_le32(s->bs->secs); + partition->end_sector_long=cpu_to_le32(s->sector_count); + + real_mbr->magic[0]=0x55; real_mbr->magic[1]=0xaa; +} + +/* direntry functions */ + +/* dest is assumed to hold 258 bytes, and pads with 0xffff up to next multiple of 26 */ +static inline int short2long_name(char* dest,const char* src) +{ + int i; + for(i=0;i<129 && src[i];i++) { + dest[2*i]=src[i]; + dest[2*i+1]=0; + } + dest[2*i]=dest[2*i+1]=0; + for(i=2*i+2;(i%26);i++) + dest[i]=0xff; + return i; +} + +static inline direntry_t* create_long_filename(BDRVVVFATState* s,const char* filename) +{ + char buffer[258]; + int length=short2long_name(buffer,filename), + number_of_entries=(length+25)/26,i; + direntry_t* entry; + + for(i=0;idirectory)); + entry->attributes=0xf; + entry->reserved[0]=0; + entry->begin=0; + entry->name[0]=(number_of_entries-i)|(i==0?0x40:0); + } + for(i=0;idirectory),s->directory.next-1-(i/26)); + entry->name[offset]=buffer[i]; + } + return array_get(&(s->directory),s->directory.next-number_of_entries); +} + +static char is_free(const direntry_t* direntry) +{ + /* return direntry->name[0]==0 ; */ + return direntry->attributes == 0 || direntry->name[0]==0xe5; +} + +static char is_volume_label(const direntry_t* direntry) +{ + return (direntry->attributes & 0x1f) == 0x08; +} + +static char is_long_name(const direntry_t* direntry) +{ + return direntry->attributes == 0xf; +} + +static char is_short_name(const direntry_t* direntry) +{ + return !is_volume_label(direntry) && !is_long_name(direntry) + && !is_free(direntry); +} + +static char is_directory(const direntry_t* direntry) +{ + return direntry->attributes & 0x10 && direntry->name[0] != 0xe5; +} + +static inline char is_dot(const direntry_t* direntry) +{ + return is_short_name(direntry) && direntry->name[0] == '.'; +} + +static char is_file(const direntry_t* direntry) +{ + return is_short_name(direntry) && !is_directory(direntry); +} + +static inline uint32_t begin_of_direntry(const direntry_t* direntry) +{ + return le16_to_cpu(direntry->begin)|(le16_to_cpu(direntry->begin_hi)<<16); +} + +static inline uint32_t filesize_of_direntry(const direntry_t* direntry) +{ + return le32_to_cpu(direntry->size); +} + +static void set_begin_of_direntry(direntry_t* direntry, uint32_t begin) +{ + direntry->begin = cpu_to_le16(begin & 0xffff); + direntry->begin_hi = cpu_to_le16((begin >> 16) & 0xffff); +} + +/* fat functions */ + +static inline uint8_t fat_chksum(const direntry_t* entry) +{ + uint8_t chksum=0; + int i; + + for(i=0;i<11;i++) + chksum=(((chksum&0xfe)>>1)|((chksum&0x01)?0x80:0)) + +(unsigned char)entry->name[i]; + + return chksum; +} + +/* if return_time==0, this returns the fat_date, else the fat_time */ +static uint16_t fat_datetime(time_t time,int return_time) { + struct tm* t; +#ifdef _WIN32 + t=localtime(&time); /* this is not thread safe */ +#else + struct tm t1; + t=&t1; + localtime_r(&time,t); +#endif + if(return_time) + return cpu_to_le16((t->tm_sec/2)|(t->tm_min<<5)|(t->tm_hour<<11)); + return cpu_to_le16((t->tm_mday)|((t->tm_mon+1)<<5)|((t->tm_year-80)<<9)); +} + +static inline void fat_set(BDRVVVFATState* s,unsigned int cluster,uint32_t value) +{ + if(s->fat_type==32) { + uint32_t* entry=array_get(&(s->fat),cluster); + DLOG(fprintf(stderr, "%s:%u: cluster %u: %08x\n", __FUNCTION__, __LINE__, cluster, value)); + *entry=cpu_to_le32(value); + } else if(s->fat_type==16) { + uint16_t* entry=array_get(&(s->fat),cluster); + DLOG(fprintf(stderr, "%s:%u: cluster %u: %04x\n", __FUNCTION__, __LINE__, cluster, value & 0xffff)); + *entry=cpu_to_le16(value&0xffff); + } else { + int offset = (cluster*3/2); + unsigned char* p = array_get(&(s->fat), offset); + DLOG(fprintf(stderr, "%s:%u: cluster %u: %03x\n", __FUNCTION__, __LINE__, cluster, value & 0xfff)); + switch (cluster&1) { + case 0: + p[0] = value&0xff; + p[1] = (p[1]&0xf0) | ((value>>8)&0xf); + break; + case 1: + p[0] = (p[0]&0xf) | ((value&0xf)<<4); + p[1] = (value>>4); + break; + } + } +} + +static inline uint32_t fat_get(BDRVVVFATState* s,unsigned int cluster) +{ + if(s->fat_type==32) { + uint32_t* entry=array_get(&(s->fat),cluster); + return le32_to_cpu(*entry); + } else if(s->fat_type==16) { + uint16_t* entry=array_get(&(s->fat),cluster); + return le16_to_cpu(*entry); + } else { + const uint8_t* x=s->fat.pointer+cluster*3/2; + return ((x[0]|(x[1]<<8))>>(cluster&1?4:0))&0x0fff; + } +} + +static inline int fat_eof(BDRVVVFATState* s,uint32_t fat_entry) +{ + if(fat_entry>s->max_fat_value-8) + return -1; + return 0; +} + +static inline void init_fat(BDRVVVFATState* s) +{ + if (s->fat_type == 12) { + array_init(&(s->fat),1); + array_ensure_allocated(&(s->fat), + s->sectors_per_fat * 0x200 * 3 / 2 - 1); + } else { + array_init(&(s->fat),(s->fat_type==32?4:2)); + array_ensure_allocated(&(s->fat), + s->sectors_per_fat * 0x200 / s->fat.item_size - 1); + } + memset(s->fat.pointer,0,s->fat.size); + + switch(s->fat_type) { + case 12: s->max_fat_value=0xfff; break; + case 16: s->max_fat_value=0xffff; break; + case 32: s->max_fat_value=0x0fffffff; break; + default: s->max_fat_value=0; /* error... */ + } +} + +/* TODO: in create_short_filename, 0xe5->0x05 is not yet handled! */ +/* TODO: in parse_short_filename, 0x05->0xe5 is not yet handled! */ +static inline direntry_t* create_short_and_long_name(BDRVVVFATState* s, + unsigned int directory_start, const char* filename, int is_dot) +{ + int i,j,long_index=s->directory.next; + direntry_t* entry=0; + direntry_t* entry_long=0; + + if(is_dot) { + entry=array_get_next(&(s->directory)); + memset(entry->name,' ',11); + memcpy(entry->name,filename,strlen(filename)); + return entry; + } + + entry_long=create_long_filename(s,filename); + + i = strlen(filename); + for(j = i - 1; j>0 && filename[j]!='.';j--); + if (j > 0) + i = (j > 8 ? 8 : j); + else if (i > 8) + i = 8; + + entry=array_get_next(&(s->directory)); + memset(entry->name,' ',11); + strncpy((char *) entry->name,filename,i); + + if(j > 0) + for (i = 0; i < 3 && filename[j+1+i]; i++) + entry->extension[i] = filename[j+1+i]; + + /* upcase & remove unwanted characters */ + for(i=10;i>=0;i--) { + if(i==10 || i==7) for(;i>0 && entry->name[i]==' ';i--); + if(entry->name[i]<=' ' || entry->name[i]>0x7f + || strchr(".*?<>|\":/\\[];,+='",entry->name[i])) + entry->name[i]='_'; + else if(entry->name[i]>='a' && entry->name[i]<='z') + entry->name[i]+='A'-'a'; + } + + /* mangle duplicates */ + while(1) { + direntry_t* entry1=array_get(&(s->directory),directory_start); + int j; + + for(;entry1name,entry->name,11)) + break; /* found dupe */ + if(entry1==entry) /* no dupe found */ + break; + + /* use all 8 characters of name */ + if(entry->name[7]==' ') { + int j; + for(j=6;j>0 && entry->name[j]==' ';j--) + entry->name[j]='~'; + } + + /* increment number */ + for(j=7;j>0 && entry->name[j]=='9';j--) + entry->name[j]='0'; + if(j>0) { + if(entry->name[j]<'0' || entry->name[j]>'9') + entry->name[j]='0'; + else + entry->name[j]++; + } + } + + /* calculate checksum; propagate to long name */ + if(entry_long) { + uint8_t chksum=fat_chksum(entry); + + /* calculate anew, because realloc could have taken place */ + entry_long=array_get(&(s->directory),long_index); + while(entry_longreserved[1]=chksum; + entry_long++; + } + } + + return entry; +} + +/* + * Read a directory. (the index of the corresponding mapping must be passed). + */ +static int read_directory(BDRVVVFATState* s, int mapping_index) +{ + mapping_t* mapping = array_get(&(s->mapping), mapping_index); + direntry_t* direntry; + const char* dirname = mapping->path; + int first_cluster = mapping->begin; + int parent_index = mapping->info.dir.parent_mapping_index; + mapping_t* parent_mapping = (mapping_t*) + (parent_index >= 0 ? array_get(&(s->mapping), parent_index) : 0); + int first_cluster_of_parent = parent_mapping ? parent_mapping->begin : -1; + + DIR* dir=opendir(dirname); + struct dirent* entry; + int i; + + assert(mapping->mode & MODE_DIRECTORY); + + if(!dir) { + mapping->end = mapping->begin; + return -1; + } + + i = mapping->info.dir.first_dir_index = + first_cluster == 0 ? 0 : s->directory.next; + + /* actually read the directory, and allocate the mappings */ + while((entry=readdir(dir))) { + unsigned int length=strlen(dirname)+2+strlen(entry->d_name); + char* buffer; + direntry_t* direntry; + struct stat st; + int is_dot=!strcmp(entry->d_name,"."); + int is_dotdot=!strcmp(entry->d_name,".."); + + if(first_cluster == 0 && (is_dotdot || is_dot)) + continue; + + buffer=(char*)malloc(length); + assert(buffer); + snprintf(buffer,length,"%s/%s",dirname,entry->d_name); + + if(stat(buffer,&st)<0) { + free(buffer); + continue; + } + + DLOG(fprintf(stderr, "%s:%u: create direntry for '%s'\n", __FUNCTION__, __LINE__, entry->d_name)); + + /* create directory entry for this file */ + direntry=create_short_and_long_name(s, i, entry->d_name, + is_dot || is_dotdot); + direntry->attributes=(S_ISDIR(st.st_mode)?0x10:0x20); + direntry->reserved[0]=direntry->reserved[1]=0; + direntry->ctime=fat_datetime(st.st_ctime,1); + direntry->cdate=fat_datetime(st.st_ctime,0); + direntry->adate=fat_datetime(st.st_atime,0); + direntry->begin_hi=0; + direntry->mtime=fat_datetime(st.st_mtime,1); + direntry->mdate=fat_datetime(st.st_mtime,0); + if(is_dotdot) + set_begin_of_direntry(direntry, first_cluster_of_parent); + else if(is_dot) + set_begin_of_direntry(direntry, first_cluster); + else + direntry->begin=0; /* do that later */ + if (st.st_size > 0x7fffffff) { + fprintf(stderr, "File %s is larger than 2GB\n", buffer); + free(buffer); + return -2; + } + direntry->size=cpu_to_le32(S_ISDIR(st.st_mode)?0:st.st_size); + + /* create mapping for this file */ + if(!is_dot && !is_dotdot && (S_ISDIR(st.st_mode) || st.st_size)) { + DLOG(fprintf(stderr, "%s:%u: create mapping for '%s'\n", __FUNCTION__, __LINE__, entry->d_name)); + + s->current_mapping=(mapping_t*)array_get_next(&(s->mapping)); + s->current_mapping->begin=0; + s->current_mapping->end=st.st_size; + /* + * we get the direntry of the most recent direntry, which + * contains the short name and all the relevant information. + */ + s->current_mapping->dir_index=s->directory.next-1; + s->current_mapping->first_mapping_index = -1; + if (S_ISDIR(st.st_mode)) { + s->current_mapping->mode = MODE_DIRECTORY; + s->current_mapping->info.dir.parent_mapping_index = + mapping_index; + } else { + s->current_mapping->mode = MODE_UNDEFINED; + s->current_mapping->info.file.offset = 0; + } + s->current_mapping->path=buffer; + s->current_mapping->read_only = + (st.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH)) == 0; + } + } + closedir(dir); + + /* fill with zeroes up to the end of the cluster */ + while(s->directory.next%(0x10*s->sectors_per_cluster)) { + direntry_t* direntry=array_get_next(&(s->directory)); + memset(direntry,0,sizeof(direntry_t)); + } + +/* TODO: if there are more entries, bootsector has to be adjusted! */ +#define ROOT_ENTRIES (0x02 * 0x10 * s->sectors_per_cluster) + if (mapping_index == 0 && s->directory.next < ROOT_ENTRIES) { + /* root directory */ + int cur = s->directory.next; + array_ensure_allocated(&(s->directory), ROOT_ENTRIES - 1); + memset(array_get(&(s->directory), cur), 0, + (ROOT_ENTRIES - cur) * sizeof(direntry_t)); + } + + /* reget the mapping, since s->mapping was possibly realloc()ed */ + mapping = (mapping_t*)array_get(&(s->mapping), mapping_index); + first_cluster += (s->directory.next - mapping->info.dir.first_dir_index) + * 0x20 / s->cluster_size; + mapping->end = first_cluster; + + direntry = (direntry_t*)array_get(&(s->directory), mapping->dir_index); + set_begin_of_direntry(direntry, mapping->begin); + + return 0; +} + +static inline int32_t sector2cluster(BDRVVVFATState* s, off_t sector_num) +{ + return (sector_num - s->faked_sectors) / s->sectors_per_cluster; +} + +static inline off_t cluster2sector(BDRVVVFATState* s, uint32_t cluster_num) +{ + return s->faked_sectors + s->sectors_per_cluster * cluster_num; +} + +static inline uint32_t sector_offset_in_cluster(BDRVVVFATState* s,off_t sector_num) +{ + return (sector_num-s->first_sectors_number-2*s->sectors_per_fat)%s->sectors_per_cluster; +} + +#ifdef DBG +static direntry_t* get_direntry_for_mapping(BDRVVVFATState* s,mapping_t* mapping) +{ + if(mapping->mode==MODE_UNDEFINED) + return 0; + return (direntry_t*)(s->directory.pointer+sizeof(direntry_t)*mapping->dir_index); +} +#endif + +static int init_directories(BDRVVVFATState* s, + const char* dirname) +{ + msdos_volume_info_t *vi; + bootsector_t* bootsector; + mapping_t* mapping; + unsigned int i; + unsigned int cluster; + direntry_t *entry; + struct stat st; + size_t namelen; + + memset(&(s->first_sectors[0]),0,0x40*0x200); + + s->cluster_size = s->sectors_per_cluster * 0x200; + s->cluster_buffer = malloc(s->cluster_size); + assert(s->cluster_buffer); + + /* + * The formula: sc = spf+1+spf*spc*(512*8/fat_type), + * where sc is sector_count, + * spf is sectors_per_fat, + * spc is sectors_per_clusters, and + * fat_type = 12, 16 or 32. + */ + i = 1 + s->sectors_per_cluster * 0x200 * 8 / s->fat_type; + s->sectors_per_fat = (s->sector_count + i) / i; /* round up */ + + array_init(&(s->mapping),sizeof(mapping_t)); + array_init(&(s->directory),sizeof(direntry_t)); + + DLOG(fprintf(stderr, "%s:%u: create direntry for '%s'\n", __FUNCTION__, __LINE__, dirname)); + + /* add volume label */ + stat(dirname, &st); + entry = array_get_next(&(s->directory)); + entry->attributes = 0x08; /* archive | volume label */ + memset(entry->name, ' ', 11); + namelen = strlen(VOLUME_LABEL); + if (namelen > 11) + namelen = 11; + memcpy(entry->name, VOLUME_LABEL, namelen); + entry->reserved[0] = entry->reserved[1] = 0; + entry->ctime = fat_datetime(st.st_ctime, 1); + entry->cdate = fat_datetime(st.st_ctime, 0); + entry->adate = fat_datetime(st.st_atime, 0); + entry->begin_hi = 0; + entry->mtime = fat_datetime(st.st_ctime, 1); + entry->mdate = fat_datetime(st.st_ctime, 0); + entry->begin = 0; + entry->size = 0; + + /* Now build FAT, and write back information into directory */ + init_fat(s); + + s->faked_sectors=s->first_sectors_number+s->sectors_per_fat*2; + s->cluster_count=sector2cluster(s, s->sector_count); + + DLOG(fprintf(stderr, "%s:%u: create mapping for '%s'\n", __FUNCTION__, __LINE__, dirname)); + + mapping = array_get_next(&(s->mapping)); + mapping->begin = 0; + mapping->dir_index = 0; + mapping->info.dir.parent_mapping_index = -1; + mapping->first_mapping_index = -1; + mapping->path = strdup(dirname); + i = strlen(mapping->path); + if (i > 0 && mapping->path[i - 1] == '/') + mapping->path[i - 1] = '\0'; + mapping->mode = MODE_DIRECTORY; + mapping->read_only = 0; + s->path = mapping->path; + + for (i = 0, cluster = 0; i < s->mapping.next; i++) { + int j; + /* MS-DOS expects the FAT to be 0 for the root directory + * (except for the media byte). */ + /* LATER TODO: still true for FAT32? */ + int fix_fat = (i != 0); + mapping = array_get(&(s->mapping), i); + + if (mapping->mode & MODE_DIRECTORY) { + mapping->begin = cluster; + if(read_directory(s, i)) { + fprintf(stderr, "Could not read directory %s\n", + mapping->path); + return -1; + } + mapping = array_get(&(s->mapping), i); + } else { + assert(mapping->mode == MODE_UNDEFINED); + mapping->mode=MODE_NORMAL; + mapping->begin = cluster; + if (mapping->end > 0) { + direntry_t* direntry = array_get(&(s->directory), + mapping->dir_index); + + mapping->end = cluster + 1 + (mapping->end-1)/s->cluster_size; + set_begin_of_direntry(direntry, mapping->begin); + } else { + mapping->end = cluster + 1; + fix_fat = 0; + } + } + + assert(mapping->begin < mapping->end); + + /* fix fat for entry */ + if (fix_fat) { + for(j = mapping->begin; j < mapping->end - 1; j++) + fat_set(s, j, j+1); + fat_set(s, mapping->end - 1, s->max_fat_value); + } + + /* next free cluster */ + cluster = mapping->end; + + if(cluster > s->cluster_count) { + fprintf(stderr,"Directory does not fit in FAT%d\n",s->fat_type); + return -1; + } + } + + mapping = array_get(&(s->mapping), 0); + s->sectors_of_root_directory = mapping->end * s->sectors_per_cluster; + s->last_cluster_of_root_directory = mapping->end; + + /* the FAT signature */ + switch (s->fat_type) { + case 12: fat_set(s, 0, s->sector_count == 5760 ? 0xff9 : 0xff8); break; + case 16: fat_set(s, 0, 0xfff8); break; + case 32: fat_set(s, 0, 0x0ffffff0); break; + default: fat_set(s,0,s->max_fat_value); break; + } + fat_set(s,1,s->max_fat_value); + + s->current_mapping = NULL; + + bootsector=(bootsector_t*)(s->first_sectors+(s->first_sectors_number-1)*0x200); + + memcpy(bootsector->jump, dummy_boot_jump, 3); + bootsector->jump[1] = ((s->fat_type == 32 ? + (char *) &bootsector->u.fat32.boot_code : + (char *) &bootsector->u.fat16.boot_code) - + (char *) &bootsector) - 2; + if (s->fat_type == 32) { + int offset = (char *) &bootsector->u.fat32.boot_code - + (char *) &bootsector + MESSAGE_OFFSET + 0x7c00; + memcpy(bootsector->u.fat32.boot_code, dummy_boot_code, + BOOTCODE_FAT32_SIZE); + bootsector->u.fat32.boot_code[MSG_OFFSET_OFFSET + 0] = offset & 0xff; + bootsector->u.fat32.boot_code[MSG_OFFSET_OFFSET + 1] = offset >> 8; + } else { + memcpy(bootsector->u.fat16.boot_code, dummy_boot_code, BOOTCODE_SIZE); + } + + memcpy(bootsector->name,"X49GP ",8); + bootsector->sector_size=cpu_to_le16(0x200); + bootsector->sectors_per_cluster=s->sectors_per_cluster; + bootsector->reserved_sectors=cpu_to_le16(1); + bootsector->number_of_fats=0x2; /* number of FATs */ + bootsector->root_entries=cpu_to_le16(s->sectors_of_root_directory*0x10); + bootsector->total_sectors16=s->sector_count>0xffff?0:cpu_to_le16(s->sector_count); + bootsector->media_type=(s->fat_type!=12?0xf8:s->sector_count==5760?0xf9:0xf8); /* media descriptor */ + bootsector->sectors_per_fat=cpu_to_le16(s->sectors_per_fat); + bootsector->sectors_per_track=cpu_to_le16(s->bs->secs); + bootsector->number_of_heads=cpu_to_le16(s->bs->heads); + bootsector->hidden_sectors=cpu_to_le32(s->first_sectors_number==1?0:0x3f); + bootsector->total_sectors=cpu_to_le32(s->sector_count>0xffff?s->sector_count:0); + + /* LATER TODO: if FAT32, this is wrong */ + if (s->fat_type == 32) { + vi = &bootsector->u.fat32.vi; + memcpy(vi->fs_type, "FAT32 ", 8); + } else { + vi = &bootsector->u.fat16.vi; + memcpy(vi->fs_type, (s->fat_type == 12 ? "FAT12 " : "FAT16 "), 8); + } + + /* assume this is hda (TODO) */ + vi->drive_number = s->fat_type == 12 ? 0 : 0x80; + vi->signature = 0x29; + vi->id = cpu_to_le32(0xfabe1afd); + memset(vi->volume_label, ' ', 11); + namelen = strlen(VOLUME_LABEL); + if (namelen > 11) + namelen = 11; + memcpy(vi->volume_label, VOLUME_LABEL, namelen); + + bootsector->magic[0]=0x55; bootsector->magic[1]=0xaa; + return 0; +} + +#ifdef DEBUG +static BDRVVVFATState *vvv = NULL; +#endif + +static int enable_write(BDRVVVFATState *s); +static int is_consistent(BDRVVVFATState *s); + +static int vvfat_open(BlockDriverState *bs, const char* dirname, int flags) +{ + BDRVVVFATState *s = bs->opaque; + int floppy = 0; + int i; + +#ifdef DEBUG + vvv = s; +#endif + + DLOG(if (stderr == NULL) { + stderr = fopen("vvfat.log", "a"); + setbuf(stderr, NULL); + }) + + s->bs = bs; + + s->fat_type=16; + /* LATER TODO: if FAT32, adjust */ + s->sector_count=0xec04f; + s->sectors_per_cluster=0x10; + /* LATER TODO: this could be wrong for FAT32 */ + bs->cyls=1023; bs->heads=15; bs->secs=63; + + s->current_cluster=0xffffffff; + + s->first_sectors_number=0x40; + /* read only is the default for safety */ + bs->read_only = 1; + s->qcow = NULL; + s->qcow_filename = NULL; + s->fat2 = NULL; + s->downcase_short_names = 1; + + if (!strstart(dirname, "fat:", NULL)) { + DLOG(fprintf(stderr, "%s:%u: dirname '%s' not \"fat:\"\n", __FUNCTION__, __LINE__, dirname)); + return -1; + } + + if (strstr(dirname, ":rw:")) { + if (enable_write(s)) { + return -1; + } + bs->read_only = 0; + } + + if (strstr(dirname, ":floppy:")) { + floppy = 1; + s->fat_type = 12; + s->first_sectors_number = 1; + s->sectors_per_cluster=2; + bs->cyls = 80; bs->heads = 2; bs->secs = 36; + } + + if (strstr(dirname, ":32:")) { + fprintf(stderr, "Big fat greek warning: FAT32 has not been tested. You are welcome to do so!\n"); + s->fat_type = 32; + } else if (strstr(dirname, ":16:")) { + s->fat_type = 16; + } else if (strstr(dirname, ":12:")) { + s->fat_type = 12; + s->sector_count=2880; + } + + i = strrchr(dirname, ':') - dirname; + assert(i >= 3); + if (dirname[i-2] == ':' && isalpha(dirname[i-1])) + /* workaround for DOS drive names */ + dirname += i-1; + else + dirname += i+1; + + bs->total_sectors=bs->cyls*bs->heads*bs->secs; + if (s->sector_count > bs->total_sectors) + s->sector_count = bs->total_sectors; + + if (init_directories(s, dirname)) { + DLOG(fprintf(stderr, "%s:%u: init_directories failed\n", __FUNCTION__, __LINE__)); + return -1; + } + + if(s->first_sectors_number==0x40) + init_mbr(s); + + /* for some reason or other, MS-DOS does not like to know about CHS... */ + if (floppy) + bs->heads = bs->cyls = bs->secs = 0; + + // assert(is_consistent(s)); + + DLOG(fprintf(stderr, "%s:%u: return 0\n", __FUNCTION__, __LINE__)); + return 0; +} + +static inline void vvfat_close_current_file(BDRVVVFATState *s) +{ + if(s->current_mapping) { + s->current_mapping = NULL; + if (s->current_fd) { + close(s->current_fd); + s->current_fd = 0; + } + } + s->current_cluster = -1; +} + +/* mappings between index1 and index2-1 are supposed to be ordered + * return value is the index of the last mapping for which end>cluster_num + */ +static inline int find_mapping_for_cluster_aux(BDRVVVFATState* s,int cluster_num,int index1,int index2) +{ + int index3=index1+1; + while(1) { + mapping_t* mapping; + index3=(index1+index2)/2; + mapping=array_get(&(s->mapping),index3); + assert(mapping->begin < mapping->end); + if(mapping->begin>=cluster_num) { + assert(index2!=index3 || index2==0); + if(index2==index3) + return index1; + index2=index3; + } else { + if(index1==index3) + return mapping->end<=cluster_num ? index2 : index1; + index1=index3; + } + assert(index1<=index2); + DLOG(mapping=array_get(&(s->mapping),index1); + assert(mapping->begin<=cluster_num); + assert(index2 >= s->mapping.next || + ((mapping = array_get(&(s->mapping),index2)) && + mapping->end>cluster_num))); + } +} + +static inline mapping_t* find_mapping_for_cluster(BDRVVVFATState* s,int cluster_num) +{ + int index=find_mapping_for_cluster_aux(s,cluster_num,0,s->mapping.next); + mapping_t* mapping; + if(index>=s->mapping.next) + return 0; + mapping=array_get(&(s->mapping),index); + if(mapping->begin>cluster_num) + return 0; + assert(mapping->begin<=cluster_num && mapping->end>cluster_num); + return mapping; +} + +/* + * This function simply compares path == mapping->path. Since the mappings + * are sorted by cluster, this is expensive: O(n). + */ +static inline mapping_t* find_mapping_for_path(BDRVVVFATState* s, + const char* path) +{ + int i; + + for (i = 0; i < s->mapping.next; i++) { + mapping_t* mapping = array_get(&(s->mapping), i); + if (mapping->first_mapping_index < 0 && + !strcmp(path, mapping->path)) + return mapping; + } + + return NULL; +} + +static int open_file(BDRVVVFATState* s,mapping_t* mapping) +{ + if(!mapping) + return -1; + if(!s->current_mapping || + strcmp(s->current_mapping->path,mapping->path)) { + /* open file */ + int fd = open(mapping->path, O_RDONLY | O_BINARY | O_LARGEFILE); + if(fd<0) + return -1; + vvfat_close_current_file(s); + s->current_fd = fd; + s->current_mapping = mapping; + } + return 0; +} + +static inline int read_cluster(BDRVVVFATState *s,int cluster_num) +{ + if(s->current_cluster != cluster_num) { + int result=0; + off_t offset; + assert(!s->current_mapping || s->current_fd || (s->current_mapping->mode & MODE_DIRECTORY)); + if(!s->current_mapping + || s->current_mapping->begin>cluster_num + || s->current_mapping->end<=cluster_num) { + /* binary search of mappings for file */ + mapping_t* mapping=find_mapping_for_cluster(s,cluster_num); + + assert(!mapping || (cluster_num>=mapping->begin && cluster_numend)); + + if (mapping && mapping->mode & MODE_DIRECTORY) { + vvfat_close_current_file(s); + s->current_mapping = mapping; +read_cluster_directory: + offset = s->cluster_size*(cluster_num-s->current_mapping->begin); + s->cluster = s->directory.pointer+offset + + 0x20*s->current_mapping->info.dir.first_dir_index; + assert(((s->cluster-(unsigned char*)s->directory.pointer)%s->cluster_size)==0); + assert(s->cluster+s->cluster_size <= s->directory.pointer+s->directory.next*s->directory.item_size); + s->current_cluster = cluster_num; + return 0; + } + + if(open_file(s,mapping)) + return -2; + } else if (s->current_mapping->mode & MODE_DIRECTORY) + goto read_cluster_directory; + + assert(s->current_fd); + + offset=s->cluster_size*(cluster_num-s->current_mapping->begin)+s->current_mapping->info.file.offset; + if(lseek(s->current_fd, offset, SEEK_SET)!=offset) + return -3; + s->cluster=s->cluster_buffer; + result=read(s->current_fd,s->cluster,s->cluster_size); + if(result<0) { + s->current_cluster = -1; + return -1; + } + s->current_cluster = cluster_num; + } + return 0; +} + +#ifdef DEBUG +static void hexdump(const void* address, uint32_t len) +{ + const unsigned char* p = address; + int i, j; + + for (i = 0; i < len; i += 16) { + for (j = 0; j < 16 && i + j < len; j++) + fprintf(stderr, "%02x ", p[i + j]); + for (; j < 16; j++) + fprintf(stderr, " "); + fprintf(stderr, " "); + for (j = 0; j < 16 && i + j < len; j++) + fprintf(stderr, "%c", (p[i + j] < ' ' || p[i + j] > 0x7f) ? '.' : p[i + j]); + fprintf(stderr, "\n"); + } +} + +static void print_direntry(const direntry_t* direntry) +{ + int j = 0; + char buffer[1024]; + + fprintf(stderr, "direntry 0x%p: ", direntry); + if(!direntry) + return; + if(is_long_name(direntry)) { + unsigned char* c=(unsigned char*)direntry; + int i; + for(i=1;i<11 && c[i] && c[i]!=0xff;i+=2) +#define ADD_CHAR(c) {buffer[j] = (c); if (buffer[j] < ' ') buffer[j] = '°'; j++;} + ADD_CHAR(c[i]); + for(i=14;i<26 && c[i] && c[i]!=0xff;i+=2) + ADD_CHAR(c[i]); + for(i=28;i<32 && c[i] && c[i]!=0xff;i+=2) + ADD_CHAR(c[i]); + buffer[j] = 0; + fprintf(stderr, "%s\n", buffer); + } else { + int i; + for(i=0;i<11;i++) + ADD_CHAR(direntry->name[i]); + buffer[j] = 0; + fprintf(stderr,"%s attributes=0x%02x begin=%d size=%d\n", + buffer, + direntry->attributes, + begin_of_direntry(direntry),le32_to_cpu(direntry->size)); + } + { + unsigned char *p = (void *) direntry; + int i; + + fprintf(stderr, "%p:\t", p); + for (i = 0; i < 16; i++) + fprintf(stderr, " %02x", *p++); + fprintf(stderr, "\n%p:\t", p); + for ( ; i < 32; i++) + fprintf(stderr, " %02x", *p++); + fprintf(stderr, "\n"); + } +} + +static void print_mapping(const mapping_t* mapping) +{ + fprintf(stderr, "mapping (0x%p): begin, end = %d, %d, dir_index = %d, first_mapping_index = %d, name = %s, mode = 0x%x, " , mapping, mapping->begin, mapping->end, mapping->dir_index, mapping->first_mapping_index, mapping->path, mapping->mode); + if (mapping->mode & MODE_DIRECTORY) + fprintf(stderr, "parent_mapping_index = %d, first_dir_index = %d\n", mapping->info.dir.parent_mapping_index, mapping->info.dir.first_dir_index); + else + fprintf(stderr, "offset = %d\n", mapping->info.file.offset); +} +#endif + +static int vvfat_read(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors) +{ + BDRVVVFATState *s = bs->opaque; +#ifdef DEBUG_SECTORS + int32_t orig_sector = sector_num; +#endif + int i; + + for(i=0;i= s->sector_count) + return -1; + if (s->qcow) { + int n; + if (s->qcow->drv->bdrv_is_allocated(s->qcow, + sector_num, nb_sectors-i, &n)) { +DLOG(fprintf(stderr, "sectors %d+%d allocated\n", (int)sector_num, n)); + if (s->qcow->drv->bdrv_read(s->qcow, sector_num, buf+i*0x200, n)) + return -1; + i += n - 1; + sector_num += n - 1; + continue; + } +// DLOG(fprintf(stderr, "sector %d not allocated\n", (int)sector_num)); + } + if(sector_numfaked_sectors) { + if(sector_numfirst_sectors_number) + memcpy(buf+i*0x200,&(s->first_sectors[sector_num*0x200]),0x200); + else if(sector_num-s->first_sectors_numbersectors_per_fat) + memcpy(buf+i*0x200,&(s->fat.pointer[(sector_num-s->first_sectors_number)*0x200]),0x200); + else if(sector_num-s->first_sectors_number-s->sectors_per_fatsectors_per_fat) + memcpy(buf+i*0x200,&(s->fat.pointer[(sector_num-s->first_sectors_number-s->sectors_per_fat)*0x200]),0x200); + } else { + uint32_t sector=sector_num-s->faked_sectors, + sector_offset_in_cluster=(sector%s->sectors_per_cluster), + cluster_num=sector/s->sectors_per_cluster; + if(read_cluster(s, cluster_num) != 0) { + /* LATER TODO: strict: return -1; */ + memset(buf+i*0x200,0,0x200); + continue; + } + memcpy(buf+i*0x200,s->cluster+sector_offset_in_cluster*0x200,0x200); + } + } + +#ifdef DEBUG_SECTORS + for (i = 0; i < nb_sectors; i++) { + fprintf(stderr, "%s:%u: sector %u:\n", __FUNCTION__, __LINE__, orig_sector + i); + hexdump(buf + i * 0x200, 0x200); + } +#endif + + return 0; +} + +/* LATER TODO: statify all functions */ + +/* + * Idea of the write support (use snapshot): + * + * 1. check if all data is consistent, recording renames, modifications, + * new files and directories (in s->commits). + * + * 2. if the data is not consistent, stop committing + * + * 3. handle renames, and create new files and directories (do not yet + * write their contents) + * + * 4. walk the directories, fixing the mapping and direntries, and marking + * the handled mappings as not deleted + * + * 5. commit the contents of the files + * + * 6. handle deleted files and directories + * + */ + +typedef struct commit_t { + char* path; + union { + struct { uint32_t cluster; } rename; + struct { int dir_index; uint32_t modified_offset; } writeout; + struct { uint32_t first_cluster; } new_file; + struct { uint32_t cluster; } mkdir; + } param; + /* DELETEs and RMDIRs are handled differently: see handle_deletes() */ + enum { + ACTION_RENAME, ACTION_WRITEOUT, ACTION_NEW_FILE, ACTION_MKDIR + } action; +} commit_t; + +static void clear_commits(BDRVVVFATState* s) +{ + int i; +DLOG(fprintf(stderr, "clear_commits (%d commits)\n", s->commits.next)); + for (i = 0; i < s->commits.next; i++) { + commit_t* commit = array_get(&(s->commits), i); + assert(commit->path || commit->action == ACTION_WRITEOUT); + if (commit->action != ACTION_WRITEOUT) { + assert(commit->path); + free(commit->path); + } else + assert(commit->path == NULL); + } + s->commits.next = 0; +} + +static void schedule_rename(BDRVVVFATState* s, + uint32_t cluster, char* new_path) +{ + commit_t* commit = array_get_next(&(s->commits)); + commit->path = new_path; + commit->param.rename.cluster = cluster; + commit->action = ACTION_RENAME; +} + +static void schedule_writeout(BDRVVVFATState* s, + int dir_index, uint32_t modified_offset) +{ + commit_t* commit = array_get_next(&(s->commits)); + commit->path = NULL; + commit->param.writeout.dir_index = dir_index; + commit->param.writeout.modified_offset = modified_offset; + commit->action = ACTION_WRITEOUT; +} + +static void schedule_new_file(BDRVVVFATState* s, + char* path, uint32_t first_cluster) +{ + commit_t* commit = array_get_next(&(s->commits)); + commit->path = path; + commit->param.new_file.first_cluster = first_cluster; + commit->action = ACTION_NEW_FILE; +} + +static void schedule_mkdir(BDRVVVFATState* s, uint32_t cluster, char* path) +{ + commit_t* commit = array_get_next(&(s->commits)); + commit->path = path; + commit->param.mkdir.cluster = cluster; + commit->action = ACTION_MKDIR; +} + +typedef struct { + char name[1024]; + int checksum, len; + int sequence_number; +} long_file_name; + +static void lfn_init(long_file_name* lfn) +{ + lfn->sequence_number = lfn->len = 0; + lfn->checksum = 0x100; +} + +/* return 0 if parsed successfully, > 0 if no long name, < 0 if error */ +static int parse_long_name(long_file_name* lfn, + const direntry_t* direntry) +{ + int i, j, offset; + const unsigned char* pointer = (const unsigned char*)direntry; + + if (!is_long_name(direntry)) + return 1; + + if (pointer[0] & 0x40) { + lfn->sequence_number = pointer[0] & 0x3f; + lfn->checksum = pointer[13]; + lfn->name[0] = 0; + } else if ((pointer[0] & 0x3f) != --lfn->sequence_number) + return -1; + else if (pointer[13] != lfn->checksum) + return -2; + else if (pointer[12] || pointer[26] || pointer[27]) + return -3; + + offset = 13 * (lfn->sequence_number - 1); + for (i = 0, j = 1; i < 13; i++, j+=2) { + if (j == 11) + j = 14; + else if (j == 26) + j = 28; + + if (pointer[j+1] == 0) + lfn->name[offset + i] = pointer[j]; + else if (pointer[j+1] != 0xff || (pointer[0] & 0x40) == 0) + return -4; + else + lfn->name[offset + i] = 0; + } + + if (pointer[0] & 0x40) + lfn->len = offset + strlen(lfn->name + offset); + + return 0; +} + +/* returns 0 if successful, >0 if no short_name, and <0 on error */ +static int parse_short_name(BDRVVVFATState* s, + long_file_name* lfn, direntry_t* direntry) +{ + int i, j; + + if (!is_short_name(direntry)) + return 1; + + for (j = 7; j >= 0 && direntry->name[j] == ' '; j--); + for (i = 0; i <= j; i++) { + if (direntry->name[i] <= ' ' || direntry->name[i] > 0x7f) + return -1; + else if (s->downcase_short_names) + lfn->name[i] = tolower(direntry->name[i]); + else + lfn->name[i] = direntry->name[i]; + } + + for (j = 2; j >= 0 && direntry->extension[j] == ' '; j--); + if (j >= 0) { + lfn->name[i++] = '.'; + lfn->name[i + j + 1] = '\0'; + for (;j >= 0; j--) { + if (direntry->extension[j] <= ' ' || direntry->extension[j] > 0x7f) + return -2; + else if (s->downcase_short_names) + lfn->name[i + j] = tolower(direntry->extension[j]); + else + lfn->name[i + j] = direntry->extension[j]; + } + } else + lfn->name[i + j + 1] = '\0'; + + lfn->len = strlen(lfn->name); + + return 0; +} + +static inline uint32_t modified_fat_get(BDRVVVFATState* s, + unsigned int cluster) +{ + if (cluster < s->last_cluster_of_root_directory) { + if (cluster + 1 == s->last_cluster_of_root_directory) + return s->max_fat_value; + else + return cluster + 1; + } + + if (s->fat_type==32) { + uint32_t* entry=((uint32_t*)s->fat2)+cluster; + return le32_to_cpu(*entry); + } else if (s->fat_type==16) { + uint16_t* entry=((uint16_t*)s->fat2)+cluster; + return le16_to_cpu(*entry); + } else { + const uint8_t* x=s->fat2+cluster*3/2; + return ((x[0]|(x[1]<<8))>>(cluster&1?4:0))&0x0fff; + } +} + +static inline int cluster_was_modified(BDRVVVFATState* s, uint32_t cluster_num) +{ + int was_modified = 0; + int i, dummy; + + if (s->qcow == NULL) + return 0; + + for (i = 0; !was_modified && i < s->sectors_per_cluster; i++) + was_modified = s->qcow->drv->bdrv_is_allocated(s->qcow, + cluster2sector(s, cluster_num) + i, 1, &dummy); + + return was_modified; +} + +static const char* get_basename(const char* path) +{ + char* basename = strrchr(path, '/'); + if (basename == NULL) + return path; + else + return basename + 1; /* strip '/' */ +} + +/* + * The array s->used_clusters holds the states of the clusters. If it is + * part of a file, it has bit 2 set, in case of a directory, bit 1. If it + * was modified, bit 3 is set. + * If any cluster is allocated, but not part of a file or directory, this + * driver refuses to commit. + */ +typedef enum { + USED_DIRECTORY = 1, USED_FILE = 2, USED_ANY = 3, USED_ALLOCATED = 4 +} used_t; + +/* + * get_cluster_count_for_direntry() not only determines how many clusters + * are occupied by direntry, but also if it was renamed or modified. + * + * A file is thought to be renamed *only* if there already was a file with + * exactly the same first cluster, but a different name. + * + * Further, the files/directories handled by this function are + * assumed to be *not* deleted (and *only* those). + */ +static uint32_t get_cluster_count_for_direntry(BDRVVVFATState* s, + direntry_t* direntry, const char* path) +{ + /* + * This is a little bit tricky: + * IF the guest OS just inserts a cluster into the file chain, + * and leaves the rest alone, (i.e. the original file had clusters + * 15 -> 16, but now has 15 -> 32 -> 16), then the following happens: + * + * - do_commit will write the cluster into the file at the given + * offset, but + * + * - the cluster which is overwritten should be moved to a later + * position in the file. + * + * I am not aware that any OS does something as braindead, but this + * situation could happen anyway when not committing for a long time. + * Just to be sure that this does not bite us, detect it, and copy the + * contents of the clusters to-be-overwritten into the qcow. + */ + int copy_it = 0; + int was_modified = 0; + int32_t ret = 0; + + uint32_t cluster_num = begin_of_direntry(direntry); + uint32_t offset = 0; + int first_mapping_index = -1; + mapping_t* mapping = NULL; + const char* basename2 = NULL; + + vvfat_close_current_file(s); + + /* the root directory */ + if (cluster_num == 0) + return 0; + + /* write support */ + if (s->qcow) { + basename2 = get_basename(path); + + mapping = find_mapping_for_cluster(s, cluster_num); + + if (mapping) { + const char* basename; + + assert(mapping->mode & MODE_DELETED); + DLOG(fprintf(stderr, "%s:%u: clear delete: ", __FUNCTION__, __LINE__); print_mapping(mapping)); + mapping->mode &= ~MODE_DELETED; + + basename = get_basename(mapping->path); + + assert(mapping->mode & MODE_NORMAL); + + /* rename */ + if (strcmp(basename, basename2)) + schedule_rename(s, cluster_num, strdup(path)); + } else if (is_file(direntry)) + /* new file */ + schedule_new_file(s, strdup(path), cluster_num); + else { + assert(0); + return 0; + } + } + + while(1) { + if (s->qcow) { + if (!copy_it && cluster_was_modified(s, cluster_num)) { + if (mapping == NULL || + mapping->begin > cluster_num || + mapping->end <= cluster_num) + mapping = find_mapping_for_cluster(s, cluster_num); + + + if (mapping && + (mapping->mode & MODE_DIRECTORY) == 0) { + + /* was modified in qcow */ + if (offset != mapping->info.file.offset + s->cluster_size + * (cluster_num - mapping->begin)) { + /* offset of this cluster in file chain has changed */ + assert(0); + copy_it = 1; + } else if (offset == 0) { + const char* basename = get_basename(mapping->path); + + if (strcmp(basename, basename2)) + copy_it = 1; + first_mapping_index = array_index(&(s->mapping), mapping); + } + + if (mapping->first_mapping_index != first_mapping_index + && mapping->info.file.offset > 0) { + assert(0); + copy_it = 1; + } + + /* need to write out? */ + if (!was_modified && is_file(direntry)) { + was_modified = 1; + schedule_writeout(s, mapping->dir_index, offset); + } + } + } + + if (copy_it) { + int i, dummy; + /* + * This is horribly inefficient, but that is okay, since + * it is rarely executed, if at all. + */ + int64_t offset = cluster2sector(s, cluster_num); + + vvfat_close_current_file(s); + for (i = 0; i < s->sectors_per_cluster; i++) + if (!s->qcow->drv->bdrv_is_allocated(s->qcow, + offset + i, 1, &dummy)) { + if (vvfat_read(s->bs, + offset, s->cluster_buffer, 1)) + return -1; + if (s->qcow->drv->bdrv_write(s->qcow, + offset, s->cluster_buffer, 1)) + return -2; + } + } + } + + ret++; + if (s->used_clusters[cluster_num] & USED_ANY) + return 0; + s->used_clusters[cluster_num] = USED_FILE; + + cluster_num = modified_fat_get(s, cluster_num); + + if (fat_eof(s, cluster_num)) + return ret; + else if (cluster_num < 2 || cluster_num > s->max_fat_value - 16) + return -1; + + offset += s->cluster_size; + } +} + +/* + * This function looks at the modified data (qcow). + * It returns 0 upon inconsistency or error, and the number of clusters + * used by the directory, its subdirectories and their files. + */ +static int check_directory_consistency(BDRVVVFATState *s, + int cluster_num, const char* path) +{ + int ret = 0; + unsigned char* cluster = malloc(s->cluster_size); + direntry_t* direntries = (direntry_t*)cluster; + mapping_t* mapping = find_mapping_for_cluster(s, cluster_num); + + long_file_name lfn; + int path_len = strlen(path); + char path2[PATH_MAX]; + + assert(path_len < PATH_MAX); /* len was tested before! */ + strcpy(path2, path); + path2[path_len] = '/'; + path2[path_len + 1] = '\0'; + + if (mapping) { + const char* basename = get_basename(mapping->path); + const char* basename2 = get_basename(path); + + assert(mapping->mode & MODE_DIRECTORY); + + assert(mapping->mode & MODE_DELETED); + DLOG(fprintf(stderr, "%s:%u: clear delete: ", __FUNCTION__, __LINE__); print_mapping(mapping)); + mapping->mode &= ~MODE_DELETED; + + if (strcmp(basename, basename2)) + schedule_rename(s, cluster_num, strdup(path)); + } else + /* new directory */ + schedule_mkdir(s, cluster_num, strdup(path)); + + lfn_init(&lfn); + do { + int i; + int subret = 0; + + ret++; + + if (s->used_clusters[cluster_num] & USED_ANY) { + fprintf(stderr, "cluster %d used more than once\n", (int)cluster_num); + return 0; + } + s->used_clusters[cluster_num] = USED_DIRECTORY; + +DLOG(fprintf(stderr, "read cluster %d (sector %d)\n", (int)cluster_num, (int)cluster2sector(s, cluster_num))); + subret = vvfat_read(s->bs, cluster2sector(s, cluster_num), cluster, + s->sectors_per_cluster); + if (subret) { + fprintf(stderr, "Error fetching direntries\n"); + fail: + free(cluster); + return 0; + } + + for (i = 0; i < 0x10 * s->sectors_per_cluster; i++) { + int cluster_count; + +DLOG(if (!is_free(direntries + i)) { fprintf(stderr, "check direntry %d: \n", i); print_direntry(direntries + i); }) + + if (is_volume_label(direntries + i) || is_dot(direntries + i) || is_free(direntries + i)) + continue; + + subret = parse_long_name(&lfn, direntries + i); + if (subret < 0) { + fprintf(stderr, "Error in long name\n"); + goto fail; + } + if (subret == 0 || is_free(direntries + i)) + continue; + + if (fat_chksum(direntries+i) != lfn.checksum) { + subret = parse_short_name(s, &lfn, direntries + i); + if (subret < 0) { + fprintf(stderr, "Error in short name (%d)\n", subret); + goto fail; + } + if (subret > 0 || !strcmp(lfn.name, ".") + || !strcmp(lfn.name, "..")) + continue; + } + lfn.checksum = 0x100; /* cannot use long name twice */ + + if (path_len + 1 + lfn.len >= PATH_MAX) { + fprintf(stderr, "Name too long: %s/%s\n", path, lfn.name); + goto fail; + } + strcpy(path2 + path_len + 1, lfn.name); + + if (is_directory(direntries + i)) { + if (begin_of_direntry(direntries + i) == 0) { + DLOG(fprintf(stderr, "invalid begin for directory: %s\n", path2); print_direntry(direntries + i)); + goto fail; + } + cluster_count = check_directory_consistency(s, + begin_of_direntry(direntries + i), path2); + if (cluster_count == 0) { + DLOG(fprintf(stderr, "problem in directory %s:\n", path2); print_direntry(direntries + i)); + goto fail; + } + } else if (is_file(direntries + i)) { + /* check file size with FAT */ + cluster_count = get_cluster_count_for_direntry(s, direntries + i, path2); + if (cluster_count != + (le32_to_cpu(direntries[i].size) + s->cluster_size + - 1) / s->cluster_size) { + DLOG(fprintf(stderr, "Cluster count mismatch\n")); + goto fail; + } + } else + assert(0); /* cluster_count = 0; */ + + ret += cluster_count; + } + + cluster_num = modified_fat_get(s, cluster_num); + } while(!fat_eof(s, cluster_num)); + + free(cluster); + return ret; +} + +/* returns 1 on success */ +static int is_consistent(BDRVVVFATState* s) +{ + int i, check; + int used_clusters_count = 0; + +DLOG(checkpoint(__FUNCTION__)); + + DLOG(fprintf(stderr, "%s:%u:\n", __FUNCTION__, __LINE__)); + + /* + * - get modified FAT + * - compare the two FATs (TODO) + * - get buffer for marking used clusters + * - recurse direntries from root (using bs->bdrv_read to make + * sure to get the new data) + * - check that the FAT agrees with the size + * - count the number of clusters occupied by this directory and + * its files + * - check that the cumulative used cluster count agrees with the + * FAT + * - if all is fine, return number of used clusters + */ + if (s->fat2 == NULL) { + int size = 0x200 * s->sectors_per_fat; + s->fat2 = malloc(size); + memcpy(s->fat2, s->fat.pointer, size); + } + check = vvfat_read(s->bs, s->first_sectors_number, + s->fat2, s->sectors_per_fat); + if (check) { + fprintf(stderr, "Could not copy fat\n"); + DLOG(fprintf(stderr, "%s:%u: copy fat failed\n", __FUNCTION__, __LINE__)); + return 0; + } + assert (s->used_clusters); + for (i = 0; i < sector2cluster(s, s->sector_count); i++) + s->used_clusters[i] &= ~USED_ANY; + + clear_commits(s); + + /* mark every mapped file/directory as deleted. + * (check_directory_consistency() will unmark those still present). */ + if (s->qcow) { + for (i = 0; i < s->mapping.next; i++) { + mapping_t* mapping = array_get(&(s->mapping), i); + if (mapping->first_mapping_index < 0) { + DLOG(fprintf(stderr, "%s:%u: mark delete: ", __FUNCTION__, __LINE__); print_mapping(mapping)); + mapping->mode |= MODE_DELETED; + } + } + } + + used_clusters_count = check_directory_consistency(s, 0, s->path); + if (used_clusters_count <= 0) { + DLOG(fprintf(stderr, "problem in directory\n")); + return 0; + } + + check = s->last_cluster_of_root_directory; + for (i = check; i < sector2cluster(s, s->sector_count); i++) { + if (modified_fat_get(s, i)) { + if(!s->used_clusters[i]) { + DLOG(fprintf(stderr, "FAT was modified (%d), but cluster is not used?\n", i)); + return 0; + } + check++; + } + + if (s->used_clusters[i] == USED_ALLOCATED) { + /* allocated, but not used... */ + DLOG(fprintf(stderr, "unused, modified cluster: %d\n", i)); + return 0; + } + } + + if (check != used_clusters_count) { + DLOG(fprintf(stderr, "%s:%u: check: %u, used %u\n", __FUNCTION__, __LINE__, check, used_clusters_count)); + return 0; + } + + DLOG(fprintf(stderr, "%s:%u: return used %u\n", __FUNCTION__, __LINE__, used_clusters_count)); + return used_clusters_count; +} + +static inline void adjust_mapping_indices(BDRVVVFATState* s, + int offset, int adjust) +{ + int i; + + for (i = 0; i < s->mapping.next; i++) { + mapping_t* mapping = array_get(&(s->mapping), i); + +#define ADJUST_MAPPING_INDEX(name) \ + if (mapping->name >= offset) \ + mapping->name += adjust + + ADJUST_MAPPING_INDEX(first_mapping_index); + if (mapping->mode & MODE_DIRECTORY) + ADJUST_MAPPING_INDEX(info.dir.parent_mapping_index); + } +} + +/* insert or update mapping */ +static mapping_t* insert_mapping(BDRVVVFATState* s, + uint32_t begin, uint32_t end) +{ + /* + * - find mapping where mapping->begin >= begin, + * - if mapping->begin > begin: insert + * - adjust all references to mappings! + * - else: adjust + * - replace name + */ + int index = find_mapping_for_cluster_aux(s, begin, 0, s->mapping.next); + mapping_t* mapping = NULL; + mapping_t* first_mapping = array_get(&(s->mapping), 0); + + if (index < s->mapping.next && (mapping = array_get(&(s->mapping), index)) + && mapping->begin < begin) { + mapping->end = begin; + index++; + mapping = array_get(&(s->mapping), index); + } + if (index >= s->mapping.next || mapping->begin > begin) { + mapping = array_insert(&(s->mapping), index, 1); + mapping->path = NULL; + adjust_mapping_indices(s, index, +1); + } + + mapping->begin = begin; + mapping->end = end; + +DLOG(mapping_t* next_mapping; +assert(index + 1 >= s->mapping.next || +((next_mapping = array_get(&(s->mapping), index + 1)) && + next_mapping->begin >= end))); + + DLOG(fprintf(stderr, "insert mapping %u:\n", index); print_mapping(mapping)); + + if (s->current_mapping && first_mapping != (mapping_t*)s->mapping.pointer) + s->current_mapping = array_get(&(s->mapping), + s->current_mapping - first_mapping); + + return mapping; +} + +static int remove_mapping(BDRVVVFATState* s, int mapping_index) +{ + mapping_t* mapping = array_get(&(s->mapping), mapping_index); + mapping_t* first_mapping = array_get(&(s->mapping), 0); + + DLOG(fprintf(stderr, "remove mapping %u:\n", mapping_index); print_mapping(mapping)); + + /* free mapping */ + if (mapping->first_mapping_index < 0) + free(mapping->path); + + /* remove from s->mapping */ + array_remove(&(s->mapping), mapping_index); + + /* adjust all references to mappings */ + adjust_mapping_indices(s, mapping_index, -1); + + if (s->current_mapping && first_mapping != (mapping_t*)s->mapping.pointer) + s->current_mapping = array_get(&(s->mapping), + s->current_mapping - first_mapping); + + return 0; +} + +static void adjust_dirindices(BDRVVVFATState* s, int offset, int adjust) +{ + int i; + for (i = 0; i < s->mapping.next; i++) { + mapping_t* mapping = array_get(&(s->mapping), i); + if (mapping->dir_index >= offset) + mapping->dir_index += adjust; + if ((mapping->mode & MODE_DIRECTORY) && + mapping->info.dir.first_dir_index >= offset) + mapping->info.dir.first_dir_index += adjust; + } +} + +static direntry_t* insert_direntries(BDRVVVFATState* s, + int dir_index, int count) +{ + /* + * make room in s->directory, + * adjust_dirindices + */ + direntry_t* result = array_insert(&(s->directory), dir_index, count); + if (result == NULL) + return NULL; + adjust_dirindices(s, dir_index, count); + return result; +} + +static int remove_direntries(BDRVVVFATState* s, int dir_index, int count) +{ + int ret = array_remove_slice(&(s->directory), dir_index, count); + if (ret) + return ret; + adjust_dirindices(s, dir_index, -count); + return 0; +} + +/* + * Adapt the mappings of the cluster chain starting at first cluster + * (i.e. if a file starts at first_cluster, the chain is followed according + * to the modified fat, and the corresponding entries in s->mapping are + * adjusted) + */ +static int commit_mappings(BDRVVVFATState* s, + uint32_t first_cluster, int dir_index) +{ + mapping_t* mapping = find_mapping_for_cluster(s, first_cluster); + direntry_t* direntry = array_get(&(s->directory), dir_index); + uint32_t cluster = first_cluster; + + vvfat_close_current_file(s); + + assert(mapping); + assert(mapping->begin == first_cluster); + mapping->first_mapping_index = -1; + mapping->dir_index = dir_index; + mapping->mode = (dir_index <= 0 || is_directory(direntry)) ? + MODE_DIRECTORY : MODE_NORMAL; + + while (!fat_eof(s, cluster)) { + uint32_t c, c1; + + for (c = cluster, c1 = modified_fat_get(s, c); c + 1 == c1; + c = c1, c1 = modified_fat_get(s, c1)); + + c++; + if (c > mapping->end) { + int index = array_index(&(s->mapping), mapping); + int i, max_i = s->mapping.next - index; + for (i = 1; i < max_i && mapping[i].begin < c; i++); + while (--i > 0) + remove_mapping(s, index + 1); + } + assert(mapping == array_get(&(s->mapping), s->mapping.next - 1) + || mapping[1].begin >= c); + mapping->end = c; + + if (!fat_eof(s, c1)) { + int i = find_mapping_for_cluster_aux(s, c1, 0, s->mapping.next); + mapping_t* next_mapping = i >= s->mapping.next ? NULL : + array_get(&(s->mapping), i); + + if (next_mapping == NULL || next_mapping->begin > c1) { + int i1 = array_index(&(s->mapping), mapping); + + next_mapping = insert_mapping(s, c1, c1+1); + + if (c1 < c) + i1++; + mapping = array_get(&(s->mapping), i1); + } + + next_mapping->dir_index = mapping->dir_index; + next_mapping->first_mapping_index = + mapping->first_mapping_index < 0 ? + array_index(&(s->mapping), mapping) : + mapping->first_mapping_index; + next_mapping->path = mapping->path; + next_mapping->mode = mapping->mode; + next_mapping->read_only = mapping->read_only; + if (mapping->mode & MODE_DIRECTORY) { + next_mapping->info.dir.parent_mapping_index = + mapping->info.dir.parent_mapping_index; + next_mapping->info.dir.first_dir_index = + mapping->info.dir.first_dir_index + + 0x10 * s->sectors_per_cluster * + (mapping->end - mapping->begin); + } else + next_mapping->info.file.offset = mapping->info.file.offset + + mapping->end - mapping->begin; + + mapping = next_mapping; + } + + cluster = c1; + } + + return 0; +} + +static int commit_direntries(BDRVVVFATState* s, + int dir_index, int parent_mapping_index) +{ + direntry_t* direntry = array_get(&(s->directory), dir_index); + uint32_t first_cluster = dir_index == 0 ? 0 : begin_of_direntry(direntry); + mapping_t* mapping = find_mapping_for_cluster(s, first_cluster); + + int factor = 0x10 * s->sectors_per_cluster; + int old_cluster_count, new_cluster_count; + int current_dir_index = mapping->info.dir.first_dir_index; + int first_dir_index = current_dir_index; + int ret, i; + uint32_t c; + + DLOG(fprintf(stderr, "commit_direntries for %s, parent_mapping_index %d\n", mapping->path, parent_mapping_index)); + + assert(direntry); + assert(mapping); + assert(mapping->begin == first_cluster); + assert(mapping->info.dir.first_dir_index < s->directory.next); + assert(mapping->mode & MODE_DIRECTORY); + assert(dir_index == 0 || is_directory(direntry)); + + mapping->info.dir.parent_mapping_index = parent_mapping_index; + + if (first_cluster == 0) { + old_cluster_count = new_cluster_count = + s->last_cluster_of_root_directory; + } else { + for (old_cluster_count = 0, c = first_cluster; !fat_eof(s, c); + c = fat_get(s, c)) + old_cluster_count++; + + for (new_cluster_count = 0, c = first_cluster; !fat_eof(s, c); + c = modified_fat_get(s, c)) + new_cluster_count++; + } + + if (new_cluster_count > old_cluster_count) { + if (insert_direntries(s, + current_dir_index + factor * old_cluster_count, + factor * (new_cluster_count - old_cluster_count)) == NULL) + return -1; + } else if (new_cluster_count < old_cluster_count) + remove_direntries(s, + current_dir_index + factor * new_cluster_count, + factor * (old_cluster_count - new_cluster_count)); + + for (c = first_cluster; !fat_eof(s, c); c = modified_fat_get(s, c)) { + void* direntry = array_get(&(s->directory), current_dir_index); + int ret = vvfat_read(s->bs, cluster2sector(s, c), direntry, + s->sectors_per_cluster); + if (ret) + return ret; + assert(!strncmp((char *) s->directory.pointer, VOLUME_LABEL, strlen(VOLUME_LABEL))); + current_dir_index += factor; + } + + ret = commit_mappings(s, first_cluster, dir_index); + if (ret) + return ret; + + /* recurse */ + for (i = 0; i < factor * new_cluster_count; i++) { + direntry = array_get(&(s->directory), first_dir_index + i); + if (is_directory(direntry) && !is_dot(direntry)) { + mapping = find_mapping_for_cluster(s, first_cluster); + assert(mapping->mode & MODE_DIRECTORY); + ret = commit_direntries(s, first_dir_index + i, + array_index(&(s->mapping), mapping)); + if (ret) + return ret; + } + } + + return 0; +} + +/* commit one file (adjust contents, adjust mapping), + return first_mapping_index */ +static int commit_one_file(BDRVVVFATState* s, + int dir_index, uint32_t offset) +{ + direntry_t* direntry = array_get(&(s->directory), dir_index); + uint32_t c = begin_of_direntry(direntry); + uint32_t first_cluster = c; + mapping_t* mapping = find_mapping_for_cluster(s, c); + uint32_t size = filesize_of_direntry(direntry); + unsigned char* cluster = malloc(s->cluster_size); + uint32_t i; + int fd = 0; + + assert(offset < size); + assert((offset % s->cluster_size) == 0); + + for (i = s->cluster_size; i < offset; i += s->cluster_size) + c = modified_fat_get(s, c); + + fd = open(mapping->path, O_RDWR | O_CREAT | O_BINARY, 0666); + if (fd < 0) { + fprintf(stderr, "Could not open %s... (%s, %d)\n", mapping->path, + strerror(errno), errno); + return fd; + } + if (offset > 0) + if (lseek(fd, offset, SEEK_SET) != offset) + return -3; + + while (offset < size) { + uint32_t c1; + int rest_size = (size - offset > s->cluster_size ? + s->cluster_size : size - offset); + int ret; + + c1 = modified_fat_get(s, c); + + assert((size - offset == 0 && fat_eof(s, c)) || + (size > offset && c >=2 && !fat_eof(s, c))); + assert(size >= 0); + + ret = vvfat_read(s->bs, cluster2sector(s, c), + cluster, (rest_size + 0x1ff) / 0x200); + + if (ret < 0) + return ret; + + if (write(fd, cluster, rest_size) < 0) + return -2; + + offset += rest_size; + c = c1; + } + + ftruncate(fd, size); + close(fd); + + return commit_mappings(s, first_cluster, dir_index); +} + +#ifdef DEBUG +/* test, if all mappings point to valid direntries */ +static void check1(BDRVVVFATState* s, const char *where) +{ + int i; + for (i = 0; i < s->mapping.next; i++) { + mapping_t* mapping = array_get(&(s->mapping), i); + if (mapping->mode & MODE_DELETED) { + DLOG(fprintf(stderr, "%s: deleted\n", where); print_mapping(mapping)); + continue; + } + assert(mapping->dir_index >= 0); + assert(mapping->dir_index < s->directory.next); + direntry_t* direntry = array_get(&(s->directory), mapping->dir_index); + assert(mapping->begin == begin_of_direntry(direntry) || mapping->first_mapping_index >= 0); + if (mapping->mode & MODE_DIRECTORY) { + assert(mapping->info.dir.first_dir_index + 0x10 * s->sectors_per_cluster * (mapping->end - mapping->begin) <= s->directory.next); + assert((mapping->info.dir.first_dir_index % (0x10 * s->sectors_per_cluster)) == 0); + } + } +} + +/* test, if all direntries have mappings */ +static void check2(BDRVVVFATState* s, const char *where) +{ + int i; + int first_mapping = -1; + + for (i = 0; i < s->directory.next; i++) { + direntry_t* direntry = array_get(&(s->directory), i); + + if (is_short_name(direntry) && begin_of_direntry(direntry)) { + mapping_t* mapping = find_mapping_for_cluster(s, begin_of_direntry(direntry)); + assert(mapping); + assert(mapping->dir_index == i || is_dot(direntry)); + assert(mapping->begin == begin_of_direntry(direntry) || is_dot(direntry)); + } + + if ((i % (0x10 * s->sectors_per_cluster)) == 0) { + /* cluster start */ + int j, count = 0; + + for (j = 0; j < s->mapping.next; j++) { + mapping_t* mapping = array_get(&(s->mapping), j); + if (mapping->mode & MODE_DELETED) + continue; + if (mapping->mode & MODE_DIRECTORY) { + if (mapping->info.dir.first_dir_index <= i && mapping->info.dir.first_dir_index + 0x10 * s->sectors_per_cluster > i) { + assert(++count == 1); + if (mapping->first_mapping_index == -1) + first_mapping = array_index(&(s->mapping), mapping); + else + assert(first_mapping == mapping->first_mapping_index); + if (mapping->info.dir.parent_mapping_index < 0) + assert(j == 0); + else { + mapping_t* parent = array_get(&(s->mapping), mapping->info.dir.parent_mapping_index); + assert(parent->mode & MODE_DIRECTORY); + assert(parent->info.dir.first_dir_index < mapping->info.dir.first_dir_index); + } + } + } + } + if (count == 0) + first_mapping = -1; + } + } +} +#endif + +static int handle_renames_and_mkdirs(BDRVVVFATState* s) +{ + int i; + +#ifdef DEBUG + fprintf(stderr, "handle_renames\n"); + for (i = 0; i < s->commits.next; i++) { + commit_t* commit = array_get(&(s->commits), i); + fprintf(stderr, "%d, %s (%d, %d)\n", i, commit->path ? commit->path : "(null)", commit->param.rename.cluster, commit->action); + } +#endif + + for (i = 0; i < s->commits.next;) { + commit_t* commit = array_get(&(s->commits), i); + if (commit->action == ACTION_RENAME) { + mapping_t* mapping = find_mapping_for_cluster(s, + commit->param.rename.cluster); + char* old_path = mapping->path; + + assert(commit->path); + mapping->path = commit->path; + if (rename(old_path, mapping->path)) + return -2; + + if (mapping->mode & MODE_DIRECTORY) { + int l1 = strlen(mapping->path); + int l2 = strlen(old_path); + int diff = l1 - l2; + direntry_t* direntry = array_get(&(s->directory), + mapping->info.dir.first_dir_index); + uint32_t c = mapping->begin; + int i = 0; + + /* recurse */ + while (!fat_eof(s, c)) { + do { + direntry_t* d = direntry + i; + + if (is_file(d) || (is_directory(d) && !is_dot(d))) { + mapping_t* m = find_mapping_for_cluster(s, + begin_of_direntry(d)); + int l = strlen(m->path); + char* new_path = malloc(l + diff + 1); + + assert(!strncmp(m->path, mapping->path, l2)); + + strcpy(new_path, mapping->path); + strcpy(new_path + l1, m->path + l2); + + schedule_rename(s, m->begin, new_path); + } + i++; + } while((i % (0x10 * s->sectors_per_cluster)) != 0); + c = fat_get(s, c); + } + } + + free(old_path); + array_remove(&(s->commits), i); + continue; + } else if (commit->action == ACTION_MKDIR) { + mapping_t* mapping; + int j, parent_path_len; + +#ifdef __MINGW32__ + if (mkdir(commit->path)) + return -5; +#else + if (mkdir(commit->path, 0755)) + return -5; +#endif + + mapping = insert_mapping(s, commit->param.mkdir.cluster, + commit->param.mkdir.cluster + 1); + if (mapping == NULL) + return -6; + + mapping->mode = MODE_DIRECTORY; + mapping->read_only = 0; + mapping->path = commit->path; + j = s->directory.next; + assert(j); + insert_direntries(s, s->directory.next, + 0x10 * s->sectors_per_cluster); + mapping->info.dir.first_dir_index = j; + + parent_path_len = strlen(commit->path) + - strlen(get_basename(commit->path)) - 1; + for (j = 0; j < s->mapping.next; j++) { + mapping_t* m = array_get(&(s->mapping), j); + if (m->first_mapping_index < 0 && m != mapping && + !strncmp(m->path, mapping->path, parent_path_len) && + strlen(m->path) == parent_path_len) + break; + } + assert(j < s->mapping.next); + mapping->info.dir.parent_mapping_index = j; + + array_remove(&(s->commits), i); + continue; + } + + i++; + } + return 0; +} + +/* + * TODO: make sure that the short name is not matching *another* file + */ +static int handle_commits(BDRVVVFATState* s) +{ + int i, fail = 0; + + vvfat_close_current_file(s); + + for (i = 0; !fail && i < s->commits.next; i++) { + commit_t* commit = array_get(&(s->commits), i); + switch(commit->action) { + case ACTION_RENAME: case ACTION_MKDIR: + assert(0); + fail = -2; + break; + case ACTION_WRITEOUT: { + direntry_t* entry = array_get(&(s->directory), + commit->param.writeout.dir_index); + uint32_t begin = begin_of_direntry(entry); + mapping_t* mapping = find_mapping_for_cluster(s, begin); + + assert(mapping); + assert(mapping->begin == begin); + assert(commit->path == NULL); + + if (commit_one_file(s, commit->param.writeout.dir_index, + commit->param.writeout.modified_offset)) + fail = -3; + + break; + } + case ACTION_NEW_FILE: { + int begin = commit->param.new_file.first_cluster; + mapping_t* mapping = find_mapping_for_cluster(s, begin); + direntry_t* entry; + int i; + + /* find direntry */ + for (i = 0; i < s->directory.next; i++) { + entry = array_get(&(s->directory), i); + if (is_file(entry) && begin_of_direntry(entry) == begin) + break; + } + + if (i >= s->directory.next) { + fail = -6; + continue; + } + + /* make sure there exists an initial mapping */ + if (mapping && mapping->begin != begin) { + mapping->end = begin; + mapping = NULL; + } + if (mapping == NULL) { + mapping = insert_mapping(s, begin, begin+1); + } + /* most members will be fixed in commit_mappings() */ + assert(commit->path); + mapping->path = commit->path; + mapping->read_only = 0; + mapping->mode = MODE_NORMAL; + mapping->info.file.offset = 0; + + if (commit_one_file(s, i, 0)) + fail = -7; + + break; + } + default: + assert(0); + } + } + if (i > 0 && array_remove_slice(&(s->commits), 0, i)) + return -1; + return fail; +} + +static int handle_deletes(BDRVVVFATState* s) +{ + int i, deferred = 1, deleted = 1; + + /* delete files corresponding to mappings marked as deleted */ + /* handle DELETEs and unused mappings (modified_fat_get(s, mapping->begin) == 0) */ + while (deferred && deleted) { + deferred = 0; + deleted = 0; + + for (i = 1; i < s->mapping.next; i++) { + mapping_t* mapping = array_get(&(s->mapping), i); + if (mapping->mode & MODE_DELETED) { + direntry_t* entry = array_get(&(s->directory), + mapping->dir_index); + + DLOG(fprintf(stderr, "%s:%u: ", __FUNCTION__, __LINE__); print_mapping(mapping); print_direntry(entry)); + + if (is_free(entry)) { + /* remove file/directory */ + if (mapping->mode & MODE_DIRECTORY) { + int j, next_dir_index = s->directory.next, + first_dir_index = mapping->info.dir.first_dir_index; + + if (rmdir(mapping->path) < 0) { + if (errno == ENOTEMPTY) { + deferred++; + continue; + } else + return -5; + } + + for (j = 1; j < s->mapping.next; j++) { + mapping_t* m = array_get(&(s->mapping), j); + if (m->mode & MODE_DIRECTORY && + m->info.dir.first_dir_index > + first_dir_index && + m->info.dir.first_dir_index < + next_dir_index) + next_dir_index = + m->info.dir.first_dir_index; + } + remove_direntries(s, first_dir_index, + next_dir_index - first_dir_index); + + deleted++; + } else { + if (unlink(mapping->path)) + return -4; + deleted++; + } + + DLOG(fprintf(stderr, "DELETE (%d)\n", i); print_mapping(mapping); print_direntry(entry)); + remove_mapping(s, i); + } + } + } + } + + return 0; +} + +static int have_deletes(BDRVVVFATState* s) +{ + int i; + + for (i = 0; i < s->mapping.next; i++) { + mapping_t* mapping = array_get(&(s->mapping), i); + if (mapping->mode & MODE_DELETED) { + return 1; + } + } + + return 0; +} + +/* + * synchronize mapping with new state: + * + * - copy FAT (with bdrv_read) + * - mark all filenames corresponding to mappings as deleted + * - recurse direntries from root (using bs->bdrv_read) + * - delete files corresponding to mappings marked as deleted + */ +static int do_commit(BDRVVVFATState* s) +{ + int ret = 0; + + /* the real meat are the commits. Nothing to do? Move along! */ + if ((0 == s->commits.next) && (0 == have_deletes(s))) { + DLOG(fprintf(stderr, "%s:%u: nothing to do\n", __FUNCTION__, __LINE__)); + return 0; + } + + vvfat_close_current_file(s); + + ret = handle_renames_and_mkdirs(s); + if (ret) { + fprintf(stderr, "Error handling renames (%d)\n", ret); + assert(0); + return ret; + } + + /* copy FAT (with bdrv_read) */ + memcpy(s->fat.pointer, s->fat2, 0x200 * s->sectors_per_fat); + + /* recurse direntries from root (using bs->bdrv_read) */ + ret = commit_direntries(s, 0, -1); + if (ret) { + fprintf(stderr, "Fatal: error while committing (%d)\n", ret); + assert(0); + return ret; + } + + ret = handle_commits(s); + if (ret) { + fprintf(stderr, "Error handling commits (%d)\n", ret); + assert(0); + return ret; + } + + ret = handle_deletes(s); + if (ret) { + fprintf(stderr, "Error deleting\n"); + assert(0); + return ret; + } + + s->qcow->drv->bdrv_make_empty(s->qcow); + + memset(s->used_clusters, 0, sector2cluster(s, s->sector_count)); + +DLOG(checkpoint(__FUNCTION__)); + return 0; +} + +static int try_commit(BDRVVVFATState* s) +{ + vvfat_close_current_file(s); + +DLOG(checkpoint(__FUNCTION__)); + + if(!is_consistent(s)) + return -1; + + return do_commit(s); +} + +static void +vvfat_write_timer(void *opaque) +{ + BDRVVVFATState *s = opaque; + + DLOG(fprintf(stderr, "%s:%u:\n", __FUNCTION__, __LINE__)); + +DLOG(checkpoint("vvfat_write_timer: before try_commits")); + + try_commit(s); + +DLOG(checkpoint("vvfat_write_timer: after try_commits")); +} + +static int vvfat_write(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors) +{ + BDRVVVFATState *s = bs->opaque; + mapping_t* mapping; +#ifdef DEBUG_SECTORS + int32_t orig_sector = sector_num; +#endif + int64_t start_cluster, end_cluster; + int i, ret; + +DLOG(checkpoint(__FUNCTION__)); + + vvfat_close_current_file(s); + + /* + * Some sanity checks: + * - do not allow writing to the boot sector + * - do not allow to write non-ASCII filenames + */ + + if (sector_num < s->first_sectors_number) { + DLOG(fprintf(stderr, "%s:%u: sector: %u nb %u (first: %u)\n", __FUNCTION__, __LINE__, (int) sector_num, nb_sectors, s->first_sectors_number)); + return -1; + } + +#ifdef DEBUG_SECTORS + for (i = 0; i < nb_sectors; i++) { + fprintf(stderr, "%s:%u: sector %u:\n", __FUNCTION__, __LINE__, orig_sector + i); + hexdump(buf + i * 0x200, 0x200); + } +#endif + + DLOG(fprintf(stderr, "%s:%u: check mappings, sector: %u nb %u (faked: %u)\n", __FUNCTION__, __LINE__, (int) sector_num, nb_sectors, s->faked_sectors)); + + if (sector_num >= s->faked_sectors) { + start_cluster = sector2cluster(s, sector_num); + } else { + start_cluster = 0; + } + if (sector_num + nb_sectors - 1 >= s->faked_sectors) { + end_cluster = sector2cluster(s, sector_num + nb_sectors - 1); + } else { + end_cluster = -1; + } + + for (i = start_cluster; i <= end_cluster; ) { + DLOG(fprintf(stderr, "%s:%u: cluster %u\n", __FUNCTION__, __LINE__, i)); + mapping = find_mapping_for_cluster(s, i); + DLOG(fprintf(stderr, "%s:%u: mapping %p\n", __FUNCTION__, __LINE__, mapping)); + if (mapping) { + if (mapping->read_only) { + fprintf(stderr, "Tried to write to write-protected file %s\n", + mapping->path); + return -1; + } + + if (mapping->mode & MODE_DIRECTORY) { + int begin = cluster2sector(s, i); + int end = begin + s->sectors_per_cluster, k; + int dir_index; + const direntry_t* direntries; + long_file_name lfn; + + lfn_init(&lfn); + + if (begin < sector_num) + begin = sector_num; + if (end > sector_num + nb_sectors) + end = sector_num + nb_sectors; + dir_index = mapping->dir_index + + 0x10 * (begin - mapping->begin * s->sectors_per_cluster); + direntries = (direntry_t*)(buf + 0x200 * (begin - sector_num)); + + for (k = 0; k < (end - begin) * 0x10; k++) { + /* do not allow non-ASCII filenames */ + if (parse_long_name(&lfn, direntries + k) < 0) { + fprintf(stderr, "Warning: non-ASCII filename\n"); + return -1; + } + /* no access to the direntry of a read-only file */ + else if (is_short_name(direntries+k) && + (direntries[k].attributes & 1)) { + if (memcmp(direntries + k, + array_get(&(s->directory), dir_index + k), + sizeof(direntry_t))) { + fprintf(stderr, "Warning: tried to write to write-protected file\n"); + return -1; + } + } + } + } + i = mapping->end; + } else { + i++; + } + } + + /* + * Use qcow backend. Commit later. + */ + DLOG(fprintf(stderr, "Write to qcow backend: %d + %d\n", (int)sector_num, nb_sectors)); + ret = s->qcow->drv->bdrv_write(s->qcow, sector_num, buf, nb_sectors); + if (ret < 0) { + fprintf(stderr, "Error writing to qcow backend\n"); + return ret; + } + + for (i = start_cluster; i <= end_cluster; i++) + s->used_clusters[i] |= USED_ALLOCATED; + + qemu_mod_timer(s->write_timer, qemu_get_clock(rt_clock) + ticks_per_sec); + return 0; +} + +static int vvfat_is_allocated(BlockDriverState *bs, + int64_t sector_num, int nb_sectors, int* n) +{ + BDRVVVFATState* s = bs->opaque; + *n = s->sector_count - sector_num; + if (*n > nb_sectors) + *n = nb_sectors; + else if (*n < 0) + return 0; + return 1; +} + +static int enable_write(BDRVVVFATState *s) +{ + int error; + int size; + + DLOG(fprintf(stderr, "%s:%u:\n", __FUNCTION__, __LINE__)); + + size = sector2cluster(s, s->sector_count); + s->used_clusters = calloc(size, 1); + + array_init(&(s->commits), sizeof(commit_t)); + + s->qcow_filename = malloc(1024); + get_tmp_filename(s->qcow_filename, 1024); + error = bdrv_create(&bdrv_qcow, s->qcow_filename, s->sector_count, "", 0); + if (error < 0) { + DLOG(fprintf(stderr, "%s:%u: bdrv_create '%s': %d\n", __FUNCTION__, __LINE__, s->qcow_filename, error)); + return -1; + } + + s->qcow = bdrv_new(""); + if (s->qcow == NULL) { + DLOG(fprintf(stderr, "%s:%u: bdrv_new: Out of memory\n", __FUNCTION__, __LINE__)); +#ifndef _WIN32 + unlink(s->qcow_filename); +#endif + return -1; + } + + error = bdrv_open(s->qcow, s->qcow_filename, 0); + if (error < 0) { + DLOG(fprintf(stderr, "%s:%u: bdrv_open '%s': %d\n", __FUNCTION__, __LINE__, s->qcow_filename, error)); +#ifndef _WIN32 + unlink(s->qcow_filename); +#endif + bdrv_delete(s->qcow); + return -1; + } + + s->write_timer = qemu_new_timer(rt_clock, vvfat_write_timer, s); + if (NULL == s->write_timer) { + DLOG(fprintf(stderr, "%s:%u: write_timer: Out of memory\n", __FUNCTION__, __LINE__)); +#ifndef _WIN32 + unlink(s->qcow_filename); +#endif + bdrv_delete(s->qcow); + return -1; + } + + s->qcow->is_temporary = 1; + +#ifndef _WIN32 + unlink(s->qcow_filename); +#endif + + DLOG(fprintf(stderr, "%s:%u: write enabled\n", __FUNCTION__, __LINE__)); + return 0; +} + +static void vvfat_close(BlockDriverState *bs) +{ + BDRVVVFATState *s = bs->opaque; + + if (qemu_timer_pending(s->write_timer)) { + qemu_del_timer(s->write_timer); + vvfat_write_timer(s); + } + + vvfat_close_current_file(s); + + if (s->qcow) { + qemu_free(s->qcow_filename); + + bdrv_delete(s->qcow); + s->qcow = NULL; + } + + array_free(&(s->fat)); + array_free(&(s->directory)); + array_free(&(s->mapping)); + + if(s->cluster_buffer) + free(s->cluster_buffer); +} + +BlockDriver bdrv_vvfat = { + "vvfat", + sizeof(BDRVVVFATState), + NULL, /* no probe for protocols */ + vvfat_open, + vvfat_read, + vvfat_write, + vvfat_close, + NULL, /* ??? Not sure if we can do any meaningful flushing. */ + NULL, + vvfat_is_allocated, + .protocol_name = "fat", +}; + +#ifdef DEBUG +static void +checkpoint(const char *where) +{ + DLOG(fprintf(stderr, "%s:%u: checkpoint(%s)\n", __FUNCTION__, __LINE__, where)); + + assert(((mapping_t*)array_get(&(vvv->mapping), 0))->end == 2); + DLOG(fprintf(stderr, "checkpoint(%s): call check1()\n", where)); + check1(vvv, where); + DLOG(fprintf(stderr, "checkpoint(%s): call check2()\n", where)); + check2(vvv, where); + assert(!vvv->current_mapping || vvv->current_fd || (vvv->current_mapping->mode & MODE_DIRECTORY)); +#if 0 + if (((direntry_t*)vvv->directory.pointer)[1].attributes != 0xf) + fprintf(stderr, "Nonono!\n"); + mapping_t* mapping; + direntry_t* direntry; + assert(vvv->mapping.size >= vvv->mapping.item_size * vvv->mapping.next); + assert(vvv->directory.size >= vvv->directory.item_size * vvv->directory.next); + if (vvv->mapping.next<47) + return; + assert((mapping = array_get(&(vvv->mapping), 47))); + assert(mapping->dir_index < vvv->directory.next); + direntry = array_get(&(vvv->directory), mapping->dir_index); + assert(!memcmp(direntry->name, "USB H ", 11) || direntry->name[0]==0); +#endif + DLOG(fprintf(stderr, "checkpoint(%s): done\n", where)); + return; + /* avoid compiler warnings: */ + hexdump(NULL, 100); + remove_mapping(vvv, 0); + print_mapping(NULL); + print_direntry(NULL); +} +#endif + diff --git a/block.c b/block.c new file mode 100644 index 0000000..4d5a7cf --- /dev/null +++ b/block.c @@ -0,0 +1,631 @@ +/* $Id: block.c,v 1.1 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include + +#ifndef QEMU_OLD +#include "qemu-common.h" +#endif +#include +#ifndef QEMU_OLD +#include "block_int.h" +#endif + +#define SECTOR_BITS 9 +#define SECTOR_SIZE (1 << SECTOR_BITS) + +static BlockDriverState *bdrv_first; +static BlockDriver *first_drv; + +#ifndef ENOMEDIUM +#define ENOMEDIUM ENODEV +#endif + +static void bdrv_close(BlockDriverState *bs); + +static int +path_is_absolute(const char *path) +{ + const char *p; +#ifdef _WIN32 + /* specific case for names like: "\\.\d:" */ + if (*path == '/' || *path == '\\') + return 1; +#endif + p = strchr(path, ':'); + if (p) + p++; + else + p = path; +#ifdef _WIN32 + return (*p == '/' || *p == '\\'); +#else + return (*p == '/'); +#endif +} + +/* if filename is absolute, just copy it to dest. Otherwise, build a + path to it by considering it is relative to base_path. URL are + supported. */ +static void +path_combine(char *dest, int dest_size, + const char *base_path, + const char *filename) +{ + const char *p, *p1; + int len; + + if (dest_size <= 0) + return; + if (path_is_absolute(filename)) { + pstrcpy(dest, dest_size, filename); + } else { + p = strchr(base_path, ':'); + if (p) + p++; + else + p = base_path; + p1 = strrchr(base_path, '/'); +#ifdef _WIN32 + { + const char *p2; + p2 = strrchr(base_path, '\\'); + if (!p1 || p2 > p1) + p1 = p2; + } +#endif + if (p1) + p1++; + else + p1 = base_path; + if (p1 > p) + p = p1; + len = p - base_path; + if (len > dest_size - 1) + len = dest_size - 1; + memcpy(dest, base_path, len); + dest[len] = '\0'; + pstrcat(dest, dest_size, filename); + } +} + +#ifdef _WIN32 +void get_tmp_filename(char *filename, int size) +{ + char temp_dir[MAX_PATH]; + + GetTempPath(MAX_PATH, temp_dir); + GetTempFileName(temp_dir, "x49", 0, filename); +} +#else +void get_tmp_filename(char *filename, int size) +{ + int fd; + + /* XXX: race condition possible */ + pstrcpy(filename, size, "/tmp/x49gp.XXXXXX"); + fd = mkstemp(filename); + close(fd); +} +#endif + +#ifdef _WIN32 +static int is_windows_drive_prefix(const char *filename) +{ + return (((filename[0] >= 'a' && filename[0] <= 'z') || + (filename[0] >= 'A' && filename[0] <= 'Z')) && + filename[1] == ':'); +} + +static int is_windows_drive(const char *filename) +{ + if (is_windows_drive_prefix(filename) && + filename[2] == '\0') + return 1; + if (strstart(filename, "\\\\.\\", NULL) || + strstart(filename, "//./", NULL)) + return 1; + return 0; +} +#endif + +static BlockDriver * +find_protocol(const char *filename) +{ + BlockDriver *drv1; + char protocol[128]; + int len; + const char *p; + +#ifdef _WIN32 + if (is_windows_drive(filename) || + is_windows_drive_prefix(filename)) + return &bdrv_raw; +#endif + p = strchr(filename, ':'); + if (!p) + return &bdrv_raw; + len = p - filename; + if (len > sizeof(protocol) - 1) + len = sizeof(protocol) - 1; + memcpy(protocol, filename, len); + protocol[len] = '\0'; + for(drv1 = first_drv; drv1 != NULL; drv1 = drv1->next) { +fprintf(stderr, "%s:%u: protocol '%s', drv->protocol_name '%s'\n", __FUNCTION__, __LINE__, protocol, drv1->protocol_name); + if (drv1->protocol_name && + !strcmp(drv1->protocol_name, protocol)) { +fprintf(stderr, "%s:%u: protocol '%s', drv %p\n", __FUNCTION__, __LINE__, protocol, drv1); + return drv1; + } + } +fprintf(stderr, "%s:%u: protocol '%s', NULL\n", __FUNCTION__, __LINE__, protocol); + return NULL; +} + +/* XXX: force raw format if block or character device ? It would + simplify the BSD case */ +static BlockDriver * +find_image_format(const char *filename) +{ + int ret, score, score_max; + BlockDriver *drv1, *drv; + uint8_t buf[2048]; + BlockDriverState *bs; + + drv = find_protocol(filename); + /* no need to test disk image formats for vvfat */ + if (drv == &bdrv_vvfat) + return drv; + + ret = bdrv_file_open(&bs, filename, BDRV_O_RDONLY); + if (ret < 0) + return NULL; + ret = bdrv_pread(bs, 0, buf, sizeof(buf)); + bdrv_delete(bs); + if (ret < 0) { + return NULL; + } + + score_max = 0; + for(drv1 = first_drv; drv1 != NULL; drv1 = drv1->next) { + if (drv1->bdrv_probe) { + score = drv1->bdrv_probe(buf, ret, filename); + if (score > score_max) { + score_max = score; + drv = drv1; + } + } + } + return drv; +} + +int +bdrv_create(BlockDriver *drv, + const char *filename, int64_t size_in_sectors, + const char *backing_file, int flags) +{ + if (!drv->bdrv_create) + return -ENOTSUP; + return drv->bdrv_create(filename, size_in_sectors, backing_file, flags); +} + +static void +bdrv_register(BlockDriver *bdrv) +{ + bdrv->next = first_drv; + first_drv = bdrv; +} + +/* create a new block device (by default it is empty) */ +BlockDriverState * +bdrv_new(const char *device_name) +{ + BlockDriverState **pbs, *bs; + + bs = qemu_mallocz(sizeof(BlockDriverState)); + if(!bs) + return NULL; + pstrcpy(bs->device_name, sizeof(bs->device_name), device_name); + if (device_name[0] != '\0') { + /* insert at the end */ + pbs = &bdrv_first; + while (*pbs != NULL) + pbs = &(*pbs)->next; + *pbs = bs; + } + return bs; +} + +/** + * Truncate file to 'offset' bytes (needed only for file protocols) + */ +int +bdrv_truncate(BlockDriverState *bs, int64_t offset) +{ + BlockDriver *drv = bs->drv; + if (!drv) + return -ENOMEDIUM; + if (!drv->bdrv_truncate) + return -ENOTSUP; + return drv->bdrv_truncate(bs, offset); +} + +/** + * Length of a file in bytes. Return < 0 if error or unknown. + */ +int64_t +bdrv_getlength(BlockDriverState *bs) +{ + BlockDriver *drv = bs->drv; + if (!drv) + return -ENOMEDIUM; + if (!drv->bdrv_getlength) { + /* legacy mode */ + return bs->total_sectors * SECTOR_SIZE; + } + return drv->bdrv_getlength(bs); +} + +int +bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags) +{ + BlockDriverState *bs; + int ret; + +fprintf(stderr, "%s:%u: filename '%s'\n", __FUNCTION__, __LINE__, filename); + + bs = bdrv_new(""); + if (!bs) + return -ENOMEM; + ret = bdrv_open(bs, filename, flags | BDRV_O_FILE); + if (ret < 0) { + bdrv_delete(bs); +fprintf(stderr, "%s:%u: '%s': %d\n", __FUNCTION__, __LINE__, filename, ret); + return ret; + } + *pbs = bs; +fprintf(stderr, "%s:%u: return 0\n", __FUNCTION__, __LINE__); + return 0; +} + +int +bdrv_open(BlockDriverState *bs, const char *filename, int flags) +{ + int ret, open_flags; + char backing_filename[1024]; + BlockDriver *drv = NULL; + +fprintf(stderr, "%s:%u: filename '%s'\n", __FUNCTION__, __LINE__, filename); + + bs->read_only = 0; + bs->is_temporary = 0; + bs->encrypted = 0; + + pstrcpy(bs->filename, sizeof(bs->filename), filename); + if (flags & BDRV_O_FILE) { + drv = find_protocol(filename); + if (!drv) { +fprintf(stderr, "%s:%u: drv: %p\n", __FUNCTION__, __LINE__, drv); + return -ENOENT; + } + } else { + if (!drv) { + drv = find_image_format(filename); + if (!drv) { +fprintf(stderr, "%s:%u: drv: %p\n", __FUNCTION__, __LINE__, drv); + return -1; + } + } + } + +fprintf(stderr, "%s:%u: drv: %p\n", __FUNCTION__, __LINE__, drv); + bs->drv = drv; + bs->opaque = qemu_mallocz(drv->instance_size); + if (bs->opaque == NULL && drv->instance_size > 0) { +fprintf(stderr, "%s:%u: no opaque\n", __FUNCTION__, __LINE__); + return -1; + } + /* Note: for compatibility, we open disk image files as RDWR, and + RDONLY as fallback */ + if (!(flags & BDRV_O_FILE)) + open_flags = BDRV_O_RDWR; + else + open_flags = flags & ~(BDRV_O_FILE); + ret = drv->bdrv_open(bs, filename, open_flags); +fprintf(stderr, "%s:%u: drv->bdrv_open: %d\n", __FUNCTION__, __LINE__, ret); + if (ret == -EACCES && !(flags & BDRV_O_FILE)) { + ret = drv->bdrv_open(bs, filename, BDRV_O_RDONLY); + bs->read_only = 1; + } + if (ret < 0) { + qemu_free(bs->opaque); + bs->opaque = NULL; + bs->drv = NULL; +fprintf(stderr, "%s:%u: return %d\n", __FUNCTION__, __LINE__, ret); + return ret; + } + if (drv->bdrv_getlength) { + bs->total_sectors = bdrv_getlength(bs) >> SECTOR_BITS; + } +#ifndef _WIN32 + if (bs->is_temporary) { + unlink(filename); + } +#endif + if (bs->backing_file[0] != '\0') { + /* if there is a backing file, use it */ + bs->backing_hd = bdrv_new(""); + if (!bs->backing_hd) { + fail: + bdrv_close(bs); +fprintf(stderr, "%s:%u: return -ENOMEM\n", __FUNCTION__, __LINE__); + return -ENOMEM; + } +fprintf(stderr, "%s:%u: combine '%s' '%s'\n", __FUNCTION__, __LINE__, filename, bs->backing_file); + path_combine(backing_filename, sizeof(backing_filename), + filename, bs->backing_file); +fprintf(stderr, "%s:%u: combine: '%s'\n", __FUNCTION__, __LINE__, backing_filename); + if (bdrv_open(bs->backing_hd, backing_filename, 0) < 0) { +fprintf(stderr, "%s:%u: backing fail\n", __FUNCTION__, __LINE__); + goto fail; + } + } + + /* call the change callback */ + bs->media_changed = 1; + if (bs->change_cb) + bs->change_cb(bs->change_opaque); + +fprintf(stderr, "%s:%u: return 0\n", __FUNCTION__, __LINE__); + return 0; +} + +static void +bdrv_close(BlockDriverState *bs) +{ + if (NULL == bs->drv) + return; + + /* call the change callback */ + bs->media_changed = 1; + if (bs->change_cb) + bs->change_cb(bs->change_opaque); + + if (bs->backing_hd) + bdrv_delete(bs->backing_hd); + + bs->drv->bdrv_close(bs); + +#ifdef _WIN32 + if (bs->is_temporary) { + unlink(bs->filename); + } +#endif + + qemu_free(bs->opaque); + bs->opaque = NULL; + bs->drv = NULL; +} + +void +bdrv_delete(BlockDriverState *bs) +{ + /* XXX: remove the driver list */ + bdrv_close(bs); + qemu_free(bs); +} + +/* return < 0 if error. See bdrv_write() for the return codes */ +int +bdrv_read(BlockDriverState * bs, int64_t sector_num, + uint8_t * buf, int nb_sectors) +{ + BlockDriver *drv = bs->drv; + + if (!drv) + return -ENOMEDIUM; + + if (sector_num == 0 && bs->boot_sector_enabled && nb_sectors > 0) { + memcpy(buf, bs->boot_sector_data, 512); + sector_num++; + nb_sectors--; + buf += 512; + if (nb_sectors == 0) + return 0; + } + if (drv->bdrv_pread) { + int ret, len; + + len = nb_sectors * 512; + ret = drv->bdrv_pread(bs, sector_num * 512, buf, len); + if (ret < 0) + return ret; + else if (ret != len) + return -EINVAL; + else + return 0; + } else { + return drv->bdrv_read(bs, sector_num, buf, nb_sectors); + } +} + +/* Return < 0 if error. Important errors are: + -EIO generic I/O error (may happen for all errors) + -ENOMEDIUM No media inserted. + -EINVAL Invalid sector number or nb_sectors + -EACCES Trying to write a read-only device +*/ +static int +bdrv_write(BlockDriverState * bs, int64_t sector_num, + const uint8_t * buf, int nb_sectors) +{ + BlockDriver *drv = bs->drv; + + if (!bs->drv) + return -ENOMEDIUM; + if (bs->read_only) + return -EACCES; + if (sector_num == 0 && bs->boot_sector_enabled && nb_sectors > 0) { + memcpy(bs->boot_sector_data, buf, 512); + } + if (drv->bdrv_pwrite) { + int ret, len; + + len = nb_sectors * 512; + ret = drv->bdrv_pwrite(bs, sector_num * 512, buf, len); + if (ret < 0) + return ret; + else if (ret != len) + return -EIO; + else + return 0; + } else { + return drv->bdrv_write(bs, sector_num, buf, nb_sectors); + } +} + +static int +bdrv_pread_em(BlockDriverState * bs, int64_t offset, uint8_t * buf, int count1) +{ + uint8_t tmp_buf[SECTOR_SIZE]; + int len, nb_sectors, count; + int64_t sector_num; + + count = count1; + /* first read to align to sector start */ + len = (SECTOR_SIZE - offset) & (SECTOR_SIZE - 1); + if (len > count) + len = count; + sector_num = offset >> SECTOR_BITS; + if (len > 0) { + if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0) + return -EIO; + memcpy(buf, tmp_buf + (offset & (SECTOR_SIZE - 1)), len); + count -= len; + if (count == 0) + return count1; + sector_num++; + buf += len; + } + + /* read the sectors "in place" */ + nb_sectors = count >> SECTOR_BITS; + if (nb_sectors > 0) { + if (bdrv_read(bs, sector_num, buf, nb_sectors) < 0) + return -EIO; + sector_num += nb_sectors; + len = nb_sectors << SECTOR_BITS; + buf += len; + count -= len; + } + + /* add data from the last sector */ + if (count > 0) { + if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0) + return -EIO; + memcpy(buf, tmp_buf, count); + } + return count1; +} + +static int +bdrv_pwrite_em(BlockDriverState * bs, int64_t offset, + const uint8_t * buf, int count1) +{ + uint8_t tmp_buf[SECTOR_SIZE]; + int len, nb_sectors, count; + int64_t sector_num; + + count = count1; + /* first write to align to sector start */ + len = (SECTOR_SIZE - offset) & (SECTOR_SIZE - 1); + if (len > count) + len = count; + sector_num = offset >> SECTOR_BITS; + if (len > 0) { + if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0) + return -EIO; + memcpy(tmp_buf + (offset & (SECTOR_SIZE - 1)), buf, len); + if (bdrv_write(bs, sector_num, tmp_buf, 1) < 0) + return -EIO; + count -= len; + if (count == 0) + return count1; + sector_num++; + buf += len; + } + + /* write the sectors "in place" */ + nb_sectors = count >> SECTOR_BITS; + if (nb_sectors > 0) { + if (bdrv_write(bs, sector_num, buf, nb_sectors) < 0) + return -EIO; + sector_num += nb_sectors; + len = nb_sectors << SECTOR_BITS; + buf += len; + count -= len; + } + + /* add data from the last sector */ + if (count > 0) { + if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0) + return -EIO; + memcpy(tmp_buf, buf, count); + if (bdrv_write(bs, sector_num, tmp_buf, 1) < 0) + return -EIO; + } + return count1; +} + +/** + * Read with byte offsets (needed only for file protocols) + */ +int +bdrv_pread(BlockDriverState * bs, int64_t offset, void *buf1, int count1) +{ + BlockDriver *drv = bs->drv; + + if (!drv) + return -ENOMEDIUM; + if (!drv->bdrv_pread) + return bdrv_pread_em(bs, offset, buf1, count1); + return drv->bdrv_pread(bs, offset, buf1, count1); +} + +/** + * Write with byte offsets (needed only for file protocols) + */ +int +bdrv_pwrite(BlockDriverState * bs, int64_t offset, const void *buf1, int count1) +{ + BlockDriver *drv = bs->drv; + + if (!drv) + return -ENOMEDIUM; + if (!drv->bdrv_pwrite) + return bdrv_pwrite_em(bs, offset, buf1, count1); + return drv->bdrv_pwrite(bs, offset, buf1, count1); +} + +void +bdrv_flush(BlockDriverState *bs) +{ + if (bs->drv->bdrv_flush) + bs->drv->bdrv_flush(bs); + if (bs->backing_hd) + bdrv_flush(bs->backing_hd); +} + +void +bdrv_init(void) +{ + /* bdrv_register(&bdrv_raw); */ + /* bdrv_register(&bdrv_host_device); */ + bdrv_register(&bdrv_qcow); + bdrv_register(&bdrv_vvfat); +} diff --git a/boot-49g+.bin b/boot-49g+.bin new file mode 100644 index 0000000000000000000000000000000000000000..2aa6736ac5b7108dccfae46b86f6fce6cbe394a2 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/boot-50g.bin b/boot-50g.bin new file mode 100644 index 0000000000000000000000000000000000000000..674556e29f424a59b74b9e5489825853b205a672 GIT binary patch literal 16384 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

    +`*Iq%xllmHyH710aGzSi)5$~Zeh%^cVq|xY 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 R{u<`jN4&q8!Zx4F{ck_{g!TXc literal 0 HcmV?d00001 diff --git a/boot.bin b/boot.bin new file mode 100644 index 0000000000000000000000000000000000000000..02659be99f82c7549b6e1e0799edf21205598bd0 GIT binary patch literal 16384 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

    +`*Iq%xllmHyH710aGzSi)5$~Zeh%^cVq|xY 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 W{^ng%f5}BNXI}E9i-m1Im;2vASA`V- literal 0 HcmV?d00001 diff --git a/config.tmpl b/config.tmpl new file mode 100644 index 0000000..d7ac773 --- /dev/null +++ b/config.tmpl @@ -0,0 +1,13 @@ +[x49gp] +basename= +[gui] +name=hp50g +image=hp50g.png +[flash] +filename=flash-50g +[sram] +filename=sram +[s3c2410-sram] +filename=s3c2410-sram +[s3c2410-sdi] +filename=sdcard.dmg diff --git a/flash.c b/flash.c new file mode 100644 index 0000000..f13fac4 --- /dev/null +++ b/flash.c @@ -0,0 +1,639 @@ +/* $Id: flash.c,v 1.18 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#define FLASH_STATE_NORMAL 0 + +#define FLASH_STATE_UNLOCK1 1 +#define FLASH_STATE_UNLOCK2 2 + +#define FLASH_STATE_ERASE1 3 +#define FLASH_STATE_ERASE2 4 +#define FLASH_STATE_ERASE3 5 + +#define FLASH_STATE_SOFTWARE_EXIT1 6 +#define FLASH_STATE_SOFTWARE_EXIT2 7 +#define FLASH_STATE_CFI_QUERY_EXIT1 8 +#define FLASH_STATE_CFI_QUERY_EXIT2 9 + +#define FLASH_STATE_SOFTWARE_ID 10 +#define FLASH_STATE_CFI_QUERY 11 +#define FLASH_STATE_WORD_PROG 12 + +typedef struct { + void *data; + int state; + unsigned short vendor_ID; + unsigned short device_ID; + const unsigned short *cfi_data; + uint32_t cfi_size; + uint32_t sector_size; + uint32_t block_size; + int fd; + size_t size; + + uint32_t iotype; + uint32_t offset; +} x49gp_flash_t; + +#define SST29VF160_VENDOR_ID 0x00bf +#define SST29VF160_DEVICE_ID 0x2782 + +#define SST29VF160_SECTOR_SIZE 0x00001000 +#define SST29VF160_BLOCK_SIZE 0x00010000 +#define SST29VF160_SIZE 0x00200000 + +static const unsigned short sst29vf160_cfi_data[] = +{ + [0x10] = 0x0051, + [0x11] = 0x0052, + [0x12] = 0x0059, + [0x13] = 0x0001, + [0x14] = 0x0007, + [0x15] = 0x0000, + [0x16] = 0x0000, + [0x17] = 0x0000, + [0x18] = 0x0000, + [0x19] = 0x0000, + [0x1a] = 0x0000, + + [0x1b] = 0x0027, + [0x1c] = 0x0036, + [0x1d] = 0x0000, + [0x1e] = 0x0000, + [0x1f] = 0x0004, + [0x20] = 0x0000, + [0x21] = 0x0004, + [0x23] = 0x0006, + [0x23] = 0x0001, + [0x24] = 0x0000, + [0x25] = 0x0001, + [0x26] = 0x0001, + + [0x27] = 0x0015, + [0x28] = 0x0001, + [0x29] = 0x0000, + [0x2a] = 0x0000, + [0x2b] = 0x0000, + [0x2c] = 0x0002, + [0x2d] = 0x00ff, + [0x2e] = 0x0001, + [0x2f] = 0x0010, + [0x30] = 0x0000, + [0x31] = 0x003f, + [0x32] = 0x0000, + [0x33] = 0x0000, + [0x34] = 0x0001 +}; +#define SST29VF160_CFI_SIZE (sizeof(sst29vf160_cfi_data) / sizeof(sst29vf160_cfi_data[0])) + +static void +flash_state_reset(x49gp_flash_t *flash) +{ + if (flash->state != FLASH_STATE_NORMAL) { + cpu_register_physical_memory(0x00000000, SST29VF160_SIZE, + flash->offset | flash->iotype | IO_MEM_ROMD); + flash->state = FLASH_STATE_NORMAL; + } +} + +static uint32_t +flash_get_halfword(x49gp_flash_t *flash, uint32_t offset) +{ + uint8_t *datap = flash->data; + uint16_t data; + + switch (flash->state) { + default: + flash_state_reset(flash); + /* fall through */ + + case FLASH_STATE_NORMAL: + data = lduw_p(datap + offset); + break; + + case FLASH_STATE_SOFTWARE_ID: + if (offset & 2) { + data = flash->device_ID; + } else { + data = flash->vendor_ID; + } + break; + + case FLASH_STATE_CFI_QUERY: + if (offset < flash->cfi_size) { + data = flash->cfi_data[offset >> 1]; + } else { + data = 0x0000; + } + break; + } + + return data; +} + +static void +flash_put_halfword(x49gp_flash_t *flash, uint32_t offset, uint32_t data) +{ + uint8_t *datap = flash->data; + uint16_t temp; + + data &= 0xffff; + + switch (flash->state) { + default: + flash_state_reset(flash); + /* fall through */ + + case FLASH_STATE_NORMAL: + if (((offset >> 1) == 0x5555) && ((data & 0xff) == 0xaa)) { + flash->state = FLASH_STATE_UNLOCK1; + cpu_register_physical_memory(0x00000000, SST29VF160_SIZE, flash->iotype); + } + break; + + case FLASH_STATE_UNLOCK1: + if (((offset >> 1) == 0x2aaa) && ((data & 0xff) == 0x55)) { + flash->state = FLASH_STATE_UNLOCK2; + } else { + flash_state_reset(flash); + } + break; + + case FLASH_STATE_UNLOCK2: + if ((offset >> 1) == 0x5555) { + switch (data & 0xff) { + case 0xa0: + flash->state = FLASH_STATE_WORD_PROG; + break; + case 0x80: + flash->state = FLASH_STATE_ERASE1; + break; + case 0x90: + flash->state = FLASH_STATE_SOFTWARE_ID; + break; + case 0x98: + flash->state = FLASH_STATE_CFI_QUERY; + break; + default: + flash_state_reset(flash); + break; + } + } else { + flash_state_reset(flash); + } + break; + + case FLASH_STATE_ERASE1: + if (((offset >> 1) == 0x5555) && ((data & 0xff) == 0xaa)) { + flash->state = FLASH_STATE_ERASE2; + } else { + flash_state_reset(flash); + } + break; + + case FLASH_STATE_ERASE2: + if (((offset >> 1) == 0x2aaa) && ((data & 0xff) == 0x55)) { + flash->state = FLASH_STATE_ERASE3; + } else { + flash_state_reset(flash); + } + break; + + case FLASH_STATE_SOFTWARE_EXIT1: + if (((offset >> 1) == 0x2aaa) && ((data & 0xff) == 0x55)) { + flash->state = FLASH_STATE_SOFTWARE_EXIT2; + } else { + flash->state = FLASH_STATE_SOFTWARE_ID; + } + break; + + case FLASH_STATE_SOFTWARE_EXIT2: + if (((offset >> 1) == 0x5555) && ((data & 0xff) == 0xf0)) { + flash_state_reset(flash); + } else { + flash->state = FLASH_STATE_SOFTWARE_ID; + } + break; + + case FLASH_STATE_CFI_QUERY_EXIT1: + if (((offset >> 1) == 0x2aaa) && ((data & 0xff) == 0x55)) { + flash->state = FLASH_STATE_CFI_QUERY_EXIT2; + } else { + flash->state = FLASH_STATE_CFI_QUERY; + } + break; + + case FLASH_STATE_CFI_QUERY_EXIT2: + if (((offset >> 1) == 0x5555) && ((data & 0xff) == 0xf0)) { + flash_state_reset(flash); + } else { + flash->state = FLASH_STATE_CFI_QUERY; + } + break; + + case FLASH_STATE_SOFTWARE_ID: + if (((offset >> 1) == 0x5555) && ((data & 0xff) == 0xaa)) { + flash->state = FLASH_STATE_SOFTWARE_EXIT1; + } else if ((data & 0xff) == 0xf0) { + flash_state_reset(flash); + } + break; + + case FLASH_STATE_CFI_QUERY: + if (((offset >> 1) == 0x5555) && ((data & 0xff) == 0xaa)) { + flash->state = FLASH_STATE_CFI_QUERY_EXIT1; + } else if ((data & 0xff) == 0xf0) { + flash_state_reset(flash); + } + break; + + case FLASH_STATE_WORD_PROG: + temp = lduw_p(datap + offset); + stw_p(datap + offset, data & temp); + +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("write FLASH 2 (state %u) at offset %08x: %04x, result: %04x\n", + flash->state, offset, data, lduw_p(datap + offset)); +#endif + + flash_state_reset(flash); + break; + + case FLASH_STATE_ERASE3: + switch (data & 0xff) { + case 0x10: /* Chip Erase */ +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("erase FLASH %08x %08x\n", 0, SST29VF160_SIZE); +#endif + memset(datap, 0xff, SST29VF160_SIZE); + break; + + case 0x30: /* Sector Erase */ +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("erase FLASH %08x %08x\n", + (offset & ~(flash->sector_size - 1)), + flash->sector_size); +#endif + memset(datap + (offset & ~(flash->sector_size - 1)), 0xff, flash->sector_size); + +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("erase FLASH %08x: %04x, %08x: %04x, %08x: %04x\n", + offset, lduw_p(datap + offset), + offset + 0x800, lduw_p(datap + offset + 0x800), + offset + 0xffc, lduw_p(datap + offset + 0xffc)); +#endif + break; + + case 0x50: /* Block Erase */ +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("erase FLASH %08x %08x\n", + (offset & ~(flash->block_size - 1)), + flash->block_size); +#endif + memset(datap + (offset & ~(flash->block_size - 1)), 0xff, flash->block_size); + break; + default: + break; + } + + flash_state_reset(flash); + break; + } +} + +static uint32_t +flash_readb(void *opaque, target_phys_addr_t offset) +{ + x49gp_flash_t *flash = opaque; + uint8_t *datap = flash->data; + unsigned short temp; + uint32_t shift; + unsigned char data; + + if (flash->state == FLASH_STATE_NORMAL) { + offset -= (target_phys_addr_t) phys_ram_base; + data = *(datap + offset); + } else { + offset -= 0; + temp = flash_get_halfword(flash, offset & ~(1)); + shift = (offset & 1) << 3; + data = (temp >> shift) & 0xff; + } + +#ifdef DEBUG_X49GP_FLASH_READ + printf("read FLASH 1 (state %u) at offset %08x: %02x\n", + flash->state, offset, data); +#endif + + return data; +} + +static uint32_t +flash_readw(void *opaque, target_phys_addr_t offset) +{ + x49gp_flash_t *flash = opaque; + uint8_t *datap = flash->data; + uint32_t data; + + if (flash->state == FLASH_STATE_NORMAL) { + offset -= (target_phys_addr_t) phys_ram_base; + data = lduw_p(datap + offset); + } else { + offset -= 0; + data = flash_get_halfword(flash, offset); + } + +#ifdef DEBUG_X49GP_FLASH_READ + printf("read FLASH 2 (state %u) at offset %08x: %04x\n", + flash->state, offset, data); +#endif + + return data; +} + +static uint32_t +flash_readl(void *opaque, target_phys_addr_t offset) +{ + x49gp_flash_t *flash = opaque; + uint8_t *datap = flash->data; + uint32_t data; + + if (flash->state == FLASH_STATE_NORMAL) { + offset -= (target_phys_addr_t) phys_ram_base; + data = ldl_p(datap + offset); + } else { + offset -= 0; + data = (flash_get_halfword(flash, offset + 2) << 16) | + (flash_get_halfword(flash, offset + 0) << 0); + } + +#ifdef DEBUG_X49GP_FLASH_READ + printf("read FLASH 4 (state %u) at offset %08x: %08x\n", + flash->state, offset, data); +#endif + + return data; +} + +static void +flash_writeb(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + x49gp_flash_t *flash = opaque; + uint32_t shift; + + if (flash->state == FLASH_STATE_NORMAL) + offset -= (target_phys_addr_t) phys_ram_base; + else + offset -= 0; + + data &= 0xff; + +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("write FLASH 1 (state %u) at offset %08x: %02x\n", + flash->state, offset, data); +#endif + + /* + * This does not issue read-modify-write, i.e. you will get + * broken data in FLASH memory. This would be the case with + * real hardware, too. + */ + shift = (offset & 1) << 3; + flash_put_halfword(flash, offset & ~(1), data << shift); +} + +static void +flash_writew(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + x49gp_flash_t *flash = opaque; + + if (flash->state == FLASH_STATE_NORMAL) + offset -= (target_phys_addr_t) phys_ram_base; + else + offset -= 0; + + data &= 0xffff; + +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("write FLASH 2 (state %u) at offset %08x: %04x\n", + flash->state, offset, data); +#endif + + flash_put_halfword(flash, offset, data); +} + +static void +flash_writel(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + x49gp_flash_t *flash = opaque; + + if (flash->state == FLASH_STATE_NORMAL) + offset -= (target_phys_addr_t) phys_ram_base; + else + offset -= 0; + +#ifdef DEBUG_X49GP_FLASH_WRITE + printf("write FLASH 4 (state %u) at offset %08x: %08x\n", + flash->state, offset, data); +#endif + + flash_put_halfword(flash, offset + 2, (data >> 16) & 0xffff); + flash_put_halfword(flash, offset + 0, (data >> 0) & 0xffff); +} + +static int +flash_load(x49gp_module_t *module, GKeyFile *key) +{ + x49gp_flash_t *flash = module->user_data; + char *filename; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + filename = x49gp_module_get_filename(module, key, "filename"); + if (NULL == filename) { + fprintf(stderr, "%s: %s:%u: key \"filename\" not found\n", + module->name, __FUNCTION__, __LINE__); + return -1; + } + + flash->fd = open(filename, O_RDWR); + if (flash->fd < 0) { + fprintf(stderr, "%s: %s:%u: open %s: %s\n", + module->name, __FUNCTION__, __LINE__, + filename, strerror(errno)); + g_free(filename); + return -1; + } + + flash->data = mmap(phys_ram_base + flash->offset, SST29VF160_SIZE, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, + flash->fd, 0); + if (flash->data == (void *) -1) { + fprintf(stderr, "%s: %s:%u: mmap %s: %s\n", + module->name, __FUNCTION__, __LINE__, + filename, strerror(errno)); + g_free(filename); + close(flash->fd); + flash->fd = -1; + return -1; + } + flash->size = SST29VF160_SIZE; + + g_free(filename); + return 0; +} + +static int +flash_save(x49gp_module_t *module, GKeyFile *config) +{ + x49gp_flash_t *flash = module->user_data; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + error = msync(flash->data, flash->size, MS_ASYNC); + if (error) { + fprintf(stderr, "%s:%u: msync: %s\n", + __FUNCTION__, __LINE__, strerror(errno)); + return error; + } + + error = fsync(flash->fd); + if (error) { + fprintf(stderr, "%s:%u: fsync: %s\n", + __FUNCTION__, __LINE__, strerror(errno)); + return error; + } + + return 0; +} + +static int +flash_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + x49gp_flash_t *flash = module->user_data; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + flash_state_reset(flash); + return 0; +} + +static CPUReadMemoryFunc *flash_readfn[] = +{ + flash_readb, + flash_readw, + flash_readl +}; + +static CPUWriteMemoryFunc *flash_writefn[] = +{ + flash_writeb, + flash_writew, + flash_writel +}; + +static int +flash_init(x49gp_module_t *module) +{ + x49gp_flash_t *flash; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + flash = malloc(sizeof(x49gp_flash_t)); + if (NULL == flash) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + module->name, __FUNCTION__, __LINE__); + return -1; + } + memset(flash, 0, sizeof(x49gp_flash_t)); + + flash->vendor_ID = SST29VF160_VENDOR_ID; + flash->device_ID = SST29VF160_DEVICE_ID; + flash->cfi_data = sst29vf160_cfi_data; + flash->cfi_size = SST29VF160_CFI_SIZE; + flash->sector_size = SST29VF160_SECTOR_SIZE; + flash->block_size = SST29VF160_BLOCK_SIZE; + flash->fd = -1; + + module->user_data = flash; + +#ifdef QEMU_OLD + flash->iotype = cpu_register_io_memory(0, flash_readfn, + flash_writefn, flash); +#else + flash->iotype = cpu_register_io_memory(flash_readfn, + flash_writefn, flash); +#endif + + flash->data = (void *) -1; + flash->offset = phys_ram_size; + phys_ram_size += SST29VF160_SIZE; + + cpu_register_physical_memory(0x00000000, SST29VF160_SIZE, + flash->offset | flash->iotype | IO_MEM_ROMD); + + return 0; +} + +static int +flash_exit(x49gp_module_t *module) +{ + x49gp_flash_t *flash; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + flash = module->user_data; + + if (flash->data != (void *) -1) { + munmap(flash->data, flash->size); + } + if (flash->fd) { + close(flash->fd); + } + + free(flash); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_flash_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "flash", flash_init, flash_exit, + flash_reset, flash_load, flash_save, NULL, + &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/gdbstub.c b/gdbstub.c new file mode 100644 index 0000000..775a239 --- /dev/null +++ b/gdbstub.c @@ -0,0 +1,672 @@ +/* + * gdb server stub + * + * Copyright (c) 2003-2005 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "gdbstub.h" + +#ifdef _WIN32 +/* XXX: these constants may be independent of the host ones even for Unix */ +#ifndef SIGTRAP +#define SIGTRAP 5 +#endif +#ifndef SIGINT +#define SIGINT 2 +#endif +#else +#include +#endif + +#define DEBUG_GDB + +enum RSState { + RS_IDLE, + RS_GETLINE, + RS_CHKSUM1, + RS_CHKSUM2, + RS_SYSCALL, +}; + +typedef struct GDBState { + CPUState *env; /* current CPU */ + enum RSState state; /* parsing state */ + char line_buf[4096]; + int line_buf_index; + int line_csum; + char last_packet[4100]; + int last_packet_len; + int fd; + int running_state; +} GDBState; + +/* XXX: This is not thread safe. Do we care? */ +static int gdbserver_fd = -1; + +/* XXX: remove this hack. */ +static GDBState gdbserver_state; + +static int get_char(GDBState *s) +{ + uint8_t ch; + int ret; + + for(;;) { + ret = recv(s->fd, &ch, 1, 0); + if (ret < 0) { + if (errno != EINTR && errno != EAGAIN) + return -1; + } else if (ret == 0) { + return -1; + } else { + break; + } + } + return ch; +} + +/* GDB stub state for use by semihosting syscalls. */ +static GDBState *gdb_syscall_state; +static gdb_syscall_complete_cb gdb_current_syscall_cb; + +enum { + GDB_SYS_UNKNOWN, + GDB_SYS_ENABLED, + GDB_SYS_DISABLED, +} gdb_syscall_mode; + +/* If gdb is connected when the first semihosting syscall occurs then use + remote gdb syscalls. Otherwise use native file IO. */ +int use_gdb_syscalls(void) +{ + if (gdb_syscall_mode == GDB_SYS_UNKNOWN) { + gdb_syscall_mode = (gdb_syscall_state ? GDB_SYS_ENABLED + : GDB_SYS_DISABLED); + } + return gdb_syscall_mode == GDB_SYS_ENABLED; +} + +static void put_buffer(GDBState *s, const uint8_t *buf, int len) +{ + int ret; + + while (len > 0) { + ret = send(s->fd, buf, len, 0); + if (ret < 0) { + if (errno != EINTR && errno != EAGAIN) + return; + } else { + buf += ret; + len -= ret; + } + } +} + +static inline int fromhex(int v) +{ + if (v >= '0' && v <= '9') + return v - '0'; + else if (v >= 'A' && v <= 'F') + return v - 'A' + 10; + else if (v >= 'a' && v <= 'f') + return v - 'a' + 10; + else + return 0; +} + +static inline int tohex(int v) +{ + if (v < 10) + return v + '0'; + else + return v - 10 + 'a'; +} + +static void memtohex(char *buf, const uint8_t *mem, int len) +{ + int i, c; + char *q; + q = buf; + for(i = 0; i < len; i++) { + c = mem[i]; + *q++ = tohex(c >> 4); + *q++ = tohex(c & 0xf); + } + *q = '\0'; +} + +static void hextomem(uint8_t *mem, const char *buf, int len) +{ + int i; + + for(i = 0; i < len; i++) { + mem[i] = (fromhex(buf[0]) << 4) | fromhex(buf[1]); + buf += 2; + } +} + +/* return -1 if error, 0 if OK */ +static int put_packet(GDBState *s, char *buf) +{ + int len, csum, i; + char *p; + +#ifdef DEBUG_GDB + printf("reply='%s'\n", buf); +#endif + + for(;;) { + p = s->last_packet; + *(p++) = '$'; + len = strlen(buf); + memcpy(p, buf, len); + p += len; + csum = 0; + for(i = 0; i < len; i++) { + csum += buf[i]; + } + *(p++) = '#'; + *(p++) = tohex((csum >> 4) & 0xf); + *(p++) = tohex((csum) & 0xf); + + s->last_packet_len = p - s->last_packet; + put_buffer(s, (uint8_t *) s->last_packet, s->last_packet_len); + + i = get_char(s); + if (i < 0) + return -1; + if (i == '+') + break; + } + return 0; +} + +static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf) +{ + int i; + uint8_t *ptr; + + ptr = mem_buf; + /* 16 core integer registers (4 bytes each). */ + for (i = 0; i < 16; i++) + { + *(uint32_t *)ptr = tswapl(env->regs[i]); + ptr += 4; + } + /* 8 FPA registers (12 bytes each), FPS (4 bytes). + Not yet implemented. */ + memset (ptr, 0, 8 * 12 + 4); + ptr += 8 * 12 + 4; + /* CPSR (4 bytes). */ + *(uint32_t *)ptr = tswapl (cpsr_read(env)); + ptr += 4; + + return ptr - mem_buf; +} + +static void cpu_gdb_write_registers(CPUState *env, uint8_t *mem_buf, int size) +{ + int i; + uint8_t *ptr; + + ptr = mem_buf; + /* Core integer registers. */ + for (i = 0; i < 16; i++) + { + env->regs[i] = tswapl(*(uint32_t *)ptr); + ptr += 4; + } + /* Ignore FPA regs and scr. */ + ptr += 8 * 12 + 4; + cpsr_write (env, tswapl(*(uint32_t *)ptr), 0xffffffff); +} + +static int gdb_handle_packet(GDBState *s, CPUState *env, const char *line_buf) +{ + const char *p; + int ch, reg_size, type; + char buf[4096]; + uint8_t mem_buf[2000]; + uint32_t *registers; + target_ulong addr, len; + +#ifdef DEBUG_GDB + printf("command='%s'\n", line_buf); +#endif + p = line_buf; + ch = *p++; + switch(ch) { + case '?': + /* TODO: Make this return the correct value for user-mode. */ + snprintf(buf, sizeof(buf), "S%02x", SIGTRAP); + put_packet(s, buf); + break; + case 'c': + if (*p != '\0') { + addr = strtoull(p, (char **)&p, 16); + env->regs[15] = addr; + } + s->running_state = 1; + return RS_IDLE; + case 's': + if (*p != '\0') { + addr = strtoul(p, (char **)&p, 16); + env->regs[15] = addr; + } + cpu_single_step(env, 1); + s->running_state = 1; + return RS_IDLE; + case 'F': + { + target_ulong ret; + target_ulong err; + + ret = strtoull(p, (char **)&p, 16); + if (*p == ',') { + p++; + err = strtoull(p, (char **)&p, 16); + } else { + err = 0; + } + if (*p == ',') + p++; + type = *p; + if (gdb_current_syscall_cb) + gdb_current_syscall_cb(s->env, ret, err); + if (type == 'C') { + put_packet(s, "T02"); + } else { + s->running_state = 1; + } + } + break; + case 'g': + reg_size = cpu_gdb_read_registers(env, mem_buf); + memtohex(buf, mem_buf, reg_size); + put_packet(s, buf); + break; + case 'G': + registers = (void *)mem_buf; + len = strlen(p) / 2; + hextomem((uint8_t *)registers, p, len); + cpu_gdb_write_registers(env, mem_buf, len); + put_packet(s, "OK"); + break; + case 'm': + addr = strtoull(p, (char **)&p, 16); + if (*p == ',') + p++; + len = strtoull(p, NULL, 16); + if (cpu_memory_rw_debug(env, addr, mem_buf, len, 0) != 0) { + put_packet (s, "E14"); + } else { + memtohex(buf, mem_buf, len); + put_packet(s, buf); + } + break; + case 'M': + addr = strtoull(p, (char **)&p, 16); + if (*p == ',') + p++; + len = strtoull(p, (char **)&p, 16); + if (*p == ':') + p++; + hextomem(mem_buf, p, len); + if (cpu_memory_rw_debug(env, addr, mem_buf, len, 1) != 0) + put_packet(s, "E14"); + else + put_packet(s, "OK"); + break; + case 'Z': + type = strtoul(p, (char **)&p, 16); + if (*p == ',') + p++; + addr = strtoull(p, (char **)&p, 16); + if (*p == ',') + p++; + len = strtoull(p, (char **)&p, 16); + if (type == 0 || type == 1) { + if ( +#ifdef QEMU_OLD + cpu_breakpoint_insert(env, addr) < 0 +#else + cpu_breakpoint_insert(env, addr, BP_GDB, NULL) < 0 +#endif + ) + goto breakpoint_error; + put_packet(s, "OK"); + } else { + breakpoint_error: + put_packet(s, "E22"); + } + break; + case 'z': + type = strtoul(p, (char **)&p, 16); + if (*p == ',') + p++; + addr = strtoull(p, (char **)&p, 16); + if (*p == ',') + p++; + len = strtoull(p, (char **)&p, 16); + if (type == 0 || type == 1) { +#ifdef QEMU_OLD + cpu_breakpoint_remove(env, addr); +#else + cpu_breakpoint_remove(env, addr, BP_GDB); +#endif + put_packet(s, "OK"); + } else { + goto breakpoint_error; + } + break; + default: + // unknown_command: + /* put empty packet */ + buf[0] = '\0'; + put_packet(s, buf); + break; + } + return RS_IDLE; +} + +extern void tb_flush(CPUState *env); + +/* Send a gdb syscall request. + This accepts limited printf-style format specifiers, specifically: + %x - target_ulong argument printed in hex. + %s - string pointer (target_ulong) and length (int) pair. */ +void gdb_do_syscall(gdb_syscall_complete_cb cb, char *fmt, ...) +{ + va_list va; + char buf[256]; + char *p; + target_ulong addr; + GDBState *s; + + s = gdb_syscall_state; + if (!s) + return; + gdb_current_syscall_cb = cb; + s->state = RS_IDLE; + va_start(va, fmt); + p = buf; + *(p++) = 'F'; + while (*fmt) { + if (*fmt == '%') { + fmt++; + switch (*fmt++) { + case 'x': + addr = va_arg(va, target_ulong); + p += sprintf(p, TARGET_FMT_lx, addr); + break; + case 's': + addr = va_arg(va, target_ulong); + p += sprintf(p, TARGET_FMT_lx "/%x", addr, va_arg(va, int)); + break; + default: + fprintf(stderr, "gdbstub: Bad syscall format string '%s'\n", + fmt - 1); + break; + } + } else { + *(p++) = *(fmt++); + } + } + va_end(va); + put_packet(s, buf); +#ifdef QEMU_OLD + cpu_interrupt(s->env, CPU_INTERRUPT_EXIT); +#else + cpu_exit(s->env); +#endif +} + +static void gdb_read_byte(GDBState *s, int ch) +{ + CPUState *env = s->env; + char buf[256]; + int i, csum; + char reply[1]; + +printf("%s: state %u, byte %02x (%c)\n", __FUNCTION__, s->state, ch, ch); +fflush(stdout); + + switch(s->state) { + case RS_IDLE: + if (ch == '$') { + s->line_buf_index = 0; + s->state = RS_GETLINE; + } else if (ch == 0x03) { + snprintf(buf, sizeof(buf), "S%02x", SIGINT); + put_packet(s, buf); + } + break; + case RS_GETLINE: + if (ch == '#') { + s->state = RS_CHKSUM1; + } else if (s->line_buf_index >= sizeof(s->line_buf) - 1) { + s->state = RS_IDLE; + } else { + s->line_buf[s->line_buf_index++] = ch; + } + break; + case RS_CHKSUM1: + s->line_buf[s->line_buf_index] = '\0'; + s->line_csum = fromhex(ch) << 4; + s->state = RS_CHKSUM2; + break; + case RS_CHKSUM2: + s->line_csum |= fromhex(ch); + csum = 0; + for(i = 0; i < s->line_buf_index; i++) { + csum += s->line_buf[i]; + } + if (s->line_csum != (csum & 0xff)) { + reply[0] = '-'; + put_buffer(s, (uint8_t *) reply, 1); + s->state = RS_IDLE; + } else { + reply[0] = '+'; + put_buffer(s, (uint8_t *) reply, 1); + s->state = gdb_handle_packet(s, env, s->line_buf); + } + break; + default: + abort(); + } +} + +int +gdb_handlesig (CPUState *env, int sig) +{ + GDBState *s; + char buf[256]; + int n; + + if (gdbserver_fd < 0) + return sig; + + s = &gdbserver_state; + +printf("%s: sig: %u\n", __FUNCTION__, sig); +fflush(stdout); + + /* disable single step if it was enabled */ + cpu_single_step(env, 0); + tb_flush(env); + + if (sig != 0) + { + snprintf(buf, sizeof(buf), "S%02x", sig); + put_packet(s, buf); + } + + sig = 0; + s->state = RS_IDLE; + s->running_state = 0; + while (s->running_state == 0) { + n = read (s->fd, buf, 256); + if (n > 0) + { + int i; + +printf("%s: read: %d\n", __FUNCTION__, n); +fflush(stdout); + + for (i = 0; i < n; i++) + gdb_read_byte (s, buf[i]); + } + else if (n == 0 || errno != EAGAIN) + { + /* XXX: Connection closed. Should probably wait for annother + connection before continuing. */ + return sig; + } + } + return sig; +} + +int +gdb_poll (CPUState *env) +{ + GDBState *s; + struct pollfd pfd; + + if (gdbserver_fd < 0) + return 0; + + s = &gdbserver_state; + + pfd.fd = s->fd; + pfd.events = POLLIN | POLLHUP; + + if (poll(&pfd, 1, 0) <= 0) { + if (errno != EAGAIN) + return 0; + return 0; + } + +printf("%s: revents: %08x\n", __FUNCTION__, pfd.revents); +fflush(stdout); + + if (pfd.revents & (POLLIN | POLLHUP)) + return 1; + + return 0; +} + +/* Tell the remote gdb that the process has exited. */ +void gdb_exit(CPUState *env, int code) +{ + GDBState *s; + char buf[4]; + + if (gdbserver_fd < 0) + return; + + s = &gdbserver_state; + + snprintf(buf, sizeof(buf), "W%02x", code); + put_packet(s, buf); +} + + +static void gdb_accept(void *opaque) +{ + GDBState *s; + struct sockaddr_in sockaddr; + socklen_t len; + int val, fd; + + for(;;) { + len = sizeof(sockaddr); + fd = accept(gdbserver_fd, (struct sockaddr *)&sockaddr, &len); + if (fd < 0 && errno != EINTR) { + perror("accept"); + return; + } else if (fd >= 0) { + break; + } + } + + /* set short latency */ + val = 1; + setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(val)); + + s = &gdbserver_state; + memset (s, 0, sizeof (GDBState)); + s->env = first_cpu; /* XXX: allow to change CPU */ + s->fd = fd; + + gdb_syscall_state = s; + + fcntl(fd, F_SETFL, O_NONBLOCK); +} + +static int gdbserver_open(int port) +{ + struct sockaddr_in sockaddr; + int fd, val, ret; + + fd = socket(PF_INET, SOCK_STREAM, 0); + if (fd < 0) { + perror("socket"); + return -1; + } + + /* allow fast reuse */ + val = 1; + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(val)); + + sockaddr.sin_family = AF_INET; + sockaddr.sin_port = htons(port); + sockaddr.sin_addr.s_addr = 0; + ret = bind(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr)); + if (ret < 0) { + perror("bind"); + return -1; + } + ret = listen(fd, 0); + if (ret < 0) { + perror("listen"); + return -1; + } + return fd; +} + +int gdbserver_start(int port) +{ + gdbserver_fd = gdbserver_open(port); + if (gdbserver_fd < 0) + return -1; + /* accept connections */ + gdb_accept (NULL); + return 0; +} diff --git a/gdbstub.h b/gdbstub.h new file mode 100644 index 0000000..b3330e5 --- /dev/null +++ b/gdbstub.h @@ -0,0 +1,18 @@ +#ifndef GDBSTUB_H +#define GDBSTUB_H + +#define DEFAULT_GDBSTUB_PORT 1234 + +typedef void (*gdb_syscall_complete_cb)(CPUState *env, + target_ulong ret, target_ulong err); + +void gdb_do_syscall(gdb_syscall_complete_cb cb, char *fmt, ...); +int use_gdb_syscalls(void); + +int gdb_poll(CPUState *); + +int gdb_handlesig (CPUState *, int); +void gdb_exit(CPUState *, int); +int gdbserver_start(int); + +#endif diff --git a/hex2bin.c b/hex2bin.c new file mode 100644 index 0000000..fed518b --- /dev/null +++ b/hex2bin.c @@ -0,0 +1,117 @@ +/* $Id: hex2bin.c,v 1.3 2008/12/11 12:18:17 ecd Exp $ + * + * $Log: hex2bin.c,v $ + * Revision 1.3 2008/12/11 12:18:17 ecd + * major rework to qemu + * + * Revision 1.1 2006-08-20 17:26:07 ecd + * Modularize most stuff, IO_PORT, INTC, ARM, and MMU still missing. + * + * Revision 1.1 2002/06/19 08:19:39 ecd + * Add Lattice/Xilinx tools + * + * Revision 1.1 2002/01/04 10:46:48 ecd + * initial import + * + * Revision 1.1 1999/12/09 10:53:33 ecd + * add Xilinx conversion tool + * + */ + +#include +#include +#include +#include +#include +#include +#include + +int +main(int argc, char **argv) +{ + unsigned char *input, *p; + unsigned char *memory = NULL; + size_t size; + int in, out; + int i; + + if (argc < 3) { + fprintf(stderr, "usage: %s \n", argv[0]); + exit(1); + } + + if (!strcmp(argv[1], "-")) + in = 0; + else { + in = open(argv[1], O_RDONLY); + if (in < 0) { + perror(argv[1]); + exit(1); + } + } + + if (!strcmp(argv[2], "-")) + out = 1; + else { + out = open(argv[2], O_WRONLY|O_CREAT|O_TRUNC, 0666); + if (out < 0) { + perror(argv[2]); + exit(1); + } + } + + size = lseek(in, 0, SEEK_END); + lseek(in, 0, SEEK_SET); + + input = (unsigned char *)malloc(size); + if (!input) { + fprintf(stderr, "%s: out of memory\n", argv[0]); + exit(1); + } + + if (read(in, input, size) != size) { + perror("read"); + exit(1); + } + + close(in); + + memory = malloc(size >> 1); + if (!memory) { + fprintf(stderr, "%s: out of memory\n", argv[0]); + exit(1); + } + + p = input; + for (i = 0; i < (size >> 1); i++) { + if ('0' <= *p && *p <= '9') + memory[i] = (*p - '0') << 0; + else if ('a' <= *p && *p <= 'f') + memory[i] = (*p - 'a' + 10) << 0; + else if ('A' <= *p && *p <= 'F') + memory[i] = (*p - 'A' + 10) << 0; + else { + fprintf(stderr, "%s: parse error at byte %d\n", + argv[0], i); + exit(1); + } + p++; + if ('0' <= *p && *p <= '9') + memory[i] |= (*p - '0') << 4; + else if ('a' <= *p && *p <= 'f') + memory[i] |= (*p - 'a' + 10) << 4; + else if ('A' <= *p && *p <= 'F') + memory[i] |= (*p - 'A' + 10) << 4; + else { + fprintf(stderr, "%s: parse error at byte %d\n", + argv[0], i); + exit(1); + } + p++; + } + + write(out, memory, size >> 1); + close(out); + + return 0; +} diff --git a/hp49g+.png b/hp49g+.png new file mode 100644 index 0000000000000000000000000000000000000000..daac0654753b3d0b011f4d651743141ae1d97d3d GIT binary patch literal 425575 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

    >G<;c(hx4V2?do^D7rVu#HA-2rmsa9c34VT>)t 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 z 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

    l^7(3}K<9euA64%$AjSr5!sD{Qf%+wZwr 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%0Ds3y13l+Rifjfy*ZfLWwqaWZ8z}Zcm$X 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

    S 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

    Q@%vm{oKXeG%O(>gmZS!!ApX<${acic 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

    ~Qlwt>(~vRX2ql$^{bWO|rht-r{`Pzh^{;?mw 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 z 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%0A|<>TACGvlsr+?|;Sf{e^W=tXo0Q*fvRAE2#Y6 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 Hu0mjfdbM4+ literal 0 HcmV?d00001 diff --git a/hp49g+small-notext.png b/hp49g+small-notext.png new file mode 100644 index 0000000000000000000000000000000000000000..39515b5936f6dcc54f7197949217f368e6ba6a59 GIT binary patch literal 441286 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%0A6{dEQr(m4iVW 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

    eYbDm);$c?x7`ul3`>u;W* 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

      N;}@eVo7IiStv$P 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

      uD#2|dVQmj9&P!AxfqFBW*tg$yGf#@& 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 _6ay|ebYJZt6#sY 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

      @WANw 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

      FB7Zv~H5c>yY#LmEB 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 literal 0 HcmV?d00001 diff --git a/hp50g.png b/hp50g.png new file mode 100644 index 0000000000000000000000000000000000000000..0733f27df529ed39dbc1bd6349b584b2c1720511 GIT binary patch literal 281250 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


      Le2X(~4RPTLwX*##P|E>C_|RjgyhH{bpV4-apw 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%0A83OR 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�SlgP@7UGvc<=;&Bufl=(5-9LCf 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 +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#endif /* !(_X49GP_BITMAPS_H) */ diff --git a/include/.svn/text-base/block.h.svn-base b/include/.svn/text-base/block.h.svn-base new file mode 100644 index 0000000..e4c285a --- /dev/null +++ b/include/.svn/text-base/block.h.svn-base @@ -0,0 +1,187 @@ +/* $Id: block.h,v 1.1 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef BLOCK_H +#define BLOCK_H 1 + +#include + +#define BDRV_O_RDONLY 0x0000 +#define BDRV_O_RDWR 0x0002 +#define BDRV_O_ACCESS 0x0003 +#define BDRV_O_CREAT 0x0004 /* create an empty file */ +#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save + writes in a snapshot */ +#define BDRV_O_FILE 0x0010 /* open as a raw file (do not try to + use a disk image format on top of + it (default for + bdrv_file_open()) */ + +#ifdef QEMU_OLD +typedef struct BlockDriverState BlockDriverState; +#endif +typedef struct BlockDriver BlockDriver; +typedef struct SnapshotInfo QEMUSnapshotInfo; +typedef struct BlockDriverInfo BlockDriverInfo; +typedef struct BlockDriverAIOCB BlockDriverAIOCB; +typedef void BlockDriverCompletionFunc(void *opaque, int ret); + +extern BlockDriver bdrv_raw; +extern BlockDriver bdrv_host_device; +extern BlockDriver bdrv_qcow; +extern BlockDriver bdrv_vvfat; + +void bdrv_init(void); +int bdrv_create(BlockDriver *drv, + const char *filename, int64_t size_in_sectors, + const char *backing_file, int flags); +BlockDriverState *bdrv_new(const char *device_name); +void bdrv_delete(BlockDriverState *bs); +int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags); +int bdrv_open(BlockDriverState *bs, const char *filename, int flags); + +int bdrv_read(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors); +int bdrv_pread(BlockDriverState *bs, int64_t offset, + void *buf, int count); +int bdrv_pwrite(BlockDriverState *bs, int64_t offset, + const void *buf, int count); + +#ifdef QEMU_OLD +struct BlockDriver { + const char *format_name; + int instance_size; + int (*bdrv_probe)(const uint8_t *buf, int buf_size, const char *filename); + int (*bdrv_open)(BlockDriverState *bs, const char *filename, int flags); + int (*bdrv_read)(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors); + int (*bdrv_write)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + void (*bdrv_close)(BlockDriverState *bs); + int (*bdrv_create)(const char *filename, int64_t total_sectors, + const char *backing_file, int flags); + void (*bdrv_flush)(BlockDriverState *bs); + int (*bdrv_is_allocated)(BlockDriverState *bs, int64_t sector_num, + int nb_sectors, int *pnum); + int (*bdrv_set_key)(BlockDriverState *bs, const char *key); + int (*bdrv_make_empty)(BlockDriverState *bs); + /* aio */ + BlockDriverAIOCB *(*bdrv_aio_read)(BlockDriverState *bs, + int64_t sector_num, uint8_t *buf, int nb_sectors, + BlockDriverCompletionFunc *cb, void *opaque); + BlockDriverAIOCB *(*bdrv_aio_write)(BlockDriverState *bs, + int64_t sector_num, const uint8_t *buf, int nb_sectors, + BlockDriverCompletionFunc *cb, void *opaque); + void (*bdrv_aio_cancel)(BlockDriverAIOCB *acb); + int aiocb_size; + + const char *protocol_name; + int (*bdrv_pread)(BlockDriverState *bs, int64_t offset, + uint8_t *buf, int count); + int (*bdrv_pwrite)(BlockDriverState *bs, int64_t offset, + const uint8_t *buf, int count); + int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset); + int64_t (*bdrv_getlength)(BlockDriverState *bs); + int (*bdrv_write_compressed)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + + int (*bdrv_snapshot_create)(BlockDriverState *bs, + QEMUSnapshotInfo *sn_info); + int (*bdrv_snapshot_goto)(BlockDriverState *bs, + const char *snapshot_id); + int (*bdrv_snapshot_delete)(BlockDriverState *bs, const char *snapshot_id); + int (*bdrv_snapshot_list)(BlockDriverState *bs, + QEMUSnapshotInfo **psn_info); + int (*bdrv_get_info)(BlockDriverState *bs, BlockDriverInfo *bdi); + + /* removable device specific */ + int (*bdrv_is_inserted)(BlockDriverState *bs); + int (*bdrv_media_changed)(BlockDriverState *bs); + int (*bdrv_eject)(BlockDriverState *bs, int eject_flag); + int (*bdrv_set_locked)(BlockDriverState *bs, int locked); + + BlockDriverAIOCB *free_aiocb; + struct BlockDriver *next; +}; + +struct BlockDriverState { + int64_t total_sectors; /* if we are reading a disk image, give its + size in sectors */ + int read_only; /* if true, the media is read only */ + int removable; /* if true, the media can be removed */ + int locked; /* if true, the media cannot temporarily be ejected */ + int encrypted; /* if true, the media is encrypted */ + /* event callback when inserting/removing */ + void (*change_cb)(void *opaque); + void *change_opaque; + + BlockDriver *drv; /* NULL means no media */ + void *opaque; + + int boot_sector_enabled; + uint8_t boot_sector_data[512]; + + char filename[1024]; + char backing_file[1024]; /* if non zero, the image is a diff of + this file image */ + int is_temporary; + int media_changed; + + BlockDriverState *backing_hd; +// /* async read/write emulation */ +// +// void *sync_aiocb; + + /* NOTE: the following infos are only hints for real hardware + drivers. They are not used by the block driver */ + int cyls, heads, secs, translation; + int type; + char device_name[32]; + BlockDriverState *next; +}; + +void *qemu_malloc(size_t size); +void *qemu_mallocz(size_t size); +void qemu_free(void *ptr); + +void pstrcpy(char *buf, int buf_size, const char *str); +char *pstrcat(char *buf, int buf_size, const char *s); +int strstart(const char *str, const char *val, const char **ptr); +int stristart(const char *str, const char *val, const char **ptr); +#endif /* QEMU_OLD */ + +#ifndef QEMU_OLD +int bdrv_truncate(BlockDriverState *bs, int64_t offset); +int64_t bdrv_getlength(BlockDriverState *bs); +void bdrv_flush(BlockDriverState *bs); + +/* timers */ + +typedef struct QEMUClock QEMUClock; +typedef void QEMUTimerCB(void *opaque); + +/* The real time clock should be used only for stuff which does not + change the virtual machine state, as it is run even if the virtual + machine is stopped. The real time clock has a frequency of 1000 + Hz. */ +extern QEMUClock *rt_clock; + +int64_t qemu_get_clock(QEMUClock *clock); + +QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque); +void qemu_del_timer(QEMUTimer *ts); +void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time); +int qemu_timer_pending(QEMUTimer *ts); + +extern int64_t ticks_per_sec; + +struct BlockDriverInfo { + /* in bytes, 0 if irrelevant */ + int cluster_size; + /* offset at which the VM state can be saved (0 if not possible) */ + int64_t vm_state_offset; +}; + +#endif + +#endif /* !(BLOCK_H) */ diff --git a/include/.svn/text-base/block_int.h.svn-base b/include/.svn/text-base/block_int.h.svn-base new file mode 100644 index 0000000..581679a --- /dev/null +++ b/include/.svn/text-base/block_int.h.svn-base @@ -0,0 +1,104 @@ +/* + * QEMU System Emulator block driver + * + * Copyright (c) 2003 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifndef BLOCK_INT_H +#define BLOCK_INT_H + +struct BlockDriver { + const char *format_name; + int instance_size; + int (*bdrv_probe)(const uint8_t *buf, int buf_size, const char *filename); + int (*bdrv_open)(BlockDriverState *bs, const char *filename, int flags); + int (*bdrv_read)(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors); + int (*bdrv_write)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + void (*bdrv_close)(BlockDriverState *bs); + int (*bdrv_create)(const char *filename, int64_t total_sectors, + const char *backing_file, int flags); + void (*bdrv_flush)(BlockDriverState *bs); + int (*bdrv_is_allocated)(BlockDriverState *bs, int64_t sector_num, + int nb_sectors, int *pnum); + int (*bdrv_set_key)(BlockDriverState *bs, const char *key); + int (*bdrv_make_empty)(BlockDriverState *bs); + + const char *protocol_name; + int (*bdrv_pread)(BlockDriverState *bs, int64_t offset, + uint8_t *buf, int count); + int (*bdrv_pwrite)(BlockDriverState *bs, int64_t offset, + const uint8_t *buf, int count); + int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset); + int64_t (*bdrv_getlength)(BlockDriverState *bs); + int (*bdrv_write_compressed)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + + int (*bdrv_get_info)(BlockDriverState *bs, BlockDriverInfo *bdi); + + /* removable device specific */ + int (*bdrv_is_inserted)(BlockDriverState *bs); + int (*bdrv_media_changed)(BlockDriverState *bs); + int (*bdrv_eject)(BlockDriverState *bs, int eject_flag); + int (*bdrv_set_locked)(BlockDriverState *bs, int locked); + + struct BlockDriver *next; +}; + +struct BlockDriverState { + int64_t total_sectors; /* if we are reading a disk image, give its + size in sectors */ + int read_only; /* if true, the media is read only */ + int removable; /* if true, the media can be removed */ + int locked; /* if true, the media cannot temporarily be ejected */ + int encrypted; /* if true, the media is encrypted */ + /* event callback when inserting/removing */ + void (*change_cb)(void *opaque); + void *change_opaque; + + BlockDriver *drv; /* NULL means no media */ + void *opaque; + + int boot_sector_enabled; + uint8_t boot_sector_data[512]; + + char filename[1024]; + char backing_file[1024]; /* if non zero, the image is a diff of + this file image */ + int is_temporary; + int media_changed; + + BlockDriverState *backing_hd; + /* async read/write emulation */ + + void *sync_aiocb; + + /* NOTE: the following infos are only hints for real hardware + drivers. They are not used by the block driver */ + int cyls, heads, secs, translation; + int type; + char device_name[32]; + BlockDriverState *next; +}; + +void get_tmp_filename(char *filename, int size); + +#endif /* BLOCK_INT_H */ diff --git a/include/.svn/text-base/byteorder.h.svn-base b/include/.svn/text-base/byteorder.h.svn-base new file mode 100644 index 0000000..72fb035 --- /dev/null +++ b/include/.svn/text-base/byteorder.h.svn-base @@ -0,0 +1,91 @@ +/* $Id: byteorder.h,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_BYTEORDER_H +#define _X49GP_BYTEORDER_H 1 + +#include + +static __inline__ uint16_t swab16(uint16_t x) +{ + return ((x & 0xff00) >> 8) | + ((x & 0x00ff) << 8); +} + +static __inline__ uint32_t swab32(uint32_t x) +{ + return ((x & 0xff000000) >> 24) | + ((x & 0x00ff0000) >> 8) | + ((x & 0x0000ff00) << 8) | + ((x & 0x000000ff) << 24); +} + +#ifdef __sparc__ + +#define ASI_PL 0x88 /* Primary, implicit, little endian. */ + +static __inline__ uint16_t __load_le16(const uint16_t *p) +{ + uint16_t x; + + __asm__ __volatile__ ("lduha [%1] %2, %0" + : "=r" (x) + : "r" (p), "i" (ASI_PL)); + return x; +} + +static __inline__ uint32_t __load_le32(const uint32_t *p) +{ + uint32_t x; + + __asm__ __volatile__ ("lduwa [%1] %2, %0" + : "=r" (x) + : "r" (p), "i" (ASI_PL)); + return x; +} + +static __inline__ void __store_le16(uint16_t *p, uint16_t x) +{ + __asm__ __volatile__ ("stha %0, [%1] %2" + : /* no outputs */ + : "r" (x), "r" (p), "i" (ASI_PL)); +} + +static __inline__ void __store_le32(uint32_t *p, uint32_t x) +{ + __asm__ __volatile__ ("stwa %0, [%1] %2" + : /* no outputs */ + : "r" (x), "r" (p), "i" (ASI_PL)); +} + +#endif /* __sparc__ */ + +#if __BYTE_ORDER == __LITTLE_ENDIAN + +#define le16_to_cpu(x) (x) +#define cpu_to_le16(x) (x) +#define le32_to_cpu(x) (x) +#define cpu_to_le32(x) (x) + +#define load_le16(p) (*(p)) +#define store_le16(p, x) (*(p) = (x)) +#define load_le32(p) (*(p)) +#define store_le32(p, x) (*(p) = (x)) + +#elif __BYTE_ORDER == __BIG_ENDIAN + +#define le16_to_cpu(x) swab16(x) +#define cpu_to_le16(x) swab16(x) +#define le32_to_cpu(x) swab32(x) +#define cpu_to_le32(x) swab32(x) + +#define load_le16(p) __load_le16(p) +#define store_le16(p, x) __store_le16(p, x) +#define load_le32(p) __load_le32(p) +#define store_le32(p, x) __store_le32(p, x) + +#else +#error "Cannot determine host byteorder" +#endif + +#endif /* !(_X49GP_BYTEORDER_H) */ diff --git a/include/.svn/text-base/glyphname.h.svn-base b/include/.svn/text-base/glyphname.h.svn-base new file mode 100644 index 0000000..787d8e9 --- /dev/null +++ b/include/.svn/text-base/glyphname.h.svn-base @@ -0,0 +1,238 @@ +/* $Id: glyphname.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_GLYPHNAME_H +#define _X49GP_GLYPHNAME_H 1 + +typedef struct { + const char *name; + gunichar unichar; +} x49gp_glyph_t; + +static const x49gp_glyph_t x49gp_glyphs[] = +{ + { "exclamdown", 0x00a1 }, + { "cent", 0x00a2 }, + { "sterling", 0x00a3 }, + { "fraction", 0x2044 }, + { "yen", 0x00a5 }, + { "florin", 0x0192 }, + { "section", 0x00a7 }, + { "currency", 0x00a4 }, + { "quotesingle", 0x0027 }, + { "quotedblleft", 0x201c }, + { "guillemotleft", 0x00ab }, + { "guilsinglleft", 0x2039 }, + { "guilsinglright", 0x203a }, + { "fi", 0xfb01 }, + { "fl", 0xfb02 }, + { "endash", 0x2013 }, + { "dagger", 0x2020 }, + { "daggerdbl", 0x2021 }, + { "periodcentered", 0x00b7 }, + { "paragraph", 0x00b6 }, + { "bullet", 0x2022 }, + { "quotesinglbase", 0x201a }, + { "quotedblbase", 0x201e }, + { "quotedblright", 0x201d }, + { "guillemotright", 0x00bb }, + { "ellipsis", 0x2026 }, + { "perthousand", 0x2030 }, + { "questiondown", 0x00bf }, + { "grave", 0x0060 }, + { "acute", 0x00b4 }, + { "circumflex", 0x02c6 }, + { "tilde", 0x02dc }, + { "macron", 0x00af }, + { "breve", 0x02d8 }, + { "dotaccent", 0x02d9 }, + { "dieresis", 0x00a8 }, + { "ring", 0x02da }, + { "cedilla", 0x00b8 }, + { "hungarumlaut", 0x02dd }, + { "ogonek", 0x02db }, + { "caron", 0x02c7 }, + { "emdash", 0x2014 }, + { "AE", 0x00c6 }, + { "ordfeminine", 0x00aa }, + { "Lslash", 0x0141 }, + { "Oslash", 0x00d8 }, + { "OE", 0x0152 }, + { "ordmasculine", 0x00ba }, + { "ae", 0x00e6 }, + { "dotlessi", 0x0131 }, + { "lslash", 0x0142 }, + { "oslash", 0x00f8 }, + { "oe", 0x0153 }, + { "germandbls", 0x00df }, + { "Udieresis", 0x00dc }, + { "Uacute", 0x00da }, + { "Scedilla", 0x015e }, + { "Tcaron", 0x0164 }, + { "Scaron", 0x0160 }, + { "Rcaron", 0x0158 }, + { "Racute", 0x0154 }, + { "Sacute", 0x015a }, + { "Otilde", 0x00d5 }, + { "ucircumflex", 0x00fb }, + { "Ohungarumlaut", 0x0150 }, + { "Uhungarumlaut", 0x0170 }, + { "Yacute", 0x00dd }, + { "Eth", 0x00d0 }, + { "Dcroat", 0x0110 }, + { "Zacute", 0x0179 }, + { "Uring", 0x016e }, + { "gbreve", 0x011f }, + { "eogonek", 0x0119 }, + { "edotaccent", 0x0117 }, + { "ecaron", 0x011b }, + { "Ugrave", 0x00d9 }, + { "Thorn", 0x00de }, + { "eacute", 0x00e9 }, + { "edieresis", 0x00eb }, + { "dcaron", 0x010f }, + { "ccedilla", 0x00e7 }, + { "ccaron", 0x010d }, + { "cacute", 0x0107 }, + { "aogonek", 0x0105 }, + { "aring", 0x00e5 }, + { "atilde", 0x00e3 }, + { "abreve", 0x0103 }, + { "egrave", 0x00e8 }, + { "agrave", 0x00e0 }, + { "aacute", 0x00e1 }, + { "adieresis", 0x00e4 }, + { "Uogonek", 0x0172 }, + { "ugrave", 0x00f9 }, + { "uacute", 0x00fa }, + { "udieresis", 0x00fc }, + { "tcaron", 0x0165 }, + { "scommaaccent", 0x0219 }, + { "Zcaron", 0x017d }, + { "ecircumflex", 0x00ea }, + { "Ucircumflex", 0x00db }, + { "acircumflex", 0x00e2 }, + { "Zdotaccent", 0x017b }, + { "scaron", 0x0161 }, + { "Amacron", 0x0100 }, + { "sacute", 0x015b }, + { "Tcommaaccent", 0x0162 }, + { "Ydieresis", 0x0178 }, + { "thorn", 0x00fe }, + { "Emacron", 0x0112 }, + { "Ograve", 0x00d2 }, + { "Oacute", 0x00d3 }, + { "Odieresis", 0x00d6 }, + { "Ntilde", 0x00d1 }, + { "Ncaron", 0x0147 }, + { "Nacute", 0x0143 }, + { "Lcaron", 0x013d }, + { "Lacute", 0x0139 }, + { "Idotaccent", 0x0130 }, + { "racute", 0x0155 }, + { "Icircumflex", 0x00ce }, + { "ohungarumlaut", 0x0151 }, + { "otilde", 0x00f5 }, + { "Euro", 0x20ac }, + { "ocircumflex", 0x00f4 }, + { "onesuperior", 0x00b9 }, + { "twosuperior", 0x00b2 }, + { "threesuperior", 0x00b3 }, + { "Igrave", 0x00cc }, + { "Iacute", 0x00cd }, + { "Imacron", 0x012a }, + { "Iogonek", 0x012e }, + { "Idieresis", 0x00cf }, + { "Gbreve", 0x011e }, + { "Umacron", 0x016a }, + { "Kcommaaccent", 0x0136 }, + { "ograve", 0x00f2 }, + { "Scommaaccent", 0x0218 }, + { "Eogonek", 0x0118 }, + { "oacute", 0x00f3 }, + { "Edotaccent", 0x0116 }, + { "iogonek", 0x012f }, + { "gcommaaccent", 0x0123 }, + { "odieresis", 0x00f6 }, + { "ntilde", 0x00f1 }, + { "ncaron", 0x0148 }, + { "Ecaron", 0x011a }, + { "Ecircumflex", 0x00ca }, + { "scedilla", 0x015f }, + { "rcaron", 0x0159 }, + { "Egrave", 0x00c8 }, + { "Eacute", 0x00c9 }, + { "Gcommaaccent", 0x0122 }, + { "Rcommaaccent", 0x0156 }, + { "Edieresis", 0x00cb }, + { "nacute", 0x0144 }, + { "uogonek", 0x0173 }, + { "umacron", 0x016b }, + { "Dcaron", 0x010e }, + { "lcaron", 0x013e }, + { "Ccaron", 0x010c }, + { "Cacute", 0x0106 }, + { "Ccedilla", 0x00c7 }, + { "degree", 0x00b0 }, + { "Aogonek", 0x0104 }, + { "minus", 0x2212 }, + { "multiply", 0x00d7 }, + { "divide", 0x00f7 }, + { "Aring", 0x00c5 }, + { "trademark", 0x2122 }, + { "rcommaaccent", 0x0157 }, + { "lacute", 0x013a }, + { "omacron", 0x014d }, + { "Atilde", 0x00c3 }, + { "icircumflex", 0x00ee }, + { "igrave", 0x00ec }, + { "ncommaaccent", 0x0146 }, + { "lcommaaccent", 0x013c }, + { "plusminus", 0x00b1 }, + { "onehalf", 0x00bd }, + { "onequarter", 0x00bc }, + { "threequarters", 0x00be }, + { "iacute", 0x00ed }, + { "Abreve", 0x0102 }, + { "kcommaaccent", 0x0137 }, + { "Omacron", 0x014c }, + { "imacron", 0x012b }, + { "emacron", 0x0113 }, + { "amacron", 0x0101 }, + { "tcommaaccent", 0x0163 }, + { "ydieresis", 0x00ff }, + { "zdotaccent", 0x017c }, + { "zcaron", 0x017e }, + { "zacute", 0x017a }, + { "yacute", 0x00fd }, + { "uhungarumlaut", 0x0171 }, + { "eth", 0x00f0 }, + { "uring", 0x016f }, + { "Ocircumflex", 0x00d4 }, + { "commaaccent", 0xf6c3 }, + { "copyright", 0x00a9 }, + { "registered", 0x00ae }, + { "Acircumflex", 0x00c2 }, + { "idieresis", 0x00ef }, + { "lozenge", 0x25ca }, + { "Delta", 0x2206 }, + { "notequal", 0x2260 }, + { "radical", 0x221a }, + { "Agrave", 0x00c0 }, + { "Aacute", 0x00c1 }, + { "lessequal", 0x2264 }, + { "greaterequal", 0x2265 }, + { "logicalnot", 0x00ac }, + { "summation", 0x2211 }, + { "partialdiff", 0x2202 }, + { "Ncommaaccent", 0x0145 }, + { "dcroat", 0x0111 }, + { "brokenbar", 0x00a6 }, + { "Lcommaaccent", 0x013b }, + { "Adieresis", 0x00c4 }, + { "mu", 0x00b5 } +}; + +#define NR_GLYPHNAMES (sizeof(x49gp_glyphs) / sizeof(x49gp_glyphs[0])) + +#endif /* !(_X49GP_GLYPHNAME_H) */ diff --git a/include/.svn/text-base/list.h.svn-base b/include/.svn/text-base/list.h.svn-base new file mode 100644 index 0000000..ccf9148 --- /dev/null +++ b/include/.svn/text-base/list.h.svn-base @@ -0,0 +1,600 @@ +#ifndef _LINUX_LIST_H +#define _LINUX_LIST_H + +#include + +static inline void prefetch(const void *x) {;} + +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif + +#ifdef QEMU_OLD +/** + * container_of - cast a member of a structure out to the containing structure + * + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) +#endif + +/* + * These are non-NULL pointers that will result in page faults + * under normal circumstances, used to verify that nobody uses + * non-initialized list entries. + */ +#define LIST_POISON1 ((void *) 0x00100100) +#define LIST_POISON2 ((void *) 0x00200200) + +/* + * Simple doubly linked list implementation. + * + * Some of the internal functions ("__xxx") are useful when + * manipulating whole lists rather than single entries, as + * sometimes we already know the next/prev entries and we can + * generate better code by using them directly rather than + * using the generic single-entry routines. + */ + +struct list_head { + struct list_head *next, *prev; +}; + +#define LIST_HEAD_INIT(name) { &(name), &(name) } + +#define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + +#define INIT_LIST_HEAD(ptr) do { \ + (ptr)->next = (ptr); (ptr)->prev = (ptr); \ +} while (0) + +/* + * Insert a new entry between two known consecutive entries. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_add(struct list_head *new, + struct list_head *prev, + struct list_head *next) +{ + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +/** + * list_add - add a new entry + * @new: new entry to be added + * @head: list head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); +} + +/** + * list_add_tail - add a new entry + * @new: new entry to be added + * @head: list head to add it before + * + * Insert a new entry before the specified head. + * This is useful for implementing queues. + */ +static inline void list_add_tail(struct list_head *new, struct list_head *head) +{ + __list_add(new, head->prev, head); +} + +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head * prev, struct list_head * next) +{ + next->prev = prev; + prev->next = next; +} + +/** + * list_del - deletes entry from list. + * @entry: the element to delete from the list. + * Note: list_empty on entry does not return true after this, the entry is + * in an undefined state. + */ +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} + +/** + * list_del_init - deletes entry from list and reinitialize it. + * @entry: the element to delete from the list. + */ +static inline void list_del_init(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + INIT_LIST_HEAD(entry); +} + +/** + * list_move - delete from one list and add as another's head + * @list: the entry to move + * @head: the head that will precede our entry + */ +static inline void list_move(struct list_head *list, struct list_head *head) +{ + __list_del(list->prev, list->next); + list_add(list, head); +} + +/** + * list_move_tail - delete from one list and add as another's tail + * @list: the entry to move + * @head: the head that will follow our entry + */ +static inline void list_move_tail(struct list_head *list, + struct list_head *head) +{ + __list_del(list->prev, list->next); + list_add_tail(list, head); +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/** + * list_empty_careful - tests whether a list is + * empty _and_ checks that no other CPU might be + * in the process of still modifying either member + * + * NOTE: using list_empty_careful() without synchronization + * can only be safe if the only activity that can happen + * to the list entry is list_del_init(). Eg. it cannot be used + * if another CPU could re-list_add() it. + * + * @head: the list to test. + */ +static inline int list_empty_careful(const struct list_head *head) +{ + struct list_head *next = head->next; + return (next == head) && (next == head->prev); +} + +static inline void __list_splice(struct list_head *list, + struct list_head *head) +{ + struct list_head *first = list->next; + struct list_head *last = list->prev; + struct list_head *at = head->next; + + first->prev = head; + head->next = first; + + last->next = at; + at->prev = last; +} + +/** + * list_splice - join two lists + * @list: the new list to add. + * @head: the place to add it in the first list. + */ +static inline void list_splice(struct list_head *list, struct list_head *head) +{ + if (!list_empty(list)) + __list_splice(list, head); +} + +/** + * list_splice_init - join two lists and reinitialise the emptied list. + * @list: the new list to add. + * @head: the place to add it in the first list. + * + * The list at @list is reinitialised + */ +static inline void list_splice_init(struct list_head *list, + struct list_head *head) +{ + if (!list_empty(list)) { + __list_splice(list, head); + INIT_LIST_HEAD(list); + } +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_for_each - iterate over a list + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + */ +#define list_for_each(pos, head) \ + for (pos = (head)->next; prefetch(pos->next), pos != (head); \ + pos = pos->next) + +/** + * __list_for_each - iterate over a list + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + * + * This variant differs from list_for_each() in that it's the + * simplest possible list iteration code, no prefetching is done. + * Use this for code that knows the list to be very short (empty + * or 1 entry) most of the time. + */ +#define __list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + +/** + * list_for_each_prev - iterate over a list backwards + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + */ +#define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; prefetch(pos->prev), pos != (head); \ + pos = pos->prev) + +/** + * list_for_each_safe - iterate over a list safe against removal of list entry + * @pos: the &struct list_head to use as a loop counter. + * @n: another &struct list_head to use as temporary storage + * @head: the head for your list. + */ +#define list_for_each_safe(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = n, n = pos->next) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + prefetch(pos->member.next), &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) + +/** + * list_for_each_entry_reverse - iterate backwards over list of given type. + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_reverse(pos, head, member) \ + for (pos = list_entry((head)->prev, typeof(*pos), member); \ + prefetch(pos->member.prev), &pos->member != (head); \ + pos = list_entry(pos->member.prev, typeof(*pos), member)) + +/** + * list_prepare_entry - prepare a pos entry for use as a start point in + * list_for_each_entry_continue + * @pos: the type * to use as a start point + * @head: the head of the list + * @member: the name of the list_struct within the struct. + */ +#define list_prepare_entry(pos, head, member) \ + ((pos) ? : list_entry(head, typeof(*pos), member)) + +/** + * list_for_each_entry_continue - iterate over list of given type + * continuing after existing point + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_continue(pos, head, member) \ + for (pos = list_entry(pos->member.next, typeof(*pos), member); \ + prefetch(pos->member.next), &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) + +/** + * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop counter. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member), \ + n = list_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.next, typeof(*n), member)) + +/** + * list_for_each_entry_safe_reverse - iterate backwards over list of given type safe against removal of list entry. + * @pos: the type * to use as a loop counter. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_safe_reverse(pos, n, head, member) \ + for (pos = list_entry((head)->prev, typeof(*pos), member), \ + n = list_entry(pos->member.prev, typeof(*pos), member); \ + prefetch(pos->member.prev), &pos->member != (head); \ + pos = n, n = list_entry(n->member.prev, typeof(*n), member)) + +/** + * list_for_each_rcu - iterate over an rcu-protected list + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_rcu(pos, head) \ + for (pos = (head)->next; prefetch(pos->next), pos != (head); \ + pos = rcu_dereference(pos->next)) + +#define __list_for_each_rcu(pos, head) \ + for (pos = (head)->next; pos != (head); \ + pos = rcu_dereference(pos->next)) + +/** + * list_for_each_safe_rcu - iterate over an rcu-protected list safe + * against removal of list entry + * @pos: the &struct list_head to use as a loop counter. + * @n: another &struct list_head to use as temporary storage + * @head: the head for your list. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_safe_rcu(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = rcu_dereference(n), n = pos->next) + +/** + * list_for_each_entry_rcu - iterate over rcu list of given type + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_entry_rcu(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + prefetch(pos->member.next), &pos->member != (head); \ + pos = rcu_dereference(list_entry(pos->member.next, \ + typeof(*pos), member))) + + +/** + * list_for_each_continue_rcu - iterate over an rcu-protected list + * continuing after existing point. + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_continue_rcu(pos, head) \ + for ((pos) = (pos)->next; prefetch((pos)->next), (pos) != (head); \ + (pos) = rcu_dereference((pos)->next)) + +/* + * Double linked lists with a single pointer list head. + * Mostly useful for hash tables where the two pointer list head is + * too wasteful. + * You lose the ability to access the tail in O(1). + */ + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + +#define HLIST_HEAD_INIT { .first = NULL } +#define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } +#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL) +#define INIT_HLIST_NODE(ptr) ((ptr)->next = NULL, (ptr)->pprev = NULL) + +static inline int hlist_unhashed(const struct hlist_node *h) +{ + return !h->pprev; +} + +static inline int hlist_empty(const struct hlist_head *h) +{ + return !h->first; +} + +static inline void __hlist_del(struct hlist_node *n) +{ + struct hlist_node *next = n->next; + struct hlist_node **pprev = n->pprev; + *pprev = next; + if (next) + next->pprev = pprev; +} + +static inline void hlist_del(struct hlist_node *n) +{ + __hlist_del(n); + n->next = LIST_POISON1; + n->pprev = LIST_POISON2; +} + +/** + * hlist_del_rcu - deletes entry from hash list without re-initialization + * @n: the element to delete from the hash list. + * + * Note: list_unhashed() on entry does not return true after this, + * the entry is in an undefined state. It is useful for RCU based + * lockfree traversal. + * + * In particular, it means that we can not poison the forward + * pointers that may still be used for walking the hash list. + * + * The caller must take whatever precautions are necessary + * (such as holding appropriate locks) to avoid racing + * with another list-mutation primitive, such as hlist_add_head_rcu() + * or hlist_del_rcu(), running on this same list. + * However, it is perfectly legal to run concurrently with + * the _rcu list-traversal primitives, such as + * hlist_for_each_entry(). + */ +static inline void hlist_del_rcu(struct hlist_node *n) +{ + __hlist_del(n); + n->pprev = LIST_POISON2; +} + +static inline void hlist_del_init(struct hlist_node *n) +{ + if (n->pprev) { + __hlist_del(n); + INIT_HLIST_NODE(n); + } +} + +static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) +{ + struct hlist_node *first = h->first; + n->next = first; + if (first) + first->pprev = &n->next; + h->first = n; + n->pprev = &h->first; +} + +/* next must be != NULL */ +static inline void hlist_add_before(struct hlist_node *n, + struct hlist_node *next) +{ + n->pprev = next->pprev; + n->next = next; + next->pprev = &n->next; + *(n->pprev) = n; +} + +static inline void hlist_add_after(struct hlist_node *n, + struct hlist_node *next) +{ + next->next = n->next; + n->next = next; + next->pprev = &n->next; + + if(next->next) + next->next->pprev = &next->next; +} + +#define hlist_entry(ptr, type, member) container_of(ptr,type,member) + +#define hlist_for_each(pos, head) \ + for (pos = (head)->first; pos && ({ prefetch(pos->next); 1; }); \ + pos = pos->next) + +#define hlist_for_each_safe(pos, n, head) \ + for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \ + pos = n) + +#define hlist_for_each_rcu(pos, head) \ + for ((pos) = (head)->first; pos && ({ prefetch((pos)->next); 1; }); \ + (pos) = rcu_dereference((pos)->next)) + +/** + * hlist_for_each_entry - iterate over list of given type + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry(tpos, pos, head, member) \ + for (pos = (head)->first; \ + pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = pos->next) + +/** + * hlist_for_each_entry_continue - iterate over a hlist continuing after existing point + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_continue(tpos, pos, member) \ + for (pos = (pos)->next; \ + pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = pos->next) + +/** + * hlist_for_each_entry_from - iterate over a hlist continuing from existing point + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_from(tpos, pos, member) \ + for (; pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = pos->next) + +/** + * hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @n: another &struct hlist_node to use as temporary storage + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_safe(tpos, pos, n, head, member) \ + for (pos = (head)->first; \ + pos && ({ n = pos->next; 1; }) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = n) + +/** + * hlist_for_each_entry_rcu - iterate over rcu list of given type + * @pos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as hlist_add_head_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define hlist_for_each_entry_rcu(tpos, pos, head, member) \ + for (pos = (head)->first; \ + pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = rcu_dereference(pos->next)) + +#endif /* _LINUX_LIST_H */ diff --git a/include/.svn/text-base/s3c2410.h.svn-base b/include/.svn/text-base/s3c2410.h.svn-base new file mode 100644 index 0000000..53d1b58 --- /dev/null +++ b/include/.svn/text-base/s3c2410.h.svn-base @@ -0,0 +1,348 @@ +/* $Id: s3c2410.h,v 1.18 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_S3C2410_H +#define _X49GP_S3C2410_H 1 + +#include + +typedef struct { + const char *name; + uint32_t reset; + uint32_t *datap; +} s3c2410_offset_t; + +#define S3C2410_OFFSET(module, name, reset, data) \ + [S3C2410_ ## module ## _ ## name >> 2] = { #name, reset, &(data) } + +#define S3C2410_OFFSET_OK(p, offset) \ + ((((offset) >> 2) < (p)->nr_regs) && (p)->regs[(offset) >> 2].name) + +#define S3C2410_OFFSET_ENTRY(p, offset) &((p)->regs[(offset) >> 2]) + + +#define S3C2410_MAP_SIZE 0x00010000 + + +#define S3C2410_SRAM_BASE 0x40000000 +#define S3C2410_SRAM_SIZE 0x00001000 + +#define S3C2410_MEMC_BASE 0x48000000 + +#define S3C2410_MEMC_BWSCON 0x0000 +#define S3C2410_MEMC_BANKCON0 0x0004 +#define S3C2410_MEMC_BANKCON1 0x0008 +#define S3C2410_MEMC_BANKCON2 0x000c +#define S3C2410_MEMC_BANKCON3 0x0010 +#define S3C2410_MEMC_BANKCON4 0x0014 +#define S3C2410_MEMC_BANKCON5 0x0018 +#define S3C2410_MEMC_BANKCON6 0x001c +#define S3C2410_MEMC_BANKCON7 0x0020 +#define S3C2410_MEMC_REFRESH 0x0024 +#define S3C2410_MEMC_BANKSIZE 0x0028 +#define S3C2410_MEMC_MRSRB6 0x002c +#define S3C2410_MEMC_MRSRB7 0x0030 + +#define S3C2410_USBHOST_BASE 0x49000000 + +#define S3C2410_INTC_BASE 0x4a000000 + +#define S3C2410_INTC_SRCPND 0x0000 +#define S3C2410_INTC_INTMOD 0x0004 +#define S3C2410_INTC_INTMSK 0x0008 +#define S3C2410_INTC_PRIORITY 0x000c +#define S3C2410_INTC_INTPND 0x0010 +#define S3C2410_INTC_INTOFFSET 0x0014 +#define S3C2410_INTC_SUBSRCPND 0x0018 +#define S3C2410_INTC_INTSUBMSK 0x001c + +#define S3C2410_POWER_BASE 0x4c000000 + +#define S3C2410_POWER_LOCKTIME 0x0000 +#define S3C2410_POWER_MPLLCON 0x0004 +#define S3C2410_POWER_UPLLCON 0x0008 +#define S3C2410_POWER_CLKCON 0x000c +#define S3C2410_POWER_CLKSLOW 0x0010 +#define S3C2410_POWER_CLKDIVN 0x0014 + +#define S3C2410_LCD_BASE 0x4d000000 + +#define S3C2410_LCD_LCDCON1 0x0000 +#define S3C2410_LCD_LCDCON2 0x0004 +#define S3C2410_LCD_LCDCON3 0x0008 +#define S3C2410_LCD_LCDCON4 0x000c +#define S3C2410_LCD_LCDCON5 0x0010 +#define S3C2410_LCD_LCDSADDR1 0x0014 +#define S3C2410_LCD_LCDSADDR2 0x0018 +#define S3C2410_LCD_LCDSADDR3 0x001c +#define S3C2410_LCD_REDLUT 0x0020 +#define S3C2410_LCD_GREENLUT 0x0024 +#define S3C2410_LCD_BLUELUT 0x0028 +#define S3C2410_LCD_DITHMODE 0x004c +#define S3C2410_LCD_TPAL 0x0050 +#define S3C2410_LCD_LCDINTPND 0x0054 +#define S3C2410_LCD_LCDSRCPND 0x0058 +#define S3C2410_LCD_LCDINTMSK 0x005c +#define S3C2410_LCD_LPCSEL 0x0060 +#define S3C2410_LCD_UNKNOWN_68 0x0068 + +#define S3C2410_LCD_PALETTE_START 0x0400 +#define S3C2410_LCD_PALETTE_SIZE 0x0400 + +#define S3C2410_NAND_BASE 0x4e000000 + +#define S3C2410_NAND_NFCONF 0x0000 +#define S3C2410_NAND_NFCMD 0x0004 +#define S3C2410_NAND_NFADDR 0x0008 +#define S3C2410_NAND_NFDATA 0x000c +#define S3C2410_NAND_NFSTAT 0x0010 +#define S3C2410_NAND_NFECC 0x0014 + +#define S3C2410_UART0_BASE 0x50000000 +#define S3C2410_UART1_BASE 0x50004000 +#define S3C2410_UART2_BASE 0x50008000 + +#define S3C2410_UART0_ULCON 0x0000 +#define S3C2410_UART0_UCON 0x0004 +#define S3C2410_UART0_UFCON 0x0008 +#define S3C2410_UART0_UMCON 0x000c +#define S3C2410_UART0_UTRSTAT 0x0010 +#define S3C2410_UART0_UERSTAT 0x0014 +#define S3C2410_UART0_UFSTAT 0x0018 +#define S3C2410_UART0_UMSTAT 0x001c +#define S3C2410_UART0_UTXH 0x0020 +#define S3C2410_UART0_URXH 0x0024 +#define S3C2410_UART0_UBRDIV 0x0028 + +#define S3C2410_UART1_ULCON 0x0000 +#define S3C2410_UART1_UCON 0x0004 +#define S3C2410_UART1_UFCON 0x0008 +#define S3C2410_UART1_UMCON 0x000c +#define S3C2410_UART1_UTRSTAT 0x0010 +#define S3C2410_UART1_UERSTAT 0x0014 +#define S3C2410_UART1_UFSTAT 0x0018 +#define S3C2410_UART1_UMSTAT 0x001c +#define S3C2410_UART1_UTXH 0x0020 +#define S3C2410_UART1_URXH 0x0024 +#define S3C2410_UART1_UBRDIV 0x0028 + +#define S3C2410_UART2_ULCON 0x0000 +#define S3C2410_UART2_UCON 0x0004 +#define S3C2410_UART2_UFCON 0x0008 +#define S3C2410_UART2_UTRSTAT 0x0010 +#define S3C2410_UART2_UERSTAT 0x0014 +#define S3C2410_UART2_UFSTAT 0x0018 +#define S3C2410_UART2_UTXH 0x0020 +#define S3C2410_UART2_URXH 0x0024 +#define S3C2410_UART2_UBRDIV 0x0028 + +#define S3C2410_TIMER_BASE 0x51000000 + +#define S3C2410_TIMER_TCFG0 0x0000 +#define S3C2410_TIMER_TCFG1 0x0004 +#define S3C2410_TIMER_TCON 0x0008 +#define S3C2410_TIMER_TCNTB0 0x000c +#define S3C2410_TIMER_TCMPB0 0x0010 +#define S3C2410_TIMER_TCNTO0 0x0014 +#define S3C2410_TIMER_TCNTB1 0x0018 +#define S3C2410_TIMER_TCMPB1 0x001c +#define S3C2410_TIMER_TCNTO1 0x0020 +#define S3C2410_TIMER_TCNTB2 0x0024 +#define S3C2410_TIMER_TCMPB2 0x0028 +#define S3C2410_TIMER_TCNTO2 0x002c +#define S3C2410_TIMER_TCNTB3 0x0030 +#define S3C2410_TIMER_TCMPB3 0x0034 +#define S3C2410_TIMER_TCNTO3 0x0038 +#define S3C2410_TIMER_TCNTB4 0x003c +#define S3C2410_TIMER_TCNTO4 0x0040 + +#define S3C2410_USBDEV_BASE 0x52000000 + +#define S3C2410_USBDEV_FUNC_ADDR_REG 0x0140 +#define S3C2410_USBDEV_PWR_REG 0x0144 +#define S3C2410_USBDEV_EP_INT_REG 0x0148 +#define S3C2410_USBDEV_USB_INT_REG 0x0158 +#define S3C2410_USBDEV_EP_INT_EN_REG 0x015c +#define S3C2410_USBDEV_USB_INT_EN_REG 0x016c +#define S3C2410_USBDEV_FRAME_NUM1_REG 0x0170 +#define S3C2410_USBDEV_FRAME_NUM2_REG 0x0174 +#define S3C2410_USBDEV_INDEX_REG 0x0178 +#define S3C2410_USBDEV_EP0_FIFO_REG 0x01C0 +#define S3C2410_USBDEV_EP1_FIFO_REG 0x01C4 +#define S3C2410_USBDEV_EP2_FIFO_REG 0x01C8 +#define S3C2410_USBDEV_EP3_FIFO_REG 0x01CC +#define S3C2410_USBDEV_EP4_FIFO_REG 0x01D0 +#define S3C2410_USBDEV_EP1_DMA_CON 0x0200 +#define S3C2410_USBDEV_EP1_DMA_UNIT 0x0204 +#define S3C2410_USBDEV_EP1_DMA_FIFO 0x0208 +#define S3C2410_USBDEV_EP1_DMA_TTC_L 0x020C +#define S3C2410_USBDEV_EP1_DMA_TTC_M 0x0210 +#define S3C2410_USBDEV_EP1_DMA_TTC_H 0x0214 +#define S3C2410_USBDEV_EP2_DMA_CON 0x0218 +#define S3C2410_USBDEV_EP2_DMA_UNIT 0x021C +#define S3C2410_USBDEV_EP2_DMA_FIFO 0x0220 +#define S3C2410_USBDEV_EP2_DMA_TTC_L 0x0224 +#define S3C2410_USBDEV_EP2_DMA_TTC_M 0x0228 +#define S3C2410_USBDEV_EP2_DMA_TTC_H 0x022C +#define S3C2410_USBDEV_EP3_DMA_CON 0x0240 +#define S3C2410_USBDEV_EP3_DMA_UNIT 0x0244 +#define S3C2410_USBDEV_EP3_DMA_FIFO 0x0248 +#define S3C2410_USBDEV_EP3_DMA_TTC_L 0x024C +#define S3C2410_USBDEV_EP3_DMA_TTC_M 0x0250 +#define S3C2410_USBDEV_EP3_DMA_TTC_H 0x0254 +#define S3C2410_USBDEV_EP4_DMA_CON 0x0258 +#define S3C2410_USBDEV_EP4_DMA_UNIT 0x025C +#define S3C2410_USBDEV_EP4_DMA_FIFO 0x0260 +#define S3C2410_USBDEV_EP4_DMA_TTC_L 0x0264 +#define S3C2410_USBDEV_EP4_DMA_TTC_M 0x0268 +#define S3C2410_USBDEV_EP4_DMA_TTC_H 0x026C +#define S3C2410_USBDEV_MAXP_REG_WRONG 0x0180 +#define S3C2410_USBDEV_IN_CSR1_REG_EP0_CSR 0x0184 +#define S3C2410_USBDEV_IN_CSR2_REG 0x0188 +#define S3C2410_USBDEV_MAXP_REG 0x018c +#define S3C2410_USBDEV_OUT_CSR1_REG 0x0190 +#define S3C2410_USBDEV_OUT_CSR2_REG 0x0194 +#define S3C2410_USBDEV_OUT_FIFO_CNT1_REG 0x0198 +#define S3C2410_USBDEV_OUT_FIFO_CNT2_REG 0x019C + +#define S3C2410_WATCHDOG_BASE 0x53000000 + +#define S3C2410_WATCHDOG_WTCON 0x0000 +#define S3C2410_WATCHDOG_WTDAT 0x0004 +#define S3C2410_WATCHDOG_WTCNT 0x0008 + +#define S3C2410_IO_PORT_BASE 0x56000000 + +#define S3C2410_IO_PORT_GPACON 0x0000 +#define S3C2410_IO_PORT_GPADAT 0x0004 +#define S3C2410_IO_PORT_GPBCON 0x0010 +#define S3C2410_IO_PORT_GPBDAT 0x0014 +#define S3C2410_IO_PORT_GPBUP 0x0018 +#define S3C2410_IO_PORT_GPCCON 0x0020 +#define S3C2410_IO_PORT_GPCDAT 0x0024 +#define S3C2410_IO_PORT_GPCUP 0x0028 +#define S3C2410_IO_PORT_GPDCON 0x0030 +#define S3C2410_IO_PORT_GPDDAT 0x0034 +#define S3C2410_IO_PORT_GPDUP 0x0038 +#define S3C2410_IO_PORT_GPECON 0x0040 +#define S3C2410_IO_PORT_GPEDAT 0x0044 +#define S3C2410_IO_PORT_GPEUP 0x0048 +#define S3C2410_IO_PORT_GPFCON 0x0050 +#define S3C2410_IO_PORT_GPFDAT 0x0054 +#define S3C2410_IO_PORT_GPFUP 0x0058 +#define S3C2410_IO_PORT_GPGCON 0x0060 +#define S3C2410_IO_PORT_GPGDAT 0x0064 +#define S3C2410_IO_PORT_GPGUP 0x0068 +#define S3C2410_IO_PORT_GPHCON 0x0070 +#define S3C2410_IO_PORT_GPHDAT 0x0074 +#define S3C2410_IO_PORT_GPHUP 0x0078 +#define S3C2410_IO_PORT_MISCCR 0x0080 +#define S3C2410_IO_PORT_DCLKCON 0x0084 +#define S3C2410_IO_PORT_EXTINT0 0x0088 +#define S3C2410_IO_PORT_EXTINT1 0x008c +#define S3C2410_IO_PORT_EXTINT2 0x0090 +#define S3C2410_IO_PORT_EINTFLT0 0x0094 +#define S3C2410_IO_PORT_EINTFLT1 0x0098 +#define S3C2410_IO_PORT_EINTFLT2 0x009c +#define S3C2410_IO_PORT_EINTFLT3 0x00a0 +#define S3C2410_IO_PORT_EINTMASK 0x00a4 +#define S3C2410_IO_PORT_EINTPEND 0x00a8 +#define S3C2410_IO_PORT_GSTATUS0 0x00ac +#define S3C2410_IO_PORT_GSTATUS1 0x00b0 +#define S3C2410_IO_PORT_GSTATUS2 0x00b4 +#define S3C2410_IO_PORT_GSTATUS3 0x00b8 +#define S3C2410_IO_PORT_GSTATUS4 0x00bc + +#define S3C2410_RTC_BASE 0x57000000 + +#define S3C2410_RTC_RTCCON 0x0040 +#define S3C2410_RTC_TICNT 0x0044 +#define S3C2410_RTC_RTCALM 0x0050 +#define S3C2410_RTC_ALMSEC 0x0054 +#define S3C2410_RTC_ALMMIN 0x0058 +#define S3C2410_RTC_ALMHOUR 0x005c +#define S3C2410_RTC_ALMDATE 0x0060 +#define S3C2410_RTC_ALMMON 0x0064 +#define S3C2410_RTC_ALMYEAR 0x0068 +#define S3C2410_RTC_RTCRST 0x006c +#define S3C2410_RTC_BCDSEC 0x0070 +#define S3C2410_RTC_BCDMIN 0x0074 +#define S3C2410_RTC_BCDHOUR 0x0078 +#define S3C2410_RTC_BCDDATE 0x007c +#define S3C2410_RTC_BCDDAY 0x0080 +#define S3C2410_RTC_BCDMON 0x0084 +#define S3C2410_RTC_BCDYEAR 0x0088 + +#define S3C2410_ADC_BASE 0x58000000 + +#define S3C2410_ADC_ADCCON 0x0000 +#define S3C2410_ADC_ADCTSC 0x0004 +#define S3C2410_ADC_ADCDLY 0x0008 +#define S3C2410_ADC_ADCDAT0 0x000c +#define S3C2410_ADC_ADCDAT1 0x0010 + +#define S3C2410_SPI_BASE 0x59000000 + +#define S3C2410_SPI_SPICON0 0x0000 +#define S3C2410_SPI_SPISTA0 0x0004 +#define S3C2410_SPI_SPPIN0 0x0008 +#define S3C2410_SPI_SPPRE0 0x000c +#define S3C2410_SPI_SPTDAT0 0x0010 +#define S3C2410_SPI_SPRDAT0 0x0014 +#define S3C2410_SPI_SPICON1 0x0020 +#define S3C2410_SPI_SPISTA1 0x0024 +#define S3C2410_SPI_SPPIN1 0x0028 +#define S3C2410_SPI_SPPRE1 0x002c +#define S3C2410_SPI_SPTDAT1 0x0030 +#define S3C2410_SPI_SPRDAT1 0x0034 + +#define S3C2410_SDI_BASE 0x5a000000 + +#define S3C2410_SDI_SDICON 0x0000 +#define S3C2410_SDI_SDIPRE 0x0004 +#define S3C2410_SDI_SDICARG 0x0008 +#define S3C2410_SDI_SDICCON 0x000c +#define S3C2410_SDI_SDICSTA 0x0010 +#define S3C2410_SDI_SDIRSP0 0x0014 +#define S3C2410_SDI_SDIRSP1 0x0018 +#define S3C2410_SDI_SDIRSP2 0x001c +#define S3C2410_SDI_SDIRSP3 0x0020 +#define S3C2410_SDI_SDIDTIMER 0x0024 +#define S3C2410_SDI_SDIBSIZE 0x0028 +#define S3C2410_SDI_SDIDCON 0x002c +#define S3C2410_SDI_SDIDCNT 0x0030 +#define S3C2410_SDI_SDIDSTA 0x0034 +#define S3C2410_SDI_SDIFSTA 0x0038 +#define S3C2410_SDI_SDIDAT 0x003c +#define S3C2410_SDI_SDIIMSK 0x0040 + + +extern int x49gp_s3c2410_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_arm_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_mmu_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_sram_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_memc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_intc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_power_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_lcd_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_nand_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_uart_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_timer_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_usbdev_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_watchdog_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_io_port_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_rtc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_adc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_spi_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_sdi_init(x49gp_t *x49gp); + +extern void s3c2410_io_port_g_set_bit(x49gp_t *x49gp, int n, uint32_t set); +extern void s3c2410_io_port_f_set_bit(x49gp_t *x49gp, int n, uint32_t set); + +extern void x49gp_schedule_lcd_update(x49gp_t *x49gp); +extern void x49gp_lcd_update(x49gp_t *x49gp); + +extern unsigned long s3c2410_timer_next_interrupt(x49gp_t *x49gp); +extern unsigned long s3c2410_watchdog_next_interrupt(x49gp_t *x49gp); + +#endif /* !(_X49GP_S3C2410_H) */ diff --git a/include/.svn/text-base/s3c2410_intc.h.svn-base b/include/.svn/text-base/s3c2410_intc.h.svn-base new file mode 100644 index 0000000..b3c5ffd --- /dev/null +++ b/include/.svn/text-base/s3c2410_intc.h.svn-base @@ -0,0 +1,72 @@ +/* $Id: s3c2410_intc.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_S3C2410_INTC_H +#define _X49GP_S3C2410_INTC_H 1 + +#define INT_ADC 31 +#define INT_RTC 30 +#define INT_SPI1 29 +#define INT_UART0 28 +#define INT_IIC 27 +#define INT_USBH 26 +#define INT_USBD 25 +#define INT_UART1 23 +#define INT_SPI0 22 +#define INT_SDI 21 +#define INT_DMA3 20 +#define INT_DMA2 19 +#define INT_DMA1 18 +#define INT_DMA0 17 +#define INT_LCD 16 +#define INT_UART2 15 +#define INT_TIMER4 14 +#define INT_TIMER3 13 +#define INT_TIMER2 12 +#define INT_TIMER1 11 +#define INT_TIMER0 10 +#define INT_WDT 9 +#define INT_TICK 8 +#define nBATT_FLT 7 +#define EINT8_23 5 +#define EINT4_7 4 +#define EINT3 3 +#define EINT2 2 +#define EINT1 1 +#define EINT0 0 + +#define SUB_INT_ADC 10 +#define SUB_INT_TC 9 +#define SUB_INT_ERR2 8 +#define SUB_INT_TXD2 7 +#define SUB_INT_RXD2 6 +#define SUB_INT_ERR1 5 +#define SUB_INT_TXD1 4 +#define SUB_INT_RXD1 3 +#define SUB_INT_ERR0 2 +#define SUB_INT_TXD0 1 +#define SUB_INT_RXD0 0 + +#define ARB0_MODE (1 << 0) +#define ARB1_MODE (1 << 1) +#define ARB2_MODE (1 << 2) +#define ARB3_MODE (1 << 3) +#define ARB4_MODE (1 << 4) +#define ARB5_MODE (1 << 5) +#define ARB6_MODE (1 << 6) +#define ARB0_SEL_SHIFT 7 +#define ARB1_SEL_SHIFT 9 +#define ARB2_SEL_SHIFT 11 +#define ARB3_SEL_SHIFT 13 +#define ARB4_SEL_SHIFT 15 +#define ARB5_SEL_SHIFT 17 +#define ARB6_SEL_SHIFT 19 +#define ARBx_SEL_MASK 3 + +void s3c2410_intc_sub_assert(x49gp_t *x49gp, int sub_irq, int level); +void s3c2410_intc_sub_deassert(x49gp_t *x49gp, int sub_irq); + +void s3c2410_intc_assert(x49gp_t *x49gp, int irq, int level); +void s3c2410_intc_deassert(x49gp_t *x49gp, int irq); + +#endif /* !(_X49GP_S3C2410_INTC_H) */ diff --git a/include/.svn/text-base/s3c2410_mmu.h.svn-base b/include/.svn/text-base/s3c2410_mmu.h.svn-base new file mode 100644 index 0000000..561e2da --- /dev/null +++ b/include/.svn/text-base/s3c2410_mmu.h.svn-base @@ -0,0 +1,37 @@ +/* $Id: s3c2410_mmu.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _S3C2410_MMU_H +#define _S3C2410_MMU_H 1 + +#define S3C2410_MMU_TLB_SIZE 64 +#define S3C2410_MMU_TLB_MASK (S3C2410_MMU_TLB_SIZE - 1) + +typedef struct { + uint32_t mva; + uint32_t mask; + uint32_t pa; + uint32_t dac; + int valid; +} TLB_entry_t; + +typedef struct { + int victim; + int base; + int index0; + int index1; + unsigned long hit0; + unsigned long hit1; + unsigned long search; + unsigned long nsearch; + unsigned long walk; + TLB_entry_t data[S3C2410_MMU_TLB_SIZE]; +} TLB_t; + +typedef struct { + uint32_t MMUReg[16]; + TLB_t iTLB; + TLB_t dTLB; +} s3c2410_mmu_t; + +#endif /* !(_S3C2410_MMU_H) */ diff --git a/include/.svn/text-base/s3c2410_power.h.svn-base b/include/.svn/text-base/s3c2410_power.h.svn-base new file mode 100644 index 0000000..88c3a57 --- /dev/null +++ b/include/.svn/text-base/s3c2410_power.h.svn-base @@ -0,0 +1,28 @@ +/* $Id: s3c2410_power.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _S3C2410_POWER_H +#define _S3C2410_POWER_H 1 + +#define CLKCON_SPI 0x00040000 +#define CLKCON_IIS 0x00020000 +#define CLKCON_IIC 0x00010000 +#define CLKCON_ADC 0x00008000 +#define CLKCON_RTC 0x00004000 +#define CLKCON_GPIO 0x00002000 +#define CLKCON_UART2 0x00001000 +#define CLKCON_UART1 0x00000800 +#define CLKCON_UART0 0x00000400 +#define CLKCON_SDI 0x00000200 +#define CLKCON_TIMER 0x00000100 +#define CLKCON_USBD 0x00000080 +#define CLKCON_USBH 0x00000040 +#define CLKCON_LCD 0x00000020 +#define CLKCON_NAND 0x00000010 +#define CLKCON_POWER_OFF 0x00000008 +#define CLKCON_IDLE 0x00000004 +#define CLKCON_SM_BIT 0x00000001 + +extern int s3c2410_idle; + +#endif /* !(_S3C2410_POWER_H) */ diff --git a/include/.svn/text-base/s3c2410_timer.h.svn-base b/include/.svn/text-base/s3c2410_timer.h.svn-base new file mode 100644 index 0000000..5fcfe25 --- /dev/null +++ b/include/.svn/text-base/s3c2410_timer.h.svn-base @@ -0,0 +1,48 @@ +/* $Id: s3c2410_timer.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _S3C2410_TIMER_H +#define _S3C2410_TIMER_H 1 + +#include + +#define TCFG0_DEAD_SHIFT 16 +#define TCFG0_DEAD_MASK 0xff +#define TCFG0_PRE1_SHIFT 8 +#define TCFG0_PRE0_SHIFT 0 +#define TCFG0_PREx_MASK 0xff + +#define TCFG1_DMA_SHIFT 20 +#define TCFG1_DMA_MASK 0x0f +#define TCFG1_MUX4_SHIFT 16 +#define TCFG1_MUX3_SHIFT 12 +#define TCFG1_MUX2_SHIFT 8 +#define TCFG1_MUX1_SHIFT 4 +#define TCFG1_MUX0_SHIFT 0 +#define TCFG1_MUXx_MASK 0x0f + +#define TCON_TIMER4_RELOAD 0x00400000 +#define TCON_TIMER4_UPDATE 0x00200000 +#define TCON_TIMER4_START 0x00100000 +#define TCON_TIMER3_RELOAD 0x00080000 +#define TCON_TIMER3_INVERT 0x00040000 +#define TCON_TIMER3_UPDATE 0x00020000 +#define TCON_TIMER3_START 0x00010000 +#define TCON_TIMER2_RELOAD 0x00008000 +#define TCON_TIMER2_INVERT 0x00004000 +#define TCON_TIMER2_UPDATE 0x00002000 +#define TCON_TIMER2_START 0x00001000 +#define TCON_TIMER1_RELOAD 0x00000800 +#define TCON_TIMER1_INVERT 0x00000400 +#define TCON_TIMER1_UPDATE 0x00000200 +#define TCON_TIMER1_START 0x00000100 +#define TCON_TIMER0_DEADZONE 0x00000010 +#define TCON_TIMER0_RELOAD 0x00000008 +#define TCON_TIMER0_INVERT 0x00000004 +#define TCON_TIMER0_UPDATE 0x00000002 +#define TCON_TIMER0_START 0x00000001 + +void s3c2410_run_timers(x49gp_t *x49gp); +clock_t s3c2410_next_timer(x49gp_t *x49gp); + +#endif /* !(_S3C2410_TIMER_H) */ diff --git a/include/.svn/text-base/saturn.h.svn-base b/include/.svn/text-base/saturn.h.svn-base new file mode 100644 index 0000000..b1102ff --- /dev/null +++ b/include/.svn/text-base/saturn.h.svn-base @@ -0,0 +1,43 @@ +/* $Id: saturn.h,v 1.1 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef SATURN_H +#define SATURN_H 1 + +#define NB_RSTK 8 + +typedef uint64_t saturn_reg_t; + +typedef struct { + uint32_t read_map[256 + 1]; + uint32_t write_map[256 + 1]; + uint8_t top_map[256 + 1 + 3]; + saturn_reg_t A; + saturn_reg_t B; + saturn_reg_t C; + saturn_reg_t D; + saturn_reg_t R0; + saturn_reg_t R1; + saturn_reg_t R2; + saturn_reg_t R3; + saturn_reg_t R4; + uint32_t D0; + uint32_t D1; + uint32_t P, P4, P4_32; + uint32_t ST; + uint32_t HST; + uint32_t carry; + int dec; + uint32_t RSTK[NB_RSTK]; + uint32_t RSTK_i; + uint32_t REG_FIELD[32]; + uint32_t FIELD_START[32]; + uint32_t FIELD_LENGTH[32]; +} saturn_cpu_t; + +#define SAT_RPLTOP 0x8076b +#define SAT_RSKTOP 0x806f3 /* RETTOP */ +#define SAT_DSKTOP 0x806f8 +#define SAT_EDITLINE 0x806fd + +#endif /* !(SATURN_H) */ diff --git a/include/.svn/text-base/symbol.h.svn-base b/include/.svn/text-base/symbol.h.svn-base new file mode 100644 index 0000000..53174f6 --- /dev/null +++ b/include/.svn/text-base/symbol.h.svn-base @@ -0,0 +1,68 @@ +/* $Id: symbol.h,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_SYMBOL_H +#define _X49GP_SYMBOL_H 1 + +#include + +typedef struct { + const cairo_path_data_t *data; + int num_data; +} symbol_path_t; + +typedef struct { + double x_advance; + double y_advance; + double llx; + double lly; + double urx; + double ury; + double prescale; + double postscale; + const symbol_path_t *path; +} x49gp_symbol_t; + +#define SYMBOL_MOVE_TO(x, y) \ + { header: { CAIRO_PATH_MOVE_TO, 2 } }, \ + { point: { x, y } } + +#define SYMBOL_LINE_TO(x, y) \ + { header: { CAIRO_PATH_LINE_TO, 2 } }, \ + { point: { x, y } } + +#define SYMBOL_CURVE_TO(x1, y1, x2, y2, x3, y3) \ + { header: { CAIRO_PATH_CURVE_TO, 4 } }, \ + { point: { x1, y1 } }, \ + { point: { x2, y2 } }, \ + { point: { x3, y3 } } + +#define SYMBOL_CLOSE_PATH() \ + { header: { CAIRO_PATH_CLOSE_PATH, 1 } } + +#define SYMBOL(name, x_advance, y_advance, llx, lly, urx, ury) \ +static const symbol_path_t symbol_##name##_path = \ +{ \ + symbol_##name##_path_data, \ + sizeof(symbol_##name##_path_data) / sizeof(cairo_path_data_t) \ +}; \ + \ +static const x49gp_symbol_t symbol_##name = \ +{ \ + x_advance, y_advance, llx, lly, urx, ury, 1.0, 1.0, \ + &symbol_##name##_path \ +} + +#define CONTROL(name, x_advance, y_advance, prescale, postscale) \ +static const x49gp_symbol_t symbol_##name = \ +{ \ + x_advance, y_advance, 0.0, 0.0, 0.0, 0.0, \ + prescale, postscale, NULL \ +} + +int symbol_lookup_glyph_by_name(const char *name, int namelen, gunichar *); + +const x49gp_symbol_t *symbol_get_by_name(const char *name); +const x49gp_symbol_t *symbol_get_by_glyph(gunichar glyph); + +#endif /* !(_X49GP_SYMBOL_H) */ diff --git a/include/.svn/text-base/x49gp.h.svn-base b/include/.svn/text-base/x49gp.h.svn-base new file mode 100644 index 0000000..6739281 --- /dev/null +++ b/include/.svn/text-base/x49gp.h.svn-base @@ -0,0 +1,144 @@ +/* $Id: x49gp.h,v 1.15 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_H +#define _X49GP_H + +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +/* LD TEMPO HACK */ +#ifndef QEMU_OLD +extern uint8_t *phys_ram_base; +extern int phys_ram_size; +#endif + +typedef enum { + X49GP_ARM_RUN = 0, + X49GP_ARM_SLEEP, + X49GP_ARM_OFF +} x49gp_arm_idle_t; + +typedef enum { + X49GP_RESET_POWER_ON = 0, + X49GP_RESET_POWER_OFF, + X49GP_RESET_WATCHDOG +} x49gp_reset_t; + +struct __x49gp_module_s__; +typedef struct __x49gp_module_s__ x49gp_module_t; + +struct __x49gp_module_s__ { + const char *name; + + int (*init) (x49gp_module_t *); + int (*exit) (x49gp_module_t *); + + int (*reset) (x49gp_module_t *, x49gp_reset_t); + + int (*load) (x49gp_module_t *, GKeyFile *); + int (*save) (x49gp_module_t *, GKeyFile *); + + void *user_data; + + x49gp_t *x49gp; + struct list_head list; +}; + + +struct __x49gp_s__ { + CPUARMState *env; + + struct list_head modules; + + void *s3c2410_lcd; + void *s3c2410_timer; + void *s3c2410_watchdog; + void *s3c2410_intc; + void *s3c2410_io_port; + + void *timer; + uint8_t *sram; + + uint32_t MCLK; + uint32_t UCLK; + + uint32_t FCLK; + uint32_t HCLK; + uint32_t PCLK; + int PCLK_ratio; + + clock_t clk_tck; + unsigned long emulator_fclk; + + unsigned char keybycol[8]; + unsigned char keybyrow[8]; + + x49gp_timer_t *gtk_timer; + x49gp_timer_t *lcd_timer; + + x49gp_arm_idle_t arm_idle; + int arm_exit; + + x49gp_ui_t *ui; + + GKeyFile *config; + const char *progname; +}; + +extern void x49gp_set_idle(x49gp_t *, x49gp_arm_idle_t idle); + +extern int x49gp_module_init(x49gp_t *x49gp, const char *name, + int (*init)(x49gp_module_t *), + int (*exit)(x49gp_module_t *), + int (*reset)(x49gp_module_t *, x49gp_reset_t), + int (*load)(x49gp_module_t *, GKeyFile *), + int (*save)(x49gp_module_t *, GKeyFile *), + void *user_data, x49gp_module_t **module); + +extern int x49gp_module_register(x49gp_module_t *module); +extern int x49gp_module_unregister(x49gp_module_t *module); + +extern char *x49gp_module_get_filename(x49gp_module_t *module, GKeyFile *, + const char *key); +extern int x49gp_module_get_int(x49gp_module_t *module, GKeyFile *, + const char *, int, int *); +extern int x49gp_module_set_int(x49gp_module_t *module, GKeyFile *, + const char *, int); +extern int x49gp_module_get_uint(x49gp_module_t *module, GKeyFile *, + const char *, + unsigned int, unsigned int *); +extern int x49gp_module_set_uint(x49gp_module_t *module, GKeyFile *, + const char *, unsigned int); +extern int x49gp_module_get_u32(x49gp_module_t *module, GKeyFile *, + const char *, uint32_t, uint32_t *); +extern int x49gp_module_set_u32(x49gp_module_t *module, GKeyFile *, + const char *, uint32_t); +extern int x49gp_module_get_u64(x49gp_module_t *module, GKeyFile *, + const char *, uint64_t, uint64_t *); +extern int x49gp_module_set_u64(x49gp_module_t *module, GKeyFile *, + const char *, uint64_t); +extern int x49gp_module_get_string(x49gp_module_t *module, GKeyFile *, + const char *, char *, char **); + +extern int x49gp_modules_init(x49gp_t *); +extern int x49gp_modules_exit(x49gp_t *); +extern int x49gp_modules_reset(x49gp_t *, x49gp_reset_t); +extern int x49gp_modules_load(x49gp_t *, const char *); +extern int x49gp_modules_save(x49gp_t *, const char *); + +extern int x49gp_flash_init(x49gp_t *); +extern int x49gp_sram_init(x49gp_t *); + +#endif /* !(_X49GP_H) */ diff --git a/include/.svn/text-base/x49gp_timer.h.svn-base b/include/.svn/text-base/x49gp_timer.h.svn-base new file mode 100644 index 0000000..e5acdcb --- /dev/null +++ b/include/.svn/text-base/x49gp_timer.h.svn-base @@ -0,0 +1,32 @@ +/* $Id: x49gp_timer.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_TIMER_H +#define _X49GP_TIMER_H 1 + +#include +#include + +#define X49GP_TIMER_VIRTUAL 0 +#define X49GP_TIMER_REALTIME 1 + +int64_t x49gp_get_clock(void); + +typedef void (*x49gp_timer_cb_t) (void *); +typedef struct x49gp_timer_s x49gp_timer_t; + +x49gp_timer_t *x49gp_new_timer(long type, x49gp_timer_cb_t, void *user_data); +void x49gp_free_timer(x49gp_timer_t *); + +void x49gp_mod_timer(x49gp_timer_t *, int64_t expires); +void x49gp_del_timer(x49gp_timer_t *); +int x49gp_timer_pending(x49gp_timer_t *); +int64_t x49gp_timer_expires(x49gp_timer_t *); + +#define X49GP_GTK_REFRESH_INTERVAL 30000LL +#define X49GP_LCD_REFRESH_INTERVAL 50000LL + +int x49gp_main_loop(x49gp_t *); +int x49gp_timer_init(x49gp_t *); + +#endif /* !(_X49GP_TIMER_H) */ diff --git a/include/.svn/text-base/x49gp_types.h.svn-base b/include/.svn/text-base/x49gp_types.h.svn-base new file mode 100644 index 0000000..f6b52d7 --- /dev/null +++ b/include/.svn/text-base/x49gp_types.h.svn-base @@ -0,0 +1,23 @@ +/* $Id: x49gp_types.h,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_TYPES_H +#define _X49GP_TYPES_H 1 + +typedef signed char s8; +typedef signed short s16; +typedef signed int s32; +typedef signed long long s64; + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; + +struct __x49gp_s__; +typedef struct __x49gp_s__ x49gp_t; + +struct __x49gp_ui_s__; +typedef struct __x49gp_ui_s__ x49gp_ui_t; + +#endif /* !(_X49GP_TYPES_H) */ diff --git a/include/.svn/text-base/x49gp_ui.h.svn-base b/include/.svn/text-base/x49gp_ui.h.svn-base new file mode 100644 index 0000000..e019b78 --- /dev/null +++ b/include/.svn/text-base/x49gp_ui.h.svn-base @@ -0,0 +1,125 @@ +/* $Id: x49gp_ui.h,v 1.14 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_UI_H +#define _X49GP_UI_H 1 + +#include + +typedef enum { + UI_COLOR_BLACK = 0, + UI_COLOR_WHITE, + UI_COLOR_YELLOW, + UI_COLOR_RED, + UI_COLOR_GREEN, + UI_COLOR_SILVER, + UI_COLOR_ORANGE, + UI_COLOR_BLUE, + UI_COLOR_MAX +} x49gp_ui_color_t; + +typedef enum { + UI_SHAPE_BUTTON_TINY = 0, + UI_SHAPE_BUTTON_SMALL, + UI_SHAPE_BUTTON_NORMAL, + UI_SHAPE_BUTTON_LARGE, + UI_SHAPE_BUTTON_ROUND, + UI_SHAPE_MAX +} x49gp_ui_shape_t; + +typedef enum { + UI_LAYOUT_LEFT = 0, + UI_LAYOUT_LEFT_NO_SPACE, + UI_LAYOUT_BELOW, + UI_LAYOUT_MAX +} x49gp_ui_layout_t; + +typedef enum { + UI_CALCULATOR_HP49GP = 0, + UI_CALCULATOR_HP50G +} x49gp_ui_calculator_t; + + +typedef struct { + const char *label; + const char *letter; + const char *left; + const char *right; + const char *below; + x49gp_ui_color_t color; + double font_size; + cairo_font_weight_t font_weight; + x49gp_ui_shape_t shape; + double letter_size; + x49gp_ui_layout_t layout; + int x; + int y; + int width; + int height; + int column; + int row; + unsigned char columnbit; + unsigned char rowbit; + int eint; +} x49gp_ui_key_t; + +typedef struct { + x49gp_t *x49gp; + const x49gp_ui_key_t *key; + GtkWidget *button; + GtkWidget *label; + GtkWidget *box; + GdkPixmap *pixmap; + gboolean down; + gboolean hold; +} x49gp_ui_button_t; + +struct __x49gp_ui_s__ { + GtkWidget *window; + GtkWidget *fixed; + + GdkPixbuf *bg_pixbuf; + GdkPixmap *bg_pixmap; + GtkWidget *background; + + GdkColor colors[UI_COLOR_MAX]; + GdkBitmap *shapes[UI_SHAPE_MAX]; + + x49gp_ui_calculator_t calculator; + + x49gp_ui_button_t *buttons; + unsigned int nr_buttons; + + GtkWidget *lcd_canvas; + GdkPixmap *lcd_pixmap; + + GdkGC *ann_left_gc; + GdkGC *ann_right_gc; + GdkGC *ann_alpha_gc; + GdkGC *ann_battery_gc; + GdkGC *ann_busy_gc; + GdkGC *ann_io_gc; + + GdkBitmap *ann_left; + GdkBitmap *ann_right; + GdkBitmap *ann_alpha; + GdkBitmap *ann_battery; + GdkBitmap *ann_busy; + GdkBitmap *ann_io; + + gint width; + gint height; + + gint kb_x_offset; + gint kb_y_offset; + + gint lcd_x_offset; + gint lcd_y_offset; + gint lcd_width; + gint lcd_height; + gint lcd_top_margin; +}; + +int x49gp_ui_init(x49gp_t *x49gp); + +#endif /* !(_X49GP_UI_H) */ diff --git a/include/CVS/.svn/all-wcprops b/include/CVS/.svn/all-wcprops new file mode 100644 index 0000000..71d6180 --- /dev/null +++ b/include/CVS/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 36 +/p/x49gp/code/!svn/ver/1/include/CVS +END +Repository +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/include/CVS/Repository +END +Root +K 25 +svn:wc:ra_dav:version-url +V 41 +/p/x49gp/code/!svn/ver/1/include/CVS/Root +END +Entries +K 25 +svn:wc:ra_dav:version-url +V 44 +/p/x49gp/code/!svn/ver/1/include/CVS/Entries +END diff --git a/include/CVS/.svn/entries b/include/CVS/.svn/entries new file mode 100644 index 0000000..613a7a3 --- /dev/null +++ b/include/CVS/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/include/CVS +http://svn.code.sf.net/p/x49gp/code + + + +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +Repository +file + + + + +2013-08-23T00:54:46.000000Z +787f1f54d99013d8c01d85d015aa21ed +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +14 + +Root +file + + + + +2013-08-23T00:54:46.000000Z +f51b768066a9e7d88829b19678326fcd +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +60 + +Entries +file + + + + +2013-08-23T00:54:46.000000Z +078400b504794b71bc803fc0f7dd0736 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +748 + diff --git a/include/CVS/.svn/text-base/Entries.svn-base b/include/CVS/.svn/text-base/Entries.svn-base new file mode 100644 index 0000000..9e08e9f --- /dev/null +++ b/include/CVS/.svn/text-base/Entries.svn-base @@ -0,0 +1,18 @@ +/bitmap_font.h/1.5/Thu Dec 11 12:18:17 2008// +/bitmaps.h/1.9/Thu Dec 11 12:18:17 2008// +/block.h/1.1/Thu Dec 11 12:18:17 2008// +/byteorder.h/1.5/Thu Dec 11 12:18:17 2008// +/glyphname.h/1.3/Thu Dec 11 12:18:17 2008// +/list.h/1.5/Thu Dec 11 12:18:17 2008// +/s3c2410.h/1.18/Thu Dec 11 12:18:17 2008// +/s3c2410_intc.h/1.3/Thu Dec 11 12:18:17 2008// +/s3c2410_mmu.h/1.3/Thu Dec 11 12:18:17 2008// +/s3c2410_power.h/1.3/Thu Dec 11 12:18:17 2008// +/s3c2410_timer.h/1.3/Thu Dec 11 12:18:17 2008// +/saturn.h/1.1/Thu Dec 11 12:18:17 2008// +/symbol.h/1.4/Thu Dec 11 12:18:17 2008// +/x49gp.h/1.15/Thu Dec 11 12:18:17 2008// +/x49gp_timer.h/1.3/Thu Dec 11 12:18:17 2008// +/x49gp_types.h/1.5/Thu Dec 11 12:18:17 2008// +/x49gp_ui.h/1.14/Thu Dec 11 12:18:17 2008// +D diff --git a/include/CVS/.svn/text-base/Repository.svn-base b/include/CVS/.svn/text-base/Repository.svn-base new file mode 100644 index 0000000..9500df1 --- /dev/null +++ b/include/CVS/.svn/text-base/Repository.svn-base @@ -0,0 +1 @@ +x49gp/include diff --git a/include/CVS/.svn/text-base/Root.svn-base b/include/CVS/.svn/text-base/Root.svn-base new file mode 100644 index 0000000..6f29e94 --- /dev/null +++ b/include/CVS/.svn/text-base/Root.svn-base @@ -0,0 +1 @@ +:pserver:anonymous@x49gp.cvs.sourceforge.net:/cvsroot/x49gp diff --git a/include/CVS/Entries b/include/CVS/Entries new file mode 100644 index 0000000..9e08e9f --- /dev/null +++ b/include/CVS/Entries @@ -0,0 +1,18 @@ +/bitmap_font.h/1.5/Thu Dec 11 12:18:17 2008// +/bitmaps.h/1.9/Thu Dec 11 12:18:17 2008// +/block.h/1.1/Thu Dec 11 12:18:17 2008// +/byteorder.h/1.5/Thu Dec 11 12:18:17 2008// +/glyphname.h/1.3/Thu Dec 11 12:18:17 2008// +/list.h/1.5/Thu Dec 11 12:18:17 2008// +/s3c2410.h/1.18/Thu Dec 11 12:18:17 2008// +/s3c2410_intc.h/1.3/Thu Dec 11 12:18:17 2008// +/s3c2410_mmu.h/1.3/Thu Dec 11 12:18:17 2008// +/s3c2410_power.h/1.3/Thu Dec 11 12:18:17 2008// +/s3c2410_timer.h/1.3/Thu Dec 11 12:18:17 2008// +/saturn.h/1.1/Thu Dec 11 12:18:17 2008// +/symbol.h/1.4/Thu Dec 11 12:18:17 2008// +/x49gp.h/1.15/Thu Dec 11 12:18:17 2008// +/x49gp_timer.h/1.3/Thu Dec 11 12:18:17 2008// +/x49gp_types.h/1.5/Thu Dec 11 12:18:17 2008// +/x49gp_ui.h/1.14/Thu Dec 11 12:18:17 2008// +D diff --git a/include/CVS/Repository b/include/CVS/Repository new file mode 100644 index 0000000..9500df1 --- /dev/null +++ b/include/CVS/Repository @@ -0,0 +1 @@ +x49gp/include diff --git a/include/CVS/Root b/include/CVS/Root new file mode 100644 index 0000000..6f29e94 --- /dev/null +++ b/include/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@x49gp.cvs.sourceforge.net:/cvsroot/x49gp diff --git a/include/bitmap_font.h b/include/bitmap_font.h new file mode 100644 index 0000000..ef99d6f --- /dev/null +++ b/include/bitmap_font.h @@ -0,0 +1,37 @@ +/* $Id: bitmap_font.h,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_BITMAP_FONT_H +#define _X49GP_BITMAP_FONT_H 1 + +typedef struct { + const char *name; + int width; + int kern; + int ascent; + int descent; + const unsigned char *bits; +} bitmap_glyph_t; + +typedef struct { + int ascent; + int descent; + bitmap_glyph_t glyphs[]; +} bitmap_font_t; + +#define GLYPH(font, name) \ + { \ + #name, \ + font##_##name##_width - font##_##name##_x_hot, \ + -font##_##name##_x_hot, \ + font##_##name##_y_hot + 1, \ + font##_##name##_y_hot + 1 - font##_##name##_height, \ + font##_##name##_bits \ + } + +#define SPACE(name, width, kern) \ + { name, width, kern, 0, 0, NULL } + +extern const bitmap_font_t tiny_font; + +#endif /* !(_X49GP_BITMAP_FONT_H) */ diff --git a/include/bitmaps.h b/include/bitmaps.h new file mode 100644 index 0000000..de8e25d --- /dev/null +++ b/include/bitmaps.h @@ -0,0 +1,21 @@ +/* $Id: bitmaps.h,v 1.9 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_BITMAPS_H +#define _X49GP_BITMAPS_H 1 + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#endif /* !(_X49GP_BITMAPS_H) */ diff --git a/include/block.h b/include/block.h new file mode 100644 index 0000000..e4c285a --- /dev/null +++ b/include/block.h @@ -0,0 +1,187 @@ +/* $Id: block.h,v 1.1 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef BLOCK_H +#define BLOCK_H 1 + +#include + +#define BDRV_O_RDONLY 0x0000 +#define BDRV_O_RDWR 0x0002 +#define BDRV_O_ACCESS 0x0003 +#define BDRV_O_CREAT 0x0004 /* create an empty file */ +#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save + writes in a snapshot */ +#define BDRV_O_FILE 0x0010 /* open as a raw file (do not try to + use a disk image format on top of + it (default for + bdrv_file_open()) */ + +#ifdef QEMU_OLD +typedef struct BlockDriverState BlockDriverState; +#endif +typedef struct BlockDriver BlockDriver; +typedef struct SnapshotInfo QEMUSnapshotInfo; +typedef struct BlockDriverInfo BlockDriverInfo; +typedef struct BlockDriverAIOCB BlockDriverAIOCB; +typedef void BlockDriverCompletionFunc(void *opaque, int ret); + +extern BlockDriver bdrv_raw; +extern BlockDriver bdrv_host_device; +extern BlockDriver bdrv_qcow; +extern BlockDriver bdrv_vvfat; + +void bdrv_init(void); +int bdrv_create(BlockDriver *drv, + const char *filename, int64_t size_in_sectors, + const char *backing_file, int flags); +BlockDriverState *bdrv_new(const char *device_name); +void bdrv_delete(BlockDriverState *bs); +int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags); +int bdrv_open(BlockDriverState *bs, const char *filename, int flags); + +int bdrv_read(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors); +int bdrv_pread(BlockDriverState *bs, int64_t offset, + void *buf, int count); +int bdrv_pwrite(BlockDriverState *bs, int64_t offset, + const void *buf, int count); + +#ifdef QEMU_OLD +struct BlockDriver { + const char *format_name; + int instance_size; + int (*bdrv_probe)(const uint8_t *buf, int buf_size, const char *filename); + int (*bdrv_open)(BlockDriverState *bs, const char *filename, int flags); + int (*bdrv_read)(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors); + int (*bdrv_write)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + void (*bdrv_close)(BlockDriverState *bs); + int (*bdrv_create)(const char *filename, int64_t total_sectors, + const char *backing_file, int flags); + void (*bdrv_flush)(BlockDriverState *bs); + int (*bdrv_is_allocated)(BlockDriverState *bs, int64_t sector_num, + int nb_sectors, int *pnum); + int (*bdrv_set_key)(BlockDriverState *bs, const char *key); + int (*bdrv_make_empty)(BlockDriverState *bs); + /* aio */ + BlockDriverAIOCB *(*bdrv_aio_read)(BlockDriverState *bs, + int64_t sector_num, uint8_t *buf, int nb_sectors, + BlockDriverCompletionFunc *cb, void *opaque); + BlockDriverAIOCB *(*bdrv_aio_write)(BlockDriverState *bs, + int64_t sector_num, const uint8_t *buf, int nb_sectors, + BlockDriverCompletionFunc *cb, void *opaque); + void (*bdrv_aio_cancel)(BlockDriverAIOCB *acb); + int aiocb_size; + + const char *protocol_name; + int (*bdrv_pread)(BlockDriverState *bs, int64_t offset, + uint8_t *buf, int count); + int (*bdrv_pwrite)(BlockDriverState *bs, int64_t offset, + const uint8_t *buf, int count); + int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset); + int64_t (*bdrv_getlength)(BlockDriverState *bs); + int (*bdrv_write_compressed)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + + int (*bdrv_snapshot_create)(BlockDriverState *bs, + QEMUSnapshotInfo *sn_info); + int (*bdrv_snapshot_goto)(BlockDriverState *bs, + const char *snapshot_id); + int (*bdrv_snapshot_delete)(BlockDriverState *bs, const char *snapshot_id); + int (*bdrv_snapshot_list)(BlockDriverState *bs, + QEMUSnapshotInfo **psn_info); + int (*bdrv_get_info)(BlockDriverState *bs, BlockDriverInfo *bdi); + + /* removable device specific */ + int (*bdrv_is_inserted)(BlockDriverState *bs); + int (*bdrv_media_changed)(BlockDriverState *bs); + int (*bdrv_eject)(BlockDriverState *bs, int eject_flag); + int (*bdrv_set_locked)(BlockDriverState *bs, int locked); + + BlockDriverAIOCB *free_aiocb; + struct BlockDriver *next; +}; + +struct BlockDriverState { + int64_t total_sectors; /* if we are reading a disk image, give its + size in sectors */ + int read_only; /* if true, the media is read only */ + int removable; /* if true, the media can be removed */ + int locked; /* if true, the media cannot temporarily be ejected */ + int encrypted; /* if true, the media is encrypted */ + /* event callback when inserting/removing */ + void (*change_cb)(void *opaque); + void *change_opaque; + + BlockDriver *drv; /* NULL means no media */ + void *opaque; + + int boot_sector_enabled; + uint8_t boot_sector_data[512]; + + char filename[1024]; + char backing_file[1024]; /* if non zero, the image is a diff of + this file image */ + int is_temporary; + int media_changed; + + BlockDriverState *backing_hd; +// /* async read/write emulation */ +// +// void *sync_aiocb; + + /* NOTE: the following infos are only hints for real hardware + drivers. They are not used by the block driver */ + int cyls, heads, secs, translation; + int type; + char device_name[32]; + BlockDriverState *next; +}; + +void *qemu_malloc(size_t size); +void *qemu_mallocz(size_t size); +void qemu_free(void *ptr); + +void pstrcpy(char *buf, int buf_size, const char *str); +char *pstrcat(char *buf, int buf_size, const char *s); +int strstart(const char *str, const char *val, const char **ptr); +int stristart(const char *str, const char *val, const char **ptr); +#endif /* QEMU_OLD */ + +#ifndef QEMU_OLD +int bdrv_truncate(BlockDriverState *bs, int64_t offset); +int64_t bdrv_getlength(BlockDriverState *bs); +void bdrv_flush(BlockDriverState *bs); + +/* timers */ + +typedef struct QEMUClock QEMUClock; +typedef void QEMUTimerCB(void *opaque); + +/* The real time clock should be used only for stuff which does not + change the virtual machine state, as it is run even if the virtual + machine is stopped. The real time clock has a frequency of 1000 + Hz. */ +extern QEMUClock *rt_clock; + +int64_t qemu_get_clock(QEMUClock *clock); + +QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque); +void qemu_del_timer(QEMUTimer *ts); +void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time); +int qemu_timer_pending(QEMUTimer *ts); + +extern int64_t ticks_per_sec; + +struct BlockDriverInfo { + /* in bytes, 0 if irrelevant */ + int cluster_size; + /* offset at which the VM state can be saved (0 if not possible) */ + int64_t vm_state_offset; +}; + +#endif + +#endif /* !(BLOCK_H) */ diff --git a/include/block_int.h b/include/block_int.h new file mode 100644 index 0000000..581679a --- /dev/null +++ b/include/block_int.h @@ -0,0 +1,104 @@ +/* + * QEMU System Emulator block driver + * + * Copyright (c) 2003 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifndef BLOCK_INT_H +#define BLOCK_INT_H + +struct BlockDriver { + const char *format_name; + int instance_size; + int (*bdrv_probe)(const uint8_t *buf, int buf_size, const char *filename); + int (*bdrv_open)(BlockDriverState *bs, const char *filename, int flags); + int (*bdrv_read)(BlockDriverState *bs, int64_t sector_num, + uint8_t *buf, int nb_sectors); + int (*bdrv_write)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + void (*bdrv_close)(BlockDriverState *bs); + int (*bdrv_create)(const char *filename, int64_t total_sectors, + const char *backing_file, int flags); + void (*bdrv_flush)(BlockDriverState *bs); + int (*bdrv_is_allocated)(BlockDriverState *bs, int64_t sector_num, + int nb_sectors, int *pnum); + int (*bdrv_set_key)(BlockDriverState *bs, const char *key); + int (*bdrv_make_empty)(BlockDriverState *bs); + + const char *protocol_name; + int (*bdrv_pread)(BlockDriverState *bs, int64_t offset, + uint8_t *buf, int count); + int (*bdrv_pwrite)(BlockDriverState *bs, int64_t offset, + const uint8_t *buf, int count); + int (*bdrv_truncate)(BlockDriverState *bs, int64_t offset); + int64_t (*bdrv_getlength)(BlockDriverState *bs); + int (*bdrv_write_compressed)(BlockDriverState *bs, int64_t sector_num, + const uint8_t *buf, int nb_sectors); + + int (*bdrv_get_info)(BlockDriverState *bs, BlockDriverInfo *bdi); + + /* removable device specific */ + int (*bdrv_is_inserted)(BlockDriverState *bs); + int (*bdrv_media_changed)(BlockDriverState *bs); + int (*bdrv_eject)(BlockDriverState *bs, int eject_flag); + int (*bdrv_set_locked)(BlockDriverState *bs, int locked); + + struct BlockDriver *next; +}; + +struct BlockDriverState { + int64_t total_sectors; /* if we are reading a disk image, give its + size in sectors */ + int read_only; /* if true, the media is read only */ + int removable; /* if true, the media can be removed */ + int locked; /* if true, the media cannot temporarily be ejected */ + int encrypted; /* if true, the media is encrypted */ + /* event callback when inserting/removing */ + void (*change_cb)(void *opaque); + void *change_opaque; + + BlockDriver *drv; /* NULL means no media */ + void *opaque; + + int boot_sector_enabled; + uint8_t boot_sector_data[512]; + + char filename[1024]; + char backing_file[1024]; /* if non zero, the image is a diff of + this file image */ + int is_temporary; + int media_changed; + + BlockDriverState *backing_hd; + /* async read/write emulation */ + + void *sync_aiocb; + + /* NOTE: the following infos are only hints for real hardware + drivers. They are not used by the block driver */ + int cyls, heads, secs, translation; + int type; + char device_name[32]; + BlockDriverState *next; +}; + +void get_tmp_filename(char *filename, int size); + +#endif /* BLOCK_INT_H */ diff --git a/include/byteorder.h b/include/byteorder.h new file mode 100644 index 0000000..72fb035 --- /dev/null +++ b/include/byteorder.h @@ -0,0 +1,91 @@ +/* $Id: byteorder.h,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_BYTEORDER_H +#define _X49GP_BYTEORDER_H 1 + +#include + +static __inline__ uint16_t swab16(uint16_t x) +{ + return ((x & 0xff00) >> 8) | + ((x & 0x00ff) << 8); +} + +static __inline__ uint32_t swab32(uint32_t x) +{ + return ((x & 0xff000000) >> 24) | + ((x & 0x00ff0000) >> 8) | + ((x & 0x0000ff00) << 8) | + ((x & 0x000000ff) << 24); +} + +#ifdef __sparc__ + +#define ASI_PL 0x88 /* Primary, implicit, little endian. */ + +static __inline__ uint16_t __load_le16(const uint16_t *p) +{ + uint16_t x; + + __asm__ __volatile__ ("lduha [%1] %2, %0" + : "=r" (x) + : "r" (p), "i" (ASI_PL)); + return x; +} + +static __inline__ uint32_t __load_le32(const uint32_t *p) +{ + uint32_t x; + + __asm__ __volatile__ ("lduwa [%1] %2, %0" + : "=r" (x) + : "r" (p), "i" (ASI_PL)); + return x; +} + +static __inline__ void __store_le16(uint16_t *p, uint16_t x) +{ + __asm__ __volatile__ ("stha %0, [%1] %2" + : /* no outputs */ + : "r" (x), "r" (p), "i" (ASI_PL)); +} + +static __inline__ void __store_le32(uint32_t *p, uint32_t x) +{ + __asm__ __volatile__ ("stwa %0, [%1] %2" + : /* no outputs */ + : "r" (x), "r" (p), "i" (ASI_PL)); +} + +#endif /* __sparc__ */ + +#if __BYTE_ORDER == __LITTLE_ENDIAN + +#define le16_to_cpu(x) (x) +#define cpu_to_le16(x) (x) +#define le32_to_cpu(x) (x) +#define cpu_to_le32(x) (x) + +#define load_le16(p) (*(p)) +#define store_le16(p, x) (*(p) = (x)) +#define load_le32(p) (*(p)) +#define store_le32(p, x) (*(p) = (x)) + +#elif __BYTE_ORDER == __BIG_ENDIAN + +#define le16_to_cpu(x) swab16(x) +#define cpu_to_le16(x) swab16(x) +#define le32_to_cpu(x) swab32(x) +#define cpu_to_le32(x) swab32(x) + +#define load_le16(p) __load_le16(p) +#define store_le16(p, x) __store_le16(p, x) +#define load_le32(p) __load_le32(p) +#define store_le32(p, x) __store_le32(p, x) + +#else +#error "Cannot determine host byteorder" +#endif + +#endif /* !(_X49GP_BYTEORDER_H) */ diff --git a/include/glyphname.h b/include/glyphname.h new file mode 100644 index 0000000..787d8e9 --- /dev/null +++ b/include/glyphname.h @@ -0,0 +1,238 @@ +/* $Id: glyphname.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_GLYPHNAME_H +#define _X49GP_GLYPHNAME_H 1 + +typedef struct { + const char *name; + gunichar unichar; +} x49gp_glyph_t; + +static const x49gp_glyph_t x49gp_glyphs[] = +{ + { "exclamdown", 0x00a1 }, + { "cent", 0x00a2 }, + { "sterling", 0x00a3 }, + { "fraction", 0x2044 }, + { "yen", 0x00a5 }, + { "florin", 0x0192 }, + { "section", 0x00a7 }, + { "currency", 0x00a4 }, + { "quotesingle", 0x0027 }, + { "quotedblleft", 0x201c }, + { "guillemotleft", 0x00ab }, + { "guilsinglleft", 0x2039 }, + { "guilsinglright", 0x203a }, + { "fi", 0xfb01 }, + { "fl", 0xfb02 }, + { "endash", 0x2013 }, + { "dagger", 0x2020 }, + { "daggerdbl", 0x2021 }, + { "periodcentered", 0x00b7 }, + { "paragraph", 0x00b6 }, + { "bullet", 0x2022 }, + { "quotesinglbase", 0x201a }, + { "quotedblbase", 0x201e }, + { "quotedblright", 0x201d }, + { "guillemotright", 0x00bb }, + { "ellipsis", 0x2026 }, + { "perthousand", 0x2030 }, + { "questiondown", 0x00bf }, + { "grave", 0x0060 }, + { "acute", 0x00b4 }, + { "circumflex", 0x02c6 }, + { "tilde", 0x02dc }, + { "macron", 0x00af }, + { "breve", 0x02d8 }, + { "dotaccent", 0x02d9 }, + { "dieresis", 0x00a8 }, + { "ring", 0x02da }, + { "cedilla", 0x00b8 }, + { "hungarumlaut", 0x02dd }, + { "ogonek", 0x02db }, + { "caron", 0x02c7 }, + { "emdash", 0x2014 }, + { "AE", 0x00c6 }, + { "ordfeminine", 0x00aa }, + { "Lslash", 0x0141 }, + { "Oslash", 0x00d8 }, + { "OE", 0x0152 }, + { "ordmasculine", 0x00ba }, + { "ae", 0x00e6 }, + { "dotlessi", 0x0131 }, + { "lslash", 0x0142 }, + { "oslash", 0x00f8 }, + { "oe", 0x0153 }, + { "germandbls", 0x00df }, + { "Udieresis", 0x00dc }, + { "Uacute", 0x00da }, + { "Scedilla", 0x015e }, + { "Tcaron", 0x0164 }, + { "Scaron", 0x0160 }, + { "Rcaron", 0x0158 }, + { "Racute", 0x0154 }, + { "Sacute", 0x015a }, + { "Otilde", 0x00d5 }, + { "ucircumflex", 0x00fb }, + { "Ohungarumlaut", 0x0150 }, + { "Uhungarumlaut", 0x0170 }, + { "Yacute", 0x00dd }, + { "Eth", 0x00d0 }, + { "Dcroat", 0x0110 }, + { "Zacute", 0x0179 }, + { "Uring", 0x016e }, + { "gbreve", 0x011f }, + { "eogonek", 0x0119 }, + { "edotaccent", 0x0117 }, + { "ecaron", 0x011b }, + { "Ugrave", 0x00d9 }, + { "Thorn", 0x00de }, + { "eacute", 0x00e9 }, + { "edieresis", 0x00eb }, + { "dcaron", 0x010f }, + { "ccedilla", 0x00e7 }, + { "ccaron", 0x010d }, + { "cacute", 0x0107 }, + { "aogonek", 0x0105 }, + { "aring", 0x00e5 }, + { "atilde", 0x00e3 }, + { "abreve", 0x0103 }, + { "egrave", 0x00e8 }, + { "agrave", 0x00e0 }, + { "aacute", 0x00e1 }, + { "adieresis", 0x00e4 }, + { "Uogonek", 0x0172 }, + { "ugrave", 0x00f9 }, + { "uacute", 0x00fa }, + { "udieresis", 0x00fc }, + { "tcaron", 0x0165 }, + { "scommaaccent", 0x0219 }, + { "Zcaron", 0x017d }, + { "ecircumflex", 0x00ea }, + { "Ucircumflex", 0x00db }, + { "acircumflex", 0x00e2 }, + { "Zdotaccent", 0x017b }, + { "scaron", 0x0161 }, + { "Amacron", 0x0100 }, + { "sacute", 0x015b }, + { "Tcommaaccent", 0x0162 }, + { "Ydieresis", 0x0178 }, + { "thorn", 0x00fe }, + { "Emacron", 0x0112 }, + { "Ograve", 0x00d2 }, + { "Oacute", 0x00d3 }, + { "Odieresis", 0x00d6 }, + { "Ntilde", 0x00d1 }, + { "Ncaron", 0x0147 }, + { "Nacute", 0x0143 }, + { "Lcaron", 0x013d }, + { "Lacute", 0x0139 }, + { "Idotaccent", 0x0130 }, + { "racute", 0x0155 }, + { "Icircumflex", 0x00ce }, + { "ohungarumlaut", 0x0151 }, + { "otilde", 0x00f5 }, + { "Euro", 0x20ac }, + { "ocircumflex", 0x00f4 }, + { "onesuperior", 0x00b9 }, + { "twosuperior", 0x00b2 }, + { "threesuperior", 0x00b3 }, + { "Igrave", 0x00cc }, + { "Iacute", 0x00cd }, + { "Imacron", 0x012a }, + { "Iogonek", 0x012e }, + { "Idieresis", 0x00cf }, + { "Gbreve", 0x011e }, + { "Umacron", 0x016a }, + { "Kcommaaccent", 0x0136 }, + { "ograve", 0x00f2 }, + { "Scommaaccent", 0x0218 }, + { "Eogonek", 0x0118 }, + { "oacute", 0x00f3 }, + { "Edotaccent", 0x0116 }, + { "iogonek", 0x012f }, + { "gcommaaccent", 0x0123 }, + { "odieresis", 0x00f6 }, + { "ntilde", 0x00f1 }, + { "ncaron", 0x0148 }, + { "Ecaron", 0x011a }, + { "Ecircumflex", 0x00ca }, + { "scedilla", 0x015f }, + { "rcaron", 0x0159 }, + { "Egrave", 0x00c8 }, + { "Eacute", 0x00c9 }, + { "Gcommaaccent", 0x0122 }, + { "Rcommaaccent", 0x0156 }, + { "Edieresis", 0x00cb }, + { "nacute", 0x0144 }, + { "uogonek", 0x0173 }, + { "umacron", 0x016b }, + { "Dcaron", 0x010e }, + { "lcaron", 0x013e }, + { "Ccaron", 0x010c }, + { "Cacute", 0x0106 }, + { "Ccedilla", 0x00c7 }, + { "degree", 0x00b0 }, + { "Aogonek", 0x0104 }, + { "minus", 0x2212 }, + { "multiply", 0x00d7 }, + { "divide", 0x00f7 }, + { "Aring", 0x00c5 }, + { "trademark", 0x2122 }, + { "rcommaaccent", 0x0157 }, + { "lacute", 0x013a }, + { "omacron", 0x014d }, + { "Atilde", 0x00c3 }, + { "icircumflex", 0x00ee }, + { "igrave", 0x00ec }, + { "ncommaaccent", 0x0146 }, + { "lcommaaccent", 0x013c }, + { "plusminus", 0x00b1 }, + { "onehalf", 0x00bd }, + { "onequarter", 0x00bc }, + { "threequarters", 0x00be }, + { "iacute", 0x00ed }, + { "Abreve", 0x0102 }, + { "kcommaaccent", 0x0137 }, + { "Omacron", 0x014c }, + { "imacron", 0x012b }, + { "emacron", 0x0113 }, + { "amacron", 0x0101 }, + { "tcommaaccent", 0x0163 }, + { "ydieresis", 0x00ff }, + { "zdotaccent", 0x017c }, + { "zcaron", 0x017e }, + { "zacute", 0x017a }, + { "yacute", 0x00fd }, + { "uhungarumlaut", 0x0171 }, + { "eth", 0x00f0 }, + { "uring", 0x016f }, + { "Ocircumflex", 0x00d4 }, + { "commaaccent", 0xf6c3 }, + { "copyright", 0x00a9 }, + { "registered", 0x00ae }, + { "Acircumflex", 0x00c2 }, + { "idieresis", 0x00ef }, + { "lozenge", 0x25ca }, + { "Delta", 0x2206 }, + { "notequal", 0x2260 }, + { "radical", 0x221a }, + { "Agrave", 0x00c0 }, + { "Aacute", 0x00c1 }, + { "lessequal", 0x2264 }, + { "greaterequal", 0x2265 }, + { "logicalnot", 0x00ac }, + { "summation", 0x2211 }, + { "partialdiff", 0x2202 }, + { "Ncommaaccent", 0x0145 }, + { "dcroat", 0x0111 }, + { "brokenbar", 0x00a6 }, + { "Lcommaaccent", 0x013b }, + { "Adieresis", 0x00c4 }, + { "mu", 0x00b5 } +}; + +#define NR_GLYPHNAMES (sizeof(x49gp_glyphs) / sizeof(x49gp_glyphs[0])) + +#endif /* !(_X49GP_GLYPHNAME_H) */ diff --git a/include/list.h b/include/list.h new file mode 100644 index 0000000..ccf9148 --- /dev/null +++ b/include/list.h @@ -0,0 +1,600 @@ +#ifndef _LINUX_LIST_H +#define _LINUX_LIST_H + +#include + +static inline void prefetch(const void *x) {;} + +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif + +#ifdef QEMU_OLD +/** + * container_of - cast a member of a structure out to the containing structure + * + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) +#endif + +/* + * These are non-NULL pointers that will result in page faults + * under normal circumstances, used to verify that nobody uses + * non-initialized list entries. + */ +#define LIST_POISON1 ((void *) 0x00100100) +#define LIST_POISON2 ((void *) 0x00200200) + +/* + * Simple doubly linked list implementation. + * + * Some of the internal functions ("__xxx") are useful when + * manipulating whole lists rather than single entries, as + * sometimes we already know the next/prev entries and we can + * generate better code by using them directly rather than + * using the generic single-entry routines. + */ + +struct list_head { + struct list_head *next, *prev; +}; + +#define LIST_HEAD_INIT(name) { &(name), &(name) } + +#define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + +#define INIT_LIST_HEAD(ptr) do { \ + (ptr)->next = (ptr); (ptr)->prev = (ptr); \ +} while (0) + +/* + * Insert a new entry between two known consecutive entries. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_add(struct list_head *new, + struct list_head *prev, + struct list_head *next) +{ + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +/** + * list_add - add a new entry + * @new: new entry to be added + * @head: list head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); +} + +/** + * list_add_tail - add a new entry + * @new: new entry to be added + * @head: list head to add it before + * + * Insert a new entry before the specified head. + * This is useful for implementing queues. + */ +static inline void list_add_tail(struct list_head *new, struct list_head *head) +{ + __list_add(new, head->prev, head); +} + +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head * prev, struct list_head * next) +{ + next->prev = prev; + prev->next = next; +} + +/** + * list_del - deletes entry from list. + * @entry: the element to delete from the list. + * Note: list_empty on entry does not return true after this, the entry is + * in an undefined state. + */ +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} + +/** + * list_del_init - deletes entry from list and reinitialize it. + * @entry: the element to delete from the list. + */ +static inline void list_del_init(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + INIT_LIST_HEAD(entry); +} + +/** + * list_move - delete from one list and add as another's head + * @list: the entry to move + * @head: the head that will precede our entry + */ +static inline void list_move(struct list_head *list, struct list_head *head) +{ + __list_del(list->prev, list->next); + list_add(list, head); +} + +/** + * list_move_tail - delete from one list and add as another's tail + * @list: the entry to move + * @head: the head that will follow our entry + */ +static inline void list_move_tail(struct list_head *list, + struct list_head *head) +{ + __list_del(list->prev, list->next); + list_add_tail(list, head); +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/** + * list_empty_careful - tests whether a list is + * empty _and_ checks that no other CPU might be + * in the process of still modifying either member + * + * NOTE: using list_empty_careful() without synchronization + * can only be safe if the only activity that can happen + * to the list entry is list_del_init(). Eg. it cannot be used + * if another CPU could re-list_add() it. + * + * @head: the list to test. + */ +static inline int list_empty_careful(const struct list_head *head) +{ + struct list_head *next = head->next; + return (next == head) && (next == head->prev); +} + +static inline void __list_splice(struct list_head *list, + struct list_head *head) +{ + struct list_head *first = list->next; + struct list_head *last = list->prev; + struct list_head *at = head->next; + + first->prev = head; + head->next = first; + + last->next = at; + at->prev = last; +} + +/** + * list_splice - join two lists + * @list: the new list to add. + * @head: the place to add it in the first list. + */ +static inline void list_splice(struct list_head *list, struct list_head *head) +{ + if (!list_empty(list)) + __list_splice(list, head); +} + +/** + * list_splice_init - join two lists and reinitialise the emptied list. + * @list: the new list to add. + * @head: the place to add it in the first list. + * + * The list at @list is reinitialised + */ +static inline void list_splice_init(struct list_head *list, + struct list_head *head) +{ + if (!list_empty(list)) { + __list_splice(list, head); + INIT_LIST_HEAD(list); + } +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_for_each - iterate over a list + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + */ +#define list_for_each(pos, head) \ + for (pos = (head)->next; prefetch(pos->next), pos != (head); \ + pos = pos->next) + +/** + * __list_for_each - iterate over a list + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + * + * This variant differs from list_for_each() in that it's the + * simplest possible list iteration code, no prefetching is done. + * Use this for code that knows the list to be very short (empty + * or 1 entry) most of the time. + */ +#define __list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + +/** + * list_for_each_prev - iterate over a list backwards + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + */ +#define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; prefetch(pos->prev), pos != (head); \ + pos = pos->prev) + +/** + * list_for_each_safe - iterate over a list safe against removal of list entry + * @pos: the &struct list_head to use as a loop counter. + * @n: another &struct list_head to use as temporary storage + * @head: the head for your list. + */ +#define list_for_each_safe(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = n, n = pos->next) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + prefetch(pos->member.next), &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) + +/** + * list_for_each_entry_reverse - iterate backwards over list of given type. + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_reverse(pos, head, member) \ + for (pos = list_entry((head)->prev, typeof(*pos), member); \ + prefetch(pos->member.prev), &pos->member != (head); \ + pos = list_entry(pos->member.prev, typeof(*pos), member)) + +/** + * list_prepare_entry - prepare a pos entry for use as a start point in + * list_for_each_entry_continue + * @pos: the type * to use as a start point + * @head: the head of the list + * @member: the name of the list_struct within the struct. + */ +#define list_prepare_entry(pos, head, member) \ + ((pos) ? : list_entry(head, typeof(*pos), member)) + +/** + * list_for_each_entry_continue - iterate over list of given type + * continuing after existing point + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_continue(pos, head, member) \ + for (pos = list_entry(pos->member.next, typeof(*pos), member); \ + prefetch(pos->member.next), &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) + +/** + * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop counter. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member), \ + n = list_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.next, typeof(*n), member)) + +/** + * list_for_each_entry_safe_reverse - iterate backwards over list of given type safe against removal of list entry. + * @pos: the type * to use as a loop counter. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_safe_reverse(pos, n, head, member) \ + for (pos = list_entry((head)->prev, typeof(*pos), member), \ + n = list_entry(pos->member.prev, typeof(*pos), member); \ + prefetch(pos->member.prev), &pos->member != (head); \ + pos = n, n = list_entry(n->member.prev, typeof(*n), member)) + +/** + * list_for_each_rcu - iterate over an rcu-protected list + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_rcu(pos, head) \ + for (pos = (head)->next; prefetch(pos->next), pos != (head); \ + pos = rcu_dereference(pos->next)) + +#define __list_for_each_rcu(pos, head) \ + for (pos = (head)->next; pos != (head); \ + pos = rcu_dereference(pos->next)) + +/** + * list_for_each_safe_rcu - iterate over an rcu-protected list safe + * against removal of list entry + * @pos: the &struct list_head to use as a loop counter. + * @n: another &struct list_head to use as temporary storage + * @head: the head for your list. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_safe_rcu(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = rcu_dereference(n), n = pos->next) + +/** + * list_for_each_entry_rcu - iterate over rcu list of given type + * @pos: the type * to use as a loop counter. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_entry_rcu(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + prefetch(pos->member.next), &pos->member != (head); \ + pos = rcu_dereference(list_entry(pos->member.next, \ + typeof(*pos), member))) + + +/** + * list_for_each_continue_rcu - iterate over an rcu-protected list + * continuing after existing point. + * @pos: the &struct list_head to use as a loop counter. + * @head: the head for your list. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as list_add_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define list_for_each_continue_rcu(pos, head) \ + for ((pos) = (pos)->next; prefetch((pos)->next), (pos) != (head); \ + (pos) = rcu_dereference((pos)->next)) + +/* + * Double linked lists with a single pointer list head. + * Mostly useful for hash tables where the two pointer list head is + * too wasteful. + * You lose the ability to access the tail in O(1). + */ + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + +#define HLIST_HEAD_INIT { .first = NULL } +#define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } +#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL) +#define INIT_HLIST_NODE(ptr) ((ptr)->next = NULL, (ptr)->pprev = NULL) + +static inline int hlist_unhashed(const struct hlist_node *h) +{ + return !h->pprev; +} + +static inline int hlist_empty(const struct hlist_head *h) +{ + return !h->first; +} + +static inline void __hlist_del(struct hlist_node *n) +{ + struct hlist_node *next = n->next; + struct hlist_node **pprev = n->pprev; + *pprev = next; + if (next) + next->pprev = pprev; +} + +static inline void hlist_del(struct hlist_node *n) +{ + __hlist_del(n); + n->next = LIST_POISON1; + n->pprev = LIST_POISON2; +} + +/** + * hlist_del_rcu - deletes entry from hash list without re-initialization + * @n: the element to delete from the hash list. + * + * Note: list_unhashed() on entry does not return true after this, + * the entry is in an undefined state. It is useful for RCU based + * lockfree traversal. + * + * In particular, it means that we can not poison the forward + * pointers that may still be used for walking the hash list. + * + * The caller must take whatever precautions are necessary + * (such as holding appropriate locks) to avoid racing + * with another list-mutation primitive, such as hlist_add_head_rcu() + * or hlist_del_rcu(), running on this same list. + * However, it is perfectly legal to run concurrently with + * the _rcu list-traversal primitives, such as + * hlist_for_each_entry(). + */ +static inline void hlist_del_rcu(struct hlist_node *n) +{ + __hlist_del(n); + n->pprev = LIST_POISON2; +} + +static inline void hlist_del_init(struct hlist_node *n) +{ + if (n->pprev) { + __hlist_del(n); + INIT_HLIST_NODE(n); + } +} + +static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) +{ + struct hlist_node *first = h->first; + n->next = first; + if (first) + first->pprev = &n->next; + h->first = n; + n->pprev = &h->first; +} + +/* next must be != NULL */ +static inline void hlist_add_before(struct hlist_node *n, + struct hlist_node *next) +{ + n->pprev = next->pprev; + n->next = next; + next->pprev = &n->next; + *(n->pprev) = n; +} + +static inline void hlist_add_after(struct hlist_node *n, + struct hlist_node *next) +{ + next->next = n->next; + n->next = next; + next->pprev = &n->next; + + if(next->next) + next->next->pprev = &next->next; +} + +#define hlist_entry(ptr, type, member) container_of(ptr,type,member) + +#define hlist_for_each(pos, head) \ + for (pos = (head)->first; pos && ({ prefetch(pos->next); 1; }); \ + pos = pos->next) + +#define hlist_for_each_safe(pos, n, head) \ + for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \ + pos = n) + +#define hlist_for_each_rcu(pos, head) \ + for ((pos) = (head)->first; pos && ({ prefetch((pos)->next); 1; }); \ + (pos) = rcu_dereference((pos)->next)) + +/** + * hlist_for_each_entry - iterate over list of given type + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry(tpos, pos, head, member) \ + for (pos = (head)->first; \ + pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = pos->next) + +/** + * hlist_for_each_entry_continue - iterate over a hlist continuing after existing point + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_continue(tpos, pos, member) \ + for (pos = (pos)->next; \ + pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = pos->next) + +/** + * hlist_for_each_entry_from - iterate over a hlist continuing from existing point + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_from(tpos, pos, member) \ + for (; pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = pos->next) + +/** + * hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @tpos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @n: another &struct hlist_node to use as temporary storage + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_safe(tpos, pos, n, head, member) \ + for (pos = (head)->first; \ + pos && ({ n = pos->next; 1; }) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = n) + +/** + * hlist_for_each_entry_rcu - iterate over rcu list of given type + * @pos: the type * to use as a loop counter. + * @pos: the &struct hlist_node to use as a loop counter. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + * + * This list-traversal primitive may safely run concurrently with + * the _rcu list-mutation primitives such as hlist_add_head_rcu() + * as long as the traversal is guarded by rcu_read_lock(). + */ +#define hlist_for_each_entry_rcu(tpos, pos, head, member) \ + for (pos = (head)->first; \ + pos && ({ prefetch(pos->next); 1;}) && \ + ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ + pos = rcu_dereference(pos->next)) + +#endif /* _LINUX_LIST_H */ diff --git a/include/s3c2410.h b/include/s3c2410.h new file mode 100644 index 0000000..53d1b58 --- /dev/null +++ b/include/s3c2410.h @@ -0,0 +1,348 @@ +/* $Id: s3c2410.h,v 1.18 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_S3C2410_H +#define _X49GP_S3C2410_H 1 + +#include + +typedef struct { + const char *name; + uint32_t reset; + uint32_t *datap; +} s3c2410_offset_t; + +#define S3C2410_OFFSET(module, name, reset, data) \ + [S3C2410_ ## module ## _ ## name >> 2] = { #name, reset, &(data) } + +#define S3C2410_OFFSET_OK(p, offset) \ + ((((offset) >> 2) < (p)->nr_regs) && (p)->regs[(offset) >> 2].name) + +#define S3C2410_OFFSET_ENTRY(p, offset) &((p)->regs[(offset) >> 2]) + + +#define S3C2410_MAP_SIZE 0x00010000 + + +#define S3C2410_SRAM_BASE 0x40000000 +#define S3C2410_SRAM_SIZE 0x00001000 + +#define S3C2410_MEMC_BASE 0x48000000 + +#define S3C2410_MEMC_BWSCON 0x0000 +#define S3C2410_MEMC_BANKCON0 0x0004 +#define S3C2410_MEMC_BANKCON1 0x0008 +#define S3C2410_MEMC_BANKCON2 0x000c +#define S3C2410_MEMC_BANKCON3 0x0010 +#define S3C2410_MEMC_BANKCON4 0x0014 +#define S3C2410_MEMC_BANKCON5 0x0018 +#define S3C2410_MEMC_BANKCON6 0x001c +#define S3C2410_MEMC_BANKCON7 0x0020 +#define S3C2410_MEMC_REFRESH 0x0024 +#define S3C2410_MEMC_BANKSIZE 0x0028 +#define S3C2410_MEMC_MRSRB6 0x002c +#define S3C2410_MEMC_MRSRB7 0x0030 + +#define S3C2410_USBHOST_BASE 0x49000000 + +#define S3C2410_INTC_BASE 0x4a000000 + +#define S3C2410_INTC_SRCPND 0x0000 +#define S3C2410_INTC_INTMOD 0x0004 +#define S3C2410_INTC_INTMSK 0x0008 +#define S3C2410_INTC_PRIORITY 0x000c +#define S3C2410_INTC_INTPND 0x0010 +#define S3C2410_INTC_INTOFFSET 0x0014 +#define S3C2410_INTC_SUBSRCPND 0x0018 +#define S3C2410_INTC_INTSUBMSK 0x001c + +#define S3C2410_POWER_BASE 0x4c000000 + +#define S3C2410_POWER_LOCKTIME 0x0000 +#define S3C2410_POWER_MPLLCON 0x0004 +#define S3C2410_POWER_UPLLCON 0x0008 +#define S3C2410_POWER_CLKCON 0x000c +#define S3C2410_POWER_CLKSLOW 0x0010 +#define S3C2410_POWER_CLKDIVN 0x0014 + +#define S3C2410_LCD_BASE 0x4d000000 + +#define S3C2410_LCD_LCDCON1 0x0000 +#define S3C2410_LCD_LCDCON2 0x0004 +#define S3C2410_LCD_LCDCON3 0x0008 +#define S3C2410_LCD_LCDCON4 0x000c +#define S3C2410_LCD_LCDCON5 0x0010 +#define S3C2410_LCD_LCDSADDR1 0x0014 +#define S3C2410_LCD_LCDSADDR2 0x0018 +#define S3C2410_LCD_LCDSADDR3 0x001c +#define S3C2410_LCD_REDLUT 0x0020 +#define S3C2410_LCD_GREENLUT 0x0024 +#define S3C2410_LCD_BLUELUT 0x0028 +#define S3C2410_LCD_DITHMODE 0x004c +#define S3C2410_LCD_TPAL 0x0050 +#define S3C2410_LCD_LCDINTPND 0x0054 +#define S3C2410_LCD_LCDSRCPND 0x0058 +#define S3C2410_LCD_LCDINTMSK 0x005c +#define S3C2410_LCD_LPCSEL 0x0060 +#define S3C2410_LCD_UNKNOWN_68 0x0068 + +#define S3C2410_LCD_PALETTE_START 0x0400 +#define S3C2410_LCD_PALETTE_SIZE 0x0400 + +#define S3C2410_NAND_BASE 0x4e000000 + +#define S3C2410_NAND_NFCONF 0x0000 +#define S3C2410_NAND_NFCMD 0x0004 +#define S3C2410_NAND_NFADDR 0x0008 +#define S3C2410_NAND_NFDATA 0x000c +#define S3C2410_NAND_NFSTAT 0x0010 +#define S3C2410_NAND_NFECC 0x0014 + +#define S3C2410_UART0_BASE 0x50000000 +#define S3C2410_UART1_BASE 0x50004000 +#define S3C2410_UART2_BASE 0x50008000 + +#define S3C2410_UART0_ULCON 0x0000 +#define S3C2410_UART0_UCON 0x0004 +#define S3C2410_UART0_UFCON 0x0008 +#define S3C2410_UART0_UMCON 0x000c +#define S3C2410_UART0_UTRSTAT 0x0010 +#define S3C2410_UART0_UERSTAT 0x0014 +#define S3C2410_UART0_UFSTAT 0x0018 +#define S3C2410_UART0_UMSTAT 0x001c +#define S3C2410_UART0_UTXH 0x0020 +#define S3C2410_UART0_URXH 0x0024 +#define S3C2410_UART0_UBRDIV 0x0028 + +#define S3C2410_UART1_ULCON 0x0000 +#define S3C2410_UART1_UCON 0x0004 +#define S3C2410_UART1_UFCON 0x0008 +#define S3C2410_UART1_UMCON 0x000c +#define S3C2410_UART1_UTRSTAT 0x0010 +#define S3C2410_UART1_UERSTAT 0x0014 +#define S3C2410_UART1_UFSTAT 0x0018 +#define S3C2410_UART1_UMSTAT 0x001c +#define S3C2410_UART1_UTXH 0x0020 +#define S3C2410_UART1_URXH 0x0024 +#define S3C2410_UART1_UBRDIV 0x0028 + +#define S3C2410_UART2_ULCON 0x0000 +#define S3C2410_UART2_UCON 0x0004 +#define S3C2410_UART2_UFCON 0x0008 +#define S3C2410_UART2_UTRSTAT 0x0010 +#define S3C2410_UART2_UERSTAT 0x0014 +#define S3C2410_UART2_UFSTAT 0x0018 +#define S3C2410_UART2_UTXH 0x0020 +#define S3C2410_UART2_URXH 0x0024 +#define S3C2410_UART2_UBRDIV 0x0028 + +#define S3C2410_TIMER_BASE 0x51000000 + +#define S3C2410_TIMER_TCFG0 0x0000 +#define S3C2410_TIMER_TCFG1 0x0004 +#define S3C2410_TIMER_TCON 0x0008 +#define S3C2410_TIMER_TCNTB0 0x000c +#define S3C2410_TIMER_TCMPB0 0x0010 +#define S3C2410_TIMER_TCNTO0 0x0014 +#define S3C2410_TIMER_TCNTB1 0x0018 +#define S3C2410_TIMER_TCMPB1 0x001c +#define S3C2410_TIMER_TCNTO1 0x0020 +#define S3C2410_TIMER_TCNTB2 0x0024 +#define S3C2410_TIMER_TCMPB2 0x0028 +#define S3C2410_TIMER_TCNTO2 0x002c +#define S3C2410_TIMER_TCNTB3 0x0030 +#define S3C2410_TIMER_TCMPB3 0x0034 +#define S3C2410_TIMER_TCNTO3 0x0038 +#define S3C2410_TIMER_TCNTB4 0x003c +#define S3C2410_TIMER_TCNTO4 0x0040 + +#define S3C2410_USBDEV_BASE 0x52000000 + +#define S3C2410_USBDEV_FUNC_ADDR_REG 0x0140 +#define S3C2410_USBDEV_PWR_REG 0x0144 +#define S3C2410_USBDEV_EP_INT_REG 0x0148 +#define S3C2410_USBDEV_USB_INT_REG 0x0158 +#define S3C2410_USBDEV_EP_INT_EN_REG 0x015c +#define S3C2410_USBDEV_USB_INT_EN_REG 0x016c +#define S3C2410_USBDEV_FRAME_NUM1_REG 0x0170 +#define S3C2410_USBDEV_FRAME_NUM2_REG 0x0174 +#define S3C2410_USBDEV_INDEX_REG 0x0178 +#define S3C2410_USBDEV_EP0_FIFO_REG 0x01C0 +#define S3C2410_USBDEV_EP1_FIFO_REG 0x01C4 +#define S3C2410_USBDEV_EP2_FIFO_REG 0x01C8 +#define S3C2410_USBDEV_EP3_FIFO_REG 0x01CC +#define S3C2410_USBDEV_EP4_FIFO_REG 0x01D0 +#define S3C2410_USBDEV_EP1_DMA_CON 0x0200 +#define S3C2410_USBDEV_EP1_DMA_UNIT 0x0204 +#define S3C2410_USBDEV_EP1_DMA_FIFO 0x0208 +#define S3C2410_USBDEV_EP1_DMA_TTC_L 0x020C +#define S3C2410_USBDEV_EP1_DMA_TTC_M 0x0210 +#define S3C2410_USBDEV_EP1_DMA_TTC_H 0x0214 +#define S3C2410_USBDEV_EP2_DMA_CON 0x0218 +#define S3C2410_USBDEV_EP2_DMA_UNIT 0x021C +#define S3C2410_USBDEV_EP2_DMA_FIFO 0x0220 +#define S3C2410_USBDEV_EP2_DMA_TTC_L 0x0224 +#define S3C2410_USBDEV_EP2_DMA_TTC_M 0x0228 +#define S3C2410_USBDEV_EP2_DMA_TTC_H 0x022C +#define S3C2410_USBDEV_EP3_DMA_CON 0x0240 +#define S3C2410_USBDEV_EP3_DMA_UNIT 0x0244 +#define S3C2410_USBDEV_EP3_DMA_FIFO 0x0248 +#define S3C2410_USBDEV_EP3_DMA_TTC_L 0x024C +#define S3C2410_USBDEV_EP3_DMA_TTC_M 0x0250 +#define S3C2410_USBDEV_EP3_DMA_TTC_H 0x0254 +#define S3C2410_USBDEV_EP4_DMA_CON 0x0258 +#define S3C2410_USBDEV_EP4_DMA_UNIT 0x025C +#define S3C2410_USBDEV_EP4_DMA_FIFO 0x0260 +#define S3C2410_USBDEV_EP4_DMA_TTC_L 0x0264 +#define S3C2410_USBDEV_EP4_DMA_TTC_M 0x0268 +#define S3C2410_USBDEV_EP4_DMA_TTC_H 0x026C +#define S3C2410_USBDEV_MAXP_REG_WRONG 0x0180 +#define S3C2410_USBDEV_IN_CSR1_REG_EP0_CSR 0x0184 +#define S3C2410_USBDEV_IN_CSR2_REG 0x0188 +#define S3C2410_USBDEV_MAXP_REG 0x018c +#define S3C2410_USBDEV_OUT_CSR1_REG 0x0190 +#define S3C2410_USBDEV_OUT_CSR2_REG 0x0194 +#define S3C2410_USBDEV_OUT_FIFO_CNT1_REG 0x0198 +#define S3C2410_USBDEV_OUT_FIFO_CNT2_REG 0x019C + +#define S3C2410_WATCHDOG_BASE 0x53000000 + +#define S3C2410_WATCHDOG_WTCON 0x0000 +#define S3C2410_WATCHDOG_WTDAT 0x0004 +#define S3C2410_WATCHDOG_WTCNT 0x0008 + +#define S3C2410_IO_PORT_BASE 0x56000000 + +#define S3C2410_IO_PORT_GPACON 0x0000 +#define S3C2410_IO_PORT_GPADAT 0x0004 +#define S3C2410_IO_PORT_GPBCON 0x0010 +#define S3C2410_IO_PORT_GPBDAT 0x0014 +#define S3C2410_IO_PORT_GPBUP 0x0018 +#define S3C2410_IO_PORT_GPCCON 0x0020 +#define S3C2410_IO_PORT_GPCDAT 0x0024 +#define S3C2410_IO_PORT_GPCUP 0x0028 +#define S3C2410_IO_PORT_GPDCON 0x0030 +#define S3C2410_IO_PORT_GPDDAT 0x0034 +#define S3C2410_IO_PORT_GPDUP 0x0038 +#define S3C2410_IO_PORT_GPECON 0x0040 +#define S3C2410_IO_PORT_GPEDAT 0x0044 +#define S3C2410_IO_PORT_GPEUP 0x0048 +#define S3C2410_IO_PORT_GPFCON 0x0050 +#define S3C2410_IO_PORT_GPFDAT 0x0054 +#define S3C2410_IO_PORT_GPFUP 0x0058 +#define S3C2410_IO_PORT_GPGCON 0x0060 +#define S3C2410_IO_PORT_GPGDAT 0x0064 +#define S3C2410_IO_PORT_GPGUP 0x0068 +#define S3C2410_IO_PORT_GPHCON 0x0070 +#define S3C2410_IO_PORT_GPHDAT 0x0074 +#define S3C2410_IO_PORT_GPHUP 0x0078 +#define S3C2410_IO_PORT_MISCCR 0x0080 +#define S3C2410_IO_PORT_DCLKCON 0x0084 +#define S3C2410_IO_PORT_EXTINT0 0x0088 +#define S3C2410_IO_PORT_EXTINT1 0x008c +#define S3C2410_IO_PORT_EXTINT2 0x0090 +#define S3C2410_IO_PORT_EINTFLT0 0x0094 +#define S3C2410_IO_PORT_EINTFLT1 0x0098 +#define S3C2410_IO_PORT_EINTFLT2 0x009c +#define S3C2410_IO_PORT_EINTFLT3 0x00a0 +#define S3C2410_IO_PORT_EINTMASK 0x00a4 +#define S3C2410_IO_PORT_EINTPEND 0x00a8 +#define S3C2410_IO_PORT_GSTATUS0 0x00ac +#define S3C2410_IO_PORT_GSTATUS1 0x00b0 +#define S3C2410_IO_PORT_GSTATUS2 0x00b4 +#define S3C2410_IO_PORT_GSTATUS3 0x00b8 +#define S3C2410_IO_PORT_GSTATUS4 0x00bc + +#define S3C2410_RTC_BASE 0x57000000 + +#define S3C2410_RTC_RTCCON 0x0040 +#define S3C2410_RTC_TICNT 0x0044 +#define S3C2410_RTC_RTCALM 0x0050 +#define S3C2410_RTC_ALMSEC 0x0054 +#define S3C2410_RTC_ALMMIN 0x0058 +#define S3C2410_RTC_ALMHOUR 0x005c +#define S3C2410_RTC_ALMDATE 0x0060 +#define S3C2410_RTC_ALMMON 0x0064 +#define S3C2410_RTC_ALMYEAR 0x0068 +#define S3C2410_RTC_RTCRST 0x006c +#define S3C2410_RTC_BCDSEC 0x0070 +#define S3C2410_RTC_BCDMIN 0x0074 +#define S3C2410_RTC_BCDHOUR 0x0078 +#define S3C2410_RTC_BCDDATE 0x007c +#define S3C2410_RTC_BCDDAY 0x0080 +#define S3C2410_RTC_BCDMON 0x0084 +#define S3C2410_RTC_BCDYEAR 0x0088 + +#define S3C2410_ADC_BASE 0x58000000 + +#define S3C2410_ADC_ADCCON 0x0000 +#define S3C2410_ADC_ADCTSC 0x0004 +#define S3C2410_ADC_ADCDLY 0x0008 +#define S3C2410_ADC_ADCDAT0 0x000c +#define S3C2410_ADC_ADCDAT1 0x0010 + +#define S3C2410_SPI_BASE 0x59000000 + +#define S3C2410_SPI_SPICON0 0x0000 +#define S3C2410_SPI_SPISTA0 0x0004 +#define S3C2410_SPI_SPPIN0 0x0008 +#define S3C2410_SPI_SPPRE0 0x000c +#define S3C2410_SPI_SPTDAT0 0x0010 +#define S3C2410_SPI_SPRDAT0 0x0014 +#define S3C2410_SPI_SPICON1 0x0020 +#define S3C2410_SPI_SPISTA1 0x0024 +#define S3C2410_SPI_SPPIN1 0x0028 +#define S3C2410_SPI_SPPRE1 0x002c +#define S3C2410_SPI_SPTDAT1 0x0030 +#define S3C2410_SPI_SPRDAT1 0x0034 + +#define S3C2410_SDI_BASE 0x5a000000 + +#define S3C2410_SDI_SDICON 0x0000 +#define S3C2410_SDI_SDIPRE 0x0004 +#define S3C2410_SDI_SDICARG 0x0008 +#define S3C2410_SDI_SDICCON 0x000c +#define S3C2410_SDI_SDICSTA 0x0010 +#define S3C2410_SDI_SDIRSP0 0x0014 +#define S3C2410_SDI_SDIRSP1 0x0018 +#define S3C2410_SDI_SDIRSP2 0x001c +#define S3C2410_SDI_SDIRSP3 0x0020 +#define S3C2410_SDI_SDIDTIMER 0x0024 +#define S3C2410_SDI_SDIBSIZE 0x0028 +#define S3C2410_SDI_SDIDCON 0x002c +#define S3C2410_SDI_SDIDCNT 0x0030 +#define S3C2410_SDI_SDIDSTA 0x0034 +#define S3C2410_SDI_SDIFSTA 0x0038 +#define S3C2410_SDI_SDIDAT 0x003c +#define S3C2410_SDI_SDIIMSK 0x0040 + + +extern int x49gp_s3c2410_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_arm_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_mmu_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_sram_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_memc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_intc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_power_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_lcd_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_nand_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_uart_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_timer_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_usbdev_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_watchdog_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_io_port_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_rtc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_adc_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_spi_init(x49gp_t *x49gp); +extern int x49gp_s3c2410_sdi_init(x49gp_t *x49gp); + +extern void s3c2410_io_port_g_set_bit(x49gp_t *x49gp, int n, uint32_t set); +extern void s3c2410_io_port_f_set_bit(x49gp_t *x49gp, int n, uint32_t set); + +extern void x49gp_schedule_lcd_update(x49gp_t *x49gp); +extern void x49gp_lcd_update(x49gp_t *x49gp); + +extern unsigned long s3c2410_timer_next_interrupt(x49gp_t *x49gp); +extern unsigned long s3c2410_watchdog_next_interrupt(x49gp_t *x49gp); + +#endif /* !(_X49GP_S3C2410_H) */ diff --git a/include/s3c2410_intc.h b/include/s3c2410_intc.h new file mode 100644 index 0000000..b3c5ffd --- /dev/null +++ b/include/s3c2410_intc.h @@ -0,0 +1,72 @@ +/* $Id: s3c2410_intc.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_S3C2410_INTC_H +#define _X49GP_S3C2410_INTC_H 1 + +#define INT_ADC 31 +#define INT_RTC 30 +#define INT_SPI1 29 +#define INT_UART0 28 +#define INT_IIC 27 +#define INT_USBH 26 +#define INT_USBD 25 +#define INT_UART1 23 +#define INT_SPI0 22 +#define INT_SDI 21 +#define INT_DMA3 20 +#define INT_DMA2 19 +#define INT_DMA1 18 +#define INT_DMA0 17 +#define INT_LCD 16 +#define INT_UART2 15 +#define INT_TIMER4 14 +#define INT_TIMER3 13 +#define INT_TIMER2 12 +#define INT_TIMER1 11 +#define INT_TIMER0 10 +#define INT_WDT 9 +#define INT_TICK 8 +#define nBATT_FLT 7 +#define EINT8_23 5 +#define EINT4_7 4 +#define EINT3 3 +#define EINT2 2 +#define EINT1 1 +#define EINT0 0 + +#define SUB_INT_ADC 10 +#define SUB_INT_TC 9 +#define SUB_INT_ERR2 8 +#define SUB_INT_TXD2 7 +#define SUB_INT_RXD2 6 +#define SUB_INT_ERR1 5 +#define SUB_INT_TXD1 4 +#define SUB_INT_RXD1 3 +#define SUB_INT_ERR0 2 +#define SUB_INT_TXD0 1 +#define SUB_INT_RXD0 0 + +#define ARB0_MODE (1 << 0) +#define ARB1_MODE (1 << 1) +#define ARB2_MODE (1 << 2) +#define ARB3_MODE (1 << 3) +#define ARB4_MODE (1 << 4) +#define ARB5_MODE (1 << 5) +#define ARB6_MODE (1 << 6) +#define ARB0_SEL_SHIFT 7 +#define ARB1_SEL_SHIFT 9 +#define ARB2_SEL_SHIFT 11 +#define ARB3_SEL_SHIFT 13 +#define ARB4_SEL_SHIFT 15 +#define ARB5_SEL_SHIFT 17 +#define ARB6_SEL_SHIFT 19 +#define ARBx_SEL_MASK 3 + +void s3c2410_intc_sub_assert(x49gp_t *x49gp, int sub_irq, int level); +void s3c2410_intc_sub_deassert(x49gp_t *x49gp, int sub_irq); + +void s3c2410_intc_assert(x49gp_t *x49gp, int irq, int level); +void s3c2410_intc_deassert(x49gp_t *x49gp, int irq); + +#endif /* !(_X49GP_S3C2410_INTC_H) */ diff --git a/include/s3c2410_mmu.h b/include/s3c2410_mmu.h new file mode 100644 index 0000000..561e2da --- /dev/null +++ b/include/s3c2410_mmu.h @@ -0,0 +1,37 @@ +/* $Id: s3c2410_mmu.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _S3C2410_MMU_H +#define _S3C2410_MMU_H 1 + +#define S3C2410_MMU_TLB_SIZE 64 +#define S3C2410_MMU_TLB_MASK (S3C2410_MMU_TLB_SIZE - 1) + +typedef struct { + uint32_t mva; + uint32_t mask; + uint32_t pa; + uint32_t dac; + int valid; +} TLB_entry_t; + +typedef struct { + int victim; + int base; + int index0; + int index1; + unsigned long hit0; + unsigned long hit1; + unsigned long search; + unsigned long nsearch; + unsigned long walk; + TLB_entry_t data[S3C2410_MMU_TLB_SIZE]; +} TLB_t; + +typedef struct { + uint32_t MMUReg[16]; + TLB_t iTLB; + TLB_t dTLB; +} s3c2410_mmu_t; + +#endif /* !(_S3C2410_MMU_H) */ diff --git a/include/s3c2410_power.h b/include/s3c2410_power.h new file mode 100644 index 0000000..88c3a57 --- /dev/null +++ b/include/s3c2410_power.h @@ -0,0 +1,28 @@ +/* $Id: s3c2410_power.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _S3C2410_POWER_H +#define _S3C2410_POWER_H 1 + +#define CLKCON_SPI 0x00040000 +#define CLKCON_IIS 0x00020000 +#define CLKCON_IIC 0x00010000 +#define CLKCON_ADC 0x00008000 +#define CLKCON_RTC 0x00004000 +#define CLKCON_GPIO 0x00002000 +#define CLKCON_UART2 0x00001000 +#define CLKCON_UART1 0x00000800 +#define CLKCON_UART0 0x00000400 +#define CLKCON_SDI 0x00000200 +#define CLKCON_TIMER 0x00000100 +#define CLKCON_USBD 0x00000080 +#define CLKCON_USBH 0x00000040 +#define CLKCON_LCD 0x00000020 +#define CLKCON_NAND 0x00000010 +#define CLKCON_POWER_OFF 0x00000008 +#define CLKCON_IDLE 0x00000004 +#define CLKCON_SM_BIT 0x00000001 + +extern int s3c2410_idle; + +#endif /* !(_S3C2410_POWER_H) */ diff --git a/include/s3c2410_timer.h b/include/s3c2410_timer.h new file mode 100644 index 0000000..5fcfe25 --- /dev/null +++ b/include/s3c2410_timer.h @@ -0,0 +1,48 @@ +/* $Id: s3c2410_timer.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _S3C2410_TIMER_H +#define _S3C2410_TIMER_H 1 + +#include + +#define TCFG0_DEAD_SHIFT 16 +#define TCFG0_DEAD_MASK 0xff +#define TCFG0_PRE1_SHIFT 8 +#define TCFG0_PRE0_SHIFT 0 +#define TCFG0_PREx_MASK 0xff + +#define TCFG1_DMA_SHIFT 20 +#define TCFG1_DMA_MASK 0x0f +#define TCFG1_MUX4_SHIFT 16 +#define TCFG1_MUX3_SHIFT 12 +#define TCFG1_MUX2_SHIFT 8 +#define TCFG1_MUX1_SHIFT 4 +#define TCFG1_MUX0_SHIFT 0 +#define TCFG1_MUXx_MASK 0x0f + +#define TCON_TIMER4_RELOAD 0x00400000 +#define TCON_TIMER4_UPDATE 0x00200000 +#define TCON_TIMER4_START 0x00100000 +#define TCON_TIMER3_RELOAD 0x00080000 +#define TCON_TIMER3_INVERT 0x00040000 +#define TCON_TIMER3_UPDATE 0x00020000 +#define TCON_TIMER3_START 0x00010000 +#define TCON_TIMER2_RELOAD 0x00008000 +#define TCON_TIMER2_INVERT 0x00004000 +#define TCON_TIMER2_UPDATE 0x00002000 +#define TCON_TIMER2_START 0x00001000 +#define TCON_TIMER1_RELOAD 0x00000800 +#define TCON_TIMER1_INVERT 0x00000400 +#define TCON_TIMER1_UPDATE 0x00000200 +#define TCON_TIMER1_START 0x00000100 +#define TCON_TIMER0_DEADZONE 0x00000010 +#define TCON_TIMER0_RELOAD 0x00000008 +#define TCON_TIMER0_INVERT 0x00000004 +#define TCON_TIMER0_UPDATE 0x00000002 +#define TCON_TIMER0_START 0x00000001 + +void s3c2410_run_timers(x49gp_t *x49gp); +clock_t s3c2410_next_timer(x49gp_t *x49gp); + +#endif /* !(_S3C2410_TIMER_H) */ diff --git a/include/saturn.h b/include/saturn.h new file mode 100644 index 0000000..b1102ff --- /dev/null +++ b/include/saturn.h @@ -0,0 +1,43 @@ +/* $Id: saturn.h,v 1.1 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef SATURN_H +#define SATURN_H 1 + +#define NB_RSTK 8 + +typedef uint64_t saturn_reg_t; + +typedef struct { + uint32_t read_map[256 + 1]; + uint32_t write_map[256 + 1]; + uint8_t top_map[256 + 1 + 3]; + saturn_reg_t A; + saturn_reg_t B; + saturn_reg_t C; + saturn_reg_t D; + saturn_reg_t R0; + saturn_reg_t R1; + saturn_reg_t R2; + saturn_reg_t R3; + saturn_reg_t R4; + uint32_t D0; + uint32_t D1; + uint32_t P, P4, P4_32; + uint32_t ST; + uint32_t HST; + uint32_t carry; + int dec; + uint32_t RSTK[NB_RSTK]; + uint32_t RSTK_i; + uint32_t REG_FIELD[32]; + uint32_t FIELD_START[32]; + uint32_t FIELD_LENGTH[32]; +} saturn_cpu_t; + +#define SAT_RPLTOP 0x8076b +#define SAT_RSKTOP 0x806f3 /* RETTOP */ +#define SAT_DSKTOP 0x806f8 +#define SAT_EDITLINE 0x806fd + +#endif /* !(SATURN_H) */ diff --git a/include/symbol.h b/include/symbol.h new file mode 100644 index 0000000..53174f6 --- /dev/null +++ b/include/symbol.h @@ -0,0 +1,68 @@ +/* $Id: symbol.h,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_SYMBOL_H +#define _X49GP_SYMBOL_H 1 + +#include + +typedef struct { + const cairo_path_data_t *data; + int num_data; +} symbol_path_t; + +typedef struct { + double x_advance; + double y_advance; + double llx; + double lly; + double urx; + double ury; + double prescale; + double postscale; + const symbol_path_t *path; +} x49gp_symbol_t; + +#define SYMBOL_MOVE_TO(x, y) \ + { header: { CAIRO_PATH_MOVE_TO, 2 } }, \ + { point: { x, y } } + +#define SYMBOL_LINE_TO(x, y) \ + { header: { CAIRO_PATH_LINE_TO, 2 } }, \ + { point: { x, y } } + +#define SYMBOL_CURVE_TO(x1, y1, x2, y2, x3, y3) \ + { header: { CAIRO_PATH_CURVE_TO, 4 } }, \ + { point: { x1, y1 } }, \ + { point: { x2, y2 } }, \ + { point: { x3, y3 } } + +#define SYMBOL_CLOSE_PATH() \ + { header: { CAIRO_PATH_CLOSE_PATH, 1 } } + +#define SYMBOL(name, x_advance, y_advance, llx, lly, urx, ury) \ +static const symbol_path_t symbol_##name##_path = \ +{ \ + symbol_##name##_path_data, \ + sizeof(symbol_##name##_path_data) / sizeof(cairo_path_data_t) \ +}; \ + \ +static const x49gp_symbol_t symbol_##name = \ +{ \ + x_advance, y_advance, llx, lly, urx, ury, 1.0, 1.0, \ + &symbol_##name##_path \ +} + +#define CONTROL(name, x_advance, y_advance, prescale, postscale) \ +static const x49gp_symbol_t symbol_##name = \ +{ \ + x_advance, y_advance, 0.0, 0.0, 0.0, 0.0, \ + prescale, postscale, NULL \ +} + +int symbol_lookup_glyph_by_name(const char *name, int namelen, gunichar *); + +const x49gp_symbol_t *symbol_get_by_name(const char *name); +const x49gp_symbol_t *symbol_get_by_glyph(gunichar glyph); + +#endif /* !(_X49GP_SYMBOL_H) */ diff --git a/include/x49gp.h b/include/x49gp.h new file mode 100644 index 0000000..6739281 --- /dev/null +++ b/include/x49gp.h @@ -0,0 +1,144 @@ +/* $Id: x49gp.h,v 1.15 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_H +#define _X49GP_H + +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +/* LD TEMPO HACK */ +#ifndef QEMU_OLD +extern uint8_t *phys_ram_base; +extern int phys_ram_size; +#endif + +typedef enum { + X49GP_ARM_RUN = 0, + X49GP_ARM_SLEEP, + X49GP_ARM_OFF +} x49gp_arm_idle_t; + +typedef enum { + X49GP_RESET_POWER_ON = 0, + X49GP_RESET_POWER_OFF, + X49GP_RESET_WATCHDOG +} x49gp_reset_t; + +struct __x49gp_module_s__; +typedef struct __x49gp_module_s__ x49gp_module_t; + +struct __x49gp_module_s__ { + const char *name; + + int (*init) (x49gp_module_t *); + int (*exit) (x49gp_module_t *); + + int (*reset) (x49gp_module_t *, x49gp_reset_t); + + int (*load) (x49gp_module_t *, GKeyFile *); + int (*save) (x49gp_module_t *, GKeyFile *); + + void *user_data; + + x49gp_t *x49gp; + struct list_head list; +}; + + +struct __x49gp_s__ { + CPUARMState *env; + + struct list_head modules; + + void *s3c2410_lcd; + void *s3c2410_timer; + void *s3c2410_watchdog; + void *s3c2410_intc; + void *s3c2410_io_port; + + void *timer; + uint8_t *sram; + + uint32_t MCLK; + uint32_t UCLK; + + uint32_t FCLK; + uint32_t HCLK; + uint32_t PCLK; + int PCLK_ratio; + + clock_t clk_tck; + unsigned long emulator_fclk; + + unsigned char keybycol[8]; + unsigned char keybyrow[8]; + + x49gp_timer_t *gtk_timer; + x49gp_timer_t *lcd_timer; + + x49gp_arm_idle_t arm_idle; + int arm_exit; + + x49gp_ui_t *ui; + + GKeyFile *config; + const char *progname; +}; + +extern void x49gp_set_idle(x49gp_t *, x49gp_arm_idle_t idle); + +extern int x49gp_module_init(x49gp_t *x49gp, const char *name, + int (*init)(x49gp_module_t *), + int (*exit)(x49gp_module_t *), + int (*reset)(x49gp_module_t *, x49gp_reset_t), + int (*load)(x49gp_module_t *, GKeyFile *), + int (*save)(x49gp_module_t *, GKeyFile *), + void *user_data, x49gp_module_t **module); + +extern int x49gp_module_register(x49gp_module_t *module); +extern int x49gp_module_unregister(x49gp_module_t *module); + +extern char *x49gp_module_get_filename(x49gp_module_t *module, GKeyFile *, + const char *key); +extern int x49gp_module_get_int(x49gp_module_t *module, GKeyFile *, + const char *, int, int *); +extern int x49gp_module_set_int(x49gp_module_t *module, GKeyFile *, + const char *, int); +extern int x49gp_module_get_uint(x49gp_module_t *module, GKeyFile *, + const char *, + unsigned int, unsigned int *); +extern int x49gp_module_set_uint(x49gp_module_t *module, GKeyFile *, + const char *, unsigned int); +extern int x49gp_module_get_u32(x49gp_module_t *module, GKeyFile *, + const char *, uint32_t, uint32_t *); +extern int x49gp_module_set_u32(x49gp_module_t *module, GKeyFile *, + const char *, uint32_t); +extern int x49gp_module_get_u64(x49gp_module_t *module, GKeyFile *, + const char *, uint64_t, uint64_t *); +extern int x49gp_module_set_u64(x49gp_module_t *module, GKeyFile *, + const char *, uint64_t); +extern int x49gp_module_get_string(x49gp_module_t *module, GKeyFile *, + const char *, char *, char **); + +extern int x49gp_modules_init(x49gp_t *); +extern int x49gp_modules_exit(x49gp_t *); +extern int x49gp_modules_reset(x49gp_t *, x49gp_reset_t); +extern int x49gp_modules_load(x49gp_t *, const char *); +extern int x49gp_modules_save(x49gp_t *, const char *); + +extern int x49gp_flash_init(x49gp_t *); +extern int x49gp_sram_init(x49gp_t *); + +#endif /* !(_X49GP_H) */ diff --git a/include/x49gp_timer.h b/include/x49gp_timer.h new file mode 100644 index 0000000..e5acdcb --- /dev/null +++ b/include/x49gp_timer.h @@ -0,0 +1,32 @@ +/* $Id: x49gp_timer.h,v 1.3 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_TIMER_H +#define _X49GP_TIMER_H 1 + +#include +#include + +#define X49GP_TIMER_VIRTUAL 0 +#define X49GP_TIMER_REALTIME 1 + +int64_t x49gp_get_clock(void); + +typedef void (*x49gp_timer_cb_t) (void *); +typedef struct x49gp_timer_s x49gp_timer_t; + +x49gp_timer_t *x49gp_new_timer(long type, x49gp_timer_cb_t, void *user_data); +void x49gp_free_timer(x49gp_timer_t *); + +void x49gp_mod_timer(x49gp_timer_t *, int64_t expires); +void x49gp_del_timer(x49gp_timer_t *); +int x49gp_timer_pending(x49gp_timer_t *); +int64_t x49gp_timer_expires(x49gp_timer_t *); + +#define X49GP_GTK_REFRESH_INTERVAL 30000LL +#define X49GP_LCD_REFRESH_INTERVAL 50000LL + +int x49gp_main_loop(x49gp_t *); +int x49gp_timer_init(x49gp_t *); + +#endif /* !(_X49GP_TIMER_H) */ diff --git a/include/x49gp_types.h b/include/x49gp_types.h new file mode 100644 index 0000000..f6b52d7 --- /dev/null +++ b/include/x49gp_types.h @@ -0,0 +1,23 @@ +/* $Id: x49gp_types.h,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_TYPES_H +#define _X49GP_TYPES_H 1 + +typedef signed char s8; +typedef signed short s16; +typedef signed int s32; +typedef signed long long s64; + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; + +struct __x49gp_s__; +typedef struct __x49gp_s__ x49gp_t; + +struct __x49gp_ui_s__; +typedef struct __x49gp_ui_s__ x49gp_ui_t; + +#endif /* !(_X49GP_TYPES_H) */ diff --git a/include/x49gp_ui.h b/include/x49gp_ui.h new file mode 100644 index 0000000..e019b78 --- /dev/null +++ b/include/x49gp_ui.h @@ -0,0 +1,125 @@ +/* $Id: x49gp_ui.h,v 1.14 2008/12/11 12:18:17 ecd Exp $ + */ + +#ifndef _X49GP_UI_H +#define _X49GP_UI_H 1 + +#include + +typedef enum { + UI_COLOR_BLACK = 0, + UI_COLOR_WHITE, + UI_COLOR_YELLOW, + UI_COLOR_RED, + UI_COLOR_GREEN, + UI_COLOR_SILVER, + UI_COLOR_ORANGE, + UI_COLOR_BLUE, + UI_COLOR_MAX +} x49gp_ui_color_t; + +typedef enum { + UI_SHAPE_BUTTON_TINY = 0, + UI_SHAPE_BUTTON_SMALL, + UI_SHAPE_BUTTON_NORMAL, + UI_SHAPE_BUTTON_LARGE, + UI_SHAPE_BUTTON_ROUND, + UI_SHAPE_MAX +} x49gp_ui_shape_t; + +typedef enum { + UI_LAYOUT_LEFT = 0, + UI_LAYOUT_LEFT_NO_SPACE, + UI_LAYOUT_BELOW, + UI_LAYOUT_MAX +} x49gp_ui_layout_t; + +typedef enum { + UI_CALCULATOR_HP49GP = 0, + UI_CALCULATOR_HP50G +} x49gp_ui_calculator_t; + + +typedef struct { + const char *label; + const char *letter; + const char *left; + const char *right; + const char *below; + x49gp_ui_color_t color; + double font_size; + cairo_font_weight_t font_weight; + x49gp_ui_shape_t shape; + double letter_size; + x49gp_ui_layout_t layout; + int x; + int y; + int width; + int height; + int column; + int row; + unsigned char columnbit; + unsigned char rowbit; + int eint; +} x49gp_ui_key_t; + +typedef struct { + x49gp_t *x49gp; + const x49gp_ui_key_t *key; + GtkWidget *button; + GtkWidget *label; + GtkWidget *box; + GdkPixmap *pixmap; + gboolean down; + gboolean hold; +} x49gp_ui_button_t; + +struct __x49gp_ui_s__ { + GtkWidget *window; + GtkWidget *fixed; + + GdkPixbuf *bg_pixbuf; + GdkPixmap *bg_pixmap; + GtkWidget *background; + + GdkColor colors[UI_COLOR_MAX]; + GdkBitmap *shapes[UI_SHAPE_MAX]; + + x49gp_ui_calculator_t calculator; + + x49gp_ui_button_t *buttons; + unsigned int nr_buttons; + + GtkWidget *lcd_canvas; + GdkPixmap *lcd_pixmap; + + GdkGC *ann_left_gc; + GdkGC *ann_right_gc; + GdkGC *ann_alpha_gc; + GdkGC *ann_battery_gc; + GdkGC *ann_busy_gc; + GdkGC *ann_io_gc; + + GdkBitmap *ann_left; + GdkBitmap *ann_right; + GdkBitmap *ann_alpha; + GdkBitmap *ann_battery; + GdkBitmap *ann_busy; + GdkBitmap *ann_io; + + gint width; + gint height; + + gint kb_x_offset; + gint kb_y_offset; + + gint lcd_x_offset; + gint lcd_y_offset; + gint lcd_width; + gint lcd_height; + gint lcd_top_margin; +}; + +int x49gp_ui_init(x49gp_t *x49gp); + +#endif /* !(_X49GP_UI_H) */ diff --git a/le32hex2bin.c b/le32hex2bin.c new file mode 100644 index 0000000..2739c60 --- /dev/null +++ b/le32hex2bin.c @@ -0,0 +1,117 @@ +/* $Id: le32hex2bin.c,v 1.3 2008/12/11 12:18:17 ecd Exp $ + * + * $Log: le32hex2bin.c,v $ + * Revision 1.3 2008/12/11 12:18:17 ecd + * major rework to qemu + * + * Revision 1.1 2006-08-20 17:26:07 ecd + * Modularize most stuff, IO_PORT, INTC, ARM, and MMU still missing. + * + * Revision 1.1 2002/06/19 08:19:39 ecd + * Add Lattice/Xilinx tools + * + * Revision 1.1 2002/01/04 10:46:48 ecd + * initial import + * + * Revision 1.1 1999/12/09 10:53:33 ecd + * add Xilinx conversion tool + * + */ + +#include +#include +#include +#include +#include +#include +#include + +int +main(int argc, char **argv) +{ + unsigned char *input, *p; + unsigned char *memory = NULL; + size_t size; + int in, out; + int i; + + if (argc < 3) { + fprintf(stderr, "usage: %s \n", argv[0]); + exit(1); + } + + if (!strcmp(argv[1], "-")) + in = 0; + else { + in = open(argv[1], O_RDONLY); + if (in < 0) { + perror(argv[1]); + exit(1); + } + } + + if (!strcmp(argv[2], "-")) + out = 1; + else { + out = open(argv[2], O_WRONLY|O_CREAT|O_TRUNC, 0666); + if (out < 0) { + perror(argv[2]); + exit(1); + } + } + + size = lseek(in, 0, SEEK_END); + lseek(in, 0, SEEK_SET); + + input = (unsigned char *)malloc(size); + if (!input) { + fprintf(stderr, "%s: out of memory\n", argv[0]); + exit(1); + } + + if (read(in, input, size) != size) { + perror("read"); + exit(1); + } + + close(in); + + memory = malloc(size >> 1); + if (!memory) { + fprintf(stderr, "%s: out of memory\n", argv[0]); + exit(1); + } + + p = input; + for (i = 0; i < (size >> 1); i++) { + if ('0' <= *p && *p <= '9') + memory[(i & ~3) + 3 - (i & 3)] = (*p - '0') << 0; + else if ('a' <= *p && *p <= 'f') + memory[(i & ~3) + 3 - (i & 3)] = (*p - 'a' + 10) << 0; + else if ('A' <= *p && *p <= 'F') + memory[(i & ~3) + 3 - (i & 3)] = (*p - 'A' + 10) << 0; + else { + fprintf(stderr, "%s: parse error at byte %d\n", + argv[0], i); + exit(1); + } + p++; + if ('0' <= *p && *p <= '9') + memory[(i & ~3) + 3 - (i & 3)] |= (*p - '0') << 4; + else if ('a' <= *p && *p <= 'f') + memory[(i & ~3) + 3 - (i & 3)] |= (*p - 'a' + 10) << 4; + else if ('A' <= *p && *p <= 'F') + memory[(i & ~3) + 3 - (i & 3)] |= (*p - 'A' + 10) << 4; + else { + fprintf(stderr, "%s: parse error at byte %d\n", + argv[0], i); + exit(1); + } + p++; + } + + write(out, memory, size >> 1); + close(out); + + return 0; +} diff --git a/main.c b/main.c new file mode 100644 index 0000000..2ea6338 --- /dev/null +++ b/main.c @@ -0,0 +1,435 @@ +/* $Id: main.c,v 1.30 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "gdbstub.h" + +static x49gp_t *x49gp; + +#ifdef QEMU_OLD // LD TEMPO HACK +extern +#endif +CPUState *__GLOBAL_env; + +int semihosting_enabled = 1; + +/* LD TEMPO HACK */ +#ifndef QEMU_OLD +uint8_t *phys_ram_base; +int phys_ram_size; +ram_addr_t ram_size = 0x80000; // LD ??? + +/* vl.c */ +int singlestep; + +void *qemu_memalign(size_t alignment, size_t size) +{ +#if defined(__APPLE__) || defined(_POSIX_C_SOURCE) && !defined(__sun__) + int ret; + void *ptr; + ret = posix_memalign(&ptr, alignment, size); + if (ret != 0) + abort(); + return ptr; +#elif defined(CONFIG_BSD) + return oom_check(valloc(size)); +#else + return oom_check(memalign(alignment, size)); +#endif +} + + +void qemu_init_vcpu(void *_env) +{ + CPUState *env = _env; + + env->nr_cores = 1; + env->nr_threads = 1; +} + +int qemu_cpu_self(void *env) +{ + return 1; +} + +void qemu_cpu_kick(void *env) +{ +} + +void armv7m_nvic_set_pending(void *opaque, int irq) +{ + abort(); +} +int armv7m_nvic_acknowledge_irq(void *opaque) +{ + abort(); +} +void armv7m_nvic_complete_irq(void *opaque, int irq) +{ + abort(); +} + +void gdb_register_coprocessor(CPUState * env, + void * get_reg, void * set_reg, + int num_regs, const char *xml, int g_pos) +{ + fprintf(stderr, "TODO: %s\n", __FUNCTION__); +} + +#endif /* !QEMU_OLD */ + +void * +qemu_malloc(size_t size) +{ + return malloc(size); +} + +void * +qemu_mallocz(size_t size) +{ + void *ptr; + + ptr = qemu_malloc(size); + if (NULL == ptr) + return NULL; + memset(ptr, 0, size); + return ptr; +} + +void +qemu_free(void *ptr) +{ + free(ptr); +} + +void * +qemu_vmalloc(size_t size) +{ +#if defined(__linux__) + void *mem; + if (0 == posix_memalign(&mem, sysconf(_SC_PAGE_SIZE), size)) + return mem; + return NULL; +#else + return valloc(size); +#endif +} + +#ifdef QEMU_OLD +int +term_vprintf(const char *fmt, va_list ap) +{ + return vprintf(fmt, ap); +} + +int +term_printf(const char *fmt, ...) +{ + va_list ap; + int n; + + va_start(ap, fmt); + n = vprintf(fmt, ap); + va_end(ap); + + return n; +} +#endif + +#define SWI_Breakpoint 0x180000 + +#ifdef QEMU_OLD +int +do_arm_semihosting(CPUState *env, uint32_t number) +#else +uint32_t +do_arm_semihosting(CPUState *env) +#endif +{ +#ifndef QEMU_OLD + uint32_t number; + if (env->thumb) { + number = lduw_code(env->regs[15] - 2) & 0xff; + } else { + number = ldl_code(env->regs[15] - 4) & 0xffffff; + } +#endif + switch (number) { + case SWI_Breakpoint: + break; + + case 0: +#ifdef DEBUG_X49GP_SYSCALL + printf("%s: SWI LR %08x: syscall %u: args %08x %08x %08x %08x %08x %08x %08x\n", + __FUNCTION__, env->regs[14], env->regs[0], + env->regs[1], env->regs[2], env->regs[3], + env->regs[4], env->regs[5], env->regs[6], + env->regs[7]); +#endif + +#if 1 + switch (env->regs[0]) { + case 305: /* Beep */ + printf("%s: BEEP: frequency %u, time %u, override %u\n", + __FUNCTION__, env->regs[1], env->regs[2], env->regs[3]); + + gdk_beep(); + env->regs[0] = 0; + return 1; + + case 28: /* CheckBeepEnd */ + env->regs[0] = 0; + return 1; + + case 29: /* StopBeep */ + env->regs[0] = 0; + return 1; + + default: + break; + } +#endif + break; + + default: + break; + } + + return 0; +} + +void +x49gp_set_idle(x49gp_t *x49gp, x49gp_arm_idle_t idle) +{ +#ifdef DEBUG_X49GP_ARM_IDLE + if (idle != x49gp->arm_idle) { + printf("%s: arm_idle %u, idle %u\n", __FUNCTION__, x49gp->arm_idle, idle); + } +#endif + + x49gp->arm_idle = idle; + + if (x49gp->arm_idle == X49GP_ARM_RUN) { + x49gp->env->halted = 0; + } else { + x49gp->env->halted = 1; +#ifdef QEMU_OLD + cpu_interrupt(x49gp->env, CPU_INTERRUPT_EXIT); +#else + cpu_exit(x49gp->env); +#endif + } +} + +static void +arm_sighnd(int sig) +{ + switch (sig) { + case SIGUSR1: +// stop_simulator = 1; +// x49gp->arm->CallDebug ^= 1; + break; + default: + fprintf(stderr, "%s: sig %u\n", __FUNCTION__, sig); + break; + } +} + +void +x49gp_gtk_timer(void *data) +{ + while (gtk_events_pending()) { +// printf("%s: gtk_main_iteration_do()\n", __FUNCTION__); + gtk_main_iteration_do(FALSE); + } + + x49gp_mod_timer(x49gp->gtk_timer, + x49gp_get_clock() + X49GP_GTK_REFRESH_INTERVAL); +} + +void +x49gp_lcd_timer(void *data) +{ + x49gp_t *x49gp = data; + int64_t now, expires; + +// printf("%s: lcd_update\n", __FUNCTION__); + x49gp_lcd_update(x49gp); + gdk_flush(); + + now = x49gp_get_clock(); + expires = now + X49GP_LCD_REFRESH_INTERVAL; + +// printf("%s: now: %lld, next update: %lld\n", __FUNCTION__, now, expires); + x49gp_mod_timer(x49gp->lcd_timer, expires); +} + +static void +usage(const char *progname) +{ + fprintf(stderr, "usage: %s \n", + progname); + exit(1); +} + +void +ui_sighnd(int sig) +{ + switch (sig) { + case SIGINT: + case SIGQUIT: + case SIGTERM: + x49gp->arm_exit = 1; +#ifdef QEMU_OLD + cpu_interrupt(x49gp->env, CPU_INTERRUPT_EXIT); +#else + cpu_exit(x49gp->env); +#endif + break; + } +} + +int +main(int argc, char **argv) +{ + char *progname; + int error; + + + progname = strrchr(argv[0], '/'); + if (progname) + progname++; + else + progname = argv[0]; + + + gtk_init(&argc, &argv); + + + if (argc < 2) + usage(progname); + + x49gp = malloc(sizeof(x49gp_t)); + if (NULL == x49gp) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + progname, __FUNCTION__, __LINE__); + exit(1); + } + memset(x49gp, 0, sizeof(x49gp_t)); + +fprintf(stderr, "_SC_PAGE_SIZE: %08lx\n", sysconf(_SC_PAGE_SIZE)); + +printf("%s:%u: x49gp: %p\n", __FUNCTION__, __LINE__, x49gp); + + INIT_LIST_HEAD(&x49gp->modules); + + + x49gp->progname = progname; + x49gp->clk_tck = sysconf(_SC_CLK_TCK); + + x49gp->emulator_fclk = 75000000; + x49gp->PCLK_ratio = 4; + x49gp->PCLK = 75000000 / 4; + +#ifdef QEMU_OLD + x49gp->env = cpu_init(); +#else + //cpu_set_log(0xffffffff); + cpu_exec_init_all(0); + x49gp->env = cpu_init("arm926"); +#endif + __GLOBAL_env = x49gp->env; + +// cpu_set_log(cpu_str_to_log_mask("all")); + + x49gp_timer_init(x49gp); + + x49gp->gtk_timer = x49gp_new_timer(X49GP_TIMER_REALTIME, + x49gp_gtk_timer, x49gp); + x49gp->lcd_timer = x49gp_new_timer(X49GP_TIMER_VIRTUAL, + x49gp_lcd_timer, x49gp); + + x49gp_ui_init(x49gp); + + x49gp_s3c2410_arm_init(x49gp); + + x49gp_flash_init(x49gp); + x49gp_sram_init(x49gp); + + x49gp_s3c2410_init(x49gp); + + if (x49gp_modules_init(x49gp)) { + exit(1); + } + + error = x49gp_modules_load(x49gp, argv[1]); + if (error) { + if (error != -EAGAIN) { + exit(1); + } + x49gp_modules_reset(x49gp, X49GP_RESET_POWER_ON); + } +// x49gp_modules_reset(x49gp, X49GP_RESET_POWER_ON); + + signal(SIGINT, ui_sighnd); + signal(SIGTERM, ui_sighnd); + signal(SIGQUIT, ui_sighnd); + + signal(SIGUSR1, arm_sighnd); + + + x49gp_set_idle(x49gp, 0); + +// stl_phys(0x08000a1c, 0x55555555); + + + x49gp_mod_timer(x49gp->gtk_timer, x49gp_get_clock()); + x49gp_mod_timer(x49gp->lcd_timer, x49gp_get_clock()); + + +#if 0 + gdbserver_start(1234); + gdb_handlesig(x49gp->env, 0); +#endif + + x49gp_main_loop(x49gp); + + + x49gp_modules_save(x49gp, argv[1]); + x49gp_modules_exit(x49gp); + + +#if 0 + printf("ClkTicks: %lu\n", ARMul_Time(x49gp->arm)); + printf("D TLB: hit0 %lu, hit1 %lu, search %lu (%lu), walk %lu\n", + x49gp->mmu->dTLB.hit0, x49gp->mmu->dTLB.hit1, + x49gp->mmu->dTLB.search, x49gp->mmu->dTLB.nsearch, + x49gp->mmu->dTLB.walk); + printf("I TLB: hit0 %lu, hit1 %lu, search %lu (%lu), walk %lu\n", + x49gp->mmu->iTLB.hit0, x49gp->mmu->iTLB.hit1, + x49gp->mmu->iTLB.search, x49gp->mmu->iTLB.nsearch, + x49gp->mmu->iTLB.walk); +#endif + return 0; +} diff --git a/module.c b/module.c new file mode 100644 index 0000000..80be789 --- /dev/null +++ b/module.c @@ -0,0 +1,456 @@ +/* $Id: module.c,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +int +x49gp_modules_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s:%u:\n", __FUNCTION__, __LINE__); +#endif + + phys_ram_size = 0; + + list_for_each_entry(module, &x49gp->modules, list) { + error = module->init(module); + if (error) { + return error; + } + } + + phys_ram_base = mmap(0, phys_ram_size, PROT_NONE, MAP_SHARED | MAP_ANON, -1, 0); + if (phys_ram_base == (uint8_t *) -1) { + fprintf(stderr, "%s: can't mmap %08x anonymous bytes\n", + __FUNCTION__, phys_ram_size); + exit(1); + } + +printf("%s: phys_ram_base: %p\n", __FUNCTION__, phys_ram_base); + + phys_ram_dirty = qemu_vmalloc(phys_ram_size >> TARGET_PAGE_BITS); + memset(phys_ram_dirty, 0xff, phys_ram_size >> TARGET_PAGE_BITS); + +#ifndef QEMU_OLD + { + ram_addr_t x49gp_ram_alloc(ram_addr_t size, uint8_t *base); + x49gp_ram_alloc(phys_ram_size, phys_ram_base); + } +#endif + + return 0; +} + +int +x49gp_modules_exit(x49gp_t *x49gp) +{ + x49gp_module_t *module, *next; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s:%u:\n", __FUNCTION__, __LINE__); +#endif + + list_for_each_entry_safe_reverse(module, next, &x49gp->modules, list) { + error = module->exit(module); + if (error) { + return error; + } + } + + return 0; +} + +int +x49gp_modules_reset(x49gp_t *x49gp, x49gp_reset_t reset) +{ + x49gp_module_t *module; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s:%u:\n", __FUNCTION__, __LINE__); +#endif + + list_for_each_entry(module, &x49gp->modules, list) { + error = module->reset(module, reset); + if (error) { + return error; + } + } + + return 0; +} + +int +x49gp_modules_load(x49gp_t *x49gp, const char *filename) +{ + x49gp_module_t *module; + GError *gerror = NULL; + int error, result; + +#ifdef DEBUG_X49GP_MODULES + printf("%s:%u:\n", __FUNCTION__, __LINE__); +#endif + + x49gp->config = g_key_file_new(); + if (NULL == x49gp->config) { + fprintf(stderr, "%s:%u: g_key_file_new: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + if (! g_key_file_load_from_file(x49gp->config, filename, 0, &gerror)) { + fprintf(stderr, "%s:%u: g_key_file_load_from_file: %s\n", + __FUNCTION__, __LINE__, gerror->message); + g_key_file_free(x49gp->config); + return -EIO; + } + + result = 0; + + list_for_each_entry(module, &x49gp->modules, list) { + error = module->load(module, x49gp->config); + if (error) { + if (error == -EAGAIN) { + result = -EAGAIN; + } else { + return error; + } + } + } + +{ + extern unsigned char *phys_ram_base; + +printf("%s: phys_ram_base: %p\n", __FUNCTION__, phys_ram_base); +printf("\t%02x %02x %02x %02x %02x %02x %02x %02x\n", + phys_ram_base[0], + phys_ram_base[1], + phys_ram_base[2], + phys_ram_base[3], + phys_ram_base[4], + phys_ram_base[5], + phys_ram_base[6], + phys_ram_base[7]); +} + + return result; +} + +int +x49gp_modules_save(x49gp_t *x49gp, const char *filename) +{ + x49gp_module_t *module; + GError *gerror = NULL; + gchar *data; + gsize length; + int error; + int fd; + +#ifdef DEBUG_X49GP_MODULES + printf("%s:%u:\n", __FUNCTION__, __LINE__); +#endif + + list_for_each_entry(module, &x49gp->modules, list) { + error = module->save(module, x49gp->config); + if (error) { + return error; + } + } + + data = g_key_file_to_data(x49gp->config, &length, &gerror); + if (NULL == data) { + fprintf(stderr, "%s:%u: g_key_file_to_data: %s\n", + __FUNCTION__, __LINE__, gerror->message); + return -ENOMEM; + } + + fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666); + if (fd < 0) { + error = -errno; + fprintf(stderr, "%s:%u: open %s: %s\n", + __FUNCTION__, __LINE__, filename, strerror(errno)); + g_free(data); + return error; + } + + + if (write(fd, data, length) != length) { + error = -errno; + fprintf(stderr, "%s:%u: write %s: %s\n", + __FUNCTION__, __LINE__, filename, strerror(errno)); + close(fd); + g_free(data); + return error; + } + + close(fd); + g_free(data); + + return 0; +} + +int +x49gp_module_register(x49gp_module_t *module) +{ + x49gp_t *x49gp = module->x49gp; + +#ifdef DEBUG_X49GP_MODULES + printf("%s:%u: %s\n", __FUNCTION__, __LINE__, module->name); +#endif + + list_add_tail(&module->list, &x49gp->modules); + + return 0; +} + +int +x49gp_module_unregister(x49gp_module_t *module) +{ +#ifdef DEBUG_X49GP_MODULES + printf("%s:%u: %s\n", __FUNCTION__, __LINE__, module->name); +#endif + + list_del(&module->list); + + return 0; +} + +char * +x49gp_module_get_filename(x49gp_module_t *module, GKeyFile *key, + const char *name) +{ + char *filename; + char *basename; + const char *home; + char *path; + + filename = g_key_file_get_string(key, module->name, name, NULL); + if (NULL == filename) { + fprintf(stderr, "%s: %s:%u: key \"%s\" not found\n", + module->name, __FUNCTION__, __LINE__, name); + return NULL; + } + + if (g_path_is_absolute(filename)) { + return filename; + } + + home = g_get_home_dir(); + + basename = g_key_file_get_string(key, "x49gp", "basename", NULL); + if (NULL == basename) { + fprintf(stderr, "%s: %s:%u: key \"basename\" not found\n", + "x49gp", __FUNCTION__, __LINE__); + g_free(filename); + return NULL; + } + + path = g_build_filename(home, basename, filename, NULL); + if (NULL == path) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + module->name, __FUNCTION__, __LINE__); + } + + g_free(filename); + g_free(basename); + + return path; +} + +int +x49gp_module_get_int(x49gp_module_t *module, GKeyFile *key, const char *name, + int reset, int *valuep) +{ + uint32_t value; + int error; + + error = x49gp_module_get_u32(module, key, name, reset, &value); + if (0 == error) { + *valuep = value; + } + return error; +} + +int +x49gp_module_set_int(x49gp_module_t *module, GKeyFile *key, + const char *name, int value) +{ + char data[16]; + + snprintf(data, sizeof(data), "%d", value); + + g_key_file_set_value(key, module->name, name, data); + + return 0; +} + +int +x49gp_module_get_uint(x49gp_module_t *module, GKeyFile *key, const char *name, + unsigned int reset, unsigned int *valuep) +{ + return x49gp_module_get_u32(module, key, name, reset, valuep); +} + +int +x49gp_module_set_uint(x49gp_module_t *module, GKeyFile *key, + const char *name, unsigned int value) +{ + char data[16]; + + snprintf(data, sizeof(data), "%u", value); + + g_key_file_set_value(key, module->name, name, data); + + return 0; +} + +int +x49gp_module_get_u32(x49gp_module_t *module, GKeyFile *key, + const char *name, uint32_t reset, uint32_t *valuep) +{ + GError *gerror = NULL; + char *data, *end; + uint32_t value; + + data = g_key_file_get_value(key, module->name, name, &gerror); + if (NULL == data) { + fprintf(stderr, "%s: %s:%u: key \"%s\" not found\n", + module->name, __FUNCTION__, __LINE__, name); + *valuep = reset; + return -EAGAIN; + } + + value = strtoul(data, &end, 0); + if ((end == data) || (*end != '\0')) { + *valuep = reset; + g_free(data); + return -EAGAIN; + } + + *valuep = value; + + g_free(data); + return 0; +} + +int +x49gp_module_set_u32(x49gp_module_t *module, GKeyFile *key, + const char *name, uint32_t value) +{ + char data[16]; + + snprintf(data, sizeof(data), "0x%08x", value); + + g_key_file_set_value(key, module->name, name, data); + + return 0; +} + +int +x49gp_module_set_u64(x49gp_module_t *module, GKeyFile *key, + const char *name, uint64_t value) +{ + char data[32]; + + snprintf(data, sizeof(data), "0x%016" PRIx64 "", value); + + g_key_file_set_value(key, module->name, name, data); + + return 0; +} + +int +x49gp_module_get_u64(x49gp_module_t *module, GKeyFile *key, + const char *name, uint64_t reset, uint64_t *valuep) +{ + GError *gerror = NULL; + char *data, *end; + uint64_t value; + + data = g_key_file_get_value(key, module->name, name, &gerror); + if (NULL == data) { + fprintf(stderr, "%s: %s:%u: key \"%s\" not found\n", + module->name, __FUNCTION__, __LINE__, name); + *valuep = reset; + return -EAGAIN; + } + + value = strtoull(data, &end, 0); + if ((end == data) || (*end != '\0')) { + *valuep = reset; + g_free(data); + return -EAGAIN; + } + + *valuep = value; + + g_free(data); + return 0; +} + +int +x49gp_module_get_string(x49gp_module_t *module, GKeyFile *key, + const char *name, char *reset, char **valuep) +{ + GError *gerror = NULL; + char *data; + + data = g_key_file_get_value(key, module->name, name, &gerror); + if (NULL == data) { + fprintf(stderr, "%s: %s:%u: key \"%s\" not found\n", + module->name, __FUNCTION__, __LINE__, name); + *valuep = strdup(reset); + return -EAGAIN; + } + + *valuep = data; + return 0; +} + +int +x49gp_module_init(x49gp_t *x49gp, const char *name, + int (*init)(x49gp_module_t *), + int (*exit)(x49gp_module_t *), + int (*reset)(x49gp_module_t *, x49gp_reset_t), + int (*load)(x49gp_module_t *, GKeyFile *), + int (*save)(x49gp_module_t *, GKeyFile *), + void *user_data, x49gp_module_t **modulep) +{ + x49gp_module_t *module; + + module = malloc(sizeof(x49gp_module_t)); + if (NULL == module) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + name, __FUNCTION__, __LINE__); + return -1; + } + memset(module, 0, sizeof(x49gp_module_t)); + + module->name = name; + + module->init = init; + module->exit = exit; + module->reset = reset; + module->load = load; + module->save = save; + + module->user_data = user_data; + +// module->mutex = g_mutex_new(); + module->x49gp = x49gp; + + *modulep = module; + return 0; +} diff --git a/newconfig b/newconfig new file mode 100755 index 0000000..7050357 --- /dev/null +++ b/newconfig @@ -0,0 +1,18 @@ +#!/bin/bash + +if [ ! -r "config.tmpl" ] +then + echo "Cannot read config.tmpl" >&2 + exit 1 +fi + +B=${PWD##$HOME/} +perl -pi -e "s!^(basename=).*!\1$B!" config + +if [ "$(uname -s)" = "Linux" ] +then + perl -pi -e "s!^(filename=sdcard).dmg!\1!" config +fi + +echo "New config created" +exit 0 diff --git a/qemu/.cvsignore b/qemu/.cvsignore new file mode 100644 index 0000000..1750fe8 --- /dev/null +++ b/qemu/.cvsignore @@ -0,0 +1 @@ +qemu diff --git a/qemu/.svn/all-wcprops b/qemu/.svn/all-wcprops new file mode 100644 index 0000000..7e316fe --- /dev/null +++ b/qemu/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 30 +/p/x49gp/code/!svn/ver/10/qemu +END +prepare.sh +K 25 +svn:wc:ra_dav:version-url +V 40 +/p/x49gp/code/!svn/ver/1/qemu/prepare.sh +END +.cvsignore +K 25 +svn:wc:ra_dav:version-url +V 40 +/p/x49gp/code/!svn/ver/1/qemu/.cvsignore +END +qemu-0.9.0.tar.gz +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/1/qemu/qemu-0.9.0.tar.gz +END diff --git a/qemu/.svn/entries b/qemu/.svn/entries new file mode 100644 index 0000000..2fb1214 --- /dev/null +++ b/qemu/.svn/entries @@ -0,0 +1,139 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +patches +dir + +prepare.sh +file + + + + +2013-08-23T00:54:49.000000Z +b977fe9c9bac931baf64022487a2b1db +2008-12-11T16:48:39.837984Z +1 +antiocles +has-props + + + + + + + + + + + + + + + + + + + + +1846 + +qemu-git +dir + +CVS +dir + +.cvsignore +file + + + + +2013-08-23T00:54:49.000000Z +ac4fef8bc037aa958e4675f8c824069a +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +5 + +qemu-0.9.0.tar.gz +file + + + + +2013-08-23T00:54:49.000000Z +ab11a03ba30cf4a70641f0f170473d69 +2008-12-11T16:48:39.837984Z +1 +antiocles +has-props + + + + + + + + + + + + + + + + + + + + +1901741 + diff --git a/qemu/.svn/prop-base/prepare.sh.svn-base b/qemu/.svn/prop-base/prepare.sh.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/qemu/.svn/prop-base/prepare.sh.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/qemu/.svn/prop-base/qemu-0.9.0.tar.gz.svn-base b/qemu/.svn/prop-base/qemu-0.9.0.tar.gz.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/qemu/.svn/prop-base/qemu-0.9.0.tar.gz.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/qemu/.svn/text-base/.cvsignore.svn-base b/qemu/.svn/text-base/.cvsignore.svn-base new file mode 100644 index 0000000..1750fe8 --- /dev/null +++ b/qemu/.svn/text-base/.cvsignore.svn-base @@ -0,0 +1 @@ +qemu diff --git a/qemu/.svn/text-base/prepare.sh.svn-base b/qemu/.svn/text-base/prepare.sh.svn-base new file mode 100644 index 0000000..c6f66cd --- /dev/null +++ b/qemu/.svn/text-base/prepare.sh.svn-base @@ -0,0 +1,61 @@ +# get/update QEMU + +# export CVS_RSH="ssh" +# cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qemu co -r "release_0_9_0" qemu + +rm -rf qemu +tar xzvf qemu-0.9.0.tar.gz +mv qemu-0.9.0 qemu + +# patch qemu sources +cd qemu + +#qemu hotfix for qcow2 +patch -p0 -u < ../patches/qemu-0.9.0-qcow2.diff + +#qemu gcc4 patches +patch -p1 -u < ../patches/qemu-0.9.0-gcc4.patch +patch -p1 -u < ../patches/qemu-0.7.2-dyngen-check-stack-clobbers.patch +patch -p1 -u < ../patches/qemu-0.7.2-gcc4-opts.patch +patch -p1 -u < ../patches/qemu-0.8.0-gcc4-hacks.patch + +#qemu OS X86 patches +patch -p1 -u < ../patches/qemu-0.9.0-enforce-16byte-stack-boundary.patch +patch -p1 -u -f < ../patches/qemu-0.9.0-i386-FORCE_RET.patch +patch -p1 -u < ../patches/qemu-0.9.0-osx-intel-port.patch + +patch -p1 -u < ../patches/qemu-0.8.0-osx-bugfix.patch + +# arm patches +patch -p1 -u < ../patches/qemu-0.9.0-arm-shift.patch + +# x49gp patches +patch -p1 -u < ../patches/qemu-0.9.0-sparc-compile-flags.patch +patch -p1 -u < ../patches/qemu-0.9.0-sparc-load-store-le.patch +patch -p1 -u < ../patches/qemu-0.9.0-sparc-clobber.patch +patch -p1 -u < ../patches/qemu-0.9.0-sparc-register.patch +patch -p1 -u < ../patches/qemu-0.9.0-x49gp-arm-dump-state.patch +patch -p1 -u < ../patches/qemu-0.9.0-x49gp-arm-mmu.patch +patch -p1 -u < ../patches/qemu-0.9.0-x49gp-arm-semihosting.patch +patch -p1 -u < ../patches/qemu-0.9.0-x49gp-debug-unassigned.patch +patch -p1 -u < ../patches/qemu-0.9.0-x49gp-phys_ram_dirty.patch +patch -p1 -u < ../patches/qemu-0.9.0-x49gp-block.patch + +# only build libqemu.a +patch -p1 -u < ../patches/qemu-0.9.0-x49gp-build-libqemu.patch + + +# configure +if [ "`uname -m`" = "sparc64" ]; then + STUB=sparc32 +fi + +if [ "`uname -s`" = "Darwin" ]; then + OPTIONS="--disable-gcc-check" +fi + +OPTIONS="${OPTIONS} --disable-gfx-check" + +${STUB} ./configure ${OPTIONS} --target-list=arm-softmmu + +cd .. diff --git a/qemu/.svn/text-base/qemu-0.9.0.tar.gz.svn-base b/qemu/.svn/text-base/qemu-0.9.0.tar.gz.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..07f9ce75dc9faf280b1707dc66c012a5c4c3f132 GIT binary patch literal 1901741 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

      af(IP{-Lc~YINrw$jFPzpxOWXW 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 z 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

      (JygcO0 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 FvyfF1N28A_1CPIytnij{h}~b#8}JSU=-rI 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%0D0CMCwFK7Zl_pg}FvUd<#DwShD~ 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�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

      9_Bsuru=3nbGPpnw3unl7hK8yx3d@0|bFz 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%0DZ~$68&U_A2qeX3n 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 z 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 s0r2A&@+t^w!Ue^_12_O>MGEBJ^dKiQq)-d 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

      H1P(mPX@6ym(oV_HmhRfD5~V7 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

      5X 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�^I_X>Hv&Uqh( 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 y?_7yrEv0bdwq{@Jx86+ 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�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

      (JygcO0 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 FvyfF1N28A_1CPIytnij{h}~b#8}JSU=-rI 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%0D0CMCwFK7Zl_pg}FvUd<#DwShD~ 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�$``9=UK3qte?;$4gBn129YT3qLk^h9+U+7gsIXEtGI9Hu+FDT)Wlp>DrwUZvz za5~fIZf#X+1{@!!=f81~U6t+iPwV`O*14L`Gq3$mwp7_}ma$aVOwBhqt0*~P$^Tm1 z?^hg8XkPgL0jtjY>p#$}eI}!*5#RptcI>bervbxiOK!s$B7o7tUPj$y=^}LT`WqOW z;v=hhTc$fzvmTJpW45&su*Np{?B$&2BUmn$i;F{%1i&XzgM^EC&g^Nwno0Sk;6{OvM9oqYZ_FMXcQDCr81s2zG*8^%&bs!X`4S6i8Y1D;k z(&be{pbS*@Fzzl?OqlS$(hX~|;qpkv{$Cx&Nb9n`H!`bz>=-mxsR*t&3F=h zp2zH6HIR}u%+i!4-M^e&9JD)oM{np^7!smY?ikiADC?!@@EVZ%YXR^#E9s?h;2c#! zdZ84`Nm7V;9D7I>XOXXy76TZnxF1Q^PWSQ9aYw83)8AVsS4adVHqt1YbqJnWGK7;{ zdXqVvB!WLX1M+TlO}SN6%LNlWH!uSo-)Dw*= z72$1uD9fIS{v=N^@>HOn3B>IJxg)dZ3W27hQ@r<$R#Fm$k52C4ar-$1zne6w$H@|n z7+R8HiL|Gd;*_o)l|OjUet+B%X3(La)sthTOuErI^Pxd_pEU1+?uoSzZ>NUuitgm|_VT=liR)_rfg6@zI;p)80b?Ng;CEV105SlnjQ@e2zFm;N=T%W@IVDpm*Es& zx%pa-R<@`~FY-vW$e_OXD5+#dbQPStKHEfrTSZL|@1Rm7t{WD9FzFK46ub%sF!Uuh zFB$iOw!5I;__}5eUISQIMkVOIppz(=Tvh{$+*{Dlf(Y&Z(m{qT<^UOHA^xpv@kcet zZj!;wGuE)iDOHq0NdKwp(~p;RV$k{*Bd7jHl7oIncnFK}K7;!l%g6T;djJiEPKL4w9GGLduBT298wLz!3z+;2hDys_@HeVk`)suM%jP=>8`KCx3K@Pb_8RN@nuT zUSEL&4Pb#y$ICPZX`?c116l^eW1|E;3+bG2Cw?C11ipR>QkB9273~qn0sySh(bvsx z0tAczAjO6P?A)^WK+WZ7h49*?Rb`RZn#ki=Ql>14hm{w~mhuyDeN(13M5ReYL;`Ya z)cG2)Wxzl#Qlss@LzUz6_SX}PJC}^u>{}0L*dfBfwS|}E|F+7m-e_2Ta@V|Xb@ZUcq_zIo0 zlu%6mTT+03cF2D~hx~tTkIQGU!4bxTLDEZNzLz#ja1EO#!@+pEn&3U*N$|at(F>C2 z&jGW4B1#C3xstBY+Y)vYF|Jr$)l|l_NrW8uX5TyO`dB@yp4(cKLQ2Tv=`gy)FJCuQ zF!=i))Z0F~Lz6b_@U!PEsjfA3dx4r`6MG0?(CXZCu-FcR|A+Su$m{3#qbve-8Sg=q0blnwC`7rc!#W{qq-!Am*m zV#8IqV~O5{IgP8;>l_-j6PuymCcDxpx7X}59SkUSEOT)@wUz27IyZ4bw=#6C+M(A|9R4Sk&TCO zKYDl-OycQHG@-YDR->o%s;F!ZYg%vkQ84ka8~6LdhS`8hI2ck1E@}*>5pqw6pe9NN zXyO)8daMl49bA*f32A1CHYRY@B*NoY0pS5Nv@k?ggef4EA0rY4UA*h_etbWkCcT?= zWa}mDGs$LPbMob;Sv<=~2sKTj+znph6+|Sin#b%4B48Ee7Dwb;oW{c#$FtlkM6ivD z$S_9u5dfKhvG+k8SO-?5j;HhzBe)%v7&(SubZIc&8;kbRIXlPTX#ec=@c3w-j3xjW zojHWKZS>;Tcsk}}%0!Z38&M_1nWQ!RZ#0w+wV)2%379>VEKIQ@fOUYEu`)xV*Re8Z zGM_*jB5bIp2O^C}^I>2h>Oc?7K~S__IKNk=R5Z2_~f{CS@ibkvIVb+ z>Th?clHp=pyhAFQOkxrWz%&O9dM%iD9Te?0s|+SOrg=J>MkodtS+mR3oG|yCbxE7* z-NeLs-ju`HYaRd?x@CsVD-Wh)O&#fY{AoTxtpK1euZ3^AA-z1TwT4&31NLTfx>y?f zPjFSt=ka|#1_39{cfqQiE*KIbqBjY2M5Lj+4W-J72gIb=;ytXye(}U8Z1m9h2>?=y z7~#u)Ouv+q*Zyf0kgTz7Tl9xQS3plpFQ$vPIOuSa8S!GbyJfh4-tC-o-0a^Uf3TLL zS8;G8b0LnizFdCXLv@@XRe}wA0`jIM>(I)=xl&1e}#I!hzUdwN8g`tv9bo zq(efKZPxOcOQ&xwO2&NC>iYURY0$93q_D*H+8V<{-75Oi8-kxu(v5o&Xj-OpT{X#! zU)PLva@t>`HOKd)hZr$IIAvw}!Ve!`%a$Nxq}K^U%Yl9cRc?22=z1x2jEn+*=xUaP zF(SO?Nt>98tWH>y0|Z`}tphYGcF4)3XBdKk{0l6!eRY0*c5&G{ScQVbLM_69Hy_sp z5^ANVQbT|Oq3FhFUx5$nsOqEED^?`RXxGT7?ZUdYct*QYEFbj8aYnixdn{t*AnzHG z1u{TENNd4AE32!kc4h-w6!N!41?p>Sc!d5pKNJ=VX)!pU|LfojN>SF=nD1(%k%OT^ zpfOUzOA?e!AKae9=`_@1cW}?m>lK1*FPX8+*ZIARM0@MBJ*sumaTeREK%z;hCZmVg zkNGSb|G_zeQ3{u}Kfz1piKpaq-0uqgnXpfo~Y#tvq+bb(|DA!Drh&IM3cruNn^obI3 zD)p{T_bygeHlW%S>EuSV-zOf!hJ={@0V%$-f)}|Km;GCtzzw&cXnWpe7rLT&<(75W zIXpgVUaqV(kn%$~d<25M$(YWM4<*LCS5m%GX{O9`ilGqn9*sIUlB~+N+YM-3O=8}7_Ee=Agr7c;fE{h)+FvF5#7{>1NNBhL+g!)6B5YN&_4>$p0elx*rk90 zBsF|mAqoifv!pjqqiKaTLSoS4DdZ~9Kt>9|B=UjFP3c1-xtI=-No!)ABc%o!j!q0D z5eOZ`gvjW71Ycpu0Zk+7%@{U15+MT>9ERfHyCR_{(0?MM2+WA}mo^oi#SE3Zc zq-cf#UoVyjiL&V$G>mD#vU1{6E(64nsz5eLWL z9Ib?*{Y|nGHncaDl@Txl4-@I(r8>+_1%)qS4Fa}d&WrA;2DlG)NsE(u@8Bus{;1@3nW?((dxY&|dgcST$r zTYIIg^j0ggmCI=~3A&I`lEiVh@(Xe8<2!Lt7@D(G;9=#x{Byp79dAk`Vr$MBZLM(m zHU=S;l`EeLg!jBgYvtQsZ_4GFt$aI}Of&xTeC68-)z38X)75a0$@@$H5`-CA8+jwF_os85-EI6Lj znKVeZLzpG;Ql0WAhn8pO4FyDFfH1;c2BV?FXxLyd5Zv{zabWZWi5i2IgMt{@0_IR5 zB^*#%Hd*z7L<%?tD}>JR*)N*_2B2{`Yb+rshtv&%tQtI2gJ0KHR*{3?Hl)VMY&&osHjY%Psr(vPSF$!$ih)IphjpY#A*W8rk*EkP8a!+iF#_aijF=EY$^ll+ zZ&*AyYM(c1@JiSQ{p3ZOZIyXNW5j`Y7|%tU+pw%G4DGP4oTNB9ISCsQK_L)>oBW8N z!-iSo;y|+~+CV6MWVAy%7i?U4vo%4qLmP~6gV7n9RftqNjIC8cb1pO*?MQ5FOA>7# z@1N85w3@#KgjlF4sP%Kf{d-@m!=DqADARmYG4q8B}VfhFO_E@^VgWJ zjyqst&g`B7nLehKF~zM_CZMG{2BKj+>=FP=2JNWTqj$?eK40`oTXdD=RDNQzA%FVK@KQ%)b&!!Od>5 zo(^()d3t`#Rw!~WE*bjm7AZ=e6_dCuNdn8Zkij3sIT@ecjOW)k$ax;;;rux)41sxl zIzvu;M<14vRGBsv1O;Wu&J_;Q&=wlh7MqkCI>6eudi|%BkugZ+C=7O+6YKR1{lo zE}Slg!SqW)b4m%t-Q4a90?W;FH_8jUigfcLg^jKIpvC;y#3XXOo0vtC6!C7PEb(JG zYC65k);};Ch6xMW+uiOGL!*P!r)V*_TInvyVujXSq%{((YBSj^oKk$CShGU2-^z+7 zR)MZcUB6+jafxZ&;0K)K`gic;cI!!%_s_wXDtovsJwQ6 zDOv1-a3gQPQd`q;I99rz|pTxh^>ETX#=&7uY<{p9}#Bo{P~39<68k> zUkd@>8%`)SRbCdi7?DBJ3gdp&&EOg!f8jtbZuF>#123%0gy0B_{|}=knu8T{pLE2k zb|WzHsSf4W$VhUNdY#+dSHa2nHV#%#&VKIEg;a<5b*&ic2?bkCI^$_)fMeQK_Wiq% zAP9HXenW&m{uqX9->nj~J_&l#5bYE;x&Mwv6DaNuy##7|oSc ztWdk(k;d-uXn$Y4>g%uC;?<`1swLip+M74xO{BlcD|Pi(SK?Jqdvz?{H1sz)yt?r! z2e_fVI~8wg`kNf!uJJ18YfF1~ewNEA*53V`OLw5Z%4==IVhsh|KUOGKeR~qA=Rpt{X?c#t6~qS`mBmLWD2y}9(^gHtm`jNSFB1r zWLmTuC%!yevFZcgU9BhzQQt{GBjcq+>ZbX!WwmYkQW8(YeA!a$N@MdMD~Fnm98x2p z%FK%&?e7PxH8Wopyn`2zOsm^c%KQ7Wduf1s32o)}EG6qQy8n+aBBg;GTg1;-Xvm95 zab_?fgMlIE+KgsfkdFVI z{Qeyu{9ar84RYk<-|EVfuv)M7Npw|{V3Bai1uZn7ktZtvCixm*l4@uHQ!pmbbGJAW zAUL0-1PovV3EacBBrXS(06swhtUUP;KCge|SZ{IE;9dVWnrp5C6cq+EF=9|3rdjy> z+v^&63EH#)4o$!zCoJ(G%w0cu9xhw|H=0`q#+IhxH#W~e4XsE(F7eb2xz}~QT^Et& ztgq_rdSSiQ4W8?|-bx8`*GIiAS6|iJk}wRtxdg<;W5Ny%!G}!n2Ldjr@34?UHxyJK z2Zl5rF0RDT5J1R;C=r=>5LpHV6}l`GRA|oX^7Q0t^%9&@xecRLHS|__z+qy-$VR3U zh}tv_Kz^!i7`ENe+ovCiZXl@BM*vY<>SF*I&9zWyPLUantr2Qk-7hE71w_@V0mxIU zhG{oKO{;z+x`Cip9|1(w>SF*IS}hcsXsj$qCk2iVu71Hu0v=08^!u39d7Ad0^0QehRCk%7P??D8Vi zBm7z(jv0nM0+ux#a|=-Q|4PKyF!W=LD_l{vH=GVzzu^oW?RwVXhbH{u=-MBEBfRzk zP!?bN0r3d1ZC+mq7YrTL9lCs5NMs=#O_y(%&}H2aLS5HoIe~5fsLLe*sJdJhh@nfT zl-v!oVJM;DP^KeXy#sV)P1G(N+qNh6#L2|AZQHhOPi(tm+vwP~HJMB@ljQIByLa7t z*WatVR`p)H3#WIT+NU<2y$6^In-z4I^x8I)$R28F3U?r6ya$4rsVJ z@=7RhUhj~4fmPosw=}2~L`Eu(DehD=01GYEdI?irtM?UsywK{Z;wayne4rG=U4-cF zY`z{Q6#Kb(5iE+S9HaU{-kE*{U94UmsO+EaYo>8!-;k}akLJ6tcYzp8-+=}(>qtqR z2^>`|*^w~rT)BoXRUhhi_E%>Nub|Vx7rVvt-K5iW*|Ylt=}OCU&)ve`yE)+#f?P{T$UnGr_wafSB~m-u6>^n+_3!zuL9`q^+4L*ap>lN=xN_N-u%l9SJ5oQEuzP}< zi+5imCmv9c@?MP!aiH}ui)Y^_7*WAGqVUh-7s#VSult#FnezwZ;VE{yG0PHBH$kAH zEnSnpF6#*gDFH_oeWqeDFEE^bE(Ucja4=nG_*=+nS_IOW8M$p*WHFbGb{2@=fDKjKX z>4R&`6rA5D@VTEJ%jjF?!h7P6Du#k51A@?sQH$biS&nZO3YZLBORT!8rM*n=A+!$h zC=vufF-%_>H+``1+8_Usk_(J+oKkQe<^}r7W;@2Py45~v*!Kxm-e>^=6GFeqn|Ou> z1mF~Y%7w9I*u>7{tZEH{#7NRWtKys5Ewrdwg%_6*EJ@BFwt+A397e>WixEyC3&iYk znZK%~+nNWFGM-#6qC3nEH^!A_B86DZ;h8#Y%6|l z3E`dc^|@TE1e4}G%(!=hA%XJJ8K+;bV9qb`<T+xT4l*5i6e+KqX!z^((fzVdg}iMSF#KeNB1j`I9B#MXRcLWohJY}IZBN59Jdf9 zyA+87YT<=A4zn)Z!SNLH--l?|t7-DeJ!;;;7kUdF$mv6{{ymJKUWhzL^v;|?Ip7fy za6A7wfw`4)%bG$Lgh-Y6n-pT%0lqIW@``|A#z%dV=`|EcmU$C`d{7METV}!nHoV&K zA)L--r^Gtbc4be!fah>w8%#3|wL6^_i0x71V;98p21Ok4qVl}H$w-#erTSAA`Jot| zq;2RzPWF-k3XH%2Ay}Cj8bF1nlVKs+5?AGDUF2x{)UBTu;cTv8$REw9ZoZo=Y_K%q z(M2H#o=&#}FRXgv@sna#SY4vqoQh!yY>$-#$ja$cWUFd82+Ciqc^)EP(;M2=>%oO& z!$Fl#R3*z))`}Kew>efUef1-GwFinyV}c~qE!tsOd9I@PJizD&E_m8Y?-$$;CjyMk zSkk%WYSbK`>^1>fiABNTH1Vte1CPI9e)0XtjB@n;uVKfP zu1eZTi*Ns~uXadx%-kJ~byUw0hvJ;4NVFarWis*L^Y zaHqD6qQYQrmLBID= z-ZYjwD@i9UcgC3OWU#=)Q)ZRC^d% z&)DXhs(9iNRM+Pepn1$o_>44Ho)t`1K&E5T-(A#&IF1Z&_JM8hN7=D1~$q*`-^Xb1`*ax%=NB91< zn67iWlnth-VHd(>Vt9n1w)q9{^APXS1vj^*DAs+`Z*4F~r@iy|W~l569pu@_@EBHR zy(#6&+=V|^@5r&;K{D5lmRNSuA;-1dZF2w8yW00+-EILUn_G`5+_2hFKDUM}u3{aN zu0Pjq(%KriX#aJ$ZI2itL-6s}EXQGl^+9s);1fieDf+{yN0Y8U6!dD>?kF9b89;TO zn!C6|APM;Ku;z}=DzglmwA5}}T#6TSCPFSFR1bkZ6DIWwV| z$a_BlrPF?}RpUxXkz_rSW}eh^&6eDog(^US#*kiiw4MRC2h{2`C?I@TO# z`2&P9N+r~R3;)4=1Y5$veFQ&F!)^Mqo02qu-5l>g9zq(u->N*LFLO{jC(8YIO)l4h zOrZ7huwviWdU;uD;AM$AqA@SXdQ^s!^1>C_A9T@C{GIA#SN})#3Av{Lt3z+a4Q>f( zBt=UKxliD9=<4OF@0yvQU0wUJpdl-i8#Pg;0=(d2dz)d>)8z2kKW=+=URcfCrA|%&0X=3Ig9K6+2_>T(BS-pZa|Z$ zd4f8|)Zo>BWxs0e$t!QOZTnH{s6Zt+-KKcMSbi)e{FLwPn?CMKgScmtXO#TsHbgLv8n;9M5zzePeN zsR#OlB%dKw2ugiIA7d8luGE1Z9I(*J;$$kXWb~C1@lt_Q8K4V+`!>#rFE2`{z$-bnJGMCE(YJPKQpo`!_lWp|pZGA+0z4`?w2Qm3jE zR}i%jtlha*Zyt|IUnu?TxiAly4vNt@E48FmBXx`eEZhEuAarG(zZ~SR1;8bPxh2oP{o;w(;?%WRUs}P>CYIb3 zRc@6I8v);z;^}4ke%vtx(rG32JVOnMocBEIg`1n15japor=c$E6psm2`b6RQ_yqcG z2axYd;@uZZt?^#NHhGFr)6nTUNmxbGPC1?C{h459;W%G@vgG1xt9WmTphtc?U^qLV zi^m}JX2c@7+8WMzb3ft4YT|UB!es#)UmEs$md*xSa<_|cMAfKw*n#ke2TC%m4^GeR zkk)O@Bc5K?6>__;I_=AVT}j5(dId~uLtL?vcv5zyRnL%DZOyFs7>^7A<|FNB>zu^? zyrrcCbFi%-u&(Uj*)sOd{U8ew`Z*rvy_SaiwUUsVcD3~(w`xU@5htv22dhjL0&*Hx zosJc{Lh_}wR6_ADj!{yS_Eo)&43(Lh5LUrVOA0loqKW&a!zlG_!hyEIM1SD4WCt

      9_Bsuru=3nbGPpnw3unl7hK8yx3d@0|bFz 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%0DZ~$68&U_A2qeX3n zUVLP$1_8BPIgt{G;`TC<=EZBz$TH`bYFSa-c`posmJ_O0jy#3f_7A)})cLWur5}#$ zYOmhR4HC|3B+kYo) z`kf!D&&rxb;y1HaB~+`DRVxnFinD5!L$%7!M4$*?HQupTJUWM{_UgPy$J|;)I_B0Y z(lNJI*{GG*!}{fXiPBKiuOIh|bkS3-NFP1bigeObZL?mAu*m{K=XIfh^i(U-OHZ{T zz4TPWUPf{a$`&|K<&GI79GTMSHM*O~6ig8VRdVvfK#4Dr;)2ChE1}^MM$cc zxngs{tv8_O!%)HB^fItyc%z18E@RZy+(k?^5?ICb>&!vyaw3>)6pZjtmQ43w3=#GfXY&XM66Y_Kr6&(#%%_Q5cNG8VZ6cNCpds#asF^}2}6AW+TCFv4k_HPQ2F-i0qS>6&>bgy|0P<}22UcO zk6*xKmoa3LB%6(zsFpo&62~u-kXsomzt8~coA!($#M_HyIg(hKe3Ir-yVs?Q)3bS$ zfS?|&^i34Y*7#Rxot3)OEO{@pshcL)htYqmxtPH;Iv9<0#C#b`^tQlGlzvU%mCR;EHEg@Dmjd7a*BxfglxhI zh_OK=rPB;zW>S;Wr0BdkTTfRLY~Tw_8wu-o6?|91@Fbhlm`I_Jp9fQQeKXdO^|Cob zq4H%U++;3tFtUK_^TqIA>!c)|>6j_hH(XZFpckwzZ<{Q@W_Hu`{bV(|iMH^SZBM5w zs%P~^IojRbr7w^7p4nzpwAlVifOn{fH2LY}E`cy_pSyq`?<>#;CTJdVhpe2I@zxKm zE70sZumH_l7$b#dw>X-Oo5`YaJ2nBztuuS6QcJ2B)R{0@R`~!-_Ht90B8T0xNajRI zqw#X`4nqgdZxhVc!xuTcGmR1n5A}CoO9DF*J6w^DkewK`csE&o^*}dyUiVE&$MSk- z!Hn+)vzi67dN-K0ESR;s!Q9J&xwk3Ivt&FOvL(lvf0OIkeChaF2ZSI7-kFG;4=`tC z)>qIfv_=9+U_EG>c)pyj8q>GWieSQu7E0TTA3SEG73e7XTla5yFsGUV8OE^lw0Z-V~r10C_-$zr})MrSo$2T4>5@VOeTpbuph# zi{gZ3H^E4d`C-K3vL9^ckvgYsiuo;5RTxKATNb}>Te&#I=gE_Rw@bR6HKuk~_CL2P zGb`_g-kAXEg%Qsj_i=JHgtfQO%niyAT)0j9Bj*C93WbFTLoi3rdjC7>SxHenOYD;U z(%rIIWQlhdtWUfLchki|OSRVz+1_sy2P~|Fez=y^xH#D3VLBO|&BsY&wVe848$~u< zN@e9NdRv7yZR7m)@MC=pI$f~|rHbcm)O27V*|mxV^<=DZdQtBd!s}|jyqt{3$xK$; z1iw)8tq%*3Q6SI?(?-^~19?>4qN`scVk86)=JAsX` z<>;9*2HTN!H)tCVwnWSHJ-c1)v|hDJ^)_4nGuHk)j7t|-2$4AL6ko@vcR@`zp^v_=^?uIXBF9w&` z_EGe&N|THt;QF zhD}z#*9nF^>v7I8KKle?=?lEN@!5q$&^f`l>)8bXv`;YTT(BWbTTk)8j5md89~5|CRyT!d9~5|C);5Ld<#hYFAPc6&rJ<7o&gUP-7ORI& zOSQuQ;rV79ljdULI}4E0#4w!~LWrLi+zpqDM!TE5qm+g1rVl0F%m4}wx~-qu%|bXq z=}5qh+RZy6=RX9{t~#*S1u)Xj2#94|gM3k>${%V~I;6b7`ycZwxf_$dCcDvV^ZatP zoFpkvCN|dGPdq*1plBs4(l6Eea7CznM)y9))Gb<-dY#nY>{j!Z74!COo(Cmgr?X7p z#nx%vd%|Z1mtG*SrQ+^H!cFR~wsAwCnJ#RFBwElm?f}*ui;4-$fNk7>Y`LWr0vxc7 z8*oiu-{N3#H<$}odD|8OoMm)3fSacG!b@GY(cRxdfzdSD2pQd_*ii)v33tu7p6xJH z1TojZ9E zk`~h?{O1tbMFjTxc_E6+bBBy;30adT>omfg-s13JlO;VLY;hYATC)Byrc%2v;lGXk0?45gHS!B8ApR&w<6~aAf!}!h_<=_J$~`^NP=!HSSr2 z+6FfI#grc7nBwlZ_>UJ9I{Zwa5K8Xp!yPfZ>%u(!vleE1!@ki<8Smeza^*8rg6f~8 z65P3;cO+6(4$lV4h=-Seg(U;uT?YXT02h0|!vnH$`0@m47GbZ4oO2R97CAW)r_Mp2 z3x$HusInmn?>`d-pGLMJ3e#dJcyvNSBXkNRv5@WZVa{Ym)_UQFGe;o1VK3ziH=IfL z?1sJc-p*tF+uP8sAx|)<-**ZqRBZBp7Akj{3JMi_Kt2nVyG{v0$2TDY*nIJ+ArUAz zGGBa(NCXOw$L}#!FjVH&kFB#;Cm2yMx+>w@M|>OV+onE>(j(*2;G=E(gnGgiuf=FG z7$@&0ql7hs2g~eHDY_C@0LhVMv0m|Tom(v08g{)D?epc(Uk1;BwUFZ2HejZJ} zt38h%Kc3iIUIiwpR#JrWP>)43d9zJhYPG53Co7*m6Fx;8QPA18O~Sq(u1dQpR;`=~Izp>5DX=uo|8r~ftxtpGd9&npn; z6{zMFsO1&d%jkx2jvNMb$sH(2E@Y3nbBozu%s2?i90=<`BeSeJbI2`*rvSNyq%}Uf zGh|8+Q%{^JXY==D`LArLI2^IH+ZCQV7-J2B|Aziqs@2d!t7ZX~ae2ENlq~>PHv<(c z__FO=8(OW4Zs%-3PC32yf3@;Nxi)}FvRKY-|61 z=_;xSxGAy!Z2n%4#;n?mUPM*%J|)*LcUtZ9pX#R^tX=5{Eg@>cF#DdS@lm&JjZc)O zh{lw=x9n|tnK%)qDW*H9D45KP;}OM%j)E$4o)YPlxtkJ6V17p>(gVM!66sVerbPOy zeOV>a--e|``U^QqBrBGyM0$%kN~DL}u72o2tWY6WiFA;1lt?U*sYF@@TqV+1AkHgL z%_~sLE3lW*ji3@~77Htp4&D4pq*E-YM21Ti;3U5i=`Cg}k={anCDP>;TZuHO=T#yd zuC$a$S1NjyNC!-=66w_NE0Nw}0VOhAwgB9a5}8r(bCpPE0E;M*4n6@TGE~l1B269% zE0G~&9VIeU(4$0p+qRX+K%q3h7q$`^DkPQ2fG$x9X-7vp~%+g2k z z4A{7M)rA*l#KR}+*(iGCoZ(=+{iDb{B2!0PCI9pHf#=iG{ZG&J=3isyg6&h+g9vbT z3B2&3z)7j&Fqus!Gs>N{U(=4TaM{A#XM@#fwH#nrJvWr5sKe7XQ7J9?6}@9H-~~o( z*UEvckTV#z>f_0~{n{2VGb%XgU;(3>CZiJ0&%sHz_2aA7dE*y8{M0fuX(amZINxCB{uQmPNCmA0S?!V%6K zEkmyH=cBip{pK5I7iK900r!;`FJ45{g=Y~}$FSk3I4sw*8K}wDHTI>OBS<2dd2?Ma zI>IQP~r9Ye#gM&9C!ZLRCN!t(H;*2)XRE6pZ|sEP{EcZSyU+ix0>?*vw%Bvi&2 zYBBOY=~PmhmOglx<2!#`urN9ltwkm@!bYcnLSge!7q|yo5uj2#f8Ir-*JqVA2H~^9 zn?+A)^03+A69=_J{Gu)A83HIRNp@j*0GOi|8Nhrqmh?WFo49<-1p%}|T;Y!~LEt6E zjy`WU+Ow;9^k_CN@sw}xu4Z8s!K($RSxTAUu|-V!#vao@8LEX`(wL2P3(*QGIDwBC zUK~D9b>>%gQ`?(DBr1dzt-$B})#+)8{^cVtC;`0(EeU|`vSfJX+g~vY*BiQFn~bLs#V`&svP^28WECz`^6dMZBv= zc#Ha3=pQ@dt)kbj&t#`1;zl0|LF0&Vlceh(&03Ohktdoqc7b? z8RXu6t@anp(0Q=W{>J<_ygP_1)xX5$z5V#0THUKvpnSEufAE*6{G}1`eb&IQ%P9KG zWip)(m*b3b$uj*T5c*?3PafTm9!2N`5%uQl+4yqGw4-=GN+=O0tYT0C3pM78kITvR z%_`a&ZAX=Ixw-@Y>_tBf({wVOL_Z9di}|}~>vlLDZSy)8$x?)(22BaGGF^U*u9rg$ zCQ+i4@EBTSbc1fSB@CT0oPCU7lbAw<`Q>Uj!Ch=L1T|^#5#d2$%8`}MuU79dPb_M9 z(EfZh8De~j@qDz#P!%kd@6}|Qq|p}WT+xFbukm1;+8Kj#iU2_Y!q?($^nS9s!Tl60 za;xQJgkW$>F`BL^JBoNco!m}%BUqitk|I0+y~f=yB3#0Q_Q@6gO{jm1_2qPu-jt&8 z1fgH9Npr!6qhyA)pf^uIiAsSN5f}i$h$7T!g(DTih89TN6(<)39(jK=zcu?aA*`-o z+Yb%1L|NlGkdNB^CuRYHCs^YOl+gKm>?7!aV`g`M#z(Oa?}wN3cL{Zi@xW}pLM?(& z!4X-gk>;<`8_d>lnQ-z!;}c{hN-HCJwnQ{=#aK-+>^CS?Wbe0nyesf{*@}9dlm6>^ zw-vQ}(M7id`gyAvJ*fBKH!LNu+x?fFSN#Y|bnEB+U!u-QR6qYE`k{T^EJdxKFHp6L zI$ea;KD#(=x8QO6ym9)f**^b1I)+KRp$ltiOV8bP>_0(Yg4g+y4G#KYH0YZMNXyaSQOPAD^~ZYtXyKX}t|< zVzYi$|Gq`FIsk<_i6t4D(d(Bje2T5s;lD<|-8skpG&<+~F8nM(ce{OA`*pk5Dn<2f zyN8rH>2}Vjr$}9>)FC)f^}NLZA?3{hf+G0)Rj(ysM$K0J6u`k~o!bM7gZu;*dB!Z! zgLl*2n+LG!(>YKQowm+9C-tr2cC@txiXZ&pir#ShiTDPJ7%aM~&UikZUvKU1?rsA` zo1jZvM_UhYjRQ^@41TH)>fP^qgTXfW;fqRSbBWk_l<{oPJC64UXPsW3>=OKHA-$3< zPRGgRnm0+UM_Wci>>{40w7jz>-nBch`>Zzyz~lYS)@*p2Z2Poi`T2)wWW)+l=yuNx zC)&2&)ax$rd*QZ>CaI15=Ikpg!Ws+GCSB1A5GB=LaohPovHVtJJ8A$K`t6@uQNPuA zdEPngeE&;y+J|WyKYd!+eV`2C{9sU;ukipG#{9YQ`(~m!=Pm!GevEI2>c@@o3(?0D zLv955?>#!7*rQF|9`5TZl`O!~4(d$#6Z!2MInlP#p}{D-F^mS+Q|O zYLF&ZdRxmx>n!Tf17ZU8EL|kSx7auF0CPMh;{j#@O4ZZRt%fbEx&xC|c!3)r>0QFT zBpD1evc0Q(*ylfm@o$ta28-cxc>COWOvyRj$LRjyK7~C``fFux|Bd@f8!4;CVfEMA z8x3Xgbm@8a-a>pbtI&Y|8kem$1uOizXTJfG;_2G8`4rVaGPe-XwUPLDvYczwnLGj9d;QZKREiF0UXR}4H{KFX zDRwXZ(Qy4?Ab1sHcuhW_%Of+yw(kmS;fkc)-xZWK@^K(OX;Y zaULi45Y6lOc6dD*!7dsJ6>afJFKpBz9tb|-;)1U1YrzruVHY)ZB2Xo)Oj0g zZ{xD_n%~)WZshZY?7<~QwFBh89n&F$a#eHD`((LXLs{%P(SUWHzS`Yq4|M{>4wg@~ zPE?$?d)nKY^Y%b{d+3s(vF;V;4Jfq0lEK1gaA@ihaz_dHfhiRUFJkap~3 zPHX<&7!YU_-xSZwtkGZSZVPR36dtO!4P)P?~(y-nKi=1@=Ou`rQBmC++{LNV2<7aba~qq zKty#~A84uYp7!fwVFi0aQ>f4z)EV&tggK%?(wrIMS;syp9Ui)JIDoxeCyLEyFG0JF zDlS`0X6s}C-90p!L$U-r^G5cMUO-nhs=<;3*kFd-6kVr8l30$vT2C#{zhSyd(1^*D zV#Z(1KrNrmV0^IK7+fRO1&L7<9&;eKE8_)DH3X8TR?}k4;4u#Ae38u9U>b9m{D?tS zHfOXPZ{sQ7+LknQXO0JWWUbo5%5ep9wjfY%V+hw`XKO)Z2)Est%_z**`d?V{1gYCqa05H|X z>9*^4L0t3Qk$p=@ya9fR%ay&1X->NT?E(=4jf;7YXe}C!3moKDOcvvE^f=nWs!ss< zZTJ_y8{>p1ax!Dzc48g>R9{>0NShb*bGH|Dyyk-@FZge`fPF$TTTMTb!D>E(FYkvR z(WrI{%S3cJU)@CY(JFp&ajFvv&1OB)f$@}lvikVsq!HnPuo1KdD@HJ_Q?{#OH+V4C zkvQ8ff2bW2tjX$cfXpnKkH`GvMTgVtf(nD7i2=nFcj{=yjFNZIZMX0-qKqELj1J7& z*nq77irX}rzn@uFR#LJN_;97eA>3@_Co{GQfPDi9g!wGl-Hop2utB_Dn<+faVS0EJ z{l_~xlG8~fzBuxYAv`j6DNIh;`&4{nZBO{5VXSVk$F^MiaXl70O{_s7{~jti&*ztR z94l2Jt2C|@`fNnOjr$^EeHR0mGqLGMrBh7S)|p=@vhRmWR1==Tz9*$ZfVwtH--0SY zk8zMAk4k9|P)XtXSX4jg=mOx*)664^; zN33L0t7MAFk}gV}`c}upc(F>*e#sbg=^tk<;PQZ6D3+P4hP`M=qrmN0{TP=+YlyZ~ zAh7RX_Kmc40BHtHgs(6I2j?1*El^Em>xQgRjY)m9Xho%j^wM{H=b1vH)^qGjq)r}8?R7i5H=<`#A3;-J&Cqp zHQaMnLy!2egk?cM+fKF=<9&3b?OUZ-^evZP+=@`M?*-ly<2s7cII`(Dm8(qB(No66b;wV+ni@ zi%7Dh<1C!r(Z>W-^Xnljg29yz2^e1K{(mD&kyU_TM@KqrpBgH$*tYz79mTq*ixQQ_ z*wXF1RbRPP{W|UDNFCl8C#R;Gu{r9_o%9`i5}etV4iwT~whWLcBwc{pT(8mS`9D&v z(e^=K_u+r;KAhkOwJd%=hACU=VjxaJLK>GAP)~|ms6$o0{i{lRXbfT@aPrf$(Gjmw${3+t>u{ysl3F)w%Y3` zwD_@7S9oJ33v>aW=>2kz@jgJBdNI?uPCrovHmhcgvRm2^AF7j1|Il6ELe`joDRYWu zAy81jh;vs{y~WS<9Nn9Sczeld!^%qL;;UWj$%D0*2dh#X)}aXt`ZyR2)7!xSMhkr* z9&FalfREOBjv8_~QIDBkzXoe<3qH=O$cI0pq}2u(LJ!D}?Z z>&=VCnKRww{5Zh*;jMDld2+Dl5dppix(VoN30~2#u*;>8hJG!CzJh+|j_hZ2q_Vpo zChwg)U_!k!;xA>mIY@o6Ds`TMPzSxL(RLY_?@?>iDex5Z+oVSoDKG47Vi-4yxhE)RGHO0nqbtF z^7CkCXR_^7^HLzGsyK(@^QjOeJkpH$$e~9$-uL}tLw?}bMe3_na=V}#Y>VamG9kL) zEvzl9v;FtN3vqJjc7@WJg?i%SBjHD1tjVj2vu0oA+sd5%RciTk9ai38Y!_PKk0=>s zWjp$N6i3f&T_WheSOoc}Uv3gy4fA?kd`o%dF~pp-e?DvF+dT?2l4*T?HCra5`SlDY zq%vun_Gu4c#ZTh^PaKo$B-Kr;(hRQn8*8G>e^v+pT3V4mw6lKv*ERdHQu3M&D<*=!Tm+=#*P9UZxbH*wQ0b3nDS?B1NK$m*}(yRRiN z8=%E1S6e`cTz`&)Sl2Krwr+Y(m*kOG(LRymQ*Pl<7hp$5tzjRS50&UmkRt?wnI#BR zK_Xb^Sb+&>6v>{#Mu(XSirp3wXYi)WcRO-1CeF6kdvY0%naXrnwP(4}02cW5+wmJ6 zronF>@EWDq4NsFnzl|u~*4U1$6WN^n*wL&^Rox>QOd#p6J@SZ(GVGvlrzzS@VyEv%J}GGF*Zfm~;fWQLNanrmVq{_V9*pKd~VQ zv(OzGB?Awl`Cayj_JMAZ`Oa5WTx$>j)R98hnOmV|YZ(?$T(b;q5%lB7MRz}*6G`LD zt>BEnU|JM7mDS_-@Y297m@IrMo?TDB!tP$Mu>WN5W6rE-0VvFU4deLJ)18bBW}S{2)`AIy8#bz z9{~KLMPjf@QtV?2_Nz4|KBkW&D);O{EB$(=-x8UA6Y?+qbHH+swv3;%MYvjommBHKo@Ji1qnZeY%=)ytT|jExtm;CL`}M4HUnp04A^?Y{d&&e+?@hbWy)=`{3Py8is_gXp5$ z9`Dzp2W;vZT+KsO-^nDp`BG=QjD|NOEm#H-#8DJn3Z3QqKSftd+pN8bYS*e{;S{zW zJBuhcpysw*&?>n}AJi7<>M2_%gB=nZSJMcg;bCuZ2$uqmR=%$3V6O^+Egx(Kwt7$q zY}Gy=34!%mNkh2$_DPm$6hGOMFVik7ELYE>b(V#eTOrJ5^>FzL4f`sNvcfucRRO>< z#7&dy;piiaqw6=u1#S^2tw~!cjSD9QuZoL{dcu)6aQ(o(dLW!oJ@ff)`1}pbiE3t^F@xs8asbVd?WsUS5jxgoq1@PS{0?O(P#(Lp zslByKTWB}YOiw(xp1P4DLrGDPKmC?12wZJ1A0Q(r5Q;W@i z>ezfKRhZxS^OR+FVS!7SNrl%&!-!2 z%fHszA9W6#dIwB=jKQ$T@2A429R7ADja=HcXc;@A!vLVmk-S{zEN>c2){wCztB|>D zMaE-?O%`NI*A9)9q9NtEDi>OzbCz6}wB%oeGDs7BtYH#9S65D74Uo3Sp9DD^Gp^OZ zPR!e<6gR};Alb53j$H!PYrS!Vr5Pg>>N7w-DHooksI@skn#4!UMs)M~C~VpMw&|57 z19J{;yt}(kK^pjCpK4@gZYay;d}&apkk4#l65#WtHg#{RaL zRZr!IVUaepR-ud_xVJ0`K|jl8Bb4|NB32!~8&0MaIgu}5zfp+ILz;lTw#c=~*ogf0 zo27C32*ugW*$6#!by+s`-J4TxU8hv8zM9P?SAIevw0J*A5mR7ni3utZl}c!S<@n5*~0VO12@^cz(Mor38A{JGx{!1Aos zL|(94mipt}e7e3(qAHn=RMaxF=DtyrZh97~clbu`GVr!vvskU6QHvRqc*TmSc%Q!= z?;TN6bjJStA@u{d+6iGz6xuQ8bHmGWy7dc@?g+VW;$Y5Er?7-zAT{MQOMVAHjAH|-I}oz z2NDg18pUNNugyTC`k9n~7ySy7# s0r2A&@+t^w!Ue^_12_O>MGEBJ^dKiQq)-d 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

      H1P(mPX@6ym(oV_HmhRfD5~V7 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

      5X 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�^I_X>Hv&Uqh( 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 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdb-xml/.svn/text-base/arm-neon.xml.svn-base b/qemu/qemu-git/gdb-xml/.svn/text-base/arm-neon.xml.svn-base new file mode 100644 index 0000000..ce3ee03 --- /dev/null +++ b/qemu/qemu-git/gdb-xml/.svn/text-base/arm-neon.xml.svn-base @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp.xml.svn-base b/qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp.xml.svn-base new file mode 100644 index 0000000..b20881e --- /dev/null +++ b/qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp.xml.svn-base @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp3.xml.svn-base b/qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp3.xml.svn-base new file mode 100644 index 0000000..227afd8 --- /dev/null +++ b/qemu/qemu-git/gdb-xml/.svn/text-base/arm-vfp3.xml.svn-base @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdb-xml/arm-core.xml b/qemu/qemu-git/gdb-xml/arm-core.xml new file mode 100644 index 0000000..6012f34 --- /dev/null +++ b/qemu/qemu-git/gdb-xml/arm-core.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdb-xml/arm-neon.xml b/qemu/qemu-git/gdb-xml/arm-neon.xml new file mode 100644 index 0000000..ce3ee03 --- /dev/null +++ b/qemu/qemu-git/gdb-xml/arm-neon.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdb-xml/arm-vfp.xml b/qemu/qemu-git/gdb-xml/arm-vfp.xml new file mode 100644 index 0000000..b20881e --- /dev/null +++ b/qemu/qemu-git/gdb-xml/arm-vfp.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdb-xml/arm-vfp3.xml b/qemu/qemu-git/gdb-xml/arm-vfp3.xml new file mode 100644 index 0000000..227afd8 --- /dev/null +++ b/qemu/qemu-git/gdb-xml/arm-vfp3.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qemu/qemu-git/gdbstub.h b/qemu/qemu-git/gdbstub.h new file mode 100644 index 0000000..5740041 --- /dev/null +++ b/qemu/qemu-git/gdbstub.h @@ -0,0 +1,35 @@ +#ifndef GDBSTUB_H +#define GDBSTUB_H + +#define DEFAULT_GDBSTUB_PORT "1234" + +/* GDB breakpoint/watchpoint types */ +#define GDB_BREAKPOINT_SW 0 +#define GDB_BREAKPOINT_HW 1 +#define GDB_WATCHPOINT_WRITE 2 +#define GDB_WATCHPOINT_READ 3 +#define GDB_WATCHPOINT_ACCESS 4 + +typedef void (*gdb_syscall_complete_cb)(CPUState *env, + target_ulong ret, target_ulong err); + +void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...); +int use_gdb_syscalls(void); +void gdb_set_stop_cpu(CPUState *env); +#ifdef CONFIG_USER_ONLY +int gdb_queuesig (void); +int gdb_handlesig (CPUState *, int); +void gdb_exit(CPUState *, int); +void gdb_signalled(CPUState *, int); +int gdbserver_start(int); +void gdbserver_fork(CPUState *); +#else +int gdbserver_start(const char *port); +#endif +/* Get or set a register. Returns the size of the register. */ +typedef int (*gdb_reg_cb)(CPUState *env, uint8_t *buf, int reg); +void gdb_register_coprocessor(CPUState *env, + gdb_reg_cb get_reg, gdb_reg_cb set_reg, + int num_regs, const char *xml, int g_pos); + +#endif diff --git a/qemu/qemu-git/gen-icount.h b/qemu/qemu-git/gen-icount.h new file mode 100644 index 0000000..3268f72 --- /dev/null +++ b/qemu/qemu-git/gen-icount.h @@ -0,0 +1,46 @@ +/* Helpers for instruction counting code generation. */ + +static TCGArg *icount_arg; +static int icount_label; + +static inline void gen_icount_start(void) +{ + TCGv_i32 count; + + if (!use_icount) + return; + + icount_label = gen_new_label(); + count = tcg_temp_local_new_i32(); + tcg_gen_ld_i32(count, cpu_env, offsetof(CPUState, icount_decr.u32)); + /* This is a horrid hack to allow fixing up the value later. */ + icount_arg = gen_opparam_ptr + 1; + tcg_gen_subi_i32(count, count, 0xdeadbeef); + + tcg_gen_brcondi_i32(TCG_COND_LT, count, 0, icount_label); + tcg_gen_st16_i32(count, cpu_env, offsetof(CPUState, icount_decr.u16.low)); + tcg_temp_free_i32(count); +} + +static void gen_icount_end(TranslationBlock *tb, int num_insns) +{ + if (use_icount) { + *icount_arg = num_insns; + gen_set_label(icount_label); + tcg_gen_exit_tb((long)tb + 2); + } +} + +static inline void gen_io_start(void) +{ + TCGv_i32 tmp = tcg_const_i32(1); + tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUState, can_do_io)); + tcg_temp_free_i32(tmp); +} + +static inline void gen_io_end(void) +{ + TCGv_i32 tmp = tcg_const_i32(0); + tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUState, can_do_io)); + tcg_temp_free_i32(tmp); +} diff --git a/qemu/qemu-git/host-utils.c b/qemu/qemu-git/host-utils.c new file mode 100644 index 0000000..dc96123 --- /dev/null +++ b/qemu/qemu-git/host-utils.c @@ -0,0 +1,105 @@ +/* + * Utility compute operations used by translated code. + * + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2007 Aurelien Jarno + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include +#include "host-utils.h" + +//#define DEBUG_MULDIV + +/* Long integer helpers */ +#if !defined(__x86_64__) +static void add128 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) +{ + *plow += a; + /* carry test */ + if (*plow < a) + (*phigh)++; + *phigh += b; +} + +static void neg128 (uint64_t *plow, uint64_t *phigh) +{ + *plow = ~*plow; + *phigh = ~*phigh; + add128(plow, phigh, 1, 0); +} + +static void mul64 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) +{ + uint32_t a0, a1, b0, b1; + uint64_t v; + + a0 = a; + a1 = a >> 32; + + b0 = b; + b1 = b >> 32; + + v = (uint64_t)a0 * (uint64_t)b0; + *plow = v; + *phigh = 0; + + v = (uint64_t)a0 * (uint64_t)b1; + add128(plow, phigh, v << 32, v >> 32); + + v = (uint64_t)a1 * (uint64_t)b0; + add128(plow, phigh, v << 32, v >> 32); + + v = (uint64_t)a1 * (uint64_t)b1; + *phigh += v; +} + +/* Unsigned 64x64 -> 128 multiplication */ +void mulu64 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) +{ + mul64(plow, phigh, a, b); +#if defined(DEBUG_MULDIV) + printf("mulu64: 0x%016llx * 0x%016llx = 0x%016llx%016llx\n", + a, b, *phigh, *plow); +#endif +} + +/* Signed 64x64 -> 128 multiplication */ +void muls64 (uint64_t *plow, uint64_t *phigh, int64_t a, int64_t b) +{ + int sa, sb; + + sa = (a < 0); + if (sa) + a = -a; + sb = (b < 0); + if (sb) + b = -b; + mul64(plow, phigh, a, b); + if (sa ^ sb) { + neg128(plow, phigh); + } +#if defined(DEBUG_MULDIV) + printf("muls64: 0x%016llx * 0x%016llx = 0x%016llx%016llx\n", + a, b, *phigh, *plow); +#endif +} +#endif /* !defined(__x86_64__) */ diff --git a/qemu/qemu-git/host-utils.h b/qemu/qemu-git/host-utils.h new file mode 100644 index 0000000..0ddc176 --- /dev/null +++ b/qemu/qemu-git/host-utils.h @@ -0,0 +1,236 @@ +/* + * Utility compute operations used by translated code. + * + * Copyright (c) 2007 Thiemo Seufer + * Copyright (c) 2007 Jocelyn Mayer + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "osdep.h" + +#if defined(__x86_64__) +#define __HAVE_FAST_MULU64__ +static inline void mulu64(uint64_t *plow, uint64_t *phigh, + uint64_t a, uint64_t b) +{ + __asm__ ("mul %0\n\t" + : "=d" (*phigh), "=a" (*plow) + : "a" (a), "0" (b)); +} +#define __HAVE_FAST_MULS64__ +static inline void muls64(uint64_t *plow, uint64_t *phigh, + int64_t a, int64_t b) +{ + __asm__ ("imul %0\n\t" + : "=d" (*phigh), "=a" (*plow) + : "a" (a), "0" (b)); +} +#else +void muls64(uint64_t *phigh, uint64_t *plow, int64_t a, int64_t b); +void mulu64(uint64_t *phigh, uint64_t *plow, uint64_t a, uint64_t b); +#endif + +/* Binary search for leading zeros. */ + +static inline int clz32(uint32_t val) +{ +#if QEMU_GNUC_PREREQ(3, 4) + if (val) + return __builtin_clz(val); + else + return 32; +#else + int cnt = 0; + + if (!(val & 0xFFFF0000U)) { + cnt += 16; + val <<= 16; + } + if (!(val & 0xFF000000U)) { + cnt += 8; + val <<= 8; + } + if (!(val & 0xF0000000U)) { + cnt += 4; + val <<= 4; + } + if (!(val & 0xC0000000U)) { + cnt += 2; + val <<= 2; + } + if (!(val & 0x80000000U)) { + cnt++; + val <<= 1; + } + if (!(val & 0x80000000U)) { + cnt++; + } + return cnt; +#endif +} + +static inline int clo32(uint32_t val) +{ + return clz32(~val); +} + +static inline int clz64(uint64_t val) +{ +#if QEMU_GNUC_PREREQ(3, 4) + if (val) + return __builtin_clzll(val); + else + return 64; +#else + int cnt = 0; + + if (!(val >> 32)) { + cnt += 32; + } else { + val >>= 32; + } + + return cnt + clz32(val); +#endif +} + +static inline int clo64(uint64_t val) +{ + return clz64(~val); +} + +static inline int ctz32(uint32_t val) +{ +#if QEMU_GNUC_PREREQ(3, 4) + if (val) + return __builtin_ctz(val); + else + return 32; +#else + int cnt; + + cnt = 0; + if (!(val & 0x0000FFFFUL)) { + cnt += 16; + val >>= 16; + } + if (!(val & 0x000000FFUL)) { + cnt += 8; + val >>= 8; + } + if (!(val & 0x0000000FUL)) { + cnt += 4; + val >>= 4; + } + if (!(val & 0x00000003UL)) { + cnt += 2; + val >>= 2; + } + if (!(val & 0x00000001UL)) { + cnt++; + val >>= 1; + } + if (!(val & 0x00000001UL)) { + cnt++; + } + + return cnt; +#endif +} + +static inline int cto32(uint32_t val) +{ + return ctz32(~val); +} + +static inline int ctz64(uint64_t val) +{ +#if QEMU_GNUC_PREREQ(3, 4) + if (val) + return __builtin_ctzll(val); + else + return 64; +#else + int cnt; + + cnt = 0; + if (!((uint32_t)val)) { + cnt += 32; + val >>= 32; + } + + return cnt + ctz32(val); +#endif +} + +static inline int cto64(uint64_t val) +{ + return ctz64(~val); +} + +static inline int ctpop8(uint8_t val) +{ + val = (val & 0x55) + ((val >> 1) & 0x55); + val = (val & 0x33) + ((val >> 2) & 0x33); + val = (val & 0x0f) + ((val >> 4) & 0x0f); + + return val; +} + +static inline int ctpop16(uint16_t val) +{ + val = (val & 0x5555) + ((val >> 1) & 0x5555); + val = (val & 0x3333) + ((val >> 2) & 0x3333); + val = (val & 0x0f0f) + ((val >> 4) & 0x0f0f); + val = (val & 0x00ff) + ((val >> 8) & 0x00ff); + + return val; +} + +static inline int ctpop32(uint32_t val) +{ +#if QEMU_GNUC_PREREQ(3, 4) + return __builtin_popcount(val); +#else + val = (val & 0x55555555) + ((val >> 1) & 0x55555555); + val = (val & 0x33333333) + ((val >> 2) & 0x33333333); + val = (val & 0x0f0f0f0f) + ((val >> 4) & 0x0f0f0f0f); + val = (val & 0x00ff00ff) + ((val >> 8) & 0x00ff00ff); + val = (val & 0x0000ffff) + ((val >> 16) & 0x0000ffff); + + return val; +#endif +} + +static inline int ctpop64(uint64_t val) +{ +#if QEMU_GNUC_PREREQ(3, 4) + return __builtin_popcountll(val); +#else + val = (val & 0x5555555555555555ULL) + ((val >> 1) & 0x5555555555555555ULL); + val = (val & 0x3333333333333333ULL) + ((val >> 2) & 0x3333333333333333ULL); + val = (val & 0x0f0f0f0f0f0f0f0fULL) + ((val >> 4) & 0x0f0f0f0f0f0f0f0fULL); + val = (val & 0x00ff00ff00ff00ffULL) + ((val >> 8) & 0x00ff00ff00ff00ffULL); + val = (val & 0x0000ffff0000ffffULL) + ((val >> 16) & 0x0000ffff0000ffffULL); + val = (val & 0x00000000ffffffffULL) + ((val >> 32) & 0x00000000ffffffffULL); + + return val; +#endif +} diff --git a/qemu/qemu-git/hostregs_helper.h b/qemu/qemu-git/hostregs_helper.h new file mode 100644 index 0000000..3a0bece --- /dev/null +++ b/qemu/qemu-git/hostregs_helper.h @@ -0,0 +1,61 @@ +/* + * Save/restore host registers. + * + * Copyright (c) 2007 CodeSourcery + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* The GCC global register variable extension is used to reserve some + host registers for use by generated code. However only the core parts of + the translation engine are compiled with these settings. We must manually + save/restore these registers when called from regular code. + It is not sufficient to save/restore T0 et. al. as these may be declared + with a datatype smaller than the actual register. */ + +#if defined(DECLARE_HOST_REGS) + +#define DO_REG(REG) \ + register host_reg_t reg_AREG##REG asm(AREG##REG); \ + volatile host_reg_t saved_AREG##REG; + +#elif defined(SAVE_HOST_REGS) + +#define DO_REG(REG) \ + __asm__ __volatile__ ("" : "=r" (reg_AREG##REG)); \ + saved_AREG##REG = reg_AREG##REG; + +#else + +#define DO_REG(REG) \ + reg_AREG##REG = saved_AREG##REG; \ + __asm__ __volatile__ ("" : : "r" (reg_AREG##REG)); + +#endif + +#ifdef AREG0 +DO_REG(0) +#endif + +#ifdef AREG1 +DO_REG(1) +#endif + +#ifdef AREG2 +DO_REG(2) +#endif + +#undef SAVE_HOST_REGS +#undef DECLARE_HOST_REGS +#undef DO_REG diff --git a/qemu/qemu-git/hppa-dis.c b/qemu/qemu-git/hppa-dis.c new file mode 100644 index 0000000..9d96d72 --- /dev/null +++ b/qemu/qemu-git/hppa-dis.c @@ -0,0 +1,2831 @@ +/* Disassembler for the PA-RISC. Somewhat derived from sparc-pinsn.c. + Copyright 1989, 1990, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2003, + 2005 Free Software Foundation, Inc. + + Contributed by the Center for Software Science at the + University of Utah (pa-gdb-bugs@cs.utah.edu). + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#include "dis-asm.h" + +/* HP PA-RISC SOM object file format: definitions internal to BFD. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, + 2003 Free Software Foundation, Inc. + + Contributed by the Center for Software Science at the + University of Utah (pa-gdb-bugs@cs.utah.edu). + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#ifndef _LIBHPPA_H +#define _LIBHPPA_H + +#define BYTES_IN_WORD 4 +#define PA_PAGESIZE 0x1000 + +/* The PA instruction set variants. */ +enum pa_arch {pa10 = 10, pa11 = 11, pa20 = 20, pa20w = 25}; + +/* HP PA-RISC relocation types */ + +enum hppa_reloc_field_selector_type + { + R_HPPA_FSEL = 0x0, + R_HPPA_LSSEL = 0x1, + R_HPPA_RSSEL = 0x2, + R_HPPA_LSEL = 0x3, + R_HPPA_RSEL = 0x4, + R_HPPA_LDSEL = 0x5, + R_HPPA_RDSEL = 0x6, + R_HPPA_LRSEL = 0x7, + R_HPPA_RRSEL = 0x8, + R_HPPA_NSEL = 0x9, + R_HPPA_NLSEL = 0xa, + R_HPPA_NLRSEL = 0xb, + R_HPPA_PSEL = 0xc, + R_HPPA_LPSEL = 0xd, + R_HPPA_RPSEL = 0xe, + R_HPPA_TSEL = 0xf, + R_HPPA_LTSEL = 0x10, + R_HPPA_RTSEL = 0x11, + R_HPPA_LTPSEL = 0x12, + R_HPPA_RTPSEL = 0x13 + }; + +/* /usr/include/reloc.h defines these to constants. We want to use + them in enums, so #undef them before we start using them. We might + be able to fix this another way by simply managing not to include + /usr/include/reloc.h, but currently GDB picks up these defines + somewhere. */ +#undef e_fsel +#undef e_lssel +#undef e_rssel +#undef e_lsel +#undef e_rsel +#undef e_ldsel +#undef e_rdsel +#undef e_lrsel +#undef e_rrsel +#undef e_nsel +#undef e_nlsel +#undef e_nlrsel +#undef e_psel +#undef e_lpsel +#undef e_rpsel +#undef e_tsel +#undef e_ltsel +#undef e_rtsel +#undef e_one +#undef e_two +#undef e_pcrel +#undef e_con +#undef e_plabel +#undef e_abs + +/* for compatibility */ +enum hppa_reloc_field_selector_type_alt + { + e_fsel = R_HPPA_FSEL, + e_lssel = R_HPPA_LSSEL, + e_rssel = R_HPPA_RSSEL, + e_lsel = R_HPPA_LSEL, + e_rsel = R_HPPA_RSEL, + e_ldsel = R_HPPA_LDSEL, + e_rdsel = R_HPPA_RDSEL, + e_lrsel = R_HPPA_LRSEL, + e_rrsel = R_HPPA_RRSEL, + e_nsel = R_HPPA_NSEL, + e_nlsel = R_HPPA_NLSEL, + e_nlrsel = R_HPPA_NLRSEL, + e_psel = R_HPPA_PSEL, + e_lpsel = R_HPPA_LPSEL, + e_rpsel = R_HPPA_RPSEL, + e_tsel = R_HPPA_TSEL, + e_ltsel = R_HPPA_LTSEL, + e_rtsel = R_HPPA_RTSEL, + e_ltpsel = R_HPPA_LTPSEL, + e_rtpsel = R_HPPA_RTPSEL + }; + +enum hppa_reloc_expr_type + { + R_HPPA_E_ONE = 0, + R_HPPA_E_TWO = 1, + R_HPPA_E_PCREL = 2, + R_HPPA_E_CON = 3, + R_HPPA_E_PLABEL = 7, + R_HPPA_E_ABS = 18 + }; + +/* for compatibility */ +enum hppa_reloc_expr_type_alt + { + e_one = R_HPPA_E_ONE, + e_two = R_HPPA_E_TWO, + e_pcrel = R_HPPA_E_PCREL, + e_con = R_HPPA_E_CON, + e_plabel = R_HPPA_E_PLABEL, + e_abs = R_HPPA_E_ABS + }; + + +/* Relocations for function calls must be accompanied by parameter + relocation bits. These bits describe exactly where the caller has + placed the function's arguments and where it expects to find a return + value. + + Both ELF and SOM encode this information within the addend field + of the call relocation. (Note this could break very badly if one + was to make a call like bl foo + 0x12345678). + + The high order 10 bits contain parameter relocation information, + the low order 22 bits contain the constant offset. */ + +#define HPPA_R_ARG_RELOC(a) \ + (((a) >> 22) & 0x3ff) +#define HPPA_R_CONSTANT(a) \ + ((((bfd_signed_vma)(a)) << (BFD_ARCH_SIZE-22)) >> (BFD_ARCH_SIZE-22)) +#define HPPA_R_ADDEND(r, c) \ + (((r) << 22) + ((c) & 0x3fffff)) + + +/* Some functions to manipulate PA instructions. */ + +/* Declare the functions with the unused attribute to avoid warnings. */ +static inline int sign_extend (int, int) ATTRIBUTE_UNUSED; +static inline int low_sign_extend (int, int) ATTRIBUTE_UNUSED; +static inline int sign_unext (int, int) ATTRIBUTE_UNUSED; +static inline int low_sign_unext (int, int) ATTRIBUTE_UNUSED; +static inline int re_assemble_3 (int) ATTRIBUTE_UNUSED; +static inline int re_assemble_12 (int) ATTRIBUTE_UNUSED; +static inline int re_assemble_14 (int) ATTRIBUTE_UNUSED; +static inline int re_assemble_16 (int) ATTRIBUTE_UNUSED; +static inline int re_assemble_17 (int) ATTRIBUTE_UNUSED; +static inline int re_assemble_21 (int) ATTRIBUTE_UNUSED; +static inline int re_assemble_22 (int) ATTRIBUTE_UNUSED; +static inline bfd_signed_vma hppa_field_adjust + (bfd_vma, bfd_signed_vma, enum hppa_reloc_field_selector_type_alt) + ATTRIBUTE_UNUSED; +static inline int hppa_rebuild_insn (int, int, int) ATTRIBUTE_UNUSED; + + +/* The *sign_extend functions are used to assemble various bitfields + taken from an instruction and return the resulting immediate + value. */ + +static inline int +sign_extend (int x, int len) +{ + int signbit = (1 << (len - 1)); + int mask = (signbit << 1) - 1; + return ((x & mask) ^ signbit) - signbit; +} + +static inline int +low_sign_extend (int x, int len) +{ + return (x >> 1) - ((x & 1) << (len - 1)); +} + + +/* The re_assemble_* functions prepare an immediate value for + insertion into an opcode. pa-risc uses all sorts of weird bitfields + in the instruction to hold the value. */ + +static inline int +sign_unext (int x, int len) +{ + int len_ones; + + len_ones = (1 << len) - 1; + + return x & len_ones; +} + +static inline int +low_sign_unext (int x, int len) +{ + int temp; + int sign; + + sign = (x >> (len-1)) & 1; + + temp = sign_unext (x, len-1); + + return (temp << 1) | sign; +} + +static inline int +re_assemble_3 (int as3) +{ + return (( (as3 & 4) << (13-2)) + | ((as3 & 3) << (13+1))); +} + +static inline int +re_assemble_12 (int as12) +{ + return (( (as12 & 0x800) >> 11) + | ((as12 & 0x400) >> (10 - 2)) + | ((as12 & 0x3ff) << (1 + 2))); +} + +static inline int +re_assemble_14 (int as14) +{ + return (( (as14 & 0x1fff) << 1) + | ((as14 & 0x2000) >> 13)); +} + +static inline int +re_assemble_16 (int as16) +{ + int s, t; + + /* Unusual 16-bit encoding, for wide mode only. */ + t = (as16 << 1) & 0xffff; + s = (as16 & 0x8000); + return (t ^ s ^ (s >> 1)) | (s >> 15); +} + +static inline int +re_assemble_17 (int as17) +{ + return (( (as17 & 0x10000) >> 16) + | ((as17 & 0x0f800) << (16 - 11)) + | ((as17 & 0x00400) >> (10 - 2)) + | ((as17 & 0x003ff) << (1 + 2))); +} + +static inline int +re_assemble_21 (int as21) +{ + return (( (as21 & 0x100000) >> 20) + | ((as21 & 0x0ffe00) >> 8) + | ((as21 & 0x000180) << 7) + | ((as21 & 0x00007c) << 14) + | ((as21 & 0x000003) << 12)); +} + +static inline int +re_assemble_22 (int as22) +{ + return (( (as22 & 0x200000) >> 21) + | ((as22 & 0x1f0000) << (21 - 16)) + | ((as22 & 0x00f800) << (16 - 11)) + | ((as22 & 0x000400) >> (10 - 2)) + | ((as22 & 0x0003ff) << (1 + 2))); +} + + +/* Handle field selectors for PA instructions. + The L and R (and LS, RS etc.) selectors are used in pairs to form a + full 32 bit address. eg. + + LDIL L'start,%r1 ; put left part into r1 + LDW R'start(%r1),%r2 ; add r1 and right part to form address + + This function returns sign extended values in all cases. +*/ + +static inline bfd_signed_vma +hppa_field_adjust (bfd_vma sym_val, + bfd_signed_vma addend, + enum hppa_reloc_field_selector_type_alt r_field) +{ + bfd_signed_vma value; + + value = sym_val + addend; + switch (r_field) + { + case e_fsel: + /* F: No change. */ + break; + + case e_nsel: + /* N: null selector. I don't really understand what this is all + about, but HP's documentation says "this indicates that zero + bits are to be used for the displacement on the instruction. + This fixup is used to identify three-instruction sequences to + access data (for importing shared library data)." */ + value = 0; + break; + + case e_lsel: + case e_nlsel: + /* L: Select top 21 bits. */ + value = value >> 11; + break; + + case e_rsel: + /* R: Select bottom 11 bits. */ + value = value & 0x7ff; + break; + + case e_lssel: + /* LS: Round to nearest multiple of 2048 then select top 21 bits. */ + value = value + 0x400; + value = value >> 11; + break; + + case e_rssel: + /* RS: Select bottom 11 bits for LS. + We need to return a value such that 2048 * LS'x + RS'x == x. + ie. RS'x = x - ((x + 0x400) & -0x800) + this is just a sign extension from bit 21. */ + value = ((value & 0x7ff) ^ 0x400) - 0x400; + break; + + case e_ldsel: + /* LD: Round to next multiple of 2048 then select top 21 bits. + Yes, if we are already on a multiple of 2048, we go up to the + next one. RD in this case will be -2048. */ + value = value + 0x800; + value = value >> 11; + break; + + case e_rdsel: + /* RD: Set bits 0-20 to one. */ + value = value | -0x800; + break; + + case e_lrsel: + case e_nlrsel: + /* LR: L with rounding of the addend to nearest 8k. */ + value = sym_val + ((addend + 0x1000) & -0x2000); + value = value >> 11; + break; + + case e_rrsel: + /* RR: R with rounding of the addend to nearest 8k. + We need to return a value such that 2048 * LR'x + RR'x == x + ie. RR'x = s+a - (s + (((a + 0x1000) & -0x2000) & -0x800)) + . = s+a - ((s & -0x800) + ((a + 0x1000) & -0x2000)) + . = (s & 0x7ff) + a - ((a + 0x1000) & -0x2000) */ + value = (sym_val & 0x7ff) + (((addend & 0x1fff) ^ 0x1000) - 0x1000); + break; + + default: + abort (); + } + return value; +} + +/* PA-RISC OPCODES */ +#define get_opcode(insn) (((insn) >> 26) & 0x3f) + +enum hppa_opcode_type +{ + /* None of the opcodes in the first group generate relocs, so we + aren't too concerned about them. */ + OP_SYSOP = 0x00, + OP_MEMMNG = 0x01, + OP_ALU = 0x02, + OP_NDXMEM = 0x03, + OP_SPOP = 0x04, + OP_DIAG = 0x05, + OP_FMPYADD = 0x06, + OP_UNDEF07 = 0x07, + OP_COPRW = 0x09, + OP_COPRDW = 0x0b, + OP_COPR = 0x0c, + OP_FLOAT = 0x0e, + OP_PRDSPEC = 0x0f, + OP_UNDEF15 = 0x15, + OP_UNDEF1d = 0x1d, + OP_FMPYSUB = 0x26, + OP_FPFUSED = 0x2e, + OP_SHEXDP0 = 0x34, + OP_SHEXDP1 = 0x35, + OP_SHEXDP2 = 0x36, + OP_UNDEF37 = 0x37, + OP_SHEXDP3 = 0x3c, + OP_SHEXDP4 = 0x3d, + OP_MULTMED = 0x3e, + OP_UNDEF3f = 0x3f, + + OP_LDIL = 0x08, + OP_ADDIL = 0x0a, + + OP_LDO = 0x0d, + OP_LDB = 0x10, + OP_LDH = 0x11, + OP_LDW = 0x12, + OP_LDWM = 0x13, + OP_STB = 0x18, + OP_STH = 0x19, + OP_STW = 0x1a, + OP_STWM = 0x1b, + + OP_LDD = 0x14, + OP_STD = 0x1c, + + OP_FLDW = 0x16, + OP_LDWL = 0x17, + OP_FSTW = 0x1e, + OP_STWL = 0x1f, + + OP_COMBT = 0x20, + OP_COMIBT = 0x21, + OP_COMBF = 0x22, + OP_COMIBF = 0x23, + OP_CMPBDT = 0x27, + OP_ADDBT = 0x28, + OP_ADDIBT = 0x29, + OP_ADDBF = 0x2a, + OP_ADDIBF = 0x2b, + OP_CMPBDF = 0x2f, + OP_BVB = 0x30, + OP_BB = 0x31, + OP_MOVB = 0x32, + OP_MOVIB = 0x33, + OP_CMPIBD = 0x3b, + + OP_COMICLR = 0x24, + OP_SUBI = 0x25, + OP_ADDIT = 0x2c, + OP_ADDI = 0x2d, + + OP_BE = 0x38, + OP_BLE = 0x39, + OP_BL = 0x3a +}; + + +/* Insert VALUE into INSN using R_FORMAT to determine exactly what + bits to change. */ + +static inline int +hppa_rebuild_insn (int insn, int value, int r_format) +{ + switch (r_format) + { + case 11: + return (insn & ~ 0x7ff) | low_sign_unext (value, 11); + + case 12: + return (insn & ~ 0x1ffd) | re_assemble_12 (value); + + + case 10: + return (insn & ~ 0x3ff1) | re_assemble_14 (value & -8); + + case -11: + return (insn & ~ 0x3ff9) | re_assemble_14 (value & -4); + + case 14: + return (insn & ~ 0x3fff) | re_assemble_14 (value); + + + case -10: + return (insn & ~ 0xfff1) | re_assemble_16 (value & -8); + + case -16: + return (insn & ~ 0xfff9) | re_assemble_16 (value & -4); + + case 16: + return (insn & ~ 0xffff) | re_assemble_16 (value); + + + case 17: + return (insn & ~ 0x1f1ffd) | re_assemble_17 (value); + + case 21: + return (insn & ~ 0x1fffff) | re_assemble_21 (value); + + case 22: + return (insn & ~ 0x3ff1ffd) | re_assemble_22 (value); + + case 32: + return value; + + default: + abort (); + } + return insn; +} + +#endif /* _LIBHPPA_H */ +/* Table of opcodes for the PA-RISC. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, + 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + Contributed by the Center for Software Science at the + University of Utah (pa-gdb-bugs@cs.utah.edu). + +This file is part of GAS, the GNU Assembler, and GDB, the GNU disassembler. + +GAS/GDB is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 1, or (at your option) +any later version. + +GAS/GDB is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GAS or GDB; see the file COPYING. +If not, see . */ + +#if !defined(__STDC__) && !defined(const) +#define const +#endif + +/* + * Structure of an opcode table entry. + */ + +/* There are two kinds of delay slot nullification: normal which is + * controled by the nullification bit, and conditional, which depends + * on the direction of the branch and its success or failure. + * + * NONE is unfortunately #defined in the hiux system include files. + * #undef it away. + */ +#undef NONE +struct pa_opcode +{ + const char *name; + unsigned long int match; /* Bits that must be set... */ + unsigned long int mask; /* ... in these bits. */ + char *args; + enum pa_arch arch; + char flags; +}; + +/* Enables strict matching. Opcodes with match errors are skipped + when this bit is set. */ +#define FLAG_STRICT 0x1 + +/* + All hppa opcodes are 32 bits. + + The match component is a mask saying which bits must match a + particular opcode in order for an instruction to be an instance + of that opcode. + + The args component is a string containing one character for each operand of + the instruction. Characters used as a prefix allow any second character to + be used without conflicting with the main operand characters. + + Bit positions in this description follow HP usage of lsb = 31, + "at" is lsb of field. + + In the args field, the following characters must match exactly: + + '+,() ' + + In the args field, the following characters are unused: + + ' " - / 34 6789:; ' + '@ C M [\] ' + '` e g } ' + + Here are all the characters: + + ' !"#$%&'()*+-,./0123456789:;<=>?' + '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_' + '`abcdefghijklmnopqrstuvwxyz{|}~ ' + +Kinds of operands: + x integer register field at 15. + b integer register field at 10. + t integer register field at 31. + a integer register field at 10 and 15 (for PERMH) + 5 5 bit immediate at 15. + s 2 bit space specifier at 17. + S 3 bit space specifier at 18. + V 5 bit immediate value at 31 + i 11 bit immediate value at 31 + j 14 bit immediate value at 31 + k 21 bit immediate value at 31 + l 16 bit immediate value at 31 (wide mode only, unusual encoding). + n nullification for branch instructions + N nullification for spop and copr instructions + w 12 bit branch displacement + W 17 bit branch displacement (PC relative) + X 22 bit branch displacement (PC relative) + z 17 bit branch displacement (just a number, not an address) + +Also these: + + . 2 bit shift amount at 25 + * 4 bit shift amount at 25 + p 5 bit shift count at 26 (to support the SHD instruction) encoded as + 31-p + ~ 6 bit shift count at 20,22:26 encoded as 63-~. + P 5 bit bit position at 26 + q 6 bit bit position at 20,22:26 + T 5 bit field length at 31 (encoded as 32-T) + % 6 bit field length at 23,27:31 (variable extract/deposit) + | 6 bit field length at 19,27:31 (fixed extract/deposit) + A 13 bit immediate at 18 (to support the BREAK instruction) + ^ like b, but describes a control register + ! sar (cr11) register + D 26 bit immediate at 31 (to support the DIAG instruction) + $ 9 bit immediate at 28 (to support POPBTS) + + v 3 bit Special Function Unit identifier at 25 + O 20 bit Special Function Unit operation split between 15 bits at 20 + and 5 bits at 31 + o 15 bit Special Function Unit operation at 20 + 2 22 bit Special Function Unit operation split between 17 bits at 20 + and 5 bits at 31 + 1 15 bit Special Function Unit operation split between 10 bits at 20 + and 5 bits at 31 + 0 10 bit Special Function Unit operation split between 5 bits at 20 + and 5 bits at 31 + u 3 bit coprocessor unit identifier at 25 + F Source Floating Point Operand Format Completer encoded 2 bits at 20 + I Source Floating Point Operand Format Completer encoded 1 bits at 20 + (for 0xe format FP instructions) + G Destination Floating Point Operand Format Completer encoded 2 bits at 18 + H Floating Point Operand Format at 26 for 'fmpyadd' and 'fmpysub' + (very similar to 'F') + + r 5 bit immediate value at 31 (for the break instruction) + (very similar to V above, except the value is unsigned instead of + low_sign_ext) + R 5 bit immediate value at 15 (for the ssm, rsm, probei instructions) + (same as r above, except the value is in a different location) + U 10 bit immediate value at 15 (for SSM, RSM on pa2.0) + Q 5 bit immediate value at 10 (a bit position specified in + the bb instruction. It's the same as r above, except the + value is in a different location) + B 5 bit immediate value at 10 (a bit position specified in + the bb instruction. Similar to Q, but 64 bit handling is + different. + Z %r1 -- implicit target of addil instruction. + L ,%r2 completer for new syntax branch + { Source format completer for fcnv + _ Destination format completer for fcnv + h cbit for fcmp + = gfx tests for ftest + d 14 bit offset for single precision FP long load/store. + # 14 bit offset for double precision FP load long/store. + J Yet another 14 bit offset for load/store with ma,mb completers. + K Yet another 14 bit offset for load/store with ma,mb completers. + y 16 bit offset for word aligned load/store (PA2.0 wide). + & 16 bit offset for dword aligned load/store (PA2.0 wide). + < 16 bit offset for load/store with ma,mb completers (PA2.0 wide). + > 16 bit offset for load/store with ma,mb completers (PA2.0 wide). + Y %sr0,%r31 -- implicit target of be,l instruction. + @ implicit immediate value of 0 + +Completer operands all have 'c' as the prefix: + + cx indexed load and store completer. + cX indexed load and store completer. Like cx, but emits a space + after in disassembler. + cm short load and store completer. + cM short load and store completer. Like cm, but emits a space + after in disassembler. + cq long load and store completer (like cm, but inserted into a + different location in the target instruction). + cs store bytes short completer. + cA store bytes short completer. Like cs, but emits a space + after in disassembler. + ce long load/store completer for LDW/STW with a different encoding + than the others + cc load cache control hint + cd load and clear cache control hint + cC store cache control hint + co ordered access + + cp branch link and push completer + cP branch pop completer + cl branch link completer + cg branch gate completer + + cw read/write completer for PROBE + cW wide completer for MFCTL + cL local processor completer for cache control + cZ System Control Completer (to support LPA, LHA, etc.) + + ci correction completer for DCOR + ca add completer + cy 32 bit add carry completer + cY 64 bit add carry completer + cv signed overflow trap completer + ct trap on condition completer for ADDI, SUB + cT trap on condition completer for UADDCM + cb 32 bit borrow completer for SUB + cB 64 bit borrow completer for SUB + + ch left/right half completer + cH signed/unsigned saturation completer + cS signed/unsigned completer at 21 + cz zero/sign extension completer. + c* permutation completer + +Condition operands all have '?' as the prefix: + + ?f Floating point compare conditions (encoded as 5 bits at 31) + + ?a add conditions + ?A 64 bit add conditions + ?@ add branch conditions followed by nullify + ?d non-negated add branch conditions + ?D negated add branch conditions + ?w wide mode non-negated add branch conditions + ?W wide mode negated add branch conditions + + ?s compare/subtract conditions + ?S 64 bit compare/subtract conditions + ?t non-negated compare and branch conditions + ?n 32 bit compare and branch conditions followed by nullify + ?N 64 bit compare and branch conditions followed by nullify + ?Q 64 bit compare and branch conditions for CMPIB instruction + + ?l logical conditions + ?L 64 bit logical conditions + + ?b branch on bit conditions + ?B 64 bit branch on bit conditions + + ?x shift/extract/deposit conditions + ?X 64 bit shift/extract/deposit conditions + ?y shift/extract/deposit conditions followed by nullify for conditional + branches + + ?u unit conditions + ?U 64 bit unit conditions + +Floating point registers all have 'f' as a prefix: + + ft target register at 31 + fT target register with L/R halves at 31 + fa operand 1 register at 10 + fA operand 1 register with L/R halves at 10 + fX Same as fA, except prints a space before register during disasm + fb operand 2 register at 15 + fB operand 2 register with L/R halves at 15 + fC operand 3 register with L/R halves at 16:18,21:23 + fe Like fT, but encoding is different. + fE Same as fe, except prints a space before register during disasm. + fx target register at 15 (only for PA 2.0 long format FLDD/FSTD). + +Float registers for fmpyadd and fmpysub: + + fi mult operand 1 register at 10 + fj mult operand 2 register at 15 + fk mult target register at 20 + fl add/sub operand register at 25 + fm add/sub target register at 31 + +*/ + + +#if 0 +/* List of characters not to put a space after. Note that + "," is included, as the "spopN" operations use literal + commas in their completer sections. */ +static const char *const completer_chars = ",CcY<>?!@+&U~FfGHINnOoZMadu|/=0123%e$m}"; +#endif + +/* The order of the opcodes in this table is significant: + + * The assembler requires that all instances of the same mnemonic be + consecutive. If they aren't, the assembler will bomb at runtime. + + * Immediate fields use pa_get_absolute_expression to parse the + string. It will generate a "bad expression" error if passed + a register name. Thus, register index variants of an opcode + need to precede immediate variants. + + * The disassembler does not care about the order of the opcodes + except in cases where implicit addressing is used. + + Here are the rules for ordering the opcodes of a mnemonic: + + 1) Opcodes with FLAG_STRICT should precede opcodes without + FLAG_STRICT. + + 2) Opcodes with FLAG_STRICT should be ordered as follows: + register index opcodes, short immediate opcodes, and finally + long immediate opcodes. When both pa10 and pa11 variants + of the same opcode are available, the pa10 opcode should + come first for correct architectural promotion. + + 3) When implicit addressing is available for an opcode, the + implicit opcode should precede the explicit opcode. + + 4) Opcodes without FLAG_STRICT should be ordered as follows: + register index opcodes, long immediate opcodes, and finally + short immediate opcodes. */ + +static const struct pa_opcode pa_opcodes[] = +{ + +/* Pseudo-instructions. */ + +{ "ldi", 0x34000000, 0xffe00000, "l,x", pa20w, 0},/* ldo val(r0),r */ +{ "ldi", 0x34000000, 0xffe0c000, "j,x", pa10, 0},/* ldo val(r0),r */ + +{ "cmpib", 0xec000000, 0xfc000000, "?Qn5,b,w", pa20, FLAG_STRICT}, +{ "cmpib", 0x84000000, 0xf4000000, "?nn5,b,w", pa10, FLAG_STRICT}, +{ "comib", 0x84000000, 0xfc000000, "?nn5,b,w", pa10, 0}, /* comib{tf}*/ +/* This entry is for the disassembler only. It will never be used by + assembler. */ +{ "comib", 0x8c000000, 0xfc000000, "?nn5,b,w", pa10, 0}, /* comib{tf}*/ +{ "cmpb", 0x9c000000, 0xdc000000, "?Nnx,b,w", pa20, FLAG_STRICT}, +{ "cmpb", 0x80000000, 0xf4000000, "?nnx,b,w", pa10, FLAG_STRICT}, +{ "comb", 0x80000000, 0xfc000000, "?nnx,b,w", pa10, 0}, /* comb{tf} */ +/* This entry is for the disassembler only. It will never be used by + assembler. */ +{ "comb", 0x88000000, 0xfc000000, "?nnx,b,w", pa10, 0}, /* comb{tf} */ +{ "addb", 0xa0000000, 0xf4000000, "?Wnx,b,w", pa20w, FLAG_STRICT}, +{ "addb", 0xa0000000, 0xfc000000, "?@nx,b,w", pa10, 0}, /* addb{tf} */ +/* This entry is for the disassembler only. It will never be used by + assembler. */ +{ "addb", 0xa8000000, 0xfc000000, "?@nx,b,w", pa10, 0}, +{ "addib", 0xa4000000, 0xf4000000, "?Wn5,b,w", pa20w, FLAG_STRICT}, +{ "addib", 0xa4000000, 0xfc000000, "?@n5,b,w", pa10, 0}, /* addib{tf}*/ +/* This entry is for the disassembler only. It will never be used by + assembler. */ +{ "addib", 0xac000000, 0xfc000000, "?@n5,b,w", pa10, 0}, /* addib{tf}*/ +{ "nop", 0x08000240, 0xffffffff, "", pa10, 0}, /* or 0,0,0 */ +{ "copy", 0x08000240, 0xffe0ffe0, "x,t", pa10, 0}, /* or r,0,t */ +{ "mtsar", 0x01601840, 0xffe0ffff, "x", pa10, 0}, /* mtctl r,cr11 */ + +/* Loads and Stores for integer registers. */ + +{ "ldd", 0x0c0000c0, 0xfc00d3c0, "cxccx(b),t", pa20, FLAG_STRICT}, +{ "ldd", 0x0c0000c0, 0xfc0013c0, "cxccx(s,b),t", pa20, FLAG_STRICT}, +{ "ldd", 0x0c0010e0, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT}, +{ "ldd", 0x0c0010e0, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT}, +{ "ldd", 0x0c0010c0, 0xfc00d3c0, "cmcc5(b),t", pa20, FLAG_STRICT}, +{ "ldd", 0x0c0010c0, 0xfc0013c0, "cmcc5(s,b),t", pa20, FLAG_STRICT}, +{ "ldd", 0x50000000, 0xfc000002, "cq&(b),x", pa20w, FLAG_STRICT}, +{ "ldd", 0x50000000, 0xfc00c002, "cq#(b),x", pa20, FLAG_STRICT}, +{ "ldd", 0x50000000, 0xfc000002, "cq#(s,b),x", pa20, FLAG_STRICT}, +{ "ldw", 0x0c000080, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldw", 0x0c000080, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldw", 0x0c000080, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldw", 0x0c000080, 0xfc0013c0, "cxccx(s,b),t", pa11, FLAG_STRICT}, +{ "ldw", 0x0c0010a0, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT}, +{ "ldw", 0x0c0010a0, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT}, +{ "ldw", 0x0c001080, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldw", 0x0c001080, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldw", 0x0c001080, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldw", 0x0c001080, 0xfc0013c0, "cmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "ldw", 0x4c000000, 0xfc000000, "ce<(b),x", pa20w, FLAG_STRICT}, +{ "ldw", 0x5c000004, 0xfc000006, "ce>(b),x", pa20w, FLAG_STRICT}, +{ "ldw", 0x48000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT}, +{ "ldw", 0x5c000004, 0xfc00c006, "ceK(b),x", pa20, FLAG_STRICT}, +{ "ldw", 0x5c000004, 0xfc000006, "ceK(s,b),x", pa20, FLAG_STRICT}, +{ "ldw", 0x4c000000, 0xfc00c000, "ceJ(b),x", pa10, FLAG_STRICT}, +{ "ldw", 0x4c000000, 0xfc000000, "ceJ(s,b),x", pa10, FLAG_STRICT}, +{ "ldw", 0x48000000, 0xfc00c000, "j(b),x", pa10, 0}, +{ "ldw", 0x48000000, 0xfc000000, "j(s,b),x", pa10, 0}, +{ "ldh", 0x0c000040, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldh", 0x0c000040, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldh", 0x0c000040, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldh", 0x0c000040, 0xfc0013c0, "cxccx(s,b),t", pa11, FLAG_STRICT}, +{ "ldh", 0x0c001060, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT}, +{ "ldh", 0x0c001060, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT}, +{ "ldh", 0x0c001040, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldh", 0x0c001040, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldh", 0x0c001040, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldh", 0x0c001040, 0xfc0013c0, "cmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "ldh", 0x44000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT}, +{ "ldh", 0x44000000, 0xfc00c000, "j(b),x", pa10, 0}, +{ "ldh", 0x44000000, 0xfc000000, "j(s,b),x", pa10, 0}, +{ "ldb", 0x0c000000, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldb", 0x0c000000, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldb", 0x0c000000, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldb", 0x0c000000, 0xfc0013c0, "cxccx(s,b),t", pa11, FLAG_STRICT}, +{ "ldb", 0x0c001020, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT}, +{ "ldb", 0x0c001020, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT}, +{ "ldb", 0x0c001000, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldb", 0x0c001000, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldb", 0x0c001000, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldb", 0x0c001000, 0xfc0013c0, "cmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "ldb", 0x40000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT}, +{ "ldb", 0x40000000, 0xfc00c000, "j(b),x", pa10, 0}, +{ "ldb", 0x40000000, 0xfc000000, "j(s,b),x", pa10, 0}, +{ "std", 0x0c0012e0, 0xfc00f3ff, "cocCx,@(b)", pa20, FLAG_STRICT}, +{ "std", 0x0c0012e0, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT}, +{ "std", 0x0c0012c0, 0xfc00d3c0, "cmcCx,V(b)", pa20, FLAG_STRICT}, +{ "std", 0x0c0012c0, 0xfc0013c0, "cmcCx,V(s,b)", pa20, FLAG_STRICT}, +{ "std", 0x70000000, 0xfc000002, "cqx,&(b)", pa20w, FLAG_STRICT}, +{ "std", 0x70000000, 0xfc00c002, "cqx,#(b)", pa20, FLAG_STRICT}, +{ "std", 0x70000000, 0xfc000002, "cqx,#(s,b)", pa20, FLAG_STRICT}, +{ "stw", 0x0c0012a0, 0xfc00f3ff, "cocCx,@(b)", pa20, FLAG_STRICT}, +{ "stw", 0x0c0012a0, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT}, +{ "stw", 0x0c001280, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "stw", 0x0c001280, 0xfc001fc0, "cMx,V(s,b)", pa10, FLAG_STRICT}, +{ "stw", 0x0c001280, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "stw", 0x0c001280, 0xfc0013c0, "cmcCx,V(s,b)", pa11, FLAG_STRICT}, +{ "stw", 0x6c000000, 0xfc000000, "cex,<(b)", pa20w, FLAG_STRICT}, +{ "stw", 0x7c000004, 0xfc000006, "cex,>(b)", pa20w, FLAG_STRICT}, +{ "stw", 0x68000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT}, +{ "stw", 0x7c000004, 0xfc00c006, "cex,K(b)", pa20, FLAG_STRICT}, +{ "stw", 0x7c000004, 0xfc000006, "cex,K(s,b)", pa20, FLAG_STRICT}, +{ "stw", 0x6c000000, 0xfc00c000, "cex,J(b)", pa10, FLAG_STRICT}, +{ "stw", 0x6c000000, 0xfc000000, "cex,J(s,b)", pa10, FLAG_STRICT}, +{ "stw", 0x68000000, 0xfc00c000, "x,j(b)", pa10, 0}, +{ "stw", 0x68000000, 0xfc000000, "x,j(s,b)", pa10, 0}, +{ "sth", 0x0c001260, 0xfc00f3ff, "cocCx,@(b)", pa20, FLAG_STRICT}, +{ "sth", 0x0c001260, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT}, +{ "sth", 0x0c001240, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "sth", 0x0c001240, 0xfc001fc0, "cMx,V(s,b)", pa10, FLAG_STRICT}, +{ "sth", 0x0c001240, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "sth", 0x0c001240, 0xfc0013c0, "cmcCx,V(s,b)", pa11, FLAG_STRICT}, +{ "sth", 0x64000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT}, +{ "sth", 0x64000000, 0xfc00c000, "x,j(b)", pa10, 0}, +{ "sth", 0x64000000, 0xfc000000, "x,j(s,b)", pa10, 0}, +{ "stb", 0x0c001220, 0xfc00f3ff, "cocCx,@(b)", pa20, FLAG_STRICT}, +{ "stb", 0x0c001220, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT}, +{ "stb", 0x0c001200, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "stb", 0x0c001200, 0xfc001fc0, "cMx,V(s,b)", pa10, FLAG_STRICT}, +{ "stb", 0x0c001200, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "stb", 0x0c001200, 0xfc0013c0, "cmcCx,V(s,b)", pa11, FLAG_STRICT}, +{ "stb", 0x60000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT}, +{ "stb", 0x60000000, 0xfc00c000, "x,j(b)", pa10, 0}, +{ "stb", 0x60000000, 0xfc000000, "x,j(s,b)", pa10, 0}, +{ "ldwm", 0x4c000000, 0xfc00c000, "j(b),x", pa10, 0}, +{ "ldwm", 0x4c000000, 0xfc000000, "j(s,b),x", pa10, 0}, +{ "stwm", 0x6c000000, 0xfc00c000, "x,j(b)", pa10, 0}, +{ "stwm", 0x6c000000, 0xfc000000, "x,j(s,b)", pa10, 0}, +{ "ldwx", 0x0c000080, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldwx", 0x0c000080, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldwx", 0x0c000080, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldwx", 0x0c000080, 0xfc0013c0, "cxccx(s,b),t", pa11, FLAG_STRICT}, +{ "ldwx", 0x0c000080, 0xfc00dfc0, "cXx(b),t", pa10, 0}, +{ "ldwx", 0x0c000080, 0xfc001fc0, "cXx(s,b),t", pa10, 0}, +{ "ldhx", 0x0c000040, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldhx", 0x0c000040, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldhx", 0x0c000040, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldhx", 0x0c000040, 0xfc0013c0, "cxccx(s,b),t", pa11, FLAG_STRICT}, +{ "ldhx", 0x0c000040, 0xfc00dfc0, "cXx(b),t", pa10, 0}, +{ "ldhx", 0x0c000040, 0xfc001fc0, "cXx(s,b),t", pa10, 0}, +{ "ldbx", 0x0c000000, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldbx", 0x0c000000, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldbx", 0x0c000000, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldbx", 0x0c000000, 0xfc0013c0, "cxccx(s,b),t", pa11, FLAG_STRICT}, +{ "ldbx", 0x0c000000, 0xfc00dfc0, "cXx(b),t", pa10, 0}, +{ "ldbx", 0x0c000000, 0xfc001fc0, "cXx(s,b),t", pa10, 0}, +{ "ldwa", 0x0c000180, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldwa", 0x0c000180, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldwa", 0x0c0011a0, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT}, +{ "ldwa", 0x0c001180, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldwa", 0x0c001180, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldcw", 0x0c0001c0, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldcw", 0x0c0001c0, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldcw", 0x0c0001c0, 0xfc00d3c0, "cxcdx(b),t", pa11, FLAG_STRICT}, +{ "ldcw", 0x0c0001c0, 0xfc0013c0, "cxcdx(s,b),t", pa11, FLAG_STRICT}, +{ "ldcw", 0x0c0011c0, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldcw", 0x0c0011c0, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldcw", 0x0c0011c0, 0xfc00d3c0, "cmcd5(b),t", pa11, FLAG_STRICT}, +{ "ldcw", 0x0c0011c0, 0xfc0013c0, "cmcd5(s,b),t", pa11, FLAG_STRICT}, +{ "stwa", 0x0c0013a0, 0xfc00d3ff, "cocCx,@(b)", pa20, FLAG_STRICT}, +{ "stwa", 0x0c001380, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "stwa", 0x0c001380, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "stby", 0x0c001300, 0xfc00dfc0, "cAx,V(b)", pa10, FLAG_STRICT}, +{ "stby", 0x0c001300, 0xfc001fc0, "cAx,V(s,b)", pa10, FLAG_STRICT}, +{ "stby", 0x0c001300, 0xfc00d3c0, "cscCx,V(b)", pa11, FLAG_STRICT}, +{ "stby", 0x0c001300, 0xfc0013c0, "cscCx,V(s,b)", pa11, FLAG_STRICT}, +{ "ldda", 0x0c000100, 0xfc00d3c0, "cxccx(b),t", pa20, FLAG_STRICT}, +{ "ldda", 0x0c001120, 0xfc1ff3e0, "cocc@(b),t", pa20, FLAG_STRICT}, +{ "ldda", 0x0c001100, 0xfc00d3c0, "cmcc5(b),t", pa20, FLAG_STRICT}, +{ "ldcd", 0x0c000140, 0xfc00d3c0, "cxcdx(b),t", pa20, FLAG_STRICT}, +{ "ldcd", 0x0c000140, 0xfc0013c0, "cxcdx(s,b),t", pa20, FLAG_STRICT}, +{ "ldcd", 0x0c001140, 0xfc00d3c0, "cmcd5(b),t", pa20, FLAG_STRICT}, +{ "ldcd", 0x0c001140, 0xfc0013c0, "cmcd5(s,b),t", pa20, FLAG_STRICT}, +{ "stda", 0x0c0013e0, 0xfc00f3ff, "cocCx,@(b)", pa20, FLAG_STRICT}, +{ "stda", 0x0c0013c0, 0xfc00d3c0, "cmcCx,V(b)", pa20, FLAG_STRICT}, +{ "ldwax", 0x0c000180, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldwax", 0x0c000180, 0xfc00d3c0, "cxccx(b),t", pa11, FLAG_STRICT}, +{ "ldwax", 0x0c000180, 0xfc00dfc0, "cXx(b),t", pa10, 0}, +{ "ldcwx", 0x0c0001c0, 0xfc00dfc0, "cXx(b),t", pa10, FLAG_STRICT}, +{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cXx(s,b),t", pa10, FLAG_STRICT}, +{ "ldcwx", 0x0c0001c0, 0xfc00d3c0, "cxcdx(b),t", pa11, FLAG_STRICT}, +{ "ldcwx", 0x0c0001c0, 0xfc0013c0, "cxcdx(s,b),t", pa11, FLAG_STRICT}, +{ "ldcwx", 0x0c0001c0, 0xfc00dfc0, "cXx(b),t", pa10, 0}, +{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cXx(s,b),t", pa10, 0}, +{ "ldws", 0x0c001080, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldws", 0x0c001080, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldws", 0x0c001080, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldws", 0x0c001080, 0xfc0013c0, "cmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "ldws", 0x0c001080, 0xfc00dfc0, "cM5(b),t", pa10, 0}, +{ "ldws", 0x0c001080, 0xfc001fc0, "cM5(s,b),t", pa10, 0}, +{ "ldhs", 0x0c001040, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldhs", 0x0c001040, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldhs", 0x0c001040, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldhs", 0x0c001040, 0xfc0013c0, "cmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "ldhs", 0x0c001040, 0xfc00dfc0, "cM5(b),t", pa10, 0}, +{ "ldhs", 0x0c001040, 0xfc001fc0, "cM5(s,b),t", pa10, 0}, +{ "ldbs", 0x0c001000, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldbs", 0x0c001000, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldbs", 0x0c001000, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldbs", 0x0c001000, 0xfc0013c0, "cmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "ldbs", 0x0c001000, 0xfc00dfc0, "cM5(b),t", pa10, 0}, +{ "ldbs", 0x0c001000, 0xfc001fc0, "cM5(s,b),t", pa10, 0}, +{ "ldwas", 0x0c001180, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldwas", 0x0c001180, 0xfc00d3c0, "cmcc5(b),t", pa11, FLAG_STRICT}, +{ "ldwas", 0x0c001180, 0xfc00dfc0, "cM5(b),t", pa10, 0}, +{ "ldcws", 0x0c0011c0, 0xfc00dfc0, "cM5(b),t", pa10, FLAG_STRICT}, +{ "ldcws", 0x0c0011c0, 0xfc001fc0, "cM5(s,b),t", pa10, FLAG_STRICT}, +{ "ldcws", 0x0c0011c0, 0xfc00d3c0, "cmcd5(b),t", pa11, FLAG_STRICT}, +{ "ldcws", 0x0c0011c0, 0xfc0013c0, "cmcd5(s,b),t", pa11, FLAG_STRICT}, +{ "ldcws", 0x0c0011c0, 0xfc00dfc0, "cM5(b),t", pa10, 0}, +{ "ldcws", 0x0c0011c0, 0xfc001fc0, "cM5(s,b),t", pa10, 0}, +{ "stws", 0x0c001280, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "stws", 0x0c001280, 0xfc001fc0, "cMx,V(s,b)", pa10, FLAG_STRICT}, +{ "stws", 0x0c001280, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "stws", 0x0c001280, 0xfc0013c0, "cmcCx,V(s,b)", pa11, FLAG_STRICT}, +{ "stws", 0x0c001280, 0xfc00dfc0, "cMx,V(b)", pa10, 0}, +{ "stws", 0x0c001280, 0xfc001fc0, "cMx,V(s,b)", pa10, 0}, +{ "sths", 0x0c001240, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "sths", 0x0c001240, 0xfc001fc0, "cMx,V(s,b)", pa10, FLAG_STRICT}, +{ "sths", 0x0c001240, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "sths", 0x0c001240, 0xfc0013c0, "cmcCx,V(s,b)", pa11, FLAG_STRICT}, +{ "sths", 0x0c001240, 0xfc00dfc0, "cMx,V(b)", pa10, 0}, +{ "sths", 0x0c001240, 0xfc001fc0, "cMx,V(s,b)", pa10, 0}, +{ "stbs", 0x0c001200, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "stbs", 0x0c001200, 0xfc001fc0, "cMx,V(s,b)", pa10, FLAG_STRICT}, +{ "stbs", 0x0c001200, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "stbs", 0x0c001200, 0xfc0013c0, "cmcCx,V(s,b)", pa11, FLAG_STRICT}, +{ "stbs", 0x0c001200, 0xfc00dfc0, "cMx,V(b)", pa10, 0}, +{ "stbs", 0x0c001200, 0xfc001fc0, "cMx,V(s,b)", pa10, 0}, +{ "stwas", 0x0c001380, 0xfc00dfc0, "cMx,V(b)", pa10, FLAG_STRICT}, +{ "stwas", 0x0c001380, 0xfc00d3c0, "cmcCx,V(b)", pa11, FLAG_STRICT}, +{ "stwas", 0x0c001380, 0xfc00dfc0, "cMx,V(b)", pa10, 0}, +{ "stdby", 0x0c001340, 0xfc00d3c0, "cscCx,V(b)", pa20, FLAG_STRICT}, +{ "stdby", 0x0c001340, 0xfc0013c0, "cscCx,V(s,b)", pa20, FLAG_STRICT}, +{ "stbys", 0x0c001300, 0xfc00dfc0, "cAx,V(b)", pa10, FLAG_STRICT}, +{ "stbys", 0x0c001300, 0xfc001fc0, "cAx,V(s,b)", pa10, FLAG_STRICT}, +{ "stbys", 0x0c001300, 0xfc00d3c0, "cscCx,V(b)", pa11, FLAG_STRICT}, +{ "stbys", 0x0c001300, 0xfc0013c0, "cscCx,V(s,b)", pa11, FLAG_STRICT}, +{ "stbys", 0x0c001300, 0xfc00dfc0, "cAx,V(b)", pa10, 0}, +{ "stbys", 0x0c001300, 0xfc001fc0, "cAx,V(s,b)", pa10, 0}, + +/* Immediate instructions. */ +{ "ldo", 0x34000000, 0xfc000000, "l(b),x", pa20w, 0}, +{ "ldo", 0x34000000, 0xfc00c000, "j(b),x", pa10, 0}, +{ "ldil", 0x20000000, 0xfc000000, "k,b", pa10, 0}, +{ "addil", 0x28000000, 0xfc000000, "k,b,Z", pa10, 0}, +{ "addil", 0x28000000, 0xfc000000, "k,b", pa10, 0}, + +/* Branching instructions. */ +{ "b", 0xe8008000, 0xfc00e000, "cpnXL", pa20, FLAG_STRICT}, +{ "b", 0xe800a000, 0xfc00e000, "clnXL", pa20, FLAG_STRICT}, +{ "b", 0xe8000000, 0xfc00e000, "clnW,b", pa10, FLAG_STRICT}, +{ "b", 0xe8002000, 0xfc00e000, "cgnW,b", pa10, FLAG_STRICT}, +{ "b", 0xe8000000, 0xffe0e000, "nW", pa10, 0}, /* b,l foo,r0 */ +{ "bl", 0xe8000000, 0xfc00e000, "nW,b", pa10, 0}, +{ "gate", 0xe8002000, 0xfc00e000, "nW,b", pa10, 0}, +{ "blr", 0xe8004000, 0xfc00e001, "nx,b", pa10, 0}, +{ "bv", 0xe800c000, 0xfc00fffd, "nx(b)", pa10, 0}, +{ "bv", 0xe800c000, 0xfc00fffd, "n(b)", pa10, 0}, +{ "bve", 0xe800f001, 0xfc1ffffd, "cpn(b)L", pa20, FLAG_STRICT}, +{ "bve", 0xe800f000, 0xfc1ffffd, "cln(b)L", pa20, FLAG_STRICT}, +{ "bve", 0xe800d001, 0xfc1ffffd, "cPn(b)", pa20, FLAG_STRICT}, +{ "bve", 0xe800d000, 0xfc1ffffd, "n(b)", pa20, FLAG_STRICT}, +{ "be", 0xe4000000, 0xfc000000, "clnz(S,b),Y", pa10, FLAG_STRICT}, +{ "be", 0xe4000000, 0xfc000000, "clnz(b),Y", pa10, FLAG_STRICT}, +{ "be", 0xe0000000, 0xfc000000, "nz(S,b)", pa10, 0}, +{ "be", 0xe0000000, 0xfc000000, "nz(b)", pa10, 0}, +{ "ble", 0xe4000000, 0xfc000000, "nz(S,b)", pa10, 0}, +{ "movb", 0xc8000000, 0xfc000000, "?ynx,b,w", pa10, 0}, +{ "movib", 0xcc000000, 0xfc000000, "?yn5,b,w", pa10, 0}, +{ "combt", 0x80000000, 0xfc000000, "?tnx,b,w", pa10, 0}, +{ "combf", 0x88000000, 0xfc000000, "?tnx,b,w", pa10, 0}, +{ "comibt", 0x84000000, 0xfc000000, "?tn5,b,w", pa10, 0}, +{ "comibf", 0x8c000000, 0xfc000000, "?tn5,b,w", pa10, 0}, +{ "addbt", 0xa0000000, 0xfc000000, "?dnx,b,w", pa10, 0}, +{ "addbf", 0xa8000000, 0xfc000000, "?dnx,b,w", pa10, 0}, +{ "addibt", 0xa4000000, 0xfc000000, "?dn5,b,w", pa10, 0}, +{ "addibf", 0xac000000, 0xfc000000, "?dn5,b,w", pa10, 0}, +{ "bb", 0xc0004000, 0xffe06000, "?bnx,!,w", pa10, FLAG_STRICT}, +{ "bb", 0xc0006000, 0xffe06000, "?Bnx,!,w", pa20, FLAG_STRICT}, +{ "bb", 0xc4004000, 0xfc006000, "?bnx,Q,w", pa10, FLAG_STRICT}, +{ "bb", 0xc4004000, 0xfc004000, "?Bnx,B,w", pa20, FLAG_STRICT}, +{ "bvb", 0xc0004000, 0xffe04000, "?bnx,w", pa10, 0}, +{ "clrbts", 0xe8004005, 0xffffffff, "", pa20, FLAG_STRICT}, +{ "popbts", 0xe8004005, 0xfffff007, "$", pa20, FLAG_STRICT}, +{ "pushnom", 0xe8004001, 0xffffffff, "", pa20, FLAG_STRICT}, +{ "pushbts", 0xe8004001, 0xffe0ffff, "x", pa20, FLAG_STRICT}, + +/* Computation Instructions. */ + +{ "cmpclr", 0x080008a0, 0xfc000fe0, "?Sx,b,t", pa20, FLAG_STRICT}, +{ "cmpclr", 0x08000880, 0xfc000fe0, "?sx,b,t", pa10, FLAG_STRICT}, +{ "comclr", 0x08000880, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "or", 0x08000260, 0xfc000fe0, "?Lx,b,t", pa20, FLAG_STRICT}, +{ "or", 0x08000240, 0xfc000fe0, "?lx,b,t", pa10, 0}, +{ "xor", 0x080002a0, 0xfc000fe0, "?Lx,b,t", pa20, FLAG_STRICT}, +{ "xor", 0x08000280, 0xfc000fe0, "?lx,b,t", pa10, 0}, +{ "and", 0x08000220, 0xfc000fe0, "?Lx,b,t", pa20, FLAG_STRICT}, +{ "and", 0x08000200, 0xfc000fe0, "?lx,b,t", pa10, 0}, +{ "andcm", 0x08000020, 0xfc000fe0, "?Lx,b,t", pa20, FLAG_STRICT}, +{ "andcm", 0x08000000, 0xfc000fe0, "?lx,b,t", pa10, 0}, +{ "uxor", 0x080003a0, 0xfc000fe0, "?Ux,b,t", pa20, FLAG_STRICT}, +{ "uxor", 0x08000380, 0xfc000fe0, "?ux,b,t", pa10, 0}, +{ "uaddcm", 0x080009a0, 0xfc000fa0, "cT?Ux,b,t", pa20, FLAG_STRICT}, +{ "uaddcm", 0x08000980, 0xfc000fa0, "cT?ux,b,t", pa10, FLAG_STRICT}, +{ "uaddcm", 0x08000980, 0xfc000fe0, "?ux,b,t", pa10, 0}, +{ "uaddcmt", 0x080009c0, 0xfc000fe0, "?ux,b,t", pa10, 0}, +{ "dcor", 0x08000ba0, 0xfc1f0fa0, "ci?Ub,t", pa20, FLAG_STRICT}, +{ "dcor", 0x08000b80, 0xfc1f0fa0, "ci?ub,t", pa10, FLAG_STRICT}, +{ "dcor", 0x08000b80, 0xfc1f0fe0, "?ub,t", pa10, 0}, +{ "idcor", 0x08000bc0, 0xfc1f0fe0, "?ub,t", pa10, 0}, +{ "addi", 0xb0000000, 0xfc000000, "ct?ai,b,x", pa10, FLAG_STRICT}, +{ "addi", 0xb4000000, 0xfc000000, "cv?ai,b,x", pa10, FLAG_STRICT}, +{ "addi", 0xb4000000, 0xfc000800, "?ai,b,x", pa10, 0}, +{ "addio", 0xb4000800, 0xfc000800, "?ai,b,x", pa10, 0}, +{ "addit", 0xb0000000, 0xfc000800, "?ai,b,x", pa10, 0}, +{ "addito", 0xb0000800, 0xfc000800, "?ai,b,x", pa10, 0}, +{ "add", 0x08000720, 0xfc0007e0, "cY?Ax,b,t", pa20, FLAG_STRICT}, +{ "add", 0x08000700, 0xfc0007e0, "cy?ax,b,t", pa10, FLAG_STRICT}, +{ "add", 0x08000220, 0xfc0003e0, "ca?Ax,b,t", pa20, FLAG_STRICT}, +{ "add", 0x08000200, 0xfc0003e0, "ca?ax,b,t", pa10, FLAG_STRICT}, +{ "add", 0x08000600, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "addl", 0x08000a00, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "addo", 0x08000e00, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "addc", 0x08000700, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "addco", 0x08000f00, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sub", 0x080004e0, 0xfc0007e0, "ct?Sx,b,t", pa20, FLAG_STRICT}, +{ "sub", 0x080004c0, 0xfc0007e0, "ct?sx,b,t", pa10, FLAG_STRICT}, +{ "sub", 0x08000520, 0xfc0007e0, "cB?Sx,b,t", pa20, FLAG_STRICT}, +{ "sub", 0x08000500, 0xfc0007e0, "cb?sx,b,t", pa10, FLAG_STRICT}, +{ "sub", 0x08000420, 0xfc0007e0, "cv?Sx,b,t", pa20, FLAG_STRICT}, +{ "sub", 0x08000400, 0xfc0007e0, "cv?sx,b,t", pa10, FLAG_STRICT}, +{ "sub", 0x08000400, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "subo", 0x08000c00, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "subb", 0x08000500, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "subbo", 0x08000d00, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "subt", 0x080004c0, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "subto", 0x08000cc0, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "ds", 0x08000440, 0xfc000fe0, "?sx,b,t", pa10, 0}, +{ "subi", 0x94000000, 0xfc000000, "cv?si,b,x", pa10, FLAG_STRICT}, +{ "subi", 0x94000000, 0xfc000800, "?si,b,x", pa10, 0}, +{ "subio", 0x94000800, 0xfc000800, "?si,b,x", pa10, 0}, +{ "cmpiclr", 0x90000800, 0xfc000800, "?Si,b,x", pa20, FLAG_STRICT}, +{ "cmpiclr", 0x90000000, 0xfc000800, "?si,b,x", pa10, FLAG_STRICT}, +{ "comiclr", 0x90000000, 0xfc000800, "?si,b,x", pa10, 0}, +{ "shladd", 0x08000220, 0xfc000320, "ca?Ax,.,b,t", pa20, FLAG_STRICT}, +{ "shladd", 0x08000200, 0xfc000320, "ca?ax,.,b,t", pa10, FLAG_STRICT}, +{ "sh1add", 0x08000640, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh1addl", 0x08000a40, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh1addo", 0x08000e40, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh2add", 0x08000680, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh2addl", 0x08000a80, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh2addo", 0x08000e80, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh3add", 0x080006c0, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh3addl", 0x08000ac0, 0xfc000fe0, "?ax,b,t", pa10, 0}, +{ "sh3addo", 0x08000ec0, 0xfc000fe0, "?ax,b,t", pa10, 0}, + +/* Subword Operation Instructions. */ + +{ "hadd", 0x08000300, 0xfc00ff20, "cHx,b,t", pa20, FLAG_STRICT}, +{ "havg", 0x080002c0, 0xfc00ffe0, "x,b,t", pa20, FLAG_STRICT}, +{ "hshl", 0xf8008800, 0xffe0fc20, "x,*,t", pa20, FLAG_STRICT}, +{ "hshladd", 0x08000700, 0xfc00ff20, "x,.,b,t", pa20, FLAG_STRICT}, +{ "hshr", 0xf800c800, 0xfc1ff820, "cSb,*,t", pa20, FLAG_STRICT}, +{ "hshradd", 0x08000500, 0xfc00ff20, "x,.,b,t", pa20, FLAG_STRICT}, +{ "hsub", 0x08000100, 0xfc00ff20, "cHx,b,t", pa20, FLAG_STRICT}, +{ "mixh", 0xf8008400, 0xfc009fe0, "chx,b,t", pa20, FLAG_STRICT}, +{ "mixw", 0xf8008000, 0xfc009fe0, "chx,b,t", pa20, FLAG_STRICT}, +{ "permh", 0xf8000000, 0xfc009020, "c*a,t", pa20, FLAG_STRICT}, + + +/* Extract and Deposit Instructions. */ + +{ "shrpd", 0xd0000200, 0xfc001fe0, "?Xx,b,!,t", pa20, FLAG_STRICT}, +{ "shrpd", 0xd0000400, 0xfc001400, "?Xx,b,~,t", pa20, FLAG_STRICT}, +{ "shrpw", 0xd0000000, 0xfc001fe0, "?xx,b,!,t", pa10, FLAG_STRICT}, +{ "shrpw", 0xd0000800, 0xfc001c00, "?xx,b,p,t", pa10, FLAG_STRICT}, +{ "vshd", 0xd0000000, 0xfc001fe0, "?xx,b,t", pa10, 0}, +{ "shd", 0xd0000800, 0xfc001c00, "?xx,b,p,t", pa10, 0}, +{ "extrd", 0xd0001200, 0xfc001ae0, "cS?Xb,!,%,x", pa20, FLAG_STRICT}, +{ "extrd", 0xd8000000, 0xfc000000, "cS?Xb,q,|,x", pa20, FLAG_STRICT}, +{ "extrw", 0xd0001000, 0xfc001be0, "cS?xb,!,T,x", pa10, FLAG_STRICT}, +{ "extrw", 0xd0001800, 0xfc001800, "cS?xb,P,T,x", pa10, FLAG_STRICT}, +{ "vextru", 0xd0001000, 0xfc001fe0, "?xb,T,x", pa10, 0}, +{ "vextrs", 0xd0001400, 0xfc001fe0, "?xb,T,x", pa10, 0}, +{ "extru", 0xd0001800, 0xfc001c00, "?xb,P,T,x", pa10, 0}, +{ "extrs", 0xd0001c00, 0xfc001c00, "?xb,P,T,x", pa10, 0}, +{ "depd", 0xd4000200, 0xfc001ae0, "cz?Xx,!,%,b", pa20, FLAG_STRICT}, +{ "depd", 0xf0000000, 0xfc000000, "cz?Xx,~,|,b", pa20, FLAG_STRICT}, +{ "depdi", 0xd4001200, 0xfc001ae0, "cz?X5,!,%,b", pa20, FLAG_STRICT}, +{ "depdi", 0xf4000000, 0xfc000000, "cz?X5,~,|,b", pa20, FLAG_STRICT}, +{ "depw", 0xd4000000, 0xfc001be0, "cz?xx,!,T,b", pa10, FLAG_STRICT}, +{ "depw", 0xd4000800, 0xfc001800, "cz?xx,p,T,b", pa10, FLAG_STRICT}, +{ "depwi", 0xd4001000, 0xfc001be0, "cz?x5,!,T,b", pa10, FLAG_STRICT}, +{ "depwi", 0xd4001800, 0xfc001800, "cz?x5,p,T,b", pa10, FLAG_STRICT}, +{ "zvdep", 0xd4000000, 0xfc001fe0, "?xx,T,b", pa10, 0}, +{ "vdep", 0xd4000400, 0xfc001fe0, "?xx,T,b", pa10, 0}, +{ "zdep", 0xd4000800, 0xfc001c00, "?xx,p,T,b", pa10, 0}, +{ "dep", 0xd4000c00, 0xfc001c00, "?xx,p,T,b", pa10, 0}, +{ "zvdepi", 0xd4001000, 0xfc001fe0, "?x5,T,b", pa10, 0}, +{ "vdepi", 0xd4001400, 0xfc001fe0, "?x5,T,b", pa10, 0}, +{ "zdepi", 0xd4001800, 0xfc001c00, "?x5,p,T,b", pa10, 0}, +{ "depi", 0xd4001c00, 0xfc001c00, "?x5,p,T,b", pa10, 0}, + +/* System Control Instructions. */ + +{ "break", 0x00000000, 0xfc001fe0, "r,A", pa10, 0}, +{ "rfi", 0x00000c00, 0xffffff1f, "cr", pa10, FLAG_STRICT}, +{ "rfi", 0x00000c00, 0xffffffff, "", pa10, 0}, +{ "rfir", 0x00000ca0, 0xffffffff, "", pa11, 0}, +{ "ssm", 0x00000d60, 0xfc00ffe0, "U,t", pa20, FLAG_STRICT}, +{ "ssm", 0x00000d60, 0xffe0ffe0, "R,t", pa10, 0}, +{ "rsm", 0x00000e60, 0xfc00ffe0, "U,t", pa20, FLAG_STRICT}, +{ "rsm", 0x00000e60, 0xffe0ffe0, "R,t", pa10, 0}, +{ "mtsm", 0x00001860, 0xffe0ffff, "x", pa10, 0}, +{ "ldsid", 0x000010a0, 0xfc1fffe0, "(b),t", pa10, 0}, +{ "ldsid", 0x000010a0, 0xfc1f3fe0, "(s,b),t", pa10, 0}, +{ "mtsp", 0x00001820, 0xffe01fff, "x,S", pa10, 0}, +{ "mtctl", 0x00001840, 0xfc00ffff, "x,^", pa10, 0}, +{ "mtsarcm", 0x016018C0, 0xffe0ffff, "x", pa20, FLAG_STRICT}, +{ "mfia", 0x000014A0, 0xffffffe0, "t", pa20, FLAG_STRICT}, +{ "mfsp", 0x000004a0, 0xffff1fe0, "S,t", pa10, 0}, +{ "mfctl", 0x016048a0, 0xffffffe0, "cW!,t", pa20, FLAG_STRICT}, +{ "mfctl", 0x000008a0, 0xfc1fffe0, "^,t", pa10, 0}, +{ "sync", 0x00000400, 0xffffffff, "", pa10, 0}, +{ "syncdma", 0x00100400, 0xffffffff, "", pa10, 0}, +{ "probe", 0x04001180, 0xfc00ffa0, "cw(b),x,t", pa10, FLAG_STRICT}, +{ "probe", 0x04001180, 0xfc003fa0, "cw(s,b),x,t", pa10, FLAG_STRICT}, +{ "probei", 0x04003180, 0xfc00ffa0, "cw(b),R,t", pa10, FLAG_STRICT}, +{ "probei", 0x04003180, 0xfc003fa0, "cw(s,b),R,t", pa10, FLAG_STRICT}, +{ "prober", 0x04001180, 0xfc00ffe0, "(b),x,t", pa10, 0}, +{ "prober", 0x04001180, 0xfc003fe0, "(s,b),x,t", pa10, 0}, +{ "proberi", 0x04003180, 0xfc00ffe0, "(b),R,t", pa10, 0}, +{ "proberi", 0x04003180, 0xfc003fe0, "(s,b),R,t", pa10, 0}, +{ "probew", 0x040011c0, 0xfc00ffe0, "(b),x,t", pa10, 0}, +{ "probew", 0x040011c0, 0xfc003fe0, "(s,b),x,t", pa10, 0}, +{ "probewi", 0x040031c0, 0xfc00ffe0, "(b),R,t", pa10, 0}, +{ "probewi", 0x040031c0, 0xfc003fe0, "(s,b),R,t", pa10, 0}, +{ "lpa", 0x04001340, 0xfc00ffc0, "cZx(b),t", pa10, 0}, +{ "lpa", 0x04001340, 0xfc003fc0, "cZx(s,b),t", pa10, 0}, +{ "lci", 0x04001300, 0xfc00ffe0, "x(b),t", pa11, 0}, +{ "lci", 0x04001300, 0xfc003fe0, "x(s,b),t", pa11, 0}, +{ "pdtlb", 0x04001600, 0xfc00ffdf, "cLcZx(b)", pa20, FLAG_STRICT}, +{ "pdtlb", 0x04001600, 0xfc003fdf, "cLcZx(s,b)", pa20, FLAG_STRICT}, +{ "pdtlb", 0x04001600, 0xfc1fffdf, "cLcZ@(b)", pa20, FLAG_STRICT}, +{ "pdtlb", 0x04001600, 0xfc1f3fdf, "cLcZ@(s,b)", pa20, FLAG_STRICT}, +{ "pdtlb", 0x04001200, 0xfc00ffdf, "cZx(b)", pa10, 0}, +{ "pdtlb", 0x04001200, 0xfc003fdf, "cZx(s,b)", pa10, 0}, +{ "pitlb", 0x04000600, 0xfc001fdf, "cLcZx(S,b)", pa20, FLAG_STRICT}, +{ "pitlb", 0x04000600, 0xfc1f1fdf, "cLcZ@(S,b)", pa20, FLAG_STRICT}, +{ "pitlb", 0x04000200, 0xfc001fdf, "cZx(S,b)", pa10, 0}, +{ "pdtlbe", 0x04001240, 0xfc00ffdf, "cZx(b)", pa10, 0}, +{ "pdtlbe", 0x04001240, 0xfc003fdf, "cZx(s,b)", pa10, 0}, +{ "pitlbe", 0x04000240, 0xfc001fdf, "cZx(S,b)", pa10, 0}, +{ "idtlba", 0x04001040, 0xfc00ffff, "x,(b)", pa10, 0}, +{ "idtlba", 0x04001040, 0xfc003fff, "x,(s,b)", pa10, 0}, +{ "iitlba", 0x04000040, 0xfc001fff, "x,(S,b)", pa10, 0}, +{ "idtlbp", 0x04001000, 0xfc00ffff, "x,(b)", pa10, 0}, +{ "idtlbp", 0x04001000, 0xfc003fff, "x,(s,b)", pa10, 0}, +{ "iitlbp", 0x04000000, 0xfc001fff, "x,(S,b)", pa10, 0}, +{ "pdc", 0x04001380, 0xfc00ffdf, "cZx(b)", pa10, 0}, +{ "pdc", 0x04001380, 0xfc003fdf, "cZx(s,b)", pa10, 0}, +{ "fdc", 0x04001280, 0xfc00ffdf, "cZx(b)", pa10, FLAG_STRICT}, +{ "fdc", 0x04001280, 0xfc003fdf, "cZx(s,b)", pa10, FLAG_STRICT}, +{ "fdc", 0x04003280, 0xfc00ffff, "5(b)", pa20, FLAG_STRICT}, +{ "fdc", 0x04003280, 0xfc003fff, "5(s,b)", pa20, FLAG_STRICT}, +{ "fdc", 0x04001280, 0xfc00ffdf, "cZx(b)", pa10, 0}, +{ "fdc", 0x04001280, 0xfc003fdf, "cZx(s,b)", pa10, 0}, +{ "fic", 0x040013c0, 0xfc00dfdf, "cZx(b)", pa20, FLAG_STRICT}, +{ "fic", 0x04000280, 0xfc001fdf, "cZx(S,b)", pa10, 0}, +{ "fdce", 0x040012c0, 0xfc00ffdf, "cZx(b)", pa10, 0}, +{ "fdce", 0x040012c0, 0xfc003fdf, "cZx(s,b)", pa10, 0}, +{ "fice", 0x040002c0, 0xfc001fdf, "cZx(S,b)", pa10, 0}, +{ "diag", 0x14000000, 0xfc000000, "D", pa10, 0}, +{ "idtlbt", 0x04001800, 0xfc00ffff, "x,b", pa20, FLAG_STRICT}, +{ "iitlbt", 0x04000800, 0xfc00ffff, "x,b", pa20, FLAG_STRICT}, + +/* These may be specific to certain versions of the PA. Joel claimed + they were 72000 (7200?) specific. However, I'm almost certain the + mtcpu/mfcpu were undocumented, but available in the older 700 machines. */ +{ "mtcpu", 0x14001600, 0xfc00ffff, "x,^", pa10, 0}, +{ "mfcpu", 0x14001A00, 0xfc00ffff, "^,x", pa10, 0}, +{ "tocen", 0x14403600, 0xffffffff, "", pa10, 0}, +{ "tocdis", 0x14401620, 0xffffffff, "", pa10, 0}, +{ "shdwgr", 0x14402600, 0xffffffff, "", pa10, 0}, +{ "grshdw", 0x14400620, 0xffffffff, "", pa10, 0}, + +/* gfw and gfr are not in the HP PA 1.1 manual, but they are in either + the Timex FPU or the Mustang ERS (not sure which) manual. */ +{ "gfw", 0x04001680, 0xfc00ffdf, "cZx(b)", pa11, 0}, +{ "gfw", 0x04001680, 0xfc003fdf, "cZx(s,b)", pa11, 0}, +{ "gfr", 0x04001a80, 0xfc00ffdf, "cZx(b)", pa11, 0}, +{ "gfr", 0x04001a80, 0xfc003fdf, "cZx(s,b)", pa11, 0}, + +/* Floating Point Coprocessor Instructions. */ + +{ "fldw", 0x24000000, 0xfc00df80, "cXx(b),fT", pa10, FLAG_STRICT}, +{ "fldw", 0x24000000, 0xfc001f80, "cXx(s,b),fT", pa10, FLAG_STRICT}, +{ "fldw", 0x24000000, 0xfc00d380, "cxccx(b),fT", pa11, FLAG_STRICT}, +{ "fldw", 0x24000000, 0xfc001380, "cxccx(s,b),fT", pa11, FLAG_STRICT}, +{ "fldw", 0x24001020, 0xfc1ff3a0, "cocc@(b),fT", pa20, FLAG_STRICT}, +{ "fldw", 0x24001020, 0xfc1f33a0, "cocc@(s,b),fT", pa20, FLAG_STRICT}, +{ "fldw", 0x24001000, 0xfc00df80, "cM5(b),fT", pa10, FLAG_STRICT}, +{ "fldw", 0x24001000, 0xfc001f80, "cM5(s,b),fT", pa10, FLAG_STRICT}, +{ "fldw", 0x24001000, 0xfc00d380, "cmcc5(b),fT", pa11, FLAG_STRICT}, +{ "fldw", 0x24001000, 0xfc001380, "cmcc5(s,b),fT", pa11, FLAG_STRICT}, +{ "fldw", 0x5c000000, 0xfc000004, "y(b),fe", pa20w, FLAG_STRICT}, +{ "fldw", 0x58000000, 0xfc000000, "cJy(b),fe", pa20w, FLAG_STRICT}, +{ "fldw", 0x5c000000, 0xfc00c004, "d(b),fe", pa20, FLAG_STRICT}, +{ "fldw", 0x5c000000, 0xfc000004, "d(s,b),fe", pa20, FLAG_STRICT}, +{ "fldw", 0x58000000, 0xfc00c000, "cJd(b),fe", pa20, FLAG_STRICT}, +{ "fldw", 0x58000000, 0xfc000000, "cJd(s,b),fe", pa20, FLAG_STRICT}, +{ "fldd", 0x2c000000, 0xfc00dfc0, "cXx(b),ft", pa10, FLAG_STRICT}, +{ "fldd", 0x2c000000, 0xfc001fc0, "cXx(s,b),ft", pa10, FLAG_STRICT}, +{ "fldd", 0x2c000000, 0xfc00d3c0, "cxccx(b),ft", pa11, FLAG_STRICT}, +{ "fldd", 0x2c000000, 0xfc0013c0, "cxccx(s,b),ft", pa11, FLAG_STRICT}, +{ "fldd", 0x2c001020, 0xfc1ff3e0, "cocc@(b),ft", pa20, FLAG_STRICT}, +{ "fldd", 0x2c001020, 0xfc1f33e0, "cocc@(s,b),ft", pa20, FLAG_STRICT}, +{ "fldd", 0x2c001000, 0xfc00dfc0, "cM5(b),ft", pa10, FLAG_STRICT}, +{ "fldd", 0x2c001000, 0xfc001fc0, "cM5(s,b),ft", pa10, FLAG_STRICT}, +{ "fldd", 0x2c001000, 0xfc00d3c0, "cmcc5(b),ft", pa11, FLAG_STRICT}, +{ "fldd", 0x2c001000, 0xfc0013c0, "cmcc5(s,b),ft", pa11, FLAG_STRICT}, +{ "fldd", 0x50000002, 0xfc000002, "cq&(b),fx", pa20w, FLAG_STRICT}, +{ "fldd", 0x50000002, 0xfc00c002, "cq#(b),fx", pa20, FLAG_STRICT}, +{ "fldd", 0x50000002, 0xfc000002, "cq#(s,b),fx", pa20, FLAG_STRICT}, +{ "fstw", 0x24000200, 0xfc00df80, "cXfT,x(b)", pa10, FLAG_STRICT}, +{ "fstw", 0x24000200, 0xfc001f80, "cXfT,x(s,b)", pa10, FLAG_STRICT}, +{ "fstw", 0x24000200, 0xfc00d380, "cxcCfT,x(b)", pa11, FLAG_STRICT}, +{ "fstw", 0x24000200, 0xfc001380, "cxcCfT,x(s,b)", pa11, FLAG_STRICT}, +{ "fstw", 0x24001220, 0xfc1ff3a0, "cocCfT,@(b)", pa20, FLAG_STRICT}, +{ "fstw", 0x24001220, 0xfc1f33a0, "cocCfT,@(s,b)", pa20, FLAG_STRICT}, +{ "fstw", 0x24001200, 0xfc00df80, "cMfT,5(b)", pa10, FLAG_STRICT}, +{ "fstw", 0x24001200, 0xfc001f80, "cMfT,5(s,b)", pa10, FLAG_STRICT}, +{ "fstw", 0x24001200, 0xfc00df80, "cMfT,5(b)", pa10, FLAG_STRICT}, +{ "fstw", 0x24001200, 0xfc001f80, "cMfT,5(s,b)", pa10, FLAG_STRICT}, +{ "fstw", 0x7c000000, 0xfc000004, "fE,y(b)", pa20w, FLAG_STRICT}, +{ "fstw", 0x78000000, 0xfc000000, "cJfE,y(b)", pa20w, FLAG_STRICT}, +{ "fstw", 0x7c000000, 0xfc00c004, "fE,d(b)", pa20, FLAG_STRICT}, +{ "fstw", 0x7c000000, 0xfc000004, "fE,d(s,b)", pa20, FLAG_STRICT}, +{ "fstw", 0x78000000, 0xfc00c000, "cJfE,d(b)", pa20, FLAG_STRICT}, +{ "fstw", 0x78000000, 0xfc000000, "cJfE,d(s,b)", pa20, FLAG_STRICT}, +{ "fstd", 0x2c000200, 0xfc00dfc0, "cXft,x(b)", pa10, FLAG_STRICT}, +{ "fstd", 0x2c000200, 0xfc001fc0, "cXft,x(s,b)", pa10, FLAG_STRICT}, +{ "fstd", 0x2c000200, 0xfc00d3c0, "cxcCft,x(b)", pa11, FLAG_STRICT}, +{ "fstd", 0x2c000200, 0xfc0013c0, "cxcCft,x(s,b)", pa11, FLAG_STRICT}, +{ "fstd", 0x2c001220, 0xfc1ff3e0, "cocCft,@(b)", pa20, FLAG_STRICT}, +{ "fstd", 0x2c001220, 0xfc1f33e0, "cocCft,@(s,b)", pa20, FLAG_STRICT}, +{ "fstd", 0x2c001200, 0xfc00dfc0, "cMft,5(b)", pa10, FLAG_STRICT}, +{ "fstd", 0x2c001200, 0xfc001fc0, "cMft,5(s,b)", pa10, FLAG_STRICT}, +{ "fstd", 0x2c001200, 0xfc00d3c0, "cmcCft,5(b)", pa11, FLAG_STRICT}, +{ "fstd", 0x2c001200, 0xfc0013c0, "cmcCft,5(s,b)", pa11, FLAG_STRICT}, +{ "fstd", 0x70000002, 0xfc000002, "cqfx,&(b)", pa20w, FLAG_STRICT}, +{ "fstd", 0x70000002, 0xfc00c002, "cqfx,#(b)", pa20, FLAG_STRICT}, +{ "fstd", 0x70000002, 0xfc000002, "cqfx,#(s,b)", pa20, FLAG_STRICT}, +{ "fldwx", 0x24000000, 0xfc00df80, "cXx(b),fT", pa10, FLAG_STRICT}, +{ "fldwx", 0x24000000, 0xfc001f80, "cXx(s,b),fT", pa10, FLAG_STRICT}, +{ "fldwx", 0x24000000, 0xfc00d380, "cxccx(b),fT", pa11, FLAG_STRICT}, +{ "fldwx", 0x24000000, 0xfc001380, "cxccx(s,b),fT", pa11, FLAG_STRICT}, +{ "fldwx", 0x24000000, 0xfc00df80, "cXx(b),fT", pa10, 0}, +{ "fldwx", 0x24000000, 0xfc001f80, "cXx(s,b),fT", pa10, 0}, +{ "flddx", 0x2c000000, 0xfc00dfc0, "cXx(b),ft", pa10, FLAG_STRICT}, +{ "flddx", 0x2c000000, 0xfc001fc0, "cXx(s,b),ft", pa10, FLAG_STRICT}, +{ "flddx", 0x2c000000, 0xfc00d3c0, "cxccx(b),ft", pa11, FLAG_STRICT}, +{ "flddx", 0x2c000000, 0xfc0013c0, "cxccx(s,b),ft", pa11, FLAG_STRICT}, +{ "flddx", 0x2c000000, 0xfc00dfc0, "cXx(b),ft", pa10, 0}, +{ "flddx", 0x2c000000, 0xfc001fc0, "cXx(s,b),ft", pa10, 0}, +{ "fstwx", 0x24000200, 0xfc00df80, "cxfT,x(b)", pa10, FLAG_STRICT}, +{ "fstwx", 0x24000200, 0xfc001f80, "cxfT,x(s,b)", pa10, FLAG_STRICT}, +{ "fstwx", 0x24000200, 0xfc00d380, "cxcCfT,x(b)", pa11, FLAG_STRICT}, +{ "fstwx", 0x24000200, 0xfc001380, "cxcCfT,x(s,b)", pa11, FLAG_STRICT}, +{ "fstwx", 0x24000200, 0xfc00df80, "cxfT,x(b)", pa10, 0}, +{ "fstwx", 0x24000200, 0xfc001f80, "cxfT,x(s,b)", pa10, 0}, +{ "fstdx", 0x2c000200, 0xfc00dfc0, "cxft,x(b)", pa10, FLAG_STRICT}, +{ "fstdx", 0x2c000200, 0xfc001fc0, "cxft,x(s,b)", pa10, FLAG_STRICT}, +{ "fstdx", 0x2c000200, 0xfc00d3c0, "cxcCft,x(b)", pa11, FLAG_STRICT}, +{ "fstdx", 0x2c000200, 0xfc0013c0, "cxcCft,x(s,b)", pa11, FLAG_STRICT}, +{ "fstdx", 0x2c000200, 0xfc00dfc0, "cxft,x(b)", pa10, 0}, +{ "fstdx", 0x2c000200, 0xfc001fc0, "cxft,x(s,b)", pa10, 0}, +{ "fstqx", 0x3c000200, 0xfc00dfc0, "cxft,x(b)", pa10, 0}, +{ "fstqx", 0x3c000200, 0xfc001fc0, "cxft,x(s,b)", pa10, 0}, +{ "fldws", 0x24001000, 0xfc00df80, "cm5(b),fT", pa10, FLAG_STRICT}, +{ "fldws", 0x24001000, 0xfc001f80, "cm5(s,b),fT", pa10, FLAG_STRICT}, +{ "fldws", 0x24001000, 0xfc00d380, "cmcc5(b),fT", pa11, FLAG_STRICT}, +{ "fldws", 0x24001000, 0xfc001380, "cmcc5(s,b),fT", pa11, FLAG_STRICT}, +{ "fldws", 0x24001000, 0xfc00df80, "cm5(b),fT", pa10, 0}, +{ "fldws", 0x24001000, 0xfc001f80, "cm5(s,b),fT", pa10, 0}, +{ "fldds", 0x2c001000, 0xfc00dfc0, "cm5(b),ft", pa10, FLAG_STRICT}, +{ "fldds", 0x2c001000, 0xfc001fc0, "cm5(s,b),ft", pa10, FLAG_STRICT}, +{ "fldds", 0x2c001000, 0xfc00d3c0, "cmcc5(b),ft", pa11, FLAG_STRICT}, +{ "fldds", 0x2c001000, 0xfc0013c0, "cmcc5(s,b),ft", pa11, FLAG_STRICT}, +{ "fldds", 0x2c001000, 0xfc00dfc0, "cm5(b),ft", pa10, 0}, +{ "fldds", 0x2c001000, 0xfc001fc0, "cm5(s,b),ft", pa10, 0}, +{ "fstws", 0x24001200, 0xfc00df80, "cmfT,5(b)", pa10, FLAG_STRICT}, +{ "fstws", 0x24001200, 0xfc001f80, "cmfT,5(s,b)", pa10, FLAG_STRICT}, +{ "fstws", 0x24001200, 0xfc00d380, "cmcCfT,5(b)", pa11, FLAG_STRICT}, +{ "fstws", 0x24001200, 0xfc001380, "cmcCfT,5(s,b)", pa11, FLAG_STRICT}, +{ "fstws", 0x24001200, 0xfc00df80, "cmfT,5(b)", pa10, 0}, +{ "fstws", 0x24001200, 0xfc001f80, "cmfT,5(s,b)", pa10, 0}, +{ "fstds", 0x2c001200, 0xfc00dfc0, "cmft,5(b)", pa10, FLAG_STRICT}, +{ "fstds", 0x2c001200, 0xfc001fc0, "cmft,5(s,b)", pa10, FLAG_STRICT}, +{ "fstds", 0x2c001200, 0xfc00d3c0, "cmcCft,5(b)", pa11, FLAG_STRICT}, +{ "fstds", 0x2c001200, 0xfc0013c0, "cmcCft,5(s,b)", pa11, FLAG_STRICT}, +{ "fstds", 0x2c001200, 0xfc00dfc0, "cmft,5(b)", pa10, 0}, +{ "fstds", 0x2c001200, 0xfc001fc0, "cmft,5(s,b)", pa10, 0}, +{ "fstqs", 0x3c001200, 0xfc00dfc0, "cmft,5(b)", pa10, 0}, +{ "fstqs", 0x3c001200, 0xfc001fc0, "cmft,5(s,b)", pa10, 0}, +{ "fadd", 0x30000600, 0xfc00e7e0, "Ffa,fb,fT", pa10, 0}, +{ "fadd", 0x38000600, 0xfc00e720, "IfA,fB,fT", pa10, 0}, +{ "fsub", 0x30002600, 0xfc00e7e0, "Ffa,fb,fT", pa10, 0}, +{ "fsub", 0x38002600, 0xfc00e720, "IfA,fB,fT", pa10, 0}, +{ "fmpy", 0x30004600, 0xfc00e7e0, "Ffa,fb,fT", pa10, 0}, +{ "fmpy", 0x38004600, 0xfc00e720, "IfA,fB,fT", pa10, 0}, +{ "fdiv", 0x30006600, 0xfc00e7e0, "Ffa,fb,fT", pa10, 0}, +{ "fdiv", 0x38006600, 0xfc00e720, "IfA,fB,fT", pa10, 0}, +{ "fsqrt", 0x30008000, 0xfc1fe7e0, "Ffa,fT", pa10, 0}, +{ "fsqrt", 0x38008000, 0xfc1fe720, "FfA,fT", pa10, 0}, +{ "fabs", 0x30006000, 0xfc1fe7e0, "Ffa,fT", pa10, 0}, +{ "fabs", 0x38006000, 0xfc1fe720, "FfA,fT", pa10, 0}, +{ "frem", 0x30008600, 0xfc00e7e0, "Ffa,fb,fT", pa10, 0}, +{ "frem", 0x38008600, 0xfc00e720, "FfA,fB,fT", pa10, 0}, +{ "frnd", 0x3000a000, 0xfc1fe7e0, "Ffa,fT", pa10, 0}, +{ "frnd", 0x3800a000, 0xfc1fe720, "FfA,fT", pa10, 0}, +{ "fcpy", 0x30004000, 0xfc1fe7e0, "Ffa,fT", pa10, 0}, +{ "fcpy", 0x38004000, 0xfc1fe720, "FfA,fT", pa10, 0}, +{ "fcnvff", 0x30000200, 0xfc1f87e0, "FGfa,fT", pa10, 0}, +{ "fcnvff", 0x38000200, 0xfc1f8720, "FGfA,fT", pa10, 0}, +{ "fcnvxf", 0x30008200, 0xfc1f87e0, "FGfa,fT", pa10, 0}, +{ "fcnvxf", 0x38008200, 0xfc1f8720, "FGfA,fT", pa10, 0}, +{ "fcnvfx", 0x30010200, 0xfc1f87e0, "FGfa,fT", pa10, 0}, +{ "fcnvfx", 0x38010200, 0xfc1f8720, "FGfA,fT", pa10, 0}, +{ "fcnvfxt", 0x30018200, 0xfc1f87e0, "FGfa,fT", pa10, 0}, +{ "fcnvfxt", 0x38018200, 0xfc1f8720, "FGfA,fT", pa10, 0}, +{ "fmpyfadd", 0xb8000000, 0xfc000020, "IfA,fB,fC,fT", pa20, FLAG_STRICT}, +{ "fmpynfadd", 0xb8000020, 0xfc000020, "IfA,fB,fC,fT", pa20, FLAG_STRICT}, +{ "fneg", 0x3000c000, 0xfc1fe7e0, "Ffa,fT", pa20, FLAG_STRICT}, +{ "fneg", 0x3800c000, 0xfc1fe720, "IfA,fT", pa20, FLAG_STRICT}, +{ "fnegabs", 0x3000e000, 0xfc1fe7e0, "Ffa,fT", pa20, FLAG_STRICT}, +{ "fnegabs", 0x3800e000, 0xfc1fe720, "IfA,fT", pa20, FLAG_STRICT}, +{ "fcnv", 0x30000200, 0xfc1c0720, "{_fa,fT", pa20, FLAG_STRICT}, +{ "fcnv", 0x38000200, 0xfc1c0720, "FGfA,fT", pa20, FLAG_STRICT}, +{ "fcmp", 0x30000400, 0xfc00e7e0, "F?ffa,fb", pa10, FLAG_STRICT}, +{ "fcmp", 0x38000400, 0xfc00e720, "I?ffA,fB", pa10, FLAG_STRICT}, +{ "fcmp", 0x30000400, 0xfc0007e0, "F?ffa,fb,h", pa20, FLAG_STRICT}, +{ "fcmp", 0x38000400, 0xfc000720, "I?ffA,fB,h", pa20, FLAG_STRICT}, +{ "fcmp", 0x30000400, 0xfc00e7e0, "F?ffa,fb", pa10, 0}, +{ "fcmp", 0x38000400, 0xfc00e720, "I?ffA,fB", pa10, 0}, +{ "xmpyu", 0x38004700, 0xfc00e720, "fX,fB,fT", pa11, 0}, +{ "fmpyadd", 0x18000000, 0xfc000000, "Hfi,fj,fk,fl,fm", pa11, 0}, +{ "fmpysub", 0x98000000, 0xfc000000, "Hfi,fj,fk,fl,fm", pa11, 0}, +{ "ftest", 0x30002420, 0xffffffff, "", pa10, FLAG_STRICT}, +{ "ftest", 0x30002420, 0xffffffe0, ",=", pa20, FLAG_STRICT}, +{ "ftest", 0x30000420, 0xffff1fff, "m", pa20, FLAG_STRICT}, +{ "fid", 0x30000000, 0xffffffff, "", pa11, 0}, + +/* Performance Monitor Instructions. */ + +{ "pmdis", 0x30000280, 0xffffffdf, "N", pa20, FLAG_STRICT}, +{ "pmenb", 0x30000680, 0xffffffff, "", pa20, FLAG_STRICT}, + +/* Assist Instructions. */ + +{ "spop0", 0x10000000, 0xfc000600, "v,ON", pa10, 0}, +{ "spop1", 0x10000200, 0xfc000600, "v,oNt", pa10, 0}, +{ "spop2", 0x10000400, 0xfc000600, "v,1Nb", pa10, 0}, +{ "spop3", 0x10000600, 0xfc000600, "v,0Nx,b", pa10, 0}, +{ "copr", 0x30000000, 0xfc000000, "u,2N", pa10, 0}, +{ "cldw", 0x24000000, 0xfc00de00, "ucXx(b),t", pa10, FLAG_STRICT}, +{ "cldw", 0x24000000, 0xfc001e00, "ucXx(s,b),t", pa10, FLAG_STRICT}, +{ "cldw", 0x24000000, 0xfc00d200, "ucxccx(b),t", pa11, FLAG_STRICT}, +{ "cldw", 0x24000000, 0xfc001200, "ucxccx(s,b),t", pa11, FLAG_STRICT}, +{ "cldw", 0x24001000, 0xfc00d200, "ucocc@(b),t", pa20, FLAG_STRICT}, +{ "cldw", 0x24001000, 0xfc001200, "ucocc@(s,b),t", pa20, FLAG_STRICT}, +{ "cldw", 0x24001000, 0xfc00de00, "ucM5(b),t", pa10, FLAG_STRICT}, +{ "cldw", 0x24001000, 0xfc001e00, "ucM5(s,b),t", pa10, FLAG_STRICT}, +{ "cldw", 0x24001000, 0xfc00d200, "ucmcc5(b),t", pa11, FLAG_STRICT}, +{ "cldw", 0x24001000, 0xfc001200, "ucmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "cldd", 0x2c000000, 0xfc00de00, "ucXx(b),t", pa10, FLAG_STRICT}, +{ "cldd", 0x2c000000, 0xfc001e00, "ucXx(s,b),t", pa10, FLAG_STRICT}, +{ "cldd", 0x2c000000, 0xfc00d200, "ucxccx(b),t", pa11, FLAG_STRICT}, +{ "cldd", 0x2c000000, 0xfc001200, "ucxccx(s,b),t", pa11, FLAG_STRICT}, +{ "cldd", 0x2c001000, 0xfc00d200, "ucocc@(b),t", pa20, FLAG_STRICT}, +{ "cldd", 0x2c001000, 0xfc001200, "ucocc@(s,b),t", pa20, FLAG_STRICT}, +{ "cldd", 0x2c001000, 0xfc00de00, "ucM5(b),t", pa10, FLAG_STRICT}, +{ "cldd", 0x2c001000, 0xfc001e00, "ucM5(s,b),t", pa10, FLAG_STRICT}, +{ "cldd", 0x2c001000, 0xfc00d200, "ucmcc5(b),t", pa11, FLAG_STRICT}, +{ "cldd", 0x2c001000, 0xfc001200, "ucmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "cstw", 0x24000200, 0xfc00de00, "ucXt,x(b)", pa10, FLAG_STRICT}, +{ "cstw", 0x24000200, 0xfc001e00, "ucXt,x(s,b)", pa10, FLAG_STRICT}, +{ "cstw", 0x24000200, 0xfc00d200, "ucxcCt,x(b)", pa11, FLAG_STRICT}, +{ "cstw", 0x24000200, 0xfc001200, "ucxcCt,x(s,b)", pa11, FLAG_STRICT}, +{ "cstw", 0x24001200, 0xfc00d200, "ucocCt,@(b)", pa20, FLAG_STRICT}, +{ "cstw", 0x24001200, 0xfc001200, "ucocCt,@(s,b)", pa20, FLAG_STRICT}, +{ "cstw", 0x24001200, 0xfc00de00, "ucMt,5(b)", pa10, FLAG_STRICT}, +{ "cstw", 0x24001200, 0xfc001e00, "ucMt,5(s,b)", pa10, FLAG_STRICT}, +{ "cstw", 0x24001200, 0xfc00d200, "ucmcCt,5(b)", pa11, FLAG_STRICT}, +{ "cstw", 0x24001200, 0xfc001200, "ucmcCt,5(s,b)", pa11, FLAG_STRICT}, +{ "cstd", 0x2c000200, 0xfc00de00, "ucXt,x(b)", pa10, FLAG_STRICT}, +{ "cstd", 0x2c000200, 0xfc001e00, "ucXt,x(s,b)", pa10, FLAG_STRICT}, +{ "cstd", 0x2c000200, 0xfc00d200, "ucxcCt,x(b)", pa11, FLAG_STRICT}, +{ "cstd", 0x2c000200, 0xfc001200, "ucxcCt,x(s,b)", pa11, FLAG_STRICT}, +{ "cstd", 0x2c001200, 0xfc00d200, "ucocCt,@(b)", pa20, FLAG_STRICT}, +{ "cstd", 0x2c001200, 0xfc001200, "ucocCt,@(s,b)", pa20, FLAG_STRICT}, +{ "cstd", 0x2c001200, 0xfc00de00, "ucMt,5(b)", pa10, FLAG_STRICT}, +{ "cstd", 0x2c001200, 0xfc001e00, "ucMt,5(s,b)", pa10, FLAG_STRICT}, +{ "cstd", 0x2c001200, 0xfc00d200, "ucmcCt,5(b)", pa11, FLAG_STRICT}, +{ "cstd", 0x2c001200, 0xfc001200, "ucmcCt,5(s,b)", pa11, FLAG_STRICT}, +{ "cldwx", 0x24000000, 0xfc00de00, "ucXx(b),t", pa10, FLAG_STRICT}, +{ "cldwx", 0x24000000, 0xfc001e00, "ucXx(s,b),t", pa10, FLAG_STRICT}, +{ "cldwx", 0x24000000, 0xfc00d200, "ucxccx(b),t", pa11, FLAG_STRICT}, +{ "cldwx", 0x24000000, 0xfc001200, "ucxccx(s,b),t", pa11, FLAG_STRICT}, +{ "cldwx", 0x24000000, 0xfc00de00, "ucXx(b),t", pa10, 0}, +{ "cldwx", 0x24000000, 0xfc001e00, "ucXx(s,b),t", pa10, 0}, +{ "clddx", 0x2c000000, 0xfc00de00, "ucXx(b),t", pa10, FLAG_STRICT}, +{ "clddx", 0x2c000000, 0xfc001e00, "ucXx(s,b),t", pa10, FLAG_STRICT}, +{ "clddx", 0x2c000000, 0xfc00d200, "ucxccx(b),t", pa11, FLAG_STRICT}, +{ "clddx", 0x2c000000, 0xfc001200, "ucxccx(s,b),t", pa11, FLAG_STRICT}, +{ "clddx", 0x2c000000, 0xfc00de00, "ucXx(b),t", pa10, 0}, +{ "clddx", 0x2c000000, 0xfc001e00, "ucXx(s,b),t", pa10, 0}, +{ "cstwx", 0x24000200, 0xfc00de00, "ucXt,x(b)", pa10, FLAG_STRICT}, +{ "cstwx", 0x24000200, 0xfc001e00, "ucXt,x(s,b)", pa10, FLAG_STRICT}, +{ "cstwx", 0x24000200, 0xfc00d200, "ucxcCt,x(b)", pa11, FLAG_STRICT}, +{ "cstwx", 0x24000200, 0xfc001200, "ucxcCt,x(s,b)", pa11, FLAG_STRICT}, +{ "cstwx", 0x24000200, 0xfc00de00, "ucXt,x(b)", pa10, 0}, +{ "cstwx", 0x24000200, 0xfc001e00, "ucXt,x(s,b)", pa10, 0}, +{ "cstdx", 0x2c000200, 0xfc00de00, "ucXt,x(b)", pa10, FLAG_STRICT}, +{ "cstdx", 0x2c000200, 0xfc001e00, "ucXt,x(s,b)", pa10, FLAG_STRICT}, +{ "cstdx", 0x2c000200, 0xfc00d200, "ucxcCt,x(b)", pa11, FLAG_STRICT}, +{ "cstdx", 0x2c000200, 0xfc001200, "ucxcCt,x(s,b)", pa11, FLAG_STRICT}, +{ "cstdx", 0x2c000200, 0xfc00de00, "ucXt,x(b)", pa10, 0}, +{ "cstdx", 0x2c000200, 0xfc001e00, "ucXt,x(s,b)", pa10, 0}, +{ "cldws", 0x24001000, 0xfc00de00, "ucM5(b),t", pa10, FLAG_STRICT}, +{ "cldws", 0x24001000, 0xfc001e00, "ucM5(s,b),t", pa10, FLAG_STRICT}, +{ "cldws", 0x24001000, 0xfc00d200, "ucmcc5(b),t", pa11, FLAG_STRICT}, +{ "cldws", 0x24001000, 0xfc001200, "ucmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "cldws", 0x24001000, 0xfc00de00, "ucM5(b),t", pa10, 0}, +{ "cldws", 0x24001000, 0xfc001e00, "ucM5(s,b),t", pa10, 0}, +{ "cldds", 0x2c001000, 0xfc00de00, "ucM5(b),t", pa10, FLAG_STRICT}, +{ "cldds", 0x2c001000, 0xfc001e00, "ucM5(s,b),t", pa10, FLAG_STRICT}, +{ "cldds", 0x2c001000, 0xfc00d200, "ucmcc5(b),t", pa11, FLAG_STRICT}, +{ "cldds", 0x2c001000, 0xfc001200, "ucmcc5(s,b),t", pa11, FLAG_STRICT}, +{ "cldds", 0x2c001000, 0xfc00de00, "ucM5(b),t", pa10, 0}, +{ "cldds", 0x2c001000, 0xfc001e00, "ucM5(s,b),t", pa10, 0}, +{ "cstws", 0x24001200, 0xfc00de00, "ucMt,5(b)", pa10, FLAG_STRICT}, +{ "cstws", 0x24001200, 0xfc001e00, "ucMt,5(s,b)", pa10, FLAG_STRICT}, +{ "cstws", 0x24001200, 0xfc00d200, "ucmcCt,5(b)", pa11, FLAG_STRICT}, +{ "cstws", 0x24001200, 0xfc001200, "ucmcCt,5(s,b)", pa11, FLAG_STRICT}, +{ "cstws", 0x24001200, 0xfc00de00, "ucMt,5(b)", pa10, 0}, +{ "cstws", 0x24001200, 0xfc001e00, "ucMt,5(s,b)", pa10, 0}, +{ "cstds", 0x2c001200, 0xfc00de00, "ucMt,5(b)", pa10, FLAG_STRICT}, +{ "cstds", 0x2c001200, 0xfc001e00, "ucMt,5(s,b)", pa10, FLAG_STRICT}, +{ "cstds", 0x2c001200, 0xfc00d200, "ucmcCt,5(b)", pa11, FLAG_STRICT}, +{ "cstds", 0x2c001200, 0xfc001200, "ucmcCt,5(s,b)", pa11, FLAG_STRICT}, +{ "cstds", 0x2c001200, 0xfc00de00, "ucMt,5(b)", pa10, 0}, +{ "cstds", 0x2c001200, 0xfc001e00, "ucMt,5(s,b)", pa10, 0}, + +/* More pseudo instructions which must follow the main table. */ +{ "call", 0xe800f000, 0xfc1ffffd, "n(b)", pa20, FLAG_STRICT}, +{ "call", 0xe800a000, 0xffe0e000, "nW", pa10, FLAG_STRICT}, +{ "ret", 0xe840d000, 0xfffffffd, "n", pa20, FLAG_STRICT}, + +}; + +#define NUMOPCODES ((sizeof pa_opcodes)/(sizeof pa_opcodes[0])) + +/* SKV 12/18/92. Added some denotations for various operands. */ + +#define PA_IMM11_AT_31 'i' +#define PA_IMM14_AT_31 'j' +#define PA_IMM21_AT_31 'k' +#define PA_DISP12 'w' +#define PA_DISP17 'W' + +#define N_HPPA_OPERAND_FORMATS 5 + +/* Integer register names, indexed by the numbers which appear in the + opcodes. */ +static const char *const reg_names[] = +{ + "flags", "r1", "rp", "r3", "r4", "r5", "r6", "r7", "r8", "r9", + "r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", + "r20", "r21", "r22", "r23", "r24", "r25", "r26", "dp", "ret0", "ret1", + "sp", "r31" +}; + +/* Floating point register names, indexed by the numbers which appear in the + opcodes. */ +static const char *const fp_reg_names[] = +{ + "fpsr", "fpe2", "fpe4", "fpe6", + "fr4", "fr5", "fr6", "fr7", "fr8", + "fr9", "fr10", "fr11", "fr12", "fr13", "fr14", "fr15", + "fr16", "fr17", "fr18", "fr19", "fr20", "fr21", "fr22", "fr23", + "fr24", "fr25", "fr26", "fr27", "fr28", "fr29", "fr30", "fr31" +}; + +typedef unsigned int CORE_ADDR; + +/* Get at various relevent fields of an instruction word. */ + +#define MASK_5 0x1f +#define MASK_10 0x3ff +#define MASK_11 0x7ff +#define MASK_14 0x3fff +#define MASK_16 0xffff +#define MASK_21 0x1fffff + +/* These macros get bit fields using HP's numbering (MSB = 0). */ + +#define GET_FIELD(X, FROM, TO) \ + ((X) >> (31 - (TO)) & ((1 << ((TO) - (FROM) + 1)) - 1)) + +#define GET_BIT(X, WHICH) \ + GET_FIELD (X, WHICH, WHICH) + +/* Some of these have been converted to 2-d arrays because they + consume less storage this way. If the maintenance becomes a + problem, convert them back to const 1-d pointer arrays. */ +static const char *const control_reg[] = +{ + "rctr", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", + "pidr1", "pidr2", "ccr", "sar", "pidr3", "pidr4", + "iva", "eiem", "itmr", "pcsq", "pcoq", "iir", "isr", + "ior", "ipsw", "eirr", "tr0", "tr1", "tr2", "tr3", + "tr4", "tr5", "tr6", "tr7" +}; + +static const char *const compare_cond_names[] = +{ + "", ",=", ",<", ",<=", ",<<", ",<<=", ",sv", ",od", + ",tr", ",<>", ",>=", ",>", ",>>=", ",>>", ",nsv", ",ev" +}; +static const char *const compare_cond_64_names[] = +{ + "", ",*=", ",*<", ",*<=", ",*<<", ",*<<=", ",*sv", ",*od", + ",*tr", ",*<>", ",*>=", ",*>", ",*>>=", ",*>>", ",*nsv", ",*ev" +}; +static const char *const cmpib_cond_64_names[] = +{ + ",*<<", ",*=", ",*<", ",*<=", ",*>>=", ",*<>", ",*>=", ",*>" +}; +static const char *const add_cond_names[] = +{ + "", ",=", ",<", ",<=", ",nuv", ",znv", ",sv", ",od", + ",tr", ",<>", ",>=", ",>", ",uv", ",vnz", ",nsv", ",ev" +}; +static const char *const add_cond_64_names[] = +{ + "", ",*=", ",*<", ",*<=", ",*nuv", ",*znv", ",*sv", ",*od", + ",*tr", ",*<>", ",*>=", ",*>", ",*uv", ",*vnz", ",*nsv", ",*ev" +}; +static const char *const wide_add_cond_names[] = +{ + "", ",=", ",<", ",<=", ",nuv", ",*=", ",*<", ",*<=", + ",tr", ",<>", ",>=", ",>", ",uv", ",*<>", ",*>=", ",*>" +}; +static const char *const logical_cond_names[] = +{ + "", ",=", ",<", ",<=", 0, 0, 0, ",od", + ",tr", ",<>", ",>=", ",>", 0, 0, 0, ",ev"}; +static const char *const logical_cond_64_names[] = +{ + "", ",*=", ",*<", ",*<=", 0, 0, 0, ",*od", + ",*tr", ",*<>", ",*>=", ",*>", 0, 0, 0, ",*ev"}; +static const char *const unit_cond_names[] = +{ + "", ",swz", ",sbz", ",shz", ",sdc", ",swc", ",sbc", ",shc", + ",tr", ",nwz", ",nbz", ",nhz", ",ndc", ",nwc", ",nbc", ",nhc" +}; +static const char *const unit_cond_64_names[] = +{ + "", ",*swz", ",*sbz", ",*shz", ",*sdc", ",*swc", ",*sbc", ",*shc", + ",*tr", ",*nwz", ",*nbz", ",*nhz", ",*ndc", ",*nwc", ",*nbc", ",*nhc" +}; +static const char *const shift_cond_names[] = +{ + "", ",=", ",<", ",od", ",tr", ",<>", ",>=", ",ev" +}; +static const char *const shift_cond_64_names[] = +{ + "", ",*=", ",*<", ",*od", ",*tr", ",*<>", ",*>=", ",*ev" +}; +static const char *const bb_cond_64_names[] = +{ + ",*<", ",*>=" +}; +static const char *const index_compl_names[] = {"", ",m", ",s", ",sm"}; +static const char *const short_ldst_compl_names[] = {"", ",ma", "", ",mb"}; +static const char *const short_bytes_compl_names[] = +{ + "", ",b,m", ",e", ",e,m" +}; +static const char *const float_format_names[] = {",sgl", ",dbl", "", ",quad"}; +static const char *const fcnv_fixed_names[] = {",w", ",dw", "", ",qw"}; +static const char *const fcnv_ufixed_names[] = {",uw", ",udw", "", ",uqw"}; +static const char *const float_comp_names[] = +{ + ",false?", ",false", ",?", ",!<=>", ",=", ",=t", ",?=", ",!<>", + ",!?>=", ",<", ",?<", ",!>=", ",!?>", ",<=", ",?<=", ",!>", + ",!?<=", ",>", ",?>", ",!<=", ",!?<", ",>=", ",?>=", ",!<", + ",!?=", ",<>", ",!=", ",!=t", ",!?", ",<=>", ",true?", ",true" +}; +static const char *const signed_unsigned_names[] = {",u", ",s"}; +static const char *const mix_half_names[] = {",l", ",r"}; +static const char *const saturation_names[] = {",us", ",ss", 0, ""}; +static const char *const read_write_names[] = {",r", ",w"}; +static const char *const add_compl_names[] = { 0, "", ",l", ",tsv" }; + +/* For a bunch of different instructions form an index into a + completer name table. */ +#define GET_COMPL(insn) (GET_FIELD (insn, 26, 26) | \ + GET_FIELD (insn, 18, 18) << 1) + +#define GET_COND(insn) (GET_FIELD ((insn), 16, 18) + \ + (GET_FIELD ((insn), 19, 19) ? 8 : 0)) + +/* Utility function to print registers. Put these first, so gcc's function + inlining can do its stuff. */ + +#define fputs_filtered(STR,F) (*info->fprintf_func) (info->stream, "%s", STR) + +static void +fput_reg (unsigned reg, disassemble_info *info) +{ + (*info->fprintf_func) (info->stream, reg ? reg_names[reg] : "r0"); +} + +static void +fput_fp_reg (unsigned reg, disassemble_info *info) +{ + (*info->fprintf_func) (info->stream, reg ? fp_reg_names[reg] : "fr0"); +} + +static void +fput_fp_reg_r (unsigned reg, disassemble_info *info) +{ + /* Special case floating point exception registers. */ + if (reg < 4) + (*info->fprintf_func) (info->stream, "fpe%d", reg * 2 + 1); + else + (*info->fprintf_func) (info->stream, "%sR", + reg ? fp_reg_names[reg] : "fr0"); +} + +static void +fput_creg (unsigned reg, disassemble_info *info) +{ + (*info->fprintf_func) (info->stream, control_reg[reg]); +} + +/* Print constants with sign. */ + +static void +fput_const (unsigned num, disassemble_info *info) +{ + if ((int) num < 0) + (*info->fprintf_func) (info->stream, "-%x", - (int) num); + else + (*info->fprintf_func) (info->stream, "%x", num); +} + +/* Routines to extract various sized constants out of hppa + instructions. */ + +/* Extract a 3-bit space register number from a be, ble, mtsp or mfsp. */ +static int +extract_3 (unsigned word) +{ + return GET_FIELD (word, 18, 18) << 2 | GET_FIELD (word, 16, 17); +} + +static int +extract_5_load (unsigned word) +{ + return low_sign_extend (word >> 16 & MASK_5, 5); +} + +/* Extract the immediate field from a st{bhw}s instruction. */ + +static int +extract_5_store (unsigned word) +{ + return low_sign_extend (word & MASK_5, 5); +} + +/* Extract the immediate field from a break instruction. */ + +static unsigned +extract_5r_store (unsigned word) +{ + return (word & MASK_5); +} + +/* Extract the immediate field from a {sr}sm instruction. */ + +static unsigned +extract_5R_store (unsigned word) +{ + return (word >> 16 & MASK_5); +} + +/* Extract the 10 bit immediate field from a {sr}sm instruction. */ + +static unsigned +extract_10U_store (unsigned word) +{ + return (word >> 16 & MASK_10); +} + +/* Extract the immediate field from a bb instruction. */ + +static unsigned +extract_5Q_store (unsigned word) +{ + return (word >> 21 & MASK_5); +} + +/* Extract an 11 bit immediate field. */ + +static int +extract_11 (unsigned word) +{ + return low_sign_extend (word & MASK_11, 11); +} + +/* Extract a 14 bit immediate field. */ + +static int +extract_14 (unsigned word) +{ + return low_sign_extend (word & MASK_14, 14); +} + +/* Extract a 16 bit immediate field (PA2.0 wide only). */ + +static int +extract_16 (unsigned word) +{ + int m15, m0, m1; + + m0 = GET_BIT (word, 16); + m1 = GET_BIT (word, 17); + m15 = GET_BIT (word, 31); + word = (word >> 1) & 0x1fff; + word = word | (m15 << 15) | ((m15 ^ m0) << 14) | ((m15 ^ m1) << 13); + return sign_extend (word, 16); +} + +/* Extract a 21 bit constant. */ + +static int +extract_21 (unsigned word) +{ + int val; + + word &= MASK_21; + word <<= 11; + val = GET_FIELD (word, 20, 20); + val <<= 11; + val |= GET_FIELD (word, 9, 19); + val <<= 2; + val |= GET_FIELD (word, 5, 6); + val <<= 5; + val |= GET_FIELD (word, 0, 4); + val <<= 2; + val |= GET_FIELD (word, 7, 8); + return sign_extend (val, 21) << 11; +} + +/* Extract a 12 bit constant from branch instructions. */ + +static int +extract_12 (unsigned word) +{ + return sign_extend (GET_FIELD (word, 19, 28) + | GET_FIELD (word, 29, 29) << 10 + | (word & 0x1) << 11, 12) << 2; +} + +/* Extract a 17 bit constant from branch instructions, returning the + 19 bit signed value. */ + +static int +extract_17 (unsigned word) +{ + return sign_extend (GET_FIELD (word, 19, 28) + | GET_FIELD (word, 29, 29) << 10 + | GET_FIELD (word, 11, 15) << 11 + | (word & 0x1) << 16, 17) << 2; +} + +static int +extract_22 (unsigned word) +{ + return sign_extend (GET_FIELD (word, 19, 28) + | GET_FIELD (word, 29, 29) << 10 + | GET_FIELD (word, 11, 15) << 11 + | GET_FIELD (word, 6, 10) << 16 + | (word & 0x1) << 21, 22) << 2; +} + +/* Print one instruction. */ + +int +print_insn_hppa (bfd_vma memaddr, disassemble_info *info) +{ + bfd_byte buffer[4]; + unsigned int insn, i; + + { + int status = + (*info->read_memory_func) (memaddr, buffer, sizeof (buffer), info); + if (status != 0) + { + (*info->memory_error_func) (status, memaddr, info); + return -1; + } + } + + insn = bfd_getb32 (buffer); + + for (i = 0; i < NUMOPCODES; ++i) + { + const struct pa_opcode *opcode = &pa_opcodes[i]; + + if ((insn & opcode->mask) == opcode->match) + { + const char *s; +#ifndef BFD64 + if (opcode->arch == pa20w) + continue; +#endif + (*info->fprintf_func) (info->stream, "%s", opcode->name); + + if (!strchr ("cfCY?-+nHNZFIuv{", opcode->args[0])) + (*info->fprintf_func) (info->stream, " "); + for (s = opcode->args; *s != '\0'; ++s) + { + switch (*s) + { + case 'x': + fput_reg (GET_FIELD (insn, 11, 15), info); + break; + case 'a': + case 'b': + fput_reg (GET_FIELD (insn, 6, 10), info); + break; + case '^': + fput_creg (GET_FIELD (insn, 6, 10), info); + break; + case 't': + fput_reg (GET_FIELD (insn, 27, 31), info); + break; + + /* Handle floating point registers. */ + case 'f': + switch (*++s) + { + case 't': + fput_fp_reg (GET_FIELD (insn, 27, 31), info); + break; + case 'T': + if (GET_FIELD (insn, 25, 25)) + fput_fp_reg_r (GET_FIELD (insn, 27, 31), info); + else + fput_fp_reg (GET_FIELD (insn, 27, 31), info); + break; + case 'a': + if (GET_FIELD (insn, 25, 25)) + fput_fp_reg_r (GET_FIELD (insn, 6, 10), info); + else + fput_fp_reg (GET_FIELD (insn, 6, 10), info); + break; + + /* 'fA' will not generate a space before the regsiter + name. Normally that is fine. Except that it + causes problems with xmpyu which has no FP format + completer. */ + case 'X': + fputs_filtered (" ", info); + /* FALLTHRU */ + + case 'A': + if (GET_FIELD (insn, 24, 24)) + fput_fp_reg_r (GET_FIELD (insn, 6, 10), info); + else + fput_fp_reg (GET_FIELD (insn, 6, 10), info); + break; + case 'b': + if (GET_FIELD (insn, 25, 25)) + fput_fp_reg_r (GET_FIELD (insn, 11, 15), info); + else + fput_fp_reg (GET_FIELD (insn, 11, 15), info); + break; + case 'B': + if (GET_FIELD (insn, 19, 19)) + fput_fp_reg_r (GET_FIELD (insn, 11, 15), info); + else + fput_fp_reg (GET_FIELD (insn, 11, 15), info); + break; + case 'C': + { + int reg = GET_FIELD (insn, 21, 22); + reg |= GET_FIELD (insn, 16, 18) << 2; + if (GET_FIELD (insn, 23, 23) != 0) + fput_fp_reg_r (reg, info); + else + fput_fp_reg (reg, info); + break; + } + case 'i': + { + int reg = GET_FIELD (insn, 6, 10); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } + case 'j': + { + int reg = GET_FIELD (insn, 11, 15); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } + case 'k': + { + int reg = GET_FIELD (insn, 27, 31); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } + case 'l': + { + int reg = GET_FIELD (insn, 21, 25); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } + case 'm': + { + int reg = GET_FIELD (insn, 16, 20); + + reg |= (GET_FIELD (insn, 26, 26) << 4); + fput_fp_reg (reg, info); + break; + } + + /* 'fe' will not generate a space before the register + name. Normally that is fine. Except that it + causes problems with fstw fe,y(b) which has no FP + format completer. */ + case 'E': + fputs_filtered (" ", info); + /* FALLTHRU */ + + case 'e': + if (GET_FIELD (insn, 30, 30)) + fput_fp_reg_r (GET_FIELD (insn, 11, 15), info); + else + fput_fp_reg (GET_FIELD (insn, 11, 15), info); + break; + case 'x': + fput_fp_reg (GET_FIELD (insn, 11, 15), info); + break; + } + break; + + case '5': + fput_const (extract_5_load (insn), info); + break; + case 's': + { + int space = GET_FIELD (insn, 16, 17); + /* Zero means implicit addressing, not use of sr0. */ + if (space != 0) + (*info->fprintf_func) (info->stream, "sr%d", space); + } + break; + + case 'S': + (*info->fprintf_func) (info->stream, "sr%d", + extract_3 (insn)); + break; + + /* Handle completers. */ + case 'c': + switch (*++s) + { + case 'x': + (*info->fprintf_func) + (info->stream, "%s", + index_compl_names[GET_COMPL (insn)]); + break; + case 'X': + (*info->fprintf_func) + (info->stream, "%s ", + index_compl_names[GET_COMPL (insn)]); + break; + case 'm': + (*info->fprintf_func) + (info->stream, "%s", + short_ldst_compl_names[GET_COMPL (insn)]); + break; + case 'M': + (*info->fprintf_func) + (info->stream, "%s ", + short_ldst_compl_names[GET_COMPL (insn)]); + break; + case 'A': + (*info->fprintf_func) + (info->stream, "%s ", + short_bytes_compl_names[GET_COMPL (insn)]); + break; + case 's': + (*info->fprintf_func) + (info->stream, "%s", + short_bytes_compl_names[GET_COMPL (insn)]); + break; + case 'c': + case 'C': + switch (GET_FIELD (insn, 20, 21)) + { + case 1: + (*info->fprintf_func) (info->stream, ",bc "); + break; + case 2: + (*info->fprintf_func) (info->stream, ",sl "); + break; + default: + (*info->fprintf_func) (info->stream, " "); + } + break; + case 'd': + switch (GET_FIELD (insn, 20, 21)) + { + case 1: + (*info->fprintf_func) (info->stream, ",co "); + break; + default: + (*info->fprintf_func) (info->stream, " "); + } + break; + case 'o': + (*info->fprintf_func) (info->stream, ",o"); + break; + case 'g': + (*info->fprintf_func) (info->stream, ",gate"); + break; + case 'p': + (*info->fprintf_func) (info->stream, ",l,push"); + break; + case 'P': + (*info->fprintf_func) (info->stream, ",pop"); + break; + case 'l': + case 'L': + (*info->fprintf_func) (info->stream, ",l"); + break; + case 'w': + (*info->fprintf_func) + (info->stream, "%s ", + read_write_names[GET_FIELD (insn, 25, 25)]); + break; + case 'W': + (*info->fprintf_func) (info->stream, ",w "); + break; + case 'r': + if (GET_FIELD (insn, 23, 26) == 5) + (*info->fprintf_func) (info->stream, ",r"); + break; + case 'Z': + if (GET_FIELD (insn, 26, 26)) + (*info->fprintf_func) (info->stream, ",m "); + else + (*info->fprintf_func) (info->stream, " "); + break; + case 'i': + if (GET_FIELD (insn, 25, 25)) + (*info->fprintf_func) (info->stream, ",i"); + break; + case 'z': + if (!GET_FIELD (insn, 21, 21)) + (*info->fprintf_func) (info->stream, ",z"); + break; + case 'a': + (*info->fprintf_func) + (info->stream, "%s", + add_compl_names[GET_FIELD (insn, 20, 21)]); + break; + case 'Y': + (*info->fprintf_func) + (info->stream, ",dc%s", + add_compl_names[GET_FIELD (insn, 20, 21)]); + break; + case 'y': + (*info->fprintf_func) + (info->stream, ",c%s", + add_compl_names[GET_FIELD (insn, 20, 21)]); + break; + case 'v': + if (GET_FIELD (insn, 20, 20)) + (*info->fprintf_func) (info->stream, ",tsv"); + break; + case 't': + (*info->fprintf_func) (info->stream, ",tc"); + if (GET_FIELD (insn, 20, 20)) + (*info->fprintf_func) (info->stream, ",tsv"); + break; + case 'B': + (*info->fprintf_func) (info->stream, ",db"); + if (GET_FIELD (insn, 20, 20)) + (*info->fprintf_func) (info->stream, ",tsv"); + break; + case 'b': + (*info->fprintf_func) (info->stream, ",b"); + if (GET_FIELD (insn, 20, 20)) + (*info->fprintf_func) (info->stream, ",tsv"); + break; + case 'T': + if (GET_FIELD (insn, 25, 25)) + (*info->fprintf_func) (info->stream, ",tc"); + break; + case 'S': + /* EXTRD/W has a following condition. */ + if (*(s + 1) == '?') + (*info->fprintf_func) + (info->stream, "%s", + signed_unsigned_names[GET_FIELD (insn, 21, 21)]); + else + (*info->fprintf_func) + (info->stream, "%s ", + signed_unsigned_names[GET_FIELD (insn, 21, 21)]); + break; + case 'h': + (*info->fprintf_func) + (info->stream, "%s", + mix_half_names[GET_FIELD (insn, 17, 17)]); + break; + case 'H': + (*info->fprintf_func) + (info->stream, "%s ", + saturation_names[GET_FIELD (insn, 24, 25)]); + break; + case '*': + (*info->fprintf_func) + (info->stream, ",%d%d%d%d ", + GET_FIELD (insn, 17, 18), GET_FIELD (insn, 20, 21), + GET_FIELD (insn, 22, 23), GET_FIELD (insn, 24, 25)); + break; + + case 'q': + { + int m, a; + + m = GET_FIELD (insn, 28, 28); + a = GET_FIELD (insn, 29, 29); + + if (m && !a) + fputs_filtered (",ma ", info); + else if (m && a) + fputs_filtered (",mb ", info); + else + fputs_filtered (" ", info); + break; + } + + case 'J': + { + int opc = GET_FIELD (insn, 0, 5); + + if (opc == 0x16 || opc == 0x1e) + { + if (GET_FIELD (insn, 29, 29) == 0) + fputs_filtered (",ma ", info); + else + fputs_filtered (",mb ", info); + } + else + fputs_filtered (" ", info); + break; + } + + case 'e': + { + int opc = GET_FIELD (insn, 0, 5); + + if (opc == 0x13 || opc == 0x1b) + { + if (GET_FIELD (insn, 18, 18) == 1) + fputs_filtered (",mb ", info); + else + fputs_filtered (",ma ", info); + } + else if (opc == 0x17 || opc == 0x1f) + { + if (GET_FIELD (insn, 31, 31) == 1) + fputs_filtered (",ma ", info); + else + fputs_filtered (",mb ", info); + } + else + fputs_filtered (" ", info); + + break; + } + } + break; + + /* Handle conditions. */ + case '?': + { + s++; + switch (*s) + { + case 'f': + (*info->fprintf_func) + (info->stream, "%s ", + float_comp_names[GET_FIELD (insn, 27, 31)]); + break; + + /* These four conditions are for the set of instructions + which distinguish true/false conditions by opcode + rather than by the 'f' bit (sigh): comb, comib, + addb, addib. */ + case 't': + fputs_filtered + (compare_cond_names[GET_FIELD (insn, 16, 18)], info); + break; + case 'n': + fputs_filtered + (compare_cond_names[GET_FIELD (insn, 16, 18) + + GET_FIELD (insn, 4, 4) * 8], + info); + break; + case 'N': + fputs_filtered + (compare_cond_64_names[GET_FIELD (insn, 16, 18) + + GET_FIELD (insn, 2, 2) * 8], + info); + break; + case 'Q': + fputs_filtered + (cmpib_cond_64_names[GET_FIELD (insn, 16, 18)], + info); + break; + case '@': + fputs_filtered + (add_cond_names[GET_FIELD (insn, 16, 18) + + GET_FIELD (insn, 4, 4) * 8], + info); + break; + case 's': + (*info->fprintf_func) + (info->stream, "%s ", + compare_cond_names[GET_COND (insn)]); + break; + case 'S': + (*info->fprintf_func) + (info->stream, "%s ", + compare_cond_64_names[GET_COND (insn)]); + break; + case 'a': + (*info->fprintf_func) + (info->stream, "%s ", + add_cond_names[GET_COND (insn)]); + break; + case 'A': + (*info->fprintf_func) + (info->stream, "%s ", + add_cond_64_names[GET_COND (insn)]); + break; + case 'd': + (*info->fprintf_func) + (info->stream, "%s", + add_cond_names[GET_FIELD (insn, 16, 18)]); + break; + + case 'W': + (*info->fprintf_func) + (info->stream, "%s", + wide_add_cond_names[GET_FIELD (insn, 16, 18) + + GET_FIELD (insn, 4, 4) * 8]); + break; + + case 'l': + (*info->fprintf_func) + (info->stream, "%s ", + logical_cond_names[GET_COND (insn)]); + break; + case 'L': + (*info->fprintf_func) + (info->stream, "%s ", + logical_cond_64_names[GET_COND (insn)]); + break; + case 'u': + (*info->fprintf_func) + (info->stream, "%s ", + unit_cond_names[GET_COND (insn)]); + break; + case 'U': + (*info->fprintf_func) + (info->stream, "%s ", + unit_cond_64_names[GET_COND (insn)]); + break; + case 'y': + case 'x': + case 'b': + (*info->fprintf_func) + (info->stream, "%s", + shift_cond_names[GET_FIELD (insn, 16, 18)]); + + /* If the next character in args is 'n', it will handle + putting out the space. */ + if (s[1] != 'n') + (*info->fprintf_func) (info->stream, " "); + break; + case 'X': + (*info->fprintf_func) + (info->stream, "%s ", + shift_cond_64_names[GET_FIELD (insn, 16, 18)]); + break; + case 'B': + (*info->fprintf_func) + (info->stream, "%s", + bb_cond_64_names[GET_FIELD (insn, 16, 16)]); + + /* If the next character in args is 'n', it will handle + putting out the space. */ + if (s[1] != 'n') + (*info->fprintf_func) (info->stream, " "); + break; + } + break; + } + + case 'V': + fput_const (extract_5_store (insn), info); + break; + case 'r': + fput_const (extract_5r_store (insn), info); + break; + case 'R': + fput_const (extract_5R_store (insn), info); + break; + case 'U': + fput_const (extract_10U_store (insn), info); + break; + case 'B': + case 'Q': + fput_const (extract_5Q_store (insn), info); + break; + case 'i': + fput_const (extract_11 (insn), info); + break; + case 'j': + fput_const (extract_14 (insn), info); + break; + case 'k': + fputs_filtered ("L%", info); + fput_const (extract_21 (insn), info); + break; + case '<': + case 'l': + /* 16-bit long disp., PA2.0 wide only. */ + fput_const (extract_16 (insn), info); + break; + case 'n': + if (insn & 0x2) + (*info->fprintf_func) (info->stream, ",n "); + else + (*info->fprintf_func) (info->stream, " "); + break; + case 'N': + if ((insn & 0x20) && s[1]) + (*info->fprintf_func) (info->stream, ",n "); + else if (insn & 0x20) + (*info->fprintf_func) (info->stream, ",n"); + else if (s[1]) + (*info->fprintf_func) (info->stream, " "); + break; + case 'w': + (*info->print_address_func) + (memaddr + 8 + extract_12 (insn), info); + break; + case 'W': + /* 17 bit PC-relative branch. */ + (*info->print_address_func) + ((memaddr + 8 + extract_17 (insn)), info); + break; + case 'z': + /* 17 bit displacement. This is an offset from a register + so it gets disasssembled as just a number, not any sort + of address. */ + fput_const (extract_17 (insn), info); + break; + + case 'Z': + /* addil %r1 implicit output. */ + fputs_filtered ("r1", info); + break; + + case 'Y': + /* be,l %sr0,%r31 implicit output. */ + fputs_filtered ("sr0,r31", info); + break; + + case '@': + (*info->fprintf_func) (info->stream, "0"); + break; + + case '.': + (*info->fprintf_func) (info->stream, "%d", + GET_FIELD (insn, 24, 25)); + break; + case '*': + (*info->fprintf_func) (info->stream, "%d", + GET_FIELD (insn, 22, 25)); + break; + case '!': + fputs_filtered ("sar", info); + break; + case 'p': + (*info->fprintf_func) (info->stream, "%d", + 31 - GET_FIELD (insn, 22, 26)); + break; + case '~': + { + int num; + num = GET_FIELD (insn, 20, 20) << 5; + num |= GET_FIELD (insn, 22, 26); + (*info->fprintf_func) (info->stream, "%d", 63 - num); + break; + } + case 'P': + (*info->fprintf_func) (info->stream, "%d", + GET_FIELD (insn, 22, 26)); + break; + case 'q': + { + int num; + num = GET_FIELD (insn, 20, 20) << 5; + num |= GET_FIELD (insn, 22, 26); + (*info->fprintf_func) (info->stream, "%d", num); + break; + } + case 'T': + (*info->fprintf_func) (info->stream, "%d", + 32 - GET_FIELD (insn, 27, 31)); + break; + case '%': + { + int num; + num = (GET_FIELD (insn, 23, 23) + 1) * 32; + num -= GET_FIELD (insn, 27, 31); + (*info->fprintf_func) (info->stream, "%d", num); + break; + } + case '|': + { + int num; + num = (GET_FIELD (insn, 19, 19) + 1) * 32; + num -= GET_FIELD (insn, 27, 31); + (*info->fprintf_func) (info->stream, "%d", num); + break; + } + case '$': + fput_const (GET_FIELD (insn, 20, 28), info); + break; + case 'A': + fput_const (GET_FIELD (insn, 6, 18), info); + break; + case 'D': + fput_const (GET_FIELD (insn, 6, 31), info); + break; + case 'v': + (*info->fprintf_func) (info->stream, ",%d", + GET_FIELD (insn, 23, 25)); + break; + case 'O': + fput_const ((GET_FIELD (insn, 6,20) << 5 | + GET_FIELD (insn, 27, 31)), info); + break; + case 'o': + fput_const (GET_FIELD (insn, 6, 20), info); + break; + case '2': + fput_const ((GET_FIELD (insn, 6, 22) << 5 | + GET_FIELD (insn, 27, 31)), info); + break; + case '1': + fput_const ((GET_FIELD (insn, 11, 20) << 5 | + GET_FIELD (insn, 27, 31)), info); + break; + case '0': + fput_const ((GET_FIELD (insn, 16, 20) << 5 | + GET_FIELD (insn, 27, 31)), info); + break; + case 'u': + (*info->fprintf_func) (info->stream, ",%d", + GET_FIELD (insn, 23, 25)); + break; + case 'F': + /* If no destination completer and not before a completer + for fcmp, need a space here. */ + if (s[1] == 'G' || s[1] == '?') + fputs_filtered + (float_format_names[GET_FIELD (insn, 19, 20)], info); + else + (*info->fprintf_func) + (info->stream, "%s ", + float_format_names[GET_FIELD (insn, 19, 20)]); + break; + case 'G': + (*info->fprintf_func) + (info->stream, "%s ", + float_format_names[GET_FIELD (insn, 17, 18)]); + break; + case 'H': + if (GET_FIELD (insn, 26, 26) == 1) + (*info->fprintf_func) (info->stream, "%s ", + float_format_names[0]); + else + (*info->fprintf_func) (info->stream, "%s ", + float_format_names[1]); + break; + case 'I': + /* If no destination completer and not before a completer + for fcmp, need a space here. */ + if (s[1] == '?') + fputs_filtered + (float_format_names[GET_FIELD (insn, 20, 20)], info); + else + (*info->fprintf_func) + (info->stream, "%s ", + float_format_names[GET_FIELD (insn, 20, 20)]); + break; + + case 'J': + fput_const (extract_14 (insn), info); + break; + + case '#': + { + int sign = GET_FIELD (insn, 31, 31); + int imm10 = GET_FIELD (insn, 18, 27); + int disp; + + if (sign) + disp = (-1 << 10) | imm10; + else + disp = imm10; + + disp <<= 3; + fput_const (disp, info); + break; + } + case 'K': + case 'd': + { + int sign = GET_FIELD (insn, 31, 31); + int imm11 = GET_FIELD (insn, 18, 28); + int disp; + + if (sign) + disp = (-1 << 11) | imm11; + else + disp = imm11; + + disp <<= 2; + fput_const (disp, info); + break; + } + + case '>': + case 'y': + { + /* 16-bit long disp., PA2.0 wide only. */ + int disp = extract_16 (insn); + disp &= ~3; + fput_const (disp, info); + break; + } + + case '&': + { + /* 16-bit long disp., PA2.0 wide only. */ + int disp = extract_16 (insn); + disp &= ~7; + fput_const (disp, info); + break; + } + + case '_': + break; /* Dealt with by '{' */ + + case '{': + { + int sub = GET_FIELD (insn, 14, 16); + int df = GET_FIELD (insn, 17, 18); + int sf = GET_FIELD (insn, 19, 20); + const char * const * source = float_format_names; + const char * const * dest = float_format_names; + char *t = ""; + + if (sub == 4) + { + fputs_filtered (",UND ", info); + break; + } + if ((sub & 3) == 3) + t = ",t"; + if ((sub & 3) == 1) + source = sub & 4 ? fcnv_ufixed_names : fcnv_fixed_names; + if (sub & 2) + dest = sub & 4 ? fcnv_ufixed_names : fcnv_fixed_names; + + (*info->fprintf_func) (info->stream, "%s%s%s ", + t, source[sf], dest[df]); + break; + } + + case 'm': + { + int y = GET_FIELD (insn, 16, 18); + + if (y != 1) + fput_const ((y ^ 1) - 1, info); + } + break; + + case 'h': + { + int cbit; + + cbit = GET_FIELD (insn, 16, 18); + + if (cbit > 0) + (*info->fprintf_func) (info->stream, ",%d", cbit - 1); + break; + } + + case '=': + { + int cond = GET_FIELD (insn, 27, 31); + + switch (cond) + { + case 0: fputs_filtered (" ", info); break; + case 1: fputs_filtered ("acc ", info); break; + case 2: fputs_filtered ("rej ", info); break; + case 5: fputs_filtered ("acc8 ", info); break; + case 6: fputs_filtered ("rej8 ", info); break; + case 9: fputs_filtered ("acc6 ", info); break; + case 13: fputs_filtered ("acc4 ", info); break; + case 17: fputs_filtered ("acc2 ", info); break; + default: break; + } + break; + } + + case 'X': + (*info->print_address_func) + (memaddr + 8 + extract_22 (insn), info); + break; + case 'L': + fputs_filtered (",rp", info); + break; + default: + (*info->fprintf_func) (info->stream, "%c", *s); + break; + } + } + return sizeof (insn); + } + } + (*info->fprintf_func) (info->stream, "#%8x", insn); + return sizeof (insn); +} diff --git a/qemu/qemu-git/hppa.ld b/qemu/qemu-git/hppa.ld new file mode 100644 index 0000000..9a4b22c --- /dev/null +++ b/qemu/qemu-git/hppa.ld @@ -0,0 +1,213 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-hppa-linux", "elf32-hppa-linux", + "elf32-hppa-linux") +OUTPUT_ARCH(hppa:hppa1.1) +ENTRY(_start) +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + PROVIDE (__executable_start = 0x60000000); . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } + .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } + .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } + .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } + .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } + .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } + .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } + .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : + { + KEEP (*(.init)) + } =0x08000240 + .text : + { + *(.text .stub .text.* .gnu.linkonce.t.*) + KEEP (*(.text.*personality*)) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + } =0x08000240 + .fini : + { + KEEP (*(.fini)) + } =0x08000240 + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .sdata2 : + { + *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) + } + .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } + .PARISC.unwind : { *(.PARISC.unwind) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(0x10000) + (. & (0x10000 - 1)); + /* Exception handling */ + .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } + /* Thread Local Storage sections */ + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + } + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin*.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin*.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .data : + { + PROVIDE ($global$ = .); + *(.data .data.* .gnu.linkonce.d.*) + KEEP (*(.gnu.linkonce.d.*personality*)) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .plt : { *(.plt) } + .got : { *(.got.plt) *(.got) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata .sdata.* .gnu.linkonce.s.*) + } + _edata = .; PROVIDE (edata = .); + __bss_start = .; + .sbss : + { + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + } + .bss : + { + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. + FIXME: Why do we need it? When there is no .bss section, we don't + pad the .data section. */ + . = ALIGN(. != 0 ? 32 / 8 : 1); + } + . = ALIGN(32 / 8); + . = ALIGN(32 / 8); + _end = .; PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/qemu/qemu-git/i386-dis.c b/qemu/qemu-git/i386-dis.c new file mode 100644 index 0000000..b2af033 --- /dev/null +++ b/qemu/qemu-git/i386-dis.c @@ -0,0 +1,6559 @@ +/* opcodes/i386-dis.c r1.126 */ +/* Print i386 instructions for GDB, the GNU debugger. + Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* 80386 instruction printer by Pace Willisson (pace@prep.ai.mit.edu) + July 1988 + modified by John Hassey (hassey@dg-rtp.dg.com) + x86-64 support added by Jan Hubicka (jh@suse.cz) + VIA PadLock support by Michal Ludvig (mludvig@suse.cz). */ + +/* The main tables describing the instructions is essentially a copy + of the "Opcode Map" chapter (Appendix A) of the Intel 80386 + Programmers Manual. Usually, there is a capital letter, followed + by a small letter. The capital letter tell the addressing mode, + and the small letter tells about the operand size. Refer to + the Intel manual for details. */ + +#include +#include "dis-asm.h" +/* include/opcode/i386.h r1.78 */ + +/* opcode/i386.h -- Intel 80386 opcode macros + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler, and GDB, the GNU Debugger. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* The SystemV/386 SVR3.2 assembler, and probably all AT&T derived + ix86 Unix assemblers, generate floating point instructions with + reversed source and destination registers in certain cases. + Unfortunately, gcc and possibly many other programs use this + reversed syntax, so we're stuck with it. + + eg. `fsub %st(3),%st' results in st = st - st(3) as expected, but + `fsub %st,%st(3)' results in st(3) = st - st(3), rather than + the expected st(3) = st(3) - st + + This happens with all the non-commutative arithmetic floating point + operations with two register operands, where the source register is + %st, and destination register is %st(i). + + The affected opcode map is dceX, dcfX, deeX, defX. */ + +#ifndef SYSV386_COMPAT +/* Set non-zero for broken, compatible instructions. Set to zero for + non-broken opcodes at your peril. gcc generates SystemV/386 + compatible instructions. */ +#define SYSV386_COMPAT 1 +#endif +#ifndef OLDGCC_COMPAT +/* Set non-zero to cater for old (<= 2.8.1) versions of gcc that could + generate nonsense fsubp, fsubrp, fdivp and fdivrp with operands + reversed. */ +#define OLDGCC_COMPAT SYSV386_COMPAT +#endif + +#define MOV_AX_DISP32 0xa0 +#define POP_SEG_SHORT 0x07 +#define JUMP_PC_RELATIVE 0xeb +#define INT_OPCODE 0xcd +#define INT3_OPCODE 0xcc +/* The opcode for the fwait instruction, which disassembler treats as a + prefix when it can. */ +#define FWAIT_OPCODE 0x9b +#define ADDR_PREFIX_OPCODE 0x67 +#define DATA_PREFIX_OPCODE 0x66 +#define LOCK_PREFIX_OPCODE 0xf0 +#define CS_PREFIX_OPCODE 0x2e +#define DS_PREFIX_OPCODE 0x3e +#define ES_PREFIX_OPCODE 0x26 +#define FS_PREFIX_OPCODE 0x64 +#define GS_PREFIX_OPCODE 0x65 +#define SS_PREFIX_OPCODE 0x36 +#define REPNE_PREFIX_OPCODE 0xf2 +#define REPE_PREFIX_OPCODE 0xf3 + +#define TWO_BYTE_OPCODE_ESCAPE 0x0f +#define NOP_OPCODE (char) 0x90 + +/* register numbers */ +#define EBP_REG_NUM 5 +#define ESP_REG_NUM 4 + +/* modrm_byte.regmem for twobyte escape */ +#define ESCAPE_TO_TWO_BYTE_ADDRESSING ESP_REG_NUM +/* index_base_byte.index for no index register addressing */ +#define NO_INDEX_REGISTER ESP_REG_NUM +/* index_base_byte.base for no base register addressing */ +#define NO_BASE_REGISTER EBP_REG_NUM +#define NO_BASE_REGISTER_16 6 + +/* modrm.mode = REGMEM_FIELD_HAS_REG when a register is in there */ +#define REGMEM_FIELD_HAS_REG 0x3/* always = 0x3 */ +#define REGMEM_FIELD_HAS_MEM (~REGMEM_FIELD_HAS_REG) + +/* x86-64 extension prefix. */ +#define REX_OPCODE 0x40 + +/* Indicates 64 bit operand size. */ +#define REX_W 8 +/* High extension to reg field of modrm byte. */ +#define REX_R 4 +/* High extension to SIB index field. */ +#define REX_X 2 +/* High extension to base field of modrm or SIB, or reg field of opcode. */ +#define REX_B 1 + +/* max operands per insn */ +#define MAX_OPERANDS 4 + +/* max immediates per insn (lcall, ljmp, insertq, extrq) */ +#define MAX_IMMEDIATE_OPERANDS 2 + +/* max memory refs per insn (string ops) */ +#define MAX_MEMORY_OPERANDS 2 + +/* max size of insn mnemonics. */ +#define MAX_MNEM_SIZE 16 + +/* max size of register name in insn mnemonics. */ +#define MAX_REG_NAME_SIZE 8 + +/* opcodes/i386-dis.c r1.126 */ +#include "qemu-common.h" + +#include + +static int fetch_data (struct disassemble_info *, bfd_byte *); +static void ckprefix (void); +static const char *prefix_name (int, int); +static int print_insn (bfd_vma, disassemble_info *); +static void dofloat (int); +static void OP_ST (int, int); +static void OP_STi (int, int); +static int putop (const char *, int); +static void oappend (const char *); +static void append_seg (void); +static void OP_indirE (int, int); +static void print_operand_value (char *buf, size_t bufsize, int hex, bfd_vma disp); +static void print_displacement (char *, bfd_vma); +static void OP_E (int, int); +static void OP_G (int, int); +static bfd_vma get64 (void); +static bfd_signed_vma get32 (void); +static bfd_signed_vma get32s (void); +static int get16 (void); +static void set_op (bfd_vma, int); +static void OP_REG (int, int); +static void OP_IMREG (int, int); +static void OP_I (int, int); +static void OP_I64 (int, int); +static void OP_sI (int, int); +static void OP_J (int, int); +static void OP_SEG (int, int); +static void OP_DIR (int, int); +static void OP_OFF (int, int); +static void OP_OFF64 (int, int); +static void ptr_reg (int, int); +static void OP_ESreg (int, int); +static void OP_DSreg (int, int); +static void OP_C (int, int); +static void OP_D (int, int); +static void OP_T (int, int); +static void OP_R (int, int); +static void OP_MMX (int, int); +static void OP_XMM (int, int); +static void OP_EM (int, int); +static void OP_EX (int, int); +static void OP_EMC (int,int); +static void OP_MXC (int,int); +static void OP_MS (int, int); +static void OP_XS (int, int); +static void OP_M (int, int); +static void OP_VMX (int, int); +static void OP_0fae (int, int); +static void OP_0f07 (int, int); +static void NOP_Fixup1 (int, int); +static void NOP_Fixup2 (int, int); +static void OP_3DNowSuffix (int, int); +static void OP_SIMD_Suffix (int, int); +static void SIMD_Fixup (int, int); +static void PNI_Fixup (int, int); +static void SVME_Fixup (int, int); +static void INVLPG_Fixup (int, int); +static void BadOp (void); +static void VMX_Fixup (int, int); +static void REP_Fixup (int, int); +static void CMPXCHG8B_Fixup (int, int); +static void XMM_Fixup (int, int); +static void CRC32_Fixup (int, int); + +struct dis_private { + /* Points to first byte not fetched. */ + bfd_byte *max_fetched; + bfd_byte the_buffer[MAX_MNEM_SIZE]; + bfd_vma insn_start; + int orig_sizeflag; + jmp_buf bailout; +}; + +enum address_mode +{ + mode_16bit, + mode_32bit, + mode_64bit +}; + +static enum address_mode address_mode; + +/* Flags for the prefixes for the current instruction. See below. */ +static int prefixes; + +/* REX prefix the current instruction. See below. */ +static int rex; +/* Bits of REX we've already used. */ +static int rex_used; +/* Mark parts used in the REX prefix. When we are testing for + empty prefix (for 8bit register REX extension), just mask it + out. Otherwise test for REX bit is excuse for existence of REX + only in case value is nonzero. */ +#define USED_REX(value) \ + { \ + if (value) \ + { \ + if ((rex & value)) \ + rex_used |= (value) | REX_OPCODE; \ + } \ + else \ + rex_used |= REX_OPCODE; \ + } + +/* Flags for prefixes which we somehow handled when printing the + current instruction. */ +static int used_prefixes; + +/* Flags stored in PREFIXES. */ +#define PREFIX_REPZ 1 +#define PREFIX_REPNZ 2 +#define PREFIX_LOCK 4 +#define PREFIX_CS 8 +#define PREFIX_SS 0x10 +#define PREFIX_DS 0x20 +#define PREFIX_ES 0x40 +#define PREFIX_FS 0x80 +#define PREFIX_GS 0x100 +#define PREFIX_DATA 0x200 +#define PREFIX_ADDR 0x400 +#define PREFIX_FWAIT 0x800 + +/* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive) + to ADDR (exclusive) are valid. Returns 1 for success, longjmps + on error. */ +#define FETCH_DATA(info, addr) \ + ((addr) <= ((struct dis_private *) (info->private_data))->max_fetched \ + ? 1 : fetch_data ((info), (addr))) + +static int +fetch_data (struct disassemble_info *info, bfd_byte *addr) +{ + int status; + struct dis_private *priv = (struct dis_private *) info->private_data; + bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer); + + if (addr <= priv->the_buffer + MAX_MNEM_SIZE) + status = (*info->read_memory_func) (start, + priv->max_fetched, + addr - priv->max_fetched, + info); + else + status = -1; + if (status != 0) + { + /* If we did manage to read at least one byte, then + print_insn_i386 will do something sensible. Otherwise, print + an error. We do that here because this is where we know + STATUS. */ + if (priv->max_fetched == priv->the_buffer) + (*info->memory_error_func) (status, start, info); + longjmp (priv->bailout, 1); + } + else + priv->max_fetched = addr; + return 1; +} + +#define XX { NULL, 0 } + +#define Eb { OP_E, b_mode } +#define Ev { OP_E, v_mode } +#define Ed { OP_E, d_mode } +#define Edq { OP_E, dq_mode } +#define Edqw { OP_E, dqw_mode } +#define Edqb { OP_E, dqb_mode } +#define Edqd { OP_E, dqd_mode } +#define indirEv { OP_indirE, stack_v_mode } +#define indirEp { OP_indirE, f_mode } +#define stackEv { OP_E, stack_v_mode } +#define Em { OP_E, m_mode } +#define Ew { OP_E, w_mode } +#define M { OP_M, 0 } /* lea, lgdt, etc. */ +#define Ma { OP_M, v_mode } +#define Mp { OP_M, f_mode } /* 32 or 48 bit memory operand for LDS, LES etc */ +#define Mq { OP_M, q_mode } +#define Gb { OP_G, b_mode } +#define Gv { OP_G, v_mode } +#define Gd { OP_G, d_mode } +#define Gdq { OP_G, dq_mode } +#define Gm { OP_G, m_mode } +#define Gw { OP_G, w_mode } +#define Rd { OP_R, d_mode } +#define Rm { OP_R, m_mode } +#define Ib { OP_I, b_mode } +#define sIb { OP_sI, b_mode } /* sign extened byte */ +#define Iv { OP_I, v_mode } +#define Iq { OP_I, q_mode } +#define Iv64 { OP_I64, v_mode } +#define Iw { OP_I, w_mode } +#define I1 { OP_I, const_1_mode } +#define Jb { OP_J, b_mode } +#define Jv { OP_J, v_mode } +#define Cm { OP_C, m_mode } +#define Dm { OP_D, m_mode } +#define Td { OP_T, d_mode } + +#define RMeAX { OP_REG, eAX_reg } +#define RMeBX { OP_REG, eBX_reg } +#define RMeCX { OP_REG, eCX_reg } +#define RMeDX { OP_REG, eDX_reg } +#define RMeSP { OP_REG, eSP_reg } +#define RMeBP { OP_REG, eBP_reg } +#define RMeSI { OP_REG, eSI_reg } +#define RMeDI { OP_REG, eDI_reg } +#define RMrAX { OP_REG, rAX_reg } +#define RMrBX { OP_REG, rBX_reg } +#define RMrCX { OP_REG, rCX_reg } +#define RMrDX { OP_REG, rDX_reg } +#define RMrSP { OP_REG, rSP_reg } +#define RMrBP { OP_REG, rBP_reg } +#define RMrSI { OP_REG, rSI_reg } +#define RMrDI { OP_REG, rDI_reg } +#define RMAL { OP_REG, al_reg } +#define RMAL { OP_REG, al_reg } +#define RMCL { OP_REG, cl_reg } +#define RMDL { OP_REG, dl_reg } +#define RMBL { OP_REG, bl_reg } +#define RMAH { OP_REG, ah_reg } +#define RMCH { OP_REG, ch_reg } +#define RMDH { OP_REG, dh_reg } +#define RMBH { OP_REG, bh_reg } +#define RMAX { OP_REG, ax_reg } +#define RMDX { OP_REG, dx_reg } + +#define eAX { OP_IMREG, eAX_reg } +#define eBX { OP_IMREG, eBX_reg } +#define eCX { OP_IMREG, eCX_reg } +#define eDX { OP_IMREG, eDX_reg } +#define eSP { OP_IMREG, eSP_reg } +#define eBP { OP_IMREG, eBP_reg } +#define eSI { OP_IMREG, eSI_reg } +#define eDI { OP_IMREG, eDI_reg } +#define AL { OP_IMREG, al_reg } +#define CL { OP_IMREG, cl_reg } +#define DL { OP_IMREG, dl_reg } +#define BL { OP_IMREG, bl_reg } +#define AH { OP_IMREG, ah_reg } +#define CH { OP_IMREG, ch_reg } +#define DH { OP_IMREG, dh_reg } +#define BH { OP_IMREG, bh_reg } +#define AX { OP_IMREG, ax_reg } +#define DX { OP_IMREG, dx_reg } +#define zAX { OP_IMREG, z_mode_ax_reg } +#define indirDX { OP_IMREG, indir_dx_reg } + +#define Sw { OP_SEG, w_mode } +#define Sv { OP_SEG, v_mode } +#define Ap { OP_DIR, 0 } +#define Ob { OP_OFF64, b_mode } +#define Ov { OP_OFF64, v_mode } +#define Xb { OP_DSreg, eSI_reg } +#define Xv { OP_DSreg, eSI_reg } +#define Xz { OP_DSreg, eSI_reg } +#define Yb { OP_ESreg, eDI_reg } +#define Yv { OP_ESreg, eDI_reg } +#define DSBX { OP_DSreg, eBX_reg } + +#define es { OP_REG, es_reg } +#define ss { OP_REG, ss_reg } +#define cs { OP_REG, cs_reg } +#define ds { OP_REG, ds_reg } +#define fs { OP_REG, fs_reg } +#define gs { OP_REG, gs_reg } + +#define MX { OP_MMX, 0 } +#define XM { OP_XMM, 0 } +#define EM { OP_EM, v_mode } +#define EMd { OP_EM, d_mode } +#define EMq { OP_EM, q_mode } +#define EXd { OP_EX, d_mode } +#define EXq { OP_EX, q_mode } +#define EXx { OP_EX, x_mode } +#define MS { OP_MS, v_mode } +#define XS { OP_XS, v_mode } +#define EMC { OP_EMC, v_mode } +#define MXC { OP_MXC, 0 } +#define VM { OP_VMX, q_mode } +#define OPSUF { OP_3DNowSuffix, 0 } +#define OPSIMD { OP_SIMD_Suffix, 0 } +#define XMM0 { XMM_Fixup, 0 } + +/* Used handle "rep" prefix for string instructions. */ +#define Xbr { REP_Fixup, eSI_reg } +#define Xvr { REP_Fixup, eSI_reg } +#define Ybr { REP_Fixup, eDI_reg } +#define Yvr { REP_Fixup, eDI_reg } +#define Yzr { REP_Fixup, eDI_reg } +#define indirDXr { REP_Fixup, indir_dx_reg } +#define ALr { REP_Fixup, al_reg } +#define eAXr { REP_Fixup, eAX_reg } + +#define cond_jump_flag { NULL, cond_jump_mode } +#define loop_jcxz_flag { NULL, loop_jcxz_mode } + +/* bits in sizeflag */ +#define SUFFIX_ALWAYS 4 +#define AFLAG 2 +#define DFLAG 1 + +#define b_mode 1 /* byte operand */ +#define v_mode 2 /* operand size depends on prefixes */ +#define w_mode 3 /* word operand */ +#define d_mode 4 /* double word operand */ +#define q_mode 5 /* quad word operand */ +#define t_mode 6 /* ten-byte operand */ +#define x_mode 7 /* 16-byte XMM operand */ +#define m_mode 8 /* d_mode in 32bit, q_mode in 64bit mode. */ +#define cond_jump_mode 9 +#define loop_jcxz_mode 10 +#define dq_mode 11 /* operand size depends on REX prefixes. */ +#define dqw_mode 12 /* registers like dq_mode, memory like w_mode. */ +#define f_mode 13 /* 4- or 6-byte pointer operand */ +#define const_1_mode 14 +#define stack_v_mode 15 /* v_mode for stack-related opcodes. */ +#define z_mode 16 /* non-quad operand size depends on prefixes */ +#define o_mode 17 /* 16-byte operand */ +#define dqb_mode 18 /* registers like dq_mode, memory like b_mode. */ +#define dqd_mode 19 /* registers like dq_mode, memory like d_mode. */ + +#define es_reg 100 +#define cs_reg 101 +#define ss_reg 102 +#define ds_reg 103 +#define fs_reg 104 +#define gs_reg 105 + +#define eAX_reg 108 +#define eCX_reg 109 +#define eDX_reg 110 +#define eBX_reg 111 +#define eSP_reg 112 +#define eBP_reg 113 +#define eSI_reg 114 +#define eDI_reg 115 + +#define al_reg 116 +#define cl_reg 117 +#define dl_reg 118 +#define bl_reg 119 +#define ah_reg 120 +#define ch_reg 121 +#define dh_reg 122 +#define bh_reg 123 + +#define ax_reg 124 +#define cx_reg 125 +#define dx_reg 126 +#define bx_reg 127 +#define sp_reg 128 +#define bp_reg 129 +#define si_reg 130 +#define di_reg 131 + +#define rAX_reg 132 +#define rCX_reg 133 +#define rDX_reg 134 +#define rBX_reg 135 +#define rSP_reg 136 +#define rBP_reg 137 +#define rSI_reg 138 +#define rDI_reg 139 + +#define z_mode_ax_reg 149 +#define indir_dx_reg 150 + +#define FLOATCODE 1 +#define USE_GROUPS 2 +#define USE_PREFIX_USER_TABLE 3 +#define X86_64_SPECIAL 4 +#define IS_3BYTE_OPCODE 5 + +#define FLOAT NULL, { { NULL, FLOATCODE } } + +#define GRP1a NULL, { { NULL, USE_GROUPS }, { NULL, 0 } } +#define GRP1b NULL, { { NULL, USE_GROUPS }, { NULL, 1 } } +#define GRP1S NULL, { { NULL, USE_GROUPS }, { NULL, 2 } } +#define GRP1Ss NULL, { { NULL, USE_GROUPS }, { NULL, 3 } } +#define GRP2b NULL, { { NULL, USE_GROUPS }, { NULL, 4 } } +#define GRP2S NULL, { { NULL, USE_GROUPS }, { NULL, 5 } } +#define GRP2b_one NULL, { { NULL, USE_GROUPS }, { NULL, 6 } } +#define GRP2S_one NULL, { { NULL, USE_GROUPS }, { NULL, 7 } } +#define GRP2b_cl NULL, { { NULL, USE_GROUPS }, { NULL, 8 } } +#define GRP2S_cl NULL, { { NULL, USE_GROUPS }, { NULL, 9 } } +#define GRP3b NULL, { { NULL, USE_GROUPS }, { NULL, 10 } } +#define GRP3S NULL, { { NULL, USE_GROUPS }, { NULL, 11 } } +#define GRP4 NULL, { { NULL, USE_GROUPS }, { NULL, 12 } } +#define GRP5 NULL, { { NULL, USE_GROUPS }, { NULL, 13 } } +#define GRP6 NULL, { { NULL, USE_GROUPS }, { NULL, 14 } } +#define GRP7 NULL, { { NULL, USE_GROUPS }, { NULL, 15 } } +#define GRP8 NULL, { { NULL, USE_GROUPS }, { NULL, 16 } } +#define GRP9 NULL, { { NULL, USE_GROUPS }, { NULL, 17 } } +#define GRP11_C6 NULL, { { NULL, USE_GROUPS }, { NULL, 18 } } +#define GRP11_C7 NULL, { { NULL, USE_GROUPS }, { NULL, 19 } } +#define GRP12 NULL, { { NULL, USE_GROUPS }, { NULL, 20 } } +#define GRP13 NULL, { { NULL, USE_GROUPS }, { NULL, 21 } } +#define GRP14 NULL, { { NULL, USE_GROUPS }, { NULL, 22 } } +#define GRP15 NULL, { { NULL, USE_GROUPS }, { NULL, 23 } } +#define GRP16 NULL, { { NULL, USE_GROUPS }, { NULL, 24 } } +#define GRPAMD NULL, { { NULL, USE_GROUPS }, { NULL, 25 } } +#define GRPPADLCK1 NULL, { { NULL, USE_GROUPS }, { NULL, 26 } } +#define GRPPADLCK2 NULL, { { NULL, USE_GROUPS }, { NULL, 27 } } + +#define PREGRP0 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 0 } } +#define PREGRP1 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 1 } } +#define PREGRP2 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 2 } } +#define PREGRP3 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 3 } } +#define PREGRP4 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 4 } } +#define PREGRP5 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 5 } } +#define PREGRP6 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 6 } } +#define PREGRP7 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 7 } } +#define PREGRP8 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 8 } } +#define PREGRP9 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 9 } } +#define PREGRP10 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 10 } } +#define PREGRP11 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 11 } } +#define PREGRP12 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 12 } } +#define PREGRP13 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 13 } } +#define PREGRP14 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 14 } } +#define PREGRP15 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 15 } } +#define PREGRP16 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 16 } } +#define PREGRP17 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 17 } } +#define PREGRP18 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 18 } } +#define PREGRP19 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 19 } } +#define PREGRP20 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 20 } } +#define PREGRP21 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 21 } } +#define PREGRP22 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 22 } } +#define PREGRP23 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 23 } } +#define PREGRP24 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 24 } } +#define PREGRP25 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 25 } } +#define PREGRP26 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 26 } } +#define PREGRP27 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 27 } } +#define PREGRP28 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 28 } } +#define PREGRP29 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 29 } } +#define PREGRP30 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 30 } } +#define PREGRP31 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 31 } } +#define PREGRP32 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 32 } } +#define PREGRP33 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 33 } } +#define PREGRP34 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 34 } } +#define PREGRP35 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 35 } } +#define PREGRP36 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 36 } } +#define PREGRP37 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 37 } } +#define PREGRP38 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 38 } } +#define PREGRP39 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 39 } } +#define PREGRP40 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 40 } } +#define PREGRP41 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 41 } } +#define PREGRP42 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 42 } } +#define PREGRP43 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 43 } } +#define PREGRP44 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 44 } } +#define PREGRP45 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 45 } } +#define PREGRP46 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 46 } } +#define PREGRP47 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 47 } } +#define PREGRP48 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 48 } } +#define PREGRP49 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 49 } } +#define PREGRP50 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 50 } } +#define PREGRP51 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 51 } } +#define PREGRP52 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 52 } } +#define PREGRP53 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 53 } } +#define PREGRP54 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 54 } } +#define PREGRP55 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 55 } } +#define PREGRP56 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 56 } } +#define PREGRP57 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 57 } } +#define PREGRP58 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 58 } } +#define PREGRP59 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 59 } } +#define PREGRP60 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 60 } } +#define PREGRP61 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 61 } } +#define PREGRP62 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 62 } } +#define PREGRP63 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 63 } } +#define PREGRP64 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 64 } } +#define PREGRP65 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 65 } } +#define PREGRP66 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 66 } } +#define PREGRP67 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 67 } } +#define PREGRP68 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 68 } } +#define PREGRP69 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 69 } } +#define PREGRP70 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 70 } } +#define PREGRP71 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 71 } } +#define PREGRP72 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 72 } } +#define PREGRP73 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 73 } } +#define PREGRP74 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 74 } } +#define PREGRP75 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 75 } } +#define PREGRP76 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 76 } } +#define PREGRP77 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 77 } } +#define PREGRP78 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 78 } } +#define PREGRP79 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 79 } } +#define PREGRP80 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 80 } } +#define PREGRP81 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 81 } } +#define PREGRP82 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 82 } } +#define PREGRP83 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 83 } } +#define PREGRP84 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 84 } } +#define PREGRP85 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 85 } } +#define PREGRP86 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 86 } } +#define PREGRP87 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 87 } } +#define PREGRP88 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 88 } } +#define PREGRP89 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 89 } } +#define PREGRP90 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 90 } } +#define PREGRP91 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 91 } } +#define PREGRP92 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 92 } } +#define PREGRP93 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 93 } } +#define PREGRP94 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 94 } } +#define PREGRP95 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 95 } } +#define PREGRP96 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 96 } } +#define PREGRP97 NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 97 } } + + +#define X86_64_0 NULL, { { NULL, X86_64_SPECIAL }, { NULL, 0 } } +#define X86_64_1 NULL, { { NULL, X86_64_SPECIAL }, { NULL, 1 } } +#define X86_64_2 NULL, { { NULL, X86_64_SPECIAL }, { NULL, 2 } } +#define X86_64_3 NULL, { { NULL, X86_64_SPECIAL }, { NULL, 3 } } + +#define THREE_BYTE_0 NULL, { { NULL, IS_3BYTE_OPCODE }, { NULL, 0 } } +#define THREE_BYTE_1 NULL, { { NULL, IS_3BYTE_OPCODE }, { NULL, 1 } } + +typedef void (*op_rtn) (int bytemode, int sizeflag); + +struct dis386 { + const char *name; + struct + { + op_rtn rtn; + int bytemode; + } op[MAX_OPERANDS]; +}; + +/* Upper case letters in the instruction names here are macros. + 'A' => print 'b' if no register operands or suffix_always is true + 'B' => print 'b' if suffix_always is true + 'C' => print 's' or 'l' ('w' or 'd' in Intel mode) depending on operand + . size prefix + 'D' => print 'w' if no register operands or 'w', 'l' or 'q', if + . suffix_always is true + 'E' => print 'e' if 32-bit form of jcxz + 'F' => print 'w' or 'l' depending on address size prefix (loop insns) + 'G' => print 'w' or 'l' depending on operand size prefix (i/o insns) + 'H' => print ",pt" or ",pn" branch hint + 'I' => honor following macro letter even in Intel mode (implemented only + . for some of the macro letters) + 'J' => print 'l' + 'K' => print 'd' or 'q' if rex prefix is present. + 'L' => print 'l' if suffix_always is true + 'N' => print 'n' if instruction has no wait "prefix" + 'O' => print 'd' or 'o' (or 'q' in Intel mode) + 'P' => print 'w', 'l' or 'q' if instruction has an operand size prefix, + . or suffix_always is true. print 'q' if rex prefix is present. + 'Q' => print 'w', 'l' or 'q' if no register operands or suffix_always + . is true + 'R' => print 'w', 'l' or 'q' ('d' for 'l' and 'e' in Intel mode) + 'S' => print 'w', 'l' or 'q' if suffix_always is true + 'T' => print 'q' in 64bit mode and behave as 'P' otherwise + 'U' => print 'q' in 64bit mode and behave as 'Q' otherwise + 'V' => print 'q' in 64bit mode and behave as 'S' otherwise + 'W' => print 'b', 'w' or 'l' ('d' in Intel mode) + 'X' => print 's', 'd' depending on data16 prefix (for XMM) + 'Y' => 'q' if instruction has an REX 64bit overwrite prefix + 'Z' => print 'q' in 64bit mode and behave as 'L' otherwise + + Many of the above letters print nothing in Intel mode. See "putop" + for the details. + + Braces '{' and '}', and vertical bars '|', indicate alternative + mnemonic strings for AT&T, Intel, X86_64 AT&T, and X86_64 Intel + modes. In cases where there are only two alternatives, the X86_64 + instruction is reserved, and "(bad)" is printed. +*/ + +static const struct dis386 dis386[] = { + /* 00 */ + { "addB", { Eb, Gb } }, + { "addS", { Ev, Gv } }, + { "addB", { Gb, Eb } }, + { "addS", { Gv, Ev } }, + { "addB", { AL, Ib } }, + { "addS", { eAX, Iv } }, + { "push{T|}", { es } }, + { "pop{T|}", { es } }, + /* 08 */ + { "orB", { Eb, Gb } }, + { "orS", { Ev, Gv } }, + { "orB", { Gb, Eb } }, + { "orS", { Gv, Ev } }, + { "orB", { AL, Ib } }, + { "orS", { eAX, Iv } }, + { "push{T|}", { cs } }, + { "(bad)", { XX } }, /* 0x0f extended opcode escape */ + /* 10 */ + { "adcB", { Eb, Gb } }, + { "adcS", { Ev, Gv } }, + { "adcB", { Gb, Eb } }, + { "adcS", { Gv, Ev } }, + { "adcB", { AL, Ib } }, + { "adcS", { eAX, Iv } }, + { "push{T|}", { ss } }, + { "pop{T|}", { ss } }, + /* 18 */ + { "sbbB", { Eb, Gb } }, + { "sbbS", { Ev, Gv } }, + { "sbbB", { Gb, Eb } }, + { "sbbS", { Gv, Ev } }, + { "sbbB", { AL, Ib } }, + { "sbbS", { eAX, Iv } }, + { "push{T|}", { ds } }, + { "pop{T|}", { ds } }, + /* 20 */ + { "andB", { Eb, Gb } }, + { "andS", { Ev, Gv } }, + { "andB", { Gb, Eb } }, + { "andS", { Gv, Ev } }, + { "andB", { AL, Ib } }, + { "andS", { eAX, Iv } }, + { "(bad)", { XX } }, /* SEG ES prefix */ + { "daa{|}", { XX } }, + /* 28 */ + { "subB", { Eb, Gb } }, + { "subS", { Ev, Gv } }, + { "subB", { Gb, Eb } }, + { "subS", { Gv, Ev } }, + { "subB", { AL, Ib } }, + { "subS", { eAX, Iv } }, + { "(bad)", { XX } }, /* SEG CS prefix */ + { "das{|}", { XX } }, + /* 30 */ + { "xorB", { Eb, Gb } }, + { "xorS", { Ev, Gv } }, + { "xorB", { Gb, Eb } }, + { "xorS", { Gv, Ev } }, + { "xorB", { AL, Ib } }, + { "xorS", { eAX, Iv } }, + { "(bad)", { XX } }, /* SEG SS prefix */ + { "aaa{|}", { XX } }, + /* 38 */ + { "cmpB", { Eb, Gb } }, + { "cmpS", { Ev, Gv } }, + { "cmpB", { Gb, Eb } }, + { "cmpS", { Gv, Ev } }, + { "cmpB", { AL, Ib } }, + { "cmpS", { eAX, Iv } }, + { "(bad)", { XX } }, /* SEG DS prefix */ + { "aas{|}", { XX } }, + /* 40 */ + { "inc{S|}", { RMeAX } }, + { "inc{S|}", { RMeCX } }, + { "inc{S|}", { RMeDX } }, + { "inc{S|}", { RMeBX } }, + { "inc{S|}", { RMeSP } }, + { "inc{S|}", { RMeBP } }, + { "inc{S|}", { RMeSI } }, + { "inc{S|}", { RMeDI } }, + /* 48 */ + { "dec{S|}", { RMeAX } }, + { "dec{S|}", { RMeCX } }, + { "dec{S|}", { RMeDX } }, + { "dec{S|}", { RMeBX } }, + { "dec{S|}", { RMeSP } }, + { "dec{S|}", { RMeBP } }, + { "dec{S|}", { RMeSI } }, + { "dec{S|}", { RMeDI } }, + /* 50 */ + { "pushV", { RMrAX } }, + { "pushV", { RMrCX } }, + { "pushV", { RMrDX } }, + { "pushV", { RMrBX } }, + { "pushV", { RMrSP } }, + { "pushV", { RMrBP } }, + { "pushV", { RMrSI } }, + { "pushV", { RMrDI } }, + /* 58 */ + { "popV", { RMrAX } }, + { "popV", { RMrCX } }, + { "popV", { RMrDX } }, + { "popV", { RMrBX } }, + { "popV", { RMrSP } }, + { "popV", { RMrBP } }, + { "popV", { RMrSI } }, + { "popV", { RMrDI } }, + /* 60 */ + { X86_64_0 }, + { X86_64_1 }, + { X86_64_2 }, + { X86_64_3 }, + { "(bad)", { XX } }, /* seg fs */ + { "(bad)", { XX } }, /* seg gs */ + { "(bad)", { XX } }, /* op size prefix */ + { "(bad)", { XX } }, /* adr size prefix */ + /* 68 */ + { "pushT", { Iq } }, + { "imulS", { Gv, Ev, Iv } }, + { "pushT", { sIb } }, + { "imulS", { Gv, Ev, sIb } }, + { "ins{b||b|}", { Ybr, indirDX } }, + { "ins{R||G|}", { Yzr, indirDX } }, + { "outs{b||b|}", { indirDXr, Xb } }, + { "outs{R||G|}", { indirDXr, Xz } }, + /* 70 */ + { "joH", { Jb, XX, cond_jump_flag } }, + { "jnoH", { Jb, XX, cond_jump_flag } }, + { "jbH", { Jb, XX, cond_jump_flag } }, + { "jaeH", { Jb, XX, cond_jump_flag } }, + { "jeH", { Jb, XX, cond_jump_flag } }, + { "jneH", { Jb, XX, cond_jump_flag } }, + { "jbeH", { Jb, XX, cond_jump_flag } }, + { "jaH", { Jb, XX, cond_jump_flag } }, + /* 78 */ + { "jsH", { Jb, XX, cond_jump_flag } }, + { "jnsH", { Jb, XX, cond_jump_flag } }, + { "jpH", { Jb, XX, cond_jump_flag } }, + { "jnpH", { Jb, XX, cond_jump_flag } }, + { "jlH", { Jb, XX, cond_jump_flag } }, + { "jgeH", { Jb, XX, cond_jump_flag } }, + { "jleH", { Jb, XX, cond_jump_flag } }, + { "jgH", { Jb, XX, cond_jump_flag } }, + /* 80 */ + { GRP1b }, + { GRP1S }, + { "(bad)", { XX } }, + { GRP1Ss }, + { "testB", { Eb, Gb } }, + { "testS", { Ev, Gv } }, + { "xchgB", { Eb, Gb } }, + { "xchgS", { Ev, Gv } }, + /* 88 */ + { "movB", { Eb, Gb } }, + { "movS", { Ev, Gv } }, + { "movB", { Gb, Eb } }, + { "movS", { Gv, Ev } }, + { "movD", { Sv, Sw } }, + { "leaS", { Gv, M } }, + { "movD", { Sw, Sv } }, + { GRP1a }, + /* 90 */ + { PREGRP38 }, + { "xchgS", { RMeCX, eAX } }, + { "xchgS", { RMeDX, eAX } }, + { "xchgS", { RMeBX, eAX } }, + { "xchgS", { RMeSP, eAX } }, + { "xchgS", { RMeBP, eAX } }, + { "xchgS", { RMeSI, eAX } }, + { "xchgS", { RMeDI, eAX } }, + /* 98 */ + { "cW{t||t|}R", { XX } }, + { "cR{t||t|}O", { XX } }, + { "Jcall{T|}", { Ap } }, + { "(bad)", { XX } }, /* fwait */ + { "pushfT", { XX } }, + { "popfT", { XX } }, + { "sahf{|}", { XX } }, + { "lahf{|}", { XX } }, + /* a0 */ + { "movB", { AL, Ob } }, + { "movS", { eAX, Ov } }, + { "movB", { Ob, AL } }, + { "movS", { Ov, eAX } }, + { "movs{b||b|}", { Ybr, Xb } }, + { "movs{R||R|}", { Yvr, Xv } }, + { "cmps{b||b|}", { Xb, Yb } }, + { "cmps{R||R|}", { Xv, Yv } }, + /* a8 */ + { "testB", { AL, Ib } }, + { "testS", { eAX, Iv } }, + { "stosB", { Ybr, AL } }, + { "stosS", { Yvr, eAX } }, + { "lodsB", { ALr, Xb } }, + { "lodsS", { eAXr, Xv } }, + { "scasB", { AL, Yb } }, + { "scasS", { eAX, Yv } }, + /* b0 */ + { "movB", { RMAL, Ib } }, + { "movB", { RMCL, Ib } }, + { "movB", { RMDL, Ib } }, + { "movB", { RMBL, Ib } }, + { "movB", { RMAH, Ib } }, + { "movB", { RMCH, Ib } }, + { "movB", { RMDH, Ib } }, + { "movB", { RMBH, Ib } }, + /* b8 */ + { "movS", { RMeAX, Iv64 } }, + { "movS", { RMeCX, Iv64 } }, + { "movS", { RMeDX, Iv64 } }, + { "movS", { RMeBX, Iv64 } }, + { "movS", { RMeSP, Iv64 } }, + { "movS", { RMeBP, Iv64 } }, + { "movS", { RMeSI, Iv64 } }, + { "movS", { RMeDI, Iv64 } }, + /* c0 */ + { GRP2b }, + { GRP2S }, + { "retT", { Iw } }, + { "retT", { XX } }, + { "les{S|}", { Gv, Mp } }, + { "ldsS", { Gv, Mp } }, + { GRP11_C6 }, + { GRP11_C7 }, + /* c8 */ + { "enterT", { Iw, Ib } }, + { "leaveT", { XX } }, + { "lretP", { Iw } }, + { "lretP", { XX } }, + { "int3", { XX } }, + { "int", { Ib } }, + { "into{|}", { XX } }, + { "iretP", { XX } }, + /* d0 */ + { GRP2b_one }, + { GRP2S_one }, + { GRP2b_cl }, + { GRP2S_cl }, + { "aam{|}", { sIb } }, + { "aad{|}", { sIb } }, + { "(bad)", { XX } }, + { "xlat", { DSBX } }, + /* d8 */ + { FLOAT }, + { FLOAT }, + { FLOAT }, + { FLOAT }, + { FLOAT }, + { FLOAT }, + { FLOAT }, + { FLOAT }, + /* e0 */ + { "loopneFH", { Jb, XX, loop_jcxz_flag } }, + { "loopeFH", { Jb, XX, loop_jcxz_flag } }, + { "loopFH", { Jb, XX, loop_jcxz_flag } }, + { "jEcxzH", { Jb, XX, loop_jcxz_flag } }, + { "inB", { AL, Ib } }, + { "inG", { zAX, Ib } }, + { "outB", { Ib, AL } }, + { "outG", { Ib, zAX } }, + /* e8 */ + { "callT", { Jv } }, + { "jmpT", { Jv } }, + { "Jjmp{T|}", { Ap } }, + { "jmp", { Jb } }, + { "inB", { AL, indirDX } }, + { "inG", { zAX, indirDX } }, + { "outB", { indirDX, AL } }, + { "outG", { indirDX, zAX } }, + /* f0 */ + { "(bad)", { XX } }, /* lock prefix */ + { "icebp", { XX } }, + { "(bad)", { XX } }, /* repne */ + { "(bad)", { XX } }, /* repz */ + { "hlt", { XX } }, + { "cmc", { XX } }, + { GRP3b }, + { GRP3S }, + /* f8 */ + { "clc", { XX } }, + { "stc", { XX } }, + { "cli", { XX } }, + { "sti", { XX } }, + { "cld", { XX } }, + { "std", { XX } }, + { GRP4 }, + { GRP5 }, +}; + +static const struct dis386 dis386_twobyte[] = { + /* 00 */ + { GRP6 }, + { GRP7 }, + { "larS", { Gv, Ew } }, + { "lslS", { Gv, Ew } }, + { "(bad)", { XX } }, + { "syscall", { XX } }, + { "clts", { XX } }, + { "sysretP", { XX } }, + /* 08 */ + { "invd", { XX } }, + { "wbinvd", { XX } }, + { "(bad)", { XX } }, + { "ud2a", { XX } }, + { "(bad)", { XX } }, + { GRPAMD }, + { "femms", { XX } }, + { "", { MX, EM, OPSUF } }, /* See OP_3DNowSuffix. */ + /* 10 */ + { PREGRP8 }, + { PREGRP9 }, + { PREGRP30 }, + { "movlpX", { EXq, XM, { SIMD_Fixup, 'h' } } }, + { "unpcklpX", { XM, EXq } }, + { "unpckhpX", { XM, EXq } }, + { PREGRP31 }, + { "movhpX", { EXq, XM, { SIMD_Fixup, 'l' } } }, + /* 18 */ + { GRP16 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "nopQ", { Ev } }, + /* 20 */ + { "movZ", { Rm, Cm } }, + { "movZ", { Rm, Dm } }, + { "movZ", { Cm, Rm } }, + { "movZ", { Dm, Rm } }, + { "movL", { Rd, Td } }, + { "(bad)", { XX } }, + { "movL", { Td, Rd } }, + { "(bad)", { XX } }, + /* 28 */ + { "movapX", { XM, EXx } }, + { "movapX", { EXx, XM } }, + { PREGRP2 }, + { PREGRP33 }, + { PREGRP4 }, + { PREGRP3 }, + { PREGRP93 }, + { PREGRP94 }, + /* 30 */ + { "wrmsr", { XX } }, + { "rdtsc", { XX } }, + { "rdmsr", { XX } }, + { "rdpmc", { XX } }, + { "sysenter", { XX } }, + { "sysexit", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 38 */ + { THREE_BYTE_0 }, + { "(bad)", { XX } }, + { THREE_BYTE_1 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 40 */ + { "cmovo", { Gv, Ev } }, + { "cmovno", { Gv, Ev } }, + { "cmovb", { Gv, Ev } }, + { "cmovae", { Gv, Ev } }, + { "cmove", { Gv, Ev } }, + { "cmovne", { Gv, Ev } }, + { "cmovbe", { Gv, Ev } }, + { "cmova", { Gv, Ev } }, + /* 48 */ + { "cmovs", { Gv, Ev } }, + { "cmovns", { Gv, Ev } }, + { "cmovp", { Gv, Ev } }, + { "cmovnp", { Gv, Ev } }, + { "cmovl", { Gv, Ev } }, + { "cmovge", { Gv, Ev } }, + { "cmovle", { Gv, Ev } }, + { "cmovg", { Gv, Ev } }, + /* 50 */ + { "movmskpX", { Gdq, XS } }, + { PREGRP13 }, + { PREGRP12 }, + { PREGRP11 }, + { "andpX", { XM, EXx } }, + { "andnpX", { XM, EXx } }, + { "orpX", { XM, EXx } }, + { "xorpX", { XM, EXx } }, + /* 58 */ + { PREGRP0 }, + { PREGRP10 }, + { PREGRP17 }, + { PREGRP16 }, + { PREGRP14 }, + { PREGRP7 }, + { PREGRP5 }, + { PREGRP6 }, + /* 60 */ + { PREGRP95 }, + { PREGRP96 }, + { PREGRP97 }, + { "packsswb", { MX, EM } }, + { "pcmpgtb", { MX, EM } }, + { "pcmpgtw", { MX, EM } }, + { "pcmpgtd", { MX, EM } }, + { "packuswb", { MX, EM } }, + /* 68 */ + { "punpckhbw", { MX, EM } }, + { "punpckhwd", { MX, EM } }, + { "punpckhdq", { MX, EM } }, + { "packssdw", { MX, EM } }, + { PREGRP26 }, + { PREGRP24 }, + { "movd", { MX, Edq } }, + { PREGRP19 }, + /* 70 */ + { PREGRP22 }, + { GRP12 }, + { GRP13 }, + { GRP14 }, + { "pcmpeqb", { MX, EM } }, + { "pcmpeqw", { MX, EM } }, + { "pcmpeqd", { MX, EM } }, + { "emms", { XX } }, + /* 78 */ + { PREGRP34 }, + { PREGRP35 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { PREGRP28 }, + { PREGRP29 }, + { PREGRP23 }, + { PREGRP20 }, + /* 80 */ + { "joH", { Jv, XX, cond_jump_flag } }, + { "jnoH", { Jv, XX, cond_jump_flag } }, + { "jbH", { Jv, XX, cond_jump_flag } }, + { "jaeH", { Jv, XX, cond_jump_flag } }, + { "jeH", { Jv, XX, cond_jump_flag } }, + { "jneH", { Jv, XX, cond_jump_flag } }, + { "jbeH", { Jv, XX, cond_jump_flag } }, + { "jaH", { Jv, XX, cond_jump_flag } }, + /* 88 */ + { "jsH", { Jv, XX, cond_jump_flag } }, + { "jnsH", { Jv, XX, cond_jump_flag } }, + { "jpH", { Jv, XX, cond_jump_flag } }, + { "jnpH", { Jv, XX, cond_jump_flag } }, + { "jlH", { Jv, XX, cond_jump_flag } }, + { "jgeH", { Jv, XX, cond_jump_flag } }, + { "jleH", { Jv, XX, cond_jump_flag } }, + { "jgH", { Jv, XX, cond_jump_flag } }, + /* 90 */ + { "seto", { Eb } }, + { "setno", { Eb } }, + { "setb", { Eb } }, + { "setae", { Eb } }, + { "sete", { Eb } }, + { "setne", { Eb } }, + { "setbe", { Eb } }, + { "seta", { Eb } }, + /* 98 */ + { "sets", { Eb } }, + { "setns", { Eb } }, + { "setp", { Eb } }, + { "setnp", { Eb } }, + { "setl", { Eb } }, + { "setge", { Eb } }, + { "setle", { Eb } }, + { "setg", { Eb } }, + /* a0 */ + { "pushT", { fs } }, + { "popT", { fs } }, + { "cpuid", { XX } }, + { "btS", { Ev, Gv } }, + { "shldS", { Ev, Gv, Ib } }, + { "shldS", { Ev, Gv, CL } }, + { GRPPADLCK2 }, + { GRPPADLCK1 }, + /* a8 */ + { "pushT", { gs } }, + { "popT", { gs } }, + { "rsm", { XX } }, + { "btsS", { Ev, Gv } }, + { "shrdS", { Ev, Gv, Ib } }, + { "shrdS", { Ev, Gv, CL } }, + { GRP15 }, + { "imulS", { Gv, Ev } }, + /* b0 */ + { "cmpxchgB", { Eb, Gb } }, + { "cmpxchgS", { Ev, Gv } }, + { "lssS", { Gv, Mp } }, + { "btrS", { Ev, Gv } }, + { "lfsS", { Gv, Mp } }, + { "lgsS", { Gv, Mp } }, + { "movz{bR|x|bR|x}", { Gv, Eb } }, + { "movz{wR|x|wR|x}", { Gv, Ew } }, /* yes, there really is movzww ! */ + /* b8 */ + { PREGRP37 }, + { "ud2b", { XX } }, + { GRP8 }, + { "btcS", { Ev, Gv } }, + { "bsfS", { Gv, Ev } }, + { PREGRP36 }, + { "movs{bR|x|bR|x}", { Gv, Eb } }, + { "movs{wR|x|wR|x}", { Gv, Ew } }, /* yes, there really is movsww ! */ + /* c0 */ + { "xaddB", { Eb, Gb } }, + { "xaddS", { Ev, Gv } }, + { PREGRP1 }, + { "movntiS", { Ev, Gv } }, + { "pinsrw", { MX, Edqw, Ib } }, + { "pextrw", { Gdq, MS, Ib } }, + { "shufpX", { XM, EXx, Ib } }, + { GRP9 }, + /* c8 */ + { "bswap", { RMeAX } }, + { "bswap", { RMeCX } }, + { "bswap", { RMeDX } }, + { "bswap", { RMeBX } }, + { "bswap", { RMeSP } }, + { "bswap", { RMeBP } }, + { "bswap", { RMeSI } }, + { "bswap", { RMeDI } }, + /* d0 */ + { PREGRP27 }, + { "psrlw", { MX, EM } }, + { "psrld", { MX, EM } }, + { "psrlq", { MX, EM } }, + { "paddq", { MX, EM } }, + { "pmullw", { MX, EM } }, + { PREGRP21 }, + { "pmovmskb", { Gdq, MS } }, + /* d8 */ + { "psubusb", { MX, EM } }, + { "psubusw", { MX, EM } }, + { "pminub", { MX, EM } }, + { "pand", { MX, EM } }, + { "paddusb", { MX, EM } }, + { "paddusw", { MX, EM } }, + { "pmaxub", { MX, EM } }, + { "pandn", { MX, EM } }, + /* e0 */ + { "pavgb", { MX, EM } }, + { "psraw", { MX, EM } }, + { "psrad", { MX, EM } }, + { "pavgw", { MX, EM } }, + { "pmulhuw", { MX, EM } }, + { "pmulhw", { MX, EM } }, + { PREGRP15 }, + { PREGRP25 }, + /* e8 */ + { "psubsb", { MX, EM } }, + { "psubsw", { MX, EM } }, + { "pminsw", { MX, EM } }, + { "por", { MX, EM } }, + { "paddsb", { MX, EM } }, + { "paddsw", { MX, EM } }, + { "pmaxsw", { MX, EM } }, + { "pxor", { MX, EM } }, + /* f0 */ + { PREGRP32 }, + { "psllw", { MX, EM } }, + { "pslld", { MX, EM } }, + { "psllq", { MX, EM } }, + { "pmuludq", { MX, EM } }, + { "pmaddwd", { MX, EM } }, + { "psadbw", { MX, EM } }, + { PREGRP18 }, + /* f8 */ + { "psubb", { MX, EM } }, + { "psubw", { MX, EM } }, + { "psubd", { MX, EM } }, + { "psubq", { MX, EM } }, + { "paddb", { MX, EM } }, + { "paddw", { MX, EM } }, + { "paddd", { MX, EM } }, + { "(bad)", { XX } }, +}; + +static const unsigned char onebyte_has_modrm[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 00 */ + /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 10 */ + /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 20 */ + /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 30 */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */ + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ + /* 60 */ 0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0, /* 60 */ + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70 */ + /* 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 80 */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* a0 */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* b0 */ + /* c0 */ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* c0 */ + /* d0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* d0 */ + /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* e0 */ + /* f0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1 /* f0 */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +static const unsigned char twobyte_has_modrm[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0f */ + /* 10 */ 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1, /* 1f */ + /* 20 */ 1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 3f */ + /* 40 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 4f */ + /* 50 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 5f */ + /* 60 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 6f */ + /* 70 */ 1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 9f */ + /* a0 */ 0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1, /* af */ + /* b0 */ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1, /* bf */ + /* c0 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* df */ + /* e0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ef */ + /* f0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +static const unsigned char twobyte_uses_DATA_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */ + /* 10 */ 1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 3f */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1, /* 6f */ + /* 70 */ 1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +static const unsigned char twobyte_uses_REPNZ_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */ + /* 10 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ + /* 70 */ 1,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +static const unsigned char twobyte_uses_REPZ_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */ + /* 10 */ 1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, /* 6f */ + /* 70 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0, /* bf */ + /* c0 */ 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +/* This is used to determine if opcode 0f 38 XX uses DATA prefix. */ +static const unsigned char threebyte_0x38_uses_DATA_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0, /* 0f */ + /* 10 */ 1,0,0,0,1,1,0,1,0,0,0,0,1,1,1,0, /* 1f */ + /* 20 */ 1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0, /* 2f */ + /* 30 */ 1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, /* 3f */ + /* 40 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +/* This is used to determine if opcode 0f 38 XX uses REPNZ prefix. */ +static const unsigned char threebyte_0x38_uses_REPNZ_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */ + /* 10 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +/* This is used to determine if opcode 0f 38 XX uses REPZ prefix. */ +static const unsigned char threebyte_0x38_uses_REPZ_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */ + /* 10 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +/* This is used to determine if opcode 0f 3a XX uses DATA prefix. */ +static const unsigned char threebyte_0x3a_uses_DATA_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1, /* 0f */ + /* 10 */ 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ + /* 40 */ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ + /* 60 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +/* This is used to determine if opcode 0f 3a XX uses REPNZ prefix. */ +static const unsigned char threebyte_0x3a_uses_REPNZ_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */ + /* 10 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +/* This is used to determine if opcode 0f 3a XX uses REPZ prefix. */ +static const unsigned char threebyte_0x3a_uses_REPZ_prefix[256] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */ + /* 10 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 1f */ + /* 20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 2f */ + /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */ + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */ + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 5f */ + /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */ + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */ + /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */ + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */ + /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */ + /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */ + /* c0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */ + /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */ + /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */ + /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ff */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +static char obuf[100]; +static char *obufp; +static char scratchbuf[100]; +static unsigned char *start_codep; +static unsigned char *insn_codep; +static unsigned char *codep; +static disassemble_info *the_info; +static struct + { + int mod; + int reg; + int rm; + } +modrm; +static unsigned char need_modrm; + +/* If we are accessing mod/rm/reg without need_modrm set, then the + values are stale. Hitting this abort likely indicates that you + need to update onebyte_has_modrm or twobyte_has_modrm. */ +#define MODRM_CHECK if (!need_modrm) abort () + +static const char * const *names64; +static const char * const *names32; +static const char * const *names16; +static const char * const *names8; +static const char * const *names8rex; +static const char * const *names_seg; +static const char * const *index16; + +static const char * const intel_names64[] = { + "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" +}; +static const char * const intel_names32[] = { + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", + "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d" +}; +static const char * const intel_names16[] = { + "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", + "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w" +}; +static const char * const intel_names8[] = { + "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh", +}; +static const char * const intel_names8rex[] = { + "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil", + "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b" +}; +static const char * const intel_names_seg[] = { + "es", "cs", "ss", "ds", "fs", "gs", "?", "?", +}; +static const char * const intel_index16[] = { + "bx+si", "bx+di", "bp+si", "bp+di", "si", "di", "bp", "bx" +}; + +static const char * const att_names64[] = { + "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi", + "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" +}; +static const char * const att_names32[] = { + "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi", + "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d" +}; +static const char * const att_names16[] = { + "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di", + "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w" +}; +static const char * const att_names8[] = { + "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh", +}; +static const char * const att_names8rex[] = { + "%al", "%cl", "%dl", "%bl", "%spl", "%bpl", "%sil", "%dil", + "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b" +}; +static const char * const att_names_seg[] = { + "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?", +}; +static const char * const att_index16[] = { + "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx" +}; + +static const struct dis386 grps[][8] = { + /* GRP1a */ + { + { "popU", { stackEv } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* GRP1b */ + { + { "addA", { Eb, Ib } }, + { "orA", { Eb, Ib } }, + { "adcA", { Eb, Ib } }, + { "sbbA", { Eb, Ib } }, + { "andA", { Eb, Ib } }, + { "subA", { Eb, Ib } }, + { "xorA", { Eb, Ib } }, + { "cmpA", { Eb, Ib } }, + }, + /* GRP1S */ + { + { "addQ", { Ev, Iv } }, + { "orQ", { Ev, Iv } }, + { "adcQ", { Ev, Iv } }, + { "sbbQ", { Ev, Iv } }, + { "andQ", { Ev, Iv } }, + { "subQ", { Ev, Iv } }, + { "xorQ", { Ev, Iv } }, + { "cmpQ", { Ev, Iv } }, + }, + /* GRP1Ss */ + { + { "addQ", { Ev, sIb } }, + { "orQ", { Ev, sIb } }, + { "adcQ", { Ev, sIb } }, + { "sbbQ", { Ev, sIb } }, + { "andQ", { Ev, sIb } }, + { "subQ", { Ev, sIb } }, + { "xorQ", { Ev, sIb } }, + { "cmpQ", { Ev, sIb } }, + }, + /* GRP2b */ + { + { "rolA", { Eb, Ib } }, + { "rorA", { Eb, Ib } }, + { "rclA", { Eb, Ib } }, + { "rcrA", { Eb, Ib } }, + { "shlA", { Eb, Ib } }, + { "shrA", { Eb, Ib } }, + { "(bad)", { XX } }, + { "sarA", { Eb, Ib } }, + }, + /* GRP2S */ + { + { "rolQ", { Ev, Ib } }, + { "rorQ", { Ev, Ib } }, + { "rclQ", { Ev, Ib } }, + { "rcrQ", { Ev, Ib } }, + { "shlQ", { Ev, Ib } }, + { "shrQ", { Ev, Ib } }, + { "(bad)", { XX } }, + { "sarQ", { Ev, Ib } }, + }, + /* GRP2b_one */ + { + { "rolA", { Eb, I1 } }, + { "rorA", { Eb, I1 } }, + { "rclA", { Eb, I1 } }, + { "rcrA", { Eb, I1 } }, + { "shlA", { Eb, I1 } }, + { "shrA", { Eb, I1 } }, + { "(bad)", { XX } }, + { "sarA", { Eb, I1 } }, + }, + /* GRP2S_one */ + { + { "rolQ", { Ev, I1 } }, + { "rorQ", { Ev, I1 } }, + { "rclQ", { Ev, I1 } }, + { "rcrQ", { Ev, I1 } }, + { "shlQ", { Ev, I1 } }, + { "shrQ", { Ev, I1 } }, + { "(bad)", { XX } }, + { "sarQ", { Ev, I1 } }, + }, + /* GRP2b_cl */ + { + { "rolA", { Eb, CL } }, + { "rorA", { Eb, CL } }, + { "rclA", { Eb, CL } }, + { "rcrA", { Eb, CL } }, + { "shlA", { Eb, CL } }, + { "shrA", { Eb, CL } }, + { "(bad)", { XX } }, + { "sarA", { Eb, CL } }, + }, + /* GRP2S_cl */ + { + { "rolQ", { Ev, CL } }, + { "rorQ", { Ev, CL } }, + { "rclQ", { Ev, CL } }, + { "rcrQ", { Ev, CL } }, + { "shlQ", { Ev, CL } }, + { "shrQ", { Ev, CL } }, + { "(bad)", { XX } }, + { "sarQ", { Ev, CL } }, + }, + /* GRP3b */ + { + { "testA", { Eb, Ib } }, + { "(bad)", { Eb } }, + { "notA", { Eb } }, + { "negA", { Eb } }, + { "mulA", { Eb } }, /* Don't print the implicit %al register, */ + { "imulA", { Eb } }, /* to distinguish these opcodes from other */ + { "divA", { Eb } }, /* mul/imul opcodes. Do the same for div */ + { "idivA", { Eb } }, /* and idiv for consistency. */ + }, + /* GRP3S */ + { + { "testQ", { Ev, Iv } }, + { "(bad)", { XX } }, + { "notQ", { Ev } }, + { "negQ", { Ev } }, + { "mulQ", { Ev } }, /* Don't print the implicit register. */ + { "imulQ", { Ev } }, + { "divQ", { Ev } }, + { "idivQ", { Ev } }, + }, + /* GRP4 */ + { + { "incA", { Eb } }, + { "decA", { Eb } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* GRP5 */ + { + { "incQ", { Ev } }, + { "decQ", { Ev } }, + { "callT", { indirEv } }, + { "JcallT", { indirEp } }, + { "jmpT", { indirEv } }, + { "JjmpT", { indirEp } }, + { "pushU", { stackEv } }, + { "(bad)", { XX } }, + }, + /* GRP6 */ + { + { "sldtD", { Sv } }, + { "strD", { Sv } }, + { "lldt", { Ew } }, + { "ltr", { Ew } }, + { "verr", { Ew } }, + { "verw", { Ew } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* GRP7 */ + { + { "sgdt{Q|IQ||}", { { VMX_Fixup, 0 } } }, + { "sidt{Q|IQ||}", { { PNI_Fixup, 0 } } }, + { "lgdt{Q|Q||}", { M } }, + { "lidt{Q|Q||}", { { SVME_Fixup, 0 } } }, + { "smswD", { Sv } }, + { "(bad)", { XX } }, + { "lmsw", { Ew } }, + { "invlpg", { { INVLPG_Fixup, w_mode } } }, + }, + /* GRP8 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "btQ", { Ev, Ib } }, + { "btsQ", { Ev, Ib } }, + { "btrQ", { Ev, Ib } }, + { "btcQ", { Ev, Ib } }, + }, + /* GRP9 */ + { + { "(bad)", { XX } }, + { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "", { VM } }, /* See OP_VMX. */ + { "vmptrst", { Mq } }, + }, + /* GRP11_C6 */ + { + { "movA", { Eb, Ib } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* GRP11_C7 */ + { + { "movQ", { Ev, Iv } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* GRP12 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "psrlw", { MS, Ib } }, + { "(bad)", { XX } }, + { "psraw", { MS, Ib } }, + { "(bad)", { XX } }, + { "psllw", { MS, Ib } }, + { "(bad)", { XX } }, + }, + /* GRP13 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "psrld", { MS, Ib } }, + { "(bad)", { XX } }, + { "psrad", { MS, Ib } }, + { "(bad)", { XX } }, + { "pslld", { MS, Ib } }, + { "(bad)", { XX } }, + }, + /* GRP14 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "psrlq", { MS, Ib } }, + { "psrldq", { MS, Ib } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "psllq", { MS, Ib } }, + { "pslldq", { MS, Ib } }, + }, + /* GRP15 */ + { + { "fxsave", { Ev } }, + { "fxrstor", { Ev } }, + { "ldmxcsr", { Ev } }, + { "stmxcsr", { Ev } }, + { "(bad)", { XX } }, + { "lfence", { { OP_0fae, 0 } } }, + { "mfence", { { OP_0fae, 0 } } }, + { "clflush", { { OP_0fae, 0 } } }, + }, + /* GRP16 */ + { + { "prefetchnta", { Ev } }, + { "prefetcht0", { Ev } }, + { "prefetcht1", { Ev } }, + { "prefetcht2", { Ev } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* GRPAMD */ + { + { "prefetch", { Eb } }, + { "prefetchw", { Eb } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* GRPPADLCK1 */ + { + { "xstore-rng", { { OP_0f07, 0 } } }, + { "xcrypt-ecb", { { OP_0f07, 0 } } }, + { "xcrypt-cbc", { { OP_0f07, 0 } } }, + { "xcrypt-ctr", { { OP_0f07, 0 } } }, + { "xcrypt-cfb", { { OP_0f07, 0 } } }, + { "xcrypt-ofb", { { OP_0f07, 0 } } }, + { "(bad)", { { OP_0f07, 0 } } }, + { "(bad)", { { OP_0f07, 0 } } }, + }, + /* GRPPADLCK2 */ + { + { "montmul", { { OP_0f07, 0 } } }, + { "xsha1", { { OP_0f07, 0 } } }, + { "xsha256", { { OP_0f07, 0 } } }, + { "(bad)", { { OP_0f07, 0 } } }, + { "(bad)", { { OP_0f07, 0 } } }, + { "(bad)", { { OP_0f07, 0 } } }, + { "(bad)", { { OP_0f07, 0 } } }, + { "(bad)", { { OP_0f07, 0 } } }, + } +}; + +static const struct dis386 prefix_user_table[][4] = { + /* PREGRP0 */ + { + { "addps", { XM, EXx } }, + { "addss", { XM, EXd } }, + { "addpd", { XM, EXx } }, + { "addsd", { XM, EXq } }, + }, + /* PREGRP1 */ + { + { "", { XM, EXx, OPSIMD } }, /* See OP_SIMD_SUFFIX. */ + { "", { XM, EXx, OPSIMD } }, + { "", { XM, EXx, OPSIMD } }, + { "", { XM, EXx, OPSIMD } }, + }, + /* PREGRP2 */ + { + { "cvtpi2ps", { XM, EMC } }, + { "cvtsi2ssY", { XM, Ev } }, + { "cvtpi2pd", { XM, EMC } }, + { "cvtsi2sdY", { XM, Ev } }, + }, + /* PREGRP3 */ + { + { "cvtps2pi", { MXC, EXx } }, + { "cvtss2siY", { Gv, EXx } }, + { "cvtpd2pi", { MXC, EXx } }, + { "cvtsd2siY", { Gv, EXx } }, + }, + /* PREGRP4 */ + { + { "cvttps2pi", { MXC, EXx } }, + { "cvttss2siY", { Gv, EXx } }, + { "cvttpd2pi", { MXC, EXx } }, + { "cvttsd2siY", { Gv, EXx } }, + }, + /* PREGRP5 */ + { + { "divps", { XM, EXx } }, + { "divss", { XM, EXx } }, + { "divpd", { XM, EXx } }, + { "divsd", { XM, EXx } }, + }, + /* PREGRP6 */ + { + { "maxps", { XM, EXx } }, + { "maxss", { XM, EXx } }, + { "maxpd", { XM, EXx } }, + { "maxsd", { XM, EXx } }, + }, + /* PREGRP7 */ + { + { "minps", { XM, EXx } }, + { "minss", { XM, EXx } }, + { "minpd", { XM, EXx } }, + { "minsd", { XM, EXx } }, + }, + /* PREGRP8 */ + { + { "movups", { XM, EXx } }, + { "movss", { XM, EXx } }, + { "movupd", { XM, EXx } }, + { "movsd", { XM, EXx } }, + }, + /* PREGRP9 */ + { + { "movups", { EXx, XM } }, + { "movss", { EXx, XM } }, + { "movupd", { EXx, XM } }, + { "movsd", { EXx, XM } }, + }, + /* PREGRP10 */ + { + { "mulps", { XM, EXx } }, + { "mulss", { XM, EXx } }, + { "mulpd", { XM, EXx } }, + { "mulsd", { XM, EXx } }, + }, + /* PREGRP11 */ + { + { "rcpps", { XM, EXx } }, + { "rcpss", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + }, + /* PREGRP12 */ + { + { "rsqrtps",{ XM, EXx } }, + { "rsqrtss",{ XM, EXx } }, + { "(bad)", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + }, + /* PREGRP13 */ + { + { "sqrtps", { XM, EXx } }, + { "sqrtss", { XM, EXx } }, + { "sqrtpd", { XM, EXx } }, + { "sqrtsd", { XM, EXx } }, + }, + /* PREGRP14 */ + { + { "subps", { XM, EXx } }, + { "subss", { XM, EXx } }, + { "subpd", { XM, EXx } }, + { "subsd", { XM, EXx } }, + }, + /* PREGRP15 */ + { + { "(bad)", { XM, EXx } }, + { "cvtdq2pd", { XM, EXq } }, + { "cvttpd2dq", { XM, EXx } }, + { "cvtpd2dq", { XM, EXx } }, + }, + /* PREGRP16 */ + { + { "cvtdq2ps", { XM, EXx } }, + { "cvttps2dq", { XM, EXx } }, + { "cvtps2dq", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + }, + /* PREGRP17 */ + { + { "cvtps2pd", { XM, EXq } }, + { "cvtss2sd", { XM, EXx } }, + { "cvtpd2ps", { XM, EXx } }, + { "cvtsd2ss", { XM, EXx } }, + }, + /* PREGRP18 */ + { + { "maskmovq", { MX, MS } }, + { "(bad)", { XM, EXx } }, + { "maskmovdqu", { XM, XS } }, + { "(bad)", { XM, EXx } }, + }, + /* PREGRP19 */ + { + { "movq", { MX, EM } }, + { "movdqu", { XM, EXx } }, + { "movdqa", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + }, + /* PREGRP20 */ + { + { "movq", { EM, MX } }, + { "movdqu", { EXx, XM } }, + { "movdqa", { EXx, XM } }, + { "(bad)", { EXx, XM } }, + }, + /* PREGRP21 */ + { + { "(bad)", { EXx, XM } }, + { "movq2dq",{ XM, MS } }, + { "movq", { EXx, XM } }, + { "movdq2q",{ MX, XS } }, + }, + /* PREGRP22 */ + { + { "pshufw", { MX, EM, Ib } }, + { "pshufhw",{ XM, EXx, Ib } }, + { "pshufd", { XM, EXx, Ib } }, + { "pshuflw",{ XM, EXx, Ib } }, + }, + /* PREGRP23 */ + { + { "movd", { Edq, MX } }, + { "movq", { XM, EXx } }, + { "movd", { Edq, XM } }, + { "(bad)", { Ed, XM } }, + }, + /* PREGRP24 */ + { + { "(bad)", { MX, EXx } }, + { "(bad)", { XM, EXx } }, + { "punpckhqdq", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + }, + /* PREGRP25 */ + { + { "movntq", { EM, MX } }, + { "(bad)", { EM, XM } }, + { "movntdq",{ EM, XM } }, + { "(bad)", { EM, XM } }, + }, + /* PREGRP26 */ + { + { "(bad)", { MX, EXx } }, + { "(bad)", { XM, EXx } }, + { "punpcklqdq", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + }, + /* PREGRP27 */ + { + { "(bad)", { MX, EXx } }, + { "(bad)", { XM, EXx } }, + { "addsubpd", { XM, EXx } }, + { "addsubps", { XM, EXx } }, + }, + /* PREGRP28 */ + { + { "(bad)", { MX, EXx } }, + { "(bad)", { XM, EXx } }, + { "haddpd", { XM, EXx } }, + { "haddps", { XM, EXx } }, + }, + /* PREGRP29 */ + { + { "(bad)", { MX, EXx } }, + { "(bad)", { XM, EXx } }, + { "hsubpd", { XM, EXx } }, + { "hsubps", { XM, EXx } }, + }, + /* PREGRP30 */ + { + { "movlpX", { XM, EXq, { SIMD_Fixup, 'h' } } }, /* really only 2 operands */ + { "movsldup", { XM, EXx } }, + { "movlpd", { XM, EXq } }, + { "movddup", { XM, EXq } }, + }, + /* PREGRP31 */ + { + { "movhpX", { XM, EXq, { SIMD_Fixup, 'l' } } }, + { "movshdup", { XM, EXx } }, + { "movhpd", { XM, EXq } }, + { "(bad)", { XM, EXq } }, + }, + /* PREGRP32 */ + { + { "(bad)", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + { "(bad)", { XM, EXx } }, + { "lddqu", { XM, M } }, + }, + /* PREGRP33 */ + { + {"movntps", { Ev, XM } }, + {"movntss", { Ev, XM } }, + {"movntpd", { Ev, XM } }, + {"movntsd", { Ev, XM } }, + }, + + /* PREGRP34 */ + { + {"vmread", { Em, Gm } }, + {"(bad)", { XX } }, + {"extrq", { XS, Ib, Ib } }, + {"insertq", { XM, XS, Ib, Ib } }, + }, + + /* PREGRP35 */ + { + {"vmwrite", { Gm, Em } }, + {"(bad)", { XX } }, + {"extrq", { XM, XS } }, + {"insertq", { XM, XS } }, + }, + + /* PREGRP36 */ + { + { "bsrS", { Gv, Ev } }, + { "lzcntS", { Gv, Ev } }, + { "bsrS", { Gv, Ev } }, + { "(bad)", { XX } }, + }, + + /* PREGRP37 */ + { + { "(bad)", { XX } }, + { "popcntS", { Gv, Ev } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + + /* PREGRP38 */ + { + { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, + { "pause", { XX } }, + { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, + { "(bad)", { XX } }, + }, + + /* PREGRP39 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pblendvb", {XM, EXx, XMM0 } }, + { "(bad)", { XX } }, + }, + + /* PREGRP40 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "blendvps", {XM, EXx, XMM0 } }, + { "(bad)", { XX } }, + }, + + /* PREGRP41 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "blendvpd", { XM, EXx, XMM0 } }, + { "(bad)", { XX } }, + }, + + /* PREGRP42 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "ptest", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP43 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovsxbw", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP44 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovsxbd", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP45 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovsxbq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP46 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovsxwd", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP47 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovsxwq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP48 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovsxdq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP49 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmuldq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP50 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pcmpeqq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP51 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "movntdqa", { XM, EM } }, + { "(bad)", { XX } }, + }, + + /* PREGRP52 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "packusdw", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP53 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovzxbw", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP54 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovzxbd", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP55 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovzxbq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP56 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovzxwd", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP57 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovzxwq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP58 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmovzxdq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP59 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pminsb", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP60 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pminsd", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP61 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pminuw", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP62 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pminud", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP63 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmaxsb", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP64 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmaxsd", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP65 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmaxuw", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP66 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmaxud", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP67 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pmulld", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP68 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "phminposuw", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP69 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "roundps", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP70 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "roundpd", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP71 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "roundss", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP72 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "roundsd", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP73 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "blendps", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP74 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "blendpd", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP75 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pblendw", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP76 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pextrb", { Edqb, XM, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP77 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pextrw", { Edqw, XM, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP78 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pextrK", { Edq, XM, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP79 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "extractps", { Edqd, XM, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP80 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pinsrb", { XM, Edqb, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP81 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "insertps", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP82 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pinsrK", { XM, Edq, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP83 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "dpps", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP84 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "dppd", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP85 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "mpsadbw", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP86 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pcmpgtq", { XM, EXx } }, + { "(bad)", { XX } }, + }, + + /* PREGRP87 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "crc32", { Gdq, { CRC32_Fixup, b_mode } } }, + }, + + /* PREGRP88 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "crc32", { Gdq, { CRC32_Fixup, v_mode } } }, + }, + + /* PREGRP89 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pcmpestrm", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP90 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pcmpestri", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP91 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pcmpistrm", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP92 */ + { + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pcmpistri", { XM, EXx, Ib } }, + { "(bad)", { XX } }, + }, + + /* PREGRP93 */ + { + { "ucomiss",{ XM, EXd } }, + { "(bad)", { XX } }, + { "ucomisd",{ XM, EXq } }, + { "(bad)", { XX } }, + }, + + /* PREGRP94 */ + { + { "comiss", { XM, EXd } }, + { "(bad)", { XX } }, + { "comisd", { XM, EXq } }, + { "(bad)", { XX } }, + }, + + /* PREGRP95 */ + { + { "punpcklbw",{ MX, EMd } }, + { "(bad)", { XX } }, + { "punpcklbw",{ MX, EMq } }, + { "(bad)", { XX } }, + }, + + /* PREGRP96 */ + { + { "punpcklwd",{ MX, EMd } }, + { "(bad)", { XX } }, + { "punpcklwd",{ MX, EMq } }, + { "(bad)", { XX } }, + }, + + /* PREGRP97 */ + { + { "punpckldq",{ MX, EMd } }, + { "(bad)", { XX } }, + { "punpckldq",{ MX, EMq } }, + { "(bad)", { XX } }, + }, +}; + +static const struct dis386 x86_64_table[][2] = { + { + { "pusha{P|}", { XX } }, + { "(bad)", { XX } }, + }, + { + { "popa{P|}", { XX } }, + { "(bad)", { XX } }, + }, + { + { "bound{S|}", { Gv, Ma } }, + { "(bad)", { XX } }, + }, + { + { "arpl", { Ew, Gw } }, + { "movs{||lq|xd}", { Gv, Ed } }, + }, +}; + +static const struct dis386 three_byte_table[][256] = { + /* THREE_BYTE_0 */ + { + /* 00 */ + { "pshufb", { MX, EM } }, + { "phaddw", { MX, EM } }, + { "phaddd", { MX, EM } }, + { "phaddsw", { MX, EM } }, + { "pmaddubsw", { MX, EM } }, + { "phsubw", { MX, EM } }, + { "phsubd", { MX, EM } }, + { "phsubsw", { MX, EM } }, + /* 08 */ + { "psignb", { MX, EM } }, + { "psignw", { MX, EM } }, + { "psignd", { MX, EM } }, + { "pmulhrsw", { MX, EM } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 10 */ + { PREGRP39 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { PREGRP40 }, + { PREGRP41 }, + { "(bad)", { XX } }, + { PREGRP42 }, + /* 18 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "pabsb", { MX, EM } }, + { "pabsw", { MX, EM } }, + { "pabsd", { MX, EM } }, + { "(bad)", { XX } }, + /* 20 */ + { PREGRP43 }, + { PREGRP44 }, + { PREGRP45 }, + { PREGRP46 }, + { PREGRP47 }, + { PREGRP48 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 28 */ + { PREGRP49 }, + { PREGRP50 }, + { PREGRP51 }, + { PREGRP52 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 30 */ + { PREGRP53 }, + { PREGRP54 }, + { PREGRP55 }, + { PREGRP56 }, + { PREGRP57 }, + { PREGRP58 }, + { "(bad)", { XX } }, + { PREGRP86 }, + /* 38 */ + { PREGRP59 }, + { PREGRP60 }, + { PREGRP61 }, + { PREGRP62 }, + { PREGRP63 }, + { PREGRP64 }, + { PREGRP65 }, + { PREGRP66 }, + /* 40 */ + { PREGRP67 }, + { PREGRP68 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 48 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 50 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 58 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 60 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 68 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 70 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 78 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 80 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 88 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 90 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 98 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* a0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* a8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* b0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* b8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* c0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* c8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* d0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* d8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* e0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* e8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* f0 */ + { PREGRP87 }, + { PREGRP88 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* f8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* THREE_BYTE_1 */ + { + /* 00 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 08 */ + { PREGRP69 }, + { PREGRP70 }, + { PREGRP71 }, + { PREGRP72 }, + { PREGRP73 }, + { PREGRP74 }, + { PREGRP75 }, + { "palignr", { MX, EM, Ib } }, + /* 10 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { PREGRP76 }, + { PREGRP77 }, + { PREGRP78 }, + { PREGRP79 }, + /* 18 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 20 */ + { PREGRP80 }, + { PREGRP81 }, + { PREGRP82 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 28 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 30 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 38 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 40 */ + { PREGRP83 }, + { PREGRP84 }, + { PREGRP85 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 48 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 50 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 58 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 60 */ + { PREGRP89 }, + { PREGRP90 }, + { PREGRP91 }, + { PREGRP92 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 68 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 70 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 78 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 80 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 88 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 90 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* 98 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* a0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* a8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* b0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* b8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* c0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* c8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* d0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* d8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* e0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* e8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* f0 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + /* f8 */ + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + } +}; + +#define INTERNAL_DISASSEMBLER_ERROR _("") + +static void +ckprefix (void) +{ + int newrex; + rex = 0; + prefixes = 0; + used_prefixes = 0; + rex_used = 0; + while (1) + { + FETCH_DATA (the_info, codep + 1); + newrex = 0; + switch (*codep) + { + /* REX prefixes family. */ + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4a: + case 0x4b: + case 0x4c: + case 0x4d: + case 0x4e: + case 0x4f: + if (address_mode == mode_64bit) + newrex = *codep; + else + return; + break; + case 0xf3: + prefixes |= PREFIX_REPZ; + break; + case 0xf2: + prefixes |= PREFIX_REPNZ; + break; + case 0xf0: + prefixes |= PREFIX_LOCK; + break; + case 0x2e: + prefixes |= PREFIX_CS; + break; + case 0x36: + prefixes |= PREFIX_SS; + break; + case 0x3e: + prefixes |= PREFIX_DS; + break; + case 0x26: + prefixes |= PREFIX_ES; + break; + case 0x64: + prefixes |= PREFIX_FS; + break; + case 0x65: + prefixes |= PREFIX_GS; + break; + case 0x66: + prefixes |= PREFIX_DATA; + break; + case 0x67: + prefixes |= PREFIX_ADDR; + break; + case FWAIT_OPCODE: + /* fwait is really an instruction. If there are prefixes + before the fwait, they belong to the fwait, *not* to the + following instruction. */ + if (prefixes || rex) + { + prefixes |= PREFIX_FWAIT; + codep++; + return; + } + prefixes = PREFIX_FWAIT; + break; + default: + return; + } + /* Rex is ignored when followed by another prefix. */ + if (rex) + { + rex_used = rex; + return; + } + rex = newrex; + codep++; + } +} + +/* Return the name of the prefix byte PREF, or NULL if PREF is not a + prefix byte. */ + +static const char * +prefix_name (int pref, int sizeflag) +{ + static const char * const rexes [16] = + { + "rex", /* 0x40 */ + "rex.B", /* 0x41 */ + "rex.X", /* 0x42 */ + "rex.XB", /* 0x43 */ + "rex.R", /* 0x44 */ + "rex.RB", /* 0x45 */ + "rex.RX", /* 0x46 */ + "rex.RXB", /* 0x47 */ + "rex.W", /* 0x48 */ + "rex.WB", /* 0x49 */ + "rex.WX", /* 0x4a */ + "rex.WXB", /* 0x4b */ + "rex.WR", /* 0x4c */ + "rex.WRB", /* 0x4d */ + "rex.WRX", /* 0x4e */ + "rex.WRXB", /* 0x4f */ + }; + + switch (pref) + { + /* REX prefixes family. */ + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4a: + case 0x4b: + case 0x4c: + case 0x4d: + case 0x4e: + case 0x4f: + return rexes [pref - 0x40]; + case 0xf3: + return "repz"; + case 0xf2: + return "repnz"; + case 0xf0: + return "lock"; + case 0x2e: + return "cs"; + case 0x36: + return "ss"; + case 0x3e: + return "ds"; + case 0x26: + return "es"; + case 0x64: + return "fs"; + case 0x65: + return "gs"; + case 0x66: + return (sizeflag & DFLAG) ? "data16" : "data32"; + case 0x67: + if (address_mode == mode_64bit) + return (sizeflag & AFLAG) ? "addr32" : "addr64"; + else + return (sizeflag & AFLAG) ? "addr16" : "addr32"; + case FWAIT_OPCODE: + return "fwait"; + default: + return NULL; + } +} + +static char op_out[MAX_OPERANDS][100]; +static int op_ad, op_index[MAX_OPERANDS]; +static int two_source_ops; +static bfd_vma op_address[MAX_OPERANDS]; +static bfd_vma op_riprel[MAX_OPERANDS]; +static bfd_vma start_pc; + +/* + * On the 386's of 1988, the maximum length of an instruction is 15 bytes. + * (see topic "Redundant prefixes" in the "Differences from 8086" + * section of the "Virtual 8086 Mode" chapter.) + * 'pc' should be the address of this instruction, it will + * be used to print the target address if this is a relative jump or call + * The function returns the length of this instruction in bytes. + */ + +static char intel_syntax; +static char open_char; +static char close_char; +static char separator_char; +static char scale_char; + +int +print_insn_i386 (bfd_vma pc, disassemble_info *info) +{ + intel_syntax = -1; + + return print_insn (pc, info); +} + +static int +print_insn (bfd_vma pc, disassemble_info *info) +{ + const struct dis386 *dp; + int i; + char *op_txt[MAX_OPERANDS]; + int needcomma; + unsigned char uses_DATA_prefix, uses_LOCK_prefix; + unsigned char uses_REPNZ_prefix, uses_REPZ_prefix; + int sizeflag; + const char *p; + struct dis_private priv; + unsigned char op; + + if (info->mach == bfd_mach_x86_64_intel_syntax + || info->mach == bfd_mach_x86_64) + address_mode = mode_64bit; + else + address_mode = mode_32bit; + + if (intel_syntax == (char) -1) + intel_syntax = (info->mach == bfd_mach_i386_i386_intel_syntax + || info->mach == bfd_mach_x86_64_intel_syntax); + + if (info->mach == bfd_mach_i386_i386 + || info->mach == bfd_mach_x86_64 + || info->mach == bfd_mach_i386_i386_intel_syntax + || info->mach == bfd_mach_x86_64_intel_syntax) + priv.orig_sizeflag = AFLAG | DFLAG; + else if (info->mach == bfd_mach_i386_i8086) + priv.orig_sizeflag = 0; + else + abort (); + + for (p = info->disassembler_options; p != NULL; ) + { + if (strncmp (p, "x86-64", 6) == 0) + { + address_mode = mode_64bit; + priv.orig_sizeflag = AFLAG | DFLAG; + } + else if (strncmp (p, "i386", 4) == 0) + { + address_mode = mode_32bit; + priv.orig_sizeflag = AFLAG | DFLAG; + } + else if (strncmp (p, "i8086", 5) == 0) + { + address_mode = mode_16bit; + priv.orig_sizeflag = 0; + } + else if (strncmp (p, "intel", 5) == 0) + { + intel_syntax = 1; + } + else if (strncmp (p, "att", 3) == 0) + { + intel_syntax = 0; + } + else if (strncmp (p, "addr", 4) == 0) + { + if (address_mode == mode_64bit) + { + if (p[4] == '3' && p[5] == '2') + priv.orig_sizeflag &= ~AFLAG; + else if (p[4] == '6' && p[5] == '4') + priv.orig_sizeflag |= AFLAG; + } + else + { + if (p[4] == '1' && p[5] == '6') + priv.orig_sizeflag &= ~AFLAG; + else if (p[4] == '3' && p[5] == '2') + priv.orig_sizeflag |= AFLAG; + } + } + else if (strncmp (p, "data", 4) == 0) + { + if (p[4] == '1' && p[5] == '6') + priv.orig_sizeflag &= ~DFLAG; + else if (p[4] == '3' && p[5] == '2') + priv.orig_sizeflag |= DFLAG; + } + else if (strncmp (p, "suffix", 6) == 0) + priv.orig_sizeflag |= SUFFIX_ALWAYS; + + p = strchr (p, ','); + if (p != NULL) + p++; + } + + if (intel_syntax) + { + names64 = intel_names64; + names32 = intel_names32; + names16 = intel_names16; + names8 = intel_names8; + names8rex = intel_names8rex; + names_seg = intel_names_seg; + index16 = intel_index16; + open_char = '['; + close_char = ']'; + separator_char = '+'; + scale_char = '*'; + } + else + { + names64 = att_names64; + names32 = att_names32; + names16 = att_names16; + names8 = att_names8; + names8rex = att_names8rex; + names_seg = att_names_seg; + index16 = att_index16; + open_char = '('; + close_char = ')'; + separator_char = ','; + scale_char = ','; + } + + /* The output looks better if we put 7 bytes on a line, since that + puts most long word instructions on a single line. */ + info->bytes_per_line = 7; + + info->private_data = &priv; + priv.max_fetched = priv.the_buffer; + priv.insn_start = pc; + + obuf[0] = 0; + for (i = 0; i < MAX_OPERANDS; ++i) + { + op_out[i][0] = 0; + op_index[i] = -1; + } + + the_info = info; + start_pc = pc; + start_codep = priv.the_buffer; + codep = priv.the_buffer; + + if (setjmp (priv.bailout) != 0) + { + const char *name; + + /* Getting here means we tried for data but didn't get it. That + means we have an incomplete instruction of some sort. Just + print the first byte as a prefix or a .byte pseudo-op. */ + if (codep > priv.the_buffer) + { + name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag); + if (name != NULL) + (*info->fprintf_func) (info->stream, "%s", name); + else + { + /* Just print the first byte as a .byte instruction. */ + (*info->fprintf_func) (info->stream, ".byte 0x%x", + (unsigned int) priv.the_buffer[0]); + } + + return 1; + } + + return -1; + } + + obufp = obuf; + ckprefix (); + + insn_codep = codep; + sizeflag = priv.orig_sizeflag; + + FETCH_DATA (info, codep + 1); + two_source_ops = (*codep == 0x62) || (*codep == 0xc8); + + if (((prefixes & PREFIX_FWAIT) + && ((*codep < 0xd8) || (*codep > 0xdf))) + || (rex && rex_used)) + { + const char *name; + + /* fwait not followed by floating point instruction, or rex followed + by other prefixes. Print the first prefix. */ + name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag); + if (name == NULL) + name = INTERNAL_DISASSEMBLER_ERROR; + (*info->fprintf_func) (info->stream, "%s", name); + return 1; + } + + op = 0; + if (*codep == 0x0f) + { + unsigned char threebyte; + FETCH_DATA (info, codep + 2); + threebyte = *++codep; + dp = &dis386_twobyte[threebyte]; + need_modrm = twobyte_has_modrm[*codep]; + uses_DATA_prefix = twobyte_uses_DATA_prefix[*codep]; + uses_REPNZ_prefix = twobyte_uses_REPNZ_prefix[*codep]; + uses_REPZ_prefix = twobyte_uses_REPZ_prefix[*codep]; + uses_LOCK_prefix = (*codep & ~0x02) == 0x20; + codep++; + if (dp->name == NULL && dp->op[0].bytemode == IS_3BYTE_OPCODE) + { + FETCH_DATA (info, codep + 2); + op = *codep++; + switch (threebyte) + { + case 0x38: + uses_DATA_prefix = threebyte_0x38_uses_DATA_prefix[op]; + uses_REPNZ_prefix = threebyte_0x38_uses_REPNZ_prefix[op]; + uses_REPZ_prefix = threebyte_0x38_uses_REPZ_prefix[op]; + break; + case 0x3a: + uses_DATA_prefix = threebyte_0x3a_uses_DATA_prefix[op]; + uses_REPNZ_prefix = threebyte_0x3a_uses_REPNZ_prefix[op]; + uses_REPZ_prefix = threebyte_0x3a_uses_REPZ_prefix[op]; + break; + default: + break; + } + } + } + else + { + dp = &dis386[*codep]; + need_modrm = onebyte_has_modrm[*codep]; + uses_DATA_prefix = 0; + uses_REPNZ_prefix = 0; + /* pause is 0xf3 0x90. */ + uses_REPZ_prefix = *codep == 0x90; + uses_LOCK_prefix = 0; + codep++; + } + + if (!uses_REPZ_prefix && (prefixes & PREFIX_REPZ)) + { + oappend ("repz "); + used_prefixes |= PREFIX_REPZ; + } + if (!uses_REPNZ_prefix && (prefixes & PREFIX_REPNZ)) + { + oappend ("repnz "); + used_prefixes |= PREFIX_REPNZ; + } + + if (!uses_LOCK_prefix && (prefixes & PREFIX_LOCK)) + { + oappend ("lock "); + used_prefixes |= PREFIX_LOCK; + } + + if (prefixes & PREFIX_ADDR) + { + sizeflag ^= AFLAG; + if (dp->op[2].bytemode != loop_jcxz_mode || intel_syntax) + { + if ((sizeflag & AFLAG) || address_mode == mode_64bit) + oappend ("addr32 "); + else + oappend ("addr16 "); + used_prefixes |= PREFIX_ADDR; + } + } + + if (!uses_DATA_prefix && (prefixes & PREFIX_DATA)) + { + sizeflag ^= DFLAG; + if (dp->op[2].bytemode == cond_jump_mode + && dp->op[0].bytemode == v_mode + && !intel_syntax) + { + if (sizeflag & DFLAG) + oappend ("data32 "); + else + oappend ("data16 "); + used_prefixes |= PREFIX_DATA; + } + } + + if (dp->name == NULL && dp->op[0].bytemode == IS_3BYTE_OPCODE) + { + dp = &three_byte_table[dp->op[1].bytemode][op]; + modrm.mod = (*codep >> 6) & 3; + modrm.reg = (*codep >> 3) & 7; + modrm.rm = *codep & 7; + } + else if (need_modrm) + { + FETCH_DATA (info, codep + 1); + modrm.mod = (*codep >> 6) & 3; + modrm.reg = (*codep >> 3) & 7; + modrm.rm = *codep & 7; + } + + if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE) + { + dofloat (sizeflag); + } + else + { + int index; + if (dp->name == NULL) + { + switch (dp->op[0].bytemode) + { + case USE_GROUPS: + dp = &grps[dp->op[1].bytemode][modrm.reg]; + break; + + case USE_PREFIX_USER_TABLE: + index = 0; + used_prefixes |= (prefixes & PREFIX_REPZ); + if (prefixes & PREFIX_REPZ) + index = 1; + else + { + /* We should check PREFIX_REPNZ and PREFIX_REPZ + before PREFIX_DATA. */ + used_prefixes |= (prefixes & PREFIX_REPNZ); + if (prefixes & PREFIX_REPNZ) + index = 3; + else + { + used_prefixes |= (prefixes & PREFIX_DATA); + if (prefixes & PREFIX_DATA) + index = 2; + } + } + dp = &prefix_user_table[dp->op[1].bytemode][index]; + break; + + case X86_64_SPECIAL: + index = address_mode == mode_64bit ? 1 : 0; + dp = &x86_64_table[dp->op[1].bytemode][index]; + break; + + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + break; + } + } + + if (putop (dp->name, sizeflag) == 0) + { + for (i = 0; i < MAX_OPERANDS; ++i) + { + obufp = op_out[i]; + op_ad = MAX_OPERANDS - 1 - i; + if (dp->op[i].rtn) + (*dp->op[i].rtn) (dp->op[i].bytemode, sizeflag); + } + } + } + + /* See if any prefixes were not used. If so, print the first one + separately. If we don't do this, we'll wind up printing an + instruction stream which does not precisely correspond to the + bytes we are disassembling. */ + if ((prefixes & ~used_prefixes) != 0) + { + const char *name; + + name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag); + if (name == NULL) + name = INTERNAL_DISASSEMBLER_ERROR; + (*info->fprintf_func) (info->stream, "%s", name); + return 1; + } + if (rex & ~rex_used) + { + const char *name; + name = prefix_name (rex | 0x40, priv.orig_sizeflag); + if (name == NULL) + name = INTERNAL_DISASSEMBLER_ERROR; + (*info->fprintf_func) (info->stream, "%s ", name); + } + + obufp = obuf + strlen (obuf); + for (i = strlen (obuf); i < 6; i++) + oappend (" "); + oappend (" "); + (*info->fprintf_func) (info->stream, "%s", obuf); + + /* The enter and bound instructions are printed with operands in the same + order as the intel book; everything else is printed in reverse order. */ + if (intel_syntax || two_source_ops) + { + bfd_vma riprel; + + for (i = 0; i < MAX_OPERANDS; ++i) + op_txt[i] = op_out[i]; + + for (i = 0; i < (MAX_OPERANDS >> 1); ++i) + { + op_ad = op_index[i]; + op_index[i] = op_index[MAX_OPERANDS - 1 - i]; + op_index[MAX_OPERANDS - 1 - i] = op_ad; + riprel = op_riprel[i]; + op_riprel[i] = op_riprel [MAX_OPERANDS - 1 - i]; + op_riprel[MAX_OPERANDS - 1 - i] = riprel; + } + } + else + { + for (i = 0; i < MAX_OPERANDS; ++i) + op_txt[MAX_OPERANDS - 1 - i] = op_out[i]; + } + + needcomma = 0; + for (i = 0; i < MAX_OPERANDS; ++i) + if (*op_txt[i]) + { + if (needcomma) + (*info->fprintf_func) (info->stream, ","); + if (op_index[i] != -1 && !op_riprel[i]) + (*info->print_address_func) ((bfd_vma) op_address[op_index[i]], info); + else + (*info->fprintf_func) (info->stream, "%s", op_txt[i]); + needcomma = 1; + } + + for (i = 0; i < MAX_OPERANDS; i++) + if (op_index[i] != -1 && op_riprel[i]) + { + (*info->fprintf_func) (info->stream, " # "); + (*info->print_address_func) ((bfd_vma) (start_pc + codep - start_codep + + op_address[op_index[i]]), info); + break; + } + return codep - priv.the_buffer; +} + +static const char *float_mem[] = { + /* d8 */ + "fadd{s||s|}", + "fmul{s||s|}", + "fcom{s||s|}", + "fcomp{s||s|}", + "fsub{s||s|}", + "fsubr{s||s|}", + "fdiv{s||s|}", + "fdivr{s||s|}", + /* d9 */ + "fld{s||s|}", + "(bad)", + "fst{s||s|}", + "fstp{s||s|}", + "fldenvIC", + "fldcw", + "fNstenvIC", + "fNstcw", + /* da */ + "fiadd{l||l|}", + "fimul{l||l|}", + "ficom{l||l|}", + "ficomp{l||l|}", + "fisub{l||l|}", + "fisubr{l||l|}", + "fidiv{l||l|}", + "fidivr{l||l|}", + /* db */ + "fild{l||l|}", + "fisttp{l||l|}", + "fist{l||l|}", + "fistp{l||l|}", + "(bad)", + "fld{t||t|}", + "(bad)", + "fstp{t||t|}", + /* dc */ + "fadd{l||l|}", + "fmul{l||l|}", + "fcom{l||l|}", + "fcomp{l||l|}", + "fsub{l||l|}", + "fsubr{l||l|}", + "fdiv{l||l|}", + "fdivr{l||l|}", + /* dd */ + "fld{l||l|}", + "fisttp{ll||ll|}", + "fst{l||l|}", + "fstp{l||l|}", + "frstorIC", + "(bad)", + "fNsaveIC", + "fNstsw", + /* de */ + "fiadd", + "fimul", + "ficom", + "ficomp", + "fisub", + "fisubr", + "fidiv", + "fidivr", + /* df */ + "fild", + "fisttp", + "fist", + "fistp", + "fbld", + "fild{ll||ll|}", + "fbstp", + "fistp{ll||ll|}", +}; + +static const unsigned char float_mem_mode[] = { + /* d8 */ + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + /* d9 */ + d_mode, + 0, + d_mode, + d_mode, + 0, + w_mode, + 0, + w_mode, + /* da */ + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + d_mode, + /* db */ + d_mode, + d_mode, + d_mode, + d_mode, + 0, + t_mode, + 0, + t_mode, + /* dc */ + q_mode, + q_mode, + q_mode, + q_mode, + q_mode, + q_mode, + q_mode, + q_mode, + /* dd */ + q_mode, + q_mode, + q_mode, + q_mode, + 0, + 0, + 0, + w_mode, + /* de */ + w_mode, + w_mode, + w_mode, + w_mode, + w_mode, + w_mode, + w_mode, + w_mode, + /* df */ + w_mode, + w_mode, + w_mode, + w_mode, + t_mode, + q_mode, + t_mode, + q_mode +}; + +#define ST { OP_ST, 0 } +#define STi { OP_STi, 0 } + +#define FGRPd9_2 NULL, { { NULL, 0 } } +#define FGRPd9_4 NULL, { { NULL, 1 } } +#define FGRPd9_5 NULL, { { NULL, 2 } } +#define FGRPd9_6 NULL, { { NULL, 3 } } +#define FGRPd9_7 NULL, { { NULL, 4 } } +#define FGRPda_5 NULL, { { NULL, 5 } } +#define FGRPdb_4 NULL, { { NULL, 6 } } +#define FGRPde_3 NULL, { { NULL, 7 } } +#define FGRPdf_4 NULL, { { NULL, 8 } } + +static const struct dis386 float_reg[][8] = { + /* d8 */ + { + { "fadd", { ST, STi } }, + { "fmul", { ST, STi } }, + { "fcom", { STi } }, + { "fcomp", { STi } }, + { "fsub", { ST, STi } }, + { "fsubr", { ST, STi } }, + { "fdiv", { ST, STi } }, + { "fdivr", { ST, STi } }, + }, + /* d9 */ + { + { "fld", { STi } }, + { "fxch", { STi } }, + { FGRPd9_2 }, + { "(bad)", { XX } }, + { FGRPd9_4 }, + { FGRPd9_5 }, + { FGRPd9_6 }, + { FGRPd9_7 }, + }, + /* da */ + { + { "fcmovb", { ST, STi } }, + { "fcmove", { ST, STi } }, + { "fcmovbe",{ ST, STi } }, + { "fcmovu", { ST, STi } }, + { "(bad)", { XX } }, + { FGRPda_5 }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* db */ + { + { "fcmovnb",{ ST, STi } }, + { "fcmovne",{ ST, STi } }, + { "fcmovnbe",{ ST, STi } }, + { "fcmovnu",{ ST, STi } }, + { FGRPdb_4 }, + { "fucomi", { ST, STi } }, + { "fcomi", { ST, STi } }, + { "(bad)", { XX } }, + }, + /* dc */ + { + { "fadd", { STi, ST } }, + { "fmul", { STi, ST } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, +#if SYSV386_COMPAT + { "fsub", { STi, ST } }, + { "fsubr", { STi, ST } }, + { "fdiv", { STi, ST } }, + { "fdivr", { STi, ST } }, +#else + { "fsubr", { STi, ST } }, + { "fsub", { STi, ST } }, + { "fdivr", { STi, ST } }, + { "fdiv", { STi, ST } }, +#endif + }, + /* dd */ + { + { "ffree", { STi } }, + { "(bad)", { XX } }, + { "fst", { STi } }, + { "fstp", { STi } }, + { "fucom", { STi } }, + { "fucomp", { STi } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + }, + /* de */ + { + { "faddp", { STi, ST } }, + { "fmulp", { STi, ST } }, + { "(bad)", { XX } }, + { FGRPde_3 }, +#if SYSV386_COMPAT + { "fsubp", { STi, ST } }, + { "fsubrp", { STi, ST } }, + { "fdivp", { STi, ST } }, + { "fdivrp", { STi, ST } }, +#else + { "fsubrp", { STi, ST } }, + { "fsubp", { STi, ST } }, + { "fdivrp", { STi, ST } }, + { "fdivp", { STi, ST } }, +#endif + }, + /* df */ + { + { "ffreep", { STi } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { "(bad)", { XX } }, + { FGRPdf_4 }, + { "fucomip", { ST, STi } }, + { "fcomip", { ST, STi } }, + { "(bad)", { XX } }, + }, +}; + +static const char *fgrps[][8] = { + /* d9_2 0 */ + { + "fnop","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)", + }, + + /* d9_4 1 */ + { + "fchs","fabs","(bad)","(bad)","ftst","fxam","(bad)","(bad)", + }, + + /* d9_5 2 */ + { + "fld1","fldl2t","fldl2e","fldpi","fldlg2","fldln2","fldz","(bad)", + }, + + /* d9_6 3 */ + { + "f2xm1","fyl2x","fptan","fpatan","fxtract","fprem1","fdecstp","fincstp", + }, + + /* d9_7 4 */ + { + "fprem","fyl2xp1","fsqrt","fsincos","frndint","fscale","fsin","fcos", + }, + + /* da_5 5 */ + { + "(bad)","fucompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)", + }, + + /* db_4 6 */ + { + "feni(287 only)","fdisi(287 only)","fNclex","fNinit", + "fNsetpm(287 only)","(bad)","(bad)","(bad)", + }, + + /* de_3 7 */ + { + "(bad)","fcompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)", + }, + + /* df_4 8 */ + { + "fNstsw","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)", + }, +}; + +static void +dofloat (int sizeflag) +{ + const struct dis386 *dp; + unsigned char floatop; + + floatop = codep[-1]; + + if (modrm.mod != 3) + { + int fp_indx = (floatop - 0xd8) * 8 + modrm.reg; + + putop (float_mem[fp_indx], sizeflag); + obufp = op_out[0]; + op_ad = 2; + OP_E (float_mem_mode[fp_indx], sizeflag); + return; + } + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + + dp = &float_reg[floatop - 0xd8][modrm.reg]; + if (dp->name == NULL) + { + putop (fgrps[dp->op[0].bytemode][modrm.rm], sizeflag); + + /* Instruction fnstsw is only one with strange arg. */ + if (floatop == 0xdf && codep[-1] == 0xe0) + pstrcpy (op_out[0], sizeof(op_out[0]), names16[0]); + } + else + { + putop (dp->name, sizeflag); + + obufp = op_out[0]; + op_ad = 2; + if (dp->op[0].rtn) + (*dp->op[0].rtn) (dp->op[0].bytemode, sizeflag); + + obufp = op_out[1]; + op_ad = 1; + if (dp->op[1].rtn) + (*dp->op[1].rtn) (dp->op[1].bytemode, sizeflag); + } +} + +static void +OP_ST (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + oappend ("%st" + intel_syntax); +} + +static void +OP_STi (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + snprintf (scratchbuf, sizeof(scratchbuf), "%%st(%d)", modrm.rm); + oappend (scratchbuf + intel_syntax); +} + +/* Capital letters in template are macros. */ +static int +putop (const char *template, int sizeflag) +{ + const char *p; + int alt = 0; + + for (p = template; *p; p++) + { + switch (*p) + { + default: + *obufp++ = *p; + break; + case '{': + alt = 0; + if (intel_syntax) + alt += 1; + if (address_mode == mode_64bit) + alt += 2; + while (alt != 0) + { + while (*++p != '|') + { + if (*p == '}') + { + /* Alternative not valid. */ + pstrcpy (obuf, sizeof(obuf), "(bad)"); + obufp = obuf + 5; + return 1; + } + else if (*p == '\0') + abort (); + } + alt--; + } + /* Fall through. */ + case 'I': + alt = 1; + continue; + case '|': + while (*++p != '}') + { + if (*p == '\0') + abort (); + } + break; + case '}': + break; + case 'A': + if (intel_syntax) + break; + if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) + *obufp++ = 'b'; + break; + case 'B': + if (intel_syntax) + break; + if (sizeflag & SUFFIX_ALWAYS) + *obufp++ = 'b'; + break; + case 'C': + if (intel_syntax && !alt) + break; + if ((prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS)) + { + if (sizeflag & DFLAG) + *obufp++ = intel_syntax ? 'd' : 'l'; + else + *obufp++ = intel_syntax ? 'w' : 's'; + used_prefixes |= (prefixes & PREFIX_DATA); + } + break; + case 'D': + if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS)) + break; + USED_REX (REX_W); + if (modrm.mod == 3) + { + if (rex & REX_W) + *obufp++ = 'q'; + else if (sizeflag & DFLAG) + *obufp++ = intel_syntax ? 'd' : 'l'; + else + *obufp++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); + } + else + *obufp++ = 'w'; + break; + case 'E': /* For jcxz/jecxz */ + if (address_mode == mode_64bit) + { + if (sizeflag & AFLAG) + *obufp++ = 'r'; + else + *obufp++ = 'e'; + } + else + if (sizeflag & AFLAG) + *obufp++ = 'e'; + used_prefixes |= (prefixes & PREFIX_ADDR); + break; + case 'F': + if (intel_syntax) + break; + if ((prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS)) + { + if (sizeflag & AFLAG) + *obufp++ = address_mode == mode_64bit ? 'q' : 'l'; + else + *obufp++ = address_mode == mode_64bit ? 'l' : 'w'; + used_prefixes |= (prefixes & PREFIX_ADDR); + } + break; + case 'G': + if (intel_syntax || (obufp[-1] != 's' && !(sizeflag & SUFFIX_ALWAYS))) + break; + if ((rex & REX_W) || (sizeflag & DFLAG)) + *obufp++ = 'l'; + else + *obufp++ = 'w'; + if (!(rex & REX_W)) + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case 'H': + if (intel_syntax) + break; + if ((prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_CS + || (prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_DS) + { + used_prefixes |= prefixes & (PREFIX_CS | PREFIX_DS); + *obufp++ = ','; + *obufp++ = 'p'; + if (prefixes & PREFIX_DS) + *obufp++ = 't'; + else + *obufp++ = 'n'; + } + break; + case 'J': + if (intel_syntax) + break; + *obufp++ = 'l'; + break; + case 'K': + USED_REX (REX_W); + if (rex & REX_W) + *obufp++ = 'q'; + else + *obufp++ = 'd'; + break; + case 'Z': + if (intel_syntax) + break; + if (address_mode == mode_64bit && (sizeflag & SUFFIX_ALWAYS)) + { + *obufp++ = 'q'; + break; + } + /* Fall through. */ + case 'L': + if (intel_syntax) + break; + if (sizeflag & SUFFIX_ALWAYS) + *obufp++ = 'l'; + break; + case 'N': + if ((prefixes & PREFIX_FWAIT) == 0) + *obufp++ = 'n'; + else + used_prefixes |= PREFIX_FWAIT; + break; + case 'O': + USED_REX (REX_W); + if (rex & REX_W) + *obufp++ = 'o'; + else if (intel_syntax && (sizeflag & DFLAG)) + *obufp++ = 'q'; + else + *obufp++ = 'd'; + if (!(rex & REX_W)) + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case 'T': + if (intel_syntax) + break; + if (address_mode == mode_64bit && (sizeflag & DFLAG)) + { + *obufp++ = 'q'; + break; + } + /* Fall through. */ + case 'P': + if (intel_syntax) + break; + if ((prefixes & PREFIX_DATA) + || (rex & REX_W) + || (sizeflag & SUFFIX_ALWAYS)) + { + USED_REX (REX_W); + if (rex & REX_W) + *obufp++ = 'q'; + else + { + if (sizeflag & DFLAG) + *obufp++ = 'l'; + else + *obufp++ = 'w'; + } + used_prefixes |= (prefixes & PREFIX_DATA); + } + break; + case 'U': + if (intel_syntax) + break; + if (address_mode == mode_64bit && (sizeflag & DFLAG)) + { + if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) + *obufp++ = 'q'; + break; + } + /* Fall through. */ + case 'Q': + if (intel_syntax && !alt) + break; + USED_REX (REX_W); + if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) + { + if (rex & REX_W) + *obufp++ = 'q'; + else + { + if (sizeflag & DFLAG) + *obufp++ = intel_syntax ? 'd' : 'l'; + else + *obufp++ = 'w'; + } + used_prefixes |= (prefixes & PREFIX_DATA); + } + break; + case 'R': + USED_REX (REX_W); + if (rex & REX_W) + *obufp++ = 'q'; + else if (sizeflag & DFLAG) + { + if (intel_syntax) + *obufp++ = 'd'; + else + *obufp++ = 'l'; + } + else + *obufp++ = 'w'; + if (intel_syntax && !p[1] + && ((rex & REX_W) || (sizeflag & DFLAG))) + *obufp++ = 'e'; + if (!(rex & REX_W)) + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case 'V': + if (intel_syntax) + break; + if (address_mode == mode_64bit && (sizeflag & DFLAG)) + { + if (sizeflag & SUFFIX_ALWAYS) + *obufp++ = 'q'; + break; + } + /* Fall through. */ + case 'S': + if (intel_syntax) + break; + if (sizeflag & SUFFIX_ALWAYS) + { + if (rex & REX_W) + *obufp++ = 'q'; + else + { + if (sizeflag & DFLAG) + *obufp++ = 'l'; + else + *obufp++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); + } + } + break; + case 'X': + if (prefixes & PREFIX_DATA) + *obufp++ = 'd'; + else + *obufp++ = 's'; + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case 'Y': + if (intel_syntax) + break; + if (rex & REX_W) + { + USED_REX (REX_W); + *obufp++ = 'q'; + } + break; + /* implicit operand size 'l' for i386 or 'q' for x86-64 */ + case 'W': + /* operand size flag for cwtl, cbtw */ + USED_REX (REX_W); + if (rex & REX_W) + { + if (intel_syntax) + *obufp++ = 'd'; + else + *obufp++ = 'l'; + } + else if (sizeflag & DFLAG) + *obufp++ = 'w'; + else + *obufp++ = 'b'; + if (!(rex & REX_W)) + used_prefixes |= (prefixes & PREFIX_DATA); + break; + } + alt = 0; + } + *obufp = 0; + return 0; +} + +static void +oappend (const char *s) +{ + strcpy (obufp, s); + obufp += strlen (s); +} + +static void +append_seg (void) +{ + if (prefixes & PREFIX_CS) + { + used_prefixes |= PREFIX_CS; + oappend ("%cs:" + intel_syntax); + } + if (prefixes & PREFIX_DS) + { + used_prefixes |= PREFIX_DS; + oappend ("%ds:" + intel_syntax); + } + if (prefixes & PREFIX_SS) + { + used_prefixes |= PREFIX_SS; + oappend ("%ss:" + intel_syntax); + } + if (prefixes & PREFIX_ES) + { + used_prefixes |= PREFIX_ES; + oappend ("%es:" + intel_syntax); + } + if (prefixes & PREFIX_FS) + { + used_prefixes |= PREFIX_FS; + oappend ("%fs:" + intel_syntax); + } + if (prefixes & PREFIX_GS) + { + used_prefixes |= PREFIX_GS; + oappend ("%gs:" + intel_syntax); + } +} + +static void +OP_indirE (int bytemode, int sizeflag) +{ + if (!intel_syntax) + oappend ("*"); + OP_E (bytemode, sizeflag); +} + +static void +print_operand_value (char *buf, size_t bufsize, int hex, bfd_vma disp) +{ + if (address_mode == mode_64bit) + { + if (hex) + { + char tmp[30]; + int i; + buf[0] = '0'; + buf[1] = 'x'; + snprintf_vma (tmp, sizeof(tmp), disp); + for (i = 0; tmp[i] == '0' && tmp[i + 1]; i++); + pstrcpy (buf + 2, bufsize - 2, tmp + i); + } + else + { + bfd_signed_vma v = disp; + char tmp[30]; + int i; + if (v < 0) + { + *(buf++) = '-'; + v = -disp; + /* Check for possible overflow on 0x8000000000000000. */ + if (v < 0) + { + pstrcpy (buf, bufsize, "9223372036854775808"); + return; + } + } + if (!v) + { + pstrcpy (buf, bufsize, "0"); + return; + } + + i = 0; + tmp[29] = 0; + while (v) + { + tmp[28 - i] = (v % 10) + '0'; + v /= 10; + i++; + } + pstrcpy (buf, bufsize, tmp + 29 - i); + } + } + else + { + if (hex) + snprintf (buf, bufsize, "0x%x", (unsigned int) disp); + else + snprintf (buf, bufsize, "%d", (int) disp); + } +} + +/* Put DISP in BUF as signed hex number. */ + +static void +print_displacement (char *buf, bfd_vma disp) +{ + bfd_signed_vma val = disp; + char tmp[30]; + int i, j = 0; + + if (val < 0) + { + buf[j++] = '-'; + val = -disp; + + /* Check for possible overflow. */ + if (val < 0) + { + switch (address_mode) + { + case mode_64bit: + strcpy (buf + j, "0x8000000000000000"); + break; + case mode_32bit: + strcpy (buf + j, "0x80000000"); + break; + case mode_16bit: + strcpy (buf + j, "0x8000"); + break; + } + return; + } + } + + buf[j++] = '0'; + buf[j++] = 'x'; + + snprintf_vma (tmp, sizeof(tmp), val); + for (i = 0; tmp[i] == '0'; i++) + continue; + if (tmp[i] == '\0') + i--; + strcpy (buf + j, tmp + i); +} + +static void +intel_operand_size (int bytemode, int sizeflag) +{ + switch (bytemode) + { + case b_mode: + case dqb_mode: + oappend ("BYTE PTR "); + break; + case w_mode: + case dqw_mode: + oappend ("WORD PTR "); + break; + case stack_v_mode: + if (address_mode == mode_64bit && (sizeflag & DFLAG)) + { + oappend ("QWORD PTR "); + used_prefixes |= (prefixes & PREFIX_DATA); + break; + } + /* FALLTHRU */ + case v_mode: + case dq_mode: + USED_REX (REX_W); + if (rex & REX_W) + oappend ("QWORD PTR "); + else if ((sizeflag & DFLAG) || bytemode == dq_mode) + oappend ("DWORD PTR "); + else + oappend ("WORD PTR "); + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case z_mode: + if ((rex & REX_W) || (sizeflag & DFLAG)) + *obufp++ = 'D'; + oappend ("WORD PTR "); + if (!(rex & REX_W)) + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case d_mode: + case dqd_mode: + oappend ("DWORD PTR "); + break; + case q_mode: + oappend ("QWORD PTR "); + break; + case m_mode: + if (address_mode == mode_64bit) + oappend ("QWORD PTR "); + else + oappend ("DWORD PTR "); + break; + case f_mode: + if (sizeflag & DFLAG) + oappend ("FWORD PTR "); + else + oappend ("DWORD PTR "); + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case t_mode: + oappend ("TBYTE PTR "); + break; + case x_mode: + oappend ("XMMWORD PTR "); + break; + case o_mode: + oappend ("OWORD PTR "); + break; + default: + break; + } +} + +static void +OP_E (int bytemode, int sizeflag) +{ + bfd_vma disp; + int add = 0; + int riprel = 0; + USED_REX (REX_B); + if (rex & REX_B) + add += 8; + + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + + if (modrm.mod == 3) + { + switch (bytemode) + { + case b_mode: + USED_REX (0); + if (rex) + oappend (names8rex[modrm.rm + add]); + else + oappend (names8[modrm.rm + add]); + break; + case w_mode: + oappend (names16[modrm.rm + add]); + break; + case d_mode: + oappend (names32[modrm.rm + add]); + break; + case q_mode: + oappend (names64[modrm.rm + add]); + break; + case m_mode: + if (address_mode == mode_64bit) + oappend (names64[modrm.rm + add]); + else + oappend (names32[modrm.rm + add]); + break; + case stack_v_mode: + if (address_mode == mode_64bit && (sizeflag & DFLAG)) + { + oappend (names64[modrm.rm + add]); + used_prefixes |= (prefixes & PREFIX_DATA); + break; + } + bytemode = v_mode; + /* FALLTHRU */ + case v_mode: + case dq_mode: + case dqb_mode: + case dqd_mode: + case dqw_mode: + USED_REX (REX_W); + if (rex & REX_W) + oappend (names64[modrm.rm + add]); + else if ((sizeflag & DFLAG) || bytemode != v_mode) + oappend (names32[modrm.rm + add]); + else + oappend (names16[modrm.rm + add]); + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case 0: + break; + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + break; + } + return; + } + + disp = 0; + if (intel_syntax) + intel_operand_size (bytemode, sizeflag); + append_seg (); + + if ((sizeflag & AFLAG) || address_mode == mode_64bit) + { + /* 32/64 bit address mode */ + int havedisp; + int havesib; + int havebase; + int base; + int index = 0; + int scale = 0; + + havesib = 0; + havebase = 1; + base = modrm.rm; + + if (base == 4) + { + havesib = 1; + FETCH_DATA (the_info, codep + 1); + index = (*codep >> 3) & 7; + if (address_mode == mode_64bit || index != 0x4) + /* When INDEX == 0x4 in 32 bit mode, SCALE is ignored. */ + scale = (*codep >> 6) & 3; + base = *codep & 7; + USED_REX (REX_X); + if (rex & REX_X) + index += 8; + codep++; + } + base += add; + + switch (modrm.mod) + { + case 0: + if ((base & 7) == 5) + { + havebase = 0; + if (address_mode == mode_64bit && !havesib) + riprel = 1; + disp = get32s (); + } + break; + case 1: + FETCH_DATA (the_info, codep + 1); + disp = *codep++; + if ((disp & 0x80) != 0) + disp -= 0x100; + break; + case 2: + disp = get32s (); + break; + } + + havedisp = havebase || (havesib && (index != 4 || scale != 0)); + + if (!intel_syntax) + if (modrm.mod != 0 || (base & 7) == 5) + { + if (havedisp || riprel) + print_displacement (scratchbuf, disp); + else + print_operand_value (scratchbuf, sizeof(scratchbuf), 1, disp); + oappend (scratchbuf); + if (riprel) + { + set_op (disp, 1); + oappend ("(%rip)"); + } + } + + if (havedisp || (intel_syntax && riprel)) + { + *obufp++ = open_char; + if (intel_syntax && riprel) + { + set_op (disp, 1); + oappend ("rip"); + } + *obufp = '\0'; + if (havebase) + oappend (address_mode == mode_64bit && (sizeflag & AFLAG) + ? names64[base] : names32[base]); + if (havesib) + { + if (index != 4) + { + if (!intel_syntax || havebase) + { + *obufp++ = separator_char; + *obufp = '\0'; + } + oappend (address_mode == mode_64bit && (sizeflag & AFLAG) + ? names64[index] : names32[index]); + } + if (scale != 0 || (!intel_syntax && index != 4)) + { + *obufp++ = scale_char; + *obufp = '\0'; + snprintf (scratchbuf, sizeof(scratchbuf), "%d", 1 << scale); + oappend (scratchbuf); + } + } + if (intel_syntax + && (disp || modrm.mod != 0 || (base & 7) == 5)) + { + if ((bfd_signed_vma) disp >= 0) + { + *obufp++ = '+'; + *obufp = '\0'; + } + else if (modrm.mod != 1) + { + *obufp++ = '-'; + *obufp = '\0'; + disp = - (bfd_signed_vma) disp; + } + + print_displacement (scratchbuf, disp); + oappend (scratchbuf); + } + + *obufp++ = close_char; + *obufp = '\0'; + } + else if (intel_syntax) + { + if (modrm.mod != 0 || (base & 7) == 5) + { + if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS + | PREFIX_ES | PREFIX_FS | PREFIX_GS)) + ; + else + { + oappend (names_seg[ds_reg - es_reg]); + oappend (":"); + } + print_operand_value (scratchbuf, sizeof(scratchbuf), 1, disp); + oappend (scratchbuf); + } + } + } + else + { /* 16 bit address mode */ + switch (modrm.mod) + { + case 0: + if (modrm.rm == 6) + { + disp = get16 (); + if ((disp & 0x8000) != 0) + disp -= 0x10000; + } + break; + case 1: + FETCH_DATA (the_info, codep + 1); + disp = *codep++; + if ((disp & 0x80) != 0) + disp -= 0x100; + break; + case 2: + disp = get16 (); + if ((disp & 0x8000) != 0) + disp -= 0x10000; + break; + } + + if (!intel_syntax) + if (modrm.mod != 0 || modrm.rm == 6) + { + print_displacement (scratchbuf, disp); + oappend (scratchbuf); + } + + if (modrm.mod != 0 || modrm.rm != 6) + { + *obufp++ = open_char; + *obufp = '\0'; + oappend (index16[modrm.rm]); + if (intel_syntax + && (disp || modrm.mod != 0 || modrm.rm == 6)) + { + if ((bfd_signed_vma) disp >= 0) + { + *obufp++ = '+'; + *obufp = '\0'; + } + else if (modrm.mod != 1) + { + *obufp++ = '-'; + *obufp = '\0'; + disp = - (bfd_signed_vma) disp; + } + + print_displacement (scratchbuf, disp); + oappend (scratchbuf); + } + + *obufp++ = close_char; + *obufp = '\0'; + } + else if (intel_syntax) + { + if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS + | PREFIX_ES | PREFIX_FS | PREFIX_GS)) + ; + else + { + oappend (names_seg[ds_reg - es_reg]); + oappend (":"); + } + print_operand_value (scratchbuf, sizeof(scratchbuf), 1, + disp & 0xffff); + oappend (scratchbuf); + } + } +} + +static void +OP_G (int bytemode, int sizeflag) +{ + int add = 0; + USED_REX (REX_R); + if (rex & REX_R) + add += 8; + switch (bytemode) + { + case b_mode: + USED_REX (0); + if (rex) + oappend (names8rex[modrm.reg + add]); + else + oappend (names8[modrm.reg + add]); + break; + case w_mode: + oappend (names16[modrm.reg + add]); + break; + case d_mode: + oappend (names32[modrm.reg + add]); + break; + case q_mode: + oappend (names64[modrm.reg + add]); + break; + case v_mode: + case dq_mode: + case dqb_mode: + case dqd_mode: + case dqw_mode: + USED_REX (REX_W); + if (rex & REX_W) + oappend (names64[modrm.reg + add]); + else if ((sizeflag & DFLAG) || bytemode != v_mode) + oappend (names32[modrm.reg + add]); + else + oappend (names16[modrm.reg + add]); + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case m_mode: + if (address_mode == mode_64bit) + oappend (names64[modrm.reg + add]); + else + oappend (names32[modrm.reg + add]); + break; + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + break; + } +} + +static bfd_vma +get64 (void) +{ + bfd_vma x; +#ifdef BFD64 + unsigned int a; + unsigned int b; + + FETCH_DATA (the_info, codep + 8); + a = *codep++ & 0xff; + a |= (*codep++ & 0xff) << 8; + a |= (*codep++ & 0xff) << 16; + a |= (*codep++ & 0xff) << 24; + b = *codep++ & 0xff; + b |= (*codep++ & 0xff) << 8; + b |= (*codep++ & 0xff) << 16; + b |= (*codep++ & 0xff) << 24; + x = a + ((bfd_vma) b << 32); +#else + abort (); + x = 0; +#endif + return x; +} + +static bfd_signed_vma +get32 (void) +{ + bfd_signed_vma x = 0; + + FETCH_DATA (the_info, codep + 4); + x = *codep++ & (bfd_signed_vma) 0xff; + x |= (*codep++ & (bfd_signed_vma) 0xff) << 8; + x |= (*codep++ & (bfd_signed_vma) 0xff) << 16; + x |= (*codep++ & (bfd_signed_vma) 0xff) << 24; + return x; +} + +static bfd_signed_vma +get32s (void) +{ + bfd_signed_vma x = 0; + + FETCH_DATA (the_info, codep + 4); + x = *codep++ & (bfd_signed_vma) 0xff; + x |= (*codep++ & (bfd_signed_vma) 0xff) << 8; + x |= (*codep++ & (bfd_signed_vma) 0xff) << 16; + x |= (*codep++ & (bfd_signed_vma) 0xff) << 24; + + x = (x ^ ((bfd_signed_vma) 1 << 31)) - ((bfd_signed_vma) 1 << 31); + + return x; +} + +static int +get16 (void) +{ + int x = 0; + + FETCH_DATA (the_info, codep + 2); + x = *codep++ & 0xff; + x |= (*codep++ & 0xff) << 8; + return x; +} + +static void +set_op (bfd_vma op, int riprel) +{ + op_index[op_ad] = op_ad; + if (address_mode == mode_64bit) + { + op_address[op_ad] = op; + op_riprel[op_ad] = riprel; + } + else + { + /* Mask to get a 32-bit address. */ + op_address[op_ad] = op & 0xffffffff; + op_riprel[op_ad] = riprel & 0xffffffff; + } +} + +static void +OP_REG (int code, int sizeflag) +{ + const char *s; + int add = 0; + USED_REX (REX_B); + if (rex & REX_B) + add = 8; + + switch (code) + { + case ax_reg: case cx_reg: case dx_reg: case bx_reg: + case sp_reg: case bp_reg: case si_reg: case di_reg: + s = names16[code - ax_reg + add]; + break; + case es_reg: case ss_reg: case cs_reg: + case ds_reg: case fs_reg: case gs_reg: + s = names_seg[code - es_reg + add]; + break; + case al_reg: case ah_reg: case cl_reg: case ch_reg: + case dl_reg: case dh_reg: case bl_reg: case bh_reg: + USED_REX (0); + if (rex) + s = names8rex[code - al_reg + add]; + else + s = names8[code - al_reg]; + break; + case rAX_reg: case rCX_reg: case rDX_reg: case rBX_reg: + case rSP_reg: case rBP_reg: case rSI_reg: case rDI_reg: + if (address_mode == mode_64bit && (sizeflag & DFLAG)) + { + s = names64[code - rAX_reg + add]; + break; + } + code += eAX_reg - rAX_reg; + /* Fall through. */ + case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg: + case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg: + USED_REX (REX_W); + if (rex & REX_W) + s = names64[code - eAX_reg + add]; + else if (sizeflag & DFLAG) + s = names32[code - eAX_reg + add]; + else + s = names16[code - eAX_reg + add]; + used_prefixes |= (prefixes & PREFIX_DATA); + break; + default: + s = INTERNAL_DISASSEMBLER_ERROR; + break; + } + oappend (s); +} + +static void +OP_IMREG (int code, int sizeflag) +{ + const char *s; + + switch (code) + { + case indir_dx_reg: + if (intel_syntax) + s = "dx"; + else + s = "(%dx)"; + break; + case ax_reg: case cx_reg: case dx_reg: case bx_reg: + case sp_reg: case bp_reg: case si_reg: case di_reg: + s = names16[code - ax_reg]; + break; + case es_reg: case ss_reg: case cs_reg: + case ds_reg: case fs_reg: case gs_reg: + s = names_seg[code - es_reg]; + break; + case al_reg: case ah_reg: case cl_reg: case ch_reg: + case dl_reg: case dh_reg: case bl_reg: case bh_reg: + USED_REX (0); + if (rex) + s = names8rex[code - al_reg]; + else + s = names8[code - al_reg]; + break; + case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg: + case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg: + USED_REX (REX_W); + if (rex & REX_W) + s = names64[code - eAX_reg]; + else if (sizeflag & DFLAG) + s = names32[code - eAX_reg]; + else + s = names16[code - eAX_reg]; + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case z_mode_ax_reg: + if ((rex & REX_W) || (sizeflag & DFLAG)) + s = *names32; + else + s = *names16; + if (!(rex & REX_W)) + used_prefixes |= (prefixes & PREFIX_DATA); + break; + default: + s = INTERNAL_DISASSEMBLER_ERROR; + break; + } + oappend (s); +} + +static void +OP_I (int bytemode, int sizeflag) +{ + bfd_signed_vma op; + bfd_signed_vma mask = -1; + + switch (bytemode) + { + case b_mode: + FETCH_DATA (the_info, codep + 1); + op = *codep++; + mask = 0xff; + break; + case q_mode: + if (address_mode == mode_64bit) + { + op = get32s (); + break; + } + /* Fall through. */ + case v_mode: + USED_REX (REX_W); + if (rex & REX_W) + op = get32s (); + else if (sizeflag & DFLAG) + { + op = get32 (); + mask = 0xffffffff; + } + else + { + op = get16 (); + mask = 0xfffff; + } + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case w_mode: + mask = 0xfffff; + op = get16 (); + break; + case const_1_mode: + if (intel_syntax) + oappend ("1"); + return; + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + return; + } + + op &= mask; + scratchbuf[0] = '$'; + print_operand_value (scratchbuf + 1, sizeof(scratchbuf) - 1, 1, op); + oappend (scratchbuf + intel_syntax); + scratchbuf[0] = '\0'; +} + +static void +OP_I64 (int bytemode, int sizeflag) +{ + bfd_signed_vma op; + bfd_signed_vma mask = -1; + + if (address_mode != mode_64bit) + { + OP_I (bytemode, sizeflag); + return; + } + + switch (bytemode) + { + case b_mode: + FETCH_DATA (the_info, codep + 1); + op = *codep++; + mask = 0xff; + break; + case v_mode: + USED_REX (REX_W); + if (rex & REX_W) + op = get64 (); + else if (sizeflag & DFLAG) + { + op = get32 (); + mask = 0xffffffff; + } + else + { + op = get16 (); + mask = 0xfffff; + } + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case w_mode: + mask = 0xfffff; + op = get16 (); + break; + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + return; + } + + op &= mask; + scratchbuf[0] = '$'; + print_operand_value (scratchbuf + 1, sizeof(scratchbuf) - 1, 1, op); + oappend (scratchbuf + intel_syntax); + scratchbuf[0] = '\0'; +} + +static void +OP_sI (int bytemode, int sizeflag) +{ + bfd_signed_vma op; + bfd_signed_vma mask = -1; + + switch (bytemode) + { + case b_mode: + FETCH_DATA (the_info, codep + 1); + op = *codep++; + if ((op & 0x80) != 0) + op -= 0x100; + mask = 0xffffffff; + break; + case v_mode: + USED_REX (REX_W); + if (rex & REX_W) + op = get32s (); + else if (sizeflag & DFLAG) + { + op = get32s (); + mask = 0xffffffff; + } + else + { + mask = 0xffffffff; + op = get16 (); + if ((op & 0x8000) != 0) + op -= 0x10000; + } + used_prefixes |= (prefixes & PREFIX_DATA); + break; + case w_mode: + op = get16 (); + mask = 0xffffffff; + if ((op & 0x8000) != 0) + op -= 0x10000; + break; + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + return; + } + + scratchbuf[0] = '$'; + print_operand_value (scratchbuf + 1, sizeof(scratchbuf) - 1, 1, op); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_J (int bytemode, int sizeflag) +{ + bfd_vma disp; + bfd_vma mask = -1; + bfd_vma segment = 0; + + switch (bytemode) + { + case b_mode: + FETCH_DATA (the_info, codep + 1); + disp = *codep++; + if ((disp & 0x80) != 0) + disp -= 0x100; + break; + case v_mode: + if ((sizeflag & DFLAG) || (rex & REX_W)) + disp = get32s (); + else + { + disp = get16 (); + if ((disp & 0x8000) != 0) + disp -= 0x10000; + /* In 16bit mode, address is wrapped around at 64k within + the same segment. Otherwise, a data16 prefix on a jump + instruction means that the pc is masked to 16 bits after + the displacement is added! */ + mask = 0xffff; + if ((prefixes & PREFIX_DATA) == 0) + segment = ((start_pc + codep - start_codep) + & ~((bfd_vma) 0xffff)); + } + used_prefixes |= (prefixes & PREFIX_DATA); + break; + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + return; + } + disp = ((start_pc + codep - start_codep + disp) & mask) | segment; + set_op (disp, 0); + print_operand_value (scratchbuf, sizeof(scratchbuf), 1, disp); + oappend (scratchbuf); +} + +static void +OP_SEG (int bytemode, int sizeflag) +{ + if (bytemode == w_mode) + oappend (names_seg[modrm.reg]); + else + OP_E (modrm.mod == 3 ? bytemode : w_mode, sizeflag); +} + +static void +OP_DIR (int dummy ATTRIBUTE_UNUSED, int sizeflag) +{ + int seg, offset; + + if (sizeflag & DFLAG) + { + offset = get32 (); + seg = get16 (); + } + else + { + offset = get16 (); + seg = get16 (); + } + used_prefixes |= (prefixes & PREFIX_DATA); + if (intel_syntax) + snprintf (scratchbuf, sizeof(scratchbuf), "0x%x:0x%x", seg, offset); + else + snprintf (scratchbuf, sizeof(scratchbuf), "$0x%x,$0x%x", seg, offset); + oappend (scratchbuf); +} + +static void +OP_OFF (int bytemode, int sizeflag) +{ + bfd_vma off; + + if (intel_syntax && (sizeflag & SUFFIX_ALWAYS)) + intel_operand_size (bytemode, sizeflag); + append_seg (); + + if ((sizeflag & AFLAG) || address_mode == mode_64bit) + off = get32 (); + else + off = get16 (); + + if (intel_syntax) + { + if (!(prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS + | PREFIX_ES | PREFIX_FS | PREFIX_GS))) + { + oappend (names_seg[ds_reg - es_reg]); + oappend (":"); + } + } + print_operand_value (scratchbuf, sizeof(scratchbuf), 1, off); + oappend (scratchbuf); +} + +static void +OP_OFF64 (int bytemode, int sizeflag) +{ + bfd_vma off; + + if (address_mode != mode_64bit + || (prefixes & PREFIX_ADDR)) + { + OP_OFF (bytemode, sizeflag); + return; + } + + if (intel_syntax && (sizeflag & SUFFIX_ALWAYS)) + intel_operand_size (bytemode, sizeflag); + append_seg (); + + off = get64 (); + + if (intel_syntax) + { + if (!(prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS + | PREFIX_ES | PREFIX_FS | PREFIX_GS))) + { + oappend (names_seg[ds_reg - es_reg]); + oappend (":"); + } + } + print_operand_value (scratchbuf, sizeof(scratchbuf), 1, off); + oappend (scratchbuf); +} + +static void +ptr_reg (int code, int sizeflag) +{ + const char *s; + + *obufp++ = open_char; + used_prefixes |= (prefixes & PREFIX_ADDR); + if (address_mode == mode_64bit) + { + if (!(sizeflag & AFLAG)) + s = names32[code - eAX_reg]; + else + s = names64[code - eAX_reg]; + } + else if (sizeflag & AFLAG) + s = names32[code - eAX_reg]; + else + s = names16[code - eAX_reg]; + oappend (s); + *obufp++ = close_char; + *obufp = 0; +} + +static void +OP_ESreg (int code, int sizeflag) +{ + if (intel_syntax) + { + switch (codep[-1]) + { + case 0x6d: /* insw/insl */ + intel_operand_size (z_mode, sizeflag); + break; + case 0xa5: /* movsw/movsl/movsq */ + case 0xa7: /* cmpsw/cmpsl/cmpsq */ + case 0xab: /* stosw/stosl */ + case 0xaf: /* scasw/scasl */ + intel_operand_size (v_mode, sizeflag); + break; + default: + intel_operand_size (b_mode, sizeflag); + } + } + oappend ("%es:" + intel_syntax); + ptr_reg (code, sizeflag); +} + +static void +OP_DSreg (int code, int sizeflag) +{ + if (intel_syntax) + { + switch (codep[-1]) + { + case 0x6f: /* outsw/outsl */ + intel_operand_size (z_mode, sizeflag); + break; + case 0xa5: /* movsw/movsl/movsq */ + case 0xa7: /* cmpsw/cmpsl/cmpsq */ + case 0xad: /* lodsw/lodsl/lodsq */ + intel_operand_size (v_mode, sizeflag); + break; + default: + intel_operand_size (b_mode, sizeflag); + } + } + if ((prefixes + & (PREFIX_CS + | PREFIX_DS + | PREFIX_SS + | PREFIX_ES + | PREFIX_FS + | PREFIX_GS)) == 0) + prefixes |= PREFIX_DS; + append_seg (); + ptr_reg (code, sizeflag); +} + +static void +OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + int add = 0; + if (rex & REX_R) + { + USED_REX (REX_R); + add = 8; + } + else if (address_mode != mode_64bit && (prefixes & PREFIX_LOCK)) + { + used_prefixes |= PREFIX_LOCK; + add = 8; + } + snprintf (scratchbuf, sizeof(scratchbuf), "%%cr%d", modrm.reg + add); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_D (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + int add = 0; + USED_REX (REX_R); + if (rex & REX_R) + add = 8; + if (intel_syntax) + snprintf (scratchbuf, sizeof(scratchbuf), "db%d", modrm.reg + add); + else + snprintf (scratchbuf, sizeof(scratchbuf), "%%db%d", modrm.reg + add); + oappend (scratchbuf); +} + +static void +OP_T (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + snprintf (scratchbuf, sizeof(scratchbuf), "%%tr%d", modrm.reg); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_R (int bytemode, int sizeflag) +{ + if (modrm.mod == 3) + OP_E (bytemode, sizeflag); + else + BadOp (); +} + +static void +OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + used_prefixes |= (prefixes & PREFIX_DATA); + if (prefixes & PREFIX_DATA) + { + int add = 0; + USED_REX (REX_R); + if (rex & REX_R) + add = 8; + snprintf (scratchbuf, sizeof(scratchbuf), "%%xmm%d", modrm.reg + add); + } + else + snprintf (scratchbuf, sizeof(scratchbuf), "%%mm%d", modrm.reg); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_XMM (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + int add = 0; + USED_REX (REX_R); + if (rex & REX_R) + add = 8; + snprintf (scratchbuf, sizeof(scratchbuf), "%%xmm%d", modrm.reg + add); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_EM (int bytemode, int sizeflag) +{ + if (modrm.mod != 3) + { + if (intel_syntax && bytemode == v_mode) + { + bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode; + used_prefixes |= (prefixes & PREFIX_DATA); + } + OP_E (bytemode, sizeflag); + return; + } + + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + used_prefixes |= (prefixes & PREFIX_DATA); + if (prefixes & PREFIX_DATA) + { + int add = 0; + + USED_REX (REX_B); + if (rex & REX_B) + add = 8; + snprintf (scratchbuf, sizeof(scratchbuf), "%%xmm%d", modrm.rm + add); + } + else + snprintf (scratchbuf, sizeof(scratchbuf), "%%mm%d", modrm.rm); + oappend (scratchbuf + intel_syntax); +} + +/* cvt* are the only instructions in sse2 which have + both SSE and MMX operands and also have 0x66 prefix + in their opcode. 0x66 was originally used to differentiate + between SSE and MMX instruction(operands). So we have to handle the + cvt* separately using OP_EMC and OP_MXC */ +static void +OP_EMC (int bytemode, int sizeflag) +{ + if (modrm.mod != 3) + { + if (intel_syntax && bytemode == v_mode) + { + bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode; + used_prefixes |= (prefixes & PREFIX_DATA); + } + OP_E (bytemode, sizeflag); + return; + } + + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + used_prefixes |= (prefixes & PREFIX_DATA); + snprintf (scratchbuf, sizeof(scratchbuf), "%%mm%d", modrm.rm); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_MXC (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + used_prefixes |= (prefixes & PREFIX_DATA); + snprintf (scratchbuf, sizeof(scratchbuf), "%%mm%d", modrm.reg); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_EX (int bytemode, int sizeflag) +{ + int add = 0; + if (modrm.mod != 3) + { + OP_E (bytemode, sizeflag); + return; + } + USED_REX (REX_B); + if (rex & REX_B) + add = 8; + + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + snprintf (scratchbuf, sizeof(scratchbuf), "%%xmm%d", modrm.rm + add); + oappend (scratchbuf + intel_syntax); +} + +static void +OP_MS (int bytemode, int sizeflag) +{ + if (modrm.mod == 3) + OP_EM (bytemode, sizeflag); + else + BadOp (); +} + +static void +OP_XS (int bytemode, int sizeflag) +{ + if (modrm.mod == 3) + OP_EX (bytemode, sizeflag); + else + BadOp (); +} + +static void +OP_M (int bytemode, int sizeflag) +{ + if (modrm.mod == 3) + /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst modrm */ + BadOp (); + else + OP_E (bytemode, sizeflag); +} + +static void +OP_0f07 (int bytemode, int sizeflag) +{ + if (modrm.mod != 3 || modrm.rm != 0) + BadOp (); + else + OP_E (bytemode, sizeflag); +} + +static void +OP_0fae (int bytemode, int sizeflag) +{ + if (modrm.mod == 3) + { + if (modrm.reg == 7) + strcpy (obuf + strlen (obuf) - sizeof ("clflush") + 1, "sfence"); + + if (modrm.reg < 5 || modrm.rm != 0) + { + BadOp (); /* bad sfence, mfence, or lfence */ + return; + } + } + else if (modrm.reg != 7) + { + BadOp (); /* bad clflush */ + return; + } + + OP_E (bytemode, sizeflag); +} + +/* NOP is an alias of "xchg %ax,%ax" in 16bit mode, "xchg %eax,%eax" in + 32bit mode and "xchg %rax,%rax" in 64bit mode. */ + +static void +NOP_Fixup1 (int bytemode, int sizeflag) +{ + if ((prefixes & PREFIX_DATA) != 0 + || (rex != 0 + && rex != 0x48 + && address_mode == mode_64bit)) + OP_REG (bytemode, sizeflag); + else + strcpy (obuf, "nop"); +} + +static void +NOP_Fixup2 (int bytemode, int sizeflag) +{ + if ((prefixes & PREFIX_DATA) != 0 + || (rex != 0 + && rex != 0x48 + && address_mode == mode_64bit)) + OP_IMREG (bytemode, sizeflag); +} + +static const char *Suffix3DNow[] = { +/* 00 */ NULL, NULL, NULL, NULL, +/* 04 */ NULL, NULL, NULL, NULL, +/* 08 */ NULL, NULL, NULL, NULL, +/* 0C */ "pi2fw", "pi2fd", NULL, NULL, +/* 10 */ NULL, NULL, NULL, NULL, +/* 14 */ NULL, NULL, NULL, NULL, +/* 18 */ NULL, NULL, NULL, NULL, +/* 1C */ "pf2iw", "pf2id", NULL, NULL, +/* 20 */ NULL, NULL, NULL, NULL, +/* 24 */ NULL, NULL, NULL, NULL, +/* 28 */ NULL, NULL, NULL, NULL, +/* 2C */ NULL, NULL, NULL, NULL, +/* 30 */ NULL, NULL, NULL, NULL, +/* 34 */ NULL, NULL, NULL, NULL, +/* 38 */ NULL, NULL, NULL, NULL, +/* 3C */ NULL, NULL, NULL, NULL, +/* 40 */ NULL, NULL, NULL, NULL, +/* 44 */ NULL, NULL, NULL, NULL, +/* 48 */ NULL, NULL, NULL, NULL, +/* 4C */ NULL, NULL, NULL, NULL, +/* 50 */ NULL, NULL, NULL, NULL, +/* 54 */ NULL, NULL, NULL, NULL, +/* 58 */ NULL, NULL, NULL, NULL, +/* 5C */ NULL, NULL, NULL, NULL, +/* 60 */ NULL, NULL, NULL, NULL, +/* 64 */ NULL, NULL, NULL, NULL, +/* 68 */ NULL, NULL, NULL, NULL, +/* 6C */ NULL, NULL, NULL, NULL, +/* 70 */ NULL, NULL, NULL, NULL, +/* 74 */ NULL, NULL, NULL, NULL, +/* 78 */ NULL, NULL, NULL, NULL, +/* 7C */ NULL, NULL, NULL, NULL, +/* 80 */ NULL, NULL, NULL, NULL, +/* 84 */ NULL, NULL, NULL, NULL, +/* 88 */ NULL, NULL, "pfnacc", NULL, +/* 8C */ NULL, NULL, "pfpnacc", NULL, +/* 90 */ "pfcmpge", NULL, NULL, NULL, +/* 94 */ "pfmin", NULL, "pfrcp", "pfrsqrt", +/* 98 */ NULL, NULL, "pfsub", NULL, +/* 9C */ NULL, NULL, "pfadd", NULL, +/* A0 */ "pfcmpgt", NULL, NULL, NULL, +/* A4 */ "pfmax", NULL, "pfrcpit1", "pfrsqit1", +/* A8 */ NULL, NULL, "pfsubr", NULL, +/* AC */ NULL, NULL, "pfacc", NULL, +/* B0 */ "pfcmpeq", NULL, NULL, NULL, +/* B4 */ "pfmul", NULL, "pfrcpit2", "pmulhrw", +/* B8 */ NULL, NULL, NULL, "pswapd", +/* BC */ NULL, NULL, NULL, "pavgusb", +/* C0 */ NULL, NULL, NULL, NULL, +/* C4 */ NULL, NULL, NULL, NULL, +/* C8 */ NULL, NULL, NULL, NULL, +/* CC */ NULL, NULL, NULL, NULL, +/* D0 */ NULL, NULL, NULL, NULL, +/* D4 */ NULL, NULL, NULL, NULL, +/* D8 */ NULL, NULL, NULL, NULL, +/* DC */ NULL, NULL, NULL, NULL, +/* E0 */ NULL, NULL, NULL, NULL, +/* E4 */ NULL, NULL, NULL, NULL, +/* E8 */ NULL, NULL, NULL, NULL, +/* EC */ NULL, NULL, NULL, NULL, +/* F0 */ NULL, NULL, NULL, NULL, +/* F4 */ NULL, NULL, NULL, NULL, +/* F8 */ NULL, NULL, NULL, NULL, +/* FC */ NULL, NULL, NULL, NULL, +}; + +static void +OP_3DNowSuffix (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + const char *mnemonic; + + FETCH_DATA (the_info, codep + 1); + /* AMD 3DNow! instructions are specified by an opcode suffix in the + place where an 8-bit immediate would normally go. ie. the last + byte of the instruction. */ + obufp = obuf + strlen (obuf); + mnemonic = Suffix3DNow[*codep++ & 0xff]; + if (mnemonic) + oappend (mnemonic); + else + { + /* Since a variable sized modrm/sib chunk is between the start + of the opcode (0x0f0f) and the opcode suffix, we need to do + all the modrm processing first, and don't know until now that + we have a bad opcode. This necessitates some cleaning up. */ + op_out[0][0] = '\0'; + op_out[1][0] = '\0'; + BadOp (); + } +} + +static const char *simd_cmp_op[] = { + "eq", + "lt", + "le", + "unord", + "neq", + "nlt", + "nle", + "ord" +}; + +static void +OP_SIMD_Suffix (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) +{ + unsigned int cmp_type; + + FETCH_DATA (the_info, codep + 1); + obufp = obuf + strlen (obuf); + cmp_type = *codep++ & 0xff; + if (cmp_type < 8) + { + char suffix1 = 'p', suffix2 = 's'; + used_prefixes |= (prefixes & PREFIX_REPZ); + if (prefixes & PREFIX_REPZ) + suffix1 = 's'; + else + { + used_prefixes |= (prefixes & PREFIX_DATA); + if (prefixes & PREFIX_DATA) + suffix2 = 'd'; + else + { + used_prefixes |= (prefixes & PREFIX_REPNZ); + if (prefixes & PREFIX_REPNZ) + suffix1 = 's', suffix2 = 'd'; + } + } + snprintf (scratchbuf, sizeof(scratchbuf), "cmp%s%c%c", + simd_cmp_op[cmp_type], suffix1, suffix2); + used_prefixes |= (prefixes & PREFIX_REPZ); + oappend (scratchbuf); + } + else + { + /* We have a bad extension byte. Clean up. */ + op_out[0][0] = '\0'; + op_out[1][0] = '\0'; + BadOp (); + } +} + +static void +SIMD_Fixup (int extrachar, int sizeflag ATTRIBUTE_UNUSED) +{ + /* Change movlps/movhps to movhlps/movlhps for 2 register operand + forms of these instructions. */ + if (modrm.mod == 3) + { + char *p = obuf + strlen (obuf); + *(p + 1) = '\0'; + *p = *(p - 1); + *(p - 1) = *(p - 2); + *(p - 2) = *(p - 3); + *(p - 3) = extrachar; + } +} + +static void +PNI_Fixup (int extrachar ATTRIBUTE_UNUSED, int sizeflag) +{ + if (modrm.mod == 3 && modrm.reg == 1 && modrm.rm <= 1) + { + /* Override "sidt". */ + size_t olen = strlen (obuf); + char *p = obuf + olen - 4; + const char * const *names = (address_mode == mode_64bit + ? names64 : names32); + + /* We might have a suffix when disassembling with -Msuffix. */ + if (*p == 'i') + --p; + + /* Remove "addr16/addr32" if we aren't in Intel mode. */ + if (!intel_syntax + && (prefixes & PREFIX_ADDR) + && olen >= (4 + 7) + && *(p - 1) == ' ' + && strncmp (p - 7, "addr", 4) == 0 + && (strncmp (p - 3, "16", 2) == 0 + || strncmp (p - 3, "32", 2) == 0)) + p -= 7; + + if (modrm.rm) + { + /* mwait %eax,%ecx */ + strcpy (p, "mwait"); + if (!intel_syntax) + strcpy (op_out[0], names[0]); + } + else + { + /* monitor %eax,%ecx,%edx" */ + strcpy (p, "monitor"); + if (!intel_syntax) + { + const char * const *op1_names; + if (!(prefixes & PREFIX_ADDR)) + op1_names = (address_mode == mode_16bit + ? names16 : names); + else + { + op1_names = (address_mode != mode_32bit + ? names32 : names16); + used_prefixes |= PREFIX_ADDR; + } + strcpy (op_out[0], op1_names[0]); + strcpy (op_out[2], names[2]); + } + } + if (!intel_syntax) + { + strcpy (op_out[1], names[1]); + two_source_ops = 1; + } + + codep++; + } + else + OP_M (0, sizeflag); +} + +static void +SVME_Fixup (int bytemode, int sizeflag) +{ + const char *alt; + char *p; + + switch (*codep) + { + case 0xd8: + alt = "vmrun"; + break; + case 0xd9: + alt = "vmmcall"; + break; + case 0xda: + alt = "vmload"; + break; + case 0xdb: + alt = "vmsave"; + break; + case 0xdc: + alt = "stgi"; + break; + case 0xdd: + alt = "clgi"; + break; + case 0xde: + alt = "skinit"; + break; + case 0xdf: + alt = "invlpga"; + break; + default: + OP_M (bytemode, sizeflag); + return; + } + /* Override "lidt". */ + p = obuf + strlen (obuf) - 4; + /* We might have a suffix. */ + if (*p == 'i') + --p; + strcpy (p, alt); + if (!(prefixes & PREFIX_ADDR)) + { + ++codep; + return; + } + used_prefixes |= PREFIX_ADDR; + switch (*codep++) + { + case 0xdf: + strcpy (op_out[1], names32[1]); + two_source_ops = 1; + /* Fall through. */ + case 0xd8: + case 0xda: + case 0xdb: + *obufp++ = open_char; + if (address_mode == mode_64bit || (sizeflag & AFLAG)) + alt = names32[0]; + else + alt = names16[0]; + strcpy (obufp, alt); + obufp += strlen (alt); + *obufp++ = close_char; + *obufp = '\0'; + break; + } +} + +static void +INVLPG_Fixup (int bytemode, int sizeflag) +{ + const char *alt; + + switch (*codep) + { + case 0xf8: + alt = "swapgs"; + break; + case 0xf9: + alt = "rdtscp"; + break; + default: + OP_M (bytemode, sizeflag); + return; + } + /* Override "invlpg". */ + strcpy (obuf + strlen (obuf) - 6, alt); + codep++; +} + +static void +BadOp (void) +{ + /* Throw away prefixes and 1st. opcode byte. */ + codep = insn_codep + 1; + oappend ("(bad)"); +} + +static void +VMX_Fixup (int extrachar ATTRIBUTE_UNUSED, int sizeflag) +{ + if (modrm.mod == 3 + && modrm.reg == 0 + && modrm.rm >=1 + && modrm.rm <= 4) + { + /* Override "sgdt". */ + char *p = obuf + strlen (obuf) - 4; + + /* We might have a suffix when disassembling with -Msuffix. */ + if (*p == 'g') + --p; + + switch (modrm.rm) + { + case 1: + strcpy (p, "vmcall"); + break; + case 2: + strcpy (p, "vmlaunch"); + break; + case 3: + strcpy (p, "vmresume"); + break; + case 4: + strcpy (p, "vmxoff"); + break; + } + + codep++; + } + else + OP_E (0, sizeflag); +} + +static void +OP_VMX (int bytemode, int sizeflag) +{ + used_prefixes |= (prefixes & (PREFIX_DATA | PREFIX_REPZ)); + if (prefixes & PREFIX_DATA) + strcpy (obuf, "vmclear"); + else if (prefixes & PREFIX_REPZ) + strcpy (obuf, "vmxon"); + else + strcpy (obuf, "vmptrld"); + OP_E (bytemode, sizeflag); +} + +static void +REP_Fixup (int bytemode, int sizeflag) +{ + /* The 0xf3 prefix should be displayed as "rep" for ins, outs, movs, + lods and stos. */ + size_t ilen = 0; + + if (prefixes & PREFIX_REPZ) + switch (*insn_codep) + { + case 0x6e: /* outsb */ + case 0x6f: /* outsw/outsl */ + case 0xa4: /* movsb */ + case 0xa5: /* movsw/movsl/movsq */ + if (!intel_syntax) + ilen = 5; + else + ilen = 4; + break; + case 0xaa: /* stosb */ + case 0xab: /* stosw/stosl/stosq */ + case 0xac: /* lodsb */ + case 0xad: /* lodsw/lodsl/lodsq */ + if (!intel_syntax && (sizeflag & SUFFIX_ALWAYS)) + ilen = 5; + else + ilen = 4; + break; + case 0x6c: /* insb */ + case 0x6d: /* insl/insw */ + if (!intel_syntax) + ilen = 4; + else + ilen = 3; + break; + default: + abort (); + break; + } + + if (ilen != 0) + { + size_t olen; + char *p; + + olen = strlen (obuf); + p = obuf + olen - ilen - 1 - 4; + /* Handle "repz [addr16|addr32]". */ + if ((prefixes & PREFIX_ADDR)) + p -= 1 + 6; + + memmove (p + 3, p + 4, olen - (p + 3 - obuf)); + } + + switch (bytemode) + { + case al_reg: + case eAX_reg: + case indir_dx_reg: + OP_IMREG (bytemode, sizeflag); + break; + case eDI_reg: + OP_ESreg (bytemode, sizeflag); + break; + case eSI_reg: + OP_DSreg (bytemode, sizeflag); + break; + default: + abort (); + break; + } +} + +static void +CMPXCHG8B_Fixup (int bytemode, int sizeflag) +{ + USED_REX (REX_W); + if (rex & REX_W) + { + /* Change cmpxchg8b to cmpxchg16b. */ + char *p = obuf + strlen (obuf) - 2; + strcpy (p, "16b"); + bytemode = o_mode; + } + OP_M (bytemode, sizeflag); +} + +static void +XMM_Fixup (int reg, int sizeflag ATTRIBUTE_UNUSED) +{ + snprintf (scratchbuf, sizeof(scratchbuf), "%%xmm%d", reg); + oappend (scratchbuf + intel_syntax); +} + +static void +CRC32_Fixup (int bytemode, int sizeflag) +{ + /* Add proper suffix to "crc32". */ + char *p = obuf + strlen (obuf); + + switch (bytemode) + { + case b_mode: + if (intel_syntax) + break; + + *p++ = 'b'; + break; + case v_mode: + if (intel_syntax) + break; + + USED_REX (REX_W); + if (rex & REX_W) + *p++ = 'q'; + else if (sizeflag & DFLAG) + *p++ = 'l'; + else + *p++ = 'w'; + used_prefixes |= (prefixes & PREFIX_DATA); + break; + default: + oappend (INTERNAL_DISASSEMBLER_ERROR); + break; + } + *p = '\0'; + + if (modrm.mod == 3) + { + int add; + + /* Skip mod/rm byte. */ + MODRM_CHECK; + codep++; + + USED_REX (REX_B); + add = (rex & REX_B) ? 8 : 0; + if (bytemode == b_mode) + { + USED_REX (0); + if (rex) + oappend (names8rex[modrm.rm + add]); + else + oappend (names8[modrm.rm + add]); + } + else + { + USED_REX (REX_W); + if (rex & REX_W) + oappend (names64[modrm.rm + add]); + else if ((prefixes & PREFIX_DATA)) + oappend (names16[modrm.rm + add]); + else + oappend (names32[modrm.rm + add]); + } + } + else + OP_E (bytemode, sizeflag); +} diff --git a/qemu/qemu-git/i386.ld b/qemu/qemu-git/i386.ld new file mode 100644 index 0000000..f2dafec --- /dev/null +++ b/qemu/qemu-git/i386.ld @@ -0,0 +1,141 @@ +/* ld script to make i386 Linux kernel + * Written by Martin Mares ; + */ +OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") +OUTPUT_ARCH(i386) +ENTRY(_start) +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.text : + { *(.rel.text) *(.rel.gnu.linkonce.t*) } + .rela.text : + { *(.rela.text) *(.rela.gnu.linkonce.t*) } + .rel.data : + { *(.rel.data) *(.rel.gnu.linkonce.d*) } + .rela.data : + { *(.rela.data) *(.rela.gnu.linkonce.d*) } + .rel.rodata : + { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } + .rela.rodata : + { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } =0x47ff041f + .text : + { + *(.text) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) + } =0x47ff041f + _etext = .; + PROVIDE (etext = .); + .fini : { *(.fini) } =0x47ff041f + . = ALIGN(32 / 8); + PROVIDE (__preinit_array_start = .); + .preinit_array : { *(.preinit_array) } + PROVIDE (__preinit_array_end = .); + PROVIDE (__init_array_start = .); + .init_array : { *(.init_array) } + PROVIDE (__init_array_end = .); + PROVIDE (__fini_array_start = .); + .fini_array : { *(.fini_array) } + PROVIDE (__fini_array_end = .); + .rodata : { *(.rodata) *(.gnu.linkonce.r*) } + .rodata1 : { *(.rodata1) } + .reginfo : { *(.reginfo) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(0x100000) + (. & (0x100000 - 1)); + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .data : + { + *(.data) + *(.gnu.linkonce.d*) + CONSTRUCTORS + } + .data1 : { *(.data1) } + .ctors : + { + *(.ctors) + } + .dtors : + { + *(.dtors) + } + .plt : { *(.plt) } + .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : { *(.sdata) } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .sbss : { *(.sbss) *(.scommon) } + .bss : + { + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ +} diff --git a/qemu/qemu-git/ia64.ld b/qemu/qemu-git/ia64.ld new file mode 100644 index 0000000..0c37796 --- /dev/null +++ b/qemu/qemu-git/ia64.ld @@ -0,0 +1,209 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf64-ia64-little", "elf64-ia64-little", + "elf64-ia64-little") +OUTPUT_ARCH(ia64) +ENTRY(_start) +/* __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + PROVIDE (__executable_start = 0x60000000); . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } + .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } + .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } + .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } + .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } + .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } + .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } + .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .rela.IA_64.pltoff : { *(.rela.IA_64.pltoff) } + .init : + { + KEEP (*(.init)) + } =0x00300000010070000002000001000400 + .plt : { *(.plt) } + .text : + { + *(.text .stub .text.* .gnu.linkonce.t.*) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + } =0x00300000010070000002000001000400 + .fini : + { + KEEP (*(.fini)) + } =0x00300000010070000002000001000400 + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } + .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } + .opd : { *(.opd) } + .IA_64.unwind_info : { *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) } + .IA_64.unwind : { *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(0x10000) + (. & (0x10000 - 1)); + /* Ensure the __preinit_array_start label is properly aligned. We + could instead move the label definition inside the section, but + the linker would then create the section even if it turns out to + be empty, which isn't pretty. */ + . = ALIGN(64 / 8); + PROVIDE (__preinit_array_start = .); + .preinit_array : { *(.preinit_array) } + PROVIDE (__preinit_array_end = .); + PROVIDE (__init_array_start = .); + .init_array : { *(.init_array) } + PROVIDE (__init_array_end = .); + PROVIDE (__fini_array_start = .); + .fini_array : { *(.fini_array) } + PROVIDE (__fini_array_end = .); + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .eh_frame : { KEEP (*(.eh_frame)) } + .gcc_except_table : { *(.gcc_except_table) } + .dynamic : { *(.dynamic) } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin*.o(.ctors)) + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin*.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + /* Ensure __gp is outside the range of any normal data. We need to + do this to avoid the linker optimizing the code in op.o and getting + it out of sync with the relocs that we read when processing that + file. A better solution might be to ensure that the dynamically + generated code and static qemu code share a single gp-value. */ + __gp = . + 0x200000; + .got : { *(.got.plt) *(.got) } + .IA_64.pltoff : { *(.IA_64.pltoff) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata .sdata.* .gnu.linkonce.s.*) + } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .sbss : + { + PROVIDE (__sbss_start = .); + PROVIDE (___sbss_start = .); + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + PROVIDE (__sbss_end = .); + PROVIDE (___sbss_end = .); + } + .bss : + { + . += 0x400000; /* ensure .bss stuff is out of reach of gp */ + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. */ + . = ALIGN(64 / 8); + } + . = ALIGN(64 / 8); + _end = .; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/qemu/qemu-git/ioport.h b/qemu/qemu-git/ioport.h new file mode 100644 index 0000000..3d3c8a3 --- /dev/null +++ b/qemu/qemu-git/ioport.h @@ -0,0 +1,53 @@ +/* + * defines ioport related functions + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/************************************************************************** + * IO ports API + */ + +#ifndef IOPORT_H +#define IOPORT_H + +#include "qemu-common.h" + +typedef uint32_t pio_addr_t; +#define FMT_pioaddr PRIx32 + +#define MAX_IOPORTS (64 * 1024) +#define IOPORTS_MASK (MAX_IOPORTS - 1) + +/* These should really be in isa.h, but are here to make pc.h happy. */ +typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data); +typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address); + +int register_ioport_read(pio_addr_t start, int length, int size, + IOPortReadFunc *func, void *opaque); +int register_ioport_write(pio_addr_t start, int length, int size, + IOPortWriteFunc *func, void *opaque); +void isa_unassign_ioport(pio_addr_t start, int length); + + +void cpu_outb(pio_addr_t addr, uint8_t val); +void cpu_outw(pio_addr_t addr, uint16_t val); +void cpu_outl(pio_addr_t addr, uint32_t val); +uint8_t cpu_inb(pio_addr_t addr); +uint16_t cpu_inw(pio_addr_t addr); +uint32_t cpu_inl(pio_addr_t addr); + +#endif /* IOPORT_H */ diff --git a/qemu/qemu-git/kvm.h b/qemu/qemu-git/kvm.h new file mode 100644 index 0000000..1c93ac5 --- /dev/null +++ b/qemu/qemu-git/kvm.h @@ -0,0 +1,142 @@ +/* + * QEMU KVM support + * + * Copyright IBM, Corp. 2008 + * + * Authors: + * Anthony Liguori + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_KVM_H +#define QEMU_KVM_H + +#include "config.h" +#include "qemu-queue.h" + +#ifdef CONFIG_KVM +extern int kvm_allowed; + +#define kvm_enabled() (kvm_allowed) +#else +#define kvm_enabled() (0) +#endif + +struct kvm_run; + +/* external API */ + +int kvm_init(int smp_cpus); + +int kvm_init_vcpu(CPUState *env); + +int kvm_cpu_exec(CPUState *env); + +void kvm_set_phys_mem(target_phys_addr_t start_addr, + ram_addr_t size, + ram_addr_t phys_offset); + +int kvm_physical_sync_dirty_bitmap(target_phys_addr_t start_addr, + target_phys_addr_t end_addr); + +int kvm_log_start(target_phys_addr_t phys_addr, ram_addr_t size); +int kvm_log_stop(target_phys_addr_t phys_addr, ram_addr_t size); +int kvm_set_migration_log(int enable); + +int kvm_has_sync_mmu(void); +int kvm_has_vcpu_events(void); + +void kvm_setup_guest_memory(void *start, size_t size); + +int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size); +int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size); + +int kvm_insert_breakpoint(CPUState *current_env, target_ulong addr, + target_ulong len, int type); +int kvm_remove_breakpoint(CPUState *current_env, target_ulong addr, + target_ulong len, int type); +void kvm_remove_all_breakpoints(CPUState *current_env); +int kvm_update_guest_debug(CPUState *env, unsigned long reinject_trap); + +int kvm_pit_in_kernel(void); +int kvm_irqchip_in_kernel(void); + +/* internal API */ + +struct KVMState; +typedef struct KVMState KVMState; + +int kvm_ioctl(KVMState *s, int type, ...); + +int kvm_vm_ioctl(KVMState *s, int type, ...); + +int kvm_vcpu_ioctl(CPUState *env, int type, ...); + +/* Arch specific hooks */ + +int kvm_arch_post_run(CPUState *env, struct kvm_run *run); + +int kvm_arch_handle_exit(CPUState *env, struct kvm_run *run); + +int kvm_arch_pre_run(CPUState *env, struct kvm_run *run); + +int kvm_arch_get_registers(CPUState *env); + +int kvm_arch_put_registers(CPUState *env); + +int kvm_arch_init(KVMState *s, int smp_cpus); + +int kvm_arch_init_vcpu(CPUState *env); + +void kvm_arch_reset_vcpu(CPUState *env); + +struct kvm_guest_debug; +struct kvm_debug_exit_arch; + +struct kvm_sw_breakpoint { + target_ulong pc; + target_ulong saved_insn; + int use_count; + QTAILQ_ENTRY(kvm_sw_breakpoint) entry; +}; + +QTAILQ_HEAD(kvm_sw_breakpoint_head, kvm_sw_breakpoint); + +int kvm_arch_debug(struct kvm_debug_exit_arch *arch_info); + +struct kvm_sw_breakpoint *kvm_find_sw_breakpoint(CPUState *env, + target_ulong pc); + +int kvm_sw_breakpoints_active(CPUState *env); + +int kvm_arch_insert_sw_breakpoint(CPUState *current_env, + struct kvm_sw_breakpoint *bp); +int kvm_arch_remove_sw_breakpoint(CPUState *current_env, + struct kvm_sw_breakpoint *bp); +int kvm_arch_insert_hw_breakpoint(target_ulong addr, + target_ulong len, int type); +int kvm_arch_remove_hw_breakpoint(target_ulong addr, + target_ulong len, int type); +void kvm_arch_remove_all_hw_breakpoints(void); + +void kvm_arch_update_guest_debug(CPUState *env, struct kvm_guest_debug *dbg); + +int kvm_check_extension(KVMState *s, unsigned int extension); + +uint32_t kvm_arch_get_supported_cpuid(CPUState *env, uint32_t function, + int reg); +void kvm_cpu_synchronize_state(CPUState *env); + +/* generic hooks - to be moved/refactored once there are more users */ + +static inline void cpu_synchronize_state(CPUState *env) +{ + if (kvm_enabled()) { + kvm_cpu_synchronize_state(env); + } +} + +#endif diff --git a/qemu/qemu-git/m68k-dis.c b/qemu/qemu-git/m68k-dis.c new file mode 100644 index 0000000..d38d5a2 --- /dev/null +++ b/qemu/qemu-git/m68k-dis.c @@ -0,0 +1,5045 @@ +/* This file is composed of several different files from the upstream + sourceware.org CVS. Original file boundaries marked with **** */ + +#include +#include +#include + +#include "dis-asm.h" + +/* **** floatformat.h from sourceware.org CVS 2005-08-14. */ +/* IEEE floating point support declarations, for GDB, the GNU Debugger. + Copyright 1991, 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc. + +This file is part of GDB. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, see . */ + +#if !defined (FLOATFORMAT_H) +#define FLOATFORMAT_H 1 + +/*#include "ansidecl.h" */ + +/* A floatformat consists of a sign bit, an exponent and a mantissa. Once the + bytes are concatenated according to the byteorder flag, then each of those + fields is contiguous. We number the bits with 0 being the most significant + (i.e. BITS_BIG_ENDIAN type numbering), and specify which bits each field + contains with the *_start and *_len fields. */ + +/* What is the order of the bytes. */ + +enum floatformat_byteorders { + + /* Standard little endian byte order. + EX: 1.2345678e10 => 00 00 80 c5 e0 fe 06 42 */ + + floatformat_little, + + /* Standard big endian byte order. + EX: 1.2345678e10 => 42 06 fe e0 c5 80 00 00 */ + + floatformat_big, + + /* Little endian byte order but big endian word order. + EX: 1.2345678e10 => e0 fe 06 42 00 00 80 c5 */ + + floatformat_littlebyte_bigword + +}; + +enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no }; + +struct floatformat +{ + enum floatformat_byteorders byteorder; + unsigned int totalsize; /* Total size of number in bits */ + + /* Sign bit is always one bit long. 1 means negative, 0 means positive. */ + unsigned int sign_start; + + unsigned int exp_start; + unsigned int exp_len; + /* Bias added to a "true" exponent to form the biased exponent. It + is intentionally signed as, otherwize, -exp_bias can turn into a + very large number (e.g., given the exp_bias of 0x3fff and a 64 + bit long, the equation (long)(1 - exp_bias) evaluates to + 4294950914) instead of -16382). */ + int exp_bias; + /* Exponent value which indicates NaN. This is the actual value stored in + the float, not adjusted by the exp_bias. This usually consists of all + one bits. */ + unsigned int exp_nan; + + unsigned int man_start; + unsigned int man_len; + + /* Is the integer bit explicit or implicit? */ + enum floatformat_intbit intbit; + + /* Internal name for debugging. */ + const char *name; + + /* Validator method. */ + int (*is_valid) (const struct floatformat *fmt, const char *from); +}; + +/* floatformats for IEEE single and double, big and little endian. */ + +extern const struct floatformat floatformat_ieee_single_big; +extern const struct floatformat floatformat_ieee_single_little; +extern const struct floatformat floatformat_ieee_double_big; +extern const struct floatformat floatformat_ieee_double_little; + +/* floatformat for ARM IEEE double, little endian bytes and big endian words */ + +extern const struct floatformat floatformat_ieee_double_littlebyte_bigword; + +/* floatformats for various extendeds. */ + +extern const struct floatformat floatformat_i387_ext; +extern const struct floatformat floatformat_m68881_ext; +extern const struct floatformat floatformat_i960_ext; +extern const struct floatformat floatformat_m88110_ext; +extern const struct floatformat floatformat_m88110_harris_ext; +extern const struct floatformat floatformat_arm_ext_big; +extern const struct floatformat floatformat_arm_ext_littlebyte_bigword; +/* IA-64 Floating Point register spilt into memory. */ +extern const struct floatformat floatformat_ia64_spill_big; +extern const struct floatformat floatformat_ia64_spill_little; +extern const struct floatformat floatformat_ia64_quad_big; +extern const struct floatformat floatformat_ia64_quad_little; + +/* Convert from FMT to a double. + FROM is the address of the extended float. + Store the double in *TO. */ + +extern void +floatformat_to_double (const struct floatformat *, const char *, double *); + +/* The converse: convert the double *FROM to FMT + and store where TO points. */ + +extern void +floatformat_from_double (const struct floatformat *, const double *, char *); + +/* Return non-zero iff the data at FROM is a valid number in format FMT. */ + +extern int +floatformat_is_valid (const struct floatformat *fmt, const char *from); + +#endif /* defined (FLOATFORMAT_H) */ +/* **** End of floatformat.h */ +/* **** m68k-dis.h from sourceware.org CVS 2005-08-14. */ +/* Opcode table header for m680[01234]0/m6888[12]/m68851. + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001, + 2003, 2004 Free Software Foundation, Inc. + + This file is part of GDB, GAS, and the GNU binutils. + + GDB, GAS, and the GNU binutils are free software; you can redistribute + them and/or modify them under the terms of the GNU General Public + License as published by the Free Software Foundation; either version + 1, or (at your option) any later version. + + GDB, GAS, and the GNU binutils are distributed in the hope that they + will be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this file; see the file COPYING. If not, + see . */ + +/* These are used as bit flags for the arch field in the m68k_opcode + structure. */ +#define _m68k_undef 0 +#define m68000 0x001 +#define m68008 m68000 /* Synonym for -m68000. otherwise unused. */ +#define m68010 0x002 +#define m68020 0x004 +#define m68030 0x008 +#define m68ec030 m68030 /* Similar enough to -m68030 to ignore differences; + gas will deal with the few differences. */ +#define m68040 0x010 +/* There is no 68050. */ +#define m68060 0x020 +#define m68881 0x040 +#define m68882 m68881 /* Synonym for -m68881. otherwise unused. */ +#define m68851 0x080 +#define cpu32 0x100 /* e.g., 68332 */ + +#define mcfmac 0x200 /* ColdFire MAC. */ +#define mcfemac 0x400 /* ColdFire EMAC. */ +#define cfloat 0x800 /* ColdFire FPU. */ +#define mcfhwdiv 0x1000 /* ColdFire hardware divide. */ + +#define mcfisa_a 0x2000 /* ColdFire ISA_A. */ +#define mcfisa_aa 0x4000 /* ColdFire ISA_A+. */ +#define mcfisa_b 0x8000 /* ColdFire ISA_B. */ +#define mcfusp 0x10000 /* ColdFire USP instructions. */ + +#define mcf5200 0x20000 +#define mcf5206e 0x40000 +#define mcf521x 0x80000 +#define mcf5249 0x100000 +#define mcf528x 0x200000 +#define mcf5307 0x400000 +#define mcf5407 0x800000 +#define mcf5470 0x1000000 +#define mcf5480 0x2000000 + + /* Handy aliases. */ +#define m68040up (m68040 | m68060) +#define m68030up (m68030 | m68040up) +#define m68020up (m68020 | m68030up) +#define m68010up (m68010 | cpu32 | m68020up) +#define m68000up (m68000 | m68010up) + +#define mfloat (m68881 | m68882 | m68040 | m68060) +#define mmmu (m68851 | m68030 | m68040 | m68060) + +/* The structure used to hold information for an opcode. */ + +struct m68k_opcode +{ + /* The opcode name. */ + const char *name; + /* The pseudo-size of the instruction(in bytes). Used to determine + number of bytes necessary to disassemble the instruction. */ + unsigned int size; + /* The opcode itself. */ + unsigned long opcode; + /* The mask used by the disassembler. */ + unsigned long match; + /* The arguments. */ + const char *args; + /* The architectures which support this opcode. */ + unsigned int arch; +}; + +/* The structure used to hold information for an opcode alias. */ + +struct m68k_opcode_alias +{ + /* The alias name. */ + const char *alias; + /* The instruction for which this is an alias. */ + const char *primary; +}; + +/* We store four bytes of opcode for all opcodes because that is the + most any of them need. The actual length of an instruction is + always at least 2 bytes, and is as much longer as necessary to hold + the operands it has. + + The match field is a mask saying which bits must match particular + opcode in order for an instruction to be an instance of that + opcode. + + The args field is a string containing two characters for each + operand of the instruction. The first specifies the kind of + operand; the second, the place it is stored. */ + +/* Kinds of operands: + Characters used: AaBbCcDdEeFfGgHIiJkLlMmnOopQqRrSsTtU VvWwXxYyZz01234|*~%;@!&$?/<>#^+- + + D data register only. Stored as 3 bits. + A address register only. Stored as 3 bits. + a address register indirect only. Stored as 3 bits. + R either kind of register. Stored as 4 bits. + r either kind of register indirect only. Stored as 4 bits. + At the moment, used only for cas2 instruction. + F floating point coprocessor register only. Stored as 3 bits. + O an offset (or width): immediate data 0-31 or data register. + Stored as 6 bits in special format for BF... insns. + + autoincrement only. Stored as 3 bits (number of the address register). + - autodecrement only. Stored as 3 bits (number of the address register). + Q quick immediate data. Stored as 3 bits. + This matches an immediate operand only when value is in range 1 .. 8. + M moveq immediate data. Stored as 8 bits. + This matches an immediate operand only when value is in range -128..127 + T trap vector immediate data. Stored as 4 bits. + + k K-factor for fmove.p instruction. Stored as a 7-bit constant or + a three bit register offset, depending on the field type. + + # immediate data. Stored in special places (b, w or l) + which say how many bits to store. + ^ immediate data for floating point instructions. Special places + are offset by 2 bytes from '#'... + B pc-relative address, converted to an offset + that is treated as immediate data. + d displacement and register. Stores the register as 3 bits + and stores the displacement in the entire second word. + + C the CCR. No need to store it; this is just for filtering validity. + S the SR. No need to store, just as with CCR. + U the USP. No need to store, just as with CCR. + E the MAC ACC. No need to store, just as with CCR. + e the EMAC ACC[0123]. + G the MAC/EMAC MACSR. No need to store, just as with CCR. + g the EMAC ACCEXT{01,23}. + H the MASK. No need to store, just as with CCR. + i the MAC/EMAC scale factor. + + I Coprocessor ID. Not printed if 1. The Coprocessor ID is always + extracted from the 'd' field of word one, which means that an extended + coprocessor opcode can be skipped using the 'i' place, if needed. + + s System Control register for the floating point coprocessor. + + J Misc register for movec instruction, stored in 'j' format. + Possible values: + 0x000 SFC Source Function Code reg [60, 40, 30, 20, 10] + 0x001 DFC Data Function Code reg [60, 40, 30, 20, 10] + 0x002 CACR Cache Control Register [60, 40, 30, 20, mcf] + 0x003 TC MMU Translation Control [60, 40] + 0x004 ITT0 Instruction Transparent + Translation reg 0 [60, 40] + 0x005 ITT1 Instruction Transparent + Translation reg 1 [60, 40] + 0x006 DTT0 Data Transparent + Translation reg 0 [60, 40] + 0x007 DTT1 Data Transparent + Translation reg 1 [60, 40] + 0x008 BUSCR Bus Control Register [60] + 0x800 USP User Stack Pointer [60, 40, 30, 20, 10] + 0x801 VBR Vector Base reg [60, 40, 30, 20, 10, mcf] + 0x802 CAAR Cache Address Register [ 30, 20] + 0x803 MSP Master Stack Pointer [ 40, 30, 20] + 0x804 ISP Interrupt Stack Pointer [ 40, 30, 20] + 0x805 MMUSR MMU Status reg [ 40] + 0x806 URP User Root Pointer [60, 40] + 0x807 SRP Supervisor Root Pointer [60, 40] + 0x808 PCR Processor Configuration reg [60] + 0xC00 ROMBAR ROM Base Address Register [520X] + 0xC04 RAMBAR0 RAM Base Address Register 0 [520X] + 0xC05 RAMBAR1 RAM Base Address Register 0 [520X] + 0xC0F MBAR0 RAM Base Address Register 0 [520X] + 0xC04 FLASHBAR FLASH Base Address Register [mcf528x] + 0xC05 RAMBAR Static RAM Base Address Register [mcf528x] + + L Register list of the type d0-d7/a0-a7 etc. + (New! Improved! Can also hold fp0-fp7, as well!) + The assembler tries to see if the registers match the insn by + looking at where the insn wants them stored. + + l Register list like L, but with all the bits reversed. + Used for going the other way. . . + + c cache identifier which may be "nc" for no cache, "ic" + for instruction cache, "dc" for data cache, or "bc" + for both caches. Used in cinv and cpush. Always + stored in position "d". + + u Any register, with ``upper'' or ``lower'' specification. Used + in the mac instructions with size word. + + The remainder are all stored as 6 bits using an address mode and a + register number; they differ in which addressing modes they match. + + * all (modes 0-6,7.0-4) + ~ alterable memory (modes 2-6,7.0,7.1) + (not 0,1,7.2-4) + % alterable (modes 0-6,7.0,7.1) + (not 7.2-4) + ; data (modes 0,2-6,7.0-4) + (not 1) + @ data, but not immediate (modes 0,2-6,7.0-3) + (not 1,7.4) + ! control (modes 2,5,6,7.0-3) + (not 0,1,3,4,7.4) + & alterable control (modes 2,5,6,7.0,7.1) + (not 0,1,3,4,7.2-4) + $ alterable data (modes 0,2-6,7.0,7.1) + (not 1,7.2-4) + ? alterable control, or data register (modes 0,2,5,6,7.0,7.1) + (not 1,3,4,7.2-4) + / control, or data register (modes 0,2,5,6,7.0-3) + (not 1,3,4,7.4) + > *save operands (modes 2,4,5,6,7.0,7.1) + (not 0,1,3,7.2-4) + < *restore operands (modes 2,3,5,6,7.0-3) + (not 0,1,4,7.4) + + coldfire move operands: + m (modes 0-4) + n (modes 5,7.2) + o (modes 6,7.0,7.1,7.3,7.4) + p (modes 0-5) + + coldfire bset/bclr/btst/mulsl/mulul operands: + q (modes 0,2-5) + v (modes 0,2-5,7.0,7.1) + b (modes 0,2-5,7.2) + w (modes 2-5,7.2) + y (modes 2,5) + z (modes 2,5,7.2) + x mov3q immediate operand. + 4 (modes 2,3,4,5) + */ + +/* For the 68851: */ +/* I didn't use much imagination in choosing the + following codes, so many of them aren't very + mnemonic. -rab + + 0 32 bit pmmu register + Possible values: + 000 TC Translation Control Register (68030, 68851) + + 1 16 bit pmmu register + 111 AC Access Control (68851) + + 2 8 bit pmmu register + 100 CAL Current Access Level (68851) + 101 VAL Validate Access Level (68851) + 110 SCC Stack Change Control (68851) + + 3 68030-only pmmu registers (32 bit) + 010 TT0 Transparent Translation reg 0 + (aka Access Control reg 0 -- AC0 -- on 68ec030) + 011 TT1 Transparent Translation reg 1 + (aka Access Control reg 1 -- AC1 -- on 68ec030) + + W wide pmmu registers + Possible values: + 001 DRP Dma Root Pointer (68851) + 010 SRP Supervisor Root Pointer (68030, 68851) + 011 CRP Cpu Root Pointer (68030, 68851) + + f function code register (68030, 68851) + 0 SFC + 1 DFC + + V VAL register only (68851) + + X BADx, BACx (16 bit) + 100 BAD Breakpoint Acknowledge Data (68851) + 101 BAC Breakpoint Acknowledge Control (68851) + + Y PSR (68851) (MMUSR on 68030) (ACUSR on 68ec030) + Z PCSR (68851) + + | memory (modes 2-6, 7.*) + + t address test level (68030 only) + Stored as 3 bits, range 0-7. + Also used for breakpoint instruction now. + +*/ + +/* Places to put an operand, for non-general operands: + Characters used: BbCcDdFfGgHhIijkLlMmNnostWw123456789/ + + s source, low bits of first word. + d dest, shifted 9 in first word + 1 second word, shifted 12 + 2 second word, shifted 6 + 3 second word, shifted 0 + 4 third word, shifted 12 + 5 third word, shifted 6 + 6 third word, shifted 0 + 7 second word, shifted 7 + 8 second word, shifted 10 + 9 second word, shifted 5 + D store in both place 1 and place 3; for divul and divsl. + B first word, low byte, for branch displacements + W second word (entire), for branch displacements + L second and third words (entire), for branch displacements + (also overloaded for move16) + b second word, low byte + w second word (entire) [variable word/long branch offset for dbra] + W second word (entire) (must be signed 16 bit value) + l second and third word (entire) + g variable branch offset for bra and similar instructions. + The place to store depends on the magnitude of offset. + t store in both place 7 and place 8; for floating point operations + c branch offset for cpBcc operations. + The place to store is word two if bit six of word one is zero, + and words two and three if bit six of word one is one. + i Increment by two, to skip over coprocessor extended operands. Only + works with the 'I' format. + k Dynamic K-factor field. Bits 6-4 of word 2, used as a register number. + Also used for dynamic fmovem instruction. + C floating point coprocessor constant - 7 bits. Also used for static + K-factors... + j Movec register #, stored in 12 low bits of second word. + m For M[S]ACx; 4 bits split with MSB shifted 6 bits in first word + and remaining 3 bits of register shifted 9 bits in first word. + Indicate upper/lower in 1 bit shifted 7 bits in second word. + Use with `R' or `u' format. + n `m' withouth upper/lower indication. (For M[S]ACx; 4 bits split + with MSB shifted 6 bits in first word and remaining 3 bits of + register shifted 9 bits in first word. No upper/lower + indication is done.) Use with `R' or `u' format. + o For M[S]ACw; 4 bits shifted 12 in second word (like `1'). + Indicate upper/lower in 1 bit shifted 7 bits in second word. + Use with `R' or `u' format. + M For M[S]ACw; 4 bits in low bits of first word. Indicate + upper/lower in 1 bit shifted 6 bits in second word. Use with + `R' or `u' format. + N For M[S]ACw; 4 bits in low bits of second word. Indicate + upper/lower in 1 bit shifted 6 bits in second word. Use with + `R' or `u' format. + h shift indicator (scale factor), 1 bit shifted 10 in second word + + Places to put operand, for general operands: + d destination, shifted 6 bits in first word + b source, at low bit of first word, and immediate uses one byte + w source, at low bit of first word, and immediate uses two bytes + l source, at low bit of first word, and immediate uses four bytes + s source, at low bit of first word. + Used sometimes in contexts where immediate is not allowed anyway. + f single precision float, low bit of 1st word, immediate uses 4 bytes + F double precision float, low bit of 1st word, immediate uses 8 bytes + x extended precision float, low bit of 1st word, immediate uses 12 bytes + p packed float, low bit of 1st word, immediate uses 12 bytes + G EMAC accumulator, load (bit 4 2nd word, !bit8 first word) + H EMAC accumulator, non load (bit 4 2nd word, bit 8 first word) + F EMAC ACCx + f EMAC ACCy + I MAC/EMAC scale factor + / Like 's', but set 2nd word, bit 5 if trailing_ampersand set + ] first word, bit 10 +*/ + +extern const struct m68k_opcode m68k_opcodes[]; +extern const struct m68k_opcode_alias m68k_opcode_aliases[]; + +extern const int m68k_numopcodes, m68k_numaliases; + +/* **** End of m68k-opcode.h */ +/* **** m68k-dis.c from sourceware.org CVS 2005-08-14. */ +/* Print Motorola 68k instructions. + Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* Local function prototypes. */ + +static const char * const fpcr_names[] = +{ + "", "%fpiar", "%fpsr", "%fpiar/%fpsr", "%fpcr", + "%fpiar/%fpcr", "%fpsr/%fpcr", "%fpiar/%fpsr/%fpcr" +}; + +static const char *const reg_names[] = +{ + "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7", + "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%fp", "%sp", + "%ps", "%pc" +}; + +/* Name of register halves for MAC/EMAC. + Separate from reg_names since 'spu', 'fpl' look weird. */ +static const char *const reg_half_names[] = +{ + "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7", + "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7", + "%ps", "%pc" +}; + +/* Sign-extend an (unsigned char). */ +#if __STDC__ == 1 +#define COERCE_SIGNED_CHAR(ch) ((signed char) (ch)) +#else +#define COERCE_SIGNED_CHAR(ch) ((int) (((ch) ^ 0x80) & 0xFF) - 128) +#endif + +/* Get a 1 byte signed integer. */ +#define NEXTBYTE(p) (p += 2, FETCH_DATA (info, p), COERCE_SIGNED_CHAR(p[-1])) + +/* Get a 2 byte signed integer. */ +#define COERCE16(x) ((int) (((x) ^ 0x8000) - 0x8000)) +#define NEXTWORD(p) \ + (p += 2, FETCH_DATA (info, p), \ + COERCE16 ((p[-2] << 8) + p[-1])) + +/* Get a 4 byte signed integer. */ +#define COERCE32(x) ((bfd_signed_vma) ((x) ^ 0x80000000) - 0x80000000) +#define NEXTLONG(p) \ + (p += 4, FETCH_DATA (info, p), \ + (COERCE32 ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1]))) + +/* Get a 4 byte unsigned integer. */ +#define NEXTULONG(p) \ + (p += 4, FETCH_DATA (info, p), \ + (unsigned int) ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1])) + +/* Get a single precision float. */ +#define NEXTSINGLE(val, p) \ + (p += 4, FETCH_DATA (info, p), \ + floatformat_to_double (&floatformat_ieee_single_big, (char *) p - 4, &val)) + +/* Get a double precision float. */ +#define NEXTDOUBLE(val, p) \ + (p += 8, FETCH_DATA (info, p), \ + floatformat_to_double (&floatformat_ieee_double_big, (char *) p - 8, &val)) + +/* Get an extended precision float. */ +#define NEXTEXTEND(val, p) \ + (p += 12, FETCH_DATA (info, p), \ + floatformat_to_double (&floatformat_m68881_ext, (char *) p - 12, &val)) + +/* Need a function to convert from packed to double + precision. Actually, it's easier to print a + packed number than a double anyway, so maybe + there should be a special case to handle this... */ +#define NEXTPACKED(p) \ + (p += 12, FETCH_DATA (info, p), 0.0) + +/* Maximum length of an instruction. */ +#define MAXLEN 22 + +#include + +struct private +{ + /* Points to first byte not fetched. */ + bfd_byte *max_fetched; + bfd_byte the_buffer[MAXLEN]; + bfd_vma insn_start; + jmp_buf bailout; +}; + +/* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive) + to ADDR (exclusive) are valid. Returns 1 for success, longjmps + on error. */ +#define FETCH_DATA(info, addr) \ + ((addr) <= ((struct private *) (info->private_data))->max_fetched \ + ? 1 : fetch_data ((info), (addr))) + +static int +fetch_data (struct disassemble_info *info, bfd_byte *addr) +{ + int status; + struct private *priv = (struct private *)info->private_data; + bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer); + + status = (*info->read_memory_func) (start, + priv->max_fetched, + addr - priv->max_fetched, + info); + if (status != 0) + { + (*info->memory_error_func) (status, start, info); + longjmp (priv->bailout, 1); + } + else + priv->max_fetched = addr; + return 1; +} + +/* This function is used to print to the bit-bucket. */ +static int +dummy_printer (FILE *file ATTRIBUTE_UNUSED, + const char *format ATTRIBUTE_UNUSED, + ...) +{ + return 0; +} + +static void +dummy_print_address (bfd_vma vma ATTRIBUTE_UNUSED, + struct disassemble_info *info ATTRIBUTE_UNUSED) +{ +} + +/* Fetch BITS bits from a position in the instruction specified by CODE. + CODE is a "place to put an argument", or 'x' for a destination + that is a general address (mode and register). + BUFFER contains the instruction. */ + +static int +fetch_arg (unsigned char *buffer, + int code, + int bits, + disassemble_info *info) +{ + int val = 0; + + switch (code) + { + case '/': /* MAC/EMAC mask bit. */ + val = buffer[3] >> 5; + break; + + case 'G': /* EMAC ACC load. */ + val = ((buffer[3] >> 3) & 0x2) | ((~buffer[1] >> 7) & 0x1); + break; + + case 'H': /* EMAC ACC !load. */ + val = ((buffer[3] >> 3) & 0x2) | ((buffer[1] >> 7) & 0x1); + break; + + case ']': /* EMAC ACCEXT bit. */ + val = buffer[0] >> 2; + break; + + case 'I': /* MAC/EMAC scale factor. */ + val = buffer[2] >> 1; + break; + + case 'F': /* EMAC ACCx. */ + val = buffer[0] >> 1; + break; + + case 'f': + val = buffer[1]; + break; + + case 's': + val = buffer[1]; + break; + + case 'd': /* Destination, for register or quick. */ + val = (buffer[0] << 8) + buffer[1]; + val >>= 9; + break; + + case 'x': /* Destination, for general arg. */ + val = (buffer[0] << 8) + buffer[1]; + val >>= 6; + break; + + case 'k': + FETCH_DATA (info, buffer + 3); + val = (buffer[3] >> 4); + break; + + case 'C': + FETCH_DATA (info, buffer + 3); + val = buffer[3]; + break; + + case '1': + FETCH_DATA (info, buffer + 3); + val = (buffer[2] << 8) + buffer[3]; + val >>= 12; + break; + + case '2': + FETCH_DATA (info, buffer + 3); + val = (buffer[2] << 8) + buffer[3]; + val >>= 6; + break; + + case '3': + case 'j': + FETCH_DATA (info, buffer + 3); + val = (buffer[2] << 8) + buffer[3]; + break; + + case '4': + FETCH_DATA (info, buffer + 5); + val = (buffer[4] << 8) + buffer[5]; + val >>= 12; + break; + + case '5': + FETCH_DATA (info, buffer + 5); + val = (buffer[4] << 8) + buffer[5]; + val >>= 6; + break; + + case '6': + FETCH_DATA (info, buffer + 5); + val = (buffer[4] << 8) + buffer[5]; + break; + + case '7': + FETCH_DATA (info, buffer + 3); + val = (buffer[2] << 8) + buffer[3]; + val >>= 7; + break; + + case '8': + FETCH_DATA (info, buffer + 3); + val = (buffer[2] << 8) + buffer[3]; + val >>= 10; + break; + + case '9': + FETCH_DATA (info, buffer + 3); + val = (buffer[2] << 8) + buffer[3]; + val >>= 5; + break; + + case 'e': + val = (buffer[1] >> 6); + break; + + case 'm': + val = (buffer[1] & 0x40 ? 0x8 : 0) + | ((buffer[0] >> 1) & 0x7) + | (buffer[3] & 0x80 ? 0x10 : 0); + break; + + case 'n': + val = (buffer[1] & 0x40 ? 0x8 : 0) | ((buffer[0] >> 1) & 0x7); + break; + + case 'o': + val = (buffer[2] >> 4) | (buffer[3] & 0x80 ? 0x10 : 0); + break; + + case 'M': + val = (buffer[1] & 0xf) | (buffer[3] & 0x40 ? 0x10 : 0); + break; + + case 'N': + val = (buffer[3] & 0xf) | (buffer[3] & 0x40 ? 0x10 : 0); + break; + + case 'h': + val = buffer[2] >> 2; + break; + + default: + abort (); + } + + switch (bits) + { + case 1: + return val & 1; + case 2: + return val & 3; + case 3: + return val & 7; + case 4: + return val & 017; + case 5: + return val & 037; + case 6: + return val & 077; + case 7: + return val & 0177; + case 8: + return val & 0377; + case 12: + return val & 07777; + default: + abort (); + } +} + +/* Check if an EA is valid for a particular code. This is required + for the EMAC instructions since the type of source address determines + if it is a EMAC-load instruciton if the EA is mode 2-5, otherwise it + is a non-load EMAC instruction and the bits mean register Ry. + A similar case exists for the movem instructions where the register + mask is interpreted differently for different EAs. */ + +static bfd_boolean +m68k_valid_ea (char code, int val) +{ + int mode, mask; +#define M(n0,n1,n2,n3,n4,n5,n6,n70,n71,n72,n73,n74) \ + (n0 | n1 << 1 | n2 << 2 | n3 << 3 | n4 << 4 | n5 << 5 | n6 << 6 \ + | n70 << 7 | n71 << 8 | n72 << 9 | n73 << 10 | n74 << 11) + + switch (code) + { + case '*': + mask = M (1,1,1,1,1,1,1,1,1,1,1,1); + break; + case '~': + mask = M (0,0,1,1,1,1,1,1,1,0,0,0); + break; + case '%': + mask = M (1,1,1,1,1,1,1,1,1,0,0,0); + break; + case ';': + mask = M (1,0,1,1,1,1,1,1,1,1,1,1); + break; + case '@': + mask = M (1,0,1,1,1,1,1,1,1,1,1,0); + break; + case '!': + mask = M (0,0,1,0,0,1,1,1,1,1,1,0); + break; + case '&': + mask = M (0,0,1,0,0,1,1,1,1,0,0,0); + break; + case '$': + mask = M (1,0,1,1,1,1,1,1,1,0,0,0); + break; + case '?': + mask = M (1,0,1,0,0,1,1,1,1,0,0,0); + break; + case '/': + mask = M (1,0,1,0,0,1,1,1,1,1,1,0); + break; + case '|': + mask = M (0,0,1,0,0,1,1,1,1,1,1,0); + break; + case '>': + mask = M (0,0,1,0,1,1,1,1,1,0,0,0); + break; + case '<': + mask = M (0,0,1,1,0,1,1,1,1,1,1,0); + break; + case 'm': + mask = M (1,1,1,1,1,0,0,0,0,0,0,0); + break; + case 'n': + mask = M (0,0,0,0,0,1,0,0,0,1,0,0); + break; + case 'o': + mask = M (0,0,0,0,0,0,1,1,1,0,1,1); + break; + case 'p': + mask = M (1,1,1,1,1,1,0,0,0,0,0,0); + break; + case 'q': + mask = M (1,0,1,1,1,1,0,0,0,0,0,0); + break; + case 'v': + mask = M (1,0,1,1,1,1,0,1,1,0,0,0); + break; + case 'b': + mask = M (1,0,1,1,1,1,0,0,0,1,0,0); + break; + case 'w': + mask = M (0,0,1,1,1,1,0,0,0,1,0,0); + break; + case 'y': + mask = M (0,0,1,0,0,1,0,0,0,0,0,0); + break; + case 'z': + mask = M (0,0,1,0,0,1,0,0,0,1,0,0); + break; + case '4': + mask = M (0,0,1,1,1,1,0,0,0,0,0,0); + break; + default: + abort (); + } +#undef M + + mode = (val >> 3) & 7; + if (mode == 7) + mode += val & 7; + return (mask & (1 << mode)) != 0; +} + +/* Print a base register REGNO and displacement DISP, on INFO->STREAM. + REGNO = -1 for pc, -2 for none (suppressed). */ + +static void +print_base (int regno, bfd_vma disp, disassemble_info *info) +{ + if (regno == -1) + { + (*info->fprintf_func) (info->stream, "%%pc@("); + (*info->print_address_func) (disp, info); + } + else + { + char buf[50]; + + if (regno == -2) + (*info->fprintf_func) (info->stream, "@("); + else if (regno == -3) + (*info->fprintf_func) (info->stream, "%%zpc@("); + else + (*info->fprintf_func) (info->stream, "%s@(", reg_names[regno]); + + sprintf_vma (buf, disp); + (*info->fprintf_func) (info->stream, "%s", buf); + } +} + +/* Print an indexed argument. The base register is BASEREG (-1 for pc). + P points to extension word, in buffer. + ADDR is the nominal core address of that extension word. */ + +static unsigned char * +print_indexed (int basereg, + unsigned char *p, + bfd_vma addr, + disassemble_info *info) +{ + int word; + static const char *const scales[] = { "", ":2", ":4", ":8" }; + bfd_vma base_disp; + bfd_vma outer_disp; + char buf[40]; + char vmabuf[50]; + + word = NEXTWORD (p); + + /* Generate the text for the index register. + Where this will be output is not yet determined. */ + sprintf (buf, "%s:%c%s", + reg_names[(word >> 12) & 0xf], + (word & 0x800) ? 'l' : 'w', + scales[(word >> 9) & 3]); + + /* Handle the 68000 style of indexing. */ + + if ((word & 0x100) == 0) + { + base_disp = word & 0xff; + if ((base_disp & 0x80) != 0) + base_disp -= 0x100; + if (basereg == -1) + base_disp += addr; + print_base (basereg, base_disp, info); + (*info->fprintf_func) (info->stream, ",%s)", buf); + return p; + } + + /* Handle the generalized kind. */ + /* First, compute the displacement to add to the base register. */ + if (word & 0200) + { + if (basereg == -1) + basereg = -3; + else + basereg = -2; + } + if (word & 0100) + buf[0] = '\0'; + base_disp = 0; + switch ((word >> 4) & 3) + { + case 2: + base_disp = NEXTWORD (p); + break; + case 3: + base_disp = NEXTLONG (p); + } + if (basereg == -1) + base_disp += addr; + + /* Handle single-level case (not indirect). */ + if ((word & 7) == 0) + { + print_base (basereg, base_disp, info); + if (buf[0] != '\0') + (*info->fprintf_func) (info->stream, ",%s", buf); + (*info->fprintf_func) (info->stream, ")"); + return p; + } + + /* Two level. Compute displacement to add after indirection. */ + outer_disp = 0; + switch (word & 3) + { + case 2: + outer_disp = NEXTWORD (p); + break; + case 3: + outer_disp = NEXTLONG (p); + } + + print_base (basereg, base_disp, info); + if ((word & 4) == 0 && buf[0] != '\0') + { + (*info->fprintf_func) (info->stream, ",%s", buf); + buf[0] = '\0'; + } + sprintf_vma (vmabuf, outer_disp); + (*info->fprintf_func) (info->stream, ")@(%s", vmabuf); + if (buf[0] != '\0') + (*info->fprintf_func) (info->stream, ",%s", buf); + (*info->fprintf_func) (info->stream, ")"); + + return p; +} + +/* Returns number of bytes "eaten" by the operand, or + return -1 if an invalid operand was found, or -2 if + an opcode tabe error was found. + ADDR is the pc for this arg to be relative to. */ + +static int +print_insn_arg (const char *d, + unsigned char *buffer, + unsigned char *p0, + bfd_vma addr, + disassemble_info *info) +{ + int val = 0; + int place = d[1]; + unsigned char *p = p0; + int regno; + const char *regname; + unsigned char *p1; + double flval; + int flt_p; + bfd_signed_vma disp; + unsigned int uval; + + switch (*d) + { + case 'c': /* Cache identifier. */ + { + static const char *const cacheFieldName[] = { "nc", "dc", "ic", "bc" }; + val = fetch_arg (buffer, place, 2, info); + (*info->fprintf_func) (info->stream, cacheFieldName[val]); + break; + } + + case 'a': /* Address register indirect only. Cf. case '+'. */ + { + (*info->fprintf_func) + (info->stream, + "%s@", + reg_names[fetch_arg (buffer, place, 3, info) + 8]); + break; + } + + case '_': /* 32-bit absolute address for move16. */ + { + uval = NEXTULONG (p); + (*info->print_address_func) (uval, info); + break; + } + + case 'C': + (*info->fprintf_func) (info->stream, "%%ccr"); + break; + + case 'S': + (*info->fprintf_func) (info->stream, "%%sr"); + break; + + case 'U': + (*info->fprintf_func) (info->stream, "%%usp"); + break; + + case 'E': + (*info->fprintf_func) (info->stream, "%%acc"); + break; + + case 'G': + (*info->fprintf_func) (info->stream, "%%macsr"); + break; + + case 'H': + (*info->fprintf_func) (info->stream, "%%mask"); + break; + + case 'J': + { + /* FIXME: There's a problem here, different m68k processors call the + same address different names. This table can't get it right + because it doesn't know which processor it's disassembling for. */ + static const struct { const char *name; int value; } names[] + = {{"%sfc", 0x000}, {"%dfc", 0x001}, {"%cacr", 0x002}, + {"%tc", 0x003}, {"%itt0",0x004}, {"%itt1", 0x005}, + {"%dtt0",0x006}, {"%dtt1",0x007}, {"%buscr",0x008}, + {"%usp", 0x800}, {"%vbr", 0x801}, {"%caar", 0x802}, + {"%msp", 0x803}, {"%isp", 0x804}, + {"%flashbar", 0xc04}, {"%rambar", 0xc05}, /* mcf528x added these. */ + + /* Should we be calling this psr like we do in case 'Y'? */ + {"%mmusr",0x805}, + + {"%urp", 0x806}, {"%srp", 0x807}, {"%pcr", 0x808}}; + + val = fetch_arg (buffer, place, 12, info); + for (regno = sizeof names / sizeof names[0] - 1; regno >= 0; regno--) + if (names[regno].value == val) + { + (*info->fprintf_func) (info->stream, "%s", names[regno].name); + break; + } + if (regno < 0) + (*info->fprintf_func) (info->stream, "%d", val); + } + break; + + case 'Q': + val = fetch_arg (buffer, place, 3, info); + /* 0 means 8, except for the bkpt instruction... */ + if (val == 0 && d[1] != 's') + val = 8; + (*info->fprintf_func) (info->stream, "#%d", val); + break; + + case 'x': + val = fetch_arg (buffer, place, 3, info); + /* 0 means -1. */ + if (val == 0) + val = -1; + (*info->fprintf_func) (info->stream, "#%d", val); + break; + + case 'M': + if (place == 'h') + { + static const char *const scalefactor_name[] = { "<<", ">>" }; + val = fetch_arg (buffer, place, 1, info); + (*info->fprintf_func) (info->stream, scalefactor_name[val]); + } + else + { + val = fetch_arg (buffer, place, 8, info); + if (val & 0x80) + val = val - 0x100; + (*info->fprintf_func) (info->stream, "#%d", val); + } + break; + + case 'T': + val = fetch_arg (buffer, place, 4, info); + (*info->fprintf_func) (info->stream, "#%d", val); + break; + + case 'D': + (*info->fprintf_func) (info->stream, "%s", + reg_names[fetch_arg (buffer, place, 3, info)]); + break; + + case 'A': + (*info->fprintf_func) + (info->stream, "%s", + reg_names[fetch_arg (buffer, place, 3, info) + 010]); + break; + + case 'R': + (*info->fprintf_func) + (info->stream, "%s", + reg_names[fetch_arg (buffer, place, 4, info)]); + break; + + case 'r': + regno = fetch_arg (buffer, place, 4, info); + if (regno > 7) + (*info->fprintf_func) (info->stream, "%s@", reg_names[regno]); + else + (*info->fprintf_func) (info->stream, "@(%s)", reg_names[regno]); + break; + + case 'F': + (*info->fprintf_func) + (info->stream, "%%fp%d", + fetch_arg (buffer, place, 3, info)); + break; + + case 'O': + val = fetch_arg (buffer, place, 6, info); + if (val & 0x20) + (*info->fprintf_func) (info->stream, "%s", reg_names[val & 7]); + else + (*info->fprintf_func) (info->stream, "%d", val); + break; + + case '+': + (*info->fprintf_func) + (info->stream, "%s@+", + reg_names[fetch_arg (buffer, place, 3, info) + 8]); + break; + + case '-': + (*info->fprintf_func) + (info->stream, "%s@-", + reg_names[fetch_arg (buffer, place, 3, info) + 8]); + break; + + case 'k': + if (place == 'k') + (*info->fprintf_func) + (info->stream, "{%s}", + reg_names[fetch_arg (buffer, place, 3, info)]); + else if (place == 'C') + { + val = fetch_arg (buffer, place, 7, info); + if (val > 63) /* This is a signed constant. */ + val -= 128; + (*info->fprintf_func) (info->stream, "{#%d}", val); + } + else + return -2; + break; + + case '#': + case '^': + p1 = buffer + (*d == '#' ? 2 : 4); + if (place == 's') + val = fetch_arg (buffer, place, 4, info); + else if (place == 'C') + val = fetch_arg (buffer, place, 7, info); + else if (place == '8') + val = fetch_arg (buffer, place, 3, info); + else if (place == '3') + val = fetch_arg (buffer, place, 8, info); + else if (place == 'b') + val = NEXTBYTE (p1); + else if (place == 'w' || place == 'W') + val = NEXTWORD (p1); + else if (place == 'l') + val = NEXTLONG (p1); + else + return -2; + (*info->fprintf_func) (info->stream, "#%d", val); + break; + + case 'B': + if (place == 'b') + disp = NEXTBYTE (p); + else if (place == 'B') + disp = COERCE_SIGNED_CHAR (buffer[1]); + else if (place == 'w' || place == 'W') + disp = NEXTWORD (p); + else if (place == 'l' || place == 'L' || place == 'C') + disp = NEXTLONG (p); + else if (place == 'g') + { + disp = NEXTBYTE (buffer); + if (disp == 0) + disp = NEXTWORD (p); + else if (disp == -1) + disp = NEXTLONG (p); + } + else if (place == 'c') + { + if (buffer[1] & 0x40) /* If bit six is one, long offset. */ + disp = NEXTLONG (p); + else + disp = NEXTWORD (p); + } + else + return -2; + + (*info->print_address_func) (addr + disp, info); + break; + + case 'd': + val = NEXTWORD (p); + (*info->fprintf_func) + (info->stream, "%s@(%d)", + reg_names[fetch_arg (buffer, place, 3, info) + 8], val); + break; + + case 's': + (*info->fprintf_func) (info->stream, "%s", + fpcr_names[fetch_arg (buffer, place, 3, info)]); + break; + + case 'e': + val = fetch_arg(buffer, place, 2, info); + (*info->fprintf_func) (info->stream, "%%acc%d", val); + break; + + case 'g': + val = fetch_arg(buffer, place, 1, info); + (*info->fprintf_func) (info->stream, "%%accext%s", val==0 ? "01" : "23"); + break; + + case 'i': + val = fetch_arg(buffer, place, 2, info); + if (val == 1) + (*info->fprintf_func) (info->stream, "<<"); + else if (val == 3) + (*info->fprintf_func) (info->stream, ">>"); + else + return -1; + break; + + case 'I': + /* Get coprocessor ID... */ + val = fetch_arg (buffer, 'd', 3, info); + + if (val != 1) /* Unusual coprocessor ID? */ + (*info->fprintf_func) (info->stream, "(cpid=%d) ", val); + break; + + case '4': + case '*': + case '~': + case '%': + case ';': + case '@': + case '!': + case '$': + case '?': + case '/': + case '&': + case '|': + case '<': + case '>': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'v': + case 'b': + case 'w': + case 'y': + case 'z': + if (place == 'd') + { + val = fetch_arg (buffer, 'x', 6, info); + val = ((val & 7) << 3) + ((val >> 3) & 7); + } + else + val = fetch_arg (buffer, 's', 6, info); + + /* If the is invalid for *d, then reject this match. */ + if (!m68k_valid_ea (*d, val)) + return -1; + + /* Get register number assuming address register. */ + regno = (val & 7) + 8; + regname = reg_names[regno]; + switch (val >> 3) + { + case 0: + (*info->fprintf_func) (info->stream, "%s", reg_names[val]); + break; + + case 1: + (*info->fprintf_func) (info->stream, "%s", regname); + break; + + case 2: + (*info->fprintf_func) (info->stream, "%s@", regname); + break; + + case 3: + (*info->fprintf_func) (info->stream, "%s@+", regname); + break; + + case 4: + (*info->fprintf_func) (info->stream, "%s@-", regname); + break; + + case 5: + val = NEXTWORD (p); + (*info->fprintf_func) (info->stream, "%s@(%d)", regname, val); + break; + + case 6: + p = print_indexed (regno, p, addr, info); + break; + + case 7: + switch (val & 7) + { + case 0: + val = NEXTWORD (p); + (*info->print_address_func) (val, info); + break; + + case 1: + uval = NEXTULONG (p); + (*info->print_address_func) (uval, info); + break; + + case 2: + val = NEXTWORD (p); + (*info->fprintf_func) (info->stream, "%%pc@("); + (*info->print_address_func) (addr + val, info); + (*info->fprintf_func) (info->stream, ")"); + break; + + case 3: + p = print_indexed (-1, p, addr, info); + break; + + case 4: + flt_p = 1; /* Assume it's a float... */ + switch (place) + { + case 'b': + val = NEXTBYTE (p); + flt_p = 0; + break; + + case 'w': + val = NEXTWORD (p); + flt_p = 0; + break; + + case 'l': + val = NEXTLONG (p); + flt_p = 0; + break; + + case 'f': + NEXTSINGLE (flval, p); + break; + + case 'F': + NEXTDOUBLE (flval, p); + break; + + case 'x': + NEXTEXTEND (flval, p); + break; + + case 'p': + flval = NEXTPACKED (p); + break; + + default: + return -1; + } + if (flt_p) /* Print a float? */ + (*info->fprintf_func) (info->stream, "#%g", flval); + else + (*info->fprintf_func) (info->stream, "#%d", val); + break; + + default: + return -1; + } + } + + /* If place is '/', then this is the case of the mask bit for + mac/emac loads. Now that the arg has been printed, grab the + mask bit and if set, add a '&' to the arg. */ + if (place == '/') + { + val = fetch_arg (buffer, place, 1, info); + if (val) + info->fprintf_func (info->stream, "&"); + } + break; + + case 'L': + case 'l': + if (place == 'w') + { + char doneany; + p1 = buffer + 2; + val = NEXTWORD (p1); + /* Move the pointer ahead if this point is farther ahead + than the last. */ + p = p1 > p ? p1 : p; + if (val == 0) + { + (*info->fprintf_func) (info->stream, "#0"); + break; + } + if (*d == 'l') + { + int newval = 0; + + for (regno = 0; regno < 16; ++regno) + if (val & (0x8000 >> regno)) + newval |= 1 << regno; + val = newval; + } + val &= 0xffff; + doneany = 0; + for (regno = 0; regno < 16; ++regno) + if (val & (1 << regno)) + { + int first_regno; + + if (doneany) + (*info->fprintf_func) (info->stream, "/"); + doneany = 1; + (*info->fprintf_func) (info->stream, "%s", reg_names[regno]); + first_regno = regno; + while (val & (1 << (regno + 1))) + ++regno; + if (regno > first_regno) + (*info->fprintf_func) (info->stream, "-%s", + reg_names[regno]); + } + } + else if (place == '3') + { + /* `fmovem' insn. */ + char doneany; + val = fetch_arg (buffer, place, 8, info); + if (val == 0) + { + (*info->fprintf_func) (info->stream, "#0"); + break; + } + if (*d == 'l') + { + int newval = 0; + + for (regno = 0; regno < 8; ++regno) + if (val & (0x80 >> regno)) + newval |= 1 << regno; + val = newval; + } + val &= 0xff; + doneany = 0; + for (regno = 0; regno < 8; ++regno) + if (val & (1 << regno)) + { + int first_regno; + if (doneany) + (*info->fprintf_func) (info->stream, "/"); + doneany = 1; + (*info->fprintf_func) (info->stream, "%%fp%d", regno); + first_regno = regno; + while (val & (1 << (regno + 1))) + ++regno; + if (regno > first_regno) + (*info->fprintf_func) (info->stream, "-%%fp%d", regno); + } + } + else if (place == '8') + { + /* fmoveml for FP status registers. */ + (*info->fprintf_func) (info->stream, "%s", + fpcr_names[fetch_arg (buffer, place, 3, + info)]); + } + else + return -2; + break; + + case 'X': + place = '8'; + case 'Y': + case 'Z': + case 'W': + case '0': + case '1': + case '2': + case '3': + { + int val = fetch_arg (buffer, place, 5, info); + const char *name = 0; + + switch (val) + { + case 2: name = "%tt0"; break; + case 3: name = "%tt1"; break; + case 0x10: name = "%tc"; break; + case 0x11: name = "%drp"; break; + case 0x12: name = "%srp"; break; + case 0x13: name = "%crp"; break; + case 0x14: name = "%cal"; break; + case 0x15: name = "%val"; break; + case 0x16: name = "%scc"; break; + case 0x17: name = "%ac"; break; + case 0x18: name = "%psr"; break; + case 0x19: name = "%pcsr"; break; + case 0x1c: + case 0x1d: + { + int break_reg = ((buffer[3] >> 2) & 7); + + (*info->fprintf_func) + (info->stream, val == 0x1c ? "%%bad%d" : "%%bac%d", + break_reg); + } + break; + default: + (*info->fprintf_func) (info->stream, "", val); + } + if (name) + (*info->fprintf_func) (info->stream, "%s", name); + } + break; + + case 'f': + { + int fc = fetch_arg (buffer, place, 5, info); + + if (fc == 1) + (*info->fprintf_func) (info->stream, "%%dfc"); + else if (fc == 0) + (*info->fprintf_func) (info->stream, "%%sfc"); + else + /* xgettext:c-format */ + (*info->fprintf_func) (info->stream, _(""), fc); + } + break; + + case 'V': + (*info->fprintf_func) (info->stream, "%%val"); + break; + + case 't': + { + int level = fetch_arg (buffer, place, 3, info); + + (*info->fprintf_func) (info->stream, "%d", level); + } + break; + + case 'u': + { + short is_upper = 0; + int reg = fetch_arg (buffer, place, 5, info); + + if (reg & 0x10) + { + is_upper = 1; + reg &= 0xf; + } + (*info->fprintf_func) (info->stream, "%s%s", + reg_half_names[reg], + is_upper ? "u" : "l"); + } + break; + + default: + return -2; + } + + return p - p0; +} + +/* Try to match the current instruction to best and if so, return the + number of bytes consumed from the instruction stream, else zero. */ + +static int +match_insn_m68k (bfd_vma memaddr, + disassemble_info * info, + const struct m68k_opcode * best, + struct private * priv) +{ + unsigned char *save_p; + unsigned char *p; + const char *d; + + bfd_byte *buffer = priv->the_buffer; + fprintf_ftype save_printer = info->fprintf_func; + void (* save_print_address) (bfd_vma, struct disassemble_info *) + = info->print_address_func; + + /* Point at first word of argument data, + and at descriptor for first argument. */ + p = buffer + 2; + + /* Figure out how long the fixed-size portion of the instruction is. + The only place this is stored in the opcode table is + in the arguments--look for arguments which specify fields in the 2nd + or 3rd words of the instruction. */ + for (d = best->args; *d; d += 2) + { + /* I don't think it is necessary to be checking d[0] here; + I suspect all this could be moved to the case statement below. */ + if (d[0] == '#') + { + if (d[1] == 'l' && p - buffer < 6) + p = buffer + 6; + else if (p - buffer < 4 && d[1] != 'C' && d[1] != '8') + p = buffer + 4; + } + + if ((d[0] == 'L' || d[0] == 'l') && d[1] == 'w' && p - buffer < 4) + p = buffer + 4; + + switch (d[1]) + { + case '1': + case '2': + case '3': + case '7': + case '8': + case '9': + case 'i': + if (p - buffer < 4) + p = buffer + 4; + break; + case '4': + case '5': + case '6': + if (p - buffer < 6) + p = buffer + 6; + break; + default: + break; + } + } + + /* pflusha is an exceptions. It takes no arguments but is two words + long. Recognize it by looking at the lower 16 bits of the mask. */ + if (p - buffer < 4 && (best->match & 0xFFFF) != 0) + p = buffer + 4; + + /* lpstop is another exception. It takes a one word argument but is + three words long. */ + if (p - buffer < 6 + && (best->match & 0xffff) == 0xffff + && best->args[0] == '#' + && best->args[1] == 'w') + { + /* Copy the one word argument into the usual location for a one + word argument, to simplify printing it. We can get away with + this because we know exactly what the second word is, and we + aren't going to print anything based on it. */ + p = buffer + 6; + FETCH_DATA (info, p); + buffer[2] = buffer[4]; + buffer[3] = buffer[5]; + } + + FETCH_DATA (info, p); + + d = best->args; + + save_p = p; + info->print_address_func = dummy_print_address; + info->fprintf_func = (fprintf_ftype) dummy_printer; + + /* We scan the operands twice. The first time we don't print anything, + but look for errors. */ + for (; *d; d += 2) + { + int eaten = print_insn_arg (d, buffer, p, memaddr + (p - buffer), info); + + if (eaten >= 0) + p += eaten; + else if (eaten == -1) + { + info->fprintf_func = save_printer; + info->print_address_func = save_print_address; + return 0; + } + else + { + info->fprintf_func (info->stream, + /* xgettext:c-format */ + _("\n"), + best->name, best->args); + info->fprintf_func = save_printer; + info->print_address_func = save_print_address; + return 2; + } + } + + p = save_p; + info->fprintf_func = save_printer; + info->print_address_func = save_print_address; + + d = best->args; + + info->fprintf_func (info->stream, "%s", best->name); + + if (*d) + info->fprintf_func (info->stream, " "); + + while (*d) + { + p += print_insn_arg (d, buffer, p, memaddr + (p - buffer), info); + d += 2; + + if (*d && *(d - 2) != 'I' && *d != 'k') + info->fprintf_func (info->stream, ","); + } + + return p - buffer; +} + +/* Print the m68k instruction at address MEMADDR in debugged memory, + on INFO->STREAM. Returns length of the instruction, in bytes. */ + +int +print_insn_m68k (bfd_vma memaddr, disassemble_info *info) +{ + int i; + const char *d; + unsigned int arch_mask; + struct private priv; + bfd_byte *buffer = priv.the_buffer; + int major_opcode; + static int numopcodes[16]; + static const struct m68k_opcode **opcodes[16]; + int val; + + if (!opcodes[0]) + { + /* Speed up the matching by sorting the opcode + table on the upper four bits of the opcode. */ + const struct m68k_opcode **opc_pointer[16]; + + /* First count how many opcodes are in each of the sixteen buckets. */ + for (i = 0; i < m68k_numopcodes; i++) + numopcodes[(m68k_opcodes[i].opcode >> 28) & 15]++; + + /* Then create a sorted table of pointers + that point into the unsorted table. */ + opc_pointer[0] = malloc (sizeof (struct m68k_opcode *) + * m68k_numopcodes); + opcodes[0] = opc_pointer[0]; + + for (i = 1; i < 16; i++) + { + opc_pointer[i] = opc_pointer[i - 1] + numopcodes[i - 1]; + opcodes[i] = opc_pointer[i]; + } + + for (i = 0; i < m68k_numopcodes; i++) + *opc_pointer[(m68k_opcodes[i].opcode >> 28) & 15]++ = &m68k_opcodes[i]; + } + + info->private_data = (PTR) &priv; + /* Tell objdump to use two bytes per chunk + and six bytes per line for displaying raw data. */ + info->bytes_per_chunk = 2; + info->bytes_per_line = 6; + info->display_endian = BFD_ENDIAN_BIG; + priv.max_fetched = priv.the_buffer; + priv.insn_start = memaddr; + + if (setjmp (priv.bailout) != 0) + /* Error return. */ + return -1; + + switch (info->mach) + { + default: + case 0: + arch_mask = (unsigned int) -1; + break; + case bfd_mach_m68000: + arch_mask = m68000|m68881|m68851; + break; + case bfd_mach_m68008: + arch_mask = m68008|m68881|m68851; + break; + case bfd_mach_m68010: + arch_mask = m68010|m68881|m68851; + break; + case bfd_mach_m68020: + arch_mask = m68020|m68881|m68851; + break; + case bfd_mach_m68030: + arch_mask = m68030|m68881|m68851; + break; + case bfd_mach_m68040: + arch_mask = m68040|m68881|m68851; + break; + case bfd_mach_m68060: + arch_mask = m68060|m68881|m68851; + break; + case bfd_mach_mcf5200: + arch_mask = mcfisa_a; + break; + case bfd_mach_mcf521x: + case bfd_mach_mcf528x: + arch_mask = mcfisa_a|mcfhwdiv|mcfisa_aa|mcfusp|mcfemac; + break; + case bfd_mach_mcf5206e: + arch_mask = mcfisa_a|mcfhwdiv|mcfmac; + break; + case bfd_mach_mcf5249: + arch_mask = mcfisa_a|mcfhwdiv|mcfemac; + break; + case bfd_mach_mcf5307: + arch_mask = mcfisa_a|mcfhwdiv|mcfmac; + break; + case bfd_mach_mcf5407: + arch_mask = mcfisa_a|mcfhwdiv|mcfisa_b|mcfmac; + break; + case bfd_mach_mcf547x: + case bfd_mach_mcf548x: + case bfd_mach_mcfv4e: + arch_mask = mcfisa_a|mcfhwdiv|mcfisa_b|mcfusp|cfloat|mcfemac; + break; + } + + FETCH_DATA (info, buffer + 2); + major_opcode = (buffer[0] >> 4) & 15; + + for (i = 0; i < numopcodes[major_opcode]; i++) + { + const struct m68k_opcode *opc = opcodes[major_opcode][i]; + unsigned long opcode = opc->opcode; + unsigned long match = opc->match; + + if (((0xff & buffer[0] & (match >> 24)) == (0xff & (opcode >> 24))) + && ((0xff & buffer[1] & (match >> 16)) == (0xff & (opcode >> 16))) + /* Only fetch the next two bytes if we need to. */ + && (((0xffff & match) == 0) + || + (FETCH_DATA (info, buffer + 4) + && ((0xff & buffer[2] & (match >> 8)) == (0xff & (opcode >> 8))) + && ((0xff & buffer[3] & match) == (0xff & opcode))) + ) + && (opc->arch & arch_mask) != 0) + { + /* Don't use for printout the variants of divul and divsl + that have the same register number in two places. + The more general variants will match instead. */ + for (d = opc->args; *d; d += 2) + if (d[1] == 'D') + break; + + /* Don't use for printout the variants of most floating + point coprocessor instructions which use the same + register number in two places, as above. */ + if (*d == '\0') + for (d = opc->args; *d; d += 2) + if (d[1] == 't') + break; + + /* Don't match fmovel with more than one register; + wait for fmoveml. */ + if (*d == '\0') + { + for (d = opc->args; *d; d += 2) + { + if (d[0] == 's' && d[1] == '8') + { + val = fetch_arg (buffer, d[1], 3, info); + if ((val & (val - 1)) != 0) + break; + } + } + } + + if (*d == '\0') + if ((val = match_insn_m68k (memaddr, info, opc, & priv))) + return val; + } + } + + /* Handle undefined instructions. */ + info->fprintf_func (info->stream, "0%o", (buffer[0] << 8) + buffer[1]); + return 2; +} +/* **** End of m68k-dis.c */ +/* **** m68k-opc.h from sourceware.org CVS 2005-08-14. */ +/* Opcode table for m680[012346]0/m6888[12]/m68851/mcf5200. + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2003, 2004, 2005 + Free Software Foundation, Inc. + + This file is part of GDB, GAS, and the GNU binutils. + + GDB, GAS, and the GNU binutils are free software; you can redistribute + them and/or modify them under the terms of the GNU General Public + License as published by the Free Software Foundation; either version + 1, or (at your option) any later version. + + GDB, GAS, and the GNU binutils are distributed in the hope that they + will be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this file; see the file COPYING. If not, + see . */ + +#define one(x) ((unsigned int) (x) << 16) +#define two(x, y) (((unsigned int) (x) << 16) + (y)) + +/* The assembler requires that all instances of the same mnemonic must + be consecutive. If they aren't, the assembler will bomb at + runtime. */ + +const struct m68k_opcode m68k_opcodes[] = +{ +{"abcd", 2, one(0140400), one(0170770), "DsDd", m68000up }, +{"abcd", 2, one(0140410), one(0170770), "-s-d", m68000up }, + +{"addaw", 2, one(0150300), one(0170700), "*wAd", m68000up }, +{"addal", 2, one(0150700), one(0170700), "*lAd", m68000up | mcfisa_a }, + +{"addib", 4, one(0003000), one(0177700), "#b$s", m68000up }, +{"addiw", 4, one(0003100), one(0177700), "#w$s", m68000up }, +{"addil", 6, one(0003200), one(0177700), "#l$s", m68000up }, +{"addil", 6, one(0003200), one(0177700), "#lDs", mcfisa_a }, + +{"addqb", 2, one(0050000), one(0170700), "Qd$b", m68000up }, +{"addqw", 2, one(0050100), one(0170700), "Qd%w", m68000up }, +{"addql", 2, one(0050200), one(0170700), "Qd%l", m68000up | mcfisa_a }, + +/* The add opcode can generate the adda, addi, and addq instructions. */ +{"addb", 2, one(0050000), one(0170700), "Qd$b", m68000up }, +{"addb", 4, one(0003000), one(0177700), "#b$s", m68000up }, +{"addb", 2, one(0150000), one(0170700), ";bDd", m68000up }, +{"addb", 2, one(0150400), one(0170700), "Dd~b", m68000up }, +{"addw", 2, one(0050100), one(0170700), "Qd%w", m68000up }, +{"addw", 2, one(0150300), one(0170700), "*wAd", m68000up }, +{"addw", 4, one(0003100), one(0177700), "#w$s", m68000up }, +{"addw", 2, one(0150100), one(0170700), "*wDd", m68000up }, +{"addw", 2, one(0150500), one(0170700), "Dd~w", m68000up }, +{"addl", 2, one(0050200), one(0170700), "Qd%l", m68000up | mcfisa_a }, +{"addl", 6, one(0003200), one(0177700), "#l$s", m68000up }, +{"addl", 6, one(0003200), one(0177700), "#lDs", mcfisa_a }, +{"addl", 2, one(0150700), one(0170700), "*lAd", m68000up | mcfisa_a }, +{"addl", 2, one(0150200), one(0170700), "*lDd", m68000up | mcfisa_a }, +{"addl", 2, one(0150600), one(0170700), "Dd~l", m68000up | mcfisa_a }, + +{"addxb", 2, one(0150400), one(0170770), "DsDd", m68000up }, +{"addxb", 2, one(0150410), one(0170770), "-s-d", m68000up }, +{"addxw", 2, one(0150500), one(0170770), "DsDd", m68000up }, +{"addxw", 2, one(0150510), one(0170770), "-s-d", m68000up }, +{"addxl", 2, one(0150600), one(0170770), "DsDd", m68000up | mcfisa_a }, +{"addxl", 2, one(0150610), one(0170770), "-s-d", m68000up }, + +{"andib", 4, one(0001000), one(0177700), "#b$s", m68000up }, +{"andib", 4, one(0001074), one(0177777), "#bCs", m68000up }, +{"andiw", 4, one(0001100), one(0177700), "#w$s", m68000up }, +{"andiw", 4, one(0001174), one(0177777), "#wSs", m68000up }, +{"andil", 6, one(0001200), one(0177700), "#l$s", m68000up }, +{"andil", 6, one(0001200), one(0177700), "#lDs", mcfisa_a }, +{"andi", 4, one(0001100), one(0177700), "#w$s", m68000up }, +{"andi", 4, one(0001074), one(0177777), "#bCs", m68000up }, +{"andi", 4, one(0001174), one(0177777), "#wSs", m68000up }, + +/* The and opcode can generate the andi instruction. */ +{"andb", 4, one(0001000), one(0177700), "#b$s", m68000up }, +{"andb", 4, one(0001074), one(0177777), "#bCs", m68000up }, +{"andb", 2, one(0140000), one(0170700), ";bDd", m68000up }, +{"andb", 2, one(0140400), one(0170700), "Dd~b", m68000up }, +{"andw", 4, one(0001100), one(0177700), "#w$s", m68000up }, +{"andw", 4, one(0001174), one(0177777), "#wSs", m68000up }, +{"andw", 2, one(0140100), one(0170700), ";wDd", m68000up }, +{"andw", 2, one(0140500), one(0170700), "Dd~w", m68000up }, +{"andl", 6, one(0001200), one(0177700), "#l$s", m68000up }, +{"andl", 6, one(0001200), one(0177700), "#lDs", mcfisa_a }, +{"andl", 2, one(0140200), one(0170700), ";lDd", m68000up | mcfisa_a }, +{"andl", 2, one(0140600), one(0170700), "Dd~l", m68000up | mcfisa_a }, +{"and", 4, one(0001100), one(0177700), "#w$w", m68000up }, +{"and", 4, one(0001074), one(0177777), "#bCs", m68000up }, +{"and", 4, one(0001174), one(0177777), "#wSs", m68000up }, +{"and", 2, one(0140100), one(0170700), ";wDd", m68000up }, +{"and", 2, one(0140500), one(0170700), "Dd~w", m68000up }, + +{"aslb", 2, one(0160400), one(0170770), "QdDs", m68000up }, +{"aslb", 2, one(0160440), one(0170770), "DdDs", m68000up }, +{"aslw", 2, one(0160500), one(0170770), "QdDs", m68000up }, +{"aslw", 2, one(0160540), one(0170770), "DdDs", m68000up }, +{"aslw", 2, one(0160700), one(0177700), "~s", m68000up }, +{"asll", 2, one(0160600), one(0170770), "QdDs", m68000up | mcfisa_a }, +{"asll", 2, one(0160640), one(0170770), "DdDs", m68000up | mcfisa_a }, + +{"asrb", 2, one(0160000), one(0170770), "QdDs", m68000up }, +{"asrb", 2, one(0160040), one(0170770), "DdDs", m68000up }, +{"asrw", 2, one(0160100), one(0170770), "QdDs", m68000up }, +{"asrw", 2, one(0160140), one(0170770), "DdDs", m68000up }, +{"asrw", 2, one(0160300), one(0177700), "~s", m68000up }, +{"asrl", 2, one(0160200), one(0170770), "QdDs", m68000up | mcfisa_a }, +{"asrl", 2, one(0160240), one(0170770), "DdDs", m68000up | mcfisa_a }, + +{"bhiw", 2, one(0061000), one(0177777), "BW", m68000up | mcfisa_a }, +{"blsw", 2, one(0061400), one(0177777), "BW", m68000up | mcfisa_a }, +{"bccw", 2, one(0062000), one(0177777), "BW", m68000up | mcfisa_a }, +{"bcsw", 2, one(0062400), one(0177777), "BW", m68000up | mcfisa_a }, +{"bnew", 2, one(0063000), one(0177777), "BW", m68000up | mcfisa_a }, +{"beqw", 2, one(0063400), one(0177777), "BW", m68000up | mcfisa_a }, +{"bvcw", 2, one(0064000), one(0177777), "BW", m68000up | mcfisa_a }, +{"bvsw", 2, one(0064400), one(0177777), "BW", m68000up | mcfisa_a }, +{"bplw", 2, one(0065000), one(0177777), "BW", m68000up | mcfisa_a }, +{"bmiw", 2, one(0065400), one(0177777), "BW", m68000up | mcfisa_a }, +{"bgew", 2, one(0066000), one(0177777), "BW", m68000up | mcfisa_a }, +{"bltw", 2, one(0066400), one(0177777), "BW", m68000up | mcfisa_a }, +{"bgtw", 2, one(0067000), one(0177777), "BW", m68000up | mcfisa_a }, +{"blew", 2, one(0067400), one(0177777), "BW", m68000up | mcfisa_a }, + +{"bhil", 2, one(0061377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"blsl", 2, one(0061777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bccl", 2, one(0062377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bcsl", 2, one(0062777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bnel", 2, one(0063377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"beql", 2, one(0063777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bvcl", 2, one(0064377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bvsl", 2, one(0064777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bpll", 2, one(0065377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bmil", 2, one(0065777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bgel", 2, one(0066377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bltl", 2, one(0066777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bgtl", 2, one(0067377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"blel", 2, one(0067777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, + +{"bhis", 2, one(0061000), one(0177400), "BB", m68000up | mcfisa_a }, +{"blss", 2, one(0061400), one(0177400), "BB", m68000up | mcfisa_a }, +{"bccs", 2, one(0062000), one(0177400), "BB", m68000up | mcfisa_a }, +{"bcss", 2, one(0062400), one(0177400), "BB", m68000up | mcfisa_a }, +{"bnes", 2, one(0063000), one(0177400), "BB", m68000up | mcfisa_a }, +{"beqs", 2, one(0063400), one(0177400), "BB", m68000up | mcfisa_a }, +{"bvcs", 2, one(0064000), one(0177400), "BB", m68000up | mcfisa_a }, +{"bvss", 2, one(0064400), one(0177400), "BB", m68000up | mcfisa_a }, +{"bpls", 2, one(0065000), one(0177400), "BB", m68000up | mcfisa_a }, +{"bmis", 2, one(0065400), one(0177400), "BB", m68000up | mcfisa_a }, +{"bges", 2, one(0066000), one(0177400), "BB", m68000up | mcfisa_a }, +{"blts", 2, one(0066400), one(0177400), "BB", m68000up | mcfisa_a }, +{"bgts", 2, one(0067000), one(0177400), "BB", m68000up | mcfisa_a }, +{"bles", 2, one(0067400), one(0177400), "BB", m68000up | mcfisa_a }, + +{"jhi", 2, one(0061000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jls", 2, one(0061400), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jcc", 2, one(0062000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jcs", 2, one(0062400), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jne", 2, one(0063000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jeq", 2, one(0063400), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jvc", 2, one(0064000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jvs", 2, one(0064400), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jpl", 2, one(0065000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jmi", 2, one(0065400), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jge", 2, one(0066000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jlt", 2, one(0066400), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jgt", 2, one(0067000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jle", 2, one(0067400), one(0177400), "Bg", m68000up | mcfisa_a }, + +{"bchg", 2, one(0000500), one(0170700), "Dd$s", m68000up | mcfisa_a }, +{"bchg", 4, one(0004100), one(0177700), "#b$s", m68000up }, +{"bchg", 4, one(0004100), one(0177700), "#bqs", mcfisa_a }, + +{"bclr", 2, one(0000600), one(0170700), "Dd$s", m68000up | mcfisa_a }, +{"bclr", 4, one(0004200), one(0177700), "#b$s", m68000up }, +{"bclr", 4, one(0004200), one(0177700), "#bqs", mcfisa_a }, + +{"bfchg", 4, two(0165300, 0), two(0177700, 0170000), "?sO2O3", m68020up }, +{"bfclr", 4, two(0166300, 0), two(0177700, 0170000), "?sO2O3", m68020up }, +{"bfexts", 4, two(0165700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up }, +{"bfextu", 4, two(0164700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up }, +{"bfffo", 4, two(0166700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up }, +{"bfins", 4, two(0167700, 0), two(0177700, 0100000), "D1?sO2O3", m68020up }, +{"bfset", 4, two(0167300, 0), two(0177700, 0170000), "?sO2O3", m68020up }, +{"bftst", 4, two(0164300, 0), two(0177700, 0170000), "/sO2O3", m68020up }, + +{"bgnd", 2, one(0045372), one(0177777), "", cpu32 }, + +{"bitrev", 2, one(0000300), one(0177770), "Ds", mcfisa_aa}, + +{"bkpt", 2, one(0044110), one(0177770), "ts", m68010up }, + +{"braw", 2, one(0060000), one(0177777), "BW", m68000up | mcfisa_a }, +{"bral", 2, one(0060377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bras", 2, one(0060000), one(0177400), "BB", m68000up | mcfisa_a }, + +{"bset", 2, one(0000700), one(0170700), "Dd$s", m68000up | mcfisa_a }, +{"bset", 2, one(0000700), one(0170700), "Ddvs", mcfisa_a }, +{"bset", 4, one(0004300), one(0177700), "#b$s", m68000up }, +{"bset", 4, one(0004300), one(0177700), "#bqs", mcfisa_a }, + +{"bsrw", 2, one(0060400), one(0177777), "BW", m68000up | mcfisa_a }, +{"bsrl", 2, one(0060777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b}, +{"bsrs", 2, one(0060400), one(0177400), "BB", m68000up | mcfisa_a }, + +{"btst", 2, one(0000400), one(0170700), "Dd;b", m68000up | mcfisa_a }, +{"btst", 4, one(0004000), one(0177700), "#b@s", m68000up }, +{"btst", 4, one(0004000), one(0177700), "#bqs", mcfisa_a }, + +{"byterev", 2, one(0001300), one(0177770), "Ds", mcfisa_aa}, + +{"callm", 4, one(0003300), one(0177700), "#b!s", m68020 }, + +{"cas2w", 6, two(0006374,0), two(0177777,0007070), "D3D6D2D5r1r4", m68020up }, +{"cas2w", 6, two(0006374,0), two(0177777,0007070), "D3D6D2D5R1R4", m68020up }, +{"cas2l", 6, two(0007374,0), two(0177777,0007070), "D3D6D2D5r1r4", m68020up }, +{"cas2l", 6, two(0007374,0), two(0177777,0007070), "D3D6D2D5R1R4", m68020up }, + +{"casb", 4, two(0005300, 0), two(0177700, 0177070), "D3D2~s", m68020up }, +{"casw", 4, two(0006300, 0), two(0177700, 0177070), "D3D2~s", m68020up }, +{"casl", 4, two(0007300, 0), two(0177700, 0177070), "D3D2~s", m68020up }, + +{"chk2b", 4, two(0000300,0004000), two(0177700,07777), "!sR1", m68020up | cpu32 }, +{"chk2w", 4, two(0001300,0004000), two(0177700,07777), "!sR1", m68020up | cpu32 }, +{"chk2l", 4, two(0002300,0004000), two(0177700,07777), "!sR1", m68020up | cpu32 }, + +{"chkl", 2, one(0040400), one(0170700), ";lDd", m68000up }, +{"chkw", 2, one(0040600), one(0170700), ";wDd", m68000up }, + +#define SCOPE_LINE (0x1 << 3) +#define SCOPE_PAGE (0x2 << 3) +#define SCOPE_ALL (0x3 << 3) + +{"cinva", 2, one(0xf400|SCOPE_ALL), one(0xff38), "ce", m68040up }, +{"cinvl", 2, one(0xf400|SCOPE_LINE), one(0xff38), "ceas", m68040up }, +{"cinvp", 2, one(0xf400|SCOPE_PAGE), one(0xff38), "ceas", m68040up }, + +{"cpusha", 2, one(0xf420|SCOPE_ALL), one(0xff38), "ce", m68040up }, +{"cpushl", 2, one(0xf420|SCOPE_LINE), one(0xff38), "ceas", m68040up | mcfisa_a }, +{"cpushp", 2, one(0xf420|SCOPE_PAGE), one(0xff38), "ceas", m68040up }, + +#undef SCOPE_LINE +#undef SCOPE_PAGE +#undef SCOPE_ALL + +{"clrb", 2, one(0041000), one(0177700), "$s", m68000up | mcfisa_a }, +{"clrw", 2, one(0041100), one(0177700), "$s", m68000up | mcfisa_a }, +{"clrl", 2, one(0041200), one(0177700), "$s", m68000up | mcfisa_a }, + +{"cmp2b", 4, two(0000300,0), two(0177700,07777), "!sR1", m68020up | cpu32 }, +{"cmp2w", 4, two(0001300,0), two(0177700,07777), "!sR1", m68020up | cpu32 }, +{"cmp2l", 4, two(0002300,0), two(0177700,07777), "!sR1", m68020up | cpu32 }, + +{"cmpaw", 2, one(0130300), one(0170700), "*wAd", m68000up }, +{"cmpal", 2, one(0130700), one(0170700), "*lAd", m68000up | mcfisa_a }, + +{"cmpib", 4, one(0006000), one(0177700), "#b@s", m68000up }, +{"cmpib", 4, one(0006000), one(0177700), "#bDs", mcfisa_b }, +{"cmpiw", 4, one(0006100), one(0177700), "#w@s", m68000up }, +{"cmpiw", 4, one(0006100), one(0177700), "#wDs", mcfisa_b }, +{"cmpil", 6, one(0006200), one(0177700), "#l@s", m68000up }, +{"cmpil", 6, one(0006200), one(0177700), "#lDs", mcfisa_a }, + +{"cmpmb", 2, one(0130410), one(0170770), "+s+d", m68000up }, +{"cmpmw", 2, one(0130510), one(0170770), "+s+d", m68000up }, +{"cmpml", 2, one(0130610), one(0170770), "+s+d", m68000up }, + +/* The cmp opcode can generate the cmpa, cmpm, and cmpi instructions. */ +{"cmpb", 4, one(0006000), one(0177700), "#b@s", m68000up }, +{"cmpb", 4, one(0006000), one(0177700), "#bDs", mcfisa_b }, +{"cmpb", 2, one(0130410), one(0170770), "+s+d", m68000up }, +{"cmpb", 2, one(0130000), one(0170700), ";bDd", m68000up }, +{"cmpb", 2, one(0130000), one(0170700), "*bDd", mcfisa_b }, +{"cmpw", 2, one(0130300), one(0170700), "*wAd", m68000up }, +{"cmpw", 4, one(0006100), one(0177700), "#w@s", m68000up }, +{"cmpw", 4, one(0006100), one(0177700), "#wDs", mcfisa_b }, +{"cmpw", 2, one(0130510), one(0170770), "+s+d", m68000up }, +{"cmpw", 2, one(0130100), one(0170700), "*wDd", m68000up | mcfisa_b }, +{"cmpl", 2, one(0130700), one(0170700), "*lAd", m68000up | mcfisa_a }, +{"cmpl", 6, one(0006200), one(0177700), "#l@s", m68000up }, +{"cmpl", 6, one(0006200), one(0177700), "#lDs", mcfisa_a }, +{"cmpl", 2, one(0130610), one(0170770), "+s+d", m68000up }, +{"cmpl", 2, one(0130200), one(0170700), "*lDd", m68000up | mcfisa_a }, + +{"dbcc", 2, one(0052310), one(0177770), "DsBw", m68000up }, +{"dbcs", 2, one(0052710), one(0177770), "DsBw", m68000up }, +{"dbeq", 2, one(0053710), one(0177770), "DsBw", m68000up }, +{"dbf", 2, one(0050710), one(0177770), "DsBw", m68000up }, +{"dbge", 2, one(0056310), one(0177770), "DsBw", m68000up }, +{"dbgt", 2, one(0057310), one(0177770), "DsBw", m68000up }, +{"dbhi", 2, one(0051310), one(0177770), "DsBw", m68000up }, +{"dble", 2, one(0057710), one(0177770), "DsBw", m68000up }, +{"dbls", 2, one(0051710), one(0177770), "DsBw", m68000up }, +{"dblt", 2, one(0056710), one(0177770), "DsBw", m68000up }, +{"dbmi", 2, one(0055710), one(0177770), "DsBw", m68000up }, +{"dbne", 2, one(0053310), one(0177770), "DsBw", m68000up }, +{"dbpl", 2, one(0055310), one(0177770), "DsBw", m68000up }, +{"dbt", 2, one(0050310), one(0177770), "DsBw", m68000up }, +{"dbvc", 2, one(0054310), one(0177770), "DsBw", m68000up }, +{"dbvs", 2, one(0054710), one(0177770), "DsBw", m68000up }, + +{"divsw", 2, one(0100700), one(0170700), ";wDd", m68000up | mcfhwdiv }, + +{"divsl", 4, two(0046100,0006000),two(0177700,0107770),";lD3D1", m68020up|cpu32 }, +{"divsl", 4, two(0046100,0004000),two(0177700,0107770),";lDD", m68020up|cpu32 }, +{"divsl", 4, two(0046100,0004000),two(0177700,0107770),"qsDD", mcfhwdiv }, + +{"divsll", 4, two(0046100,0004000),two(0177700,0107770),";lD3D1",m68020up|cpu32 }, +{"divsll", 4, two(0046100,0004000),two(0177700,0107770),";lDD", m68020up|cpu32 }, + +{"divuw", 2, one(0100300), one(0170700), ";wDd", m68000up | mcfhwdiv }, + +{"divul", 4, two(0046100,0002000),two(0177700,0107770),";lD3D1", m68020up|cpu32 }, +{"divul", 4, two(0046100,0000000),two(0177700,0107770),";lDD", m68020up|cpu32 }, +{"divul", 4, two(0046100,0000000),two(0177700,0107770),"qsDD", mcfhwdiv }, + +{"divull", 4, two(0046100,0000000),two(0177700,0107770),";lD3D1",m68020up|cpu32 }, +{"divull", 4, two(0046100,0000000),two(0177700,0107770),";lDD", m68020up|cpu32 }, + +{"eorib", 4, one(0005000), one(0177700), "#b$s", m68000up }, +{"eorib", 4, one(0005074), one(0177777), "#bCs", m68000up }, +{"eoriw", 4, one(0005100), one(0177700), "#w$s", m68000up }, +{"eoriw", 4, one(0005174), one(0177777), "#wSs", m68000up }, +{"eoril", 6, one(0005200), one(0177700), "#l$s", m68000up }, +{"eoril", 6, one(0005200), one(0177700), "#lDs", mcfisa_a }, +{"eori", 4, one(0005074), one(0177777), "#bCs", m68000up }, +{"eori", 4, one(0005174), one(0177777), "#wSs", m68000up }, +{"eori", 4, one(0005100), one(0177700), "#w$s", m68000up }, + +/* The eor opcode can generate the eori instruction. */ +{"eorb", 4, one(0005000), one(0177700), "#b$s", m68000up }, +{"eorb", 4, one(0005074), one(0177777), "#bCs", m68000up }, +{"eorb", 2, one(0130400), one(0170700), "Dd$s", m68000up }, +{"eorw", 4, one(0005100), one(0177700), "#w$s", m68000up }, +{"eorw", 4, one(0005174), one(0177777), "#wSs", m68000up }, +{"eorw", 2, one(0130500), one(0170700), "Dd$s", m68000up }, +{"eorl", 6, one(0005200), one(0177700), "#l$s", m68000up }, +{"eorl", 6, one(0005200), one(0177700), "#lDs", mcfisa_a }, +{"eorl", 2, one(0130600), one(0170700), "Dd$s", m68000up | mcfisa_a }, +{"eor", 4, one(0005074), one(0177777), "#bCs", m68000up }, +{"eor", 4, one(0005174), one(0177777), "#wSs", m68000up }, +{"eor", 4, one(0005100), one(0177700), "#w$s", m68000up }, +{"eor", 2, one(0130500), one(0170700), "Dd$s", m68000up }, + +{"exg", 2, one(0140500), one(0170770), "DdDs", m68000up }, +{"exg", 2, one(0140510), one(0170770), "AdAs", m68000up }, +{"exg", 2, one(0140610), one(0170770), "DdAs", m68000up }, +{"exg", 2, one(0140610), one(0170770), "AsDd", m68000up }, + +{"extw", 2, one(0044200), one(0177770), "Ds", m68000up|mcfisa_a }, +{"extl", 2, one(0044300), one(0177770), "Ds", m68000up|mcfisa_a }, +{"extbl", 2, one(0044700), one(0177770), "Ds", m68020up|cpu32|mcfisa_a }, + +{"ff1", 2, one(0002300), one(0177770), "Ds", mcfisa_aa}, + +/* float stuff starts here */ + +{"fabsb", 4, two(0xF000, 0x5818), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fabsb", 4, two(0xF000, 0x5818), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fabsd", 4, two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fabsd", 4, two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fabsd", 4, two(0xF000, 0x5418), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fabsd", 4, two(0xF000, 0x5418), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fabsl", 4, two(0xF000, 0x4018), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fabsl", 4, two(0xF000, 0x4018), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fabsp", 4, two(0xF000, 0x4C18), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fabss", 4, two(0xF000, 0x4418), two(0xF1C0, 0xFC7F), "Ii;fF7", cfloat }, +{"fabss", 4, two(0xF000, 0x4418), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fabsw", 4, two(0xF000, 0x5018), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fabsw", 4, two(0xF000, 0x5018), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fabsx", 4, two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fabsx", 4, two(0xF000, 0x4818), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fabsx", 4, two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fsabsb", 4, two(0xF000, 0x5858), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fsabsb", 4, two(0xF000, 0x5858), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsabsd", 4, two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsabsd", 4, two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fsabsd", 4, two(0xF000, 0x5458), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fsabsd", 4, two(0xF000, 0x5458), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsabsl", 4, two(0xF000, 0x4058), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fsabsl", 4, two(0xF000, 0x4058), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsabsp", 4, two(0xF000, 0x4C58), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fsabss", 4, two(0xF000, 0x4258), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsabss", 4, two(0xF000, 0x4458), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fsabsw", 4, two(0xF000, 0x5058), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fsabsw", 4, two(0xF000, 0x5058), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsabsx", 4, two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fsabsx", 4, two(0xF000, 0x4858), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fsabsx", 4, two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiFt", m68040up }, + +{"fdabsb", 4, two(0xF000, 0x585C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdabsb", 4, two(0xF000, 0x585c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up}, +{"fdabsd", 4, two(0xF000, 0x005C), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdabsd", 4, two(0xF000, 0x005C), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fdabsd", 4, two(0xF000, 0x545C), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fdabsd", 4, two(0xF000, 0x545c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up}, +{"fdabsl", 4, two(0xF000, 0x405C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdabsl", 4, two(0xF000, 0x405c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up}, +{"fdabsp", 4, two(0xF000, 0x4C5c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up}, +{"fdabss", 4, two(0xF000, 0x425C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdabss", 4, two(0xF000, 0x445c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up}, +{"fdabsw", 4, two(0xF000, 0x505C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdabsw", 4, two(0xF000, 0x505c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up}, +{"fdabsx", 4, two(0xF000, 0x005c), two(0xF1C0, 0xE07F), "IiF8F7", m68040up}, +{"fdabsx", 4, two(0xF000, 0x485c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up}, +{"fdabsx", 4, two(0xF000, 0x005c), two(0xF1C0, 0xE07F), "IiFt", m68040up}, + +{"facosb", 4, two(0xF000, 0x581C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"facosd", 4, two(0xF000, 0x541C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"facosl", 4, two(0xF000, 0x401C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"facosp", 4, two(0xF000, 0x4C1C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"facoss", 4, two(0xF000, 0x441C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"facosw", 4, two(0xF000, 0x501C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"facosx", 4, two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"facosx", 4, two(0xF000, 0x481C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"facosx", 4, two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"faddb", 4, two(0xF000, 0x5822), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"faddb", 4, two(0xF000, 0x5822), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"faddd", 4, two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"faddd", 4, two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"faddd", 4, two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"faddd", 4, two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"faddl", 4, two(0xF000, 0x4022), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"faddl", 4, two(0xF000, 0x4022), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"faddp", 4, two(0xF000, 0x4C22), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fadds", 4, two(0xF000, 0x4422), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fadds", 4, two(0xF000, 0x4422), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"faddw", 4, two(0xF000, 0x5022), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"faddw", 4, two(0xF000, 0x5022), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"faddx", 4, two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"faddx", 4, two(0xF000, 0x4822), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, + +{"fsaddb", 4, two(0xF000, 0x5862), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fsaddb", 4, two(0xF000, 0x5862), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsaddd", 4, two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsaddd", 4, two(0xF000, 0x5462), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fsaddd", 4, two(0xF000, 0x5462), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsaddl", 4, two(0xF000, 0x4062), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fsaddl", 4, two(0xF000, 0x4062), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsaddp", 4, two(0xF000, 0x4C62), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fsadds", 4, two(0xF000, 0x4462), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fsadds", 4, two(0xF000, 0x4862), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsaddw", 4, two(0xF000, 0x5062), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fsaddw", 4, two(0xF000, 0x5062), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsaddx", 4, two(0xF000, 0x0062), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fsaddx", 4, two(0xF000, 0x4862), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, + +{"fdaddb", 4, two(0xF000, 0x5826), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdaddb", 4, two(0xF000, 0x5866), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fdaddd", 4, two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdaddd", 4, two(0xF000, 0x5426), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdaddd", 4, two(0xF000, 0x5466), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fdaddl", 4, two(0xF000, 0x4026), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fdaddl", 4, two(0xF000, 0x4066), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fdaddp", 4, two(0xF000, 0x4C66), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fdadds", 4, two(0xF000, 0x4466), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fdadds", 4, two(0xF000, 0x4826), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdaddw", 4, two(0xF000, 0x5026), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdaddw", 4, two(0xF000, 0x5066), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fdaddx", 4, two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fdaddx", 4, two(0xF000, 0x4866), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, + +{"fasinb", 4, two(0xF000, 0x580C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fasind", 4, two(0xF000, 0x540C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fasinl", 4, two(0xF000, 0x400C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fasinp", 4, two(0xF000, 0x4C0C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fasins", 4, two(0xF000, 0x440C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fasinw", 4, two(0xF000, 0x500C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fasinx", 4, two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fasinx", 4, two(0xF000, 0x480C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fasinx", 4, two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fatanb", 4, two(0xF000, 0x580A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fatand", 4, two(0xF000, 0x540A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fatanl", 4, two(0xF000, 0x400A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fatanp", 4, two(0xF000, 0x4C0A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fatans", 4, two(0xF000, 0x440A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fatanw", 4, two(0xF000, 0x500A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fatanx", 4, two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fatanx", 4, two(0xF000, 0x480A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fatanx", 4, two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fatanhb", 4, two(0xF000, 0x580D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fatanhd", 4, two(0xF000, 0x540D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fatanhl", 4, two(0xF000, 0x400D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fatanhp", 4, two(0xF000, 0x4C0D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fatanhs", 4, two(0xF000, 0x440D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fatanhw", 4, two(0xF000, 0x500D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fatanhx", 4, two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fatanhx", 4, two(0xF000, 0x480D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fatanhx", 4, two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fbeq", 2, one(0xF081), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbf", 2, one(0xF080), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbge", 2, one(0xF093), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbgl", 2, one(0xF096), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbgle", 2, one(0xF097), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbgt", 2, one(0xF092), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fble", 2, one(0xF095), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fblt", 2, one(0xF094), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbne", 2, one(0xF08E), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbnge", 2, one(0xF09C), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbngl", 2, one(0xF099), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbngle", 2, one(0xF098), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbngt", 2, one(0xF09D), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbnle", 2, one(0xF09A), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbnlt", 2, one(0xF09B), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fboge", 2, one(0xF083), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbogl", 2, one(0xF086), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbogt", 2, one(0xF082), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbole", 2, one(0xF085), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbolt", 2, one(0xF084), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbor", 2, one(0xF087), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbseq", 2, one(0xF091), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbsf", 2, one(0xF090), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbsne", 2, one(0xF09E), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbst", 2, one(0xF09F), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbt", 2, one(0xF08F), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbueq", 2, one(0xF089), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbuge", 2, one(0xF08B), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbugt", 2, one(0xF08A), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbule", 2, one(0xF08D), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbult", 2, one(0xF08C), one(0xF1FF), "IdBW", mfloat | cfloat }, +{"fbun", 2, one(0xF088), one(0xF1FF), "IdBW", mfloat | cfloat }, + +{"fbeql", 2, one(0xF0C1), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbfl", 2, one(0xF0C0), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbgel", 2, one(0xF0D3), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbgll", 2, one(0xF0D6), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbglel", 2, one(0xF0D7), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbgtl", 2, one(0xF0D2), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fblel", 2, one(0xF0D5), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbltl", 2, one(0xF0D4), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbnel", 2, one(0xF0CE), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbngel", 2, one(0xF0DC), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbngll", 2, one(0xF0D9), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbnglel", 2, one(0xF0D8), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbngtl", 2, one(0xF0DD), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbnlel", 2, one(0xF0DA), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbnltl", 2, one(0xF0DB), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbogel", 2, one(0xF0C3), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbogll", 2, one(0xF0C6), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbogtl", 2, one(0xF0C2), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbolel", 2, one(0xF0C5), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fboltl", 2, one(0xF0C4), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fborl", 2, one(0xF0C7), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbseql", 2, one(0xF0D1), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbsfl", 2, one(0xF0D0), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbsnel", 2, one(0xF0DE), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbstl", 2, one(0xF0DF), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbtl", 2, one(0xF0CF), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbueql", 2, one(0xF0C9), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbugel", 2, one(0xF0CB), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbugtl", 2, one(0xF0CA), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbulel", 2, one(0xF0CD), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbultl", 2, one(0xF0CC), one(0xF1FF), "IdBC", mfloat | cfloat }, +{"fbunl", 2, one(0xF0C8), one(0xF1FF), "IdBC", mfloat | cfloat }, + +{"fjeq", 2, one(0xF081), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjf", 2, one(0xF080), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjge", 2, one(0xF093), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjgl", 2, one(0xF096), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjgle", 2, one(0xF097), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjgt", 2, one(0xF092), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjle", 2, one(0xF095), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjlt", 2, one(0xF094), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjne", 2, one(0xF08E), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjnge", 2, one(0xF09C), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjngl", 2, one(0xF099), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjngle", 2, one(0xF098), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjngt", 2, one(0xF09D), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjnle", 2, one(0xF09A), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjnlt", 2, one(0xF09B), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjoge", 2, one(0xF083), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjogl", 2, one(0xF086), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjogt", 2, one(0xF082), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjole", 2, one(0xF085), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjolt", 2, one(0xF084), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjor", 2, one(0xF087), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjseq", 2, one(0xF091), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjsf", 2, one(0xF090), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjsne", 2, one(0xF09E), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjst", 2, one(0xF09F), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjt", 2, one(0xF08F), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjueq", 2, one(0xF089), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjuge", 2, one(0xF08B), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjugt", 2, one(0xF08A), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjule", 2, one(0xF08D), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjult", 2, one(0xF08C), one(0xF1BF), "IdBc", mfloat | cfloat }, +{"fjun", 2, one(0xF088), one(0xF1BF), "IdBc", mfloat | cfloat }, + +{"fcmpb", 4, two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fcmpb", 4, two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fcmpd", 4, two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fcmpd", 4, two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fcmpd", 4, two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fcmpl", 4, two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fcmpl", 4, two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fcmpp", 4, two(0xF000, 0x4C38), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fcmps", 4, two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fcmps", 4, two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fcmpw", 4, two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fcmpw", 4, two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fcmpx", 4, two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fcmpx", 4, two(0xF000, 0x4838), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, + +{"fcosb", 4, two(0xF000, 0x581D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fcosd", 4, two(0xF000, 0x541D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fcosl", 4, two(0xF000, 0x401D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fcosp", 4, two(0xF000, 0x4C1D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fcoss", 4, two(0xF000, 0x441D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fcosw", 4, two(0xF000, 0x501D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fcosx", 4, two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fcosx", 4, two(0xF000, 0x481D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fcosx", 4, two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fcoshb", 4, two(0xF000, 0x5819), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fcoshd", 4, two(0xF000, 0x5419), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fcoshl", 4, two(0xF000, 0x4019), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fcoshp", 4, two(0xF000, 0x4C19), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fcoshs", 4, two(0xF000, 0x4419), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fcoshw", 4, two(0xF000, 0x5019), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fcoshx", 4, two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fcoshx", 4, two(0xF000, 0x4819), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fcoshx", 4, two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fdbeq", 4, two(0xF048, 0x0001), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbf", 4, two(0xF048, 0x0000), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbge", 4, two(0xF048, 0x0013), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbgl", 4, two(0xF048, 0x0016), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbgle", 4, two(0xF048, 0x0017), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbgt", 4, two(0xF048, 0x0012), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdble", 4, two(0xF048, 0x0015), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdblt", 4, two(0xF048, 0x0014), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbne", 4, two(0xF048, 0x000E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbnge", 4, two(0xF048, 0x001C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbngl", 4, two(0xF048, 0x0019), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbngle", 4, two(0xF048, 0x0018), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbngt", 4, two(0xF048, 0x001D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbnle", 4, two(0xF048, 0x001A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbnlt", 4, two(0xF048, 0x001B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdboge", 4, two(0xF048, 0x0003), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbogl", 4, two(0xF048, 0x0006), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbogt", 4, two(0xF048, 0x0002), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbole", 4, two(0xF048, 0x0005), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbolt", 4, two(0xF048, 0x0004), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbor", 4, two(0xF048, 0x0007), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbseq", 4, two(0xF048, 0x0011), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbsf", 4, two(0xF048, 0x0010), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbsne", 4, two(0xF048, 0x001E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbst", 4, two(0xF048, 0x001F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbt", 4, two(0xF048, 0x000F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbueq", 4, two(0xF048, 0x0009), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbuge", 4, two(0xF048, 0x000B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbugt", 4, two(0xF048, 0x000A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbule", 4, two(0xF048, 0x000D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbult", 4, two(0xF048, 0x000C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, +{"fdbun", 4, two(0xF048, 0x0008), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat }, + +{"fdivb", 4, two(0xF000, 0x5820), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fdivb", 4, two(0xF000, 0x5820), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdivd", 4, two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdivd", 4, two(0xF000, 0x5420), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fdivd", 4, two(0xF000, 0x5420), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fdivl", 4, two(0xF000, 0x4020), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fdivl", 4, two(0xF000, 0x4020), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdivp", 4, two(0xF000, 0x4C20), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fdivs", 4, two(0xF000, 0x4420), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fdivs", 4, two(0xF000, 0x4420), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdivw", 4, two(0xF000, 0x5020), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fdivw", 4, two(0xF000, 0x5020), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdivx", 4, two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fdivx", 4, two(0xF000, 0x4820), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, + +{"fsdivb", 4, two(0xF000, 0x5860), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fsdivb", 4, two(0xF000, 0x5860), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsdivd", 4, two(0xF000, 0x0060), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsdivd", 4, two(0xF000, 0x5460), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fsdivd", 4, two(0xF000, 0x5460), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsdivl", 4, two(0xF000, 0x4060), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fsdivl", 4, two(0xF000, 0x4060), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsdivp", 4, two(0xF000, 0x4C60), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fsdivs", 4, two(0xF000, 0x4460), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fsdivs", 4, two(0xF000, 0x4460), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsdivw", 4, two(0xF000, 0x5060), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fsdivw", 4, two(0xF000, 0x5060), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsdivx", 4, two(0xF000, 0x0060), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fsdivx", 4, two(0xF000, 0x4860), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, + +{"fddivb", 4, two(0xF000, 0x5864), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fddivb", 4, two(0xF000, 0x5864), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fddivd", 4, two(0xF000, 0x0064), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fddivd", 4, two(0xF000, 0x5464), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fddivd", 4, two(0xF000, 0x5464), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fddivl", 4, two(0xF000, 0x4064), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fddivl", 4, two(0xF000, 0x4064), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fddivp", 4, two(0xF000, 0x4C64), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fddivs", 4, two(0xF000, 0x4464), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fddivs", 4, two(0xF000, 0x4464), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fddivw", 4, two(0xF000, 0x5064), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fddivw", 4, two(0xF000, 0x5064), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fddivx", 4, two(0xF000, 0x0064), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fddivx", 4, two(0xF000, 0x4864), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, + +{"fetoxb", 4, two(0xF000, 0x5810), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fetoxd", 4, two(0xF000, 0x5410), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fetoxl", 4, two(0xF000, 0x4010), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fetoxp", 4, two(0xF000, 0x4C10), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fetoxs", 4, two(0xF000, 0x4410), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fetoxw", 4, two(0xF000, 0x5010), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fetoxx", 4, two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fetoxx", 4, two(0xF000, 0x4810), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fetoxx", 4, two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fetoxm1b", 4, two(0xF000, 0x5808), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fetoxm1d", 4, two(0xF000, 0x5408), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fetoxm1l", 4, two(0xF000, 0x4008), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fetoxm1p", 4, two(0xF000, 0x4C08), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fetoxm1s", 4, two(0xF000, 0x4408), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fetoxm1w", 4, two(0xF000, 0x5008), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fetoxm1x", 4, two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fetoxm1x", 4, two(0xF000, 0x4808), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fetoxm1x", 4, two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fgetexpb", 4, two(0xF000, 0x581E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fgetexpd", 4, two(0xF000, 0x541E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fgetexpl", 4, two(0xF000, 0x401E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fgetexpp", 4, two(0xF000, 0x4C1E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fgetexps", 4, two(0xF000, 0x441E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fgetexpw", 4, two(0xF000, 0x501E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fgetexpx", 4, two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fgetexpx", 4, two(0xF000, 0x481E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fgetexpx", 4, two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fgetmanb", 4, two(0xF000, 0x581F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fgetmand", 4, two(0xF000, 0x541F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fgetmanl", 4, two(0xF000, 0x401F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fgetmanp", 4, two(0xF000, 0x4C1F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fgetmans", 4, two(0xF000, 0x441F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fgetmanw", 4, two(0xF000, 0x501F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fgetmanx", 4, two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fgetmanx", 4, two(0xF000, 0x481F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fgetmanx", 4, two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fintb", 4, two(0xF000, 0x5801), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fintb", 4, two(0xF000, 0x5801), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintd", 4, two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fintd", 4, two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fintd", 4, two(0xF000, 0x5401), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fintd", 4, two(0xF000, 0x5401), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fintl", 4, two(0xF000, 0x4001), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fintl", 4, two(0xF000, 0x4001), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintp", 4, two(0xF000, 0x4C01), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fints", 4, two(0xF000, 0x4401), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fints", 4, two(0xF000, 0x4401), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintw", 4, two(0xF000, 0x5001), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fintw", 4, two(0xF000, 0x5001), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintx", 4, two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fintx", 4, two(0xF000, 0x4801), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fintx", 4, two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fintrzb", 4, two(0xF000, 0x5803), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fintrzb", 4, two(0xF000, 0x5803), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintrzd", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fintrzd", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fintrzd", 4, two(0xF000, 0x5403), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fintrzd", 4, two(0xF000, 0x5403), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fintrzl", 4, two(0xF000, 0x4003), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fintrzl", 4, two(0xF000, 0x4003), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintrzp", 4, two(0xF000, 0x4C03), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fintrzs", 4, two(0xF000, 0x4403), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fintrzs", 4, two(0xF000, 0x4403), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintrzw", 4, two(0xF000, 0x5003), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fintrzw", 4, two(0xF000, 0x5003), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fintrzx", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fintrzx", 4, two(0xF000, 0x4803), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fintrzx", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"flog10b", 4, two(0xF000, 0x5815), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"flog10d", 4, two(0xF000, 0x5415), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"flog10l", 4, two(0xF000, 0x4015), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"flog10p", 4, two(0xF000, 0x4C15), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"flog10s", 4, two(0xF000, 0x4415), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"flog10w", 4, two(0xF000, 0x5015), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"flog10x", 4, two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"flog10x", 4, two(0xF000, 0x4815), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"flog10x", 4, two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"flog2b", 4, two(0xF000, 0x5816), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"flog2d", 4, two(0xF000, 0x5416), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"flog2l", 4, two(0xF000, 0x4016), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"flog2p", 4, two(0xF000, 0x4C16), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"flog2s", 4, two(0xF000, 0x4416), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"flog2w", 4, two(0xF000, 0x5016), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"flog2x", 4, two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"flog2x", 4, two(0xF000, 0x4816), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"flog2x", 4, two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"flognb", 4, two(0xF000, 0x5814), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"flognd", 4, two(0xF000, 0x5414), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"flognl", 4, two(0xF000, 0x4014), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"flognp", 4, two(0xF000, 0x4C14), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"flogns", 4, two(0xF000, 0x4414), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"flognw", 4, two(0xF000, 0x5014), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"flognx", 4, two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"flognx", 4, two(0xF000, 0x4814), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"flognx", 4, two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"flognp1b", 4, two(0xF000, 0x5806), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"flognp1d", 4, two(0xF000, 0x5406), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"flognp1l", 4, two(0xF000, 0x4006), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"flognp1p", 4, two(0xF000, 0x4C06), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"flognp1s", 4, two(0xF000, 0x4406), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"flognp1w", 4, two(0xF000, 0x5006), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"flognp1x", 4, two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"flognp1x", 4, two(0xF000, 0x4806), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"flognp1x", 4, two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fmodb", 4, two(0xF000, 0x5821), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fmodd", 4, two(0xF000, 0x5421), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fmodl", 4, two(0xF000, 0x4021), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fmodp", 4, two(0xF000, 0x4C21), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fmods", 4, two(0xF000, 0x4421), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fmodw", 4, two(0xF000, 0x5021), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fmodx", 4, two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fmodx", 4, two(0xF000, 0x4821), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, + +{"fmoveb", 4, two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmoveb", 4, two(0xF000, 0x7800), two(0xF1C0, 0xFC7F), "IiF7bs", cfloat }, +{"fmoveb", 4, two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fmoveb", 4, two(0xF000, 0x7800), two(0xF1C0, 0xFC7F), "IiF7$b", mfloat }, +{"fmoved", 4, two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fmoved", 4, two(0xF000, 0x7400), two(0xF1C0, 0xFC7F), "IiF7~F", mfloat }, +{"fmoved", 4, two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fmoved", 4, two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fmoved", 4, two(0xF000, 0x7400), two(0xF1C0, 0xFC7F), "IiF7ws", cfloat }, +{"fmovel", 4, two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fmovel", 4, two(0xF000, 0x6000), two(0xF1C0, 0xFC7F), "IiF7$l", mfloat }, +/* FIXME: the next two variants should not permit moving an address + register to anything but the floating point instruction register. */ +{"fmovel", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8%s", mfloat }, +{"fmovel", 4, two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ls8", mfloat }, +{"fmovel", 4, two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmovel", 4, two(0xF000, 0x6000), two(0xF1C0, 0xFC7F), "IiF7bs", cfloat }, + /* Move the FP control registers. */ +{"fmovel", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8ps", cfloat }, +{"fmovel", 4, two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Iibss8", cfloat }, +{"fmovep", 4, two(0xF000, 0x4C00), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fmovep", 4, two(0xF000, 0x6C00), two(0xF1C0, 0xFC00), "IiF7~pkC", mfloat }, +{"fmovep", 4, two(0xF000, 0x7C00), two(0xF1C0, 0xFC0F), "IiF7~pDk", mfloat }, +{"fmoves", 4, two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fmoves", 4, two(0xF000, 0x6400), two(0xF1C0, 0xFC7F), "IiF7$f", mfloat }, +{"fmoves", 4, two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmoves", 4, two(0xF000, 0x6400), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fmovew", 4, two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fmovew", 4, two(0xF000, 0x7000), two(0xF1C0, 0xFC7F), "IiF7$w", mfloat }, +{"fmovew", 4, two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmovew", 4, two(0xF000, 0x7000), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fmovex", 4, two(0xF000, 0x0000), two(0xF1FF, 0xE07F), "IiF8F7", mfloat }, +{"fmovex", 4, two(0xF000, 0x4800), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fmovex", 4, two(0xF000, 0x6800), two(0xF1C0, 0xFC7F), "IiF7~x", mfloat }, + +{"fsmoveb", 4, two(0xF000, 0x5840), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fsmoveb", 4, two(0xF000, 0x5840), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmoveb", 4, two(0xF000, 0x7840), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fsmoved", 4, two(0xF000, 0x0040), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsmoved", 4, two(0xF000, 0x5440), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fsmoved", 4, two(0xF000, 0x5440), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsmoved", 4, two(0xF000, 0x7440), two(0xF1C0, 0xFC7F), "IiF7ws", cfloat }, +{"fsmovel", 4, two(0xF000, 0x4040), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fsmovel", 4, two(0xF000, 0x4040), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmovel", 4, two(0xF000, 0x6040), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fsmoves", 4, two(0xF000, 0x4440), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fsmoves", 4, two(0xF000, 0x4440), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmoves", 4, two(0xF000, 0x6440), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fsmovew", 4, two(0xF000, 0x5040), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fsmovew", 4, two(0xF000, 0x5040), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmovew", 4, two(0xF000, 0x7040), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fsmovex", 4, two(0xF000, 0x0040), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fsmovex", 4, two(0xF000, 0x4840), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fsmovep", 4, two(0xF000, 0x4C40), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, + +{"fdmoveb", 4, two(0xF000, 0x5844), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fdmoveb", 4, two(0xF000, 0x5844), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmoveb", 4, two(0xF000, 0x7844), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fdmoved", 4, two(0xF000, 0x0044), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdmoved", 4, two(0xF000, 0x5444), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fdmoved", 4, two(0xF000, 0x5444), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fdmoved", 4, two(0xF000, 0x7444), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fdmovel", 4, two(0xF000, 0x4044), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fdmovel", 4, two(0xF000, 0x4044), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmovel", 4, two(0xF000, 0x6044), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fdmoves", 4, two(0xF000, 0x4444), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fdmoves", 4, two(0xF000, 0x4444), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmoves", 4, two(0xF000, 0x6444), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fdmovew", 4, two(0xF000, 0x5044), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fdmovew", 4, two(0xF000, 0x5044), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmovew", 4, two(0xF000, 0x7044), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat }, +{"fdmovex", 4, two(0xF000, 0x0044), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fdmovex", 4, two(0xF000, 0x4844), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fdmovep", 4, two(0xF000, 0x4C44), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, + +{"fmovecrx", 4, two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7", mfloat }, + +{"fmovemd", 4, two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizsl3", cfloat }, +{"fmovemd", 4, two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizs#3", cfloat }, +{"fmovemd", 4, two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Ii#3ys", cfloat }, +{"fmovemd", 4, two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Iil3ys", cfloat }, + +{"fmovemx", 4, two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat }, +{"fmovemx", 4, two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat }, +{"fmovemx", 4, two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat }, +{"fmovemx", 4, two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat }, +{"fmovemx", 4, two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat }, +{"fmovemx", 4, two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat }, +{"fmovemx", 4, two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat }, +{"fmovemx", 4, two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat }, +{"fmovemx", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat }, +{"fmovemx", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat }, +{"fmovemx", 4, two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat }, +{"fmovemx", 4, two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat }, + +{"fmoveml", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8%s", mfloat }, +{"fmoveml", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8~s", mfloat }, +/* FIXME: In the next instruction, we should only permit %dn if the + target is a single register. We should only permit %an if the + target is a single %fpiar. */ +{"fmoveml", 4, two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*lL8", mfloat }, + +{"fmovem", 4, two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "IizsL3", cfloat }, +{"fmovem", 4, two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizs#3", cfloat }, +{"fmovem", 4, two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Ii#3ys", cfloat }, +{"fmovem", 4, two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "IiL3ys", cfloat }, + +{"fmovem", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat }, +{"fmovem", 4, two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat }, +{"fmovem", 4, two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat }, +{"fmovem", 4, two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat }, +{"fmovem", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat }, +{"fmovem", 4, two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat }, +{"fmovem", 4, two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat }, +{"fmovem", 4, two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat }, +{"fmovem", 4, two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat }, +{"fmovem", 4, two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat }, +{"fmovem", 4, two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat }, +{"fmovem", 4, two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat }, +{"fmovem", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8%s", mfloat }, +{"fmovem", 4, two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8", mfloat }, +{"fmovem", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8~s", mfloat }, +{"fmovem", 4, two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8", mfloat }, + +{"fmulb", 4, two(0xF000, 0x5823), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fmulb", 4, two(0xF000, 0x5823), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmuld", 4, two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fmuld", 4, two(0xF000, 0x5423), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fmuld", 4, two(0xF000, 0x5423), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fmull", 4, two(0xF000, 0x4023), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fmull", 4, two(0xF000, 0x4023), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmulp", 4, two(0xF000, 0x4C23), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fmuls", 4, two(0xF000, 0x4423), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fmuls", 4, two(0xF000, 0x4423), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmulw", 4, two(0xF000, 0x5023), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fmulw", 4, two(0xF000, 0x5023), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fmulx", 4, two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fmulx", 4, two(0xF000, 0x4823), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, + +{"fsmulb", 4, two(0xF000, 0x5863), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fsmulb", 4, two(0xF000, 0x5863), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmuld", 4, two(0xF000, 0x0063), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsmuld", 4, two(0xF000, 0x5463), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fsmuld", 4, two(0xF000, 0x5463), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsmull", 4, two(0xF000, 0x4063), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fsmull", 4, two(0xF000, 0x4063), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmulp", 4, two(0xF000, 0x4C63), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fsmuls", 4, two(0xF000, 0x4463), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fsmuls", 4, two(0xF000, 0x4463), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmulw", 4, two(0xF000, 0x5063), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fsmulw", 4, two(0xF000, 0x5063), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsmulx", 4, two(0xF000, 0x0063), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fsmulx", 4, two(0xF000, 0x4863), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, + +{"fdmulb", 4, two(0xF000, 0x5867), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fdmulb", 4, two(0xF000, 0x5867), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmuld", 4, two(0xF000, 0x0067), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdmuld", 4, two(0xF000, 0x5467), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fdmuld", 4, two(0xF000, 0x5467), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fdmull", 4, two(0xF000, 0x4067), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fdmull", 4, two(0xF000, 0x4067), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmulp", 4, two(0xF000, 0x4C67), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fdmuls", 4, two(0xF000, 0x4467), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fdmuls", 4, two(0xF000, 0x4467), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmulw", 4, two(0xF000, 0x5067), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fdmulw", 4, two(0xF000, 0x5067), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdmulx", 4, two(0xF000, 0x0067), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fdmulx", 4, two(0xF000, 0x4867), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, + +{"fnegb", 4, two(0xF000, 0x581A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fnegb", 4, two(0xF000, 0x581A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fnegd", 4, two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fnegd", 4, two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fnegd", 4, two(0xF000, 0x541A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fnegd", 4, two(0xF000, 0x541A), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fnegl", 4, two(0xF000, 0x401A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fnegl", 4, two(0xF000, 0x401A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fnegp", 4, two(0xF000, 0x4C1A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fnegs", 4, two(0xF000, 0x441A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fnegs", 4, two(0xF000, 0x441A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fnegw", 4, two(0xF000, 0x501A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fnegw", 4, two(0xF000, 0x501A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fnegx", 4, two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fnegx", 4, two(0xF000, 0x481A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fnegx", 4, two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fsnegb", 4, two(0xF000, 0x585A), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fsnegb", 4, two(0xF000, 0x585A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsnegd", 4, two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsnegd", 4, two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fsnegd", 4, two(0xF000, 0x545A), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fsnegd", 4, two(0xF000, 0x545A), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsnegl", 4, two(0xF000, 0x405A), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fsnegl", 4, two(0xF000, 0x405A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsnegp", 4, two(0xF000, 0x4C5A), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fsnegs", 4, two(0xF000, 0x445A), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fsnegs", 4, two(0xF000, 0x445A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsnegw", 4, two(0xF000, 0x505A), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fsnegw", 4, two(0xF000, 0x505A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsnegx", 4, two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fsnegx", 4, two(0xF000, 0x485A), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fsnegx", 4, two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiFt", m68040up }, + +{"fdnegb", 4, two(0xF000, 0x585E), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fdnegb", 4, two(0xF000, 0x585E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdnegd", 4, two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdnegd", 4, two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fdnegd", 4, two(0xF000, 0x545E), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fdnegd", 4, two(0xF000, 0x545E), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fdnegl", 4, two(0xF000, 0x405E), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fdnegl", 4, two(0xF000, 0x405E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdnegp", 4, two(0xF000, 0x4C5E), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fdnegs", 4, two(0xF000, 0x445E), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fdnegs", 4, two(0xF000, 0x445E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdnegw", 4, two(0xF000, 0x505E), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fdnegw", 4, two(0xF000, 0x505E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdnegx", 4, two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fdnegx", 4, two(0xF000, 0x485E), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fdnegx", 4, two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt", m68040up }, + +{"fnop", 4, two(0xF280, 0x0000), two(0xFFFF, 0xFFFF), "Ii", mfloat | cfloat }, + +{"fremb", 4, two(0xF000, 0x5825), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fremd", 4, two(0xF000, 0x5425), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"freml", 4, two(0xF000, 0x4025), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fremp", 4, two(0xF000, 0x4C25), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"frems", 4, two(0xF000, 0x4425), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fremw", 4, two(0xF000, 0x5025), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fremx", 4, two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fremx", 4, two(0xF000, 0x4825), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, + +{"frestore", 2, one(0xF140), one(0xF1C0), "Ids", mfloat }, +{"fsave", 2, one(0xF100), one(0xF1C0), "Idzs", cfloat }, + +{"fscaleb", 4, two(0xF000, 0x5826), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fscaled", 4, two(0xF000, 0x5426), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fscalel", 4, two(0xF000, 0x4026), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fscalep", 4, two(0xF000, 0x4C26), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fscales", 4, two(0xF000, 0x4426), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fscalew", 4, two(0xF000, 0x5026), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fscalex", 4, two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fscalex", 4, two(0xF000, 0x4826), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, + +/* $ is necessary to prevent the assembler from using PC-relative. + If @ were used, "label: fseq label" could produce "ftrapeq", 2, + because "label" became "pc@label". */ +{"fseq", 4, two(0xF040, 0x0001), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsf", 4, two(0xF040, 0x0000), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsge", 4, two(0xF040, 0x0013), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsgl", 4, two(0xF040, 0x0016), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsgle", 4, two(0xF040, 0x0017), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsgt", 4, two(0xF040, 0x0012), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsle", 4, two(0xF040, 0x0015), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fslt", 4, two(0xF040, 0x0014), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsne", 4, two(0xF040, 0x000E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsnge", 4, two(0xF040, 0x001C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsngl", 4, two(0xF040, 0x0019), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsngle", 4, two(0xF040, 0x0018), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsngt", 4, two(0xF040, 0x001D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsnle", 4, two(0xF040, 0x001A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsnlt", 4, two(0xF040, 0x001B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsoge", 4, two(0xF040, 0x0003), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsogl", 4, two(0xF040, 0x0006), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsogt", 4, two(0xF040, 0x0002), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsole", 4, two(0xF040, 0x0005), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsolt", 4, two(0xF040, 0x0004), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsor", 4, two(0xF040, 0x0007), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsseq", 4, two(0xF040, 0x0011), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fssf", 4, two(0xF040, 0x0010), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fssne", 4, two(0xF040, 0x001E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsst", 4, two(0xF040, 0x001F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fst", 4, two(0xF040, 0x000F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsueq", 4, two(0xF040, 0x0009), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsuge", 4, two(0xF040, 0x000B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsugt", 4, two(0xF040, 0x000A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsule", 4, two(0xF040, 0x000D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsult", 4, two(0xF040, 0x000C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, +{"fsun", 4, two(0xF040, 0x0008), two(0xF1C0, 0xFFFF), "Ii$s", mfloat }, + +{"fsgldivb", 4, two(0xF000, 0x5824), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fsgldivd", 4, two(0xF000, 0x5424), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fsgldivl", 4, two(0xF000, 0x4024), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fsgldivp", 4, two(0xF000, 0x4C24), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fsgldivs", 4, two(0xF000, 0x4424), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fsgldivw", 4, two(0xF000, 0x5024), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fsgldivx", 4, two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fsgldivx", 4, two(0xF000, 0x4824), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fsgldivx", 4, two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fsglmulb", 4, two(0xF000, 0x5827), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fsglmuld", 4, two(0xF000, 0x5427), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fsglmull", 4, two(0xF000, 0x4027), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fsglmulp", 4, two(0xF000, 0x4C27), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fsglmuls", 4, two(0xF000, 0x4427), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fsglmulw", 4, two(0xF000, 0x5027), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fsglmulx", 4, two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fsglmulx", 4, two(0xF000, 0x4827), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fsglmulx", 4, two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fsinb", 4, two(0xF000, 0x580E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fsind", 4, two(0xF000, 0x540E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fsinl", 4, two(0xF000, 0x400E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fsinp", 4, two(0xF000, 0x4C0E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fsins", 4, two(0xF000, 0x440E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fsinw", 4, two(0xF000, 0x500E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fsinx", 4, two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fsinx", 4, two(0xF000, 0x480E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fsinx", 4, two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fsincosb", 4, two(0xF000, 0x5830), two(0xF1C0, 0xFC78), "Ii;bF3F7", mfloat }, +{"fsincosd", 4, two(0xF000, 0x5430), two(0xF1C0, 0xFC78), "Ii;FF3F7", mfloat }, +{"fsincosl", 4, two(0xF000, 0x4030), two(0xF1C0, 0xFC78), "Ii;lF3F7", mfloat }, +{"fsincosp", 4, two(0xF000, 0x4C30), two(0xF1C0, 0xFC78), "Ii;pF3F7", mfloat }, +{"fsincoss", 4, two(0xF000, 0x4430), two(0xF1C0, 0xFC78), "Ii;fF3F7", mfloat }, +{"fsincosw", 4, two(0xF000, 0x5030), two(0xF1C0, 0xFC78), "Ii;wF3F7", mfloat }, +{"fsincosx", 4, two(0xF000, 0x0030), two(0xF1C0, 0xE078), "IiF8F3F7", mfloat }, +{"fsincosx", 4, two(0xF000, 0x4830), two(0xF1C0, 0xFC78), "Ii;xF3F7", mfloat }, + +{"fsinhb", 4, two(0xF000, 0x5802), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fsinhd", 4, two(0xF000, 0x5402), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fsinhl", 4, two(0xF000, 0x4002), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fsinhp", 4, two(0xF000, 0x4C02), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fsinhs", 4, two(0xF000, 0x4402), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fsinhw", 4, two(0xF000, 0x5002), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fsinhx", 4, two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fsinhx", 4, two(0xF000, 0x4802), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fsinhx", 4, two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fsqrtb", 4, two(0xF000, 0x5804), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fsqrtb", 4, two(0xF000, 0x5804), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsqrtd", 4, two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsqrtd", 4, two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fsqrtd", 4, two(0xF000, 0x5404), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fsqrtd", 4, two(0xF000, 0x5404), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsqrtl", 4, two(0xF000, 0x4004), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fsqrtl", 4, two(0xF000, 0x4004), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsqrtp", 4, two(0xF000, 0x4C04), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fsqrts", 4, two(0xF000, 0x4404), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fsqrts", 4, two(0xF000, 0x4404), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsqrtw", 4, two(0xF000, 0x5004), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fsqrtw", 4, two(0xF000, 0x5004), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsqrtx", 4, two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fsqrtx", 4, two(0xF000, 0x4804), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fsqrtx", 4, two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fssqrtb", 4, two(0xF000, 0x5841), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fssqrtb", 4, two(0xF000, 0x5841), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssqrtd", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fssqrtd", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fssqrtd", 4, two(0xF000, 0x5441), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fssqrtd", 4, two(0xF000, 0x5441), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fssqrtl", 4, two(0xF000, 0x4041), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fssqrtl", 4, two(0xF000, 0x4041), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssqrtp", 4, two(0xF000, 0x4C41), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fssqrts", 4, two(0xF000, 0x4441), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fssqrts", 4, two(0xF000, 0x4441), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssqrtw", 4, two(0xF000, 0x5041), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fssqrtw", 4, two(0xF000, 0x5041), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssqrtx", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fssqrtx", 4, two(0xF000, 0x4841), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fssqrtx", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiFt", m68040up }, + +{"fdsqrtb", 4, two(0xF000, 0x5845), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fdsqrtb", 4, two(0xF000, 0x5845), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsqrtd", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdsqrtd", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiFt", cfloat }, +{"fdsqrtd", 4, two(0xF000, 0x5445), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fdsqrtl", 4, two(0xF000, 0x4045), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fdsqrtl", 4, two(0xF000, 0x4045), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsqrtp", 4, two(0xF000, 0x4C45), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fdsqrts", 4, two(0xF000, 0x4445), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fdsqrts", 4, two(0xF000, 0x4445), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsqrtw", 4, two(0xF000, 0x5045), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fdsqrtw", 4, two(0xF000, 0x5045), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsqrtx", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fdsqrtx", 4, two(0xF000, 0x4845), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fdsqrtx", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiFt", m68040up }, + +{"fsubb", 4, two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"fsubb", 4, two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsubd", 4, two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fsubd", 4, two(0xF000, 0x5428), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"fsubd", 4, two(0xF000, 0x5428), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fsubl", 4, two(0xF000, 0x4028), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"fsubl", 4, two(0xF000, 0x4028), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsubp", 4, two(0xF000, 0x4C28), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"fsubs", 4, two(0xF000, 0x4428), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"fsubs", 4, two(0xF000, 0x4428), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsubw", 4, two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"fsubw", 4, two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fsubx", 4, two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"fsubx", 4, two(0xF000, 0x4828), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"fsubx", 4, two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"fssubb", 4, two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssubb", 4, two(0xF000, 0x5868), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fssubd", 4, two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fssubd", 4, two(0xF000, 0x5468), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fssubd", 4, two(0xF000, 0x5468), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fssubl", 4, two(0xF000, 0x4068), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fssubl", 4, two(0xF000, 0x4068), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssubp", 4, two(0xF000, 0x4C68), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fssubs", 4, two(0xF000, 0x4468), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fssubs", 4, two(0xF000, 0x4468), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssubw", 4, two(0xF000, 0x5068), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fssubw", 4, two(0xF000, 0x5068), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fssubx", 4, two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fssubx", 4, two(0xF000, 0x4868), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fssubx", 4, two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiFt", m68040up }, + +{"fdsubb", 4, two(0xF000, 0x586A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsubb", 4, two(0xF000, 0x586c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up }, +{"fdsubd", 4, two(0xF000, 0x006A), two(0xF1C0, 0xE07F), "IiF8F7", cfloat }, +{"fdsubd", 4, two(0xF000, 0x546A), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat }, +{"fdsubd", 4, two(0xF000, 0x546c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up }, +{"fdsubl", 4, two(0xF000, 0x406A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsubl", 4, two(0xF000, 0x406c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up }, +{"fdsubp", 4, two(0xF000, 0x4C6c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up }, +{"fdsubs", 4, two(0xF000, 0x446A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsubs", 4, two(0xF000, 0x446c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up }, +{"fdsubw", 4, two(0xF000, 0x506A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat }, +{"fdsubw", 4, two(0xF000, 0x506c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up }, +{"fdsubx", 4, two(0xF000, 0x006c), two(0xF1C0, 0xE07F), "IiF8F7", m68040up }, +{"fdsubx", 4, two(0xF000, 0x486c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up }, +{"fdsubx", 4, two(0xF000, 0x006c), two(0xF1C0, 0xE07F), "IiFt", m68040up }, + +{"ftanb", 4, two(0xF000, 0x580F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"ftand", 4, two(0xF000, 0x540F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"ftanl", 4, two(0xF000, 0x400F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"ftanp", 4, two(0xF000, 0x4C0F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"ftans", 4, two(0xF000, 0x440F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"ftanw", 4, two(0xF000, 0x500F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"ftanx", 4, two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"ftanx", 4, two(0xF000, 0x480F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"ftanx", 4, two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"ftanhb", 4, two(0xF000, 0x5809), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"ftanhd", 4, two(0xF000, 0x5409), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"ftanhl", 4, two(0xF000, 0x4009), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"ftanhp", 4, two(0xF000, 0x4C09), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"ftanhs", 4, two(0xF000, 0x4409), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"ftanhw", 4, two(0xF000, 0x5009), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"ftanhx", 4, two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"ftanhx", 4, two(0xF000, 0x4809), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"ftanhx", 4, two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"ftentoxb", 4, two(0xF000, 0x5812), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"ftentoxd", 4, two(0xF000, 0x5412), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"ftentoxl", 4, two(0xF000, 0x4012), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"ftentoxp", 4, two(0xF000, 0x4C12), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"ftentoxs", 4, two(0xF000, 0x4412), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"ftentoxw", 4, two(0xF000, 0x5012), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"ftentoxx", 4, two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"ftentoxx", 4, two(0xF000, 0x4812), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"ftentoxx", 4, two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"ftrapeq", 4, two(0xF07C, 0x0001), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapf", 4, two(0xF07C, 0x0000), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapge", 4, two(0xF07C, 0x0013), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapgl", 4, two(0xF07C, 0x0016), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapgle", 4, two(0xF07C, 0x0017), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapgt", 4, two(0xF07C, 0x0012), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftraple", 4, two(0xF07C, 0x0015), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftraplt", 4, two(0xF07C, 0x0014), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapne", 4, two(0xF07C, 0x000E), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapnge", 4, two(0xF07C, 0x001C), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapngl", 4, two(0xF07C, 0x0019), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapngle", 4,two(0xF07C, 0x0018), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapngt", 4, two(0xF07C, 0x001D), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapnle", 4, two(0xF07C, 0x001A), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapnlt", 4, two(0xF07C, 0x001B), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapoge", 4, two(0xF07C, 0x0003), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapogl", 4, two(0xF07C, 0x0006), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapogt", 4, two(0xF07C, 0x0002), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapole", 4, two(0xF07C, 0x0005), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapolt", 4, two(0xF07C, 0x0004), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapor", 4, two(0xF07C, 0x0007), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapseq", 4, two(0xF07C, 0x0011), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapsf", 4, two(0xF07C, 0x0010), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapsne", 4, two(0xF07C, 0x001E), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapst", 4, two(0xF07C, 0x001F), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapt", 4, two(0xF07C, 0x000F), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapueq", 4, two(0xF07C, 0x0009), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapuge", 4, two(0xF07C, 0x000B), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapugt", 4, two(0xF07C, 0x000A), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapule", 4, two(0xF07C, 0x000D), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapult", 4, two(0xF07C, 0x000C), two(0xF1FF, 0xFFFF), "Ii", mfloat }, +{"ftrapun", 4, two(0xF07C, 0x0008), two(0xF1FF, 0xFFFF), "Ii", mfloat }, + +{"ftrapeqw", 4, two(0xF07A, 0x0001), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapfw", 4, two(0xF07A, 0x0000), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapgew", 4, two(0xF07A, 0x0013), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapglw", 4, two(0xF07A, 0x0016), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapglew", 4,two(0xF07A, 0x0017), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapgtw", 4, two(0xF07A, 0x0012), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftraplew", 4, two(0xF07A, 0x0015), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapltw", 4, two(0xF07A, 0x0014), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapnew", 4, two(0xF07A, 0x000E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapngew", 4,two(0xF07A, 0x001C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapnglw", 4,two(0xF07A, 0x0019), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapnglew", 4,two(0xF07A, 0x0018), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapngtw", 4,two(0xF07A, 0x001D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapnlew", 4,two(0xF07A, 0x001A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapnltw", 4,two(0xF07A, 0x001B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapogew", 4,two(0xF07A, 0x0003), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapoglw", 4,two(0xF07A, 0x0006), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapogtw", 4,two(0xF07A, 0x0002), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapolew", 4,two(0xF07A, 0x0005), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapoltw", 4,two(0xF07A, 0x0004), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftraporw", 4, two(0xF07A, 0x0007), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapseqw", 4,two(0xF07A, 0x0011), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapsfw", 4, two(0xF07A, 0x0010), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapsnew", 4,two(0xF07A, 0x001E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapstw", 4, two(0xF07A, 0x001F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftraptw", 4, two(0xF07A, 0x000F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapueqw", 4,two(0xF07A, 0x0009), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapugew", 4,two(0xF07A, 0x000B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapugtw", 4,two(0xF07A, 0x000A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapulew", 4,two(0xF07A, 0x000D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapultw", 4,two(0xF07A, 0x000C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, +{"ftrapunw", 4, two(0xF07A, 0x0008), two(0xF1FF, 0xFFFF), "Ii^w", mfloat }, + +{"ftrapeql", 4, two(0xF07B, 0x0001), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapfl", 4, two(0xF07B, 0x0000), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapgel", 4, two(0xF07B, 0x0013), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapgll", 4, two(0xF07B, 0x0016), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapglel", 4,two(0xF07B, 0x0017), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapgtl", 4, two(0xF07B, 0x0012), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftraplel", 4, two(0xF07B, 0x0015), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapltl", 4, two(0xF07B, 0x0014), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapnel", 4, two(0xF07B, 0x000E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapngel", 4,two(0xF07B, 0x001C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapngll", 4,two(0xF07B, 0x0019), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapnglel", 4,two(0xF07B, 0x0018), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapngtl", 4,two(0xF07B, 0x001D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapnlel", 4,two(0xF07B, 0x001A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapnltl", 4,two(0xF07B, 0x001B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapogel", 4,two(0xF07B, 0x0003), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapogll", 4,two(0xF07B, 0x0006), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapogtl", 4,two(0xF07B, 0x0002), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapolel", 4,two(0xF07B, 0x0005), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapoltl", 4,two(0xF07B, 0x0004), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftraporl", 4, two(0xF07B, 0x0007), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapseql", 4,two(0xF07B, 0x0011), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapsfl", 4, two(0xF07B, 0x0010), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapsnel", 4,two(0xF07B, 0x001E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapstl", 4, two(0xF07B, 0x001F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftraptl", 4, two(0xF07B, 0x000F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapueql", 4,two(0xF07B, 0x0009), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapugel", 4,two(0xF07B, 0x000B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapugtl", 4,two(0xF07B, 0x000A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapulel", 4,two(0xF07B, 0x000D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapultl", 4,two(0xF07B, 0x000C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, +{"ftrapunl", 4, two(0xF07B, 0x0008), two(0xF1FF, 0xFFFF), "Ii^l", mfloat }, + +{"ftstb", 4, two(0xF000, 0x583A), two(0xF1C0, 0xFC7F), "Ii;b", mfloat }, +{"ftstb", 4, two(0xF000, 0x583A), two(0xF1C0, 0xFC7F), "Iibs", cfloat }, +{"ftstd", 4, two(0xF000, 0x003A), two(0xF1C0, 0xE07F), "IiF8", cfloat }, +{"ftstd", 4, two(0xF000, 0x543A), two(0xF1C0, 0xFC7F), "Ii;F", mfloat }, +{"ftstd", 4, two(0xF000, 0x543A), two(0xF1C0, 0xFC7F), "Iibs", cfloat }, +{"ftstl", 4, two(0xF000, 0x403A), two(0xF1C0, 0xFC7F), "Ii;l", mfloat }, +{"ftstl", 4, two(0xF000, 0x403A), two(0xF1C0, 0xFC7F), "Iibs", cfloat }, +{"ftstp", 4, two(0xF000, 0x4C3A), two(0xF1C0, 0xFC7F), "Ii;p", mfloat }, +{"ftsts", 4, two(0xF000, 0x443A), two(0xF1C0, 0xFC7F), "Ii;f", mfloat }, +{"ftsts", 4, two(0xF000, 0x443A), two(0xF1C0, 0xFC7F), "Iibs", cfloat }, +{"ftstw", 4, two(0xF000, 0x503A), two(0xF1C0, 0xFC7F), "Ii;w", mfloat }, +{"ftstw", 4, two(0xF000, 0x503A), two(0xF1C0, 0xFC7F), "Iibs", cfloat }, +{"ftstx", 4, two(0xF000, 0x003A), two(0xF1C0, 0xE07F), "IiF8", mfloat }, +{"ftstx", 4, two(0xF000, 0x483A), two(0xF1C0, 0xFC7F), "Ii;x", mfloat }, + +{"ftwotoxb", 4, two(0xF000, 0x5811), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, +{"ftwotoxd", 4, two(0xF000, 0x5411), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, +{"ftwotoxl", 4, two(0xF000, 0x4011), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, +{"ftwotoxp", 4, two(0xF000, 0x4C11), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, +{"ftwotoxs", 4, two(0xF000, 0x4411), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, +{"ftwotoxw", 4, two(0xF000, 0x5011), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, +{"ftwotoxx", 4, two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, +{"ftwotoxx", 4, two(0xF000, 0x4811), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, +{"ftwotoxx", 4, two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiFt", mfloat }, + +{"halt", 2, one(0045310), one(0177777), "", m68060 | mcfisa_a }, + +{"illegal", 2, one(0045374), one(0177777), "", m68000up | mcfisa_a }, +{"intouch", 2, one(0xf428), one(0xfff8), "As", mcfisa_b }, + +{"jmp", 2, one(0047300), one(0177700), "!s", m68000up | mcfisa_a }, + +{"jra", 2, one(0060000), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jra", 2, one(0047300), one(0177700), "!s", m68000up | mcfisa_a }, + +{"jsr", 2, one(0047200), one(0177700), "!s", m68000up | mcfisa_a }, + +{"jbsr", 2, one(0060400), one(0177400), "Bg", m68000up | mcfisa_a }, +{"jbsr", 2, one(0047200), one(0177700), "!s", m68000up | mcfisa_a }, + +{"lea", 2, one(0040700), one(0170700), "!sAd", m68000up | mcfisa_a }, + +{"lpstop", 6, two(0174000,0000700),two(0177777,0177777),"#w", cpu32|m68060 }, + +{"linkw", 4, one(0047120), one(0177770), "As#w", m68000up | mcfisa_a }, +{"linkl", 6, one(0044010), one(0177770), "As#l", m68020up | cpu32 }, +{"link", 4, one(0047120), one(0177770), "As#W", m68000up | mcfisa_a }, +{"link", 6, one(0044010), one(0177770), "As#l", m68020up | cpu32 }, + +{"lslb", 2, one(0160410), one(0170770), "QdDs", m68000up }, +{"lslb", 2, one(0160450), one(0170770), "DdDs", m68000up }, +{"lslw", 2, one(0160510), one(0170770), "QdDs", m68000up }, +{"lslw", 2, one(0160550), one(0170770), "DdDs", m68000up }, +{"lslw", 2, one(0161700), one(0177700), "~s", m68000up }, +{"lsll", 2, one(0160610), one(0170770), "QdDs", m68000up | mcfisa_a }, +{"lsll", 2, one(0160650), one(0170770), "DdDs", m68000up | mcfisa_a }, + +{"lsrb", 2, one(0160010), one(0170770), "QdDs", m68000up }, +{"lsrb", 2, one(0160050), one(0170770), "DdDs", m68000up }, +{"lsrw", 2, one(0160110), one(0170770), "QdDs", m68000up }, +{"lsrw", 2, one(0160150), one(0170770), "DdDs", m68000up }, +{"lsrw", 2, one(0161300), one(0177700), "~s", m68000up }, +{"lsrl", 2, one(0160210), one(0170770), "QdDs", m68000up | mcfisa_a }, +{"lsrl", 2, one(0160250), one(0170770), "DdDs", m68000up | mcfisa_a }, + +{"macw", 4, two(0xa080, 0x0000), two(0xf180, 0x0910), "uNuoiI4/Rn", mcfmac }, +{"macw", 4, two(0xa080, 0x0200), two(0xf180, 0x0910), "uNuoMh4/Rn", mcfmac }, +{"macw", 4, two(0xa080, 0x0000), two(0xf180, 0x0f10), "uNuo4/Rn", mcfmac }, +{"macw", 4, two(0xa000, 0x0000), two(0xf1b0, 0x0900), "uMumiI", mcfmac }, +{"macw", 4, two(0xa000, 0x0200), two(0xf1b0, 0x0900), "uMumMh", mcfmac }, +{"macw", 4, two(0xa000, 0x0000), two(0xf1b0, 0x0f00), "uMum", mcfmac }, + +{"macw", 4, two(0xa000, 0x0000), two(0xf100, 0x0900), "uNuoiI4/RneG", mcfemac },/* Ry,Rx,SF,,accX. */ +{"macw", 4, two(0xa000, 0x0200), two(0xf100, 0x0900), "uNuoMh4/RneG", mcfemac },/* Ry,Rx,+1/-1,,accX. */ +{"macw", 4, two(0xa000, 0x0000), two(0xf100, 0x0f00), "uNuo4/RneG", mcfemac },/* Ry,Rx,,accX. */ +{"macw", 4, two(0xa000, 0x0000), two(0xf130, 0x0900), "uMumiIeH", mcfemac },/* Ry,Rx,SF,accX. */ +{"macw", 4, two(0xa000, 0x0200), two(0xf130, 0x0900), "uMumMheH", mcfemac },/* Ry,Rx,+1/-1,accX. */ +{"macw", 4, two(0xa000, 0x0000), two(0xf130, 0x0f00), "uMumeH", mcfemac }, /* Ry,Rx,accX. */ + +{"macl", 4, two(0xa080, 0x0800), two(0xf180, 0x0910), "RNRoiI4/Rn", mcfmac }, +{"macl", 4, two(0xa080, 0x0a00), two(0xf180, 0x0910), "RNRoMh4/Rn", mcfmac }, +{"macl", 4, two(0xa080, 0x0800), two(0xf180, 0x0f10), "RNRo4/Rn", mcfmac }, +{"macl", 4, two(0xa000, 0x0800), two(0xf1b0, 0x0b00), "RMRmiI", mcfmac }, +{"macl", 4, two(0xa000, 0x0a00), two(0xf1b0, 0x0b00), "RMRmMh", mcfmac }, +{"macl", 4, two(0xa000, 0x0800), two(0xf1b0, 0x0800), "RMRm", mcfmac }, + +{"macl", 4, two(0xa000, 0x0800), two(0xf100, 0x0900), "R3R1iI4/RneG", mcfemac }, +{"macl", 4, two(0xa000, 0x0a00), two(0xf100, 0x0900), "R3R1Mh4/RneG", mcfemac }, +{"macl", 4, two(0xa000, 0x0800), two(0xf100, 0x0f00), "R3R14/RneG", mcfemac }, +{"macl", 4, two(0xa000, 0x0800), two(0xf130, 0x0900), "RMRmiIeH", mcfemac }, +{"macl", 4, two(0xa000, 0x0a00), two(0xf130, 0x0900), "RMRmMheH", mcfemac }, +{"macl", 4, two(0xa000, 0x0800), two(0xf130, 0x0f00), "RMRmeH", mcfemac }, + +/* NOTE: The mcf5200 family programmer's reference manual does not + indicate the byte form of the movea instruction is invalid (as it + is on 68000 family cpus). However, experiments on the 5202 yeild + unexpected results. The value is copied, but it is not sign extended + (as is done with movea.w) and the top three bytes in the address + register are not disturbed. I don't know if this is the intended + behavior --- it could be a hole in instruction decoding (Motorola + decided not to trap all invalid instructions for performance reasons) + --- but I suspect that it is not. + + I reported this to Motorola ISD Technical Communications Support, + which replied that other coldfire assemblers reject movea.b. For + this reason I've decided to not allow moveab. + + jtc@cygnus.com - 97/01/24. */ + +{"moveal", 2, one(0020100), one(0170700), "*lAd", m68000up | mcfisa_a }, +{"moveaw", 2, one(0030100), one(0170700), "*wAd", m68000up | mcfisa_a }, + +{"movclrl", 2, one(0xA1C0), one(0xf9f0), "eFRs", mcfemac }, + +{"movec", 4, one(0047173), one(0177777), "R1Jj", m68010up | mcfisa_a }, +{"movec", 4, one(0047173), one(0177777), "R1#j", m68010up | mcfisa_a }, +{"movec", 4, one(0047172), one(0177777), "JjR1", m68010up }, +{"movec", 4, one(0047172), one(0177777), "#jR1", m68010up }, + +{"movemw", 4, one(0044200), one(0177700), "Lw&s", m68000up }, +{"movemw", 4, one(0044240), one(0177770), "lw-s", m68000up }, +{"movemw", 4, one(0044200), one(0177700), "#w>s", m68000up }, +{"movemw", 4, one(0046200), one(0177700), "s", m68000up }, +{"moveml", 4, one(0046300), one(0177700), ",accX. */ +{"msacw", 4, two(0xa000, 0x0300), two(0xf100, 0x0900), "uMumMh4/RneG", mcfemac },/* Ry,Rx,+1/-1,,accX. */ +{"msacw", 4, two(0xa000, 0x0100), two(0xf100, 0x0f00), "uMum4/RneG", mcfemac },/* Ry,Rx,,accX. */ +{"msacw", 4, two(0xa000, 0x0100), two(0xf130, 0x0900), "uMumiIeH", mcfemac },/* Ry,Rx,SF,accX. */ +{"msacw", 4, two(0xa000, 0x0300), two(0xf130, 0x0900), "uMumMheH", mcfemac },/* Ry,Rx,+1/-1,accX. */ +{"msacw", 4, two(0xa000, 0x0100), two(0xf130, 0x0f00), "uMumeH", mcfemac }, /* Ry,Rx,accX. */ + +{"msacl", 4, two(0xa080, 0x0900), two(0xf180, 0x0910), "RNRoiI4/Rn", mcfmac }, +{"msacl", 4, two(0xa080, 0x0b00), two(0xf180, 0x0910), "RNRoMh4/Rn", mcfmac }, +{"msacl", 4, two(0xa080, 0x0900), two(0xf180, 0x0f10), "RNRo4/Rn", mcfmac }, +{"msacl", 4, two(0xa000, 0x0900), two(0xf1b0, 0x0b00), "RMRmiI", mcfmac }, +{"msacl", 4, two(0xa000, 0x0b00), two(0xf1b0, 0x0b00), "RMRmMh", mcfmac }, +{"msacl", 4, two(0xa000, 0x0900), two(0xf1b0, 0x0800), "RMRm", mcfmac }, + +{"msacl", 4, two(0xa000, 0x0900), two(0xf100, 0x0900), "R3R1iI4/RneG", mcfemac }, +{"msacl", 4, two(0xa000, 0x0b00), two(0xf100, 0x0900), "R3R1Mh4/RneG", mcfemac }, +{"msacl", 4, two(0xa000, 0x0900), two(0xf100, 0x0f00), "R3R14/RneG", mcfemac }, +{"msacl", 4, two(0xa000, 0x0900), two(0xf130, 0x0900), "RMRmiIeH", mcfemac }, +{"msacl", 4, two(0xa000, 0x0b00), two(0xf130, 0x0900), "RMRmMheH", mcfemac }, +{"msacl", 4, two(0xa000, 0x0900), two(0xf130, 0x0f00), "RMRmeH", mcfemac }, + +{"mulsw", 2, one(0140700), one(0170700), ";wDd", m68000up|mcfisa_a }, +{"mulsl", 4, two(0046000,004000), two(0177700,0107770), ";lD1", m68020up|cpu32 }, +{"mulsl", 4, two(0046000,004000), two(0177700,0107770), "qsD1", mcfisa_a }, +{"mulsl", 4, two(0046000,006000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 }, + +{"muluw", 2, one(0140300), one(0170700), ";wDd", m68000up|mcfisa_a }, +{"mulul", 4, two(0046000,000000), two(0177700,0107770), ";lD1", m68020up|cpu32 }, +{"mulul", 4, two(0046000,000000), two(0177700,0107770), "qsD1", mcfisa_a }, +{"mulul", 4, two(0046000,002000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 }, + +{"nbcd", 2, one(0044000), one(0177700), "$s", m68000up }, + +{"negb", 2, one(0042000), one(0177700), "$s", m68000up }, +{"negw", 2, one(0042100), one(0177700), "$s", m68000up }, +{"negl", 2, one(0042200), one(0177700), "$s", m68000up }, +{"negl", 2, one(0042200), one(0177700), "Ds", mcfisa_a}, + +{"negxb", 2, one(0040000), one(0177700), "$s", m68000up }, +{"negxw", 2, one(0040100), one(0177700), "$s", m68000up }, +{"negxl", 2, one(0040200), one(0177700), "$s", m68000up }, +{"negxl", 2, one(0040200), one(0177700), "Ds", mcfisa_a}, + +{"nop", 2, one(0047161), one(0177777), "", m68000up | mcfisa_a}, + +{"notb", 2, one(0043000), one(0177700), "$s", m68000up }, +{"notw", 2, one(0043100), one(0177700), "$s", m68000up }, +{"notl", 2, one(0043200), one(0177700), "$s", m68000up }, +{"notl", 2, one(0043200), one(0177700), "Ds", mcfisa_a}, + +{"orib", 4, one(0000000), one(0177700), "#b$s", m68000up }, +{"orib", 4, one(0000074), one(0177777), "#bCs", m68000up }, +{"oriw", 4, one(0000100), one(0177700), "#w$s", m68000up }, +{"oriw", 4, one(0000174), one(0177777), "#wSs", m68000up }, +{"oril", 6, one(0000200), one(0177700), "#l$s", m68000up }, +{"oril", 6, one(0000200), one(0177700), "#lDs", mcfisa_a }, +{"ori", 4, one(0000074), one(0177777), "#bCs", m68000up }, +{"ori", 4, one(0000100), one(0177700), "#w$s", m68000up }, +{"ori", 4, one(0000174), one(0177777), "#wSs", m68000up }, + +/* The or opcode can generate the ori instruction. */ +{"orb", 4, one(0000000), one(0177700), "#b$s", m68000up }, +{"orb", 4, one(0000074), one(0177777), "#bCs", m68000up }, +{"orb", 2, one(0100000), one(0170700), ";bDd", m68000up }, +{"orb", 2, one(0100400), one(0170700), "Dd~s", m68000up }, +{"orw", 4, one(0000100), one(0177700), "#w$s", m68000up }, +{"orw", 4, one(0000174), one(0177777), "#wSs", m68000up }, +{"orw", 2, one(0100100), one(0170700), ";wDd", m68000up }, +{"orw", 2, one(0100500), one(0170700), "Dd~s", m68000up }, +{"orl", 6, one(0000200), one(0177700), "#l$s", m68000up }, +{"orl", 6, one(0000200), one(0177700), "#lDs", mcfisa_a }, +{"orl", 2, one(0100200), one(0170700), ";lDd", m68000up | mcfisa_a }, +{"orl", 2, one(0100600), one(0170700), "Dd~s", m68000up | mcfisa_a }, +{"or", 4, one(0000074), one(0177777), "#bCs", m68000up }, +{"or", 4, one(0000100), one(0177700), "#w$s", m68000up }, +{"or", 4, one(0000174), one(0177777), "#wSs", m68000up }, +{"or", 2, one(0100100), one(0170700), ";wDd", m68000up }, +{"or", 2, one(0100500), one(0170700), "Dd~s", m68000up }, + +{"pack", 4, one(0100500), one(0170770), "DsDd#w", m68020up }, +{"pack", 4, one(0100510), one(0170770), "-s-d#w", m68020up }, + +{"pbac", 2, one(0xf087), one(0xffbf), "Bc", m68851 }, +{"pbacw", 2, one(0xf087), one(0xffff), "BW", m68851 }, +{"pbas", 2, one(0xf086), one(0xffbf), "Bc", m68851 }, +{"pbasw", 2, one(0xf086), one(0xffff), "BW", m68851 }, +{"pbbc", 2, one(0xf081), one(0xffbf), "Bc", m68851 }, +{"pbbcw", 2, one(0xf081), one(0xffff), "BW", m68851 }, +{"pbbs", 2, one(0xf080), one(0xffbf), "Bc", m68851 }, +{"pbbsw", 2, one(0xf080), one(0xffff), "BW", m68851 }, +{"pbcc", 2, one(0xf08f), one(0xffbf), "Bc", m68851 }, +{"pbccw", 2, one(0xf08f), one(0xffff), "BW", m68851 }, +{"pbcs", 2, one(0xf08e), one(0xffbf), "Bc", m68851 }, +{"pbcsw", 2, one(0xf08e), one(0xffff), "BW", m68851 }, +{"pbgc", 2, one(0xf08d), one(0xffbf), "Bc", m68851 }, +{"pbgcw", 2, one(0xf08d), one(0xffff), "BW", m68851 }, +{"pbgs", 2, one(0xf08c), one(0xffbf), "Bc", m68851 }, +{"pbgsw", 2, one(0xf08c), one(0xffff), "BW", m68851 }, +{"pbic", 2, one(0xf08b), one(0xffbf), "Bc", m68851 }, +{"pbicw", 2, one(0xf08b), one(0xffff), "BW", m68851 }, +{"pbis", 2, one(0xf08a), one(0xffbf), "Bc", m68851 }, +{"pbisw", 2, one(0xf08a), one(0xffff), "BW", m68851 }, +{"pblc", 2, one(0xf083), one(0xffbf), "Bc", m68851 }, +{"pblcw", 2, one(0xf083), one(0xffff), "BW", m68851 }, +{"pbls", 2, one(0xf082), one(0xffbf), "Bc", m68851 }, +{"pblsw", 2, one(0xf082), one(0xffff), "BW", m68851 }, +{"pbsc", 2, one(0xf085), one(0xffbf), "Bc", m68851 }, +{"pbscw", 2, one(0xf085), one(0xffff), "BW", m68851 }, +{"pbss", 2, one(0xf084), one(0xffbf), "Bc", m68851 }, +{"pbssw", 2, one(0xf084), one(0xffff), "BW", m68851 }, +{"pbwc", 2, one(0xf089), one(0xffbf), "Bc", m68851 }, +{"pbwcw", 2, one(0xf089), one(0xffff), "BW", m68851 }, +{"pbws", 2, one(0xf088), one(0xffbf), "Bc", m68851 }, +{"pbwsw", 2, one(0xf088), one(0xffff), "BW", m68851 }, + +{"pdbac", 4, two(0xf048, 0x0007), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbas", 4, two(0xf048, 0x0006), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbbc", 4, two(0xf048, 0x0001), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbbs", 4, two(0xf048, 0x0000), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbcc", 4, two(0xf048, 0x000f), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbcs", 4, two(0xf048, 0x000e), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbgc", 4, two(0xf048, 0x000d), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbgs", 4, two(0xf048, 0x000c), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbic", 4, two(0xf048, 0x000b), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbis", 4, two(0xf048, 0x000a), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdblc", 4, two(0xf048, 0x0003), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbls", 4, two(0xf048, 0x0002), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbsc", 4, two(0xf048, 0x0005), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbss", 4, two(0xf048, 0x0004), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbwc", 4, two(0xf048, 0x0009), two(0xfff8, 0xffff), "DsBw", m68851 }, +{"pdbws", 4, two(0xf048, 0x0008), two(0xfff8, 0xffff), "DsBw", m68851 }, + +{"pea", 2, one(0044100), one(0177700), "!s", m68000up|mcfisa_a }, + +{"pflusha", 2, one(0xf518), one(0xfff8), "", m68040up }, +{"pflusha", 4, two(0xf000,0x2400), two(0xffff,0xffff), "", m68030 | m68851 }, + +{"pflush", 4, two(0xf000,0x3010), two(0xffc0,0xfe10), "T3T9", m68030|m68851 }, +{"pflush", 4, two(0xf000,0x3810), two(0xffc0,0xfe10), "T3T9&s", m68030|m68851 }, +{"pflush", 4, two(0xf000,0x3008), two(0xffc0,0xfe18), "D3T9", m68030|m68851 }, +{"pflush", 4, two(0xf000,0x3808), two(0xffc0,0xfe18), "D3T9&s", m68030|m68851 }, +{"pflush", 4, two(0xf000,0x3000), two(0xffc0,0xfe1e), "f3T9", m68030|m68851 }, +{"pflush", 4, two(0xf000,0x3800), two(0xffc0,0xfe1e), "f3T9&s", m68030|m68851 }, +{"pflush", 2, one(0xf508), one(0xfff8), "as", m68040up }, +{"pflush", 2, one(0xf508), one(0xfff8), "As", m68040up }, + +{"pflushan", 2, one(0xf510), one(0xfff8), "", m68040up }, +{"pflushn", 2, one(0xf500), one(0xfff8), "as", m68040up }, +{"pflushn", 2, one(0xf500), one(0xfff8), "As", m68040up }, + +{"pflushr", 4, two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s", m68851 }, + +{"pflushs", 4, two(0xf000, 0x3410), two(0xfff8, 0xfe10), "T3T9", m68851 }, +{"pflushs", 4, two(0xf000, 0x3c10), two(0xfff8, 0xfe10), "T3T9&s", m68851 }, +{"pflushs", 4, two(0xf000, 0x3408), two(0xfff8, 0xfe18), "D3T9", m68851 }, +{"pflushs", 4, two(0xf000, 0x3c08), two(0xfff8, 0xfe18), "D3T9&s", m68851 }, +{"pflushs", 4, two(0xf000, 0x3400), two(0xfff8, 0xfe1e), "f3T9", m68851 }, +{"pflushs", 4, two(0xf000, 0x3c00), two(0xfff8, 0xfe1e), "f3T9&s", m68851 }, + +{"ploadr", 4, two(0xf000,0x2210), two(0xffc0,0xfff0), "T3&s", m68030|m68851 }, +{"ploadr", 4, two(0xf000,0x2208), two(0xffc0,0xfff8), "D3&s", m68030|m68851 }, +{"ploadr", 4, two(0xf000,0x2200), two(0xffc0,0xfffe), "f3&s", m68030|m68851 }, +{"ploadw", 4, two(0xf000,0x2010), two(0xffc0,0xfff0), "T3&s", m68030|m68851 }, +{"ploadw", 4, two(0xf000,0x2008), two(0xffc0,0xfff8), "D3&s", m68030|m68851 }, +{"ploadw", 4, two(0xf000,0x2000), two(0xffc0,0xfffe), "f3&s", m68030|m68851 }, + +{"plpar", 2, one(0xf5c8), one(0xfff8), "as", m68060 }, +{"plpaw", 2, one(0xf588), one(0xfff8), "as", m68060 }, + +{"pmove", 4, two(0xf000,0x4000), two(0xffc0,0xffff), "*l08", m68030|m68851 }, +{"pmove", 4, two(0xf000,0x5c00), two(0xffc0,0xffff), "*w18", m68851 }, +{"pmove", 4, two(0xf000,0x4000), two(0xffc0,0xe3ff), "*b28", m68851 }, +{"pmove", 4, two(0xf000,0x4200), two(0xffc0,0xffff), "08%s", m68030|m68851 }, +{"pmove", 4, two(0xf000,0x5e00), two(0xffc0,0xffff), "18%s", m68851 }, +{"pmove", 4, two(0xf000,0x4200), two(0xffc0,0xe3ff), "28%s", m68851 }, +{"pmove", 4, two(0xf000,0x4000), two(0xffc0,0xe3ff), "|sW8", m68030|m68851 }, +{"pmove", 4, two(0xf000,0x4200), two(0xffc0,0xe3ff), "W8~s", m68030|m68851 }, +{"pmove", 4, two(0xf000,0x6200), two(0xffc0,0xe3e3), "*wX3", m68851 }, +{"pmove", 4, two(0xf000,0x6000), two(0xffc0,0xe3e3), "X3%s", m68851 }, +{"pmove", 4, two(0xf000,0x6000), two(0xffc0,0xffff), "*wY8", m68030|m68851 }, +{"pmove", 4, two(0xf000,0x6200), two(0xffc0,0xffff), "Y8%s", m68030|m68851 }, +{"pmove", 4, two(0xf000,0x6600), two(0xffc0,0xffff), "Z8%s", m68851 }, +{"pmove", 4, two(0xf000,0x0800), two(0xffc0,0xfbff), "*l38", m68030 }, +{"pmove", 4, two(0xf000,0x0a00), two(0xffc0,0xfbff), "38%s", m68030 }, + +{"pmovefd", 4, two(0xf000, 0x4100), two(0xffc0, 0xe3ff), "*l08", m68030 }, +{"pmovefd", 4, two(0xf000, 0x4100), two(0xffc0, 0xe3ff), "|sW8", m68030 }, +{"pmovefd", 4, two(0xf000, 0x0900), two(0xffc0, 0xfbff), "*l38", m68030 }, + +{"prestore", 2, one(0xf140), one(0xffc0), "s", m68851 }, + +{"psac", 4, two(0xf040, 0x0007), two(0xffc0, 0xffff), "$s", m68851 }, +{"psas", 4, two(0xf040, 0x0006), two(0xffc0, 0xffff), "$s", m68851 }, +{"psbc", 4, two(0xf040, 0x0001), two(0xffc0, 0xffff), "$s", m68851 }, +{"psbs", 4, two(0xf040, 0x0000), two(0xffc0, 0xffff), "$s", m68851 }, +{"pscc", 4, two(0xf040, 0x000f), two(0xffc0, 0xffff), "$s", m68851 }, +{"pscs", 4, two(0xf040, 0x000e), two(0xffc0, 0xffff), "$s", m68851 }, +{"psgc", 4, two(0xf040, 0x000d), two(0xffc0, 0xffff), "$s", m68851 }, +{"psgs", 4, two(0xf040, 0x000c), two(0xffc0, 0xffff), "$s", m68851 }, +{"psic", 4, two(0xf040, 0x000b), two(0xffc0, 0xffff), "$s", m68851 }, +{"psis", 4, two(0xf040, 0x000a), two(0xffc0, 0xffff), "$s", m68851 }, +{"pslc", 4, two(0xf040, 0x0003), two(0xffc0, 0xffff), "$s", m68851 }, +{"psls", 4, two(0xf040, 0x0002), two(0xffc0, 0xffff), "$s", m68851 }, +{"pssc", 4, two(0xf040, 0x0005), two(0xffc0, 0xffff), "$s", m68851 }, +{"psss", 4, two(0xf040, 0x0004), two(0xffc0, 0xffff), "$s", m68851 }, +{"pswc", 4, two(0xf040, 0x0009), two(0xffc0, 0xffff), "$s", m68851 }, +{"psws", 4, two(0xf040, 0x0008), two(0xffc0, 0xffff), "$s", m68851 }, + +{"ptestr", 4, two(0xf000,0x8210), two(0xffc0, 0xe3f0), "T3&st8", m68030|m68851 }, +{"ptestr", 4, two(0xf000,0x8310), two(0xffc0,0xe310), "T3&st8A9", m68030|m68851 }, +{"ptestr", 4, two(0xf000,0x8208), two(0xffc0,0xe3f8), "D3&st8", m68030|m68851 }, +{"ptestr", 4, two(0xf000,0x8308), two(0xffc0,0xe318), "D3&st8A9", m68030|m68851 }, +{"ptestr", 4, two(0xf000,0x8200), two(0xffc0,0xe3fe), "f3&st8", m68030|m68851 }, +{"ptestr", 4, two(0xf000,0x8300), two(0xffc0,0xe31e), "f3&st8A9", m68030|m68851 }, +{"ptestr", 2, one(0xf568), one(0xfff8), "as", m68040 }, + +{"ptestw", 4, two(0xf000,0x8010), two(0xffc0,0xe3f0), "T3&st8", m68030|m68851 }, +{"ptestw", 4, two(0xf000,0x8110), two(0xffc0,0xe310), "T3&st8A9", m68030|m68851 }, +{"ptestw", 4, two(0xf000,0x8008), two(0xffc0,0xe3f8), "D3&st8", m68030|m68851 }, +{"ptestw", 4, two(0xf000,0x8108), two(0xffc0,0xe318), "D3&st8A9", m68030|m68851 }, +{"ptestw", 4, two(0xf000,0x8000), two(0xffc0,0xe3fe), "f3&st8", m68030|m68851 }, +{"ptestw", 4, two(0xf000,0x8100), two(0xffc0,0xe31e), "f3&st8A9", m68030|m68851 }, +{"ptestw", 2, one(0xf548), one(0xfff8), "as", m68040 }, + +{"ptrapacw", 6, two(0xf07a, 0x0007), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapacl", 6, two(0xf07b, 0x0007), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapac", 4, two(0xf07c, 0x0007), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapasw", 6, two(0xf07a, 0x0006), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapasl", 6, two(0xf07b, 0x0006), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapas", 4, two(0xf07c, 0x0006), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapbcw", 6, two(0xf07a, 0x0001), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapbcl", 6, two(0xf07b, 0x0001), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapbc", 4, two(0xf07c, 0x0001), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapbsw", 6, two(0xf07a, 0x0000), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapbsl", 6, two(0xf07b, 0x0000), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapbs", 4, two(0xf07c, 0x0000), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapccw", 6, two(0xf07a, 0x000f), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapccl", 6, two(0xf07b, 0x000f), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapcc", 4, two(0xf07c, 0x000f), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapcsw", 6, two(0xf07a, 0x000e), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapcsl", 6, two(0xf07b, 0x000e), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapcs", 4, two(0xf07c, 0x000e), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapgcw", 6, two(0xf07a, 0x000d), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapgcl", 6, two(0xf07b, 0x000d), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapgc", 4, two(0xf07c, 0x000d), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapgsw", 6, two(0xf07a, 0x000c), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapgsl", 6, two(0xf07b, 0x000c), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapgs", 4, two(0xf07c, 0x000c), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapicw", 6, two(0xf07a, 0x000b), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapicl", 6, two(0xf07b, 0x000b), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapic", 4, two(0xf07c, 0x000b), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapisw", 6, two(0xf07a, 0x000a), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapisl", 6, two(0xf07b, 0x000a), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapis", 4, two(0xf07c, 0x000a), two(0xffff, 0xffff), "", m68851 }, + +{"ptraplcw", 6, two(0xf07a, 0x0003), two(0xffff, 0xffff), "#w", m68851 }, +{"ptraplcl", 6, two(0xf07b, 0x0003), two(0xffff, 0xffff), "#l", m68851 }, +{"ptraplc", 4, two(0xf07c, 0x0003), two(0xffff, 0xffff), "", m68851 }, + +{"ptraplsw", 6, two(0xf07a, 0x0002), two(0xffff, 0xffff), "#w", m68851 }, +{"ptraplsl", 6, two(0xf07b, 0x0002), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapls", 4, two(0xf07c, 0x0002), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapscw", 6, two(0xf07a, 0x0005), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapscl", 6, two(0xf07b, 0x0005), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapsc", 4, two(0xf07c, 0x0005), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapssw", 6, two(0xf07a, 0x0004), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapssl", 6, two(0xf07b, 0x0004), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapss", 4, two(0xf07c, 0x0004), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapwcw", 6, two(0xf07a, 0x0009), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapwcl", 6, two(0xf07b, 0x0009), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapwc", 4, two(0xf07c, 0x0009), two(0xffff, 0xffff), "", m68851 }, + +{"ptrapwsw", 6, two(0xf07a, 0x0008), two(0xffff, 0xffff), "#w", m68851 }, +{"ptrapwsl", 6, two(0xf07b, 0x0008), two(0xffff, 0xffff), "#l", m68851 }, +{"ptrapws", 4, two(0xf07c, 0x0008), two(0xffff, 0xffff), "", m68851 }, + +{"pulse", 2, one(0045314), one(0177777), "", m68060 | mcfisa_a }, + +{"pvalid", 4, two(0xf000, 0x2800), two(0xffc0, 0xffff), "Vs&s", m68851 }, +{"pvalid", 4, two(0xf000, 0x2c00), two(0xffc0, 0xfff8), "A3&s", m68851 }, + + /* FIXME: don't allow Dw==Dx. */ +{"remsl", 4, two(0x4c40, 0x0800), two(0xffc0, 0x8ff8), "qsD3D1", mcfhwdiv }, +{"remul", 4, two(0x4c40, 0x0000), two(0xffc0, 0x8ff8), "qsD3D1", mcfhwdiv }, + +{"reset", 2, one(0047160), one(0177777), "", m68000up }, + +{"rolb", 2, one(0160430), one(0170770), "QdDs", m68000up }, +{"rolb", 2, one(0160470), one(0170770), "DdDs", m68000up }, +{"rolw", 2, one(0160530), one(0170770), "QdDs", m68000up }, +{"rolw", 2, one(0160570), one(0170770), "DdDs", m68000up }, +{"rolw", 2, one(0163700), one(0177700), "~s", m68000up }, +{"roll", 2, one(0160630), one(0170770), "QdDs", m68000up }, +{"roll", 2, one(0160670), one(0170770), "DdDs", m68000up }, + +{"rorb", 2, one(0160030), one(0170770), "QdDs", m68000up }, +{"rorb", 2, one(0160070), one(0170770), "DdDs", m68000up }, +{"rorw", 2, one(0160130), one(0170770), "QdDs", m68000up }, +{"rorw", 2, one(0160170), one(0170770), "DdDs", m68000up }, +{"rorw", 2, one(0163300), one(0177700), "~s", m68000up }, +{"rorl", 2, one(0160230), one(0170770), "QdDs", m68000up }, +{"rorl", 2, one(0160270), one(0170770), "DdDs", m68000up }, + +{"roxlb", 2, one(0160420), one(0170770), "QdDs", m68000up }, +{"roxlb", 2, one(0160460), one(0170770), "DdDs", m68000up }, +{"roxlw", 2, one(0160520), one(0170770), "QdDs", m68000up }, +{"roxlw", 2, one(0160560), one(0170770), "DdDs", m68000up }, +{"roxlw", 2, one(0162700), one(0177700), "~s", m68000up }, +{"roxll", 2, one(0160620), one(0170770), "QdDs", m68000up }, +{"roxll", 2, one(0160660), one(0170770), "DdDs", m68000up }, + +{"roxrb", 2, one(0160020), one(0170770), "QdDs", m68000up }, +{"roxrb", 2, one(0160060), one(0170770), "DdDs", m68000up }, +{"roxrw", 2, one(0160120), one(0170770), "QdDs", m68000up }, +{"roxrw", 2, one(0160160), one(0170770), "DdDs", m68000up }, +{"roxrw", 2, one(0162300), one(0177700), "~s", m68000up }, +{"roxrl", 2, one(0160220), one(0170770), "QdDs", m68000up }, +{"roxrl", 2, one(0160260), one(0170770), "DdDs", m68000up }, + +{"rtd", 4, one(0047164), one(0177777), "#w", m68010up }, + +{"rte", 2, one(0047163), one(0177777), "", m68000up | mcfisa_a }, + +{"rtm", 2, one(0003300), one(0177760), "Rs", m68020 }, + +{"rtr", 2, one(0047167), one(0177777), "", m68000up }, + +{"rts", 2, one(0047165), one(0177777), "", m68000up | mcfisa_a }, + +{"satsl", 2, one(0046200), one(0177770), "Ds", mcfisa_b }, + +{"sbcd", 2, one(0100400), one(0170770), "DsDd", m68000up }, +{"sbcd", 2, one(0100410), one(0170770), "-s-d", m68000up }, + +{"scc", 2, one(0052300), one(0177700), "$s", m68000up }, +{"scc", 2, one(0052300), one(0177700), "Ds", mcfisa_a }, +{"scs", 2, one(0052700), one(0177700), "$s", m68000up }, +{"scs", 2, one(0052700), one(0177700), "Ds", mcfisa_a }, +{"seq", 2, one(0053700), one(0177700), "$s", m68000up }, +{"seq", 2, one(0053700), one(0177700), "Ds", mcfisa_a }, +{"sf", 2, one(0050700), one(0177700), "$s", m68000up }, +{"sf", 2, one(0050700), one(0177700), "Ds", mcfisa_a }, +{"sge", 2, one(0056300), one(0177700), "$s", m68000up }, +{"sge", 2, one(0056300), one(0177700), "Ds", mcfisa_a }, +{"sgt", 2, one(0057300), one(0177700), "$s", m68000up }, +{"sgt", 2, one(0057300), one(0177700), "Ds", mcfisa_a }, +{"shi", 2, one(0051300), one(0177700), "$s", m68000up }, +{"shi", 2, one(0051300), one(0177700), "Ds", mcfisa_a }, +{"sle", 2, one(0057700), one(0177700), "$s", m68000up }, +{"sle", 2, one(0057700), one(0177700), "Ds", mcfisa_a }, +{"sls", 2, one(0051700), one(0177700), "$s", m68000up }, +{"sls", 2, one(0051700), one(0177700), "Ds", mcfisa_a }, +{"slt", 2, one(0056700), one(0177700), "$s", m68000up }, +{"slt", 2, one(0056700), one(0177700), "Ds", mcfisa_a }, +{"smi", 2, one(0055700), one(0177700), "$s", m68000up }, +{"smi", 2, one(0055700), one(0177700), "Ds", mcfisa_a }, +{"sne", 2, one(0053300), one(0177700), "$s", m68000up }, +{"sne", 2, one(0053300), one(0177700), "Ds", mcfisa_a }, +{"spl", 2, one(0055300), one(0177700), "$s", m68000up }, +{"spl", 2, one(0055300), one(0177700), "Ds", mcfisa_a }, +{"st", 2, one(0050300), one(0177700), "$s", m68000up }, +{"st", 2, one(0050300), one(0177700), "Ds", mcfisa_a }, +{"svc", 2, one(0054300), one(0177700), "$s", m68000up }, +{"svc", 2, one(0054300), one(0177700), "Ds", mcfisa_a }, +{"svs", 2, one(0054700), one(0177700), "$s", m68000up }, +{"svs", 2, one(0054700), one(0177700), "Ds", mcfisa_a }, + +{"stop", 4, one(0047162), one(0177777), "#w", m68000up | mcfisa_a }, + +{"strldsr", 4, two(0040347,0043374), two(0177777,0177777), "#w", mcfisa_aa}, + +{"subal", 2, one(0110700), one(0170700), "*lAd", m68000up | mcfisa_a }, +{"subaw", 2, one(0110300), one(0170700), "*wAd", m68000up }, + +{"subib", 4, one(0002000), one(0177700), "#b$s", m68000up }, +{"subiw", 4, one(0002100), one(0177700), "#w$s", m68000up }, +{"subil", 6, one(0002200), one(0177700), "#l$s", m68000up }, +{"subil", 6, one(0002200), one(0177700), "#lDs", mcfisa_a }, + +{"subqb", 2, one(0050400), one(0170700), "Qd%s", m68000up }, +{"subqw", 2, one(0050500), one(0170700), "Qd%s", m68000up }, +{"subql", 2, one(0050600), one(0170700), "Qd%s", m68000up | mcfisa_a }, + +/* The sub opcode can generate the suba, subi, and subq instructions. */ +{"subb", 2, one(0050400), one(0170700), "Qd%s", m68000up }, +{"subb", 4, one(0002000), one(0177700), "#b$s", m68000up }, +{"subb", 2, one(0110000), one(0170700), ";bDd", m68000up }, +{"subb", 2, one(0110400), one(0170700), "Dd~s", m68000up }, +{"subw", 2, one(0050500), one(0170700), "Qd%s", m68000up }, +{"subw", 4, one(0002100), one(0177700), "#w$s", m68000up }, +{"subw", 2, one(0110300), one(0170700), "*wAd", m68000up }, +{"subw", 2, one(0110100), one(0170700), "*wDd", m68000up }, +{"subw", 2, one(0110500), one(0170700), "Dd~s", m68000up }, +{"subl", 2, one(0050600), one(0170700), "Qd%s", m68000up | mcfisa_a }, +{"subl", 6, one(0002200), one(0177700), "#l$s", m68000up }, +{"subl", 6, one(0002200), one(0177700), "#lDs", mcfisa_a }, +{"subl", 2, one(0110700), one(0170700), "*lAd", m68000up | mcfisa_a }, +{"subl", 2, one(0110200), one(0170700), "*lDd", m68000up | mcfisa_a }, +{"subl", 2, one(0110600), one(0170700), "Dd~s", m68000up | mcfisa_a }, + +{"subxb", 2, one(0110400), one(0170770), "DsDd", m68000up }, +{"subxb", 2, one(0110410), one(0170770), "-s-d", m68000up }, +{"subxw", 2, one(0110500), one(0170770), "DsDd", m68000up }, +{"subxw", 2, one(0110510), one(0170770), "-s-d", m68000up }, +{"subxl", 2, one(0110600), one(0170770), "DsDd", m68000up | mcfisa_a }, +{"subxl", 2, one(0110610), one(0170770), "-s-d", m68000up }, + +{"swap", 2, one(0044100), one(0177770), "Ds", m68000up | mcfisa_a }, + +/* swbeg and swbegl are magic constants used on sysV68. The compiler + generates them before a switch table. They tell the debugger and + disassembler that a switch table follows. The parameter is the + number of elements in the table. swbeg means that the entries in + the table are word (2 byte) sized, and swbegl means that the + entries in the table are longword (4 byte) sized. */ +{"swbeg", 4, one(0045374), one(0177777), "#w", m68000up | mcfisa_a }, +{"swbegl", 6, one(0045375), one(0177777), "#l", m68000up | mcfisa_a }, + +{"tas", 2, one(0045300), one(0177700), "$s", m68000up | mcfisa_b}, + +#define TBL1(name,insn_size,signed,round,size) \ + {name, insn_size, two(0174000, (signed<<11)|(!round<<10)|(size<<6)|0000400), \ + two(0177700,0107777), "!sD1", cpu32 }, \ + {name, insn_size, two(0174000, (signed<<11)|(!round<<10)|(size<<6)), \ + two(0177770,0107770), "DsD3D1", cpu32 } +#define TBL(name1, name2, name3, s, r) \ + TBL1(name1, 4, s, r, 0), TBL1(name2, 4, s, r, 1), TBL1(name3, 4, s, r, 2) +TBL("tblsb", "tblsw", "tblsl", 2, 1), +TBL("tblsnb", "tblsnw", "tblsnl", 2, 0), +TBL("tblub", "tbluw", "tblul", 0, 1), +TBL("tblunb", "tblunw", "tblunl", 0, 0), + +{"trap", 2, one(0047100), one(0177760), "Ts", m68000up | mcfisa_a }, + +{"trapcc", 2, one(0052374), one(0177777), "", m68020up | cpu32 }, +{"trapcs", 2, one(0052774), one(0177777), "", m68020up | cpu32 }, +{"trapeq", 2, one(0053774), one(0177777), "", m68020up | cpu32 }, +{"trapf", 2, one(0050774), one(0177777), "", m68020up | cpu32 | mcfisa_a }, +{"trapge", 2, one(0056374), one(0177777), "", m68020up | cpu32 }, +{"trapgt", 2, one(0057374), one(0177777), "", m68020up | cpu32 }, +{"traphi", 2, one(0051374), one(0177777), "", m68020up | cpu32 }, +{"traple", 2, one(0057774), one(0177777), "", m68020up | cpu32 }, +{"trapls", 2, one(0051774), one(0177777), "", m68020up | cpu32 }, +{"traplt", 2, one(0056774), one(0177777), "", m68020up | cpu32 }, +{"trapmi", 2, one(0055774), one(0177777), "", m68020up | cpu32 }, +{"trapne", 2, one(0053374), one(0177777), "", m68020up | cpu32 }, +{"trappl", 2, one(0055374), one(0177777), "", m68020up | cpu32 }, +{"trapt", 2, one(0050374), one(0177777), "", m68020up | cpu32 }, +{"trapvc", 2, one(0054374), one(0177777), "", m68020up | cpu32 }, +{"trapvs", 2, one(0054774), one(0177777), "", m68020up | cpu32 }, + +{"trapccw", 4, one(0052372), one(0177777), "#w", m68020up|cpu32 }, +{"trapcsw", 4, one(0052772), one(0177777), "#w", m68020up|cpu32 }, +{"trapeqw", 4, one(0053772), one(0177777), "#w", m68020up|cpu32 }, +{"trapfw", 4, one(0050772), one(0177777), "#w", m68020up|cpu32|mcfisa_a}, +{"trapgew", 4, one(0056372), one(0177777), "#w", m68020up|cpu32 }, +{"trapgtw", 4, one(0057372), one(0177777), "#w", m68020up|cpu32 }, +{"traphiw", 4, one(0051372), one(0177777), "#w", m68020up|cpu32 }, +{"traplew", 4, one(0057772), one(0177777), "#w", m68020up|cpu32 }, +{"traplsw", 4, one(0051772), one(0177777), "#w", m68020up|cpu32 }, +{"trapltw", 4, one(0056772), one(0177777), "#w", m68020up|cpu32 }, +{"trapmiw", 4, one(0055772), one(0177777), "#w", m68020up|cpu32 }, +{"trapnew", 4, one(0053372), one(0177777), "#w", m68020up|cpu32 }, +{"trapplw", 4, one(0055372), one(0177777), "#w", m68020up|cpu32 }, +{"traptw", 4, one(0050372), one(0177777), "#w", m68020up|cpu32 }, +{"trapvcw", 4, one(0054372), one(0177777), "#w", m68020up|cpu32 }, +{"trapvsw", 4, one(0054772), one(0177777), "#w", m68020up|cpu32 }, + +{"trapccl", 6, one(0052373), one(0177777), "#l", m68020up|cpu32 }, +{"trapcsl", 6, one(0052773), one(0177777), "#l", m68020up|cpu32 }, +{"trapeql", 6, one(0053773), one(0177777), "#l", m68020up|cpu32 }, +{"trapfl", 6, one(0050773), one(0177777), "#l", m68020up|cpu32|mcfisa_a}, +{"trapgel", 6, one(0056373), one(0177777), "#l", m68020up|cpu32 }, +{"trapgtl", 6, one(0057373), one(0177777), "#l", m68020up|cpu32 }, +{"traphil", 6, one(0051373), one(0177777), "#l", m68020up|cpu32 }, +{"traplel", 6, one(0057773), one(0177777), "#l", m68020up|cpu32 }, +{"traplsl", 6, one(0051773), one(0177777), "#l", m68020up|cpu32 }, +{"trapltl", 6, one(0056773), one(0177777), "#l", m68020up|cpu32 }, +{"trapmil", 6, one(0055773), one(0177777), "#l", m68020up|cpu32 }, +{"trapnel", 6, one(0053373), one(0177777), "#l", m68020up|cpu32 }, +{"trappll", 6, one(0055373), one(0177777), "#l", m68020up|cpu32 }, +{"traptl", 6, one(0050373), one(0177777), "#l", m68020up|cpu32 }, +{"trapvcl", 6, one(0054373), one(0177777), "#l", m68020up|cpu32 }, +{"trapvsl", 6, one(0054773), one(0177777), "#l", m68020up|cpu32 }, + +{"trapv", 2, one(0047166), one(0177777), "", m68000up }, + +{"tstb", 2, one(0045000), one(0177700), ";b", m68020up|cpu32|mcfisa_a }, +{"tstb", 2, one(0045000), one(0177700), "$b", m68000up }, +{"tstw", 2, one(0045100), one(0177700), "*w", m68020up|cpu32|mcfisa_a }, +{"tstw", 2, one(0045100), one(0177700), "$w", m68000up }, +{"tstl", 2, one(0045200), one(0177700), "*l", m68020up|cpu32|mcfisa_a }, +{"tstl", 2, one(0045200), one(0177700), "$l", m68000up }, + +{"unlk", 2, one(0047130), one(0177770), "As", m68000up | mcfisa_a }, + +{"unpk", 4, one(0100600), one(0170770), "DsDd#w", m68020up }, +{"unpk", 4, one(0100610), one(0170770), "-s-d#w", m68020up }, + +{"wddatab", 2, one(0175400), one(0177700), "~s", mcfisa_a }, +{"wddataw", 2, one(0175500), one(0177700), "~s", mcfisa_a }, +{"wddatal", 2, one(0175600), one(0177700), "~s", mcfisa_a }, + +{"wdebug", 4, two(0175720, 03), two(0177770, 0xffff), "as", mcfisa_a }, +{"wdebug", 4, two(0175750, 03), two(0177770, 0xffff), "ds", mcfisa_a }, +}; + +const int m68k_numopcodes = sizeof m68k_opcodes / sizeof m68k_opcodes[0]; + +/* These aliases used to be in the above table, each one duplicating + all of the entries for its primary exactly. This table was + constructed by mechanical processing of the opcode table, with a + small number of tweaks done by hand. There are probably a lot more + aliases above that could be moved down here, except for very minor + differences. */ + +const struct m68k_opcode_alias m68k_opcode_aliases[] = +{ + { "add", "addw", }, + { "adda", "addaw", }, + { "addi", "addiw", }, + { "addq", "addqw", }, + { "addx", "addxw", }, + { "asl", "aslw", }, + { "asr", "asrw", }, + { "bhi", "bhiw", }, + { "bls", "blsw", }, + { "bcc", "bccw", }, + { "bcs", "bcsw", }, + { "bne", "bnew", }, + { "beq", "beqw", }, + { "bvc", "bvcw", }, + { "bvs", "bvsw", }, + { "bpl", "bplw", }, + { "bmi", "bmiw", }, + { "bge", "bgew", }, + { "blt", "bltw", }, + { "bgt", "bgtw", }, + { "ble", "blew", }, + { "bra", "braw", }, + { "bsr", "bsrw", }, + { "bhib", "bhis", }, + { "blsb", "blss", }, + { "bccb", "bccs", }, + { "bcsb", "bcss", }, + { "bneb", "bnes", }, + { "beqb", "beqs", }, + { "bvcb", "bvcs", }, + { "bvsb", "bvss", }, + { "bplb", "bpls", }, + { "bmib", "bmis", }, + { "bgeb", "bges", }, + { "bltb", "blts", }, + { "bgtb", "bgts", }, + { "bleb", "bles", }, + { "brab", "bras", }, + { "bsrb", "bsrs", }, + { "bhs", "bccw" }, + { "bhss", "bccs" }, + { "bhsb", "bccs" }, + { "bhsw", "bccw" }, + { "bhsl", "bccl" }, + { "blo", "bcsw" }, + { "blos", "bcss" }, + { "blob", "bcss" }, + { "blow", "bcsw" }, + { "blol", "bcsl" }, + { "br", "braw", }, + { "brs", "bras", }, + { "brb", "bras", }, + { "brw", "braw", }, + { "brl", "bral", }, + { "jfnlt", "bcc", }, /* Apparently a sun alias. */ + { "jfngt", "ble", }, /* Apparently a sun alias. */ + { "jfeq", "beqs", }, /* Apparently a sun alias. */ + { "bchgb", "bchg", }, + { "bchgl", "bchg", }, + { "bclrb", "bclr", }, + { "bclrl", "bclr", }, + { "bsetb", "bset", }, + { "bsetl", "bset", }, + { "btstb", "btst", }, + { "btstl", "btst", }, + { "cas2", "cas2w", }, + { "cas", "casw", }, + { "chk2", "chk2w", }, + { "chk", "chkw", }, + { "clr", "clrw", }, + { "cmp2", "cmp2w", }, + { "cmpa", "cmpaw", }, + { "cmpi", "cmpiw", }, + { "cmpm", "cmpmw", }, + { "cmp", "cmpw", }, + { "dbccw", "dbcc", }, + { "dbcsw", "dbcs", }, + { "dbeqw", "dbeq", }, + { "dbfw", "dbf", }, + { "dbgew", "dbge", }, + { "dbgtw", "dbgt", }, + { "dbhiw", "dbhi", }, + { "dblew", "dble", }, + { "dblsw", "dbls", }, + { "dbltw", "dblt", }, + { "dbmiw", "dbmi", }, + { "dbnew", "dbne", }, + { "dbplw", "dbpl", }, + { "dbtw", "dbt", }, + { "dbvcw", "dbvc", }, + { "dbvsw", "dbvs", }, + { "dbhs", "dbcc", }, + { "dbhsw", "dbcc", }, + { "dbra", "dbf", }, + { "dbraw", "dbf", }, + { "tdivsl", "divsl", }, + { "divs", "divsw", }, + { "divu", "divuw", }, + { "ext", "extw", }, + { "extbw", "extw", }, + { "extwl", "extl", }, + { "fbneq", "fbne", }, + { "fbsneq", "fbsne", }, + { "fdbneq", "fdbne", }, + { "fdbsneq", "fdbsne", }, + { "fmovecr", "fmovecrx", }, + { "fmovm", "fmovem", }, + { "fsneq", "fsne", }, + { "fssneq", "fssne", }, + { "ftrapneq", "ftrapne", }, + { "ftrapsneq", "ftrapsne", }, + { "fjneq", "fjne", }, + { "fjsneq", "fjsne", }, + { "jmpl", "jmp", }, + { "jmps", "jmp", }, + { "jsrl", "jsr", }, + { "jsrs", "jsr", }, + { "leal", "lea", }, + { "lsl", "lslw", }, + { "lsr", "lsrw", }, + { "mac", "macw" }, + { "movea", "moveaw", }, + { "movem", "movemw", }, + { "movml", "moveml", }, + { "movmw", "movemw", }, + { "movm", "movemw", }, + { "movep", "movepw", }, + { "movpw", "movepw", }, + { "moves", "movesw" }, + { "muls", "mulsw", }, + { "mulu", "muluw", }, + { "msac", "msacw" }, + { "nbcdb", "nbcd" }, + { "neg", "negw", }, + { "negx", "negxw", }, + { "not", "notw", }, + { "peal", "pea", }, + { "rol", "rolw", }, + { "ror", "rorw", }, + { "roxl", "roxlw", }, + { "roxr", "roxrw", }, + { "sats", "satsl", }, + { "sbcdb", "sbcd", }, + { "sccb", "scc", }, + { "scsb", "scs", }, + { "seqb", "seq", }, + { "sfb", "sf", }, + { "sgeb", "sge", }, + { "sgtb", "sgt", }, + { "shib", "shi", }, + { "sleb", "sle", }, + { "slsb", "sls", }, + { "sltb", "slt", }, + { "smib", "smi", }, + { "sneb", "sne", }, + { "splb", "spl", }, + { "stb", "st", }, + { "svcb", "svc", }, + { "svsb", "svs", }, + { "sfge", "sge", }, + { "sfgt", "sgt", }, + { "sfle", "sle", }, + { "sflt", "slt", }, + { "sfneq", "sne", }, + { "suba", "subaw", }, + { "subi", "subiw", }, + { "subq", "subqw", }, + { "sub", "subw", }, + { "subx", "subxw", }, + { "swapw", "swap", }, + { "tasb", "tas", }, + { "tpcc", "trapcc", }, + { "tcc", "trapcc", }, + { "tst", "tstw", }, + { "jbra", "jra", }, + { "jbhi", "jhi", }, + { "jbls", "jls", }, + { "jbcc", "jcc", }, + { "jbcs", "jcs", }, + { "jbne", "jne", }, + { "jbeq", "jeq", }, + { "jbvc", "jvc", }, + { "jbvs", "jvs", }, + { "jbpl", "jpl", }, + { "jbmi", "jmi", }, + { "jbge", "jge", }, + { "jblt", "jlt", }, + { "jbgt", "jgt", }, + { "jble", "jle", }, + { "movql", "moveq", }, + { "moveql", "moveq", }, + { "movl", "movel", }, + { "movq", "moveq", }, + { "moval", "moveal", }, + { "movaw", "moveaw", }, + { "movb", "moveb", }, + { "movc", "movec", }, + { "movecl", "movec", }, + { "movpl", "movepl", }, + { "movw", "movew", }, + { "movsb", "movesb", }, + { "movsl", "movesl", }, + { "movsw", "movesw", }, + { "mov3q", "mov3ql", }, + + { "tdivul", "divul", }, /* For m68k-svr4. */ + { "fmovb", "fmoveb", }, + { "fsmovb", "fsmoveb", }, + { "fdmovb", "fdmoveb", }, + { "fmovd", "fmoved", }, + { "fsmovd", "fsmoved", }, + { "fmovl", "fmovel", }, + { "fsmovl", "fsmovel", }, + { "fdmovl", "fdmovel", }, + { "fmovp", "fmovep", }, + { "fsmovp", "fsmovep", }, + { "fdmovp", "fdmovep", }, + { "fmovs", "fmoves", }, + { "fsmovs", "fsmoves", }, + { "fdmovs", "fdmoves", }, + { "fmovw", "fmovew", }, + { "fsmovw", "fsmovew", }, + { "fdmovw", "fdmovew", }, + { "fmovx", "fmovex", }, + { "fsmovx", "fsmovex", }, + { "fdmovx", "fdmovex", }, + { "fmovcr", "fmovecr", }, + { "fmovcrx", "fmovecrx", }, + { "ftestb", "ftstb", }, + { "ftestd", "ftstd", }, + { "ftestl", "ftstl", }, + { "ftestp", "ftstp", }, + { "ftests", "ftsts", }, + { "ftestw", "ftstw", }, + { "ftestx", "ftstx", }, + + { "bitrevl", "bitrev", }, + { "byterevl", "byterev", }, + { "ff1l", "ff1", }, + +}; + +const int m68k_numaliases = + sizeof m68k_opcode_aliases / sizeof m68k_opcode_aliases[0]; +/* **** End of m68k-opc.c */ +/* **** floatformat.c from sourceware.org CVS 2005-08-14. */ +/* IEEE floating point support routines, for GDB, the GNU Debugger. + Copyright (C) 1991, 1994, 1999, 2000, 2003 Free Software Foundation, Inc. + +This file is part of GDB. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, see . */ + +/* This is needed to pick up the NAN macro on some systems. */ +//#define _GNU_SOURCE + +#ifndef INFINITY +#ifdef HUGE_VAL +#define INFINITY HUGE_VAL +#else +#define INFINITY (1.0 / 0.0) +#endif +#endif + +#ifndef NAN +#define NAN (0.0 / 0.0) +#endif + +static unsigned long get_field (const unsigned char *, + enum floatformat_byteorders, + unsigned int, + unsigned int, + unsigned int); +static int floatformat_always_valid (const struct floatformat *fmt, + const char *from); + +static int +floatformat_always_valid (const struct floatformat *fmt ATTRIBUTE_UNUSED, + const char *from ATTRIBUTE_UNUSED) +{ + return 1; +} + +/* The odds that CHAR_BIT will be anything but 8 are low enough that I'm not + going to bother with trying to muck around with whether it is defined in + a system header, what we do if not, etc. */ +#define FLOATFORMAT_CHAR_BIT 8 + +/* floatformats for IEEE single and double, big and little endian. */ +const struct floatformat floatformat_ieee_single_big = +{ + floatformat_big, 32, 0, 1, 8, 127, 255, 9, 23, + floatformat_intbit_no, + "floatformat_ieee_single_big", + floatformat_always_valid +}; +const struct floatformat floatformat_ieee_single_little = +{ + floatformat_little, 32, 0, 1, 8, 127, 255, 9, 23, + floatformat_intbit_no, + "floatformat_ieee_single_little", + floatformat_always_valid +}; +const struct floatformat floatformat_ieee_double_big = +{ + floatformat_big, 64, 0, 1, 11, 1023, 2047, 12, 52, + floatformat_intbit_no, + "floatformat_ieee_double_big", + floatformat_always_valid +}; +const struct floatformat floatformat_ieee_double_little = +{ + floatformat_little, 64, 0, 1, 11, 1023, 2047, 12, 52, + floatformat_intbit_no, + "floatformat_ieee_double_little", + floatformat_always_valid +}; + +/* floatformat for IEEE double, little endian byte order, with big endian word + ordering, as on the ARM. */ + +const struct floatformat floatformat_ieee_double_littlebyte_bigword = +{ + floatformat_littlebyte_bigword, 64, 0, 1, 11, 1023, 2047, 12, 52, + floatformat_intbit_no, + "floatformat_ieee_double_littlebyte_bigword", + floatformat_always_valid +}; + +static int floatformat_i387_ext_is_valid (const struct floatformat *fmt, const char *from); + +static int +floatformat_i387_ext_is_valid (const struct floatformat *fmt, const char *from) +{ + /* In the i387 double-extended format, if the exponent is all ones, + then the integer bit must be set. If the exponent is neither 0 + nor ~0, the intbit must also be set. Only if the exponent is + zero can it be zero, and then it must be zero. */ + unsigned long exponent, int_bit; + const unsigned char *ufrom = (const unsigned char *) from; + + exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize, + fmt->exp_start, fmt->exp_len); + int_bit = get_field (ufrom, fmt->byteorder, fmt->totalsize, + fmt->man_start, 1); + + if ((exponent == 0) != (int_bit == 0)) + return 0; + else + return 1; +} + +const struct floatformat floatformat_i387_ext = +{ + floatformat_little, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64, + floatformat_intbit_yes, + "floatformat_i387_ext", + floatformat_i387_ext_is_valid +}; +const struct floatformat floatformat_m68881_ext = +{ + /* Note that the bits from 16 to 31 are unused. */ + floatformat_big, 96, 0, 1, 15, 0x3fff, 0x7fff, 32, 64, + floatformat_intbit_yes, + "floatformat_m68881_ext", + floatformat_always_valid +}; +const struct floatformat floatformat_i960_ext = +{ + /* Note that the bits from 0 to 15 are unused. */ + floatformat_little, 96, 16, 17, 15, 0x3fff, 0x7fff, 32, 64, + floatformat_intbit_yes, + "floatformat_i960_ext", + floatformat_always_valid +}; +const struct floatformat floatformat_m88110_ext = +{ + floatformat_big, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64, + floatformat_intbit_yes, + "floatformat_m88110_ext", + floatformat_always_valid +}; +const struct floatformat floatformat_m88110_harris_ext = +{ + /* Harris uses raw format 128 bytes long, but the number is just an ieee + double, and the last 64 bits are wasted. */ + floatformat_big,128, 0, 1, 11, 0x3ff, 0x7ff, 12, 52, + floatformat_intbit_no, + "floatformat_m88110_ext_harris", + floatformat_always_valid +}; +const struct floatformat floatformat_arm_ext_big = +{ + /* Bits 1 to 16 are unused. */ + floatformat_big, 96, 0, 17, 15, 0x3fff, 0x7fff, 32, 64, + floatformat_intbit_yes, + "floatformat_arm_ext_big", + floatformat_always_valid +}; +const struct floatformat floatformat_arm_ext_littlebyte_bigword = +{ + /* Bits 1 to 16 are unused. */ + floatformat_littlebyte_bigword, 96, 0, 17, 15, 0x3fff, 0x7fff, 32, 64, + floatformat_intbit_yes, + "floatformat_arm_ext_littlebyte_bigword", + floatformat_always_valid +}; +const struct floatformat floatformat_ia64_spill_big = +{ + floatformat_big, 128, 0, 1, 17, 65535, 0x1ffff, 18, 64, + floatformat_intbit_yes, + "floatformat_ia64_spill_big", + floatformat_always_valid +}; +const struct floatformat floatformat_ia64_spill_little = +{ + floatformat_little, 128, 0, 1, 17, 65535, 0x1ffff, 18, 64, + floatformat_intbit_yes, + "floatformat_ia64_spill_little", + floatformat_always_valid +}; +const struct floatformat floatformat_ia64_quad_big = +{ + floatformat_big, 128, 0, 1, 15, 16383, 0x7fff, 16, 112, + floatformat_intbit_no, + "floatformat_ia64_quad_big", + floatformat_always_valid +}; +const struct floatformat floatformat_ia64_quad_little = +{ + floatformat_little, 128, 0, 1, 15, 16383, 0x7fff, 16, 112, + floatformat_intbit_no, + "floatformat_ia64_quad_little", + floatformat_always_valid +}; + +/* Extract a field which starts at START and is LEN bits long. DATA and + TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */ +static unsigned long +get_field (const unsigned char *data, enum floatformat_byteorders order, + unsigned int total_len, unsigned int start, unsigned int len) +{ + unsigned long result; + unsigned int cur_byte; + int cur_bitshift; + + /* Start at the least significant part of the field. */ + cur_byte = (start + len) / FLOATFORMAT_CHAR_BIT; + if (order == floatformat_little) + cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - cur_byte - 1; + cur_bitshift = + ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT; + result = *(data + cur_byte) >> (-cur_bitshift); + cur_bitshift += FLOATFORMAT_CHAR_BIT; + if (order == floatformat_little) + ++cur_byte; + else + --cur_byte; + + /* Move towards the most significant part of the field. */ + while ((unsigned int) cur_bitshift < len) + { + if (len - cur_bitshift < FLOATFORMAT_CHAR_BIT) + /* This is the last byte; zero out the bits which are not part of + this field. */ + result |= + (*(data + cur_byte) & ((1 << (len - cur_bitshift)) - 1)) + << cur_bitshift; + else + result |= *(data + cur_byte) << cur_bitshift; + cur_bitshift += FLOATFORMAT_CHAR_BIT; + if (order == floatformat_little) + ++cur_byte; + else + --cur_byte; + } + return result; +} + +#ifndef min +#define min(a, b) ((a) < (b) ? (a) : (b)) +#endif + +/* Convert from FMT to a double. + FROM is the address of the extended float. + Store the double in *TO. */ + +void +floatformat_to_double (const struct floatformat *fmt, + const char *from, double *to) +{ + const unsigned char *ufrom = (const unsigned char *)from; + double dto; + long exponent; + unsigned long mant; + unsigned int mant_bits, mant_off; + int mant_bits_left; + int special_exponent; /* It's a NaN, denorm or zero */ + + exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize, + fmt->exp_start, fmt->exp_len); + + /* If the exponent indicates a NaN, we don't have information to + decide what to do. So we handle it like IEEE, except that we + don't try to preserve the type of NaN. FIXME. */ + if ((unsigned long) exponent == fmt->exp_nan) + { + int nan; + + mant_off = fmt->man_start; + mant_bits_left = fmt->man_len; + nan = 0; + while (mant_bits_left > 0) + { + mant_bits = min (mant_bits_left, 32); + + if (get_field (ufrom, fmt->byteorder, fmt->totalsize, + mant_off, mant_bits) != 0) + { + /* This is a NaN. */ + nan = 1; + break; + } + + mant_off += mant_bits; + mant_bits_left -= mant_bits; + } + + /* On certain systems (such as GNU/Linux), the use of the + INFINITY macro below may generate a warning that can not be + silenced due to a bug in GCC (PR preprocessor/11931). The + preprocessor fails to recognise the __extension__ keyword in + conjunction with the GNU/C99 extension for hexadecimal + floating point constants and will issue a warning when + compiling with -pedantic. */ + if (nan) + dto = NAN; + else + dto = INFINITY; + + if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1)) + dto = -dto; + + *to = dto; + + return; + } + + mant_bits_left = fmt->man_len; + mant_off = fmt->man_start; + dto = 0.0; + + special_exponent = exponent == 0 || (unsigned long) exponent == fmt->exp_nan; + + /* Don't bias zero's, denorms or NaNs. */ + if (!special_exponent) + exponent -= fmt->exp_bias; + + /* Build the result algebraically. Might go infinite, underflow, etc; + who cares. */ + + /* If this format uses a hidden bit, explicitly add it in now. Otherwise, + increment the exponent by one to account for the integer bit. */ + + if (!special_exponent) + { + if (fmt->intbit == floatformat_intbit_no) + dto = ldexp (1.0, exponent); + else + exponent++; + } + + while (mant_bits_left > 0) + { + mant_bits = min (mant_bits_left, 32); + + mant = get_field (ufrom, fmt->byteorder, fmt->totalsize, + mant_off, mant_bits); + + /* Handle denormalized numbers. FIXME: What should we do for + non-IEEE formats? */ + if (exponent == 0 && mant != 0) + dto += ldexp ((double)mant, + (- fmt->exp_bias + - mant_bits + - (mant_off - fmt->man_start) + + 1)); + else + dto += ldexp ((double)mant, exponent - mant_bits); + if (exponent != 0) + exponent -= mant_bits; + mant_off += mant_bits; + mant_bits_left -= mant_bits; + } + + /* Negate it if negative. */ + if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1)) + dto = -dto; + *to = dto; +} + +static void put_field (unsigned char *, enum floatformat_byteorders, + unsigned int, + unsigned int, + unsigned int, + unsigned long); + +/* Set a field which starts at START and is LEN bits long. DATA and + TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */ +static void +put_field (unsigned char *data, enum floatformat_byteorders order, + unsigned int total_len, unsigned int start, unsigned int len, + unsigned long stuff_to_put) +{ + unsigned int cur_byte; + int cur_bitshift; + + /* Start at the least significant part of the field. */ + cur_byte = (start + len) / FLOATFORMAT_CHAR_BIT; + if (order == floatformat_little) + cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - cur_byte - 1; + cur_bitshift = + ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT; + *(data + cur_byte) &= + ~(((1 << ((start + len) % FLOATFORMAT_CHAR_BIT)) - 1) << (-cur_bitshift)); + *(data + cur_byte) |= + (stuff_to_put & ((1 << FLOATFORMAT_CHAR_BIT) - 1)) << (-cur_bitshift); + cur_bitshift += FLOATFORMAT_CHAR_BIT; + if (order == floatformat_little) + ++cur_byte; + else + --cur_byte; + + /* Move towards the most significant part of the field. */ + while ((unsigned int) cur_bitshift < len) + { + if (len - cur_bitshift < FLOATFORMAT_CHAR_BIT) + { + /* This is the last byte. */ + *(data + cur_byte) &= + ~((1 << (len - cur_bitshift)) - 1); + *(data + cur_byte) |= (stuff_to_put >> cur_bitshift); + } + else + *(data + cur_byte) = ((stuff_to_put >> cur_bitshift) + & ((1 << FLOATFORMAT_CHAR_BIT) - 1)); + cur_bitshift += FLOATFORMAT_CHAR_BIT; + if (order == floatformat_little) + ++cur_byte; + else + --cur_byte; + } +} + +/* The converse: convert the double *FROM to an extended float + and store where TO points. Neither FROM nor TO have any alignment + restrictions. */ + +void +floatformat_from_double (const struct floatformat *fmt, + const double *from, char *to) +{ + double dfrom; + int exponent; + double mant; + unsigned int mant_bits, mant_off; + int mant_bits_left; + unsigned char *uto = (unsigned char *)to; + + dfrom = *from; + memset (uto, 0, fmt->totalsize / FLOATFORMAT_CHAR_BIT); + + /* If negative, set the sign bit. */ + if (dfrom < 0) + { + put_field (uto, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1, 1); + dfrom = -dfrom; + } + + if (dfrom == 0) + { + /* 0.0. */ + return; + } + + if (dfrom != dfrom) + { + /* NaN. */ + put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, + fmt->exp_len, fmt->exp_nan); + /* Be sure it's not infinity, but NaN value is irrelevant. */ + put_field (uto, fmt->byteorder, fmt->totalsize, fmt->man_start, + 32, 1); + return; + } + + if (dfrom + dfrom == dfrom) + { + /* This can only happen for an infinite value (or zero, which we + already handled above). */ + put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, + fmt->exp_len, fmt->exp_nan); + return; + } + + mant = frexp (dfrom, &exponent); + if (exponent + fmt->exp_bias - 1 > 0) + put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, + fmt->exp_len, exponent + fmt->exp_bias - 1); + else + { + /* Handle a denormalized number. FIXME: What should we do for + non-IEEE formats? */ + put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, + fmt->exp_len, 0); + mant = ldexp (mant, exponent + fmt->exp_bias - 1); + } + + mant_bits_left = fmt->man_len; + mant_off = fmt->man_start; + while (mant_bits_left > 0) + { + unsigned long mant_long; + mant_bits = mant_bits_left < 32 ? mant_bits_left : 32; + + mant *= 4294967296.0; + mant_long = (unsigned long)mant; + mant -= mant_long; + + /* If the integer bit is implicit, and we are not creating a + denormalized number, then we need to discard it. */ + if ((unsigned int) mant_bits_left == fmt->man_len + && fmt->intbit == floatformat_intbit_no + && exponent + fmt->exp_bias - 1 > 0) + { + mant_long &= 0x7fffffff; + mant_bits -= 1; + } + else if (mant_bits < 32) + { + /* The bits we want are in the most significant MANT_BITS bits of + mant_long. Move them to the least significant. */ + mant_long >>= 32 - mant_bits; + } + + put_field (uto, fmt->byteorder, fmt->totalsize, + mant_off, mant_bits, mant_long); + mant_off += mant_bits; + mant_bits_left -= mant_bits; + } +} + +/* Return non-zero iff the data at FROM is a valid number in format FMT. */ + +int +floatformat_is_valid (const struct floatformat *fmt, const char *from) +{ + return fmt->is_valid (fmt, from); +} + + +#ifdef IEEE_DEBUG + +/* This is to be run on a host which uses IEEE floating point. */ + +void +ieee_test (double n) +{ + double result; + + floatformat_to_double (&floatformat_ieee_double_little, (char *) &n, + &result); + if ((n != result && (! isnan (n) || ! isnan (result))) + || (n < 0 && result >= 0) + || (n >= 0 && result < 0)) + printf ("Differ(to): %.20g -> %.20g\n", n, result); + + floatformat_from_double (&floatformat_ieee_double_little, &n, + (char *) &result); + if ((n != result && (! isnan (n) || ! isnan (result))) + || (n < 0 && result >= 0) + || (n >= 0 && result < 0)) + printf ("Differ(from): %.20g -> %.20g\n", n, result); + +#if 0 + { + char exten[16]; + + floatformat_from_double (&floatformat_m68881_ext, &n, exten); + floatformat_to_double (&floatformat_m68881_ext, exten, &result); + if (n != result) + printf ("Differ(to+from): %.20g -> %.20g\n", n, result); + } +#endif + +#if IEEE_DEBUG > 1 + /* This is to be run on a host which uses 68881 format. */ + { + long double ex = *(long double *)exten; + if (ex != n) + printf ("Differ(from vs. extended): %.20g\n", n); + } +#endif +} + +int +main (void) +{ + ieee_test (0.0); + ieee_test (0.5); + ieee_test (256.0); + ieee_test (0.12345); + ieee_test (234235.78907234); + ieee_test (-512.0); + ieee_test (-0.004321); + ieee_test (1.2E-70); + ieee_test (1.2E-316); + ieee_test (4.9406564584124654E-324); + ieee_test (- 4.9406564584124654E-324); + ieee_test (- 0.0); + ieee_test (- INFINITY); + ieee_test (- NAN); + ieee_test (INFINITY); + ieee_test (NAN); + return 0; +} +#endif +/* **** End of floatformat.c */ diff --git a/qemu/qemu-git/m68k.ld b/qemu/qemu-git/m68k.ld new file mode 100644 index 0000000..0e3d9de --- /dev/null +++ b/qemu/qemu-git/m68k.ld @@ -0,0 +1,175 @@ +/* Script for -z combreloc: combine and sort reloc sections */ +OUTPUT_FORMAT("elf32-m68k", "elf32-m68k", + "elf32-m68k") +OUTPUT_ARCH(m68k) +ENTRY(_start) +/* __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.dyn : + { + *(.rel.init) + *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) + *(.rel.fini) + *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) + *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) + *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) + *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) + *(.rel.ctors) + *(.rel.dtors) + *(.rel.got) + *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) + } + .rela.dyn : + { + *(.rela.init) + *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) + *(.rela.fini) + *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) + *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) + *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) + *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) + *(.rela.ctors) + *(.rela.dtors) + *(.rela.got) + *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) + } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : + { + KEEP (*(.init)) + } =0x4e754e75 + .plt : { *(.plt) } + .text : + { + *(.text .stub .text.* .gnu.linkonce.t.*) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + } =0x4e754e75 + .fini : + { + KEEP (*(.fini)) + } =0x4e754e75 + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(0x2000) + (. & (0x2000 - 1)); + /* Ensure the __preinit_array_start label is properly aligned. We + could instead move the label definition inside the section, but + the linker would then create the section even if it turns out to + be empty, which isn't pretty. */ + . = ALIGN(32 / 8); + PROVIDE (__preinit_array_start = .); + .preinit_array : { *(.preinit_array) } + PROVIDE (__preinit_array_end = .); + PROVIDE (__init_array_start = .); + .init_array : { *(.init_array) } + PROVIDE (__init_array_end = .); + PROVIDE (__fini_array_start = .); + .fini_array : { *(.fini_array) } + PROVIDE (__fini_array_end = .); + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .eh_frame : { KEEP (*(.eh_frame)) } + .gcc_except_table : { *(.gcc_except_table) } + .dynamic : { *(.dynamic) } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .got : { *(.got.plt) *(.got) } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .bss : + { + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. */ + . = ALIGN(32 / 8); + } + . = ALIGN(32 / 8); + _end = .; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/qemu/qemu-git/microblaze-dis.c b/qemu/qemu-git/microblaze-dis.c new file mode 100644 index 0000000..aa68f16 --- /dev/null +++ b/qemu/qemu-git/microblaze-dis.c @@ -0,0 +1,1102 @@ +/* Disassemble Xilinx microblaze instructions. + Copyright (C) 1993, 1999, 2000 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* + * Copyright (c) 2001 Xilinx, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by Xilinx, Inc. The name of the Company may not be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Xilinx, Inc. + */ + + +#include +#define STATIC_TABLE +#define DEFINE_TABLE + +#define TRUE 1 +#define FALSE 0 + +#ifndef MICROBLAZE_OPC +#define MICROBLAZE_OPC +/* Assembler instructions for Xilinx's microblaze processor + Copyright (C) 1999, 2000 Free Software Foundation, Inc. + + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* + * Copyright (c) 2001 Xilinx, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by Xilinx, Inc. The name of the Company may not be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Xilinx, Inc. + */ + + +#ifndef MICROBLAZE_OPCM +#define MICROBLAZE_OPCM + +/* + * Copyright (c) 2001 Xilinx, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by Xilinx, Inc. The name of the Company may not be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Xilinx, Inc. + * $Header: + */ + +enum microblaze_instr { + add, rsub, addc, rsubc, addk, rsubk, addkc, rsubkc, cmp, cmpu, + addi, rsubi, addic, rsubic, addik, rsubik, addikc, rsubikc, mul, mulh, mulhu, mulhsu, + idiv, idivu, bsll, bsra, bsrl, get, put, nget, nput, cget, cput, + ncget, ncput, muli, bslli, bsrai, bsrli, mului, or, and, xor, + andn, pcmpbf, pcmpbc, pcmpeq, pcmpne, sra, src, srl, sext8, sext16, wic, wdc, wdcclear, wdcflush, mts, mfs, br, brd, + brld, bra, brad, brald, microblaze_brk, beq, beqd, bne, bned, blt, + bltd, ble, bled, bgt, bgtd, bge, bged, ori, andi, xori, andni, + imm, rtsd, rtid, rtbd, rted, bri, brid, brlid, brai, braid, bralid, + brki, beqi, beqid, bnei, bneid, blti, bltid, blei, bleid, bgti, + bgtid, bgei, bgeid, lbu, lhu, lw, lwx, sb, sh, sw, swx, lbui, lhui, lwi, + sbi, shi, swi, msrset, msrclr, tuqula, fadd, frsub, fmul, fdiv, + fcmp_lt, fcmp_eq, fcmp_le, fcmp_gt, fcmp_ne, fcmp_ge, fcmp_un, flt, fint, fsqrt, + tget, tcget, tnget, tncget, tput, tcput, tnput, tncput, + eget, ecget, neget, necget, eput, ecput, neput, necput, + teget, tecget, tneget, tnecget, teput, tecput, tneput, tnecput, + aget, caget, naget, ncaget, aput, caput, naput, ncaput, + taget, tcaget, tnaget, tncaget, taput, tcaput, tnaput, tncaput, + eaget, ecaget, neaget, necaget, eaput, ecaput, neaput, necaput, + teaget, tecaget, tneaget, tnecaget, teaput, tecaput, tneaput, tnecaput, + getd, tgetd, cgetd, tcgetd, ngetd, tngetd, ncgetd, tncgetd, + putd, tputd, cputd, tcputd, nputd, tnputd, ncputd, tncputd, + egetd, tegetd, ecgetd, tecgetd, negetd, tnegetd, necgetd, tnecgetd, + eputd, teputd, ecputd, tecputd, neputd, tneputd, necputd, tnecputd, + agetd, tagetd, cagetd, tcagetd, nagetd, tnagetd, ncagetd, tncagetd, + aputd, taputd, caputd, tcaputd, naputd, tnaputd, ncaputd, tncaputd, + eagetd, teagetd, ecagetd, tecagetd, neagetd, tneagetd, necagetd, tnecagetd, + eaputd, teaputd, ecaputd, tecaputd, neaputd, tneaputd, necaputd, tnecaputd, + invalid_inst } ; + +enum microblaze_instr_type { + arithmetic_inst, logical_inst, mult_inst, div_inst, branch_inst, + return_inst, immediate_inst, special_inst, memory_load_inst, + memory_store_inst, barrel_shift_inst, anyware_inst }; + +#define INST_WORD_SIZE 4 + +/* gen purpose regs go from 0 to 31 */ +/* mask is reg num - max_reg_num, ie reg_num - 32 in this case */ + +#define REG_PC_MASK 0x8000 +#define REG_MSR_MASK 0x8001 +#define REG_EAR_MASK 0x8003 +#define REG_ESR_MASK 0x8005 +#define REG_FSR_MASK 0x8007 +#define REG_BTR_MASK 0x800b +#define REG_EDR_MASK 0x800d +#define REG_PVR_MASK 0xa000 + +#define REG_PID_MASK 0x9000 +#define REG_ZPR_MASK 0x9001 +#define REG_TLBX_MASK 0x9002 +#define REG_TLBLO_MASK 0x9003 +#define REG_TLBHI_MASK 0x9004 +#define REG_TLBSX_MASK 0x9005 + +#define MIN_REGNUM 0 +#define MAX_REGNUM 31 + +#define MIN_PVR_REGNUM 0 +#define MAX_PVR_REGNUM 15 + +#define REG_PC 32 /* PC */ +#define REG_MSR 33 /* machine status reg */ +#define REG_EAR 35 /* Exception reg */ +#define REG_ESR 37 /* Exception reg */ +#define REG_FSR 39 /* FPU Status reg */ +#define REG_BTR 43 /* Branch Target reg */ +#define REG_EDR 45 /* Exception reg */ +#define REG_PVR 40960 /* Program Verification reg */ + +#define REG_PID 36864 /* MMU: Process ID reg */ +#define REG_ZPR 36865 /* MMU: Zone Protect reg */ +#define REG_TLBX 36866 /* MMU: TLB Index reg */ +#define REG_TLBLO 36867 /* MMU: TLB Low reg */ +#define REG_TLBHI 36868 /* MMU: TLB High reg */ +#define REG_TLBSX 36869 /* MMU: TLB Search Index reg */ + +/* alternate names for gen purpose regs */ +#define REG_SP 1 /* stack pointer */ +#define REG_ROSDP 2 /* read-only small data pointer */ +#define REG_RWSDP 13 /* read-write small data pointer */ + +/* Assembler Register - Used in Delay Slot Optimization */ +#define REG_AS 18 +#define REG_ZERO 0 + +#define RD_LOW 21 /* low bit for RD */ +#define RA_LOW 16 /* low bit for RA */ +#define RB_LOW 11 /* low bit for RB */ +#define IMM_LOW 0 /* low bit for immediate */ + +#define RD_MASK 0x03E00000 +#define RA_MASK 0x001F0000 +#define RB_MASK 0x0000F800 +#define IMM_MASK 0x0000FFFF + +// imm mask for barrel shifts +#define IMM5_MASK 0x0000001F + + +// FSL imm mask for get, put instructions +#define RFSL_MASK 0x000000F + +// imm mask for msrset, msrclr instructions +#define IMM15_MASK 0x00007FFF + +#endif /* MICROBLAZE-OPCM */ + +#define INST_TYPE_RD_R1_R2 0 +#define INST_TYPE_RD_R1_IMM 1 +#define INST_TYPE_RD_R1_UNSIGNED_IMM 2 +#define INST_TYPE_RD_R1 3 +#define INST_TYPE_RD_R2 4 +#define INST_TYPE_RD_IMM 5 +#define INST_TYPE_R2 6 +#define INST_TYPE_R1_R2 7 +#define INST_TYPE_R1_IMM 8 +#define INST_TYPE_IMM 9 +#define INST_TYPE_SPECIAL_R1 10 +#define INST_TYPE_RD_SPECIAL 11 +#define INST_TYPE_R1 12 + // new instn type for barrel shift imms +#define INST_TYPE_RD_R1_IMM5 13 +#define INST_TYPE_RD_RFSL 14 +#define INST_TYPE_R1_RFSL 15 + + // new insn type for insn cache +#define INST_TYPE_RD_R1_SPECIAL 16 + +// new insn type for msrclr, msrset insns. +#define INST_TYPE_RD_IMM15 17 + +// new insn type for tuqula rd - addik rd, r0, 42 +#define INST_TYPE_RD 18 + +// new insn type for t*put +#define INST_TYPE_RFSL 19 + +#define INST_TYPE_NONE 25 + + + +#define INST_PC_OFFSET 1 /* instructions where the label address is resolved as a PC offset (for branch label)*/ +#define INST_NO_OFFSET 0 /* instructions where the label address is resolved as an absolute value (for data mem or abs address)*/ + +#define IMMVAL_MASK_NON_SPECIAL 0x0000 +#define IMMVAL_MASK_MTS 0x4000 +#define IMMVAL_MASK_MFS 0x0000 + +#define OPCODE_MASK_H 0xFC000000 /* High 6 bits only */ +#define OPCODE_MASK_H1 0xFFE00000 /* High 11 bits */ +#define OPCODE_MASK_H2 0xFC1F0000 /* High 6 and bits 20-16 */ +#define OPCODE_MASK_H12 0xFFFF0000 /* High 16 */ +#define OPCODE_MASK_H4 0xFC0007FF /* High 6 and low 11 bits */ +#define OPCODE_MASK_H13S 0xFFE0EFF0 /* High 11 and 15:1 bits and last nibble of last byte for spr */ +#define OPCODE_MASK_H23S 0xFC1FC000 /* High 6, 20-16 and 15:1 bits and last nibble of last byte for spr */ +#define OPCODE_MASK_H34 0xFC00FFFF /* High 6 and low 16 bits */ +#define OPCODE_MASK_H14 0xFFE007FF /* High 11 and low 11 bits */ +#define OPCODE_MASK_H24 0xFC1F07FF /* High 6, bits 20-16 and low 11 bits */ +#define OPCODE_MASK_H124 0xFFFF07FF /* High 16, and low 11 bits */ +#define OPCODE_MASK_H1234 0xFFFFFFFF /* All 32 bits */ +#define OPCODE_MASK_H3 0xFC000600 /* High 6 bits and bits 21, 22 */ +#define OPCODE_MASK_H32 0xFC00FC00 /* High 6 bits and bit 16-21 */ +#define OPCODE_MASK_H34B 0xFC0000FF /* High 6 bits and low 8 bits */ +#define OPCODE_MASK_H34C 0xFC0007E0 /* High 6 bits and bits 21-26 */ + +// New Mask for msrset, msrclr insns. +#define OPCODE_MASK_H23N 0xFC1F8000 /* High 6 and bits 11 - 16 */ + +#define DELAY_SLOT 1 +#define NO_DELAY_SLOT 0 + +#define MAX_OPCODES 280 + +struct op_code_struct { + const char *name; + short inst_type; /* registers and immediate values involved */ + short inst_offset_type; /* immediate vals offset from PC? (= 1 for branches) */ + short delay_slots; /* info about delay slots needed after this instr. */ + short immval_mask; + unsigned long bit_sequence; /* all the fixed bits for the op are set and all the variable bits (reg names, imm vals) are set to 0 */ + unsigned long opcode_mask; /* which bits define the opcode */ + enum microblaze_instr instr; + enum microblaze_instr_type instr_type; + /* more info about output format here */ +} opcodes[MAX_OPCODES] = + +{ + {"add", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x00000000, OPCODE_MASK_H4, add, arithmetic_inst }, + {"rsub", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x04000000, OPCODE_MASK_H4, rsub, arithmetic_inst }, + {"addc", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x08000000, OPCODE_MASK_H4, addc, arithmetic_inst }, + {"rsubc", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x0C000000, OPCODE_MASK_H4, rsubc, arithmetic_inst }, + {"addk", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x10000000, OPCODE_MASK_H4, addk, arithmetic_inst }, + {"rsubk", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x14000000, OPCODE_MASK_H4, rsubk, arithmetic_inst }, + {"cmp", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x14000001, OPCODE_MASK_H4, cmp, arithmetic_inst }, + {"cmpu", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x14000003, OPCODE_MASK_H4, cmpu, arithmetic_inst }, + {"addkc", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x18000000, OPCODE_MASK_H4, addkc, arithmetic_inst }, + {"rsubkc",INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x1C000000, OPCODE_MASK_H4, rsubkc, arithmetic_inst }, + {"addi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x20000000, OPCODE_MASK_H, addi, arithmetic_inst }, + {"rsubi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x24000000, OPCODE_MASK_H, rsubi, arithmetic_inst }, + {"addic", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x28000000, OPCODE_MASK_H, addic, arithmetic_inst }, + {"rsubic",INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x2C000000, OPCODE_MASK_H, rsubic, arithmetic_inst }, + {"addik", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x30000000, OPCODE_MASK_H, addik, arithmetic_inst }, + {"rsubik",INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x34000000, OPCODE_MASK_H, rsubik, arithmetic_inst }, + {"addikc",INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x38000000, OPCODE_MASK_H, addikc, arithmetic_inst }, + {"rsubikc",INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x3C000000, OPCODE_MASK_H, rsubikc, arithmetic_inst }, + {"mul", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x40000000, OPCODE_MASK_H4, mul, mult_inst }, + {"mulh", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x40000001, OPCODE_MASK_H4, mulh, mult_inst }, + {"mulhu", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x40000003, OPCODE_MASK_H4, mulhu, mult_inst }, + {"mulhsu",INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x40000002, OPCODE_MASK_H4, mulhsu, mult_inst }, + {"idiv", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x48000000, OPCODE_MASK_H4, idiv, div_inst }, + {"idivu", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x48000002, OPCODE_MASK_H4, idivu, div_inst }, + {"bsll", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x44000400, OPCODE_MASK_H3, bsll, barrel_shift_inst }, + {"bsra", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x44000200, OPCODE_MASK_H3, bsra, barrel_shift_inst }, + {"bsrl", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x44000000, OPCODE_MASK_H3, bsrl, barrel_shift_inst }, + {"get", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C000000, OPCODE_MASK_H32, get, anyware_inst }, + {"put", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C008000, OPCODE_MASK_H32, put, anyware_inst }, + {"nget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C004000, OPCODE_MASK_H32, nget, anyware_inst }, + {"nput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00C000, OPCODE_MASK_H32, nput, anyware_inst }, + {"cget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C002000, OPCODE_MASK_H32, cget, anyware_inst }, + {"cput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00A000, OPCODE_MASK_H32, cput, anyware_inst }, + {"ncget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C006000, OPCODE_MASK_H32, ncget, anyware_inst }, + {"ncput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00E000, OPCODE_MASK_H32, ncput, anyware_inst }, + {"muli", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x60000000, OPCODE_MASK_H, muli, mult_inst }, + {"bslli", INST_TYPE_RD_R1_IMM5, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x64000400, OPCODE_MASK_H3, bslli, barrel_shift_inst }, + {"bsrai", INST_TYPE_RD_R1_IMM5, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x64000200, OPCODE_MASK_H3, bsrai, barrel_shift_inst }, + {"bsrli", INST_TYPE_RD_R1_IMM5, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x64000000, OPCODE_MASK_H3, bsrli, barrel_shift_inst }, + {"or", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x80000000, OPCODE_MASK_H4, or, logical_inst }, + {"and", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x84000000, OPCODE_MASK_H4, and, logical_inst }, + {"xor", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x88000000, OPCODE_MASK_H4, xor, logical_inst }, + {"andn", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x8C000000, OPCODE_MASK_H4, andn, logical_inst }, + {"pcmpbf",INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x80000400, OPCODE_MASK_H4, pcmpbf, logical_inst }, + {"pcmpbc",INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x84000400, OPCODE_MASK_H4, pcmpbc, logical_inst }, + {"pcmpeq",INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x88000400, OPCODE_MASK_H4, pcmpeq, logical_inst }, + {"pcmpne",INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x8C000400, OPCODE_MASK_H4, pcmpne, logical_inst }, + {"sra", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000001, OPCODE_MASK_H34, sra, logical_inst }, + {"src", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000021, OPCODE_MASK_H34, src, logical_inst }, + {"srl", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000041, OPCODE_MASK_H34, srl, logical_inst }, + {"sext8", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000060, OPCODE_MASK_H34, sext8, logical_inst }, + {"sext16",INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000061, OPCODE_MASK_H34, sext16, logical_inst }, + {"wic", INST_TYPE_RD_R1_SPECIAL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000068, OPCODE_MASK_H34B, wic, special_inst }, + {"wdc", INST_TYPE_RD_R1_SPECIAL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000064, OPCODE_MASK_H34B, wdc, special_inst }, + {"wdc.clear", INST_TYPE_RD_R1_SPECIAL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000066, OPCODE_MASK_H34B, wdcclear, special_inst }, + {"wdc.flush", INST_TYPE_RD_R1_SPECIAL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x90000074, OPCODE_MASK_H34B, wdcflush, special_inst }, + {"mts", INST_TYPE_SPECIAL_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_MTS, 0x9400C000, OPCODE_MASK_H13S, mts, special_inst }, + {"mfs", INST_TYPE_RD_SPECIAL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_MFS, 0x94008000, OPCODE_MASK_H23S, mfs, special_inst }, + {"br", INST_TYPE_R2, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x98000000, OPCODE_MASK_H124, br, branch_inst }, + {"brd", INST_TYPE_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x98100000, OPCODE_MASK_H124, brd, branch_inst }, + {"brld", INST_TYPE_RD_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x98140000, OPCODE_MASK_H24, brld, branch_inst }, + {"bra", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x98080000, OPCODE_MASK_H124, bra, branch_inst }, + {"brad", INST_TYPE_R2, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x98180000, OPCODE_MASK_H124, brad, branch_inst }, + {"brald", INST_TYPE_RD_R2, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x981C0000, OPCODE_MASK_H24, brald, branch_inst }, + {"brk", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x980C0000, OPCODE_MASK_H24, microblaze_brk, branch_inst }, + {"beq", INST_TYPE_R1_R2, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9C000000, OPCODE_MASK_H14, beq, branch_inst }, + {"beqd", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9E000000, OPCODE_MASK_H14, beqd, branch_inst }, + {"bne", INST_TYPE_R1_R2, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9C200000, OPCODE_MASK_H14, bne, branch_inst }, + {"bned", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9E200000, OPCODE_MASK_H14, bned, branch_inst }, + {"blt", INST_TYPE_R1_R2, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9C400000, OPCODE_MASK_H14, blt, branch_inst }, + {"bltd", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9E400000, OPCODE_MASK_H14, bltd, branch_inst }, + {"ble", INST_TYPE_R1_R2, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9C600000, OPCODE_MASK_H14, ble, branch_inst }, + {"bled", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9E600000, OPCODE_MASK_H14, bled, branch_inst }, + {"bgt", INST_TYPE_R1_R2, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9C800000, OPCODE_MASK_H14, bgt, branch_inst }, + {"bgtd", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9E800000, OPCODE_MASK_H14, bgtd, branch_inst }, + {"bge", INST_TYPE_R1_R2, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9CA00000, OPCODE_MASK_H14, bge, branch_inst }, + {"bged", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9EA00000, OPCODE_MASK_H14, bged, branch_inst }, + {"ori", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xA0000000, OPCODE_MASK_H, ori, logical_inst }, + {"andi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xA4000000, OPCODE_MASK_H, andi, logical_inst }, + {"xori", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xA8000000, OPCODE_MASK_H, xori, logical_inst }, + {"andni", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xAC000000, OPCODE_MASK_H, andni, logical_inst }, + {"imm", INST_TYPE_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB0000000, OPCODE_MASK_H12, imm, immediate_inst }, + {"rtsd", INST_TYPE_R1_IMM, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB6000000, OPCODE_MASK_H1, rtsd, return_inst }, + {"rtid", INST_TYPE_R1_IMM, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB6200000, OPCODE_MASK_H1, rtid, return_inst }, + {"rtbd", INST_TYPE_R1_IMM, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB6400000, OPCODE_MASK_H1, rtbd, return_inst }, + {"rted", INST_TYPE_R1_IMM, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB6800000, OPCODE_MASK_H1, rted, return_inst }, + {"bri", INST_TYPE_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8000000, OPCODE_MASK_H12, bri, branch_inst }, + {"brid", INST_TYPE_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8100000, OPCODE_MASK_H12, brid, branch_inst }, + {"brlid", INST_TYPE_RD_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8140000, OPCODE_MASK_H2, brlid, branch_inst }, + {"brai", INST_TYPE_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8080000, OPCODE_MASK_H12, brai, branch_inst }, + {"braid", INST_TYPE_IMM, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8180000, OPCODE_MASK_H12, braid, branch_inst }, + {"bralid",INST_TYPE_RD_IMM, INST_NO_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB81C0000, OPCODE_MASK_H2, bralid, branch_inst }, + {"brki", INST_TYPE_RD_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB80C0000, OPCODE_MASK_H2, brki, branch_inst }, + {"beqi", INST_TYPE_R1_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBC000000, OPCODE_MASK_H1, beqi, branch_inst }, + {"beqid", INST_TYPE_R1_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBE000000, OPCODE_MASK_H1, beqid, branch_inst }, + {"bnei", INST_TYPE_R1_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBC200000, OPCODE_MASK_H1, bnei, branch_inst }, + {"bneid", INST_TYPE_R1_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBE200000, OPCODE_MASK_H1, bneid, branch_inst }, + {"blti", INST_TYPE_R1_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBC400000, OPCODE_MASK_H1, blti, branch_inst }, + {"bltid", INST_TYPE_R1_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBE400000, OPCODE_MASK_H1, bltid, branch_inst }, + {"blei", INST_TYPE_R1_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBC600000, OPCODE_MASK_H1, blei, branch_inst }, + {"bleid", INST_TYPE_R1_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBE600000, OPCODE_MASK_H1, bleid, branch_inst }, + {"bgti", INST_TYPE_R1_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBC800000, OPCODE_MASK_H1, bgti, branch_inst }, + {"bgtid", INST_TYPE_R1_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBE800000, OPCODE_MASK_H1, bgtid, branch_inst }, + {"bgei", INST_TYPE_R1_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBCA00000, OPCODE_MASK_H1, bgei, branch_inst }, + {"bgeid", INST_TYPE_R1_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xBEA00000, OPCODE_MASK_H1, bgeid, branch_inst }, + {"lbu", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xC0000000, OPCODE_MASK_H4, lbu, memory_load_inst }, + {"lhu", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xC4000000, OPCODE_MASK_H4, lhu, memory_load_inst }, + {"lw", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xC8000000, OPCODE_MASK_H4, lw, memory_load_inst }, + {"lwx", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xC8000400, OPCODE_MASK_H4, lwx, memory_load_inst }, + {"sb", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xD0000000, OPCODE_MASK_H4, sb, memory_store_inst }, + {"sh", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xD4000000, OPCODE_MASK_H4, sh, memory_store_inst }, + {"sw", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xD8000000, OPCODE_MASK_H4, sw, memory_store_inst }, + {"swx", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xD8000400, OPCODE_MASK_H4, swx, memory_store_inst }, + {"lbui", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xE0000000, OPCODE_MASK_H, lbui, memory_load_inst }, + {"lhui", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xE4000000, OPCODE_MASK_H, lhui, memory_load_inst }, + {"lwi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xE8000000, OPCODE_MASK_H, lwi, memory_load_inst }, + {"sbi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xF0000000, OPCODE_MASK_H, sbi, memory_store_inst }, + {"shi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xF4000000, OPCODE_MASK_H, shi, memory_store_inst }, + {"swi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xF8000000, OPCODE_MASK_H, swi, memory_store_inst }, + {"nop", INST_TYPE_NONE, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x80000000, OPCODE_MASK_H1234, invalid_inst, logical_inst }, /* translates to or r0, r0, r0 */ + {"la", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x30000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* la translates to addik */ + {"tuqula",INST_TYPE_RD, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x3000002A, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* tuqula rd translates to addik rd, r0, 42 */ + {"not", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xA800FFFF, OPCODE_MASK_H34, invalid_inst, logical_inst }, /* not translates to xori rd,ra,-1 */ + {"neg", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x04000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* neg translates to rsub rd, ra, r0 */ + {"rtb", INST_TYPE_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB6000004, OPCODE_MASK_H1, invalid_inst, return_inst }, /* rtb translates to rts rd, 4 */ + {"sub", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x04000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* sub translates to rsub rd, rb, ra */ + {"lmi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xE8000000, OPCODE_MASK_H, invalid_inst, memory_load_inst }, + {"smi", INST_TYPE_RD_R1_IMM, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xF8000000, OPCODE_MASK_H, invalid_inst, memory_store_inst }, + {"msrset",INST_TYPE_RD_IMM15, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x94100000, OPCODE_MASK_H23N, msrset, special_inst }, + {"msrclr",INST_TYPE_RD_IMM15, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x94110000, OPCODE_MASK_H23N, msrclr, special_inst }, + {"fadd", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000000, OPCODE_MASK_H4, fadd, arithmetic_inst }, + {"frsub", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000080, OPCODE_MASK_H4, frsub, arithmetic_inst }, + {"fmul", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000100, OPCODE_MASK_H4, fmul, arithmetic_inst }, + {"fdiv", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000180, OPCODE_MASK_H4, fdiv, arithmetic_inst }, + {"fcmp.lt", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000210, OPCODE_MASK_H4, fcmp_lt, arithmetic_inst }, + {"fcmp.eq", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000220, OPCODE_MASK_H4, fcmp_eq, arithmetic_inst }, + {"fcmp.le", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000230, OPCODE_MASK_H4, fcmp_le, arithmetic_inst }, + {"fcmp.gt", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000240, OPCODE_MASK_H4, fcmp_gt, arithmetic_inst }, + {"fcmp.ne", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000250, OPCODE_MASK_H4, fcmp_ne, arithmetic_inst }, + {"fcmp.ge", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000260, OPCODE_MASK_H4, fcmp_ge, arithmetic_inst }, + {"fcmp.un", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000200, OPCODE_MASK_H4, fcmp_un, arithmetic_inst }, + {"flt", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000280, OPCODE_MASK_H4, flt, arithmetic_inst }, + {"fint", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000300, OPCODE_MASK_H4, fint, arithmetic_inst }, + {"fsqrt", INST_TYPE_RD_R1, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x58000380, OPCODE_MASK_H4, fsqrt, arithmetic_inst }, + {"tget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C001000, OPCODE_MASK_H32, tget, anyware_inst }, + {"tcget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C003000, OPCODE_MASK_H32, tcget, anyware_inst }, + {"tnget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C005000, OPCODE_MASK_H32, tnget, anyware_inst }, + {"tncget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C007000, OPCODE_MASK_H32, tncget, anyware_inst }, + {"tput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C009000, OPCODE_MASK_H32, tput, anyware_inst }, + {"tcput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00B000, OPCODE_MASK_H32, tcput, anyware_inst }, + {"tnput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00D000, OPCODE_MASK_H32, tnput, anyware_inst }, + {"tncput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00F000, OPCODE_MASK_H32, tncput, anyware_inst }, + + {"eget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C000400, OPCODE_MASK_H32, eget, anyware_inst }, + {"ecget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C002400, OPCODE_MASK_H32, ecget, anyware_inst }, + {"neget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C004400, OPCODE_MASK_H32, neget, anyware_inst }, + {"necget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C006400, OPCODE_MASK_H32, necget, anyware_inst }, + {"eput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C008400, OPCODE_MASK_H32, eput, anyware_inst }, + {"ecput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00A400, OPCODE_MASK_H32, ecput, anyware_inst }, + {"neput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00C400, OPCODE_MASK_H32, neput, anyware_inst }, + {"necput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00E400, OPCODE_MASK_H32, necput, anyware_inst }, + + {"teget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C001400, OPCODE_MASK_H32, teget, anyware_inst }, + {"tecget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C003400, OPCODE_MASK_H32, tecget, anyware_inst }, + {"tneget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C005400, OPCODE_MASK_H32, tneget, anyware_inst }, + {"tnecget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C007400, OPCODE_MASK_H32, tnecget, anyware_inst }, + {"teput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C009400, OPCODE_MASK_H32, teput, anyware_inst }, + {"tecput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00B400, OPCODE_MASK_H32, tecput, anyware_inst }, + {"tneput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00D400, OPCODE_MASK_H32, tneput, anyware_inst }, + {"tnecput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00F400, OPCODE_MASK_H32, tnecput, anyware_inst }, + + {"aget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C000800, OPCODE_MASK_H32, aget, anyware_inst }, + {"caget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C002800, OPCODE_MASK_H32, caget, anyware_inst }, + {"naget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C004800, OPCODE_MASK_H32, naget, anyware_inst }, + {"ncaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C006800, OPCODE_MASK_H32, ncaget, anyware_inst }, + {"aput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C008800, OPCODE_MASK_H32, aput, anyware_inst }, + {"caput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00A800, OPCODE_MASK_H32, caput, anyware_inst }, + {"naput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00C800, OPCODE_MASK_H32, naput, anyware_inst }, + {"ncaput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00E800, OPCODE_MASK_H32, ncaput, anyware_inst }, + + {"taget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C001800, OPCODE_MASK_H32, taget, anyware_inst }, + {"tcaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C003800, OPCODE_MASK_H32, tcaget, anyware_inst }, + {"tnaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C005800, OPCODE_MASK_H32, tnaget, anyware_inst }, + {"tncaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C007800, OPCODE_MASK_H32, tncaget, anyware_inst }, + {"taput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C009800, OPCODE_MASK_H32, taput, anyware_inst }, + {"tcaput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00B800, OPCODE_MASK_H32, tcaput, anyware_inst }, + {"tnaput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00D800, OPCODE_MASK_H32, tnaput, anyware_inst }, + {"tncaput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00F800, OPCODE_MASK_H32, tncaput, anyware_inst }, + + {"eaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C000C00, OPCODE_MASK_H32, eget, anyware_inst }, + {"ecaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C002C00, OPCODE_MASK_H32, ecget, anyware_inst }, + {"neaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C004C00, OPCODE_MASK_H32, neget, anyware_inst }, + {"necaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C006C00, OPCODE_MASK_H32, necget, anyware_inst }, + {"eaput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C008C00, OPCODE_MASK_H32, eput, anyware_inst }, + {"ecaput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00AC00, OPCODE_MASK_H32, ecput, anyware_inst }, + {"neaput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00CC00, OPCODE_MASK_H32, neput, anyware_inst }, + {"necaput", INST_TYPE_R1_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00EC00, OPCODE_MASK_H32, necput, anyware_inst }, + + {"teaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C001C00, OPCODE_MASK_H32, teaget, anyware_inst }, + {"tecaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C003C00, OPCODE_MASK_H32, tecaget, anyware_inst }, + {"tneaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C005C00, OPCODE_MASK_H32, tneaget, anyware_inst }, + {"tnecaget", INST_TYPE_RD_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C007C00, OPCODE_MASK_H32, tnecaget, anyware_inst }, + {"teaput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C009C00, OPCODE_MASK_H32, teaput, anyware_inst }, + {"tecaput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00BC00, OPCODE_MASK_H32, tecaput, anyware_inst }, + {"tneaput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00DC00, OPCODE_MASK_H32, tneaput, anyware_inst }, + {"tnecaput", INST_TYPE_RFSL, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x6C00FC00, OPCODE_MASK_H32, tnecaput, anyware_inst }, + + {"getd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000000, OPCODE_MASK_H34C, getd, anyware_inst }, + {"tgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000080, OPCODE_MASK_H34C, tgetd, anyware_inst }, + {"cgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000100, OPCODE_MASK_H34C, cgetd, anyware_inst }, + {"tcgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000180, OPCODE_MASK_H34C, tcgetd, anyware_inst }, + {"ngetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000200, OPCODE_MASK_H34C, ngetd, anyware_inst }, + {"tngetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000280, OPCODE_MASK_H34C, tngetd, anyware_inst }, + {"ncgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000300, OPCODE_MASK_H34C, ncgetd, anyware_inst }, + {"tncgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000380, OPCODE_MASK_H34C, tncgetd, anyware_inst }, + {"putd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000400, OPCODE_MASK_H34C, putd, anyware_inst }, + {"tputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000480, OPCODE_MASK_H34C, tputd, anyware_inst }, + {"cputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000500, OPCODE_MASK_H34C, cputd, anyware_inst }, + {"tcputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000580, OPCODE_MASK_H34C, tcputd, anyware_inst }, + {"nputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000600, OPCODE_MASK_H34C, nputd, anyware_inst }, + {"tnputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000680, OPCODE_MASK_H34C, tnputd, anyware_inst }, + {"ncputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000700, OPCODE_MASK_H34C, ncputd, anyware_inst }, + {"tncputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000780, OPCODE_MASK_H34C, tncputd, anyware_inst }, + + {"egetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000020, OPCODE_MASK_H34C, egetd, anyware_inst }, + {"tegetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0000A0, OPCODE_MASK_H34C, tegetd, anyware_inst }, + {"ecgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000120, OPCODE_MASK_H34C, ecgetd, anyware_inst }, + {"tecgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0001A0, OPCODE_MASK_H34C, tecgetd, anyware_inst }, + {"negetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000220, OPCODE_MASK_H34C, negetd, anyware_inst }, + {"tnegetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0002A0, OPCODE_MASK_H34C, tnegetd, anyware_inst }, + {"necgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000320, OPCODE_MASK_H34C, necgetd, anyware_inst }, + {"tnecgetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0003A0, OPCODE_MASK_H34C, tnecgetd, anyware_inst }, + {"eputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000420, OPCODE_MASK_H34C, eputd, anyware_inst }, + {"teputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0004A0, OPCODE_MASK_H34C, teputd, anyware_inst }, + {"ecputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000520, OPCODE_MASK_H34C, ecputd, anyware_inst }, + {"tecputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0005A0, OPCODE_MASK_H34C, tecputd, anyware_inst }, + {"neputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000620, OPCODE_MASK_H34C, neputd, anyware_inst }, + {"tneputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0006A0, OPCODE_MASK_H34C, tneputd, anyware_inst }, + {"necputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000720, OPCODE_MASK_H34C, necputd, anyware_inst }, + {"tnecputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0007A0, OPCODE_MASK_H34C, tnecputd, anyware_inst }, + + {"agetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000040, OPCODE_MASK_H34C, agetd, anyware_inst }, + {"tagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0000C0, OPCODE_MASK_H34C, tagetd, anyware_inst }, + {"cagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000140, OPCODE_MASK_H34C, cagetd, anyware_inst }, + {"tcagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0001C0, OPCODE_MASK_H34C, tcagetd, anyware_inst }, + {"nagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000240, OPCODE_MASK_H34C, nagetd, anyware_inst }, + {"tnagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0002C0, OPCODE_MASK_H34C, tnagetd, anyware_inst }, + {"ncagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000340, OPCODE_MASK_H34C, ncagetd, anyware_inst }, + {"tncagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0003C0, OPCODE_MASK_H34C, tncagetd, anyware_inst }, + {"aputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000440, OPCODE_MASK_H34C, aputd, anyware_inst }, + {"taputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0004C0, OPCODE_MASK_H34C, taputd, anyware_inst }, + {"caputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000540, OPCODE_MASK_H34C, caputd, anyware_inst }, + {"tcaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0005C0, OPCODE_MASK_H34C, tcaputd, anyware_inst }, + {"naputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000640, OPCODE_MASK_H34C, naputd, anyware_inst }, + {"tnaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0006C0, OPCODE_MASK_H34C, tnaputd, anyware_inst }, + {"ncaputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000740, OPCODE_MASK_H34C, ncaputd, anyware_inst }, + {"tncaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0007C0, OPCODE_MASK_H34C, tncaputd, anyware_inst }, + + {"eagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000060, OPCODE_MASK_H34C, eagetd, anyware_inst }, + {"teagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0000E0, OPCODE_MASK_H34C, teagetd, anyware_inst }, + {"ecagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000160, OPCODE_MASK_H34C, ecagetd, anyware_inst }, + {"tecagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0001E0, OPCODE_MASK_H34C, tecagetd, anyware_inst }, + {"neagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000260, OPCODE_MASK_H34C, neagetd, anyware_inst }, + {"tneagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0002E0, OPCODE_MASK_H34C, tneagetd, anyware_inst }, + {"necagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000360, OPCODE_MASK_H34C, necagetd, anyware_inst }, + {"tnecagetd", INST_TYPE_RD_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0003E0, OPCODE_MASK_H34C, tnecagetd, anyware_inst }, + {"eaputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000460, OPCODE_MASK_H34C, eaputd, anyware_inst }, + {"teaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0004E0, OPCODE_MASK_H34C, teaputd, anyware_inst }, + {"ecaputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000560, OPCODE_MASK_H34C, ecaputd, anyware_inst }, + {"tecaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0005E0, OPCODE_MASK_H34C, tecaputd, anyware_inst }, + {"neaputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000660, OPCODE_MASK_H34C, neaputd, anyware_inst }, + {"tneaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0006E0, OPCODE_MASK_H34C, tneaputd, anyware_inst }, + {"necaputd", INST_TYPE_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C000760, OPCODE_MASK_H34C, necaputd, anyware_inst }, + {"tnecaputd", INST_TYPE_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x4C0007E0, OPCODE_MASK_H34C, tnecaputd, anyware_inst }, + {"", 0, 0, 0, 0, 0, 0, 0, 0}, +}; + +/* prefix for register names */ +char register_prefix[] = "r"; +char special_register_prefix[] = "spr"; +char fsl_register_prefix[] = "rfsl"; +char pvr_register_prefix[] = "rpvr"; + + +/* #defines for valid immediate range */ +#define MIN_IMM ((int) 0x80000000) +#define MAX_IMM ((int) 0x7fffffff) + +#define MIN_IMM15 ((int) 0x0000) +#define MAX_IMM15 ((int) 0x7fff) + +#endif /* MICROBLAZE_OPC */ + +#include "dis-asm.h" +#include + +#define get_field_rd(instr) get_field(instr, RD_MASK, RD_LOW) +#define get_field_r1(instr) get_field(instr, RA_MASK, RA_LOW) +#define get_field_r2(instr) get_field(instr, RB_MASK, RB_LOW) +#define get_int_field_imm(instr) ((instr & IMM_MASK) >> IMM_LOW) +#define get_int_field_r1(instr) ((instr & RA_MASK) >> RA_LOW) + +/* Local function prototypes. */ + +static char * get_field (long instr, long mask, unsigned short low); +static char * get_field_imm (long instr); +static char * get_field_imm5 (long instr); +static char * get_field_rfsl (long instr); +static char * get_field_imm15 (long instr); +#if 0 +static char * get_field_unsigned_imm (long instr); +#endif +char * get_field_special (long instr, struct op_code_struct * op); +unsigned long read_insn_microblaze (bfd_vma memaddr, + struct disassemble_info *info, + struct op_code_struct **opr); +enum microblaze_instr get_insn_microblaze (long inst, + bfd_boolean *isunsignedimm, + enum microblaze_instr_type *insn_type, + short *delay_slots); +short get_delay_slots_microblaze (long inst); +enum microblaze_instr microblaze_decode_insn (long insn, + int *rd, + int *ra, + int *rb, + int *imm); +unsigned long +microblaze_get_target_address (long inst, + bfd_boolean immfound, + int immval, + long pcval, + long r1val, + long r2val, + bfd_boolean *targetvalid, + bfd_boolean *unconditionalbranch); + +static char * +get_field (long instr, long mask, unsigned short low) +{ + char tmpstr[25]; + sprintf(tmpstr, "%s%d", register_prefix, (int)((instr & mask) >> low)); + return(strdup(tmpstr)); +} + +static char * +get_field_imm (long instr) +{ + char tmpstr[25]; + sprintf(tmpstr, "%d", (short)((instr & IMM_MASK) >> IMM_LOW)); + return(strdup(tmpstr)); +} + +static char * +get_field_imm5 (long instr) +{ + char tmpstr[25]; + sprintf(tmpstr, "%d", (short)((instr & IMM5_MASK) >> IMM_LOW)); + return(strdup(tmpstr)); +} + +static char * +get_field_rfsl (long instr) +{ + char tmpstr[25]; + sprintf(tmpstr, "%s%d", fsl_register_prefix, (short)((instr & RFSL_MASK) >> IMM_LOW)); + return(strdup(tmpstr)); +} + +static char * +get_field_imm15 (long instr) +{ + char tmpstr[25]; + sprintf(tmpstr, "%d", (short)((instr & IMM15_MASK) >> IMM_LOW)); + return(strdup(tmpstr)); +} + +#if 0 +static char * +get_field_unsigned_imm (long instr) +{ + char tmpstr[25]; + sprintf(tmpstr, "%d", (int)((instr & IMM_MASK) >> IMM_LOW)); + return(strdup(tmpstr)); +} +#endif + +/* + char * + get_field_special (instr) + long instr; + { + char tmpstr[25]; + + sprintf(tmpstr, "%s%s", register_prefix, (((instr & IMM_MASK) >> IMM_LOW) & REG_MSR_MASK) == 0 ? "pc" : "msr"); + + return(strdup(tmpstr)); + } +*/ + +char * +get_field_special (long instr, struct op_code_struct * op) +{ + char tmpstr[25]; + char spr[6]; + + switch ( (((instr & IMM_MASK) >> IMM_LOW) ^ op->immval_mask) ) { + + case REG_MSR_MASK : + strcpy(spr, "msr"); + break; + case REG_PC_MASK : + strcpy(spr, "pc"); + break; + case REG_EAR_MASK : + strcpy(spr, "ear"); + break; + case REG_ESR_MASK : + strcpy(spr, "esr"); + break; + case REG_FSR_MASK : + strcpy(spr, "fsr"); + break; + case REG_BTR_MASK : + strcpy(spr, "btr"); + break; + case REG_EDR_MASK : + strcpy(spr, "edr"); + break; + case REG_PID_MASK : + strcpy(spr, "pid"); + break; + case REG_ZPR_MASK : + strcpy(spr, "zpr"); + break; + case REG_TLBX_MASK : + strcpy(spr, "tlbx"); + break; + case REG_TLBLO_MASK : + strcpy(spr, "tlblo"); + break; + case REG_TLBHI_MASK : + strcpy(spr, "tlbhi"); + break; + case REG_TLBSX_MASK : + strcpy(spr, "tlbsx"); + break; + default : + { + if ( ((((instr & IMM_MASK) >> IMM_LOW) ^ op->immval_mask) & 0xE000) == REG_PVR_MASK) { + sprintf(tmpstr, "%spvr%d", register_prefix, (unsigned short)(((instr & IMM_MASK) >> IMM_LOW) ^ op->immval_mask) ^ REG_PVR_MASK); + return(strdup(tmpstr)); + } else { + strcpy(spr, "pc"); + } + } + break; + } + + sprintf(tmpstr, "%s%s", register_prefix, spr); + return(strdup(tmpstr)); +} + +unsigned long +read_insn_microblaze (bfd_vma memaddr, + struct disassemble_info *info, + struct op_code_struct **opr) +{ + unsigned char ibytes[4]; + int status; + struct op_code_struct * op; + unsigned long inst; + + status = info->read_memory_func (memaddr, ibytes, 4, info); + + if (status != 0) + { + info->memory_error_func (status, memaddr, info); + return 0; + } + + if (info->endian == BFD_ENDIAN_BIG) + inst = (ibytes[0] << 24) | (ibytes[1] << 16) | (ibytes[2] << 8) | ibytes[3]; + else if (info->endian == BFD_ENDIAN_LITTLE) + inst = (ibytes[3] << 24) | (ibytes[2] << 16) | (ibytes[1] << 8) | ibytes[0]; + else + abort (); + + /* Just a linear search of the table. */ + for (op = opcodes; op->name != 0; op ++) + if (op->bit_sequence == (inst & op->opcode_mask)) + break; + + *opr = op; + return inst; +} + + +int +print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info) +{ + fprintf_ftype fprintf = info->fprintf_func; + void * stream = info->stream; + unsigned long inst, prev_inst; + struct op_code_struct * op, *pop; + int immval = 0; + bfd_boolean immfound = FALSE; + static bfd_vma prev_insn_addr = -1; /*init the prev insn addr */ + static int prev_insn_vma = -1; /*init the prev insn vma */ + int curr_insn_vma = info->buffer_vma; + + info->bytes_per_chunk = 4; + + inst = read_insn_microblaze (memaddr, info, &op); + if (inst == 0) { + return -1; + } + + if (prev_insn_vma == curr_insn_vma) { + if (memaddr-(info->bytes_per_chunk) == prev_insn_addr) { + prev_inst = read_insn_microblaze (prev_insn_addr, info, &pop); + if (prev_inst == 0) + return -1; + if (pop->instr == imm) { + immval = (get_int_field_imm(prev_inst) << 16) & 0xffff0000; + immfound = TRUE; + } + else { + immval = 0; + immfound = FALSE; + } + } + } + /* make curr insn as prev insn */ + prev_insn_addr = memaddr; + prev_insn_vma = curr_insn_vma; + + if (op->name == 0) { + fprintf (stream, ".short 0x%04x", inst); + } + else + { + fprintf (stream, "%s", op->name); + + switch (op->inst_type) + { + case INST_TYPE_RD_R1_R2: + fprintf(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_r2(inst)); + break; + case INST_TYPE_RD_R1_IMM: + fprintf(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_imm(inst)); + if (info->print_address_func && get_int_field_r1(inst) == 0 && info->symbol_at_address_func) { + if (immfound) + immval |= (get_int_field_imm(inst) & 0x0000ffff); + else { + immval = get_int_field_imm(inst); + if (immval & 0x8000) + immval |= 0xFFFF0000; + } + if (immval > 0 && info->symbol_at_address_func(immval, info)) { + fprintf (stream, "\t// "); + info->print_address_func (immval, info); + } + } + break; + case INST_TYPE_RD_R1_IMM5: + fprintf(stream, "\t%s, %s, %s", get_field_rd(inst), get_field_r1(inst), get_field_imm5(inst)); + break; + case INST_TYPE_RD_RFSL: + fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_rfsl(inst)); + break; + case INST_TYPE_R1_RFSL: + fprintf(stream, "\t%s, %s", get_field_r1(inst), get_field_rfsl(inst)); + break; + case INST_TYPE_RD_SPECIAL: + fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_special(inst, op)); + break; + case INST_TYPE_SPECIAL_R1: + fprintf(stream, "\t%s, %s", get_field_special(inst, op), get_field_r1(inst)); + break; + case INST_TYPE_RD_R1: + fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_r1(inst)); + break; + case INST_TYPE_R1_R2: + fprintf(stream, "\t%s, %s", get_field_r1(inst), get_field_r2(inst)); + break; + case INST_TYPE_R1_IMM: + fprintf(stream, "\t%s, %s", get_field_r1(inst), get_field_imm(inst)); + /* The non-pc relative instructions are returns, which shouldn't + have a label printed */ + if (info->print_address_func && op->inst_offset_type == INST_PC_OFFSET && info->symbol_at_address_func) { + if (immfound) + immval |= (get_int_field_imm(inst) & 0x0000ffff); + else { + immval = get_int_field_imm(inst); + if (immval & 0x8000) + immval |= 0xFFFF0000; + } + immval += memaddr; + if (immval > 0 && info->symbol_at_address_func(immval, info)) { + fprintf (stream, "\t// "); + info->print_address_func (immval, info); + } else { + fprintf (stream, "\t\t// "); + fprintf (stream, "%x", immval); + } + } + break; + case INST_TYPE_RD_IMM: + fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_imm(inst)); + if (info->print_address_func && info->symbol_at_address_func) { + if (immfound) + immval |= (get_int_field_imm(inst) & 0x0000ffff); + else { + immval = get_int_field_imm(inst); + if (immval & 0x8000) + immval |= 0xFFFF0000; + } + if (op->inst_offset_type == INST_PC_OFFSET) + immval += (int) memaddr; + if (info->symbol_at_address_func(immval, info)) { + fprintf (stream, "\t// "); + info->print_address_func (immval, info); + } + } + break; + case INST_TYPE_IMM: + fprintf(stream, "\t%s", get_field_imm(inst)); + if (info->print_address_func && info->symbol_at_address_func && op->instr != imm) { + if (immfound) + immval |= (get_int_field_imm(inst) & 0x0000ffff); + else { + immval = get_int_field_imm(inst); + if (immval & 0x8000) + immval |= 0xFFFF0000; + } + if (op->inst_offset_type == INST_PC_OFFSET) + immval += (int) memaddr; + if (immval > 0 && info->symbol_at_address_func(immval, info)) { + fprintf (stream, "\t// "); + info->print_address_func (immval, info); + } else if (op->inst_offset_type == INST_PC_OFFSET) { + fprintf (stream, "\t\t// "); + fprintf (stream, "%x", immval); + } + } + break; + case INST_TYPE_RD_R2: + fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_r2(inst)); + break; + case INST_TYPE_R2: + fprintf(stream, "\t%s", get_field_r2(inst)); + break; + case INST_TYPE_R1: + fprintf(stream, "\t%s", get_field_r1(inst)); + break; + case INST_TYPE_RD_R1_SPECIAL: + fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_r2(inst)); + break; + case INST_TYPE_RD_IMM15: + fprintf(stream, "\t%s, %s", get_field_rd(inst), get_field_imm15(inst)); + break; + /* For tuqula instruction */ + case INST_TYPE_RD: + fprintf(stream, "\t%s", get_field_rd(inst)); + break; + case INST_TYPE_RFSL: + fprintf(stream, "\t%s", get_field_rfsl(inst)); + break; + default: + /* if the disassembler lags the instruction set */ + fprintf (stream, "\tundecoded operands, inst is 0x%04x", inst); + break; + } + } + + /* Say how many bytes we consumed? */ + return 4; +} + +enum microblaze_instr +get_insn_microblaze (long inst, + bfd_boolean *isunsignedimm, + enum microblaze_instr_type *insn_type, + short *delay_slots) +{ + struct op_code_struct * op; + *isunsignedimm = FALSE; + + /* Just a linear search of the table. */ + for (op = opcodes; op->name != 0; op ++) + if (op->bit_sequence == (inst & op->opcode_mask)) + break; + + if (op->name == 0) + return invalid_inst; + else { + *isunsignedimm = (op->inst_type == INST_TYPE_RD_R1_UNSIGNED_IMM); + *insn_type = op->instr_type; + *delay_slots = op->delay_slots; + return op->instr; + } +} + +short +get_delay_slots_microblaze (long inst) +{ + bfd_boolean isunsignedimm; + enum microblaze_instr_type insn_type; + enum microblaze_instr op; + short delay_slots; + + op = get_insn_microblaze( inst, &isunsignedimm, &insn_type, &delay_slots); + if (op == invalid_inst) + return 0; + else + return delay_slots; +} + +enum microblaze_instr +microblaze_decode_insn (long insn, + int *rd, + int *ra, + int *rb, + int *imm) +{ + enum microblaze_instr op; + bfd_boolean t1; + enum microblaze_instr_type t2; + short t3; + + op = get_insn_microblaze(insn, &t1, &t2, &t3); + *rd = (insn & RD_MASK) >> RD_LOW; + *ra = (insn & RA_MASK) >> RA_LOW; + *rb = (insn & RB_MASK) >> RB_LOW; + t3 = (insn & IMM_MASK) >> IMM_LOW; + *imm = (int) t3; + return (op); +} + +unsigned long +microblaze_get_target_address (long inst, + bfd_boolean immfound, + int immval, + long pcval, + long r1val, + long r2val, + bfd_boolean *targetvalid, + bfd_boolean *unconditionalbranch) +{ + struct op_code_struct * op; + long targetaddr = 0; + + *unconditionalbranch = FALSE; + /* Just a linear search of the table. */ + for (op = opcodes; op->name != 0; op ++) + if (op->bit_sequence == (inst & op->opcode_mask)) + break; + + if (op->name == 0) { + *targetvalid = FALSE; + } else if (op->instr_type == branch_inst) { + switch (op->inst_type) { + case INST_TYPE_R2: + *unconditionalbranch = TRUE; + /* fallthru */ + case INST_TYPE_RD_R2: + case INST_TYPE_R1_R2: + targetaddr = r2val; + *targetvalid = TRUE; + if (op->inst_offset_type == INST_PC_OFFSET) + targetaddr += pcval; + break; + case INST_TYPE_IMM: + *unconditionalbranch = TRUE; + /* fallthru */ + case INST_TYPE_RD_IMM: + case INST_TYPE_R1_IMM: + if (immfound) { + targetaddr = (immval << 16) & 0xffff0000; + targetaddr |= (get_int_field_imm(inst) & 0x0000ffff); + } else { + targetaddr = get_int_field_imm(inst); + if (targetaddr & 0x8000) + targetaddr |= 0xFFFF0000; + } + if (op->inst_offset_type == INST_PC_OFFSET) + targetaddr += pcval; + *targetvalid = TRUE; + break; + default: + *targetvalid = FALSE; + break; + } + } else if (op->instr_type == return_inst) { + if (immfound) { + targetaddr = (immval << 16) & 0xffff0000; + targetaddr |= (get_int_field_imm(inst) & 0x0000ffff); + } else { + targetaddr = get_int_field_imm(inst); + if (targetaddr & 0x8000) + targetaddr |= 0xFFFF0000; + } + targetaddr += r1val; + *targetvalid = TRUE; + } else { + *targetvalid = FALSE; + } + return targetaddr; +} diff --git a/qemu/qemu-git/mips-dis.c b/qemu/qemu-git/mips-dis.c new file mode 100644 index 0000000..169169c --- /dev/null +++ b/qemu/qemu-git/mips-dis.c @@ -0,0 +1,4842 @@ +/* Print mips instructions for GDB, the GNU debugger, or for objdump. + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. + Contributed by Nobuyuki Hikichi(hikichi@sra.co.jp). + +This file is part of GDB, GAS, and the GNU binutils. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, see . */ + +#include "dis-asm.h" + +/* mips.h. Mips opcode list for GDB, the GNU debugger. + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. + Contributed by Ralph Campbell and OSF + Commented and modified by Ian Lance Taylor, Cygnus Support + +This file is part of GDB, GAS, and the GNU binutils. + +GDB, GAS, and the GNU binutils are free software; you can redistribute +them and/or modify them under the terms of the GNU General Public +License as published by the Free Software Foundation; either version +1, or (at your option) any later version. + +GDB, GAS, and the GNU binutils are distributed in the hope that they +will be useful, but WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this file; see the file COPYING. If not, +see . */ + +/* These are bit masks and shift counts to use to access the various + fields of an instruction. To retrieve the X field of an + instruction, use the expression + (i >> OP_SH_X) & OP_MASK_X + To set the same field (to j), use + i = (i &~ (OP_MASK_X << OP_SH_X)) | (j << OP_SH_X) + + Make sure you use fields that are appropriate for the instruction, + of course. + + The 'i' format uses OP, RS, RT and IMMEDIATE. + + The 'j' format uses OP and TARGET. + + The 'r' format uses OP, RS, RT, RD, SHAMT and FUNCT. + + The 'b' format uses OP, RS, RT and DELTA. + + The floating point 'i' format uses OP, RS, RT and IMMEDIATE. + + The floating point 'r' format uses OP, FMT, FT, FS, FD and FUNCT. + + A breakpoint instruction uses OP, CODE and SPEC (10 bits of the + breakpoint instruction are not defined; Kane says the breakpoint + code field in BREAK is 20 bits; yet MIPS assemblers and debuggers + only use ten bits). An optional two-operand form of break/sdbbp + allows the lower ten bits to be set too, and MIPS32 and later + architectures allow 20 bits to be set with a signal operand + (using CODE20). + + The syscall instruction uses CODE20. + + The general coprocessor instructions use COPZ. */ + +#define OP_MASK_OP 0x3f +#define OP_SH_OP 26 +#define OP_MASK_RS 0x1f +#define OP_SH_RS 21 +#define OP_MASK_FR 0x1f +#define OP_SH_FR 21 +#define OP_MASK_FMT 0x1f +#define OP_SH_FMT 21 +#define OP_MASK_BCC 0x7 +#define OP_SH_BCC 18 +#define OP_MASK_CODE 0x3ff +#define OP_SH_CODE 16 +#define OP_MASK_CODE2 0x3ff +#define OP_SH_CODE2 6 +#define OP_MASK_RT 0x1f +#define OP_SH_RT 16 +#define OP_MASK_FT 0x1f +#define OP_SH_FT 16 +#define OP_MASK_CACHE 0x1f +#define OP_SH_CACHE 16 +#define OP_MASK_RD 0x1f +#define OP_SH_RD 11 +#define OP_MASK_FS 0x1f +#define OP_SH_FS 11 +#define OP_MASK_PREFX 0x1f +#define OP_SH_PREFX 11 +#define OP_MASK_CCC 0x7 +#define OP_SH_CCC 8 +#define OP_MASK_CODE20 0xfffff /* 20 bit syscall/breakpoint code. */ +#define OP_SH_CODE20 6 +#define OP_MASK_SHAMT 0x1f +#define OP_SH_SHAMT 6 +#define OP_MASK_FD 0x1f +#define OP_SH_FD 6 +#define OP_MASK_TARGET 0x3ffffff +#define OP_SH_TARGET 0 +#define OP_MASK_COPZ 0x1ffffff +#define OP_SH_COPZ 0 +#define OP_MASK_IMMEDIATE 0xffff +#define OP_SH_IMMEDIATE 0 +#define OP_MASK_DELTA 0xffff +#define OP_SH_DELTA 0 +#define OP_MASK_FUNCT 0x3f +#define OP_SH_FUNCT 0 +#define OP_MASK_SPEC 0x3f +#define OP_SH_SPEC 0 +#define OP_SH_LOCC 8 /* FP condition code. */ +#define OP_SH_HICC 18 /* FP condition code. */ +#define OP_MASK_CC 0x7 +#define OP_SH_COP1NORM 25 /* Normal COP1 encoding. */ +#define OP_MASK_COP1NORM 0x1 /* a single bit. */ +#define OP_SH_COP1SPEC 21 /* COP1 encodings. */ +#define OP_MASK_COP1SPEC 0xf +#define OP_MASK_COP1SCLR 0x4 +#define OP_MASK_COP1CMP 0x3 +#define OP_SH_COP1CMP 4 +#define OP_SH_FORMAT 21 /* FP short format field. */ +#define OP_MASK_FORMAT 0x7 +#define OP_SH_TRUE 16 +#define OP_MASK_TRUE 0x1 +#define OP_SH_GE 17 +#define OP_MASK_GE 0x01 +#define OP_SH_UNSIGNED 16 +#define OP_MASK_UNSIGNED 0x1 +#define OP_SH_HINT 16 +#define OP_MASK_HINT 0x1f +#define OP_SH_MMI 0 /* Multimedia (parallel) op. */ +#define OP_MASK_MMI 0x3f +#define OP_SH_MMISUB 6 +#define OP_MASK_MMISUB 0x1f +#define OP_MASK_PERFREG 0x1f /* Performance monitoring. */ +#define OP_SH_PERFREG 1 +#define OP_SH_SEL 0 /* Coprocessor select field. */ +#define OP_MASK_SEL 0x7 /* The sel field of mfcZ and mtcZ. */ +#define OP_SH_CODE19 6 /* 19 bit wait code. */ +#define OP_MASK_CODE19 0x7ffff +#define OP_SH_ALN 21 +#define OP_MASK_ALN 0x7 +#define OP_SH_VSEL 21 +#define OP_MASK_VSEL 0x1f +#define OP_MASK_VECBYTE 0x7 /* Selector field is really 4 bits, + but 0x8-0xf don't select bytes. */ +#define OP_SH_VECBYTE 22 +#define OP_MASK_VECALIGN 0x7 /* Vector byte-align (alni.ob) op. */ +#define OP_SH_VECALIGN 21 +#define OP_MASK_INSMSB 0x1f /* "ins" MSB. */ +#define OP_SH_INSMSB 11 +#define OP_MASK_EXTMSBD 0x1f /* "ext" MSBD. */ +#define OP_SH_EXTMSBD 11 + +#define OP_OP_COP0 0x10 +#define OP_OP_COP1 0x11 +#define OP_OP_COP2 0x12 +#define OP_OP_COP3 0x13 +#define OP_OP_LWC1 0x31 +#define OP_OP_LWC2 0x32 +#define OP_OP_LWC3 0x33 /* a.k.a. pref */ +#define OP_OP_LDC1 0x35 +#define OP_OP_LDC2 0x36 +#define OP_OP_LDC3 0x37 /* a.k.a. ld */ +#define OP_OP_SWC1 0x39 +#define OP_OP_SWC2 0x3a +#define OP_OP_SWC3 0x3b +#define OP_OP_SDC1 0x3d +#define OP_OP_SDC2 0x3e +#define OP_OP_SDC3 0x3f /* a.k.a. sd */ + +/* MIPS DSP ASE */ +#define OP_SH_DSPACC 11 +#define OP_MASK_DSPACC 0x3 +#define OP_SH_DSPACC_S 21 +#define OP_MASK_DSPACC_S 0x3 +#define OP_SH_DSPSFT 20 +#define OP_MASK_DSPSFT 0x3f +#define OP_SH_DSPSFT_7 19 +#define OP_MASK_DSPSFT_7 0x7f +#define OP_SH_SA3 21 +#define OP_MASK_SA3 0x7 +#define OP_SH_SA4 21 +#define OP_MASK_SA4 0xf +#define OP_SH_IMM8 16 +#define OP_MASK_IMM8 0xff +#define OP_SH_IMM10 16 +#define OP_MASK_IMM10 0x3ff +#define OP_SH_WRDSP 11 +#define OP_MASK_WRDSP 0x3f +#define OP_SH_RDDSP 16 +#define OP_MASK_RDDSP 0x3f +#define OP_SH_BP 11 +#define OP_MASK_BP 0x3 + +/* MIPS MT ASE */ +#define OP_SH_MT_U 5 +#define OP_MASK_MT_U 0x1 +#define OP_SH_MT_H 4 +#define OP_MASK_MT_H 0x1 +#define OP_SH_MTACC_T 18 +#define OP_MASK_MTACC_T 0x3 +#define OP_SH_MTACC_D 13 +#define OP_MASK_MTACC_D 0x3 + +#define OP_OP_COP0 0x10 +#define OP_OP_COP1 0x11 +#define OP_OP_COP2 0x12 +#define OP_OP_COP3 0x13 +#define OP_OP_LWC1 0x31 +#define OP_OP_LWC2 0x32 +#define OP_OP_LWC3 0x33 /* a.k.a. pref */ +#define OP_OP_LDC1 0x35 +#define OP_OP_LDC2 0x36 +#define OP_OP_LDC3 0x37 /* a.k.a. ld */ +#define OP_OP_SWC1 0x39 +#define OP_OP_SWC2 0x3a +#define OP_OP_SWC3 0x3b +#define OP_OP_SDC1 0x3d +#define OP_OP_SDC2 0x3e +#define OP_OP_SDC3 0x3f /* a.k.a. sd */ + +/* Values in the 'VSEL' field. */ +#define MDMX_FMTSEL_IMM_QH 0x1d +#define MDMX_FMTSEL_IMM_OB 0x1e +#define MDMX_FMTSEL_VEC_QH 0x15 +#define MDMX_FMTSEL_VEC_OB 0x16 + +/* UDI */ +#define OP_SH_UDI1 6 +#define OP_MASK_UDI1 0x1f +#define OP_SH_UDI2 6 +#define OP_MASK_UDI2 0x3ff +#define OP_SH_UDI3 6 +#define OP_MASK_UDI3 0x7fff +#define OP_SH_UDI4 6 +#define OP_MASK_UDI4 0xfffff +/* This structure holds information for a particular instruction. */ + +struct mips_opcode +{ + /* The name of the instruction. */ + const char *name; + /* A string describing the arguments for this instruction. */ + const char *args; + /* The basic opcode for the instruction. When assembling, this + opcode is modified by the arguments to produce the actual opcode + that is used. If pinfo is INSN_MACRO, then this is 0. */ + unsigned long match; + /* If pinfo is not INSN_MACRO, then this is a bit mask for the + relevant portions of the opcode when disassembling. If the + actual opcode anded with the match field equals the opcode field, + then we have found the correct instruction. If pinfo is + INSN_MACRO, then this field is the macro identifier. */ + unsigned long mask; + /* For a macro, this is INSN_MACRO. Otherwise, it is a collection + of bits describing the instruction, notably any relevant hazard + information. */ + unsigned long pinfo; + /* A collection of additional bits describing the instruction. */ + unsigned long pinfo2; + /* A collection of bits describing the instruction sets of which this + instruction or macro is a member. */ + unsigned long membership; +}; + +/* These are the characters which may appear in the args field of an + instruction. They appear in the order in which the fields appear + when the instruction is used. Commas and parentheses in the args + string are ignored when assembling, and written into the output + when disassembling. + + Each of these characters corresponds to a mask field defined above. + + "<" 5 bit shift amount (OP_*_SHAMT) + ">" shift amount between 32 and 63, stored after subtracting 32 (OP_*_SHAMT) + "a" 26 bit target address (OP_*_TARGET) + "b" 5 bit base register (OP_*_RS) + "c" 10 bit breakpoint code (OP_*_CODE) + "d" 5 bit destination register specifier (OP_*_RD) + "h" 5 bit prefx hint (OP_*_PREFX) + "i" 16 bit unsigned immediate (OP_*_IMMEDIATE) + "j" 16 bit signed immediate (OP_*_DELTA) + "k" 5 bit cache opcode in target register position (OP_*_CACHE) + Also used for immediate operands in vr5400 vector insns. + "o" 16 bit signed offset (OP_*_DELTA) + "p" 16 bit PC relative branch target address (OP_*_DELTA) + "q" 10 bit extra breakpoint code (OP_*_CODE2) + "r" 5 bit same register used as both source and target (OP_*_RS) + "s" 5 bit source register specifier (OP_*_RS) + "t" 5 bit target register (OP_*_RT) + "u" 16 bit upper 16 bits of address (OP_*_IMMEDIATE) + "v" 5 bit same register used as both source and destination (OP_*_RS) + "w" 5 bit same register used as both target and destination (OP_*_RT) + "U" 5 bit same destination register in both OP_*_RD and OP_*_RT + (used by clo and clz) + "C" 25 bit coprocessor function code (OP_*_COPZ) + "B" 20 bit syscall/breakpoint function code (OP_*_CODE20) + "J" 19 bit wait function code (OP_*_CODE19) + "x" accept and ignore register name + "z" must be zero register + "K" 5 bit Hardware Register (rdhwr instruction) (OP_*_RD) + "+A" 5 bit ins/ext/dins/dext/dinsm/dextm position, which becomes + LSB (OP_*_SHAMT). + Enforces: 0 <= pos < 32. + "+B" 5 bit ins/dins size, which becomes MSB (OP_*_INSMSB). + Requires that "+A" or "+E" occur first to set position. + Enforces: 0 < (pos+size) <= 32. + "+C" 5 bit ext/dext size, which becomes MSBD (OP_*_EXTMSBD). + Requires that "+A" or "+E" occur first to set position. + Enforces: 0 < (pos+size) <= 32. + (Also used by "dext" w/ different limits, but limits for + that are checked by the M_DEXT macro.) + "+E" 5 bit dinsu/dextu position, which becomes LSB-32 (OP_*_SHAMT). + Enforces: 32 <= pos < 64. + "+F" 5 bit "dinsm/dinsu" size, which becomes MSB-32 (OP_*_INSMSB). + Requires that "+A" or "+E" occur first to set position. + Enforces: 32 < (pos+size) <= 64. + "+G" 5 bit "dextm" size, which becomes MSBD-32 (OP_*_EXTMSBD). + Requires that "+A" or "+E" occur first to set position. + Enforces: 32 < (pos+size) <= 64. + "+H" 5 bit "dextu" size, which becomes MSBD (OP_*_EXTMSBD). + Requires that "+A" or "+E" occur first to set position. + Enforces: 32 < (pos+size) <= 64. + + Floating point instructions: + "D" 5 bit destination register (OP_*_FD) + "M" 3 bit compare condition code (OP_*_CCC) (only used for mips4 and up) + "N" 3 bit branch condition code (OP_*_BCC) (only used for mips4 and up) + "S" 5 bit fs source 1 register (OP_*_FS) + "T" 5 bit ft source 2 register (OP_*_FT) + "R" 5 bit fr source 3 register (OP_*_FR) + "V" 5 bit same register used as floating source and destination (OP_*_FS) + "W" 5 bit same register used as floating target and destination (OP_*_FT) + + Coprocessor instructions: + "E" 5 bit target register (OP_*_RT) + "G" 5 bit destination register (OP_*_RD) + "H" 3 bit sel field for (d)mtc* and (d)mfc* (OP_*_SEL) + "P" 5 bit performance-monitor register (OP_*_PERFREG) + "e" 5 bit vector register byte specifier (OP_*_VECBYTE) + "%" 3 bit immediate vr5400 vector alignment operand (OP_*_VECALIGN) + see also "k" above + "+D" Combined destination register ("G") and sel ("H") for CP0 ops, + for pretty-printing in disassembly only. + + Macro instructions: + "A" General 32 bit expression + "I" 32 bit immediate (value placed in imm_expr). + "+I" 32 bit immediate (value placed in imm2_expr). + "F" 64 bit floating point constant in .rdata + "L" 64 bit floating point constant in .lit8 + "f" 32 bit floating point constant + "l" 32 bit floating point constant in .lit4 + + MDMX instruction operands (note that while these use the FP register + fields, they accept both $fN and $vN names for the registers): + "O" MDMX alignment offset (OP_*_ALN) + "Q" MDMX vector/scalar/immediate source (OP_*_VSEL and OP_*_FT) + "X" MDMX destination register (OP_*_FD) + "Y" MDMX source register (OP_*_FS) + "Z" MDMX source register (OP_*_FT) + + DSP ASE usage: + "2" 2 bit unsigned immediate for byte align (OP_*_BP) + "3" 3 bit unsigned immediate (OP_*_SA3) + "4" 4 bit unsigned immediate (OP_*_SA4) + "5" 8 bit unsigned immediate (OP_*_IMM8) + "6" 5 bit unsigned immediate (OP_*_RS) + "7" 2 bit dsp accumulator register (OP_*_DSPACC) + "8" 6 bit unsigned immediate (OP_*_WRDSP) + "9" 2 bit dsp accumulator register (OP_*_DSPACC_S) + "0" 6 bit signed immediate (OP_*_DSPSFT) + ":" 7 bit signed immediate (OP_*_DSPSFT_7) + "'" 6 bit unsigned immediate (OP_*_RDDSP) + "@" 10 bit signed immediate (OP_*_IMM10) + + MT ASE usage: + "!" 1 bit usermode flag (OP_*_MT_U) + "$" 1 bit load high flag (OP_*_MT_H) + "*" 2 bit dsp/smartmips accumulator register (OP_*_MTACC_T) + "&" 2 bit dsp/smartmips accumulator register (OP_*_MTACC_D) + "g" 5 bit coprocessor 1 and 2 destination register (OP_*_RD) + "+t" 5 bit coprocessor 0 destination register (OP_*_RT) + "+T" 5 bit coprocessor 0 destination register (OP_*_RT) - disassembly only + + UDI immediates: + "+1" UDI immediate bits 6-10 + "+2" UDI immediate bits 6-15 + "+3" UDI immediate bits 6-20 + "+4" UDI immediate bits 6-25 + + Other: + "()" parens surrounding optional value + "," separates operands + "[]" brackets around index for vector-op scalar operand specifier (vr5400) + "+" Start of extension sequence. + + Characters used so far, for quick reference when adding more: + "234567890" + "%[]<>(),+:'@!$*&" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklopqrstuvwxz" + + Extension character sequences used so far ("+" followed by the + following), for quick reference when adding more: + "1234" + "ABCDEFGHIT" + "t" +*/ + +/* These are the bits which may be set in the pinfo field of an + instructions, if it is not equal to INSN_MACRO. */ + +/* Modifies the general purpose register in OP_*_RD. */ +#define INSN_WRITE_GPR_D 0x00000001 +/* Modifies the general purpose register in OP_*_RT. */ +#define INSN_WRITE_GPR_T 0x00000002 +/* Modifies general purpose register 31. */ +#define INSN_WRITE_GPR_31 0x00000004 +/* Modifies the floating point register in OP_*_FD. */ +#define INSN_WRITE_FPR_D 0x00000008 +/* Modifies the floating point register in OP_*_FS. */ +#define INSN_WRITE_FPR_S 0x00000010 +/* Modifies the floating point register in OP_*_FT. */ +#define INSN_WRITE_FPR_T 0x00000020 +/* Reads the general purpose register in OP_*_RS. */ +#define INSN_READ_GPR_S 0x00000040 +/* Reads the general purpose register in OP_*_RT. */ +#define INSN_READ_GPR_T 0x00000080 +/* Reads the floating point register in OP_*_FS. */ +#define INSN_READ_FPR_S 0x00000100 +/* Reads the floating point register in OP_*_FT. */ +#define INSN_READ_FPR_T 0x00000200 +/* Reads the floating point register in OP_*_FR. */ +#define INSN_READ_FPR_R 0x00000400 +/* Modifies coprocessor condition code. */ +#define INSN_WRITE_COND_CODE 0x00000800 +/* Reads coprocessor condition code. */ +#define INSN_READ_COND_CODE 0x00001000 +/* TLB operation. */ +#define INSN_TLB 0x00002000 +/* Reads coprocessor register other than floating point register. */ +#define INSN_COP 0x00004000 +/* Instruction loads value from memory, requiring delay. */ +#define INSN_LOAD_MEMORY_DELAY 0x00008000 +/* Instruction loads value from coprocessor, requiring delay. */ +#define INSN_LOAD_COPROC_DELAY 0x00010000 +/* Instruction has unconditional branch delay slot. */ +#define INSN_UNCOND_BRANCH_DELAY 0x00020000 +/* Instruction has conditional branch delay slot. */ +#define INSN_COND_BRANCH_DELAY 0x00040000 +/* Conditional branch likely: if branch not taken, insn nullified. */ +#define INSN_COND_BRANCH_LIKELY 0x00080000 +/* Moves to coprocessor register, requiring delay. */ +#define INSN_COPROC_MOVE_DELAY 0x00100000 +/* Loads coprocessor register from memory, requiring delay. */ +#define INSN_COPROC_MEMORY_DELAY 0x00200000 +/* Reads the HI register. */ +#define INSN_READ_HI 0x00400000 +/* Reads the LO register. */ +#define INSN_READ_LO 0x00800000 +/* Modifies the HI register. */ +#define INSN_WRITE_HI 0x01000000 +/* Modifies the LO register. */ +#define INSN_WRITE_LO 0x02000000 +/* Takes a trap (easier to keep out of delay slot). */ +#define INSN_TRAP 0x04000000 +/* Instruction stores value into memory. */ +#define INSN_STORE_MEMORY 0x08000000 +/* Instruction uses single precision floating point. */ +#define FP_S 0x10000000 +/* Instruction uses double precision floating point. */ +#define FP_D 0x20000000 +/* Instruction is part of the tx39's integer multiply family. */ +#define INSN_MULT 0x40000000 +/* Instruction synchronize shared memory. */ +#define INSN_SYNC 0x80000000 + +/* These are the bits which may be set in the pinfo2 field of an + instruction. */ + +/* Instruction is a simple alias (I.E. "move" for daddu/addu/or) */ +#define INSN2_ALIAS 0x00000001 +/* Instruction reads MDMX accumulator. */ +#define INSN2_READ_MDMX_ACC 0x00000002 +/* Instruction writes MDMX accumulator. */ +#define INSN2_WRITE_MDMX_ACC 0x00000004 + +/* Instruction is actually a macro. It should be ignored by the + disassembler, and requires special treatment by the assembler. */ +#define INSN_MACRO 0xffffffff + +/* Masks used to mark instructions to indicate which MIPS ISA level + they were introduced in. ISAs, as defined below, are logical + ORs of these bits, indicating that they support the instructions + defined at the given level. */ + +#define INSN_ISA_MASK 0x00000fff +#define INSN_ISA1 0x00000001 +#define INSN_ISA2 0x00000002 +#define INSN_ISA3 0x00000004 +#define INSN_ISA4 0x00000008 +#define INSN_ISA5 0x00000010 +#define INSN_ISA32 0x00000020 +#define INSN_ISA64 0x00000040 +#define INSN_ISA32R2 0x00000080 +#define INSN_ISA64R2 0x00000100 + +/* Masks used for MIPS-defined ASEs. */ +#define INSN_ASE_MASK 0x0000f000 + +/* DSP ASE */ +#define INSN_DSP 0x00001000 +#define INSN_DSP64 0x00002000 +/* MIPS 16 ASE */ +#define INSN_MIPS16 0x00004000 +/* MIPS-3D ASE */ +#define INSN_MIPS3D 0x00008000 + +/* Chip specific instructions. These are bitmasks. */ + +/* MIPS R4650 instruction. */ +#define INSN_4650 0x00010000 +/* LSI R4010 instruction. */ +#define INSN_4010 0x00020000 +/* NEC VR4100 instruction. */ +#define INSN_4100 0x00040000 +/* Toshiba R3900 instruction. */ +#define INSN_3900 0x00080000 +/* MIPS R10000 instruction. */ +#define INSN_10000 0x00100000 +/* Broadcom SB-1 instruction. */ +#define INSN_SB1 0x00200000 +/* NEC VR4111/VR4181 instruction. */ +#define INSN_4111 0x00400000 +/* NEC VR4120 instruction. */ +#define INSN_4120 0x00800000 +/* NEC VR5400 instruction. */ +#define INSN_5400 0x01000000 +/* NEC VR5500 instruction. */ +#define INSN_5500 0x02000000 + +/* MDMX ASE */ +#define INSN_MDMX 0x04000000 +/* MT ASE */ +#define INSN_MT 0x08000000 +/* SmartMIPS ASE */ +#define INSN_SMARTMIPS 0x10000000 +/* DSP R2 ASE */ +#define INSN_DSPR2 0x20000000 + +/* MIPS ISA defines, use instead of hardcoding ISA level. */ + +#define ISA_UNKNOWN 0 /* Gas internal use. */ +#define ISA_MIPS1 (INSN_ISA1) +#define ISA_MIPS2 (ISA_MIPS1 | INSN_ISA2) +#define ISA_MIPS3 (ISA_MIPS2 | INSN_ISA3) +#define ISA_MIPS4 (ISA_MIPS3 | INSN_ISA4) +#define ISA_MIPS5 (ISA_MIPS4 | INSN_ISA5) + +#define ISA_MIPS32 (ISA_MIPS2 | INSN_ISA32) +#define ISA_MIPS64 (ISA_MIPS5 | INSN_ISA32 | INSN_ISA64) + +#define ISA_MIPS32R2 (ISA_MIPS32 | INSN_ISA32R2) +#define ISA_MIPS64R2 (ISA_MIPS64 | INSN_ISA32R2 | INSN_ISA64R2) + + +/* CPU defines, use instead of hardcoding processor number. Keep this + in sync with bfd/archures.c in order for machine selection to work. */ +#define CPU_UNKNOWN 0 /* Gas internal use. */ +#define CPU_R3000 3000 +#define CPU_R3900 3900 +#define CPU_R4000 4000 +#define CPU_R4010 4010 +#define CPU_VR4100 4100 +#define CPU_R4111 4111 +#define CPU_VR4120 4120 +#define CPU_R4300 4300 +#define CPU_R4400 4400 +#define CPU_R4600 4600 +#define CPU_R4650 4650 +#define CPU_R5000 5000 +#define CPU_VR5400 5400 +#define CPU_VR5500 5500 +#define CPU_R6000 6000 +#define CPU_RM7000 7000 +#define CPU_R8000 8000 +#define CPU_R10000 10000 +#define CPU_R12000 12000 +#define CPU_MIPS16 16 +#define CPU_MIPS32 32 +#define CPU_MIPS32R2 33 +#define CPU_MIPS5 5 +#define CPU_MIPS64 64 +#define CPU_MIPS64R2 65 +#define CPU_SB1 12310201 /* octal 'SB', 01. */ + +/* Test for membership in an ISA including chip specific ISAs. INSN + is pointer to an element of the opcode table; ISA is the specified + ISA/ASE bitmask to test against; and CPU is the CPU specific ISA to + test, or zero if no CPU specific ISA test is desired. */ + +#if 0 +#define OPCODE_IS_MEMBER(insn, isa, cpu) \ + (((insn)->membership & isa) != 0 \ + || (cpu == CPU_R4650 && ((insn)->membership & INSN_4650) != 0) \ + || (cpu == CPU_RM7000 && ((insn)->membership & INSN_4650) != 0) \ + || (cpu == CPU_RM9000 && ((insn)->membership & INSN_4650) != 0) \ + || (cpu == CPU_R4010 && ((insn)->membership & INSN_4010) != 0) \ + || (cpu == CPU_VR4100 && ((insn)->membership & INSN_4100) != 0) \ + || (cpu == CPU_R3900 && ((insn)->membership & INSN_3900) != 0) \ + || ((cpu == CPU_R10000 || cpu == CPU_R12000) \ + && ((insn)->membership & INSN_10000) != 0) \ + || (cpu == CPU_SB1 && ((insn)->membership & INSN_SB1) != 0) \ + || (cpu == CPU_R4111 && ((insn)->membership & INSN_4111) != 0) \ + || (cpu == CPU_VR4120 && ((insn)->membership & INSN_4120) != 0) \ + || (cpu == CPU_VR5400 && ((insn)->membership & INSN_5400) != 0) \ + || (cpu == CPU_VR5500 && ((insn)->membership & INSN_5500) != 0) \ + || 0) /* Please keep this term for easier source merging. */ +#else +#define OPCODE_IS_MEMBER(insn, isa, cpu) \ + (1 != 0) +#endif + +/* This is a list of macro expanded instructions. + + _I appended means immediate + _A appended means address + _AB appended means address with base register + _D appended means 64 bit floating point constant + _S appended means 32 bit floating point constant. */ + +enum +{ + M_ABS, + M_ADD_I, + M_ADDU_I, + M_AND_I, + M_BALIGN, + M_BEQ, + M_BEQ_I, + M_BEQL_I, + M_BGE, + M_BGEL, + M_BGE_I, + M_BGEL_I, + M_BGEU, + M_BGEUL, + M_BGEU_I, + M_BGEUL_I, + M_BGT, + M_BGTL, + M_BGT_I, + M_BGTL_I, + M_BGTU, + M_BGTUL, + M_BGTU_I, + M_BGTUL_I, + M_BLE, + M_BLEL, + M_BLE_I, + M_BLEL_I, + M_BLEU, + M_BLEUL, + M_BLEU_I, + M_BLEUL_I, + M_BLT, + M_BLTL, + M_BLT_I, + M_BLTL_I, + M_BLTU, + M_BLTUL, + M_BLTU_I, + M_BLTUL_I, + M_BNE, + M_BNE_I, + M_BNEL_I, + M_CACHE_AB, + M_DABS, + M_DADD_I, + M_DADDU_I, + M_DDIV_3, + M_DDIV_3I, + M_DDIVU_3, + M_DDIVU_3I, + M_DEXT, + M_DINS, + M_DIV_3, + M_DIV_3I, + M_DIVU_3, + M_DIVU_3I, + M_DLA_AB, + M_DLCA_AB, + M_DLI, + M_DMUL, + M_DMUL_I, + M_DMULO, + M_DMULO_I, + M_DMULOU, + M_DMULOU_I, + M_DREM_3, + M_DREM_3I, + M_DREMU_3, + M_DREMU_3I, + M_DSUB_I, + M_DSUBU_I, + M_DSUBU_I_2, + M_J_A, + M_JAL_1, + M_JAL_2, + M_JAL_A, + M_L_DOB, + M_L_DAB, + M_LA_AB, + M_LB_A, + M_LB_AB, + M_LBU_A, + M_LBU_AB, + M_LCA_AB, + M_LD_A, + M_LD_OB, + M_LD_AB, + M_LDC1_AB, + M_LDC2_AB, + M_LDC3_AB, + M_LDL_AB, + M_LDR_AB, + M_LH_A, + M_LH_AB, + M_LHU_A, + M_LHU_AB, + M_LI, + M_LI_D, + M_LI_DD, + M_LI_S, + M_LI_SS, + M_LL_AB, + M_LLD_AB, + M_LS_A, + M_LW_A, + M_LW_AB, + M_LWC0_A, + M_LWC0_AB, + M_LWC1_A, + M_LWC1_AB, + M_LWC2_A, + M_LWC2_AB, + M_LWC3_A, + M_LWC3_AB, + M_LWL_A, + M_LWL_AB, + M_LWR_A, + M_LWR_AB, + M_LWU_AB, + M_MOVE, + M_MUL, + M_MUL_I, + M_MULO, + M_MULO_I, + M_MULOU, + M_MULOU_I, + M_NOR_I, + M_OR_I, + M_REM_3, + M_REM_3I, + M_REMU_3, + M_REMU_3I, + M_DROL, + M_ROL, + M_DROL_I, + M_ROL_I, + M_DROR, + M_ROR, + M_DROR_I, + M_ROR_I, + M_S_DA, + M_S_DOB, + M_S_DAB, + M_S_S, + M_SC_AB, + M_SCD_AB, + M_SD_A, + M_SD_OB, + M_SD_AB, + M_SDC1_AB, + M_SDC2_AB, + M_SDC3_AB, + M_SDL_AB, + M_SDR_AB, + M_SEQ, + M_SEQ_I, + M_SGE, + M_SGE_I, + M_SGEU, + M_SGEU_I, + M_SGT, + M_SGT_I, + M_SGTU, + M_SGTU_I, + M_SLE, + M_SLE_I, + M_SLEU, + M_SLEU_I, + M_SLT_I, + M_SLTU_I, + M_SNE, + M_SNE_I, + M_SB_A, + M_SB_AB, + M_SH_A, + M_SH_AB, + M_SW_A, + M_SW_AB, + M_SWC0_A, + M_SWC0_AB, + M_SWC1_A, + M_SWC1_AB, + M_SWC2_A, + M_SWC2_AB, + M_SWC3_A, + M_SWC3_AB, + M_SWL_A, + M_SWL_AB, + M_SWR_A, + M_SWR_AB, + M_SUB_I, + M_SUBU_I, + M_SUBU_I_2, + M_TEQ_I, + M_TGE_I, + M_TGEU_I, + M_TLT_I, + M_TLTU_I, + M_TNE_I, + M_TRUNCWD, + M_TRUNCWS, + M_ULD, + M_ULD_A, + M_ULH, + M_ULH_A, + M_ULHU, + M_ULHU_A, + M_ULW, + M_ULW_A, + M_USH, + M_USH_A, + M_USW, + M_USW_A, + M_USD, + M_USD_A, + M_XOR_I, + M_COP0, + M_COP1, + M_COP2, + M_COP3, + M_NUM_MACROS +}; + + +/* The order of overloaded instructions matters. Label arguments and + register arguments look the same. Instructions that can have either + for arguments must apear in the correct order in this table for the + assembler to pick the right one. In other words, entries with + immediate operands must apear after the same instruction with + registers. + + Many instructions are short hand for other instructions (i.e., The + jal instruction is short for jalr ). */ + +extern const struct mips_opcode mips_builtin_opcodes[]; +extern const int bfd_mips_num_builtin_opcodes; +extern struct mips_opcode *mips_opcodes; +extern int bfd_mips_num_opcodes; +#define NUMOPCODES bfd_mips_num_opcodes + + +/* The rest of this file adds definitions for the mips16 TinyRISC + processor. */ + +/* These are the bitmasks and shift counts used for the different + fields in the instruction formats. Other than OP, no masks are + provided for the fixed portions of an instruction, since they are + not needed. + + The I format uses IMM11. + + The RI format uses RX and IMM8. + + The RR format uses RX, and RY. + + The RRI format uses RX, RY, and IMM5. + + The RRR format uses RX, RY, and RZ. + + The RRI_A format uses RX, RY, and IMM4. + + The SHIFT format uses RX, RY, and SHAMT. + + The I8 format uses IMM8. + + The I8_MOVR32 format uses RY and REGR32. + + The IR_MOV32R format uses REG32R and MOV32Z. + + The I64 format uses IMM8. + + The RI64 format uses RY and IMM5. + */ + +#define MIPS16OP_MASK_OP 0x1f +#define MIPS16OP_SH_OP 11 +#define MIPS16OP_MASK_IMM11 0x7ff +#define MIPS16OP_SH_IMM11 0 +#define MIPS16OP_MASK_RX 0x7 +#define MIPS16OP_SH_RX 8 +#define MIPS16OP_MASK_IMM8 0xff +#define MIPS16OP_SH_IMM8 0 +#define MIPS16OP_MASK_RY 0x7 +#define MIPS16OP_SH_RY 5 +#define MIPS16OP_MASK_IMM5 0x1f +#define MIPS16OP_SH_IMM5 0 +#define MIPS16OP_MASK_RZ 0x7 +#define MIPS16OP_SH_RZ 2 +#define MIPS16OP_MASK_IMM4 0xf +#define MIPS16OP_SH_IMM4 0 +#define MIPS16OP_MASK_REGR32 0x1f +#define MIPS16OP_SH_REGR32 0 +#define MIPS16OP_MASK_REG32R 0x1f +#define MIPS16OP_SH_REG32R 3 +#define MIPS16OP_EXTRACT_REG32R(i) ((((i) >> 5) & 7) | ((i) & 0x18)) +#define MIPS16OP_MASK_MOVE32Z 0x7 +#define MIPS16OP_SH_MOVE32Z 0 +#define MIPS16OP_MASK_IMM6 0x3f +#define MIPS16OP_SH_IMM6 5 + +/* These are the characters which may appears in the args field of an + instruction. They appear in the order in which the fields appear + when the instruction is used. Commas and parentheses in the args + string are ignored when assembling, and written into the output + when disassembling. + + "y" 3 bit register (MIPS16OP_*_RY) + "x" 3 bit register (MIPS16OP_*_RX) + "z" 3 bit register (MIPS16OP_*_RZ) + "Z" 3 bit register (MIPS16OP_*_MOVE32Z) + "v" 3 bit same register as source and destination (MIPS16OP_*_RX) + "w" 3 bit same register as source and destination (MIPS16OP_*_RY) + "0" zero register ($0) + "S" stack pointer ($sp or $29) + "P" program counter + "R" return address register ($ra or $31) + "X" 5 bit MIPS register (MIPS16OP_*_REGR32) + "Y" 5 bit MIPS register (MIPS16OP_*_REG32R) + "6" 6 bit unsigned break code (MIPS16OP_*_IMM6) + "a" 26 bit jump address + "e" 11 bit extension value + "l" register list for entry instruction + "L" register list for exit instruction + + The remaining codes may be extended. Except as otherwise noted, + the full extended operand is a 16 bit signed value. + "<" 3 bit unsigned shift count * 0 (MIPS16OP_*_RZ) (full 5 bit unsigned) + ">" 3 bit unsigned shift count * 0 (MIPS16OP_*_RX) (full 5 bit unsigned) + "[" 3 bit unsigned shift count * 0 (MIPS16OP_*_RZ) (full 6 bit unsigned) + "]" 3 bit unsigned shift count * 0 (MIPS16OP_*_RX) (full 6 bit unsigned) + "4" 4 bit signed immediate * 0 (MIPS16OP_*_IMM4) (full 15 bit signed) + "5" 5 bit unsigned immediate * 0 (MIPS16OP_*_IMM5) + "H" 5 bit unsigned immediate * 2 (MIPS16OP_*_IMM5) + "W" 5 bit unsigned immediate * 4 (MIPS16OP_*_IMM5) + "D" 5 bit unsigned immediate * 8 (MIPS16OP_*_IMM5) + "j" 5 bit signed immediate * 0 (MIPS16OP_*_IMM5) + "8" 8 bit unsigned immediate * 0 (MIPS16OP_*_IMM8) + "V" 8 bit unsigned immediate * 4 (MIPS16OP_*_IMM8) + "C" 8 bit unsigned immediate * 8 (MIPS16OP_*_IMM8) + "U" 8 bit unsigned immediate * 0 (MIPS16OP_*_IMM8) (full 16 bit unsigned) + "k" 8 bit signed immediate * 0 (MIPS16OP_*_IMM8) + "K" 8 bit signed immediate * 8 (MIPS16OP_*_IMM8) + "p" 8 bit conditional branch address (MIPS16OP_*_IMM8) + "q" 11 bit branch address (MIPS16OP_*_IMM11) + "A" 8 bit PC relative address * 4 (MIPS16OP_*_IMM8) + "B" 5 bit PC relative address * 8 (MIPS16OP_*_IMM5) + "E" 5 bit PC relative address * 4 (MIPS16OP_*_IMM5) + */ + +/* Save/restore encoding for the args field when all 4 registers are + either saved as arguments or saved/restored as statics. */ +#define MIPS16_ALL_ARGS 0xe +#define MIPS16_ALL_STATICS 0xb + +/* For the mips16, we use the same opcode table format and a few of + the same flags. However, most of the flags are different. */ + +/* Modifies the register in MIPS16OP_*_RX. */ +#define MIPS16_INSN_WRITE_X 0x00000001 +/* Modifies the register in MIPS16OP_*_RY. */ +#define MIPS16_INSN_WRITE_Y 0x00000002 +/* Modifies the register in MIPS16OP_*_RZ. */ +#define MIPS16_INSN_WRITE_Z 0x00000004 +/* Modifies the T ($24) register. */ +#define MIPS16_INSN_WRITE_T 0x00000008 +/* Modifies the SP ($29) register. */ +#define MIPS16_INSN_WRITE_SP 0x00000010 +/* Modifies the RA ($31) register. */ +#define MIPS16_INSN_WRITE_31 0x00000020 +/* Modifies the general purpose register in MIPS16OP_*_REG32R. */ +#define MIPS16_INSN_WRITE_GPR_Y 0x00000040 +/* Reads the register in MIPS16OP_*_RX. */ +#define MIPS16_INSN_READ_X 0x00000080 +/* Reads the register in MIPS16OP_*_RY. */ +#define MIPS16_INSN_READ_Y 0x00000100 +/* Reads the register in MIPS16OP_*_MOVE32Z. */ +#define MIPS16_INSN_READ_Z 0x00000200 +/* Reads the T ($24) register. */ +#define MIPS16_INSN_READ_T 0x00000400 +/* Reads the SP ($29) register. */ +#define MIPS16_INSN_READ_SP 0x00000800 +/* Reads the RA ($31) register. */ +#define MIPS16_INSN_READ_31 0x00001000 +/* Reads the program counter. */ +#define MIPS16_INSN_READ_PC 0x00002000 +/* Reads the general purpose register in MIPS16OP_*_REGR32. */ +#define MIPS16_INSN_READ_GPR_X 0x00004000 +/* Is a branch insn. */ +#define MIPS16_INSN_BRANCH 0x00010000 + +/* The following flags have the same value for the mips16 opcode + table: + INSN_UNCOND_BRANCH_DELAY + INSN_COND_BRANCH_DELAY + INSN_COND_BRANCH_LIKELY (never used) + INSN_READ_HI + INSN_READ_LO + INSN_WRITE_HI + INSN_WRITE_LO + INSN_TRAP + INSN_ISA3 + */ + +extern const struct mips_opcode mips16_opcodes[]; +extern const int bfd_mips16_num_opcodes; + +/* Short hand so the lines aren't too long. */ + +#define LDD INSN_LOAD_MEMORY_DELAY +#define LCD INSN_LOAD_COPROC_DELAY +#define UBD INSN_UNCOND_BRANCH_DELAY +#define CBD INSN_COND_BRANCH_DELAY +#define COD INSN_COPROC_MOVE_DELAY +#define CLD INSN_COPROC_MEMORY_DELAY +#define CBL INSN_COND_BRANCH_LIKELY +#define TRAP INSN_TRAP +#define SM INSN_STORE_MEMORY + +#define WR_d INSN_WRITE_GPR_D +#define WR_t INSN_WRITE_GPR_T +#define WR_31 INSN_WRITE_GPR_31 +#define WR_D INSN_WRITE_FPR_D +#define WR_T INSN_WRITE_FPR_T +#define WR_S INSN_WRITE_FPR_S +#define RD_s INSN_READ_GPR_S +#define RD_b INSN_READ_GPR_S +#define RD_t INSN_READ_GPR_T +#define RD_S INSN_READ_FPR_S +#define RD_T INSN_READ_FPR_T +#define RD_R INSN_READ_FPR_R +#define WR_CC INSN_WRITE_COND_CODE +#define RD_CC INSN_READ_COND_CODE +#define RD_C0 INSN_COP +#define RD_C1 INSN_COP +#define RD_C2 INSN_COP +#define RD_C3 INSN_COP +#define WR_C0 INSN_COP +#define WR_C1 INSN_COP +#define WR_C2 INSN_COP +#define WR_C3 INSN_COP + +#define WR_HI INSN_WRITE_HI +#define RD_HI INSN_READ_HI +#define MOD_HI WR_HI|RD_HI + +#define WR_LO INSN_WRITE_LO +#define RD_LO INSN_READ_LO +#define MOD_LO WR_LO|RD_LO + +#define WR_HILO WR_HI|WR_LO +#define RD_HILO RD_HI|RD_LO +#define MOD_HILO WR_HILO|RD_HILO + +#define IS_M INSN_MULT + +#define WR_MACC INSN2_WRITE_MDMX_ACC +#define RD_MACC INSN2_READ_MDMX_ACC + +#define I1 INSN_ISA1 +#define I2 INSN_ISA2 +#define I3 INSN_ISA3 +#define I4 INSN_ISA4 +#define I5 INSN_ISA5 +#define I32 INSN_ISA32 +#define I64 INSN_ISA64 +#define I33 INSN_ISA32R2 +#define I65 INSN_ISA64R2 + +/* MIPS64 MIPS-3D ASE support. */ +#define I16 INSN_MIPS16 + +/* MIPS32 SmartMIPS ASE support. */ +#define SMT INSN_SMARTMIPS + +/* MIPS64 MIPS-3D ASE support. */ +#define M3D INSN_MIPS3D + +/* MIPS64 MDMX ASE support. */ +#define MX INSN_MDMX + +#define P3 INSN_4650 +#define L1 INSN_4010 +#define V1 (INSN_4100 | INSN_4111 | INSN_4120) +#define T3 INSN_3900 +#define M1 INSN_10000 +#define SB1 INSN_SB1 +#define N411 INSN_4111 +#define N412 INSN_4120 +#define N5 (INSN_5400 | INSN_5500) +#define N54 INSN_5400 +#define N55 INSN_5500 + +#define G1 (T3 \ + ) + +#define G2 (T3 \ + ) + +#define G3 (I4 \ + ) + +/* MIPS DSP ASE support. + NOTE: + 1. MIPS DSP ASE includes 4 accumulators ($ac0 - $ac3). $ac0 is the pair + of original HI and LO. $ac1, $ac2 and $ac3 are new registers, and have + the same structure as $ac0 (HI + LO). For DSP instructions that write or + read accumulators (that may be $ac0), we add WR_a (WR_HILO) or RD_a + (RD_HILO) attributes, such that HILO dependencies are maintained + conservatively. + + 2. For some mul. instructions that use integer registers as destinations + but destroy HI+LO as side-effect, we add WR_HILO to their attributes. + + 3. MIPS DSP ASE includes a new DSP control register, which has 6 fields + (ccond, outflag, EFI, c, scount, pos). Many DSP instructions read or write + certain fields of the DSP control register. For simplicity, we decide not + to track dependencies of these fields. + However, "bposge32" is a branch instruction that depends on the "pos" + field. In order to make sure that GAS does not reorder DSP instructions + that writes the "pos" field and "bposge32", we add DSP_VOLA (INSN_TRAP) + attribute to those instructions that write the "pos" field. */ + +#define WR_a WR_HILO /* Write dsp accumulators (reuse WR_HILO) */ +#define RD_a RD_HILO /* Read dsp accumulators (reuse RD_HILO) */ +#define MOD_a WR_a|RD_a +#define DSP_VOLA INSN_TRAP +#define D32 INSN_DSP +#define D33 INSN_DSPR2 +#define D64 INSN_DSP64 + +/* MIPS MT ASE support. */ +#define MT32 INSN_MT + +/* The order of overloaded instructions matters. Label arguments and + register arguments look the same. Instructions that can have either + for arguments must apear in the correct order in this table for the + assembler to pick the right one. In other words, entries with + immediate operands must apear after the same instruction with + registers. + + Because of the lookup algorithm used, entries with the same opcode + name must be contiguous. + + Many instructions are short hand for other instructions (i.e., The + jal instruction is short for jalr ). */ + +const struct mips_opcode mips_builtin_opcodes[] = +{ +/* These instructions appear first so that the disassembler will find + them first. The assemblers uses a hash table based on the + instruction name anyhow. */ +/* name, args, match, mask, pinfo, membership */ +{"pref", "k,o(b)", 0xcc000000, 0xfc000000, RD_b, 0, I4|I32|G3 }, +{"prefx", "h,t(b)", 0x4c00000f, 0xfc0007ff, RD_b|RD_t, 0, I4|I33 }, +{"nop", "", 0x00000000, 0xffffffff, 0, INSN2_ALIAS, I1 }, /* sll */ +{"ssnop", "", 0x00000040, 0xffffffff, 0, INSN2_ALIAS, I32|N55 }, /* sll */ +{"ehb", "", 0x000000c0, 0xffffffff, 0, INSN2_ALIAS, I33 }, /* sll */ +{"li", "t,j", 0x24000000, 0xffe00000, WR_t, INSN2_ALIAS, I1 }, /* addiu */ +{"li", "t,i", 0x34000000, 0xffe00000, WR_t, INSN2_ALIAS, I1 }, /* ori */ +{"li", "t,I", 0, (int) M_LI, INSN_MACRO, 0, I1 }, +{"move", "d,s", 0, (int) M_MOVE, INSN_MACRO, 0, I1 }, +{"move", "d,s", 0x0000002d, 0xfc1f07ff, WR_d|RD_s, INSN2_ALIAS, I3 },/* daddu */ +{"move", "d,s", 0x00000021, 0xfc1f07ff, WR_d|RD_s, INSN2_ALIAS, I1 },/* addu */ +{"move", "d,s", 0x00000025, 0xfc1f07ff, WR_d|RD_s, INSN2_ALIAS, I1 },/* or */ +{"b", "p", 0x10000000, 0xffff0000, UBD, INSN2_ALIAS, I1 },/* beq 0,0 */ +{"b", "p", 0x04010000, 0xffff0000, UBD, INSN2_ALIAS, I1 },/* bgez 0 */ +{"bal", "p", 0x04110000, 0xffff0000, UBD|WR_31, INSN2_ALIAS, I1 },/* bgezal 0*/ + +{"abs", "d,v", 0, (int) M_ABS, INSN_MACRO, 0, I1 }, +{"abs.s", "D,V", 0x46000005, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, +{"abs.d", "D,V", 0x46200005, 0xffff003f, WR_D|RD_S|FP_D, 0, I1 }, +{"abs.ps", "D,V", 0x46c00005, 0xffff003f, WR_D|RD_S|FP_D, 0, I5|I33 }, +{"add", "d,v,t", 0x00000020, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"add", "t,r,I", 0, (int) M_ADD_I, INSN_MACRO, 0, I1 }, +{"add.s", "D,V,T", 0x46000000, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, +{"add.d", "D,V,T", 0x46200000, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, +{"add.ob", "X,Y,Q", 0x7800000b, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"add.ob", "D,S,T", 0x4ac0000b, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"add.ob", "D,S,T[e]", 0x4800000b, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"add.ob", "D,S,k", 0x4bc0000b, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"add.ps", "D,V,T", 0x46c00000, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, +{"add.qh", "X,Y,Q", 0x7820000b, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"adda.ob", "Y,Q", 0x78000037, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"adda.qh", "Y,Q", 0x78200037, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"addi", "t,r,j", 0x20000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +{"addiu", "t,r,j", 0x24000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +{"addl.ob", "Y,Q", 0x78000437, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"addl.qh", "Y,Q", 0x78200437, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"addr.ps", "D,S,T", 0x46c00018, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, +{"addu", "d,v,t", 0x00000021, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"addu", "t,r,I", 0, (int) M_ADDU_I, INSN_MACRO, 0, I1 }, +{"alni.ob", "X,Y,Z,O", 0x78000018, 0xff00003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"alni.ob", "D,S,T,%", 0x48000018, 0xff00003f, WR_D|RD_S|RD_T, 0, N54 }, +{"alni.qh", "X,Y,Z,O", 0x7800001a, 0xff00003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"alnv.ps", "D,V,T,s", 0x4c00001e, 0xfc00003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, +{"alnv.ob", "X,Y,Z,s", 0x78000019, 0xfc00003f, WR_D|RD_S|RD_T|RD_s|FP_D, 0, MX|SB1 }, +{"alnv.qh", "X,Y,Z,s", 0x7800001b, 0xfc00003f, WR_D|RD_S|RD_T|RD_s|FP_D, 0, MX }, +{"and", "d,v,t", 0x00000024, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"and", "t,r,I", 0, (int) M_AND_I, INSN_MACRO, 0, I1 }, +{"and.ob", "X,Y,Q", 0x7800000c, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"and.ob", "D,S,T", 0x4ac0000c, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"and.ob", "D,S,T[e]", 0x4800000c, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"and.ob", "D,S,k", 0x4bc0000c, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"and.qh", "X,Y,Q", 0x7820000c, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"andi", "t,r,i", 0x30000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +/* b is at the top of the table. */ +/* bal is at the top of the table. */ +/* bc0[tf]l? are at the bottom of the table. */ +{"bc1any2f", "N,p", 0x45200000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, +{"bc1any2t", "N,p", 0x45210000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, +{"bc1any4f", "N,p", 0x45400000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, +{"bc1any4t", "N,p", 0x45410000, 0xffe30000, CBD|RD_CC|FP_S, 0, M3D }, +{"bc1f", "p", 0x45000000, 0xffff0000, CBD|RD_CC|FP_S, 0, I1 }, +{"bc1f", "N,p", 0x45000000, 0xffe30000, CBD|RD_CC|FP_S, 0, I4|I32 }, +{"bc1fl", "p", 0x45020000, 0xffff0000, CBL|RD_CC|FP_S, 0, I2|T3 }, +{"bc1fl", "N,p", 0x45020000, 0xffe30000, CBL|RD_CC|FP_S, 0, I4|I32 }, +{"bc1t", "p", 0x45010000, 0xffff0000, CBD|RD_CC|FP_S, 0, I1 }, +{"bc1t", "N,p", 0x45010000, 0xffe30000, CBD|RD_CC|FP_S, 0, I4|I32 }, +{"bc1tl", "p", 0x45030000, 0xffff0000, CBL|RD_CC|FP_S, 0, I2|T3 }, +{"bc1tl", "N,p", 0x45030000, 0xffe30000, CBL|RD_CC|FP_S, 0, I4|I32 }, +/* bc2* are at the bottom of the table. */ +/* bc3* are at the bottom of the table. */ +{"beqz", "s,p", 0x10000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, +{"beqzl", "s,p", 0x50000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, +{"beq", "s,t,p", 0x10000000, 0xfc000000, CBD|RD_s|RD_t, 0, I1 }, +{"beq", "s,I,p", 0, (int) M_BEQ_I, INSN_MACRO, 0, I1 }, +{"beql", "s,t,p", 0x50000000, 0xfc000000, CBL|RD_s|RD_t, 0, I2|T3 }, +{"beql", "s,I,p", 0, (int) M_BEQL_I, INSN_MACRO, 0, I2|T3 }, +{"bge", "s,t,p", 0, (int) M_BGE, INSN_MACRO, 0, I1 }, +{"bge", "s,I,p", 0, (int) M_BGE_I, INSN_MACRO, 0, I1 }, +{"bgel", "s,t,p", 0, (int) M_BGEL, INSN_MACRO, 0, I2|T3 }, +{"bgel", "s,I,p", 0, (int) M_BGEL_I, INSN_MACRO, 0, I2|T3 }, +{"bgeu", "s,t,p", 0, (int) M_BGEU, INSN_MACRO, 0, I1 }, +{"bgeu", "s,I,p", 0, (int) M_BGEU_I, INSN_MACRO, 0, I1 }, +{"bgeul", "s,t,p", 0, (int) M_BGEUL, INSN_MACRO, 0, I2|T3 }, +{"bgeul", "s,I,p", 0, (int) M_BGEUL_I, INSN_MACRO, 0, I2|T3 }, +{"bgez", "s,p", 0x04010000, 0xfc1f0000, CBD|RD_s, 0, I1 }, +{"bgezl", "s,p", 0x04030000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, +{"bgezal", "s,p", 0x04110000, 0xfc1f0000, CBD|RD_s|WR_31, 0, I1 }, +{"bgezall", "s,p", 0x04130000, 0xfc1f0000, CBL|RD_s|WR_31, 0, I2|T3 }, +{"bgt", "s,t,p", 0, (int) M_BGT, INSN_MACRO, 0, I1 }, +{"bgt", "s,I,p", 0, (int) M_BGT_I, INSN_MACRO, 0, I1 }, +{"bgtl", "s,t,p", 0, (int) M_BGTL, INSN_MACRO, 0, I2|T3 }, +{"bgtl", "s,I,p", 0, (int) M_BGTL_I, INSN_MACRO, 0, I2|T3 }, +{"bgtu", "s,t,p", 0, (int) M_BGTU, INSN_MACRO, 0, I1 }, +{"bgtu", "s,I,p", 0, (int) M_BGTU_I, INSN_MACRO, 0, I1 }, +{"bgtul", "s,t,p", 0, (int) M_BGTUL, INSN_MACRO, 0, I2|T3 }, +{"bgtul", "s,I,p", 0, (int) M_BGTUL_I, INSN_MACRO, 0, I2|T3 }, +{"bgtz", "s,p", 0x1c000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, +{"bgtzl", "s,p", 0x5c000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, +{"ble", "s,t,p", 0, (int) M_BLE, INSN_MACRO, 0, I1 }, +{"ble", "s,I,p", 0, (int) M_BLE_I, INSN_MACRO, 0, I1 }, +{"blel", "s,t,p", 0, (int) M_BLEL, INSN_MACRO, 0, I2|T3 }, +{"blel", "s,I,p", 0, (int) M_BLEL_I, INSN_MACRO, 0, I2|T3 }, +{"bleu", "s,t,p", 0, (int) M_BLEU, INSN_MACRO, 0, I1 }, +{"bleu", "s,I,p", 0, (int) M_BLEU_I, INSN_MACRO, 0, I1 }, +{"bleul", "s,t,p", 0, (int) M_BLEUL, INSN_MACRO, 0, I2|T3 }, +{"bleul", "s,I,p", 0, (int) M_BLEUL_I, INSN_MACRO, 0, I2|T3 }, +{"blez", "s,p", 0x18000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, +{"blezl", "s,p", 0x58000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, +{"blt", "s,t,p", 0, (int) M_BLT, INSN_MACRO, 0, I1 }, +{"blt", "s,I,p", 0, (int) M_BLT_I, INSN_MACRO, 0, I1 }, +{"bltl", "s,t,p", 0, (int) M_BLTL, INSN_MACRO, 0, I2|T3 }, +{"bltl", "s,I,p", 0, (int) M_BLTL_I, INSN_MACRO, 0, I2|T3 }, +{"bltu", "s,t,p", 0, (int) M_BLTU, INSN_MACRO, 0, I1 }, +{"bltu", "s,I,p", 0, (int) M_BLTU_I, INSN_MACRO, 0, I1 }, +{"bltul", "s,t,p", 0, (int) M_BLTUL, INSN_MACRO, 0, I2|T3 }, +{"bltul", "s,I,p", 0, (int) M_BLTUL_I, INSN_MACRO, 0, I2|T3 }, +{"bltz", "s,p", 0x04000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, +{"bltzl", "s,p", 0x04020000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, +{"bltzal", "s,p", 0x04100000, 0xfc1f0000, CBD|RD_s|WR_31, 0, I1 }, +{"bltzall", "s,p", 0x04120000, 0xfc1f0000, CBL|RD_s|WR_31, 0, I2|T3 }, +{"bnez", "s,p", 0x14000000, 0xfc1f0000, CBD|RD_s, 0, I1 }, +{"bnezl", "s,p", 0x54000000, 0xfc1f0000, CBL|RD_s, 0, I2|T3 }, +{"bne", "s,t,p", 0x14000000, 0xfc000000, CBD|RD_s|RD_t, 0, I1 }, +{"bne", "s,I,p", 0, (int) M_BNE_I, INSN_MACRO, 0, I1 }, +{"bnel", "s,t,p", 0x54000000, 0xfc000000, CBL|RD_s|RD_t, 0, I2|T3 }, +{"bnel", "s,I,p", 0, (int) M_BNEL_I, INSN_MACRO, 0, I2|T3 }, +{"break", "", 0x0000000d, 0xffffffff, TRAP, 0, I1 }, +{"break", "c", 0x0000000d, 0xfc00ffff, TRAP, 0, I1 }, +{"break", "c,q", 0x0000000d, 0xfc00003f, TRAP, 0, I1 }, +{"c.f.d", "S,T", 0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.f.d", "M,S,T", 0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.f.s", "S,T", 0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.f.s", "M,S,T", 0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.f.ps", "S,T", 0x46c00030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.f.ps", "M,S,T", 0x46c00030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.un.d", "S,T", 0x46200031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.un.d", "M,S,T", 0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.un.s", "S,T", 0x46000031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.un.s", "M,S,T", 0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.un.ps", "S,T", 0x46c00031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.un.ps", "M,S,T", 0x46c00031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.eq.d", "S,T", 0x46200032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.eq.s", "S,T", 0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.eq.ob", "Y,Q", 0x78000001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"c.eq.ob", "S,T", 0x4ac00001, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.eq.ob", "S,T[e]", 0x48000001, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.eq.ob", "S,k", 0x4bc00001, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.eq.ps", "S,T", 0x46c00032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.eq.ps", "M,S,T", 0x46c00032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.eq.qh", "Y,Q", 0x78200001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX }, +{"c.ueq.d", "S,T", 0x46200033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.ueq.d", "M,S,T", 0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.ueq.s", "S,T", 0x46000033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.ueq.s", "M,S,T", 0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.ueq.ps","S,T", 0x46c00033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ueq.ps","M,S,T", 0x46c00033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.olt.d", "S,T", 0x46200034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.olt.d", "M,S,T", 0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.olt.s", "S,T", 0x46000034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.olt.s", "M,S,T", 0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.olt.ps","S,T", 0x46c00034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.olt.ps","M,S,T", 0x46c00034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ult.d", "S,T", 0x46200035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.ult.d", "M,S,T", 0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.ult.s", "S,T", 0x46000035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.ult.s", "M,S,T", 0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.ult.ps","S,T", 0x46c00035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ult.ps","M,S,T", 0x46c00035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ole.d", "S,T", 0x46200036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.ole.d", "M,S,T", 0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.ole.s", "S,T", 0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.ole.s", "M,S,T", 0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.ole.ps","S,T", 0x46c00036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ole.ps","M,S,T", 0x46c00036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ule.d", "S,T", 0x46200037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.ule.d", "M,S,T", 0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.ule.s", "S,T", 0x46000037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.ule.s", "M,S,T", 0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.ule.ps","S,T", 0x46c00037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ule.ps","M,S,T", 0x46c00037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.sf.d", "S,T", 0x46200038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.sf.d", "M,S,T", 0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.sf.s", "S,T", 0x46000038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.sf.s", "M,S,T", 0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.sf.ps", "S,T", 0x46c00038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.sf.ps", "M,S,T", 0x46c00038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ngle.d","S,T", 0x46200039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.ngle.d","M,S,T", 0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.ngle.s","S,T", 0x46000039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.ngle.s","M,S,T", 0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.ngle.ps","S,T", 0x46c00039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ngle.ps","M,S,T", 0x46c00039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.seq.d", "S,T", 0x4620003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.seq.d", "M,S,T", 0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.seq.s", "S,T", 0x4600003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.seq.s", "M,S,T", 0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.seq.ps","S,T", 0x46c0003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.seq.ps","M,S,T", 0x46c0003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ngl.d", "S,T", 0x4620003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.ngl.d", "M,S,T", 0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.ngl.s", "S,T", 0x4600003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.ngl.s", "M,S,T", 0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.ngl.ps","S,T", 0x46c0003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ngl.ps","M,S,T", 0x46c0003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.lt.d", "S,T", 0x4620003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.lt.d", "M,S,T", 0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.lt.s", "S,T", 0x4600003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.lt.s", "M,S,T", 0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.lt.ob", "Y,Q", 0x78000004, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"c.lt.ob", "S,T", 0x4ac00004, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.lt.ob", "S,T[e]", 0x48000004, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.lt.ob", "S,k", 0x4bc00004, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.lt.ps", "S,T", 0x46c0003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.lt.ps", "M,S,T", 0x46c0003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.lt.qh", "Y,Q", 0x78200004, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX }, +{"c.nge.d", "S,T", 0x4620003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.nge.d", "M,S,T", 0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.nge.s", "S,T", 0x4600003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.nge.s", "M,S,T", 0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.nge.ps","S,T", 0x46c0003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.nge.ps","M,S,T", 0x46c0003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.le.d", "S,T", 0x4620003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.le.d", "M,S,T", 0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.le.s", "S,T", 0x4600003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.le.s", "M,S,T", 0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.le.ob", "Y,Q", 0x78000005, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"c.le.ob", "S,T", 0x4ac00005, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.le.ob", "S,T[e]", 0x48000005, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.le.ob", "S,k", 0x4bc00005, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"c.le.ps", "S,T", 0x46c0003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.le.ps", "M,S,T", 0x46c0003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.le.qh", "Y,Q", 0x78200005, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, 0, MX }, +{"c.ngt.d", "S,T", 0x4620003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, +{"c.ngt.d", "M,S,T", 0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I4|I32 }, +{"c.ngt.s", "S,T", 0x4600003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, 0, I1 }, +{"c.ngt.s", "M,S,T", 0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, I4|I32 }, +{"c.ngt.ps","S,T", 0x46c0003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"c.ngt.ps","M,S,T", 0x46c0003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, I5|I33 }, +{"cabs.eq.d", "M,S,T", 0x46200072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.eq.ps", "M,S,T", 0x46c00072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.eq.s", "M,S,T", 0x46000072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.f.d", "M,S,T", 0x46200070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.f.ps", "M,S,T", 0x46c00070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.f.s", "M,S,T", 0x46000070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.le.d", "M,S,T", 0x4620007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.le.ps", "M,S,T", 0x46c0007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.le.s", "M,S,T", 0x4600007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.lt.d", "M,S,T", 0x4620007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.lt.ps", "M,S,T", 0x46c0007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.lt.s", "M,S,T", 0x4600007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.nge.d", "M,S,T", 0x4620007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.nge.ps","M,S,T", 0x46c0007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.nge.s", "M,S,T", 0x4600007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.ngl.d", "M,S,T", 0x4620007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ngl.ps","M,S,T", 0x46c0007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ngl.s", "M,S,T", 0x4600007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.ngle.d","M,S,T", 0x46200079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ngle.ps","M,S,T",0x46c00079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ngle.s","M,S,T", 0x46000079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.ngt.d", "M,S,T", 0x4620007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ngt.ps","M,S,T", 0x46c0007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ngt.s", "M,S,T", 0x4600007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.ole.d", "M,S,T", 0x46200076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ole.ps","M,S,T", 0x46c00076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ole.s", "M,S,T", 0x46000076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.olt.d", "M,S,T", 0x46200074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.olt.ps","M,S,T", 0x46c00074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.olt.s", "M,S,T", 0x46000074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.seq.d", "M,S,T", 0x4620007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.seq.ps","M,S,T", 0x46c0007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.seq.s", "M,S,T", 0x4600007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.sf.d", "M,S,T", 0x46200078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.sf.ps", "M,S,T", 0x46c00078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.sf.s", "M,S,T", 0x46000078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.ueq.d", "M,S,T", 0x46200073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ueq.ps","M,S,T", 0x46c00073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ueq.s", "M,S,T", 0x46000073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.ule.d", "M,S,T", 0x46200077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ule.ps","M,S,T", 0x46c00077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ule.s", "M,S,T", 0x46000077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.ult.d", "M,S,T", 0x46200075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ult.ps","M,S,T", 0x46c00075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.ult.s", "M,S,T", 0x46000075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +{"cabs.un.d", "M,S,T", 0x46200071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.un.ps", "M,S,T", 0x46c00071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, 0, M3D }, +{"cabs.un.s", "M,S,T", 0x46000071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, 0, M3D }, +/* CW4010 instructions which are aliases for the cache instruction. */ +{"flushi", "", 0xbc010000, 0xffffffff, 0, 0, L1 }, +{"flushd", "", 0xbc020000, 0xffffffff, 0, 0, L1 }, +{"flushid", "", 0xbc030000, 0xffffffff, 0, 0, L1 }, +{"wb", "o(b)", 0xbc040000, 0xfc1f0000, SM|RD_b, 0, L1 }, +{"cache", "k,o(b)", 0xbc000000, 0xfc000000, RD_b, 0, I3|I32|T3}, +{"cache", "k,A(b)", 0, (int) M_CACHE_AB, INSN_MACRO, 0, I3|I32|T3}, +{"ceil.l.d", "D,S", 0x4620000a, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, +{"ceil.l.s", "D,S", 0x4600000a, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, +{"ceil.w.d", "D,S", 0x4620000e, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, +{"ceil.w.s", "D,S", 0x4600000e, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, +{"cfc0", "t,G", 0x40400000, 0xffe007ff, LCD|WR_t|RD_C0, 0, I1 }, +{"cfc1", "t,G", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, 0, I1 }, +{"cfc1", "t,S", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, 0, I1 }, +/* cfc2 is at the bottom of the table. */ +/* cfc3 is at the bottom of the table. */ +{"cftc1", "d,E", 0x41000023, 0xffe007ff, TRAP|LCD|WR_d|RD_C1|FP_S, 0, MT32 }, +{"cftc1", "d,T", 0x41000023, 0xffe007ff, TRAP|LCD|WR_d|RD_C1|FP_S, 0, MT32 }, +{"cftc2", "d,E", 0x41000025, 0xffe007ff, TRAP|LCD|WR_d|RD_C2, 0, MT32 }, +{"clo", "U,s", 0x70000021, 0xfc0007ff, WR_d|WR_t|RD_s, 0, I32|N55 }, +{"clz", "U,s", 0x70000020, 0xfc0007ff, WR_d|WR_t|RD_s, 0, I32|N55 }, +{"ctc0", "t,G", 0x40c00000, 0xffe007ff, COD|RD_t|WR_CC, 0, I1 }, +{"ctc1", "t,G", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, 0, I1 }, +{"ctc1", "t,S", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, 0, I1 }, +/* ctc2 is at the bottom of the table. */ +/* ctc3 is at the bottom of the table. */ +{"cttc1", "t,g", 0x41800023, 0xffe007ff, TRAP|COD|RD_t|WR_CC|FP_S, 0, MT32 }, +{"cttc1", "t,S", 0x41800023, 0xffe007ff, TRAP|COD|RD_t|WR_CC|FP_S, 0, MT32 }, +{"cttc2", "t,g", 0x41800025, 0xffe007ff, TRAP|COD|RD_t|WR_CC, 0, MT32 }, +{"cvt.d.l", "D,S", 0x46a00021, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, +{"cvt.d.s", "D,S", 0x46000021, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, +{"cvt.d.w", "D,S", 0x46800021, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, +{"cvt.l.d", "D,S", 0x46200025, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, +{"cvt.l.s", "D,S", 0x46000025, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, +{"cvt.s.l", "D,S", 0x46a00020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, +{"cvt.s.d", "D,S", 0x46200020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, +{"cvt.s.w", "D,S", 0x46800020, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, +{"cvt.s.pl","D,S", 0x46c00028, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I5|I33 }, +{"cvt.s.pu","D,S", 0x46c00020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I5|I33 }, +{"cvt.w.d", "D,S", 0x46200024, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I1 }, +{"cvt.w.s", "D,S", 0x46000024, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, +{"cvt.ps.pw", "D,S", 0x46800026, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, M3D }, +{"cvt.ps.s","D,V,T", 0x46000026, 0xffe0003f, WR_D|RD_S|RD_T|FP_S|FP_D, 0, I5|I33 }, +{"cvt.pw.ps", "D,S", 0x46c00024, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, M3D }, +{"dabs", "d,v", 0, (int) M_DABS, INSN_MACRO, 0, I3 }, +{"dadd", "d,v,t", 0x0000002c, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, +{"dadd", "t,r,I", 0, (int) M_DADD_I, INSN_MACRO, 0, I3 }, +{"daddi", "t,r,j", 0x60000000, 0xfc000000, WR_t|RD_s, 0, I3 }, +{"daddiu", "t,r,j", 0x64000000, 0xfc000000, WR_t|RD_s, 0, I3 }, +{"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, +{"daddu", "t,r,I", 0, (int) M_DADDU_I, INSN_MACRO, 0, I3 }, +{"dbreak", "", 0x7000003f, 0xffffffff, 0, 0, N5 }, +{"dclo", "U,s", 0x70000025, 0xfc0007ff, RD_s|WR_d|WR_t, 0, I64|N55 }, +{"dclz", "U,s", 0x70000024, 0xfc0007ff, RD_s|WR_d|WR_t, 0, I64|N55 }, +/* dctr and dctw are used on the r5000. */ +{"dctr", "o(b)", 0xbc050000, 0xfc1f0000, RD_b, 0, I3 }, +{"dctw", "o(b)", 0xbc090000, 0xfc1f0000, RD_b, 0, I3 }, +{"deret", "", 0x4200001f, 0xffffffff, 0, 0, I32|G2 }, +{"dext", "t,r,I,+I", 0, (int) M_DEXT, INSN_MACRO, 0, I65 }, +{"dext", "t,r,+A,+C", 0x7c000003, 0xfc00003f, WR_t|RD_s, 0, I65 }, +{"dextm", "t,r,+A,+G", 0x7c000001, 0xfc00003f, WR_t|RD_s, 0, I65 }, +{"dextu", "t,r,+E,+H", 0x7c000002, 0xfc00003f, WR_t|RD_s, 0, I65 }, +/* For ddiv, see the comments about div. */ +{"ddiv", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, +{"ddiv", "d,v,t", 0, (int) M_DDIV_3, INSN_MACRO, 0, I3 }, +{"ddiv", "d,v,I", 0, (int) M_DDIV_3I, INSN_MACRO, 0, I3 }, +/* For ddivu, see the comments about div. */ +{"ddivu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, +{"ddivu", "d,v,t", 0, (int) M_DDIVU_3, INSN_MACRO, 0, I3 }, +{"ddivu", "d,v,I", 0, (int) M_DDIVU_3I, INSN_MACRO, 0, I3 }, +{"di", "", 0x41606000, 0xffffffff, WR_t|WR_C0, 0, I33 }, +{"di", "t", 0x41606000, 0xffe0ffff, WR_t|WR_C0, 0, I33 }, +{"dins", "t,r,I,+I", 0, (int) M_DINS, INSN_MACRO, 0, I65 }, +{"dins", "t,r,+A,+B", 0x7c000007, 0xfc00003f, WR_t|RD_s, 0, I65 }, +{"dinsm", "t,r,+A,+F", 0x7c000005, 0xfc00003f, WR_t|RD_s, 0, I65 }, +{"dinsu", "t,r,+E,+F", 0x7c000006, 0xfc00003f, WR_t|RD_s, 0, I65 }, +/* The MIPS assembler treats the div opcode with two operands as + though the first operand appeared twice (the first operand is both + a source and a destination). To get the div machine instruction, + you must use an explicit destination of $0. */ +{"div", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, +{"div", "z,t", 0x0000001a, 0xffe0ffff, RD_s|RD_t|WR_HILO, 0, I1 }, +{"div", "d,v,t", 0, (int) M_DIV_3, INSN_MACRO, 0, I1 }, +{"div", "d,v,I", 0, (int) M_DIV_3I, INSN_MACRO, 0, I1 }, +{"div.d", "D,V,T", 0x46200003, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, +{"div.s", "D,V,T", 0x46000003, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, +{"div.ps", "D,V,T", 0x46c00003, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, SB1 }, +/* For divu, see the comments about div. */ +{"divu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, +{"divu", "z,t", 0x0000001b, 0xffe0ffff, RD_s|RD_t|WR_HILO, 0, I1 }, +{"divu", "d,v,t", 0, (int) M_DIVU_3, INSN_MACRO, 0, I1 }, +{"divu", "d,v,I", 0, (int) M_DIVU_3I, INSN_MACRO, 0, I1 }, +{"dla", "t,A(b)", 0, (int) M_DLA_AB, INSN_MACRO, 0, I3 }, +{"dlca", "t,A(b)", 0, (int) M_DLCA_AB, INSN_MACRO, 0, I3 }, +{"dli", "t,j", 0x24000000, 0xffe00000, WR_t, 0, I3 }, /* addiu */ +{"dli", "t,i", 0x34000000, 0xffe00000, WR_t, 0, I3 }, /* ori */ +{"dli", "t,I", 0, (int) M_DLI, INSN_MACRO, 0, I3 }, +{"dmacc", "d,s,t", 0x00000029, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmacchi", "d,s,t", 0x00000229, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmacchis", "d,s,t", 0x00000629, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmacchiu", "d,s,t", 0x00000269, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmacchius", "d,s,t", 0x00000669, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmaccs", "d,s,t", 0x00000429, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmaccu", "d,s,t", 0x00000069, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmaccus", "d,s,t", 0x00000469, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, 0, N412 }, +{"dmadd16", "s,t", 0x00000029, 0xfc00ffff, RD_s|RD_t|MOD_LO, 0, N411 }, +{"dmfc0", "t,G", 0x40200000, 0xffe007ff, LCD|WR_t|RD_C0, 0, I3 }, +{"dmfc0", "t,+D", 0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I64 }, +{"dmfc0", "t,G,H", 0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I64 }, +{"dmt", "", 0x41600bc1, 0xffffffff, TRAP, 0, MT32 }, +{"dmt", "t", 0x41600bc1, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, +{"dmtc0", "t,G", 0x40a00000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, 0, I3 }, +{"dmtc0", "t,+D", 0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I64 }, +{"dmtc0", "t,G,H", 0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I64 }, +{"dmfc1", "t,S", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I3 }, +{"dmfc1", "t,G", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I3 }, +{"dmtc1", "t,S", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I3 }, +{"dmtc1", "t,G", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I3 }, +/* dmfc2 is at the bottom of the table. */ +/* dmtc2 is at the bottom of the table. */ +/* dmfc3 is at the bottom of the table. */ +/* dmtc3 is at the bottom of the table. */ +{"dmul", "d,v,t", 0, (int) M_DMUL, INSN_MACRO, 0, I3 }, +{"dmul", "d,v,I", 0, (int) M_DMUL_I, INSN_MACRO, 0, I3 }, +{"dmulo", "d,v,t", 0, (int) M_DMULO, INSN_MACRO, 0, I3 }, +{"dmulo", "d,v,I", 0, (int) M_DMULO_I, INSN_MACRO, 0, I3 }, +{"dmulou", "d,v,t", 0, (int) M_DMULOU, INSN_MACRO, 0, I3 }, +{"dmulou", "d,v,I", 0, (int) M_DMULOU_I, INSN_MACRO, 0, I3 }, +{"dmult", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, +{"dmultu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, +{"dneg", "d,w", 0x0000002e, 0xffe007ff, WR_d|RD_t, 0, I3 }, /* dsub 0 */ +{"dnegu", "d,w", 0x0000002f, 0xffe007ff, WR_d|RD_t, 0, I3 }, /* dsubu 0*/ +{"drem", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, +{"drem", "d,v,t", 3, (int) M_DREM_3, INSN_MACRO, 0, I3 }, +{"drem", "d,v,I", 3, (int) M_DREM_3I, INSN_MACRO, 0, I3 }, +{"dremu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, +{"dremu", "d,v,t", 3, (int) M_DREMU_3, INSN_MACRO, 0, I3 }, +{"dremu", "d,v,I", 3, (int) M_DREMU_3I, INSN_MACRO, 0, I3 }, +{"dret", "", 0x7000003e, 0xffffffff, 0, 0, N5 }, +{"drol", "d,v,t", 0, (int) M_DROL, INSN_MACRO, 0, I3 }, +{"drol", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, 0, I3 }, +{"dror", "d,v,t", 0, (int) M_DROR, INSN_MACRO, 0, I3 }, +{"dror", "d,v,I", 0, (int) M_DROR_I, INSN_MACRO, 0, I3 }, +{"dror", "d,w,<", 0x0020003a, 0xffe0003f, WR_d|RD_t, 0, N5|I65 }, +{"drorv", "d,t,s", 0x00000056, 0xfc0007ff, RD_t|RD_s|WR_d, 0, N5|I65 }, +{"dror32", "d,w,<", 0x0020003e, 0xffe0003f, WR_d|RD_t, 0, N5|I65 }, +{"drotl", "d,v,t", 0, (int) M_DROL, INSN_MACRO, 0, I65 }, +{"drotl", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, 0, I65 }, +{"drotr", "d,v,t", 0, (int) M_DROR, INSN_MACRO, 0, I65 }, +{"drotr", "d,v,I", 0, (int) M_DROR_I, INSN_MACRO, 0, I65 }, +{"drotrv", "d,t,s", 0x00000056, 0xfc0007ff, RD_t|RD_s|WR_d, 0, I65 }, +{"drotr32", "d,w,<", 0x0020003e, 0xffe0003f, WR_d|RD_t, 0, I65 }, +{"dsbh", "d,w", 0x7c0000a4, 0xffe007ff, WR_d|RD_t, 0, I65 }, +{"dshd", "d,w", 0x7c000164, 0xffe007ff, WR_d|RD_t, 0, I65 }, +{"dsllv", "d,t,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, +{"dsll32", "d,w,<", 0x0000003c, 0xffe0003f, WR_d|RD_t, 0, I3 }, +{"dsll", "d,w,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, /* dsllv */ +{"dsll", "d,w,>", 0x0000003c, 0xffe0003f, WR_d|RD_t, 0, I3 }, /* dsll32 */ +{"dsll", "d,w,<", 0x00000038, 0xffe0003f, WR_d|RD_t, 0, I3 }, +{"dsrav", "d,t,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, +{"dsra32", "d,w,<", 0x0000003f, 0xffe0003f, WR_d|RD_t, 0, I3 }, +{"dsra", "d,w,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, /* dsrav */ +{"dsra", "d,w,>", 0x0000003f, 0xffe0003f, WR_d|RD_t, 0, I3 }, /* dsra32 */ +{"dsra", "d,w,<", 0x0000003b, 0xffe0003f, WR_d|RD_t, 0, I3 }, +{"dsrlv", "d,t,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, +{"dsrl32", "d,w,<", 0x0000003e, 0xffe0003f, WR_d|RD_t, 0, I3 }, +{"dsrl", "d,w,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I3 }, /* dsrlv */ +{"dsrl", "d,w,>", 0x0000003e, 0xffe0003f, WR_d|RD_t, 0, I3 }, /* dsrl32 */ +{"dsrl", "d,w,<", 0x0000003a, 0xffe0003f, WR_d|RD_t, 0, I3 }, +{"dsub", "d,v,t", 0x0000002e, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, +{"dsub", "d,v,I", 0, (int) M_DSUB_I, INSN_MACRO, 0, I3 }, +{"dsubu", "d,v,t", 0x0000002f, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, +{"dsubu", "d,v,I", 0, (int) M_DSUBU_I, INSN_MACRO, 0, I3 }, +{"dvpe", "", 0x41600001, 0xffffffff, TRAP, 0, MT32 }, +{"dvpe", "t", 0x41600001, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, +{"ei", "", 0x41606020, 0xffffffff, WR_t|WR_C0, 0, I33 }, +{"ei", "t", 0x41606020, 0xffe0ffff, WR_t|WR_C0, 0, I33 }, +{"emt", "", 0x41600be1, 0xffffffff, TRAP, 0, MT32 }, +{"emt", "t", 0x41600be1, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, +{"eret", "", 0x42000018, 0xffffffff, 0, 0, I3|I32 }, +{"evpe", "", 0x41600021, 0xffffffff, TRAP, 0, MT32 }, +{"evpe", "t", 0x41600021, 0xffe0ffff, TRAP|WR_t, 0, MT32 }, +{"ext", "t,r,+A,+C", 0x7c000000, 0xfc00003f, WR_t|RD_s, 0, I33 }, +{"floor.l.d", "D,S", 0x4620000b, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, +{"floor.l.s", "D,S", 0x4600000b, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, +{"floor.w.d", "D,S", 0x4620000f, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, +{"floor.w.s", "D,S", 0x4600000f, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, +{"hibernate","", 0x42000023, 0xffffffff, 0, 0, V1 }, +{"ins", "t,r,+A,+B", 0x7c000004, 0xfc00003f, WR_t|RD_s, 0, I33 }, +{"jr", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 }, +/* jr.hb is officially MIPS{32,64}R2, but it works on R1 as jr with + the same hazard barrier effect. */ +{"jr.hb", "s", 0x00000408, 0xfc1fffff, UBD|RD_s, 0, I32 }, +{"j", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 }, /* jr */ +/* SVR4 PIC code requires special handling for j, so it must be a + macro. */ +{"j", "a", 0, (int) M_J_A, INSN_MACRO, 0, I1 }, +/* This form of j is used by the disassembler and internally by the + assembler, but will never match user input (because the line above + will match first). */ +{"j", "a", 0x08000000, 0xfc000000, UBD, 0, I1 }, +{"jalr", "s", 0x0000f809, 0xfc1fffff, UBD|RD_s|WR_d, 0, I1 }, +{"jalr", "d,s", 0x00000009, 0xfc1f07ff, UBD|RD_s|WR_d, 0, I1 }, +/* jalr.hb is officially MIPS{32,64}R2, but it works on R1 as jalr + with the same hazard barrier effect. */ +{"jalr.hb", "s", 0x0000fc09, 0xfc1fffff, UBD|RD_s|WR_d, 0, I32 }, +{"jalr.hb", "d,s", 0x00000409, 0xfc1f07ff, UBD|RD_s|WR_d, 0, I32 }, +/* SVR4 PIC code requires special handling for jal, so it must be a + macro. */ +{"jal", "d,s", 0, (int) M_JAL_2, INSN_MACRO, 0, I1 }, +{"jal", "s", 0, (int) M_JAL_1, INSN_MACRO, 0, I1 }, +{"jal", "a", 0, (int) M_JAL_A, INSN_MACRO, 0, I1 }, +/* This form of jal is used by the disassembler and internally by the + assembler, but will never match user input (because the line above + will match first). */ +{"jal", "a", 0x0c000000, 0xfc000000, UBD|WR_31, 0, I1 }, +{"jalx", "a", 0x74000000, 0xfc000000, UBD|WR_31, 0, I16 }, +{"la", "t,A(b)", 0, (int) M_LA_AB, INSN_MACRO, 0, I1 }, +{"lb", "t,o(b)", 0x80000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, +{"lb", "t,A(b)", 0, (int) M_LB_AB, INSN_MACRO, 0, I1 }, +{"lbu", "t,o(b)", 0x90000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, +{"lbu", "t,A(b)", 0, (int) M_LBU_AB, INSN_MACRO, 0, I1 }, +{"lca", "t,A(b)", 0, (int) M_LCA_AB, INSN_MACRO, 0, I1 }, +{"ld", "t,o(b)", 0xdc000000, 0xfc000000, WR_t|RD_b, 0, I3 }, +{"ld", "t,o(b)", 0, (int) M_LD_OB, INSN_MACRO, 0, I1 }, +{"ld", "t,A(b)", 0, (int) M_LD_AB, INSN_MACRO, 0, I1 }, +{"ldc1", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, 0, I2 }, +{"ldc1", "E,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, 0, I2 }, +{"ldc1", "T,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, 0, I2 }, +{"ldc1", "E,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, 0, I2 }, +{"l.d", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, 0, I2 }, /* ldc1 */ +{"l.d", "T,o(b)", 0, (int) M_L_DOB, INSN_MACRO, 0, I1 }, +{"l.d", "T,A(b)", 0, (int) M_L_DAB, INSN_MACRO, 0, I1 }, +{"ldc2", "E,o(b)", 0xd8000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I2 }, +{"ldc2", "E,A(b)", 0, (int) M_LDC2_AB, INSN_MACRO, 0, I2 }, +{"ldc3", "E,o(b)", 0xdc000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I2 }, +{"ldc3", "E,A(b)", 0, (int) M_LDC3_AB, INSN_MACRO, 0, I2 }, +{"ldl", "t,o(b)", 0x68000000, 0xfc000000, LDD|WR_t|RD_b, 0, I3 }, +{"ldl", "t,A(b)", 0, (int) M_LDL_AB, INSN_MACRO, 0, I3 }, +{"ldr", "t,o(b)", 0x6c000000, 0xfc000000, LDD|WR_t|RD_b, 0, I3 }, +{"ldr", "t,A(b)", 0, (int) M_LDR_AB, INSN_MACRO, 0, I3 }, +{"ldxc1", "D,t(b)", 0x4c000001, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0, I4|I33 }, +{"lh", "t,o(b)", 0x84000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, +{"lh", "t,A(b)", 0, (int) M_LH_AB, INSN_MACRO, 0, I1 }, +{"lhu", "t,o(b)", 0x94000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, +{"lhu", "t,A(b)", 0, (int) M_LHU_AB, INSN_MACRO, 0, I1 }, +/* li is at the start of the table. */ +{"li.d", "t,F", 0, (int) M_LI_D, INSN_MACRO, 0, I1 }, +{"li.d", "T,L", 0, (int) M_LI_DD, INSN_MACRO, 0, I1 }, +{"li.s", "t,f", 0, (int) M_LI_S, INSN_MACRO, 0, I1 }, +{"li.s", "T,l", 0, (int) M_LI_SS, INSN_MACRO, 0, I1 }, +{"ll", "t,o(b)", 0xc0000000, 0xfc000000, LDD|RD_b|WR_t, 0, I2 }, +{"ll", "t,A(b)", 0, (int) M_LL_AB, INSN_MACRO, 0, I2 }, +{"lld", "t,o(b)", 0xd0000000, 0xfc000000, LDD|RD_b|WR_t, 0, I3 }, +{"lld", "t,A(b)", 0, (int) M_LLD_AB, INSN_MACRO, 0, I3 }, +{"lui", "t,u", 0x3c000000, 0xffe00000, WR_t, 0, I1 }, +{"luxc1", "D,t(b)", 0x4c000005, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0, I5|I33|N55}, +{"lw", "t,o(b)", 0x8c000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, +{"lw", "t,A(b)", 0, (int) M_LW_AB, INSN_MACRO, 0, I1 }, +{"lwc0", "E,o(b)", 0xc0000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I1 }, +{"lwc0", "E,A(b)", 0, (int) M_LWC0_AB, INSN_MACRO, 0, I1 }, +{"lwc1", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, 0, I1 }, +{"lwc1", "E,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, 0, I1 }, +{"lwc1", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, 0, I1 }, +{"lwc1", "E,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, 0, I1 }, +{"l.s", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, 0, I1 }, /* lwc1 */ +{"l.s", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, 0, I1 }, +{"lwc2", "E,o(b)", 0xc8000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I1 }, +{"lwc2", "E,A(b)", 0, (int) M_LWC2_AB, INSN_MACRO, 0, I1 }, +{"lwc3", "E,o(b)", 0xcc000000, 0xfc000000, CLD|RD_b|WR_CC, 0, I1 }, +{"lwc3", "E,A(b)", 0, (int) M_LWC3_AB, INSN_MACRO, 0, I1 }, +{"lwl", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, +{"lwl", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO, 0, I1 }, +{"lcache", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, 0, I2 }, /* same */ +{"lcache", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO, 0, I2 }, /* as lwl */ +{"lwr", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, 0, I1 }, +{"lwr", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO, 0, I1 }, +{"flush", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, 0, I2 }, /* same */ +{"flush", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO, 0, I2 }, /* as lwr */ +{"fork", "d,s,t", 0x7c000008, 0xfc0007ff, TRAP|WR_d|RD_s|RD_t, 0, MT32 }, +{"lwu", "t,o(b)", 0x9c000000, 0xfc000000, LDD|RD_b|WR_t, 0, I3 }, +{"lwu", "t,A(b)", 0, (int) M_LWU_AB, INSN_MACRO, 0, I3 }, +{"lwxc1", "D,t(b)", 0x4c000000, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0, I4|I33 }, +{"lwxs", "d,t(b)", 0x70000088, 0xfc0007ff, LDD|RD_b|RD_t|WR_d, 0, SMT }, +{"macc", "d,s,t", 0x00000028, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"macc", "d,s,t", 0x00000158, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"maccs", "d,s,t", 0x00000428, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"macchi", "d,s,t", 0x00000228, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"macchi", "d,s,t", 0x00000358, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"macchis", "d,s,t", 0x00000628, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"macchiu", "d,s,t", 0x00000268, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"macchiu", "d,s,t", 0x00000359, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"macchius","d,s,t", 0x00000668, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"maccu", "d,s,t", 0x00000068, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"maccu", "d,s,t", 0x00000159, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"maccus", "d,s,t", 0x00000468, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N412 }, +{"mad", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, P3 }, +{"madu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, P3 }, +{"madd.d", "D,R,S,T", 0x4c000021, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, +{"madd.s", "D,R,S,T", 0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, +{"madd.ps", "D,R,S,T", 0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, +{"madd", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, +{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, +{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, G1 }, +{"madd", "7,s,t", 0x70000000, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"madd", "d,s,t", 0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, +{"maddp", "s,t", 0x70000441, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, SMT }, +{"maddu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, +{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, +{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, G1 }, +{"maddu", "7,s,t", 0x70000001, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"maddu", "d,s,t", 0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, +{"madd16", "s,t", 0x00000028, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, N411 }, +{"max.ob", "X,Y,Q", 0x78000007, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"max.ob", "D,S,T", 0x4ac00007, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"max.ob", "D,S,T[e]", 0x48000007, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"max.ob", "D,S,k", 0x4bc00007, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"max.qh", "X,Y,Q", 0x78200007, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"mfpc", "t,P", 0x4000c801, 0xffe0ffc1, LCD|WR_t|RD_C0, 0, M1|N5 }, +{"mfps", "t,P", 0x4000c800, 0xffe0ffc1, LCD|WR_t|RD_C0, 0, M1|N5 }, +{"mftacx", "d", 0x41020021, 0xffff07ff, TRAP|WR_d|RD_a, 0, MT32 }, +{"mftacx", "d,*", 0x41020021, 0xfff307ff, TRAP|WR_d|RD_a, 0, MT32 }, +{"mftc0", "d,+t", 0x41000000, 0xffe007ff, TRAP|LCD|WR_d|RD_C0, 0, MT32 }, +{"mftc0", "d,+T", 0x41000000, 0xffe007f8, TRAP|LCD|WR_d|RD_C0, 0, MT32 }, +{"mftc0", "d,E,H", 0x41000000, 0xffe007f8, TRAP|LCD|WR_d|RD_C0, 0, MT32 }, +{"mftc1", "d,T", 0x41000022, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_S, 0, MT32 }, +{"mftc1", "d,E", 0x41000022, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_S, 0, MT32 }, +{"mftc2", "d,E", 0x41000024, 0xffe007ff, TRAP|LCD|WR_d|RD_C2, 0, MT32 }, +{"mftdsp", "d", 0x41100021, 0xffff07ff, TRAP|WR_d, 0, MT32 }, +{"mftgpr", "d,t", 0x41000020, 0xffe007ff, TRAP|WR_d|RD_t, 0, MT32 }, +{"mfthc1", "d,T", 0x41000032, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_D, 0, MT32 }, +{"mfthc1", "d,E", 0x41000032, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_D, 0, MT32 }, +{"mfthc2", "d,E", 0x41000034, 0xffe007ff, TRAP|LCD|WR_d|RD_C2, 0, MT32 }, +{"mfthi", "d", 0x41010021, 0xffff07ff, TRAP|WR_d|RD_a, 0, MT32 }, +{"mfthi", "d,*", 0x41010021, 0xfff307ff, TRAP|WR_d|RD_a, 0, MT32 }, +{"mftlo", "d", 0x41000021, 0xffff07ff, TRAP|WR_d|RD_a, 0, MT32 }, +{"mftlo", "d,*", 0x41000021, 0xfff307ff, TRAP|WR_d|RD_a, 0, MT32 }, +{"mftr", "d,t,!,H,$", 0x41000000, 0xffe007c8, TRAP|WR_d, 0, MT32 }, +{"mfc0", "t,G", 0x40000000, 0xffe007ff, LCD|WR_t|RD_C0, 0, I1 }, +{"mfc0", "t,+D", 0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I32 }, +{"mfc0", "t,G,H", 0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 0, I32 }, +{"mfc1", "t,S", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, 0, I1 }, +{"mfc1", "t,G", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, 0, I1 }, +{"mfhc1", "t,S", 0x44600000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I33 }, +{"mfhc1", "t,G", 0x44600000, 0xffe007ff, LCD|WR_t|RD_S|FP_D, 0, I33 }, +/* mfc2 is at the bottom of the table. */ +/* mfhc2 is at the bottom of the table. */ +/* mfc3 is at the bottom of the table. */ +{"mfdr", "t,G", 0x7000003d, 0xffe007ff, LCD|WR_t|RD_C0, 0, N5 }, +{"mfhi", "d", 0x00000010, 0xffff07ff, WR_d|RD_HI, 0, I1 }, +{"mfhi", "d,9", 0x00000010, 0xff9f07ff, WR_d|RD_HI, 0, D32 }, +{"mflo", "d", 0x00000012, 0xffff07ff, WR_d|RD_LO, 0, I1 }, +{"mflo", "d,9", 0x00000012, 0xff9f07ff, WR_d|RD_LO, 0, D32 }, +{"mflhxu", "d", 0x00000052, 0xffff07ff, WR_d|MOD_HILO, 0, SMT }, +{"min.ob", "X,Y,Q", 0x78000006, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"min.ob", "D,S,T", 0x4ac00006, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"min.ob", "D,S,T[e]", 0x48000006, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"min.ob", "D,S,k", 0x4bc00006, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"min.qh", "X,Y,Q", 0x78200006, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"mov.d", "D,S", 0x46200006, 0xffff003f, WR_D|RD_S|FP_D, 0, I1 }, +{"mov.s", "D,S", 0x46000006, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, +{"mov.ps", "D,S", 0x46c00006, 0xffff003f, WR_D|RD_S|FP_D, 0, I5|I33 }, +{"movf", "d,s,N", 0x00000001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_S|FP_D, 0, I4|I32 }, +{"movf.d", "D,S,N", 0x46200011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I4|I32 }, +{"movf.l", "D,S,N", 0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, +{"movf.l", "X,Y,N", 0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, +{"movf.s", "D,S,N", 0x46000011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, 0, I4|I32 }, +{"movf.ps", "D,S,N", 0x46c00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I5|I33 }, +{"movn", "d,v,t", 0x0000000b, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I4|I32 }, +{"ffc", "d,v", 0x0000000b, 0xfc1f07ff, WR_d|RD_s, 0, L1 }, +{"movn.d", "D,S,t", 0x46200013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I4|I32 }, +{"movn.l", "D,S,t", 0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, +{"movn.l", "X,Y,t", 0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, +{"movn.s", "D,S,t", 0x46000013, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, 0, I4|I32 }, +{"movn.ps", "D,S,t", 0x46c00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I5|I33 }, +{"movt", "d,s,N", 0x00010001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_S|FP_D, 0, I4|I32 }, +{"movt.d", "D,S,N", 0x46210011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I4|I32 }, +{"movt.l", "D,S,N", 0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, +{"movt.l", "X,Y,N", 0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, +{"movt.s", "D,S,N", 0x46010011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, 0, I4|I32 }, +{"movt.ps", "D,S,N", 0x46c10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, I5|I33 }, +{"movz", "d,v,t", 0x0000000a, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I4|I32 }, +{"ffs", "d,v", 0x0000000a, 0xfc1f07ff, WR_d|RD_s, 0, L1 }, +{"movz.d", "D,S,t", 0x46200012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I4|I32 }, +{"movz.l", "D,S,t", 0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, +{"movz.l", "X,Y,t", 0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, MX|SB1 }, +{"movz.s", "D,S,t", 0x46000012, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, 0, I4|I32 }, +{"movz.ps", "D,S,t", 0x46c00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, 0, I5|I33 }, +{"msac", "d,s,t", 0x000001d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"msacu", "d,s,t", 0x000001d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"msachi", "d,s,t", 0x000003d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"msachiu", "d,s,t", 0x000003d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +/* move is at the top of the table. */ +{"msgn.qh", "X,Y,Q", 0x78200000, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"msub.d", "D,R,S,T", 0x4c000029, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, +{"msub.s", "D,R,S,T", 0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, +{"msub.ps", "D,R,S,T", 0x4c00002e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, +{"msub", "s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, +{"msub", "s,t", 0x70000004, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, +{"msub", "7,s,t", 0x70000004, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"msubu", "s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, +{"msubu", "s,t", 0x70000005, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, +{"msubu", "7,s,t", 0x70000005, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"mtpc", "t,P", 0x4080c801, 0xffe0ffc1, COD|RD_t|WR_C0, 0, M1|N5 }, +{"mtps", "t,P", 0x4080c800, 0xffe0ffc1, COD|RD_t|WR_C0, 0, M1|N5 }, +{"mtc0", "t,G", 0x40800000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, 0, I1 }, +{"mtc0", "t,+D", 0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I32 }, +{"mtc0", "t,G,H", 0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, 0, I32 }, +{"mtc1", "t,S", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, 0, I1 }, +{"mtc1", "t,G", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, 0, I1 }, +{"mthc1", "t,S", 0x44e00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I33 }, +{"mthc1", "t,G", 0x44e00000, 0xffe007ff, COD|RD_t|WR_S|FP_D, 0, I33 }, +/* mtc2 is at the bottom of the table. */ +/* mthc2 is at the bottom of the table. */ +/* mtc3 is at the bottom of the table. */ +{"mtdr", "t,G", 0x7080003d, 0xffe007ff, COD|RD_t|WR_C0, 0, N5 }, +{"mthi", "s", 0x00000011, 0xfc1fffff, RD_s|WR_HI, 0, I1 }, +{"mthi", "s,7", 0x00000011, 0xfc1fe7ff, RD_s|WR_HI, 0, D32 }, +{"mtlo", "s", 0x00000013, 0xfc1fffff, RD_s|WR_LO, 0, I1 }, +{"mtlo", "s,7", 0x00000013, 0xfc1fe7ff, RD_s|WR_LO, 0, D32 }, +{"mtlhx", "s", 0x00000053, 0xfc1fffff, RD_s|MOD_HILO, 0, SMT }, +{"mttc0", "t,G", 0x41800000, 0xffe007ff, TRAP|COD|RD_t|WR_C0|WR_CC, 0, MT32 }, +{"mttc0", "t,+D", 0x41800000, 0xffe007f8, TRAP|COD|RD_t|WR_C0|WR_CC, 0, MT32 }, +{"mttc0", "t,G,H", 0x41800000, 0xffe007f8, TRAP|COD|RD_t|WR_C0|WR_CC, 0, MT32 }, +{"mttc1", "t,S", 0x41800022, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_S, 0, MT32 }, +{"mttc1", "t,G", 0x41800022, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_S, 0, MT32 }, +{"mttc2", "t,g", 0x41800024, 0xffe007ff, TRAP|COD|RD_t|WR_C2|WR_CC, 0, MT32 }, +{"mttacx", "t", 0x41801021, 0xffe0ffff, TRAP|WR_a|RD_t, 0, MT32 }, +{"mttacx", "t,&", 0x41801021, 0xffe09fff, TRAP|WR_a|RD_t, 0, MT32 }, +{"mttdsp", "t", 0x41808021, 0xffe0ffff, TRAP|RD_t, 0, MT32 }, +{"mttgpr", "t,d", 0x41800020, 0xffe007ff, TRAP|WR_d|RD_t, 0, MT32 }, +{"mtthc1", "t,S", 0x41800032, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_D, 0, MT32 }, +{"mtthc1", "t,G", 0x41800032, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_D, 0, MT32 }, +{"mtthc2", "t,g", 0x41800034, 0xffe007ff, TRAP|COD|RD_t|WR_C2|WR_CC, 0, MT32 }, +{"mtthi", "t", 0x41800821, 0xffe0ffff, TRAP|WR_a|RD_t, 0, MT32 }, +{"mtthi", "t,&", 0x41800821, 0xffe09fff, TRAP|WR_a|RD_t, 0, MT32 }, +{"mttlo", "t", 0x41800021, 0xffe0ffff, TRAP|WR_a|RD_t, 0, MT32 }, +{"mttlo", "t,&", 0x41800021, 0xffe09fff, TRAP|WR_a|RD_t, 0, MT32 }, +{"mttr", "t,d,!,H,$", 0x41800000, 0xffe007c8, TRAP|RD_t, 0, MT32 }, +{"mul.d", "D,V,T", 0x46200002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, +{"mul.s", "D,V,T", 0x46000002, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, +{"mul.ob", "X,Y,Q", 0x78000030, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"mul.ob", "D,S,T", 0x4ac00030, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"mul.ob", "D,S,T[e]", 0x48000030, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"mul.ob", "D,S,k", 0x4bc00030, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"mul.ps", "D,V,T", 0x46c00002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, +{"mul.qh", "X,Y,Q", 0x78200030, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"mul", "d,v,t", 0x70000002, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, I32|P3|N55}, +{"mul", "d,s,t", 0x00000058, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N54 }, +{"mul", "d,v,t", 0, (int) M_MUL, INSN_MACRO, 0, I1 }, +{"mul", "d,v,I", 0, (int) M_MUL_I, INSN_MACRO, 0, I1 }, +{"mula.ob", "Y,Q", 0x78000033, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"mula.ob", "S,T", 0x4ac00033, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mula.ob", "S,T[e]", 0x48000033, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mula.ob", "S,k", 0x4bc00033, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mula.qh", "Y,Q", 0x78200033, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"mulhi", "d,s,t", 0x00000258, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"mulhiu", "d,s,t", 0x00000259, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"mull.ob", "Y,Q", 0x78000433, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"mull.ob", "S,T", 0x4ac00433, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mull.ob", "S,T[e]", 0x48000433, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mull.ob", "S,k", 0x4bc00433, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mull.qh", "Y,Q", 0x78200433, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"mulo", "d,v,t", 0, (int) M_MULO, INSN_MACRO, 0, I1 }, +{"mulo", "d,v,I", 0, (int) M_MULO_I, INSN_MACRO, 0, I1 }, +{"mulou", "d,v,t", 0, (int) M_MULOU, INSN_MACRO, 0, I1 }, +{"mulou", "d,v,I", 0, (int) M_MULOU_I, INSN_MACRO, 0, I1 }, +{"mulr.ps", "D,S,T", 0x46c0001a, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, +{"muls", "d,s,t", 0x000000d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"mulsu", "d,s,t", 0x000000d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"mulshi", "d,s,t", 0x000002d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"mulshiu", "d,s,t", 0x000002d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"muls.ob", "Y,Q", 0x78000032, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"muls.ob", "S,T", 0x4ac00032, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"muls.ob", "S,T[e]", 0x48000032, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"muls.ob", "S,k", 0x4bc00032, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"muls.qh", "Y,Q", 0x78200032, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"mulsl.ob", "Y,Q", 0x78000432, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"mulsl.ob", "S,T", 0x4ac00432, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mulsl.ob", "S,T[e]", 0x48000432, 0xfe2007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mulsl.ob", "S,k", 0x4bc00432, 0xffe007ff, WR_CC|RD_S|RD_T, 0, N54 }, +{"mulsl.qh", "Y,Q", 0x78200432, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"mult", "s,t", 0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, I1 }, +{"mult", "7,s,t", 0x00000018, 0xfc00e7ff, WR_a|RD_s|RD_t, 0, D33 }, +{"mult", "d,s,t", 0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, +{"multp", "s,t", 0x00000459, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, SMT }, +{"multu", "s,t", 0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, I1 }, +{"multu", "7,s,t", 0x00000019, 0xfc00e7ff, WR_a|RD_s|RD_t, 0, D33 }, +{"multu", "d,s,t", 0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, +{"mulu", "d,s,t", 0x00000059, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0, N5 }, +{"neg", "d,w", 0x00000022, 0xffe007ff, WR_d|RD_t, 0, I1 }, /* sub 0 */ +{"negu", "d,w", 0x00000023, 0xffe007ff, WR_d|RD_t, 0, I1 }, /* subu 0 */ +{"neg.d", "D,V", 0x46200007, 0xffff003f, WR_D|RD_S|FP_D, 0, I1 }, +{"neg.s", "D,V", 0x46000007, 0xffff003f, WR_D|RD_S|FP_S, 0, I1 }, +{"neg.ps", "D,V", 0x46c00007, 0xffff003f, WR_D|RD_S|FP_D, 0, I5|I33 }, +{"nmadd.d", "D,R,S,T", 0x4c000031, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, +{"nmadd.s", "D,R,S,T", 0x4c000030, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, +{"nmadd.ps","D,R,S,T", 0x4c000036, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, +{"nmsub.d", "D,R,S,T", 0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4|I33 }, +{"nmsub.s", "D,R,S,T", 0x4c000038, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0, I4|I33 }, +{"nmsub.ps","D,R,S,T", 0x4c00003e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5|I33 }, +/* nop is at the start of the table. */ +{"nor", "d,v,t", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"nor", "t,r,I", 0, (int) M_NOR_I, INSN_MACRO, 0, I1 }, +{"nor.ob", "X,Y,Q", 0x7800000f, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"nor.ob", "D,S,T", 0x4ac0000f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"nor.ob", "D,S,T[e]", 0x4800000f, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"nor.ob", "D,S,k", 0x4bc0000f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"nor.qh", "X,Y,Q", 0x7820000f, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"not", "d,v", 0x00000027, 0xfc1f07ff, WR_d|RD_s|RD_t, 0, I1 },/*nor d,s,0*/ +{"or", "d,v,t", 0x00000025, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"or", "t,r,I", 0, (int) M_OR_I, INSN_MACRO, 0, I1 }, +{"or.ob", "X,Y,Q", 0x7800000e, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"or.ob", "D,S,T", 0x4ac0000e, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"or.ob", "D,S,T[e]", 0x4800000e, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"or.ob", "D,S,k", 0x4bc0000e, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"or.qh", "X,Y,Q", 0x7820000e, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"ori", "t,r,i", 0x34000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +{"pabsdiff.ob", "X,Y,Q",0x78000009, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, SB1 }, +{"pabsdiffc.ob", "Y,Q", 0x78000035, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, SB1 }, +{"pavg.ob", "X,Y,Q", 0x78000008, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, SB1 }, +{"pickf.ob", "X,Y,Q", 0x78000002, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"pickf.ob", "D,S,T", 0x4ac00002, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"pickf.ob", "D,S,T[e]",0x48000002, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"pickf.ob", "D,S,k", 0x4bc00002, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"pickf.qh", "X,Y,Q", 0x78200002, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"pickt.ob", "X,Y,Q", 0x78000003, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"pickt.ob", "D,S,T", 0x4ac00003, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"pickt.ob", "D,S,T[e]",0x48000003, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"pickt.ob", "D,S,k", 0x4bc00003, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"pickt.qh", "X,Y,Q", 0x78200003, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"pll.ps", "D,V,T", 0x46c0002c, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, +{"plu.ps", "D,V,T", 0x46c0002d, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, + /* pref and prefx are at the start of the table. */ +{"pul.ps", "D,V,T", 0x46c0002e, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, +{"puu.ps", "D,V,T", 0x46c0002f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, +{"pperm", "s,t", 0x70000481, 0xfc00ffff, MOD_HILO|RD_s|RD_t, 0, SMT }, +{"rach.ob", "X", 0x7a00003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX|SB1 }, +{"rach.ob", "D", 0x4a00003f, 0xfffff83f, WR_D, 0, N54 }, +{"rach.qh", "X", 0x7a20003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX }, +{"racl.ob", "X", 0x7800003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX|SB1 }, +{"racl.ob", "D", 0x4800003f, 0xfffff83f, WR_D, 0, N54 }, +{"racl.qh", "X", 0x7820003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX }, +{"racm.ob", "X", 0x7900003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX|SB1 }, +{"racm.ob", "D", 0x4900003f, 0xfffff83f, WR_D, 0, N54 }, +{"racm.qh", "X", 0x7920003f, 0xfffff83f, WR_D|FP_D, RD_MACC, MX }, +{"recip.d", "D,S", 0x46200015, 0xffff003f, WR_D|RD_S|FP_D, 0, I4|I33 }, +{"recip.ps","D,S", 0x46c00015, 0xffff003f, WR_D|RD_S|FP_D, 0, SB1 }, +{"recip.s", "D,S", 0x46000015, 0xffff003f, WR_D|RD_S|FP_S, 0, I4|I33 }, +{"recip1.d", "D,S", 0x4620001d, 0xffff003f, WR_D|RD_S|FP_D, 0, M3D }, +{"recip1.ps", "D,S", 0x46c0001d, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, +{"recip1.s", "D,S", 0x4600001d, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, +{"recip2.d", "D,S,T", 0x4620001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, +{"recip2.ps", "D,S,T", 0x46c0001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, +{"recip2.s", "D,S,T", 0x4600001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, +{"rem", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, +{"rem", "d,v,t", 0, (int) M_REM_3, INSN_MACRO, 0, I1 }, +{"rem", "d,v,I", 0, (int) M_REM_3I, INSN_MACRO, 0, I1 }, +{"remu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I1 }, +{"remu", "d,v,t", 0, (int) M_REMU_3, INSN_MACRO, 0, I1 }, +{"remu", "d,v,I", 0, (int) M_REMU_3I, INSN_MACRO, 0, I1 }, +{"rdhwr", "t,K", 0x7c00003b, 0xffe007ff, WR_t, 0, I33 }, +{"rdpgpr", "d,w", 0x41400000, 0xffe007ff, WR_d, 0, I33 }, +{"rfe", "", 0x42000010, 0xffffffff, 0, 0, I1|T3 }, +{"rnas.qh", "X,Q", 0x78200025, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, +{"rnau.ob", "X,Q", 0x78000021, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX|SB1 }, +{"rnau.qh", "X,Q", 0x78200021, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, +{"rnes.qh", "X,Q", 0x78200026, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, +{"rneu.ob", "X,Q", 0x78000022, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX|SB1 }, +{"rneu.qh", "X,Q", 0x78200022, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, +{"rol", "d,v,t", 0, (int) M_ROL, INSN_MACRO, 0, I1 }, +{"rol", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO, 0, I1 }, +{"ror", "d,v,t", 0, (int) M_ROR, INSN_MACRO, 0, I1 }, +{"ror", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO, 0, I1 }, +{"ror", "d,w,<", 0x00200002, 0xffe0003f, WR_d|RD_t, 0, N5|I33|SMT }, +{"rorv", "d,t,s", 0x00000046, 0xfc0007ff, RD_t|RD_s|WR_d, 0, N5|I33|SMT }, +{"rotl", "d,v,t", 0, (int) M_ROL, INSN_MACRO, 0, I33|SMT }, +{"rotl", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO, 0, I33|SMT }, +{"rotr", "d,v,t", 0, (int) M_ROR, INSN_MACRO, 0, I33|SMT }, +{"rotr", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO, 0, I33|SMT }, +{"rotrv", "d,t,s", 0x00000046, 0xfc0007ff, RD_t|RD_s|WR_d, 0, I33|SMT }, +{"round.l.d", "D,S", 0x46200008, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, +{"round.l.s", "D,S", 0x46000008, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, +{"round.w.d", "D,S", 0x4620000c, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, +{"round.w.s", "D,S", 0x4600000c, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, +{"rsqrt.d", "D,S", 0x46200016, 0xffff003f, WR_D|RD_S|FP_D, 0, I4|I33 }, +{"rsqrt.ps","D,S", 0x46c00016, 0xffff003f, WR_D|RD_S|FP_D, 0, SB1 }, +{"rsqrt.s", "D,S", 0x46000016, 0xffff003f, WR_D|RD_S|FP_S, 0, I4|I33 }, +{"rsqrt1.d", "D,S", 0x4620001e, 0xffff003f, WR_D|RD_S|FP_D, 0, M3D }, +{"rsqrt1.ps", "D,S", 0x46c0001e, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, +{"rsqrt1.s", "D,S", 0x4600001e, 0xffff003f, WR_D|RD_S|FP_S, 0, M3D }, +{"rsqrt2.d", "D,S,T", 0x4620001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, M3D }, +{"rsqrt2.ps", "D,S,T", 0x46c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, +{"rsqrt2.s", "D,S,T", 0x4600001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, M3D }, +{"rzs.qh", "X,Q", 0x78200024, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, +{"rzu.ob", "X,Q", 0x78000020, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX|SB1 }, +{"rzu.ob", "D,k", 0x4bc00020, 0xffe0f83f, WR_D|RD_S|RD_T, 0, N54 }, +{"rzu.qh", "X,Q", 0x78200020, 0xfc20f83f, WR_D|RD_T|FP_D, RD_MACC, MX }, +{"sb", "t,o(b)", 0xa0000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, +{"sb", "t,A(b)", 0, (int) M_SB_AB, INSN_MACRO, 0, I1 }, +{"sc", "t,o(b)", 0xe0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, 0, I2 }, +{"sc", "t,A(b)", 0, (int) M_SC_AB, INSN_MACRO, 0, I2 }, +{"scd", "t,o(b)", 0xf0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, 0, I3 }, +{"scd", "t,A(b)", 0, (int) M_SCD_AB, INSN_MACRO, 0, I3 }, +{"sd", "t,o(b)", 0xfc000000, 0xfc000000, SM|RD_t|RD_b, 0, I3 }, +{"sd", "t,o(b)", 0, (int) M_SD_OB, INSN_MACRO, 0, I1 }, +{"sd", "t,A(b)", 0, (int) M_SD_AB, INSN_MACRO, 0, I1 }, +{"sdbbp", "", 0x0000000e, 0xffffffff, TRAP, 0, G2 }, +{"sdbbp", "c", 0x0000000e, 0xfc00ffff, TRAP, 0, G2 }, +{"sdbbp", "c,q", 0x0000000e, 0xfc00003f, TRAP, 0, G2 }, +{"sdbbp", "", 0x7000003f, 0xffffffff, TRAP, 0, I32 }, +{"sdbbp", "B", 0x7000003f, 0xfc00003f, TRAP, 0, I32 }, +{"sdc1", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, 0, I2 }, +{"sdc1", "E,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, 0, I2 }, +{"sdc1", "T,A(b)", 0, (int) M_SDC1_AB, INSN_MACRO, 0, I2 }, +{"sdc1", "E,A(b)", 0, (int) M_SDC1_AB, INSN_MACRO, 0, I2 }, +{"sdc2", "E,o(b)", 0xf8000000, 0xfc000000, SM|RD_C2|RD_b, 0, I2 }, +{"sdc2", "E,A(b)", 0, (int) M_SDC2_AB, INSN_MACRO, 0, I2 }, +{"sdc3", "E,o(b)", 0xfc000000, 0xfc000000, SM|RD_C3|RD_b, 0, I2 }, +{"sdc3", "E,A(b)", 0, (int) M_SDC3_AB, INSN_MACRO, 0, I2 }, +{"s.d", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, 0, I2 }, +{"s.d", "T,o(b)", 0, (int) M_S_DOB, INSN_MACRO, 0, I1 }, +{"s.d", "T,A(b)", 0, (int) M_S_DAB, INSN_MACRO, 0, I1 }, +{"sdl", "t,o(b)", 0xb0000000, 0xfc000000, SM|RD_t|RD_b, 0, I3 }, +{"sdl", "t,A(b)", 0, (int) M_SDL_AB, INSN_MACRO, 0, I3 }, +{"sdr", "t,o(b)", 0xb4000000, 0xfc000000, SM|RD_t|RD_b, 0, I3 }, +{"sdr", "t,A(b)", 0, (int) M_SDR_AB, INSN_MACRO, 0, I3 }, +{"sdxc1", "S,t(b)", 0x4c000009, 0xfc0007ff, SM|RD_S|RD_t|RD_b|FP_D, 0, I4|I33 }, +{"seb", "d,w", 0x7c000420, 0xffe007ff, WR_d|RD_t, 0, I33 }, +{"seh", "d,w", 0x7c000620, 0xffe007ff, WR_d|RD_t, 0, I33 }, +{"selsl", "d,v,t", 0x00000005, 0xfc0007ff, WR_d|RD_s|RD_t, 0, L1 }, +{"selsr", "d,v,t", 0x00000001, 0xfc0007ff, WR_d|RD_s|RD_t, 0, L1 }, +{"seq", "d,v,t", 0, (int) M_SEQ, INSN_MACRO, 0, I1 }, +{"seq", "d,v,I", 0, (int) M_SEQ_I, INSN_MACRO, 0, I1 }, +{"sge", "d,v,t", 0, (int) M_SGE, INSN_MACRO, 0, I1 }, +{"sge", "d,v,I", 0, (int) M_SGE_I, INSN_MACRO, 0, I1 }, +{"sgeu", "d,v,t", 0, (int) M_SGEU, INSN_MACRO, 0, I1 }, +{"sgeu", "d,v,I", 0, (int) M_SGEU_I, INSN_MACRO, 0, I1 }, +{"sgt", "d,v,t", 0, (int) M_SGT, INSN_MACRO, 0, I1 }, +{"sgt", "d,v,I", 0, (int) M_SGT_I, INSN_MACRO, 0, I1 }, +{"sgtu", "d,v,t", 0, (int) M_SGTU, INSN_MACRO, 0, I1 }, +{"sgtu", "d,v,I", 0, (int) M_SGTU_I, INSN_MACRO, 0, I1 }, +{"sh", "t,o(b)", 0xa4000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, +{"sh", "t,A(b)", 0, (int) M_SH_AB, INSN_MACRO, 0, I1 }, +{"shfl.bfla.qh", "X,Y,Z", 0x7a20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"shfl.mixh.ob", "X,Y,Z", 0x7980001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"shfl.mixh.ob", "D,S,T", 0x4980001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"shfl.mixh.qh", "X,Y,Z", 0x7820001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"shfl.mixl.ob", "X,Y,Z", 0x79c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"shfl.mixl.ob", "D,S,T", 0x49c0001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"shfl.mixl.qh", "X,Y,Z", 0x78a0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"shfl.pach.ob", "X,Y,Z", 0x7900001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"shfl.pach.ob", "D,S,T", 0x4900001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"shfl.pach.qh", "X,Y,Z", 0x7920001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"shfl.pacl.ob", "D,S,T", 0x4940001f, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"shfl.repa.qh", "X,Y,Z", 0x7b20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"shfl.repb.qh", "X,Y,Z", 0x7ba0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"shfl.upsl.ob", "X,Y,Z", 0x78c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"sle", "d,v,t", 0, (int) M_SLE, INSN_MACRO, 0, I1 }, +{"sle", "d,v,I", 0, (int) M_SLE_I, INSN_MACRO, 0, I1 }, +{"sleu", "d,v,t", 0, (int) M_SLEU, INSN_MACRO, 0, I1 }, +{"sleu", "d,v,I", 0, (int) M_SLEU_I, INSN_MACRO, 0, I1 }, +{"sllv", "d,t,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, +{"sll", "d,w,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, /* sllv */ +{"sll", "d,w,<", 0x00000000, 0xffe0003f, WR_d|RD_t, 0, I1 }, +{"sll.ob", "X,Y,Q", 0x78000010, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"sll.ob", "D,S,T[e]", 0x48000010, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"sll.ob", "D,S,k", 0x4bc00010, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"sll.qh", "X,Y,Q", 0x78200010, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"slt", "d,v,t", 0x0000002a, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"slt", "d,v,I", 0, (int) M_SLT_I, INSN_MACRO, 0, I1 }, +{"slti", "t,r,j", 0x28000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +{"sltiu", "t,r,j", 0x2c000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +{"sltu", "d,v,t", 0x0000002b, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"sltu", "d,v,I", 0, (int) M_SLTU_I, INSN_MACRO, 0, I1 }, +{"sne", "d,v,t", 0, (int) M_SNE, INSN_MACRO, 0, I1 }, +{"sne", "d,v,I", 0, (int) M_SNE_I, INSN_MACRO, 0, I1 }, +{"sqrt.d", "D,S", 0x46200004, 0xffff003f, WR_D|RD_S|FP_D, 0, I2 }, +{"sqrt.s", "D,S", 0x46000004, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, +{"sqrt.ps", "D,S", 0x46c00004, 0xffff003f, WR_D|RD_S|FP_D, 0, SB1 }, +{"srav", "d,t,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, +{"sra", "d,w,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, /* srav */ +{"sra", "d,w,<", 0x00000003, 0xffe0003f, WR_d|RD_t, 0, I1 }, +{"sra.qh", "X,Y,Q", 0x78200013, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"srlv", "d,t,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, +{"srl", "d,w,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, 0, I1 }, /* srlv */ +{"srl", "d,w,<", 0x00000002, 0xffe0003f, WR_d|RD_t, 0, I1 }, +{"srl.ob", "X,Y,Q", 0x78000012, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"srl.ob", "D,S,T[e]", 0x48000012, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"srl.ob", "D,S,k", 0x4bc00012, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"srl.qh", "X,Y,Q", 0x78200012, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +/* ssnop is at the start of the table. */ +{"standby", "", 0x42000021, 0xffffffff, 0, 0, V1 }, +{"sub", "d,v,t", 0x00000022, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"sub", "d,v,I", 0, (int) M_SUB_I, INSN_MACRO, 0, I1 }, +{"sub.d", "D,V,T", 0x46200001, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, +{"sub.s", "D,V,T", 0x46000001, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, 0, I1 }, +{"sub.ob", "X,Y,Q", 0x7800000a, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"sub.ob", "D,S,T", 0x4ac0000a, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"sub.ob", "D,S,T[e]", 0x4800000a, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"sub.ob", "D,S,k", 0x4bc0000a, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"sub.ps", "D,V,T", 0x46c00001, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5|I33 }, +{"sub.qh", "X,Y,Q", 0x7820000a, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"suba.ob", "Y,Q", 0x78000036, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"suba.qh", "Y,Q", 0x78200036, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"subl.ob", "Y,Q", 0x78000436, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"subl.qh", "Y,Q", 0x78200436, 0xfc2007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"subu", "d,v,t", 0x00000023, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"subu", "d,v,I", 0, (int) M_SUBU_I, INSN_MACRO, 0, I1 }, +{"suspend", "", 0x42000022, 0xffffffff, 0, 0, V1 }, +{"suxc1", "S,t(b)", 0x4c00000d, 0xfc0007ff, SM|RD_S|RD_t|RD_b, 0, I5|I33|N55}, +{"sw", "t,o(b)", 0xac000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, +{"sw", "t,A(b)", 0, (int) M_SW_AB, INSN_MACRO, 0, I1 }, +{"swc0", "E,o(b)", 0xe0000000, 0xfc000000, SM|RD_C0|RD_b, 0, I1 }, +{"swc0", "E,A(b)", 0, (int) M_SWC0_AB, INSN_MACRO, 0, I1 }, +{"swc1", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, 0, I1 }, +{"swc1", "E,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, 0, I1 }, +{"swc1", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, 0, I1 }, +{"swc1", "E,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, 0, I1 }, +{"s.s", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, 0, I1 }, /* swc1 */ +{"s.s", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, 0, I1 }, +{"swc2", "E,o(b)", 0xe8000000, 0xfc000000, SM|RD_C2|RD_b, 0, I1 }, +{"swc2", "E,A(b)", 0, (int) M_SWC2_AB, INSN_MACRO, 0, I1 }, +{"swc3", "E,o(b)", 0xec000000, 0xfc000000, SM|RD_C3|RD_b, 0, I1 }, +{"swc3", "E,A(b)", 0, (int) M_SWC3_AB, INSN_MACRO, 0, I1 }, +{"swl", "t,o(b)", 0xa8000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, +{"swl", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO, 0, I1 }, +{"scache", "t,o(b)", 0xa8000000, 0xfc000000, RD_t|RD_b, 0, I2 }, /* same */ +{"scache", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO, 0, I2 }, /* as swl */ +{"swr", "t,o(b)", 0xb8000000, 0xfc000000, SM|RD_t|RD_b, 0, I1 }, +{"swr", "t,A(b)", 0, (int) M_SWR_AB, INSN_MACRO, 0, I1 }, +{"invalidate", "t,o(b)",0xb8000000, 0xfc000000, RD_t|RD_b, 0, I2 }, /* same */ +{"invalidate", "t,A(b)",0, (int) M_SWR_AB, INSN_MACRO, 0, I2 }, /* as swr */ +{"swxc1", "S,t(b)", 0x4c000008, 0xfc0007ff, SM|RD_S|RD_t|RD_b|FP_S, 0, I4|I33 }, +{"sync", "", 0x0000000f, 0xffffffff, INSN_SYNC, 0, I2|G1 }, +{"sync.p", "", 0x0000040f, 0xffffffff, INSN_SYNC, 0, I2 }, +{"sync.l", "", 0x0000000f, 0xffffffff, INSN_SYNC, 0, I2 }, +{"synci", "o(b)", 0x041f0000, 0xfc1f0000, SM|RD_b, 0, I33 }, +{"syscall", "", 0x0000000c, 0xffffffff, TRAP, 0, I1 }, +{"syscall", "B", 0x0000000c, 0xfc00003f, TRAP, 0, I1 }, +{"teqi", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, +{"teq", "s,t", 0x00000034, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, +{"teq", "s,t,q", 0x00000034, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, +{"teq", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* teqi */ +{"teq", "s,I", 0, (int) M_TEQ_I, INSN_MACRO, 0, I2 }, +{"tgei", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, +{"tge", "s,t", 0x00000030, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, +{"tge", "s,t,q", 0x00000030, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, +{"tge", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tgei */ +{"tge", "s,I", 0, (int) M_TGE_I, INSN_MACRO, 0, I2 }, +{"tgeiu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, +{"tgeu", "s,t", 0x00000031, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, +{"tgeu", "s,t,q", 0x00000031, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, +{"tgeu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tgeiu */ +{"tgeu", "s,I", 0, (int) M_TGEU_I, INSN_MACRO, 0, I2 }, +{"tlbp", "", 0x42000008, 0xffffffff, INSN_TLB, 0, I1 }, +{"tlbr", "", 0x42000001, 0xffffffff, INSN_TLB, 0, I1 }, +{"tlbwi", "", 0x42000002, 0xffffffff, INSN_TLB, 0, I1 }, +{"tlbwr", "", 0x42000006, 0xffffffff, INSN_TLB, 0, I1 }, +{"tlti", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, +{"tlt", "s,t", 0x00000032, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, +{"tlt", "s,t,q", 0x00000032, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, +{"tlt", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tlti */ +{"tlt", "s,I", 0, (int) M_TLT_I, INSN_MACRO, 0, I2 }, +{"tltiu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, +{"tltu", "s,t", 0x00000033, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, +{"tltu", "s,t,q", 0x00000033, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, +{"tltu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tltiu */ +{"tltu", "s,I", 0, (int) M_TLTU_I, INSN_MACRO, 0, I2 }, +{"tnei", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, +{"tne", "s,t", 0x00000036, 0xfc00ffff, RD_s|RD_t|TRAP, 0, I2 }, +{"tne", "s,t,q", 0x00000036, 0xfc00003f, RD_s|RD_t|TRAP, 0, I2 }, +{"tne", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, 0, I2 }, /* tnei */ +{"tne", "s,I", 0, (int) M_TNE_I, INSN_MACRO, 0, I2 }, +{"trunc.l.d", "D,S", 0x46200009, 0xffff003f, WR_D|RD_S|FP_D, 0, I3|I33 }, +{"trunc.l.s", "D,S", 0x46000009, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I3|I33 }, +{"trunc.w.d", "D,S", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, +{"trunc.w.d", "D,S,x", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, I2 }, +{"trunc.w.d", "D,S,t", 0, (int) M_TRUNCWD, INSN_MACRO, 0, I1 }, +{"trunc.w.s", "D,S", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, +{"trunc.w.s", "D,S,x", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, 0, I2 }, +{"trunc.w.s", "D,S,t", 0, (int) M_TRUNCWS, INSN_MACRO, 0, I1 }, +{"uld", "t,o(b)", 0, (int) M_ULD, INSN_MACRO, 0, I3 }, +{"uld", "t,A(b)", 0, (int) M_ULD_A, INSN_MACRO, 0, I3 }, +{"ulh", "t,o(b)", 0, (int) M_ULH, INSN_MACRO, 0, I1 }, +{"ulh", "t,A(b)", 0, (int) M_ULH_A, INSN_MACRO, 0, I1 }, +{"ulhu", "t,o(b)", 0, (int) M_ULHU, INSN_MACRO, 0, I1 }, +{"ulhu", "t,A(b)", 0, (int) M_ULHU_A, INSN_MACRO, 0, I1 }, +{"ulw", "t,o(b)", 0, (int) M_ULW, INSN_MACRO, 0, I1 }, +{"ulw", "t,A(b)", 0, (int) M_ULW_A, INSN_MACRO, 0, I1 }, +{"usd", "t,o(b)", 0, (int) M_USD, INSN_MACRO, 0, I3 }, +{"usd", "t,A(b)", 0, (int) M_USD_A, INSN_MACRO, 0, I3 }, +{"ush", "t,o(b)", 0, (int) M_USH, INSN_MACRO, 0, I1 }, +{"ush", "t,A(b)", 0, (int) M_USH_A, INSN_MACRO, 0, I1 }, +{"usw", "t,o(b)", 0, (int) M_USW, INSN_MACRO, 0, I1 }, +{"usw", "t,A(b)", 0, (int) M_USW_A, INSN_MACRO, 0, I1 }, +{"wach.ob", "Y", 0x7a00003e, 0xffff07ff, RD_S|FP_D, WR_MACC, MX|SB1 }, +{"wach.ob", "S", 0x4a00003e, 0xffff07ff, RD_S, 0, N54 }, +{"wach.qh", "Y", 0x7a20003e, 0xffff07ff, RD_S|FP_D, WR_MACC, MX }, +{"wacl.ob", "Y,Z", 0x7800003e, 0xffe007ff, RD_S|RD_T|FP_D, WR_MACC, MX|SB1 }, +{"wacl.ob", "S,T", 0x4800003e, 0xffe007ff, RD_S|RD_T, 0, N54 }, +{"wacl.qh", "Y,Z", 0x7820003e, 0xffe007ff, RD_S|RD_T|FP_D, WR_MACC, MX }, +{"wait", "", 0x42000020, 0xffffffff, TRAP, 0, I3|I32 }, +{"wait", "J", 0x42000020, 0xfe00003f, TRAP, 0, I32|N55 }, +{"waiti", "", 0x42000020, 0xffffffff, TRAP, 0, L1 }, +{"wrpgpr", "d,w", 0x41c00000, 0xffe007ff, RD_t, 0, I33 }, +{"wsbh", "d,w", 0x7c0000a0, 0xffe007ff, WR_d|RD_t, 0, I33 }, +{"xor", "d,v,t", 0x00000026, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, +{"xor", "t,r,I", 0, (int) M_XOR_I, INSN_MACRO, 0, I1 }, +{"xor.ob", "X,Y,Q", 0x7800000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, +{"xor.ob", "D,S,T", 0x4ac0000d, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"xor.ob", "D,S,T[e]", 0x4800000d, 0xfe20003f, WR_D|RD_S|RD_T, 0, N54 }, +{"xor.ob", "D,S,k", 0x4bc0000d, 0xffe0003f, WR_D|RD_S|RD_T, 0, N54 }, +{"xor.qh", "X,Y,Q", 0x7820000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, +{"xori", "t,r,i", 0x38000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +{"yield", "s", 0x7c000009, 0xfc1fffff, TRAP|RD_s, 0, MT32 }, +{"yield", "d,s", 0x7c000009, 0xfc1f07ff, TRAP|WR_d|RD_s, 0, MT32 }, + +/* User Defined Instruction. */ +{"udi0", "s,t,d,+1",0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi0", "s,t,+2", 0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi0", "s,+3", 0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi0", "+4", 0x70000010, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi1", "s,t,d,+1",0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi1", "s,t,+2", 0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi1", "s,+3", 0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi1", "+4", 0x70000011, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi2", "s,t,d,+1",0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi2", "s,t,+2", 0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi2", "s,+3", 0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi2", "+4", 0x70000012, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi3", "s,t,d,+1",0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi3", "s,t,+2", 0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi3", "s,+3", 0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi3", "+4", 0x70000013, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi4", "s,t,d,+1",0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi4", "s,t,+2", 0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi4", "s,+3", 0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi4", "+4", 0x70000014, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi5", "s,t,d,+1",0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi5", "s,t,+2", 0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi5", "s,+3", 0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi5", "+4", 0x70000015, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi6", "s,t,d,+1",0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi6", "s,t,+2", 0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi6", "s,+3", 0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi6", "+4", 0x70000016, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi7", "s,t,d,+1",0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi7", "s,t,+2", 0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi7", "s,+3", 0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi7", "+4", 0x70000017, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi8", "s,t,d,+1",0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi8", "s,t,+2", 0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi8", "s,+3", 0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi8", "+4", 0x70000018, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi9", "s,t,d,+1",0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi9", "s,t,+2", 0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi9", "s,+3", 0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi9", "+4", 0x70000019, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi10", "s,t,d,+1",0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi10", "s,t,+2", 0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi10", "s,+3", 0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi10", "+4", 0x7000001a, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi11", "s,t,d,+1",0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi11", "s,t,+2", 0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi11", "s,+3", 0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi11", "+4", 0x7000001b, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi12", "s,t,d,+1",0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi12", "s,t,+2", 0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi12", "s,+3", 0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi12", "+4", 0x7000001c, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi13", "s,t,d,+1",0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi13", "s,t,+2", 0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi13", "s,+3", 0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi13", "+4", 0x7000001d, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi14", "s,t,d,+1",0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi14", "s,t,+2", 0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi14", "s,+3", 0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi14", "+4", 0x7000001e, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi15", "s,t,d,+1",0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi15", "s,t,+2", 0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi15", "s,+3", 0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, +{"udi15", "+4", 0x7000001f, 0xfc00003f, WR_d|RD_s|RD_t, 0, I33 }, + +/* Coprocessor 2 move/branch operations overlap with VR5400 .ob format + instructions so they are here for the latters to take precedence. */ +{"bc2f", "p", 0x49000000, 0xffff0000, CBD|RD_CC, 0, I1 }, +{"bc2f", "N,p", 0x49000000, 0xffe30000, CBD|RD_CC, 0, I32 }, +{"bc2fl", "p", 0x49020000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, +{"bc2fl", "N,p", 0x49020000, 0xffe30000, CBL|RD_CC, 0, I32 }, +{"bc2t", "p", 0x49010000, 0xffff0000, CBD|RD_CC, 0, I1 }, +{"bc2t", "N,p", 0x49010000, 0xffe30000, CBD|RD_CC, 0, I32 }, +{"bc2tl", "p", 0x49030000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, +{"bc2tl", "N,p", 0x49030000, 0xffe30000, CBL|RD_CC, 0, I32 }, +{"cfc2", "t,G", 0x48400000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I1 }, +{"ctc2", "t,G", 0x48c00000, 0xffe007ff, COD|RD_t|WR_CC, 0, I1 }, +{"dmfc2", "t,G", 0x48200000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I3 }, +{"dmfc2", "t,G,H", 0x48200000, 0xffe007f8, LCD|WR_t|RD_C2, 0, I64 }, +{"dmtc2", "t,G", 0x48a00000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, 0, I3 }, +{"dmtc2", "t,G,H", 0x48a00000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, 0, I64 }, +{"mfc2", "t,G", 0x48000000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I1 }, +{"mfc2", "t,G,H", 0x48000000, 0xffe007f8, LCD|WR_t|RD_C2, 0, I32 }, +{"mfhc2", "t,G", 0x48600000, 0xffe007ff, LCD|WR_t|RD_C2, 0, I33 }, +{"mfhc2", "t,G,H", 0x48600000, 0xffe007f8, LCD|WR_t|RD_C2, 0, I33 }, +{"mfhc2", "t,i", 0x48600000, 0xffe00000, LCD|WR_t|RD_C2, 0, I33 }, +{"mtc2", "t,G", 0x48800000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, 0, I1 }, +{"mtc2", "t,G,H", 0x48800000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, 0, I32 }, +{"mthc2", "t,G", 0x48e00000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, 0, I33 }, +{"mthc2", "t,G,H", 0x48e00000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, 0, I33 }, +{"mthc2", "t,i", 0x48e00000, 0xffe00000, COD|RD_t|WR_C2|WR_CC, 0, I33 }, + +/* Coprocessor 3 move/branch operations overlap with MIPS IV COP1X + instructions, so they are here for the latters to take precedence. */ +{"bc3f", "p", 0x4d000000, 0xffff0000, CBD|RD_CC, 0, I1 }, +{"bc3fl", "p", 0x4d020000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, +{"bc3t", "p", 0x4d010000, 0xffff0000, CBD|RD_CC, 0, I1 }, +{"bc3tl", "p", 0x4d030000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, +{"cfc3", "t,G", 0x4c400000, 0xffe007ff, LCD|WR_t|RD_C3, 0, I1 }, +{"ctc3", "t,G", 0x4cc00000, 0xffe007ff, COD|RD_t|WR_CC, 0, I1 }, +{"dmfc3", "t,G", 0x4c200000, 0xffe007ff, LCD|WR_t|RD_C3, 0, I3 }, +{"dmtc3", "t,G", 0x4ca00000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, 0, I3 }, +{"mfc3", "t,G", 0x4c000000, 0xffe007ff, LCD|WR_t|RD_C3, 0, I1 }, +{"mfc3", "t,G,H", 0x4c000000, 0xffe007f8, LCD|WR_t|RD_C3, 0, I32 }, +{"mtc3", "t,G", 0x4c800000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, 0, I1 }, +{"mtc3", "t,G,H", 0x4c800000, 0xffe007f8, COD|RD_t|WR_C3|WR_CC, 0, I32 }, + +/* No hazard protection on coprocessor instructions--they shouldn't + change the state of the processor and if they do it's up to the + user to put in nops as necessary. These are at the end so that the + disassembler recognizes more specific versions first. */ +{"c0", "C", 0x42000000, 0xfe000000, 0, 0, I1 }, +{"c1", "C", 0x46000000, 0xfe000000, 0, 0, I1 }, +{"c2", "C", 0x4a000000, 0xfe000000, 0, 0, I1 }, +{"c3", "C", 0x4e000000, 0xfe000000, 0, 0, I1 }, +{"cop0", "C", 0, (int) M_COP0, INSN_MACRO, 0, I1 }, +{"cop1", "C", 0, (int) M_COP1, INSN_MACRO, 0, I1 }, +{"cop2", "C", 0, (int) M_COP2, INSN_MACRO, 0, I1 }, +{"cop3", "C", 0, (int) M_COP3, INSN_MACRO, 0, I1 }, + /* Conflicts with the 4650's "mul" instruction. Nobody's using the + 4010 any more, so move this insn out of the way. If the object + format gave us more info, we could do this right. */ +{"addciu", "t,r,j", 0x70000000, 0xfc000000, WR_t|RD_s, 0, L1 }, +/* MIPS DSP ASE */ +{"absq_s.ph", "d,t", 0x7c000252, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"absq_s.pw", "d,t", 0x7c000456, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"absq_s.qh", "d,t", 0x7c000256, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"absq_s.w", "d,t", 0x7c000452, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"addq.ph", "d,s,t", 0x7c000290, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"addq.pw", "d,s,t", 0x7c000494, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"addq.qh", "d,s,t", 0x7c000294, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"addq_s.ph", "d,s,t", 0x7c000390, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"addq_s.pw", "d,s,t", 0x7c000594, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"addq_s.qh", "d,s,t", 0x7c000394, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"addq_s.w", "d,s,t", 0x7c000590, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"addsc", "d,s,t", 0x7c000410, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"addu.ob", "d,s,t", 0x7c000014, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"addu.qb", "d,s,t", 0x7c000010, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"addu_s.ob", "d,s,t", 0x7c000114, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"addu_s.qb", "d,s,t", 0x7c000110, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"addwc", "d,s,t", 0x7c000450, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"bitrev", "d,t", 0x7c0006d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"bposge32", "p", 0x041c0000, 0xffff0000, CBD, 0, D32 }, +{"bposge64", "p", 0x041d0000, 0xffff0000, CBD, 0, D64 }, +{"cmp.eq.ph", "s,t", 0x7c000211, 0xfc00ffff, RD_s|RD_t, 0, D32 }, +{"cmp.eq.pw", "s,t", 0x7c000415, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmp.eq.qh", "s,t", 0x7c000215, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmpgu.eq.ob", "d,s,t", 0x7c000115, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"cmpgu.eq.qb", "d,s,t", 0x7c000111, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"cmpgu.le.ob", "d,s,t", 0x7c000195, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"cmpgu.le.qb", "d,s,t", 0x7c000191, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"cmpgu.lt.ob", "d,s,t", 0x7c000155, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"cmpgu.lt.qb", "d,s,t", 0x7c000151, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"cmp.le.ph", "s,t", 0x7c000291, 0xfc00ffff, RD_s|RD_t, 0, D32 }, +{"cmp.le.pw", "s,t", 0x7c000495, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmp.le.qh", "s,t", 0x7c000295, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmp.lt.ph", "s,t", 0x7c000251, 0xfc00ffff, RD_s|RD_t, 0, D32 }, +{"cmp.lt.pw", "s,t", 0x7c000455, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmp.lt.qh", "s,t", 0x7c000255, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmpu.eq.ob", "s,t", 0x7c000015, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmpu.eq.qb", "s,t", 0x7c000011, 0xfc00ffff, RD_s|RD_t, 0, D32 }, +{"cmpu.le.ob", "s,t", 0x7c000095, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmpu.le.qb", "s,t", 0x7c000091, 0xfc00ffff, RD_s|RD_t, 0, D32 }, +{"cmpu.lt.ob", "s,t", 0x7c000055, 0xfc00ffff, RD_s|RD_t, 0, D64 }, +{"cmpu.lt.qb", "s,t", 0x7c000051, 0xfc00ffff, RD_s|RD_t, 0, D32 }, +{"dextpdp", "t,7,6", 0x7c0002bc, 0xfc00e7ff, WR_t|RD_a|DSP_VOLA, 0, D64 }, +{"dextpdpv", "t,7,s", 0x7c0002fc, 0xfc00e7ff, WR_t|RD_a|RD_s|DSP_VOLA, 0, D64 }, +{"dextp", "t,7,6", 0x7c0000bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dextpv", "t,7,s", 0x7c0000fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextr.l", "t,7,6", 0x7c00043c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dextr_r.l", "t,7,6", 0x7c00053c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dextr_rs.l", "t,7,6", 0x7c0005bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dextr_rs.w", "t,7,6", 0x7c0001bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dextr_r.w", "t,7,6", 0x7c00013c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dextr_s.h", "t,7,6", 0x7c0003bc, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dextrv.l", "t,7,s", 0x7c00047c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextrv_r.l", "t,7,s", 0x7c00057c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextrv_rs.l", "t,7,s", 0x7c0005fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextrv_rs.w", "t,7,s", 0x7c0001fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextrv_r.w", "t,7,s", 0x7c00017c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextrv_s.h", "t,7,s", 0x7c0003fc, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextrv.w", "t,7,s", 0x7c00007c, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D64 }, +{"dextr.w", "t,7,6", 0x7c00003c, 0xfc00e7ff, WR_t|RD_a, 0, D64 }, +{"dinsv", "t,s", 0x7c00000d, 0xfc00ffff, WR_t|RD_s, 0, D64 }, +{"dmadd", "7,s,t", 0x7c000674, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dmaddu", "7,s,t", 0x7c000774, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dmsub", "7,s,t", 0x7c0006f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dmsubu", "7,s,t", 0x7c0007f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dmthlip", "s,7", 0x7c0007fc, 0xfc1fe7ff, RD_s|MOD_a|DSP_VOLA, 0, D64 }, +{"dpaq_sa.l.pw", "7,s,t", 0x7c000334, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpaq_sa.l.w", "7,s,t", 0x7c000330, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dpaq_s.w.ph", "7,s,t", 0x7c000130, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dpaq_s.w.qh", "7,s,t", 0x7c000134, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpau.h.obl", "7,s,t", 0x7c0000f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpau.h.obr", "7,s,t", 0x7c0001f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpau.h.qbl", "7,s,t", 0x7c0000f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dpau.h.qbr", "7,s,t", 0x7c0001f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dpsq_sa.l.pw", "7,s,t", 0x7c000374, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpsq_sa.l.w", "7,s,t", 0x7c000370, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dpsq_s.w.ph", "7,s,t", 0x7c000170, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dpsq_s.w.qh", "7,s,t", 0x7c000174, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpsu.h.obl", "7,s,t", 0x7c0002f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpsu.h.obr", "7,s,t", 0x7c0003f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"dpsu.h.qbl", "7,s,t", 0x7c0002f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dpsu.h.qbr", "7,s,t", 0x7c0003f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"dshilo", "7,:", 0x7c0006bc, 0xfc07e7ff, MOD_a, 0, D64 }, +{"dshilov", "7,s", 0x7c0006fc, 0xfc1fe7ff, MOD_a|RD_s, 0, D64 }, +{"extpdp", "t,7,6", 0x7c0002b8, 0xfc00e7ff, WR_t|RD_a|DSP_VOLA, 0, D32 }, +{"extpdpv", "t,7,s", 0x7c0002f8, 0xfc00e7ff, WR_t|RD_a|RD_s|DSP_VOLA, 0, D32 }, +{"extp", "t,7,6", 0x7c0000b8, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, +{"extpv", "t,7,s", 0x7c0000f8, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, +{"extr_rs.w", "t,7,6", 0x7c0001b8, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, +{"extr_r.w", "t,7,6", 0x7c000138, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, +{"extr_s.h", "t,7,6", 0x7c0003b8, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, +{"extrv_rs.w", "t,7,s", 0x7c0001f8, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, +{"extrv_r.w", "t,7,s", 0x7c000178, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, +{"extrv_s.h", "t,7,s", 0x7c0003f8, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, +{"extrv.w", "t,7,s", 0x7c000078, 0xfc00e7ff, WR_t|RD_a|RD_s, 0, D32 }, +{"extr.w", "t,7,6", 0x7c000038, 0xfc00e7ff, WR_t|RD_a, 0, D32 }, +{"insv", "t,s", 0x7c00000c, 0xfc00ffff, WR_t|RD_s, 0, D32 }, +{"lbux", "d,t(b)", 0x7c00018a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D32 }, +{"ldx", "d,t(b)", 0x7c00020a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D64 }, +{"lhx", "d,t(b)", 0x7c00010a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D32 }, +{"lwx", "d,t(b)", 0x7c00000a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b, 0, D32 }, +{"maq_sa.w.phl", "7,s,t", 0x7c000430, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"maq_sa.w.phr", "7,s,t", 0x7c0004b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"maq_sa.w.qhll", "7,s,t", 0x7c000434, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_sa.w.qhlr", "7,s,t", 0x7c000474, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_sa.w.qhrl", "7,s,t", 0x7c0004b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_sa.w.qhrr", "7,s,t", 0x7c0004f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_s.l.pwl", "7,s,t", 0x7c000734, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_s.l.pwr", "7,s,t", 0x7c0007b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_s.w.phl", "7,s,t", 0x7c000530, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"maq_s.w.phr", "7,s,t", 0x7c0005b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"maq_s.w.qhll", "7,s,t", 0x7c000534, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_s.w.qhlr", "7,s,t", 0x7c000574, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_s.w.qhrl", "7,s,t", 0x7c0005b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"maq_s.w.qhrr", "7,s,t", 0x7c0005f4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"modsub", "d,s,t", 0x7c000490, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"mthlip", "s,7", 0x7c0007f8, 0xfc1fe7ff, RD_s|MOD_a|DSP_VOLA, 0, D32 }, +{"muleq_s.pw.qhl", "d,s,t", 0x7c000714, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, +{"muleq_s.pw.qhr", "d,s,t", 0x7c000754, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, +{"muleq_s.w.phl", "d,s,t", 0x7c000710, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, +{"muleq_s.w.phr", "d,s,t", 0x7c000750, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, +{"muleu_s.ph.qbl", "d,s,t", 0x7c000190, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, +{"muleu_s.ph.qbr", "d,s,t", 0x7c0001d0, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, +{"muleu_s.qh.obl", "d,s,t", 0x7c000194, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, +{"muleu_s.qh.obr", "d,s,t", 0x7c0001d4, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, +{"mulq_rs.ph", "d,s,t", 0x7c0007d0, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D32 }, +{"mulq_rs.qh", "d,s,t", 0x7c0007d4, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D64 }, +{"mulsaq_s.l.pw", "7,s,t", 0x7c0003b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"mulsaq_s.w.ph", "7,s,t", 0x7c0001b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, +{"mulsaq_s.w.qh", "7,s,t", 0x7c0001b4, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D64 }, +{"packrl.ph", "d,s,t", 0x7c000391, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"packrl.pw", "d,s,t", 0x7c000395, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"pick.ob", "d,s,t", 0x7c0000d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"pick.ph", "d,s,t", 0x7c0002d1, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"pick.pw", "d,s,t", 0x7c0004d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"pick.qb", "d,s,t", 0x7c0000d1, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"pick.qh", "d,s,t", 0x7c0002d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"preceq.pw.qhla", "d,t", 0x7c000396, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceq.pw.qhl", "d,t", 0x7c000316, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceq.pw.qhra", "d,t", 0x7c0003d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceq.pw.qhr", "d,t", 0x7c000356, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceq.s.l.pwl", "d,t", 0x7c000516, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceq.s.l.pwr", "d,t", 0x7c000556, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"precequ.ph.qbla", "d,t", 0x7c000192, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"precequ.ph.qbl", "d,t", 0x7c000112, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"precequ.ph.qbra", "d,t", 0x7c0001d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"precequ.ph.qbr", "d,t", 0x7c000152, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"precequ.pw.qhla", "d,t", 0x7c000196, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"precequ.pw.qhl", "d,t", 0x7c000116, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"precequ.pw.qhra", "d,t", 0x7c0001d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"precequ.pw.qhr", "d,t", 0x7c000156, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceq.w.phl", "d,t", 0x7c000312, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"preceq.w.phr", "d,t", 0x7c000352, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"preceu.ph.qbla", "d,t", 0x7c000792, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"preceu.ph.qbl", "d,t", 0x7c000712, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"preceu.ph.qbra", "d,t", 0x7c0007d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"preceu.ph.qbr", "d,t", 0x7c000752, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"preceu.qh.obla", "d,t", 0x7c000796, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceu.qh.obl", "d,t", 0x7c000716, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceu.qh.obra", "d,t", 0x7c0007d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"preceu.qh.obr", "d,t", 0x7c000756, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"precrq.ob.qh", "d,s,t", 0x7c000315, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"precrq.ph.w", "d,s,t", 0x7c000511, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"precrq.pw.l", "d,s,t", 0x7c000715, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"precrq.qb.ph", "d,s,t", 0x7c000311, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"precrq.qh.pw", "d,s,t", 0x7c000515, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"precrq_rs.ph.w", "d,s,t", 0x7c000551, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"precrq_rs.qh.pw", "d,s,t", 0x7c000555, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"precrqu_s.ob.qh", "d,s,t", 0x7c0003d5, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"precrqu_s.qb.ph", "d,s,t", 0x7c0003d1, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"raddu.l.ob", "d,s", 0x7c000514, 0xfc1f07ff, WR_d|RD_s, 0, D64 }, +{"raddu.w.qb", "d,s", 0x7c000510, 0xfc1f07ff, WR_d|RD_s, 0, D32 }, +{"rddsp", "d", 0x7fff04b8, 0xffff07ff, WR_d, 0, D32 }, +{"rddsp", "d,'", 0x7c0004b8, 0xffc007ff, WR_d, 0, D32 }, +{"repl.ob", "d,5", 0x7c000096, 0xff0007ff, WR_d, 0, D64 }, +{"repl.ph", "d,@", 0x7c000292, 0xfc0007ff, WR_d, 0, D32 }, +{"repl.pw", "d,@", 0x7c000496, 0xfc0007ff, WR_d, 0, D64 }, +{"repl.qb", "d,5", 0x7c000092, 0xff0007ff, WR_d, 0, D32 }, +{"repl.qh", "d,@", 0x7c000296, 0xfc0007ff, WR_d, 0, D64 }, +{"replv.ob", "d,t", 0x7c0000d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"replv.ph", "d,t", 0x7c0002d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"replv.pw", "d,t", 0x7c0004d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"replv.qb", "d,t", 0x7c0000d2, 0xffe007ff, WR_d|RD_t, 0, D32 }, +{"replv.qh", "d,t", 0x7c0002d6, 0xffe007ff, WR_d|RD_t, 0, D64 }, +{"shilo", "7,0", 0x7c0006b8, 0xfc0fe7ff, MOD_a, 0, D32 }, +{"shilov", "7,s", 0x7c0006f8, 0xfc1fe7ff, MOD_a|RD_s, 0, D32 }, +{"shll.ob", "d,t,3", 0x7c000017, 0xff0007ff, WR_d|RD_t, 0, D64 }, +{"shll.ph", "d,t,4", 0x7c000213, 0xfe0007ff, WR_d|RD_t, 0, D32 }, +{"shll.pw", "d,t,6", 0x7c000417, 0xfc0007ff, WR_d|RD_t, 0, D64 }, +{"shll.qb", "d,t,3", 0x7c000013, 0xff0007ff, WR_d|RD_t, 0, D32 }, +{"shll.qh", "d,t,4", 0x7c000217, 0xfe0007ff, WR_d|RD_t, 0, D64 }, +{"shll_s.ph", "d,t,4", 0x7c000313, 0xfe0007ff, WR_d|RD_t, 0, D32 }, +{"shll_s.pw", "d,t,6", 0x7c000517, 0xfc0007ff, WR_d|RD_t, 0, D64 }, +{"shll_s.qh", "d,t,4", 0x7c000317, 0xfe0007ff, WR_d|RD_t, 0, D64 }, +{"shll_s.w", "d,t,6", 0x7c000513, 0xfc0007ff, WR_d|RD_t, 0, D32 }, +{"shllv.ob", "d,t,s", 0x7c000097, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shllv.ph", "d,t,s", 0x7c000293, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"shllv.pw", "d,t,s", 0x7c000497, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shllv.qb", "d,t,s", 0x7c000093, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"shllv.qh", "d,t,s", 0x7c000297, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shllv_s.ph", "d,t,s", 0x7c000393, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"shllv_s.pw", "d,t,s", 0x7c000597, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shllv_s.qh", "d,t,s", 0x7c000397, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shllv_s.w", "d,t,s", 0x7c000593, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"shra.ph", "d,t,4", 0x7c000253, 0xfe0007ff, WR_d|RD_t, 0, D32 }, +{"shra.pw", "d,t,6", 0x7c000457, 0xfc0007ff, WR_d|RD_t, 0, D64 }, +{"shra.qh", "d,t,4", 0x7c000257, 0xfe0007ff, WR_d|RD_t, 0, D64 }, +{"shra_r.ph", "d,t,4", 0x7c000353, 0xfe0007ff, WR_d|RD_t, 0, D32 }, +{"shra_r.pw", "d,t,6", 0x7c000557, 0xfc0007ff, WR_d|RD_t, 0, D64 }, +{"shra_r.qh", "d,t,4", 0x7c000357, 0xfe0007ff, WR_d|RD_t, 0, D64 }, +{"shra_r.w", "d,t,6", 0x7c000553, 0xfc0007ff, WR_d|RD_t, 0, D32 }, +{"shrav.ph", "d,t,s", 0x7c0002d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"shrav.pw", "d,t,s", 0x7c0004d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shrav.qh", "d,t,s", 0x7c0002d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shrav_r.ph", "d,t,s", 0x7c0003d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"shrav_r.pw", "d,t,s", 0x7c0005d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shrav_r.qh", "d,t,s", 0x7c0003d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shrav_r.w", "d,t,s", 0x7c0005d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"shrl.ob", "d,t,3", 0x7c000057, 0xff0007ff, WR_d|RD_t, 0, D64 }, +{"shrl.qb", "d,t,3", 0x7c000053, 0xff0007ff, WR_d|RD_t, 0, D32 }, +{"shrlv.ob", "d,t,s", 0x7c0000d7, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"shrlv.qb", "d,t,s", 0x7c0000d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"subq.ph", "d,s,t", 0x7c0002d0, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"subq.pw", "d,s,t", 0x7c0004d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"subq.qh", "d,s,t", 0x7c0002d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"subq_s.ph", "d,s,t", 0x7c0003d0, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"subq_s.pw", "d,s,t", 0x7c0005d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"subq_s.qh", "d,s,t", 0x7c0003d4, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"subq_s.w", "d,s,t", 0x7c0005d0, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"subu.ob", "d,s,t", 0x7c000054, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"subu.qb", "d,s,t", 0x7c000050, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"subu_s.ob", "d,s,t", 0x7c000154, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D64 }, +{"subu_s.qb", "d,s,t", 0x7c000150, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D32 }, +{"wrdsp", "s", 0x7c1ffcf8, 0xfc1fffff, RD_s|DSP_VOLA, 0, D32 }, +{"wrdsp", "s,8", 0x7c0004f8, 0xfc1e07ff, RD_s|DSP_VOLA, 0, D32 }, +/* MIPS DSP ASE Rev2 */ +{"absq_s.qb", "d,t", 0x7c000052, 0xffe007ff, WR_d|RD_t, 0, D33 }, +{"addu.ph", "d,s,t", 0x7c000210, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"addu_s.ph", "d,s,t", 0x7c000310, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"adduh.qb", "d,s,t", 0x7c000018, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"adduh_r.qb", "d,s,t", 0x7c000098, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"append", "t,s,h", 0x7c000031, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, +{"balign", "t,s,I", 0, (int) M_BALIGN, INSN_MACRO, 0, D33 }, +{"balign", "t,s,2", 0x7c000431, 0xfc00e7ff, WR_t|RD_t|RD_s, 0, D33 }, +{"cmpgdu.eq.qb", "d,s,t", 0x7c000611, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"cmpgdu.lt.qb", "d,s,t", 0x7c000651, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"cmpgdu.le.qb", "d,s,t", 0x7c000691, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"dpa.w.ph", "7,s,t", 0x7c000030, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"dps.w.ph", "7,s,t", 0x7c000070, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"mul.ph", "d,s,t", 0x7c000318, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, +{"mul_s.ph", "d,s,t", 0x7c000398, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, +{"mulq_rs.w", "d,s,t", 0x7c0005d8, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, +{"mulq_s.ph", "d,s,t", 0x7c000790, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, +{"mulq_s.w", "d,s,t", 0x7c000598, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0, D33 }, +{"mulsa.w.ph", "7,s,t", 0x7c0000b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"precr.qb.ph", "d,s,t", 0x7c000351, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"precr_sra.ph.w", "t,s,h", 0x7c000791, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, +{"precr_sra_r.ph.w", "t,s,h", 0x7c0007d1, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, +{"prepend", "t,s,h", 0x7c000071, 0xfc0007ff, WR_t|RD_t|RD_s, 0, D33 }, +{"shra.qb", "d,t,3", 0x7c000113, 0xff0007ff, WR_d|RD_t, 0, D33 }, +{"shra_r.qb", "d,t,3", 0x7c000153, 0xff0007ff, WR_d|RD_t, 0, D33 }, +{"shrav.qb", "d,t,s", 0x7c000193, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"shrav_r.qb", "d,t,s", 0x7c0001d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"shrl.ph", "d,t,4", 0x7c000653, 0xfe0007ff, WR_d|RD_t, 0, D33 }, +{"shrlv.ph", "d,t,s", 0x7c0006d3, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subu.ph", "d,s,t", 0x7c000250, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subu_s.ph", "d,s,t", 0x7c000350, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subuh.qb", "d,s,t", 0x7c000058, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subuh_r.qb", "d,s,t", 0x7c0000d8, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"addqh.ph", "d,s,t", 0x7c000218, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"addqh_r.ph", "d,s,t", 0x7c000298, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"addqh.w", "d,s,t", 0x7c000418, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"addqh_r.w", "d,s,t", 0x7c000498, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subqh.ph", "d,s,t", 0x7c000258, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subqh_r.ph", "d,s,t", 0x7c0002d8, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subqh.w", "d,s,t", 0x7c000458, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"subqh_r.w", "d,s,t", 0x7c0004d8, 0xfc0007ff, WR_d|RD_s|RD_t, 0, D33 }, +{"dpax.w.ph", "7,s,t", 0x7c000230, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"dpsx.w.ph", "7,s,t", 0x7c000270, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"dpaqx_s.w.ph", "7,s,t", 0x7c000630, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"dpaqx_sa.w.ph", "7,s,t", 0x7c0006b0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"dpsqx_s.w.ph", "7,s,t", 0x7c000670, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +{"dpsqx_sa.w.ph", "7,s,t", 0x7c0006f0, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D33 }, +/* Move bc0* after mftr and mttr to avoid opcode collision. */ +{"bc0f", "p", 0x41000000, 0xffff0000, CBD|RD_CC, 0, I1 }, +{"bc0fl", "p", 0x41020000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, +{"bc0t", "p", 0x41010000, 0xffff0000, CBD|RD_CC, 0, I1 }, +{"bc0tl", "p", 0x41030000, 0xffff0000, CBL|RD_CC, 0, I2|T3 }, +}; + +#define MIPS_NUM_OPCODES \ + ((sizeof mips_builtin_opcodes) / (sizeof (mips_builtin_opcodes[0]))) +const int bfd_mips_num_builtin_opcodes = MIPS_NUM_OPCODES; + +/* const removed from the following to allow for dynamic extensions to the + * built-in instruction set. */ +struct mips_opcode *mips_opcodes = + (struct mips_opcode *) mips_builtin_opcodes; +int bfd_mips_num_opcodes = MIPS_NUM_OPCODES; +#undef MIPS_NUM_OPCODES + +/* Mips instructions are at maximum this many bytes long. */ +#define INSNLEN 4 + + +/* FIXME: These should be shared with gdb somehow. */ + +struct mips_cp0sel_name +{ + unsigned int cp0reg; + unsigned int sel; + const char * const name; +}; + +/* The mips16 registers. */ +static const unsigned int mips16_to_32_reg_map[] = +{ + 16, 17, 2, 3, 4, 5, 6, 7 +}; + +#define mips16_reg_names(rn) mips_gpr_names[mips16_to_32_reg_map[rn]] + + +static const char * const mips_gpr_names_numeric[32] = +{ + "$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", + "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", + "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", + "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" +}; + +static const char * const mips_gpr_names_oldabi[32] = +{ + "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3", + "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", + "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", + "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra" +}; + +static const char * const mips_gpr_names_newabi[32] = +{ + "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3", + "a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3", + "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", + "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra" +}; + +static const char * const mips_fpr_names_numeric[32] = +{ + "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", + "$f8", "$f9", "$f10", "$f11", "$f12", "$f13", "$f14", "$f15", + "$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23", + "$f24", "$f25", "$f26", "$f27", "$f28", "$f29", "$f30", "$f31" +}; + +static const char * const mips_fpr_names_32[32] = +{ + "fv0", "fv0f", "fv1", "fv1f", "ft0", "ft0f", "ft1", "ft1f", + "ft2", "ft2f", "ft3", "ft3f", "fa0", "fa0f", "fa1", "fa1f", + "ft4", "ft4f", "ft5", "ft5f", "fs0", "fs0f", "fs1", "fs1f", + "fs2", "fs2f", "fs3", "fs3f", "fs4", "fs4f", "fs5", "fs5f" +}; + +static const char * const mips_fpr_names_n32[32] = +{ + "fv0", "ft14", "fv1", "ft15", "ft0", "ft1", "ft2", "ft3", + "ft4", "ft5", "ft6", "ft7", "fa0", "fa1", "fa2", "fa3", + "fa4", "fa5", "fa6", "fa7", "fs0", "ft8", "fs1", "ft9", + "fs2", "ft10", "fs3", "ft11", "fs4", "ft12", "fs5", "ft13" +}; + +static const char * const mips_fpr_names_64[32] = +{ + "fv0", "ft12", "fv1", "ft13", "ft0", "ft1", "ft2", "ft3", + "ft4", "ft5", "ft6", "ft7", "fa0", "fa1", "fa2", "fa3", + "fa4", "fa5", "fa6", "fa7", "ft8", "ft9", "ft10", "ft11", + "fs0", "fs1", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7" +}; + +static const char * const mips_cp0_names_numeric[32] = +{ + "$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", + "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", + "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", + "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" +}; + +static const char * const mips_cp0_names_mips3264[32] = +{ + "c0_index", "c0_random", "c0_entrylo0", "c0_entrylo1", + "c0_context", "c0_pagemask", "c0_wired", "$7", + "c0_badvaddr", "c0_count", "c0_entryhi", "c0_compare", + "c0_status", "c0_cause", "c0_epc", "c0_prid", + "c0_config", "c0_lladdr", "c0_watchlo", "c0_watchhi", + "c0_xcontext", "$21", "$22", "c0_debug", + "c0_depc", "c0_perfcnt", "c0_errctl", "c0_cacheerr", + "c0_taglo", "c0_taghi", "c0_errorepc", "c0_desave", +}; + +static const struct mips_cp0sel_name mips_cp0sel_names_mips3264[] = +{ + { 4, 1, "c0_contextconfig" }, + { 0, 1, "c0_mvpcontrol" }, + { 0, 2, "c0_mvpconf0" }, + { 0, 3, "c0_mvpconf1" }, + { 1, 1, "c0_vpecontrol" }, + { 1, 2, "c0_vpeconf0" }, + { 1, 3, "c0_vpeconf1" }, + { 1, 4, "c0_yqmask" }, + { 1, 5, "c0_vpeschedule" }, + { 1, 6, "c0_vpeschefback" }, + { 2, 1, "c0_tcstatus" }, + { 2, 2, "c0_tcbind" }, + { 2, 3, "c0_tcrestart" }, + { 2, 4, "c0_tchalt" }, + { 2, 5, "c0_tccontext" }, + { 2, 6, "c0_tcschedule" }, + { 2, 7, "c0_tcschefback" }, + { 5, 1, "c0_pagegrain" }, + { 6, 1, "c0_srsconf0" }, + { 6, 2, "c0_srsconf1" }, + { 6, 3, "c0_srsconf2" }, + { 6, 4, "c0_srsconf3" }, + { 6, 5, "c0_srsconf4" }, + { 12, 1, "c0_intctl" }, + { 12, 2, "c0_srsctl" }, + { 12, 3, "c0_srsmap" }, + { 15, 1, "c0_ebase" }, + { 16, 1, "c0_config1" }, + { 16, 2, "c0_config2" }, + { 16, 3, "c0_config3" }, + { 18, 1, "c0_watchlo,1" }, + { 18, 2, "c0_watchlo,2" }, + { 18, 3, "c0_watchlo,3" }, + { 18, 4, "c0_watchlo,4" }, + { 18, 5, "c0_watchlo,5" }, + { 18, 6, "c0_watchlo,6" }, + { 18, 7, "c0_watchlo,7" }, + { 19, 1, "c0_watchhi,1" }, + { 19, 2, "c0_watchhi,2" }, + { 19, 3, "c0_watchhi,3" }, + { 19, 4, "c0_watchhi,4" }, + { 19, 5, "c0_watchhi,5" }, + { 19, 6, "c0_watchhi,6" }, + { 19, 7, "c0_watchhi,7" }, + { 23, 1, "c0_tracecontrol" }, + { 23, 2, "c0_tracecontrol2" }, + { 23, 3, "c0_usertracedata" }, + { 23, 4, "c0_tracebpc" }, + { 25, 1, "c0_perfcnt,1" }, + { 25, 2, "c0_perfcnt,2" }, + { 25, 3, "c0_perfcnt,3" }, + { 25, 4, "c0_perfcnt,4" }, + { 25, 5, "c0_perfcnt,5" }, + { 25, 6, "c0_perfcnt,6" }, + { 25, 7, "c0_perfcnt,7" }, + { 27, 1, "c0_cacheerr,1" }, + { 27, 2, "c0_cacheerr,2" }, + { 27, 3, "c0_cacheerr,3" }, + { 28, 1, "c0_datalo" }, + { 28, 2, "c0_taglo1" }, + { 28, 3, "c0_datalo1" }, + { 28, 4, "c0_taglo2" }, + { 28, 5, "c0_datalo2" }, + { 28, 6, "c0_taglo3" }, + { 28, 7, "c0_datalo3" }, + { 29, 1, "c0_datahi" }, + { 29, 2, "c0_taghi1" }, + { 29, 3, "c0_datahi1" }, + { 29, 4, "c0_taghi2" }, + { 29, 5, "c0_datahi2" }, + { 29, 6, "c0_taghi3" }, + { 29, 7, "c0_datahi3" }, +}; + +static const char * const mips_cp0_names_mips3264r2[32] = +{ + "c0_index", "c0_random", "c0_entrylo0", "c0_entrylo1", + "c0_context", "c0_pagemask", "c0_wired", "c0_hwrena", + "c0_badvaddr", "c0_count", "c0_entryhi", "c0_compare", + "c0_status", "c0_cause", "c0_epc", "c0_prid", + "c0_config", "c0_lladdr", "c0_watchlo", "c0_watchhi", + "c0_xcontext", "$21", "$22", "c0_debug", + "c0_depc", "c0_perfcnt", "c0_errctl", "c0_cacheerr", + "c0_taglo", "c0_taghi", "c0_errorepc", "c0_desave", +}; + +static const struct mips_cp0sel_name mips_cp0sel_names_mips3264r2[] = +{ + { 4, 1, "c0_contextconfig" }, + { 5, 1, "c0_pagegrain" }, + { 12, 1, "c0_intctl" }, + { 12, 2, "c0_srsctl" }, + { 12, 3, "c0_srsmap" }, + { 15, 1, "c0_ebase" }, + { 16, 1, "c0_config1" }, + { 16, 2, "c0_config2" }, + { 16, 3, "c0_config3" }, + { 18, 1, "c0_watchlo,1" }, + { 18, 2, "c0_watchlo,2" }, + { 18, 3, "c0_watchlo,3" }, + { 18, 4, "c0_watchlo,4" }, + { 18, 5, "c0_watchlo,5" }, + { 18, 6, "c0_watchlo,6" }, + { 18, 7, "c0_watchlo,7" }, + { 19, 1, "c0_watchhi,1" }, + { 19, 2, "c0_watchhi,2" }, + { 19, 3, "c0_watchhi,3" }, + { 19, 4, "c0_watchhi,4" }, + { 19, 5, "c0_watchhi,5" }, + { 19, 6, "c0_watchhi,6" }, + { 19, 7, "c0_watchhi,7" }, + { 23, 1, "c0_tracecontrol" }, + { 23, 2, "c0_tracecontrol2" }, + { 23, 3, "c0_usertracedata" }, + { 23, 4, "c0_tracebpc" }, + { 25, 1, "c0_perfcnt,1" }, + { 25, 2, "c0_perfcnt,2" }, + { 25, 3, "c0_perfcnt,3" }, + { 25, 4, "c0_perfcnt,4" }, + { 25, 5, "c0_perfcnt,5" }, + { 25, 6, "c0_perfcnt,6" }, + { 25, 7, "c0_perfcnt,7" }, + { 27, 1, "c0_cacheerr,1" }, + { 27, 2, "c0_cacheerr,2" }, + { 27, 3, "c0_cacheerr,3" }, + { 28, 1, "c0_datalo" }, + { 28, 2, "c0_taglo1" }, + { 28, 3, "c0_datalo1" }, + { 28, 4, "c0_taglo2" }, + { 28, 5, "c0_datalo2" }, + { 28, 6, "c0_taglo3" }, + { 28, 7, "c0_datalo3" }, + { 29, 1, "c0_datahi" }, + { 29, 2, "c0_taghi1" }, + { 29, 3, "c0_datahi1" }, + { 29, 4, "c0_taghi2" }, + { 29, 5, "c0_datahi2" }, + { 29, 6, "c0_taghi3" }, + { 29, 7, "c0_datahi3" }, +}; + +/* SB-1: MIPS64 (mips_cp0_names_mips3264) with minor mods. */ +static const char * const mips_cp0_names_sb1[32] = +{ + "c0_index", "c0_random", "c0_entrylo0", "c0_entrylo1", + "c0_context", "c0_pagemask", "c0_wired", "$7", + "c0_badvaddr", "c0_count", "c0_entryhi", "c0_compare", + "c0_status", "c0_cause", "c0_epc", "c0_prid", + "c0_config", "c0_lladdr", "c0_watchlo", "c0_watchhi", + "c0_xcontext", "$21", "$22", "c0_debug", + "c0_depc", "c0_perfcnt", "c0_errctl", "c0_cacheerr_i", + "c0_taglo_i", "c0_taghi_i", "c0_errorepc", "c0_desave", +}; + +static const struct mips_cp0sel_name mips_cp0sel_names_sb1[] = +{ + { 16, 1, "c0_config1" }, + { 18, 1, "c0_watchlo,1" }, + { 19, 1, "c0_watchhi,1" }, + { 22, 0, "c0_perftrace" }, + { 23, 3, "c0_edebug" }, + { 25, 1, "c0_perfcnt,1" }, + { 25, 2, "c0_perfcnt,2" }, + { 25, 3, "c0_perfcnt,3" }, + { 25, 4, "c0_perfcnt,4" }, + { 25, 5, "c0_perfcnt,5" }, + { 25, 6, "c0_perfcnt,6" }, + { 25, 7, "c0_perfcnt,7" }, + { 26, 1, "c0_buserr_pa" }, + { 27, 1, "c0_cacheerr_d" }, + { 27, 3, "c0_cacheerr_d_pa" }, + { 28, 1, "c0_datalo_i" }, + { 28, 2, "c0_taglo_d" }, + { 28, 3, "c0_datalo_d" }, + { 29, 1, "c0_datahi_i" }, + { 29, 2, "c0_taghi_d" }, + { 29, 3, "c0_datahi_d" }, +}; + +static const char * const mips_hwr_names_numeric[32] = +{ + "$0", "$1", "$2", "$3", "$4", "$5", "$6", "$7", + "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", + "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", + "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" +}; + +static const char * const mips_hwr_names_mips3264r2[32] = +{ + "hwr_cpunum", "hwr_synci_step", "hwr_cc", "hwr_ccres", + "$4", "$5", "$6", "$7", + "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", + "$16", "$17", "$18", "$19", "$20", "$21", "$22", "$23", + "$24", "$25", "$26", "$27", "$28", "$29", "$30", "$31" +}; + +struct mips_abi_choice +{ + const char *name; + const char * const *gpr_names; + const char * const *fpr_names; +}; + +struct mips_abi_choice mips_abi_choices[] = +{ + { "numeric", mips_gpr_names_numeric, mips_fpr_names_numeric }, + { "32", mips_gpr_names_oldabi, mips_fpr_names_32 }, + { "n32", mips_gpr_names_newabi, mips_fpr_names_n32 }, + { "64", mips_gpr_names_newabi, mips_fpr_names_64 }, +}; + +struct mips_arch_choice +{ + const char *name; + int bfd_mach_valid; + unsigned long bfd_mach; + int processor; + int isa; + const char * const *cp0_names; + const struct mips_cp0sel_name *cp0sel_names; + unsigned int cp0sel_names_len; + const char * const *hwr_names; +}; + +#define bfd_mach_mips3000 3000 +#define bfd_mach_mips3900 3900 +#define bfd_mach_mips4000 4000 +#define bfd_mach_mips4010 4010 +#define bfd_mach_mips4100 4100 +#define bfd_mach_mips4111 4111 +#define bfd_mach_mips4120 4120 +#define bfd_mach_mips4300 4300 +#define bfd_mach_mips4400 4400 +#define bfd_mach_mips4600 4600 +#define bfd_mach_mips4650 4650 +#define bfd_mach_mips5000 5000 +#define bfd_mach_mips5400 5400 +#define bfd_mach_mips5500 5500 +#define bfd_mach_mips6000 6000 +#define bfd_mach_mips7000 7000 +#define bfd_mach_mips8000 8000 +#define bfd_mach_mips9000 9000 +#define bfd_mach_mips10000 10000 +#define bfd_mach_mips12000 12000 +#define bfd_mach_mips16 16 +#define bfd_mach_mips5 5 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ +#define bfd_mach_mipsisa32 32 +#define bfd_mach_mipsisa32r2 33 +#define bfd_mach_mipsisa64 64 +#define bfd_mach_mipsisa64r2 65 + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) + +const struct mips_arch_choice mips_arch_choices[] = +{ + { "numeric", 0, 0, 0, 0, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + + { "r3000", 1, bfd_mach_mips3000, CPU_R3000, ISA_MIPS1, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r3900", 1, bfd_mach_mips3900, CPU_R3900, ISA_MIPS1, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r4000", 1, bfd_mach_mips4000, CPU_R4000, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r4010", 1, bfd_mach_mips4010, CPU_R4010, ISA_MIPS2, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "vr4100", 1, bfd_mach_mips4100, CPU_VR4100, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "vr4111", 1, bfd_mach_mips4111, CPU_R4111, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "vr4120", 1, bfd_mach_mips4120, CPU_VR4120, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r4300", 1, bfd_mach_mips4300, CPU_R4300, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r4400", 1, bfd_mach_mips4400, CPU_R4400, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r4600", 1, bfd_mach_mips4600, CPU_R4600, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r4650", 1, bfd_mach_mips4650, CPU_R4650, ISA_MIPS3, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r5000", 1, bfd_mach_mips5000, CPU_R5000, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "vr5400", 1, bfd_mach_mips5400, CPU_VR5400, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "vr5500", 1, bfd_mach_mips5500, CPU_VR5500, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r6000", 1, bfd_mach_mips6000, CPU_R6000, ISA_MIPS2, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "rm7000", 1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "rm9000", 1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r8000", 1, bfd_mach_mips8000, CPU_R8000, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r10000", 1, bfd_mach_mips10000, CPU_R10000, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "r12000", 1, bfd_mach_mips12000, CPU_R12000, ISA_MIPS4, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + { "mips5", 1, bfd_mach_mips5, CPU_MIPS5, ISA_MIPS5, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, + + /* For stock MIPS32, disassemble all applicable MIPS-specified ASEs. + Note that MIPS-3D and MDMX are not applicable to MIPS32. (See + _MIPS32 Architecture For Programmers Volume I: Introduction to the + MIPS32 Architecture_ (MIPS Document Number MD00082, Revision 0.95), + page 1. */ + { "mips32", 1, bfd_mach_mipsisa32, CPU_MIPS32, + ISA_MIPS32 | INSN_MIPS16 | INSN_SMARTMIPS, + mips_cp0_names_mips3264, + mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264), + mips_hwr_names_numeric }, + + { "mips32r2", 1, bfd_mach_mipsisa32r2, CPU_MIPS32R2, + (ISA_MIPS32R2 | INSN_MIPS16 | INSN_SMARTMIPS | INSN_DSP | INSN_DSPR2 + | INSN_MIPS3D | INSN_MT), + mips_cp0_names_mips3264r2, + mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2), + mips_hwr_names_mips3264r2 }, + + /* For stock MIPS64, disassemble all applicable MIPS-specified ASEs. */ + { "mips64", 1, bfd_mach_mipsisa64, CPU_MIPS64, + ISA_MIPS64 | INSN_MIPS16 | INSN_MIPS3D | INSN_MDMX, + mips_cp0_names_mips3264, + mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264), + mips_hwr_names_numeric }, + + { "mips64r2", 1, bfd_mach_mipsisa64r2, CPU_MIPS64R2, + (ISA_MIPS64R2 | INSN_MIPS16 | INSN_MIPS3D | INSN_DSP | INSN_DSPR2 + | INSN_DSP64 | INSN_MT | INSN_MDMX), + mips_cp0_names_mips3264r2, + mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2), + mips_hwr_names_mips3264r2 }, + + { "sb1", 1, bfd_mach_mips_sb1, CPU_SB1, + ISA_MIPS64 | INSN_MIPS3D | INSN_SB1, + mips_cp0_names_sb1, + mips_cp0sel_names_sb1, ARRAY_SIZE (mips_cp0sel_names_sb1), + mips_hwr_names_numeric }, + + /* This entry, mips16, is here only for ISA/processor selection; do + not print its name. */ + { "", 1, bfd_mach_mips16, CPU_MIPS16, ISA_MIPS3 | INSN_MIPS16, + mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric }, +}; + +/* ISA and processor type to disassemble for, and register names to use. + set_default_mips_dis_options and parse_mips_dis_options fill in these + values. */ +static int mips_processor; +static int mips_isa; +static const char * const *mips_gpr_names; +static const char * const *mips_fpr_names; +static const char * const *mips_cp0_names; +static const struct mips_cp0sel_name *mips_cp0sel_names; +static int mips_cp0sel_names_len; +static const char * const *mips_hwr_names; + +/* Other options */ +static int no_aliases; /* If set disassemble as most general inst. */ + +static const struct mips_abi_choice * +choose_abi_by_name (const char *name, unsigned int namelen) +{ + const struct mips_abi_choice *c; + unsigned int i; + + for (i = 0, c = NULL; i < ARRAY_SIZE (mips_abi_choices) && c == NULL; i++) + if (strncmp (mips_abi_choices[i].name, name, namelen) == 0 + && strlen (mips_abi_choices[i].name) == namelen) + c = &mips_abi_choices[i]; + + return c; +} + +static const struct mips_arch_choice * +choose_arch_by_name (const char *name, unsigned int namelen) +{ + const struct mips_arch_choice *c = NULL; + unsigned int i; + + for (i = 0, c = NULL; i < ARRAY_SIZE (mips_arch_choices) && c == NULL; i++) + if (strncmp (mips_arch_choices[i].name, name, namelen) == 0 + && strlen (mips_arch_choices[i].name) == namelen) + c = &mips_arch_choices[i]; + + return c; +} + +static const struct mips_arch_choice * +choose_arch_by_number (unsigned long mach) +{ + static unsigned long hint_bfd_mach; + static const struct mips_arch_choice *hint_arch_choice; + const struct mips_arch_choice *c; + unsigned int i; + + /* We optimize this because even if the user specifies no + flags, this will be done for every instruction! */ + if (hint_bfd_mach == mach + && hint_arch_choice != NULL + && hint_arch_choice->bfd_mach == hint_bfd_mach) + return hint_arch_choice; + + for (i = 0, c = NULL; i < ARRAY_SIZE (mips_arch_choices) && c == NULL; i++) + { + if (mips_arch_choices[i].bfd_mach_valid + && mips_arch_choices[i].bfd_mach == mach) + { + c = &mips_arch_choices[i]; + hint_bfd_mach = mach; + hint_arch_choice = c; + } + } + return c; +} + +static void +set_default_mips_dis_options (struct disassemble_info *info) +{ + const struct mips_arch_choice *chosen_arch; + + /* Defaults: mipsIII/r3000 (?!), (o)32-style ("oldabi") GPR names, + and numeric FPR, CP0 register, and HWR names. */ + mips_isa = ISA_MIPS3; + mips_processor = CPU_R3000; + mips_gpr_names = mips_gpr_names_oldabi; + mips_fpr_names = mips_fpr_names_numeric; + mips_cp0_names = mips_cp0_names_numeric; + mips_cp0sel_names = NULL; + mips_cp0sel_names_len = 0; + mips_hwr_names = mips_hwr_names_numeric; + no_aliases = 0; + + /* If an ELF "newabi" binary, use the n32/(n)64 GPR names. */ +#if 0 + if (info->flavour == bfd_target_elf_flavour && info->section != NULL) + { + Elf_Internal_Ehdr *header; + + header = elf_elfheader (info->section->owner); + if (is_newabi (header)) + mips_gpr_names = mips_gpr_names_newabi; + } +#endif + + /* Set ISA, architecture, and cp0 register names as best we can. */ +#if !defined(SYMTAB_AVAILABLE) && 0 + /* This is running out on a target machine, not in a host tool. + FIXME: Where does mips_target_info come from? */ + target_processor = mips_target_info.processor; + mips_isa = mips_target_info.isa; +#else + chosen_arch = choose_arch_by_number (info->mach); + if (chosen_arch != NULL) + { + mips_processor = chosen_arch->processor; + mips_isa = chosen_arch->isa; + mips_cp0_names = chosen_arch->cp0_names; + mips_cp0sel_names = chosen_arch->cp0sel_names; + mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; + mips_hwr_names = chosen_arch->hwr_names; + } +#endif +} + +static void +parse_mips_dis_option (const char *option, unsigned int len) +{ + unsigned int i, optionlen, vallen; + const char *val; + const struct mips_abi_choice *chosen_abi; + const struct mips_arch_choice *chosen_arch; + + /* Look for the = that delimits the end of the option name. */ + for (i = 0; i < len; i++) + { + if (option[i] == '=') + break; + } + if (i == 0) /* Invalid option: no name before '='. */ + return; + if (i == len) /* Invalid option: no '='. */ + return; + if (i == (len - 1)) /* Invalid option: no value after '='. */ + return; + + optionlen = i; + val = option + (optionlen + 1); + vallen = len - (optionlen + 1); + + if (strncmp("gpr-names", option, optionlen) == 0 + && strlen("gpr-names") == optionlen) + { + chosen_abi = choose_abi_by_name (val, vallen); + if (chosen_abi != NULL) + mips_gpr_names = chosen_abi->gpr_names; + return; + } + + if (strncmp("fpr-names", option, optionlen) == 0 + && strlen("fpr-names") == optionlen) + { + chosen_abi = choose_abi_by_name (val, vallen); + if (chosen_abi != NULL) + mips_fpr_names = chosen_abi->fpr_names; + return; + } + + if (strncmp("cp0-names", option, optionlen) == 0 + && strlen("cp0-names") == optionlen) + { + chosen_arch = choose_arch_by_name (val, vallen); + if (chosen_arch != NULL) + { + mips_cp0_names = chosen_arch->cp0_names; + mips_cp0sel_names = chosen_arch->cp0sel_names; + mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; + } + return; + } + + if (strncmp("hwr-names", option, optionlen) == 0 + && strlen("hwr-names") == optionlen) + { + chosen_arch = choose_arch_by_name (val, vallen); + if (chosen_arch != NULL) + mips_hwr_names = chosen_arch->hwr_names; + return; + } + + if (strncmp("reg-names", option, optionlen) == 0 + && strlen("reg-names") == optionlen) + { + /* We check both ABI and ARCH here unconditionally, so + that "numeric" will do the desirable thing: select + numeric register names for all registers. Other than + that, a given name probably won't match both. */ + chosen_abi = choose_abi_by_name (val, vallen); + if (chosen_abi != NULL) + { + mips_gpr_names = chosen_abi->gpr_names; + mips_fpr_names = chosen_abi->fpr_names; + } + chosen_arch = choose_arch_by_name (val, vallen); + if (chosen_arch != NULL) + { + mips_cp0_names = chosen_arch->cp0_names; + mips_cp0sel_names = chosen_arch->cp0sel_names; + mips_cp0sel_names_len = chosen_arch->cp0sel_names_len; + mips_hwr_names = chosen_arch->hwr_names; + } + return; + } + + /* Invalid option. */ +} + +static void +parse_mips_dis_options (const char *options) +{ + const char *option_end; + + if (options == NULL) + return; + + while (*options != '\0') + { + /* Skip empty options. */ + if (*options == ',') + { + options++; + continue; + } + + /* We know that *options is neither NUL or a comma. */ + option_end = options + 1; + while (*option_end != ',' && *option_end != '\0') + option_end++; + + parse_mips_dis_option (options, option_end - options); + + /* Go on to the next one. If option_end points to a comma, it + will be skipped above. */ + options = option_end; + } +} + +static const struct mips_cp0sel_name * +lookup_mips_cp0sel_name (const struct mips_cp0sel_name *names, + unsigned int len, + unsigned int cp0reg, + unsigned int sel) +{ + unsigned int i; + + for (i = 0; i < len; i++) + if (names[i].cp0reg == cp0reg && names[i].sel == sel) + return &names[i]; + return NULL; +} + +/* Print insn arguments for 32/64-bit code. */ + +static void +print_insn_args (const char *d, + register unsigned long int l, + bfd_vma pc, + struct disassemble_info *info, + const struct mips_opcode *opp) +{ + int op, delta; + unsigned int lsb, msb, msbd; + + lsb = 0; + + for (; *d != '\0'; d++) + { + switch (*d) + { + case ',': + case '(': + case ')': + case '[': + case ']': + (*info->fprintf_func) (info->stream, "%c", *d); + break; + + case '+': + /* Extension character; switch for second char. */ + d++; + switch (*d) + { + case '\0': + /* xgettext:c-format */ + (*info->fprintf_func) (info->stream, + _("# internal error, incomplete extension sequence (+)")); + return; + + case 'A': + lsb = (l >> OP_SH_SHAMT) & OP_MASK_SHAMT; + (*info->fprintf_func) (info->stream, "0x%x", lsb); + break; + + case 'B': + msb = (l >> OP_SH_INSMSB) & OP_MASK_INSMSB; + (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1); + break; + + case '1': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_UDI1) & OP_MASK_UDI1); + break; + + case '2': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_UDI2) & OP_MASK_UDI2); + break; + + case '3': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_UDI3) & OP_MASK_UDI3); + break; + + case '4': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_UDI4) & OP_MASK_UDI4); + break; + + case 'C': + case 'H': + msbd = (l >> OP_SH_EXTMSBD) & OP_MASK_EXTMSBD; + (*info->fprintf_func) (info->stream, "0x%x", msbd + 1); + break; + + case 'D': + { + const struct mips_cp0sel_name *n; + unsigned int cp0reg, sel; + + cp0reg = (l >> OP_SH_RD) & OP_MASK_RD; + sel = (l >> OP_SH_SEL) & OP_MASK_SEL; + + /* CP0 register including 'sel' code for mtcN (et al.), to be + printed textually if known. If not known, print both + CP0 register name and sel numerically since CP0 register + with sel 0 may have a name unrelated to register being + printed. */ + n = lookup_mips_cp0sel_name(mips_cp0sel_names, + mips_cp0sel_names_len, cp0reg, sel); + if (n != NULL) + (*info->fprintf_func) (info->stream, "%s", n->name); + else + (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel); + break; + } + + case 'E': + lsb = ((l >> OP_SH_SHAMT) & OP_MASK_SHAMT) + 32; + (*info->fprintf_func) (info->stream, "0x%x", lsb); + break; + + case 'F': + msb = ((l >> OP_SH_INSMSB) & OP_MASK_INSMSB) + 32; + (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1); + break; + + case 'G': + msbd = ((l >> OP_SH_EXTMSBD) & OP_MASK_EXTMSBD) + 32; + (*info->fprintf_func) (info->stream, "0x%x", msbd + 1); + break; + + case 't': /* Coprocessor 0 reg name */ + (*info->fprintf_func) (info->stream, "%s", + mips_cp0_names[(l >> OP_SH_RT) & + OP_MASK_RT]); + break; + + case 'T': /* Coprocessor 0 reg name */ + { + const struct mips_cp0sel_name *n; + unsigned int cp0reg, sel; + + cp0reg = (l >> OP_SH_RT) & OP_MASK_RT; + sel = (l >> OP_SH_SEL) & OP_MASK_SEL; + + /* CP0 register including 'sel' code for mftc0, to be + printed textually if known. If not known, print both + CP0 register name and sel numerically since CP0 register + with sel 0 may have a name unrelated to register being + printed. */ + n = lookup_mips_cp0sel_name(mips_cp0sel_names, + mips_cp0sel_names_len, cp0reg, sel); + if (n != NULL) + (*info->fprintf_func) (info->stream, "%s", n->name); + else + (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel); + break; + } + + default: + /* xgettext:c-format */ + (*info->fprintf_func) (info->stream, + _("# internal error, undefined extension sequence (+%c)"), + *d); + return; + } + break; + + case '2': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_BP) & OP_MASK_BP); + break; + + case '3': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_SA3) & OP_MASK_SA3); + break; + + case '4': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_SA4) & OP_MASK_SA4); + break; + + case '5': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_IMM8) & OP_MASK_IMM8); + break; + + case '6': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_RS) & OP_MASK_RS); + break; + + case '7': + (*info->fprintf_func) (info->stream, "$ac%ld", + (l >> OP_SH_DSPACC) & OP_MASK_DSPACC); + break; + + case '8': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_WRDSP) & OP_MASK_WRDSP); + break; + + case '9': + (*info->fprintf_func) (info->stream, "$ac%ld", + (l >> OP_SH_DSPACC_S) & OP_MASK_DSPACC_S); + break; + + case '0': /* dsp 6-bit signed immediate in bit 20 */ + delta = ((l >> OP_SH_DSPSFT) & OP_MASK_DSPSFT); + if (delta & 0x20) /* test sign bit */ + delta |= ~OP_MASK_DSPSFT; + (*info->fprintf_func) (info->stream, "%d", delta); + break; + + case ':': /* dsp 7-bit signed immediate in bit 19 */ + delta = ((l >> OP_SH_DSPSFT_7) & OP_MASK_DSPSFT_7); + if (delta & 0x40) /* test sign bit */ + delta |= ~OP_MASK_DSPSFT_7; + (*info->fprintf_func) (info->stream, "%d", delta); + break; + + case '\'': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_RDDSP) & OP_MASK_RDDSP); + break; + + case '@': /* dsp 10-bit signed immediate in bit 16 */ + delta = ((l >> OP_SH_IMM10) & OP_MASK_IMM10); + if (delta & 0x200) /* test sign bit */ + delta |= ~OP_MASK_IMM10; + (*info->fprintf_func) (info->stream, "%d", delta); + break; + + case '!': + (*info->fprintf_func) (info->stream, "%ld", + (l >> OP_SH_MT_U) & OP_MASK_MT_U); + break; + + case '$': + (*info->fprintf_func) (info->stream, "%ld", + (l >> OP_SH_MT_H) & OP_MASK_MT_H); + break; + + case '*': + (*info->fprintf_func) (info->stream, "$ac%ld", + (l >> OP_SH_MTACC_T) & OP_MASK_MTACC_T); + break; + + case '&': + (*info->fprintf_func) (info->stream, "$ac%ld", + (l >> OP_SH_MTACC_D) & OP_MASK_MTACC_D); + break; + + case 'g': + /* Coprocessor register for CTTC1, MTTC2, MTHC2, CTTC2. */ + (*info->fprintf_func) (info->stream, "$%ld", + (l >> OP_SH_RD) & OP_MASK_RD); + break; + + case 's': + case 'b': + case 'r': + case 'v': + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[(l >> OP_SH_RS) & OP_MASK_RS]); + break; + + case 't': + case 'w': + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]); + break; + + case 'i': + case 'u': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_IMMEDIATE) & OP_MASK_IMMEDIATE); + break; + + case 'j': /* Same as i, but sign-extended. */ + case 'o': + delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA; + if (delta & 0x8000) + delta |= ~0xffff; + (*info->fprintf_func) (info->stream, "%d", + delta); + break; + + case 'h': + (*info->fprintf_func) (info->stream, "0x%x", + (unsigned int) ((l >> OP_SH_PREFX) + & OP_MASK_PREFX)); + break; + + case 'k': + (*info->fprintf_func) (info->stream, "0x%x", + (unsigned int) ((l >> OP_SH_CACHE) + & OP_MASK_CACHE)); + break; + + case 'a': + info->target = (((pc + 4) & ~(bfd_vma) 0x0fffffff) + | (((l >> OP_SH_TARGET) & OP_MASK_TARGET) << 2)); + /* For gdb disassembler, force odd address on jalx. */ + if (info->flavour == bfd_target_unknown_flavour + && strcmp (opp->name, "jalx") == 0) + info->target |= 1; + (*info->print_address_func) (info->target, info); + break; + + case 'p': + /* Sign extend the displacement. */ + delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA; + if (delta & 0x8000) + delta |= ~0xffff; + info->target = (delta << 2) + pc + INSNLEN; + (*info->print_address_func) (info->target, info); + break; + + case 'd': + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[(l >> OP_SH_RD) & OP_MASK_RD]); + break; + + case 'U': + { + /* First check for both rd and rt being equal. */ + unsigned int reg = (l >> OP_SH_RD) & OP_MASK_RD; + if (reg == ((l >> OP_SH_RT) & OP_MASK_RT)) + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[reg]); + else + { + /* If one is zero use the other. */ + if (reg == 0) + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]); + else if (((l >> OP_SH_RT) & OP_MASK_RT) == 0) + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[reg]); + else /* Bogus, result depends on processor. */ + (*info->fprintf_func) (info->stream, "%s or %s", + mips_gpr_names[reg], + mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]); + } + } + break; + + case 'z': + (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]); + break; + + case '<': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_SHAMT) & OP_MASK_SHAMT); + break; + + case 'c': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_CODE) & OP_MASK_CODE); + break; + + case 'q': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_CODE2) & OP_MASK_CODE2); + break; + + case 'C': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_COPZ) & OP_MASK_COPZ); + break; + + case 'B': + (*info->fprintf_func) (info->stream, "0x%lx", + + (l >> OP_SH_CODE20) & OP_MASK_CODE20); + break; + + case 'J': + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_CODE19) & OP_MASK_CODE19); + break; + + case 'S': + case 'V': + (*info->fprintf_func) (info->stream, "%s", + mips_fpr_names[(l >> OP_SH_FS) & OP_MASK_FS]); + break; + + case 'T': + case 'W': + (*info->fprintf_func) (info->stream, "%s", + mips_fpr_names[(l >> OP_SH_FT) & OP_MASK_FT]); + break; + + case 'D': + (*info->fprintf_func) (info->stream, "%s", + mips_fpr_names[(l >> OP_SH_FD) & OP_MASK_FD]); + break; + + case 'R': + (*info->fprintf_func) (info->stream, "%s", + mips_fpr_names[(l >> OP_SH_FR) & OP_MASK_FR]); + break; + + case 'E': + /* Coprocessor register for lwcN instructions, et al. + + Note that there is no load/store cp0 instructions, and + that FPU (cp1) instructions disassemble this field using + 'T' format. Therefore, until we gain understanding of + cp2 register names, we can simply print the register + numbers. */ + (*info->fprintf_func) (info->stream, "$%ld", + (l >> OP_SH_RT) & OP_MASK_RT); + break; + + case 'G': + /* Coprocessor register for mtcN instructions, et al. Note + that FPU (cp1) instructions disassemble this field using + 'S' format. Therefore, we only need to worry about cp0, + cp2, and cp3. */ + op = (l >> OP_SH_OP) & OP_MASK_OP; + if (op == OP_OP_COP0) + (*info->fprintf_func) (info->stream, "%s", + mips_cp0_names[(l >> OP_SH_RD) & OP_MASK_RD]); + else + (*info->fprintf_func) (info->stream, "$%ld", + (l >> OP_SH_RD) & OP_MASK_RD); + break; + + case 'K': + (*info->fprintf_func) (info->stream, "%s", + mips_hwr_names[(l >> OP_SH_RD) & OP_MASK_RD]); + break; + + case 'N': + (*info->fprintf_func) (info->stream, + ((opp->pinfo & (FP_D | FP_S)) != 0 + ? "$fcc%ld" : "$cc%ld"), + (l >> OP_SH_BCC) & OP_MASK_BCC); + break; + + case 'M': + (*info->fprintf_func) (info->stream, "$fcc%ld", + (l >> OP_SH_CCC) & OP_MASK_CCC); + break; + + case 'P': + (*info->fprintf_func) (info->stream, "%ld", + (l >> OP_SH_PERFREG) & OP_MASK_PERFREG); + break; + + case 'e': + (*info->fprintf_func) (info->stream, "%ld", + (l >> OP_SH_VECBYTE) & OP_MASK_VECBYTE); + break; + + case '%': + (*info->fprintf_func) (info->stream, "%ld", + (l >> OP_SH_VECALIGN) & OP_MASK_VECALIGN); + break; + + case 'H': + (*info->fprintf_func) (info->stream, "%ld", + (l >> OP_SH_SEL) & OP_MASK_SEL); + break; + + case 'O': + (*info->fprintf_func) (info->stream, "%ld", + (l >> OP_SH_ALN) & OP_MASK_ALN); + break; + + case 'Q': + { + unsigned int vsel = (l >> OP_SH_VSEL) & OP_MASK_VSEL; + + if ((vsel & 0x10) == 0) + { + int fmt; + + vsel &= 0x0f; + for (fmt = 0; fmt < 3; fmt++, vsel >>= 1) + if ((vsel & 1) == 0) + break; + (*info->fprintf_func) (info->stream, "$v%ld[%d]", + (l >> OP_SH_FT) & OP_MASK_FT, + vsel >> 1); + } + else if ((vsel & 0x08) == 0) + { + (*info->fprintf_func) (info->stream, "$v%ld", + (l >> OP_SH_FT) & OP_MASK_FT); + } + else + { + (*info->fprintf_func) (info->stream, "0x%lx", + (l >> OP_SH_FT) & OP_MASK_FT); + } + } + break; + + case 'X': + (*info->fprintf_func) (info->stream, "$v%ld", + (l >> OP_SH_FD) & OP_MASK_FD); + break; + + case 'Y': + (*info->fprintf_func) (info->stream, "$v%ld", + (l >> OP_SH_FS) & OP_MASK_FS); + break; + + case 'Z': + (*info->fprintf_func) (info->stream, "$v%ld", + (l >> OP_SH_FT) & OP_MASK_FT); + break; + + default: + /* xgettext:c-format */ + (*info->fprintf_func) (info->stream, + _("# internal error, undefined modifier(%c)"), + *d); + return; + } + } +} + +/* Check if the object uses NewABI conventions. */ +#if 0 +static int +is_newabi (header) + Elf_Internal_Ehdr *header; +{ + /* There are no old-style ABIs which use 64-bit ELF. */ + if (header->e_ident[EI_CLASS] == ELFCLASS64) + return 1; + + /* If a 32-bit ELF file, n32 is a new-style ABI. */ + if ((header->e_flags & EF_MIPS_ABI2) != 0) + return 1; + + return 0; +} +#endif + +/* Print the mips instruction at address MEMADDR in debugged memory, + on using INFO. Returns length of the instruction, in bytes, which is + always INSNLEN. BIGENDIAN must be 1 if this is big-endian code, 0 if + this is little-endian code. */ + +static int +print_insn_mips (bfd_vma memaddr, + unsigned long int word, + struct disassemble_info *info) +{ + const struct mips_opcode *op; + static bfd_boolean init = 0; + static const struct mips_opcode *mips_hash[OP_MASK_OP + 1]; + + /* Build a hash table to shorten the search time. */ + if (! init) + { + unsigned int i; + + for (i = 0; i <= OP_MASK_OP; i++) + { + for (op = mips_opcodes; op < &mips_opcodes[NUMOPCODES]; op++) + { + if (op->pinfo == INSN_MACRO + || (no_aliases && (op->pinfo2 & INSN2_ALIAS))) + continue; + if (i == ((op->match >> OP_SH_OP) & OP_MASK_OP)) + { + mips_hash[i] = op; + break; + } + } + } + + init = 1; + } + + info->bytes_per_chunk = INSNLEN; + info->display_endian = info->endian; + info->insn_info_valid = 1; + info->branch_delay_insns = 0; + info->data_size = 0; + info->insn_type = dis_nonbranch; + info->target = 0; + info->target2 = 0; + + op = mips_hash[(word >> OP_SH_OP) & OP_MASK_OP]; + if (op != NULL) + { + for (; op < &mips_opcodes[NUMOPCODES]; op++) + { + if (op->pinfo != INSN_MACRO + && !(no_aliases && (op->pinfo2 & INSN2_ALIAS)) + && (word & op->mask) == op->match) + { + const char *d; + + /* We always allow to disassemble the jalx instruction. */ + if (! OPCODE_IS_MEMBER (op, mips_isa, mips_processor) + && strcmp (op->name, "jalx")) + continue; + + /* Figure out instruction type and branch delay information. */ + if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0) + { + if ((info->insn_type & INSN_WRITE_GPR_31) != 0) + info->insn_type = dis_jsr; + else + info->insn_type = dis_branch; + info->branch_delay_insns = 1; + } + else if ((op->pinfo & (INSN_COND_BRANCH_DELAY + | INSN_COND_BRANCH_LIKELY)) != 0) + { + if ((info->insn_type & INSN_WRITE_GPR_31) != 0) + info->insn_type = dis_condjsr; + else + info->insn_type = dis_condbranch; + info->branch_delay_insns = 1; + } + else if ((op->pinfo & (INSN_STORE_MEMORY + | INSN_LOAD_MEMORY_DELAY)) != 0) + info->insn_type = dis_dref; + + (*info->fprintf_func) (info->stream, "%s", op->name); + + d = op->args; + if (d != NULL && *d != '\0') + { + (*info->fprintf_func) (info->stream, "\t"); + print_insn_args (d, word, memaddr, info, op); + } + + return INSNLEN; + } + } + } + + /* Handle undefined instructions. */ + info->insn_type = dis_noninsn; + (*info->fprintf_func) (info->stream, "0x%lx", word); + return INSNLEN; +} + +/* In an environment where we do not know the symbol type of the + instruction we are forced to assume that the low order bit of the + instructions' address may mark it as a mips16 instruction. If we + are single stepping, or the pc is within the disassembled function, + this works. Otherwise, we need a clue. Sometimes. */ + +static int +_print_insn_mips (bfd_vma memaddr, + struct disassemble_info *info, + enum bfd_endian endianness) +{ + bfd_byte buffer[INSNLEN]; + int status; + + set_default_mips_dis_options (info); + parse_mips_dis_options (info->disassembler_options); + +#if 0 +#if 1 + /* FIXME: If odd address, this is CLEARLY a mips 16 instruction. */ + /* Only a few tools will work this way. */ + if (memaddr & 0x01) + return print_insn_mips16 (memaddr, info); +#endif + +#if SYMTAB_AVAILABLE + if (info->mach == bfd_mach_mips16 + || (info->flavour == bfd_target_elf_flavour + && info->symbols != NULL + && ((*(elf_symbol_type **) info->symbols)->internal_elf_sym.st_other + == STO_MIPS16))) + return print_insn_mips16 (memaddr, info); +#endif +#endif + + status = (*info->read_memory_func) (memaddr, buffer, INSNLEN, info); + if (status == 0) + { + unsigned long insn; + + if (endianness == BFD_ENDIAN_BIG) + insn = (unsigned long) bfd_getb32 (buffer); + else + insn = (unsigned long) bfd_getl32 (buffer); + + return print_insn_mips (memaddr, insn, info); + } + else + { + (*info->memory_error_func) (status, memaddr, info); + return -1; + } +} + +int +print_insn_big_mips (bfd_vma memaddr, struct disassemble_info *info) +{ + return _print_insn_mips (memaddr, info, BFD_ENDIAN_BIG); +} + +int +print_insn_little_mips (bfd_vma memaddr, struct disassemble_info *info) +{ + return _print_insn_mips (memaddr, info, BFD_ENDIAN_LITTLE); +} + +/* Disassemble mips16 instructions. */ +#if 0 +static int +print_insn_mips16 (bfd_vma memaddr, struct disassemble_info *info) +{ + int status; + bfd_byte buffer[2]; + int length; + int insn; + bfd_boolean use_extend; + int extend = 0; + const struct mips_opcode *op, *opend; + + info->bytes_per_chunk = 2; + info->display_endian = info->endian; + info->insn_info_valid = 1; + info->branch_delay_insns = 0; + info->data_size = 0; + info->insn_type = dis_nonbranch; + info->target = 0; + info->target2 = 0; + + status = (*info->read_memory_func) (memaddr, buffer, 2, info); + if (status != 0) + { + (*info->memory_error_func) (status, memaddr, info); + return -1; + } + + length = 2; + + if (info->endian == BFD_ENDIAN_BIG) + insn = bfd_getb16 (buffer); + else + insn = bfd_getl16 (buffer); + + /* Handle the extend opcode specially. */ + use_extend = FALSE; + if ((insn & 0xf800) == 0xf000) + { + use_extend = TRUE; + extend = insn & 0x7ff; + + memaddr += 2; + + status = (*info->read_memory_func) (memaddr, buffer, 2, info); + if (status != 0) + { + (*info->fprintf_func) (info->stream, "extend 0x%x", + (unsigned int) extend); + (*info->memory_error_func) (status, memaddr, info); + return -1; + } + + if (info->endian == BFD_ENDIAN_BIG) + insn = bfd_getb16 (buffer); + else + insn = bfd_getl16 (buffer); + + /* Check for an extend opcode followed by an extend opcode. */ + if ((insn & 0xf800) == 0xf000) + { + (*info->fprintf_func) (info->stream, "extend 0x%x", + (unsigned int) extend); + info->insn_type = dis_noninsn; + return length; + } + + length += 2; + } + + /* FIXME: Should probably use a hash table on the major opcode here. */ + + opend = mips16_opcodes + bfd_mips16_num_opcodes; + for (op = mips16_opcodes; op < opend; op++) + { + if (op->pinfo != INSN_MACRO + && !(no_aliases && (op->pinfo2 & INSN2_ALIAS)) + && (insn & op->mask) == op->match) + { + const char *s; + + if (strchr (op->args, 'a') != NULL) + { + if (use_extend) + { + (*info->fprintf_func) (info->stream, "extend 0x%x", + (unsigned int) extend); + info->insn_type = dis_noninsn; + return length - 2; + } + + use_extend = FALSE; + + memaddr += 2; + + status = (*info->read_memory_func) (memaddr, buffer, 2, + info); + if (status == 0) + { + use_extend = TRUE; + if (info->endian == BFD_ENDIAN_BIG) + extend = bfd_getb16 (buffer); + else + extend = bfd_getl16 (buffer); + length += 2; + } + } + + (*info->fprintf_func) (info->stream, "%s", op->name); + if (op->args[0] != '\0') + (*info->fprintf_func) (info->stream, "\t"); + + for (s = op->args; *s != '\0'; s++) + { + if (*s == ',' + && s[1] == 'w' + && (((insn >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX) + == ((insn >> MIPS16OP_SH_RY) & MIPS16OP_MASK_RY))) + { + /* Skip the register and the comma. */ + ++s; + continue; + } + if (*s == ',' + && s[1] == 'v' + && (((insn >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ) + == ((insn >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX))) + { + /* Skip the register and the comma. */ + ++s; + continue; + } + print_mips16_insn_arg (*s, op, insn, use_extend, extend, memaddr, + info); + } + + if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0) + { + info->branch_delay_insns = 1; + if (info->insn_type != dis_jsr) + info->insn_type = dis_branch; + } + + return length; + } + } + + if (use_extend) + (*info->fprintf_func) (info->stream, "0x%x", extend | 0xf000); + (*info->fprintf_func) (info->stream, "0x%x", insn); + info->insn_type = dis_noninsn; + + return length; +} + +/* Disassemble an operand for a mips16 instruction. */ + +static void +print_mips16_insn_arg (char type, + const struct mips_opcode *op, + int l, + bfd_boolean use_extend, + int extend, + bfd_vma memaddr, + struct disassemble_info *info) +{ + switch (type) + { + case ',': + case '(': + case ')': + (*info->fprintf_func) (info->stream, "%c", type); + break; + + case 'y': + case 'w': + (*info->fprintf_func) (info->stream, "%s", + mips16_reg_names(((l >> MIPS16OP_SH_RY) + & MIPS16OP_MASK_RY))); + break; + + case 'x': + case 'v': + (*info->fprintf_func) (info->stream, "%s", + mips16_reg_names(((l >> MIPS16OP_SH_RX) + & MIPS16OP_MASK_RX))); + break; + + case 'z': + (*info->fprintf_func) (info->stream, "%s", + mips16_reg_names(((l >> MIPS16OP_SH_RZ) + & MIPS16OP_MASK_RZ))); + break; + + case 'Z': + (*info->fprintf_func) (info->stream, "%s", + mips16_reg_names(((l >> MIPS16OP_SH_MOVE32Z) + & MIPS16OP_MASK_MOVE32Z))); + break; + + case '0': + (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]); + break; + + case 'S': + (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[29]); + break; + + case 'P': + (*info->fprintf_func) (info->stream, "$pc"); + break; + + case 'R': + (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[31]); + break; + + case 'X': + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[((l >> MIPS16OP_SH_REGR32) + & MIPS16OP_MASK_REGR32)]); + break; + + case 'Y': + (*info->fprintf_func) (info->stream, "%s", + mips_gpr_names[MIPS16OP_EXTRACT_REG32R (l)]); + break; + + case '<': + case '>': + case '[': + case ']': + case '4': + case '5': + case 'H': + case 'W': + case 'D': + case 'j': + case '6': + case '8': + case 'V': + case 'C': + case 'U': + case 'k': + case 'K': + case 'p': + case 'q': + case 'A': + case 'B': + case 'E': + { + int immed, nbits, shift, signedp, extbits, pcrel, extu, branch; + + shift = 0; + signedp = 0; + extbits = 16; + pcrel = 0; + extu = 0; + branch = 0; + switch (type) + { + case '<': + nbits = 3; + immed = (l >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ; + extbits = 5; + extu = 1; + break; + case '>': + nbits = 3; + immed = (l >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX; + extbits = 5; + extu = 1; + break; + case '[': + nbits = 3; + immed = (l >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ; + extbits = 6; + extu = 1; + break; + case ']': + nbits = 3; + immed = (l >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX; + extbits = 6; + extu = 1; + break; + case '4': + nbits = 4; + immed = (l >> MIPS16OP_SH_IMM4) & MIPS16OP_MASK_IMM4; + signedp = 1; + extbits = 15; + break; + case '5': + nbits = 5; + immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; + info->insn_type = dis_dref; + info->data_size = 1; + break; + case 'H': + nbits = 5; + shift = 1; + immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; + info->insn_type = dis_dref; + info->data_size = 2; + break; + case 'W': + nbits = 5; + shift = 2; + immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; + if ((op->pinfo & MIPS16_INSN_READ_PC) == 0 + && (op->pinfo & MIPS16_INSN_READ_SP) == 0) + { + info->insn_type = dis_dref; + info->data_size = 4; + } + break; + case 'D': + nbits = 5; + shift = 3; + immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; + info->insn_type = dis_dref; + info->data_size = 8; + break; + case 'j': + nbits = 5; + immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; + signedp = 1; + break; + case '6': + nbits = 6; + immed = (l >> MIPS16OP_SH_IMM6) & MIPS16OP_MASK_IMM6; + break; + case '8': + nbits = 8; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + break; + case 'V': + nbits = 8; + shift = 2; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + /* FIXME: This might be lw, or it might be addiu to $sp or + $pc. We assume it's load. */ + info->insn_type = dis_dref; + info->data_size = 4; + break; + case 'C': + nbits = 8; + shift = 3; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + info->insn_type = dis_dref; + info->data_size = 8; + break; + case 'U': + nbits = 8; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + extu = 1; + break; + case 'k': + nbits = 8; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + signedp = 1; + break; + case 'K': + nbits = 8; + shift = 3; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + signedp = 1; + break; + case 'p': + nbits = 8; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + signedp = 1; + pcrel = 1; + branch = 1; + info->insn_type = dis_condbranch; + break; + case 'q': + nbits = 11; + immed = (l >> MIPS16OP_SH_IMM11) & MIPS16OP_MASK_IMM11; + signedp = 1; + pcrel = 1; + branch = 1; + info->insn_type = dis_branch; + break; + case 'A': + nbits = 8; + shift = 2; + immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8; + pcrel = 1; + /* FIXME: This can be lw or la. We assume it is lw. */ + info->insn_type = dis_dref; + info->data_size = 4; + break; + case 'B': + nbits = 5; + shift = 3; + immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; + pcrel = 1; + info->insn_type = dis_dref; + info->data_size = 8; + break; + case 'E': + nbits = 5; + shift = 2; + immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5; + pcrel = 1; + break; + default: + abort (); + } + + if (! use_extend) + { + if (signedp && immed >= (1 << (nbits - 1))) + immed -= 1 << nbits; + immed <<= shift; + if ((type == '<' || type == '>' || type == '[' || type == ']') + && immed == 0) + immed = 8; + } + else + { + if (extbits == 16) + immed |= ((extend & 0x1f) << 11) | (extend & 0x7e0); + else if (extbits == 15) + immed |= ((extend & 0xf) << 11) | (extend & 0x7f0); + else + immed = ((extend >> 6) & 0x1f) | (extend & 0x20); + immed &= (1 << extbits) - 1; + if (! extu && immed >= (1 << (extbits - 1))) + immed -= 1 << extbits; + } + + if (! pcrel) + (*info->fprintf_func) (info->stream, "%d", immed); + else + { + bfd_vma baseaddr; + + if (branch) + { + immed *= 2; + baseaddr = memaddr + 2; + } + else if (use_extend) + baseaddr = memaddr - 2; + else + { + int status; + bfd_byte buffer[2]; + + baseaddr = memaddr; + + /* If this instruction is in the delay slot of a jr + instruction, the base address is the address of the + jr instruction. If it is in the delay slot of jalr + instruction, the base address is the address of the + jalr instruction. This test is unreliable: we have + no way of knowing whether the previous word is + instruction or data. */ + status = (*info->read_memory_func) (memaddr - 4, buffer, 2, + info); + if (status == 0 + && (((info->endian == BFD_ENDIAN_BIG + ? bfd_getb16 (buffer) + : bfd_getl16 (buffer)) + & 0xf800) == 0x1800)) + baseaddr = memaddr - 4; + else + { + status = (*info->read_memory_func) (memaddr - 2, buffer, + 2, info); + if (status == 0 + && (((info->endian == BFD_ENDIAN_BIG + ? bfd_getb16 (buffer) + : bfd_getl16 (buffer)) + & 0xf81f) == 0xe800)) + baseaddr = memaddr - 2; + } + } + info->target = (baseaddr & ~((1 << shift) - 1)) + immed; + if (pcrel && branch + && info->flavour == bfd_target_unknown_flavour) + /* For gdb disassembler, maintain odd address. */ + info->target |= 1; + (*info->print_address_func) (info->target, info); + } + } + break; + + case 'a': + { + int jalx = l & 0x400; + + if (! use_extend) + extend = 0; + l = ((l & 0x1f) << 23) | ((l & 0x3e0) << 13) | (extend << 2); + if (!jalx && info->flavour == bfd_target_unknown_flavour) + /* For gdb disassembler, maintain odd address. */ + l |= 1; + } + info->target = ((memaddr + 4) & ~(bfd_vma) 0x0fffffff) | l; + (*info->print_address_func) (info->target, info); + info->insn_type = dis_jsr; + info->branch_delay_insns = 1; + break; + + case 'l': + case 'L': + { + int need_comma, amask, smask; + + need_comma = 0; + + l = (l >> MIPS16OP_SH_IMM6) & MIPS16OP_MASK_IMM6; + + amask = (l >> 3) & 7; + + if (amask > 0 && amask < 5) + { + (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]); + if (amask > 1) + (*info->fprintf_func) (info->stream, "-%s", + mips_gpr_names[amask + 3]); + need_comma = 1; + } + + smask = (l >> 1) & 3; + if (smask == 3) + { + (*info->fprintf_func) (info->stream, "%s??", + need_comma ? "," : ""); + need_comma = 1; + } + else if (smask > 0) + { + (*info->fprintf_func) (info->stream, "%s%s", + need_comma ? "," : "", + mips_gpr_names[16]); + if (smask > 1) + (*info->fprintf_func) (info->stream, "-%s", + mips_gpr_names[smask + 15]); + need_comma = 1; + } + + if (l & 1) + { + (*info->fprintf_func) (info->stream, "%s%s", + need_comma ? "," : "", + mips_gpr_names[31]); + need_comma = 1; + } + + if (amask == 5 || amask == 6) + { + (*info->fprintf_func) (info->stream, "%s$f0", + need_comma ? "," : ""); + if (amask == 6) + (*info->fprintf_func) (info->stream, "-$f1"); + } + } + break; + + case 'm': + case 'M': + /* MIPS16e save/restore. */ + { + int need_comma = 0; + int amask, args, statics; + int nsreg, smask; + int framesz; + int i, j; + + l = l & 0x7f; + if (use_extend) + l |= extend << 16; + + amask = (l >> 16) & 0xf; + if (amask == MIPS16_ALL_ARGS) + { + args = 4; + statics = 0; + } + else if (amask == MIPS16_ALL_STATICS) + { + args = 0; + statics = 4; + } + else + { + args = amask >> 2; + statics = amask & 3; + } + + if (args > 0) { + (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]); + if (args > 1) + (*info->fprintf_func) (info->stream, "-%s", + mips_gpr_names[4 + args - 1]); + need_comma = 1; + } + + framesz = (((l >> 16) & 0xf0) | (l & 0x0f)) * 8; + if (framesz == 0 && !use_extend) + framesz = 128; + + (*info->fprintf_func) (info->stream, "%s%d", + need_comma ? "," : "", + framesz); + + if (l & 0x40) /* $ra */ + (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[31]); + + nsreg = (l >> 24) & 0x7; + smask = 0; + if (l & 0x20) /* $s0 */ + smask |= 1 << 0; + if (l & 0x10) /* $s1 */ + smask |= 1 << 1; + if (nsreg > 0) /* $s2-$s8 */ + smask |= ((1 << nsreg) - 1) << 2; + + /* Find first set static reg bit. */ + for (i = 0; i < 9; i++) + { + if (smask & (1 << i)) + { + (*info->fprintf_func) (info->stream, ",%s", + mips_gpr_names[i == 8 ? 30 : (16 + i)]); + /* Skip over string of set bits. */ + for (j = i; smask & (2 << j); j++) + continue; + if (j > i) + (*info->fprintf_func) (info->stream, "-%s", + mips_gpr_names[j == 8 ? 30 : (16 + j)]); + i = j + 1; + } + } + + /* Statics $ax - $a3. */ + if (statics == 1) + (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[7]); + else if (statics > 0) + (*info->fprintf_func) (info->stream, ",%s-%s", + mips_gpr_names[7 - statics + 1], + mips_gpr_names[7]); + } + break; + + default: + /* xgettext:c-format */ + (*info->fprintf_func) + (info->stream, + _("# internal disassembler error, unrecognised modifier (%c)"), + type); + abort (); + } +} + +void +print_mips_disassembler_options (FILE *stream) +{ + unsigned int i; + + fprintf (stream, _("\n\ +The following MIPS specific disassembler options are supported for use\n\ +with the -M switch (multiple options should be separated by commas):\n")); + + fprintf (stream, _("\n\ + gpr-names=ABI Print GPR names according to specified ABI.\n\ + Default: based on binary being disassembled.\n")); + + fprintf (stream, _("\n\ + fpr-names=ABI Print FPR names according to specified ABI.\n\ + Default: numeric.\n")); + + fprintf (stream, _("\n\ + cp0-names=ARCH Print CP0 register names according to\n\ + specified architecture.\n\ + Default: based on binary being disassembled.\n")); + + fprintf (stream, _("\n\ + hwr-names=ARCH Print HWR names according to specified \n\ + architecture.\n\ + Default: based on binary being disassembled.\n")); + + fprintf (stream, _("\n\ + reg-names=ABI Print GPR and FPR names according to\n\ + specified ABI.\n")); + + fprintf (stream, _("\n\ + reg-names=ARCH Print CP0 register and HWR names according to\n\ + specified architecture.\n")); + + fprintf (stream, _("\n\ + For the options above, the following values are supported for \"ABI\":\n\ + ")); + for (i = 0; i < ARRAY_SIZE (mips_abi_choices); i++) + fprintf (stream, " %s", mips_abi_choices[i].name); + fprintf (stream, _("\n")); + + fprintf (stream, _("\n\ + For the options above, The following values are supported for \"ARCH\":\n\ + ")); + for (i = 0; i < ARRAY_SIZE (mips_arch_choices); i++) + if (*mips_arch_choices[i].name != '\0') + fprintf (stream, " %s", mips_arch_choices[i].name); + fprintf (stream, _("\n")); + + fprintf (stream, _("\n")); +} +#endif diff --git a/qemu/qemu-git/mips.ld b/qemu/qemu-git/mips.ld new file mode 100644 index 0000000..4294761 --- /dev/null +++ b/qemu/qemu-git/mips.ld @@ -0,0 +1,224 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", + "elf32-tradlittlemips") +OUTPUT_ARCH(mips) +ENTRY(__start) +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + PROVIDE (__executable_start = 0x0400000); . = 0x0400000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .reginfo : { *(.reginfo) } + .dynamic : { *(.dynamic) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } + .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } + .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } + .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } + .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } + .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } + .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } + .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : + { + KEEP (*(.init)) + } =0x47ff041f + .plt : { *(.plt) } + .text : + { + _ftext = . ; + *(.text .stub .text.* .gnu.linkonce.t.*) + KEEP (*(.text.*personality*)) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.mips16.fn.*) *(.mips16.call.*) + } =0x47ff041f + .fini : + { + KEEP (*(.fini)) + } =0x47ff041f + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .sdata2 : + { + *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) + } + .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN (0x40000) - ((0x40000 - .) & (0x40000 - 1)); . = DATA_SEGMENT_ALIGN (0x40000, 0x1000); + /* Exception handling */ + .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } + /* Thread Local Storage sections */ + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + } + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin*.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin*.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + . = DATA_SEGMENT_RELRO_END (0, .); + .data : + { + _fdata = . ; + *(.data .data.* .gnu.linkonce.d.*) + KEEP (*(.gnu.linkonce.d.*personality*)) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + . = .; + _gp = ALIGN(16) + 0x7ff0; + .got : { *(.got.plt) *(.got) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata .sdata.* .gnu.linkonce.s.*) + } + .lit8 : { *(.lit8) } + .lit4 : { *(.lit4) } + _edata = .; PROVIDE (edata = .); + __bss_start = .; + _fbss = .; + .sbss : + { + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + } + .bss : + { + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. + FIXME: Why do we need it? When there is no .bss section, we don't + pad the .data section. */ + . = ALIGN(. != 0 ? 32 / 8 : 1); + } + . = ALIGN(32 / 8); + . = ALIGN(32 / 8); + _end = .; PROVIDE (end = .); + . = DATA_SEGMENT_END (.); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } + .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/qemu/qemu-git/module.h b/qemu/qemu-git/module.h new file mode 100644 index 0000000..9263f1c --- /dev/null +++ b/qemu/qemu-git/module.h @@ -0,0 +1,38 @@ +/* + * QEMU Module Infrastructure + * + * Copyright IBM, Corp. 2009 + * + * Authors: + * Anthony Liguori + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_MODULE_H +#define QEMU_MODULE_H + +/* This should not be used directly. Use block_init etc. instead. */ +#define module_init(function, type) \ +static void __attribute__((constructor)) do_qemu_init_ ## function(void) { \ + register_module_init(function, type); \ +} + +typedef enum { + MODULE_INIT_BLOCK, + MODULE_INIT_DEVICE, + MODULE_INIT_MACHINE, + MODULE_INIT_MAX +} module_init_type; + +#define block_init(function) module_init(function, MODULE_INIT_BLOCK) +#define device_init(function) module_init(function, MODULE_INIT_DEVICE) +#define machine_init(function) module_init(function, MODULE_INIT_MACHINE) + +void register_module_init(void (*fn)(void), module_init_type type); + +void module_call_init(module_init_type type); + +#endif diff --git a/qemu/qemu-git/osdep.h b/qemu/qemu-git/osdep.h new file mode 100644 index 0000000..75b5816 --- /dev/null +++ b/qemu/qemu-git/osdep.h @@ -0,0 +1,108 @@ +#ifndef QEMU_OSDEP_H +#define QEMU_OSDEP_H + +#include +#include +#ifdef __OpenBSD__ +#include +#include +#endif + +#ifndef _WIN32 +#include +#endif + +#ifndef glue +#define xglue(x, y) x ## y +#define glue(x, y) xglue(x, y) +#define stringify(s) tostring(s) +#define tostring(s) #s +#endif + +#ifndef likely +#if __GNUC__ < 3 +#define __builtin_expect(x, n) (x) +#endif + +#define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) +#endif + +#ifdef CONFIG_NEED_OFFSETOF +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER) +#endif +#ifndef container_of +#define container_of(ptr, type, member) ({ \ + const typeof(((type *) 0)->member) *__mptr = (ptr); \ + (type *) ((char *) __mptr - offsetof(type, member));}) +#endif + +/* Convert from a base type to a parent type, with compile time checking. */ +#ifdef __GNUC__ +#define DO_UPCAST(type, field, dev) ( __extension__ ( { \ + char __attribute__((unused)) offset_must_be_zero[ \ + -offsetof(type, field)]; \ + container_of(dev, type, field);})) +#else +#define DO_UPCAST(type, field, dev) container_of(dev, type, field) +#endif + +#define typeof_field(type, field) typeof(((type *)0)->field) +#define type_check(t1,t2) ((t1*)0 - (t2*)0) + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) +#endif + +#ifndef always_inline +#if !((__GNUC__ < 3) || defined(__APPLE__)) +#ifdef __OPTIMIZE__ +#define inline __attribute__ (( always_inline )) __inline__ +#endif +#endif +#else +#define inline always_inline +#endif + +#ifdef __i386__ +#define REGPARM __attribute((regparm(3))) +#else +#define REGPARM +#endif + +#define qemu_printf printf + +#if defined (__GNUC__) && defined (__GNUC_MINOR__) +# define QEMU_GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +#else +# define QEMU_GNUC_PREREQ(maj, min) 0 +#endif + +void *qemu_memalign(size_t alignment, size_t size); +void *qemu_vmalloc(size_t size); +void qemu_vfree(void *ptr); + +int qemu_create_pidfile(const char *filename); + +#ifdef _WIN32 +int ffs(int i); + +typedef struct { + long tv_sec; + long tv_usec; +} qemu_timeval; +int qemu_gettimeofday(qemu_timeval *tp); +#else +typedef struct timeval qemu_timeval; +#define qemu_gettimeofday(tp) gettimeofday(tp, NULL); +#endif /* !_WIN32 */ + +#endif diff --git a/qemu/qemu-git/ppc-dis.c b/qemu/qemu-git/ppc-dis.c new file mode 100644 index 0000000..ffdbec1 --- /dev/null +++ b/qemu/qemu-git/ppc-dis.c @@ -0,0 +1,5412 @@ +/* ppc-dis.c -- Disassemble PowerPC instructions + Copyright 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. + Written by Ian Lance Taylor, Cygnus Support + +This file is part of GDB, GAS, and the GNU binutils. + +GDB, GAS, and the GNU binutils are free software; you can redistribute +them and/or modify them under the terms of the GNU General Public +License as published by the Free Software Foundation; either version +2, or (at your option) any later version. + +GDB, GAS, and the GNU binutils are distributed in the hope that they +will be useful, but WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this file; see the file COPYING. If not, +see . */ +#include "dis-asm.h" +#define BFD_DEFAULT_TARGET_SIZE 64 + +/* ppc.h -- Header file for PowerPC opcode table + Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007 Free Software Foundation, Inc. + Written by Ian Lance Taylor, Cygnus Support + +This file is part of GDB, GAS, and the GNU binutils. + +GDB, GAS, and the GNU binutils are free software; you can redistribute +them and/or modify them under the terms of the GNU General Public +License as published by the Free Software Foundation; either version +1, or (at your option) any later version. + +GDB, GAS, and the GNU binutils are distributed in the hope that they +will be useful, but WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this file; see the file COPYING. If not, +see . */ + +/* The opcode table is an array of struct powerpc_opcode. */ + +struct powerpc_opcode +{ + /* The opcode name. */ + const char *name; + + /* The opcode itself. Those bits which will be filled in with + operands are zeroes. */ + unsigned long opcode; + + /* The opcode mask. This is used by the disassembler. This is a + mask containing ones indicating those bits which must match the + opcode field, and zeroes indicating those bits which need not + match (and are presumably filled in by operands). */ + unsigned long mask; + + /* One bit flags for the opcode. These are used to indicate which + specific processors support the instructions. The defined values + are listed below. */ + unsigned long flags; + + /* An array of operand codes. Each code is an index into the + operand table. They appear in the order which the operands must + appear in assembly code, and are terminated by a zero. */ + unsigned char operands[8]; +}; + +/* The table itself is sorted by major opcode number, and is otherwise + in the order in which the disassembler should consider + instructions. */ +extern const struct powerpc_opcode powerpc_opcodes[]; +extern const int powerpc_num_opcodes; + +/* Values defined for the flags field of a struct powerpc_opcode. */ + +/* Opcode is defined for the PowerPC architecture. */ +#define PPC_OPCODE_PPC 1 + +/* Opcode is defined for the POWER (RS/6000) architecture. */ +#define PPC_OPCODE_POWER 2 + +/* Opcode is defined for the POWER2 (Rios 2) architecture. */ +#define PPC_OPCODE_POWER2 4 + +/* Opcode is only defined on 32 bit architectures. */ +#define PPC_OPCODE_32 8 + +/* Opcode is only defined on 64 bit architectures. */ +#define PPC_OPCODE_64 0x10 + +/* Opcode is supported by the Motorola PowerPC 601 processor. The 601 + is assumed to support all PowerPC (PPC_OPCODE_PPC) instructions, + but it also supports many additional POWER instructions. */ +#define PPC_OPCODE_601 0x20 + +/* Opcode is supported in both the Power and PowerPC architectures + (ie, compiler's -mcpu=common or assembler's -mcom). */ +#define PPC_OPCODE_COMMON 0x40 + +/* Opcode is supported for any Power or PowerPC platform (this is + for the assembler's -many option, and it eliminates duplicates). */ +#define PPC_OPCODE_ANY 0x80 + +/* Opcode is supported as part of the 64-bit bridge. */ +#define PPC_OPCODE_64_BRIDGE 0x100 + +/* Opcode is supported by Altivec Vector Unit */ +#define PPC_OPCODE_ALTIVEC 0x200 + +/* Opcode is supported by PowerPC 403 processor. */ +#define PPC_OPCODE_403 0x400 + +/* Opcode is supported by PowerPC BookE processor. */ +#define PPC_OPCODE_BOOKE 0x800 + +/* Opcode is only supported by 64-bit PowerPC BookE processor. */ +#define PPC_OPCODE_BOOKE64 0x1000 + +/* Opcode is supported by PowerPC 440 processor. */ +#define PPC_OPCODE_440 0x2000 + +/* Opcode is only supported by Power4 architecture. */ +#define PPC_OPCODE_POWER4 0x4000 + +/* Opcode isn't supported by Power4 architecture. */ +#define PPC_OPCODE_NOPOWER4 0x8000 + +/* Opcode is only supported by POWERPC Classic architecture. */ +#define PPC_OPCODE_CLASSIC 0x10000 + +/* Opcode is only supported by e500x2 Core. */ +#define PPC_OPCODE_SPE 0x20000 + +/* Opcode is supported by e500x2 Integer select APU. */ +#define PPC_OPCODE_ISEL 0x40000 + +/* Opcode is an e500 SPE floating point instruction. */ +#define PPC_OPCODE_EFS 0x80000 + +/* Opcode is supported by branch locking APU. */ +#define PPC_OPCODE_BRLOCK 0x100000 + +/* Opcode is supported by performance monitor APU. */ +#define PPC_OPCODE_PMR 0x200000 + +/* Opcode is supported by cache locking APU. */ +#define PPC_OPCODE_CACHELCK 0x400000 + +/* Opcode is supported by machine check APU. */ +#define PPC_OPCODE_RFMCI 0x800000 + +/* Opcode is only supported by Power5 architecture. */ +#define PPC_OPCODE_POWER5 0x1000000 + +/* Opcode is supported by PowerPC e300 family. */ +#define PPC_OPCODE_E300 0x2000000 + +/* Opcode is only supported by Power6 architecture. */ +#define PPC_OPCODE_POWER6 0x4000000 + +/* Opcode is only supported by PowerPC Cell family. */ +#define PPC_OPCODE_CELL 0x8000000 + +/* A macro to extract the major opcode from an instruction. */ +#define PPC_OP(i) (((i) >> 26) & 0x3f) + +/* The operands table is an array of struct powerpc_operand. */ + +struct powerpc_operand +{ + /* A bitmask of bits in the operand. */ + unsigned int bitm; + + /* How far the operand is left shifted in the instruction. + -1 to indicate that BITM and SHIFT cannot be used to determine + where the operand goes in the insn. */ + int shift; + + /* Insertion function. This is used by the assembler. To insert an + operand value into an instruction, check this field. + + If it is NULL, execute + i |= (op & o->bitm) << o->shift; + (i is the instruction which we are filling in, o is a pointer to + this structure, and op is the operand value). + + If this field is not NULL, then simply call it with the + instruction and the operand value. It will return the new value + of the instruction. If the ERRMSG argument is not NULL, then if + the operand value is illegal, *ERRMSG will be set to a warning + string (the operand will be inserted in any case). If the + operand value is legal, *ERRMSG will be unchanged (most operands + can accept any value). */ + unsigned long (*insert) + (unsigned long instruction, long op, int dialect, const char **errmsg); + + /* Extraction function. This is used by the disassembler. To + extract this operand type from an instruction, check this field. + + If it is NULL, compute + op = (i >> o->shift) & o->bitm; + if ((o->flags & PPC_OPERAND_SIGNED) != 0) + sign_extend (op); + (i is the instruction, o is a pointer to this structure, and op + is the result). + + If this field is not NULL, then simply call it with the + instruction value. It will return the value of the operand. If + the INVALID argument is not NULL, *INVALID will be set to + non-zero if this operand type can not actually be extracted from + this operand (i.e., the instruction does not match). If the + operand is valid, *INVALID will not be changed. */ + long (*extract) (unsigned long instruction, int dialect, int *invalid); + + /* One bit syntax flags. */ + unsigned long flags; +}; + +/* Elements in the table are retrieved by indexing with values from + the operands field of the powerpc_opcodes table. */ + +extern const struct powerpc_operand powerpc_operands[]; +extern const unsigned int num_powerpc_operands; + +/* Values defined for the flags field of a struct powerpc_operand. */ + +/* This operand takes signed values. */ +#define PPC_OPERAND_SIGNED (0x1) + +/* This operand takes signed values, but also accepts a full positive + range of values when running in 32 bit mode. That is, if bits is + 16, it takes any value from -0x8000 to 0xffff. In 64 bit mode, + this flag is ignored. */ +#define PPC_OPERAND_SIGNOPT (0x2) + +/* This operand does not actually exist in the assembler input. This + is used to support extended mnemonics such as mr, for which two + operands fields are identical. The assembler should call the + insert function with any op value. The disassembler should call + the extract function, ignore the return value, and check the value + placed in the valid argument. */ +#define PPC_OPERAND_FAKE (0x4) + +/* The next operand should be wrapped in parentheses rather than + separated from this one by a comma. This is used for the load and + store instructions which want their operands to look like + reg,displacement(reg) + */ +#define PPC_OPERAND_PARENS (0x8) + +/* This operand may use the symbolic names for the CR fields, which + are + lt 0 gt 1 eq 2 so 3 un 3 + cr0 0 cr1 1 cr2 2 cr3 3 + cr4 4 cr5 5 cr6 6 cr7 7 + These may be combined arithmetically, as in cr2*4+gt. These are + only supported on the PowerPC, not the POWER. */ +#define PPC_OPERAND_CR (0x10) + +/* This operand names a register. The disassembler uses this to print + register names with a leading 'r'. */ +#define PPC_OPERAND_GPR (0x20) + +/* Like PPC_OPERAND_GPR, but don't print a leading 'r' for r0. */ +#define PPC_OPERAND_GPR_0 (0x40) + +/* This operand names a floating point register. The disassembler + prints these with a leading 'f'. */ +#define PPC_OPERAND_FPR (0x80) + +/* This operand is a relative branch displacement. The disassembler + prints these symbolically if possible. */ +#define PPC_OPERAND_RELATIVE (0x100) + +/* This operand is an absolute branch address. The disassembler + prints these symbolically if possible. */ +#define PPC_OPERAND_ABSOLUTE (0x200) + +/* This operand is optional, and is zero if omitted. This is used for + example, in the optional BF field in the comparison instructions. The + assembler must count the number of operands remaining on the line, + and the number of operands remaining for the opcode, and decide + whether this operand is present or not. The disassembler should + print this operand out only if it is not zero. */ +#define PPC_OPERAND_OPTIONAL (0x400) + +/* This flag is only used with PPC_OPERAND_OPTIONAL. If this operand + is omitted, then for the next operand use this operand value plus + 1, ignoring the next operand field for the opcode. This wretched + hack is needed because the Power rotate instructions can take + either 4 or 5 operands. The disassembler should print this operand + out regardless of the PPC_OPERAND_OPTIONAL field. */ +#define PPC_OPERAND_NEXT (0x800) + +/* This operand should be regarded as a negative number for the + purposes of overflow checking (i.e., the normal most negative + number is disallowed and one more than the normal most positive + number is allowed). This flag will only be set for a signed + operand. */ +#define PPC_OPERAND_NEGATIVE (0x1000) + +/* This operand names a vector unit register. The disassembler + prints these with a leading 'v'. */ +#define PPC_OPERAND_VR (0x2000) + +/* This operand is for the DS field in a DS form instruction. */ +#define PPC_OPERAND_DS (0x4000) + +/* This operand is for the DQ field in a DQ form instruction. */ +#define PPC_OPERAND_DQ (0x8000) + +/* Valid range of operand is 0..n rather than 0..n-1. */ +#define PPC_OPERAND_PLUS1 (0x10000) + +/* The POWER and PowerPC assemblers use a few macros. We keep them + with the operands table for simplicity. The macro table is an + array of struct powerpc_macro. */ + +struct powerpc_macro +{ + /* The macro name. */ + const char *name; + + /* The number of operands the macro takes. */ + unsigned int operands; + + /* One bit flags for the opcode. These are used to indicate which + specific processors support the instructions. The values are the + same as those for the struct powerpc_opcode flags field. */ + unsigned long flags; + + /* A format string to turn the macro into a normal instruction. + Each %N in the string is replaced with operand number N (zero + based). */ + const char *format; +}; + +extern const struct powerpc_macro powerpc_macros[]; +extern const int powerpc_num_macros; + +/* ppc-opc.c -- PowerPC opcode list + Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, + 2005, 2006, 2007 Free Software Foundation, Inc. + Written by Ian Lance Taylor, Cygnus Support + + This file is part of GDB, GAS, and the GNU binutils. + + GDB, GAS, and the GNU binutils are free software; you can redistribute + them and/or modify them under the terms of the GNU General Public + License as published by the Free Software Foundation; either version + 2, or (at your option) any later version. + + GDB, GAS, and the GNU binutils are distributed in the hope that they + will be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this file; see the file COPYING. + If not, see . */ + +/* This file holds the PowerPC opcode table. The opcode table + includes almost all of the extended instruction mnemonics. This + permits the disassembler to use them, and simplifies the assembler + logic, at the cost of increasing the table size. The table is + strictly constant data, so the compiler should be able to put it in + the .text section. + + This file also holds the operand table. All knowledge about + inserting operands into instructions and vice-versa is kept in this + file. */ + +/* Local insertion and extraction functions. */ + +static unsigned long insert_bat (unsigned long, long, int, const char **); +static long extract_bat (unsigned long, int, int *); +static unsigned long insert_bba (unsigned long, long, int, const char **); +static long extract_bba (unsigned long, int, int *); +static unsigned long insert_bdm (unsigned long, long, int, const char **); +static long extract_bdm (unsigned long, int, int *); +static unsigned long insert_bdp (unsigned long, long, int, const char **); +static long extract_bdp (unsigned long, int, int *); +static unsigned long insert_bo (unsigned long, long, int, const char **); +static long extract_bo (unsigned long, int, int *); +static unsigned long insert_boe (unsigned long, long, int, const char **); +static long extract_boe (unsigned long, int, int *); +static unsigned long insert_fxm (unsigned long, long, int, const char **); +static long extract_fxm (unsigned long, int, int *); +static unsigned long insert_mbe (unsigned long, long, int, const char **); +static long extract_mbe (unsigned long, int, int *); +static unsigned long insert_mb6 (unsigned long, long, int, const char **); +static long extract_mb6 (unsigned long, int, int *); +static long extract_nb (unsigned long, int, int *); +static unsigned long insert_nsi (unsigned long, long, int, const char **); +static long extract_nsi (unsigned long, int, int *); +static unsigned long insert_ral (unsigned long, long, int, const char **); +static unsigned long insert_ram (unsigned long, long, int, const char **); +static unsigned long insert_raq (unsigned long, long, int, const char **); +static unsigned long insert_ras (unsigned long, long, int, const char **); +static unsigned long insert_rbs (unsigned long, long, int, const char **); +static long extract_rbs (unsigned long, int, int *); +static unsigned long insert_sh6 (unsigned long, long, int, const char **); +static long extract_sh6 (unsigned long, int, int *); +static unsigned long insert_spr (unsigned long, long, int, const char **); +static long extract_spr (unsigned long, int, int *); +static unsigned long insert_sprg (unsigned long, long, int, const char **); +static long extract_sprg (unsigned long, int, int *); +static unsigned long insert_tbr (unsigned long, long, int, const char **); +static long extract_tbr (unsigned long, int, int *); + +/* The operands table. + + The fields are bitm, shift, insert, extract, flags. + + We used to put parens around the various additions, like the one + for BA just below. However, that caused trouble with feeble + compilers with a limit on depth of a parenthesized expression, like + (reportedly) the compiler in Microsoft Developer Studio 5. So we + omit the parens, since the macros are never used in a context where + the addition will be ambiguous. */ + +const struct powerpc_operand powerpc_operands[] = +{ + /* The zero index is used to indicate the end of the list of + operands. */ +#define UNUSED 0 + { 0, 0, NULL, NULL, 0 }, + + /* The BA field in an XL form instruction. */ +#define BA UNUSED + 1 + /* The BI field in a B form or XL form instruction. */ +#define BI BA +#define BI_MASK (0x1f << 16) + { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR }, + + /* The BA field in an XL form instruction when it must be the same + as the BT field in the same instruction. */ +#define BAT BA + 1 + { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE }, + + /* The BB field in an XL form instruction. */ +#define BB BAT + 1 +#define BB_MASK (0x1f << 11) + { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR }, + + /* The BB field in an XL form instruction when it must be the same + as the BA field in the same instruction. */ +#define BBA BB + 1 + { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE }, + + /* The BD field in a B form instruction. The lower two bits are + forced to zero. */ +#define BD BBA + 1 + { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, + + /* The BD field in a B form instruction when absolute addressing is + used. */ +#define BDA BD + 1 + { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, + + /* The BD field in a B form instruction when the - modifier is used. + This sets the y bit of the BO field appropriately. */ +#define BDM BDA + 1 + { 0xfffc, 0, insert_bdm, extract_bdm, + PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, + + /* The BD field in a B form instruction when the - modifier is used + and absolute address is used. */ +#define BDMA BDM + 1 + { 0xfffc, 0, insert_bdm, extract_bdm, + PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, + + /* The BD field in a B form instruction when the + modifier is used. + This sets the y bit of the BO field appropriately. */ +#define BDP BDMA + 1 + { 0xfffc, 0, insert_bdp, extract_bdp, + PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, + + /* The BD field in a B form instruction when the + modifier is used + and absolute addressing is used. */ +#define BDPA BDP + 1 + { 0xfffc, 0, insert_bdp, extract_bdp, + PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, + + /* The BF field in an X or XL form instruction. */ +#define BF BDPA + 1 + /* The CRFD field in an X form instruction. */ +#define CRFD BF + { 0x7, 23, NULL, NULL, PPC_OPERAND_CR }, + + /* The BF field in an X or XL form instruction. */ +#define BFF BF + 1 + { 0x7, 23, NULL, NULL, 0 }, + + /* An optional BF field. This is used for comparison instructions, + in which an omitted BF field is taken as zero. */ +#define OBF BFF + 1 + { 0x7, 23, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL }, + + /* The BFA field in an X or XL form instruction. */ +#define BFA OBF + 1 + { 0x7, 18, NULL, NULL, PPC_OPERAND_CR }, + + /* The BO field in a B form instruction. Certain values are + illegal. */ +#define BO BFA + 1 +#define BO_MASK (0x1f << 21) + { 0x1f, 21, insert_bo, extract_bo, 0 }, + + /* The BO field in a B form instruction when the + or - modifier is + used. This is like the BO field, but it must be even. */ +#define BOE BO + 1 + { 0x1e, 21, insert_boe, extract_boe, 0 }, + +#define BH BOE + 1 + { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL }, + + /* The BT field in an X or XL form instruction. */ +#define BT BH + 1 + { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR }, + + /* The condition register number portion of the BI field in a B form + or XL form instruction. This is used for the extended + conditional branch mnemonics, which set the lower two bits of the + BI field. This field is optional. */ +#define CR BT + 1 + { 0x7, 18, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL }, + + /* The CRB field in an X form instruction. */ +#define CRB CR + 1 + /* The MB field in an M form instruction. */ +#define MB CRB +#define MB_MASK (0x1f << 6) + { 0x1f, 6, NULL, NULL, 0 }, + + /* The CRFS field in an X form instruction. */ +#define CRFS CRB + 1 + { 0x7, 0, NULL, NULL, PPC_OPERAND_CR }, + + /* The CT field in an X form instruction. */ +#define CT CRFS + 1 + /* The MO field in an mbar instruction. */ +#define MO CT + { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, + + /* The D field in a D form instruction. This is a displacement off + a register, and implies that the next operand is a register in + parentheses. */ +#define D CT + 1 + { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, + + /* The DE field in a DE form instruction. This is like D, but is 12 + bits only. */ +#define DE D + 1 + { 0xfff, 4, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, + + /* The DES field in a DES form instruction. This is like DS, but is 14 + bits only (12 stored.) */ +#define DES DE + 1 + { 0x3ffc, 2, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, + + /* The DQ field in a DQ form instruction. This is like D, but the + lower four bits are forced to zero. */ +#define DQ DES + 1 + { 0xfff0, 0, NULL, NULL, + PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ }, + + /* The DS field in a DS form instruction. This is like D, but the + lower two bits are forced to zero. */ +#undef DS +#define DS DQ + 1 + { 0xfffc, 0, NULL, NULL, + PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS }, + + /* The E field in a wrteei instruction. */ +#define E DS + 1 + { 0x1, 15, NULL, NULL, 0 }, + + /* The FL1 field in a POWER SC form instruction. */ +#define FL1 E + 1 + /* The U field in an X form instruction. */ +#define U FL1 + { 0xf, 12, NULL, NULL, 0 }, + + /* The FL2 field in a POWER SC form instruction. */ +#define FL2 FL1 + 1 + { 0x7, 2, NULL, NULL, 0 }, + + /* The FLM field in an XFL form instruction. */ +#define FLM FL2 + 1 + { 0xff, 17, NULL, NULL, 0 }, + + /* The FRA field in an X or A form instruction. */ +#define FRA FLM + 1 +#define FRA_MASK (0x1f << 16) + { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR }, + + /* The FRB field in an X or A form instruction. */ +#define FRB FRA + 1 +#define FRB_MASK (0x1f << 11) + { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR }, + + /* The FRC field in an A form instruction. */ +#define FRC FRB + 1 +#define FRC_MASK (0x1f << 6) + { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR }, + + /* The FRS field in an X form instruction or the FRT field in a D, X + or A form instruction. */ +#define FRS FRC + 1 +#define FRT FRS + { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR }, + + /* The FXM field in an XFX instruction. */ +#define FXM FRS + 1 + { 0xff, 12, insert_fxm, extract_fxm, 0 }, + + /* Power4 version for mfcr. */ +#define FXM4 FXM + 1 + { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL }, + + /* The L field in a D or X form instruction. */ +#define L FXM4 + 1 + { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, + + /* The LEV field in a POWER SVC form instruction. */ +#define SVC_LEV L + 1 + { 0x7f, 5, NULL, NULL, 0 }, + + /* The LEV field in an SC form instruction. */ +#define LEV SVC_LEV + 1 + { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL }, + + /* The LI field in an I form instruction. The lower two bits are + forced to zero. */ +#define LI LEV + 1 + { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, + + /* The LI field in an I form instruction when used as an absolute + address. */ +#define LIA LI + 1 + { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, + + /* The LS field in an X (sync) form instruction. */ +#define LS LIA + 1 + { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, + + /* The ME field in an M form instruction. */ +#define ME LS + 1 +#define ME_MASK (0x1f << 1) + { 0x1f, 1, NULL, NULL, 0 }, + + /* The MB and ME fields in an M form instruction expressed a single + operand which is a bitmask indicating which bits to select. This + is a two operand form using PPC_OPERAND_NEXT. See the + description in opcode/ppc.h for what this means. */ +#define MBE ME + 1 + { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT }, + { -1, 0, insert_mbe, extract_mbe, 0 }, + + /* The MB or ME field in an MD or MDS form instruction. The high + bit is wrapped to the low end. */ +#define MB6 MBE + 2 +#define ME6 MB6 +#define MB6_MASK (0x3f << 5) + { 0x3f, 5, insert_mb6, extract_mb6, 0 }, + + /* The NB field in an X form instruction. The value 32 is stored as + 0. */ +#define NB MB6 + 1 + { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 }, + + /* The NSI field in a D form instruction. This is the same as the + SI field, only negated. */ +#define NSI NB + 1 + { 0xffff, 0, insert_nsi, extract_nsi, + PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED }, + + /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction. */ +#define RA NSI + 1 +#define RA_MASK (0x1f << 16) + { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR }, + + /* As above, but 0 in the RA field means zero, not r0. */ +#define RA0 RA + 1 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 }, + + /* The RA field in the DQ form lq instruction, which has special + value restrictions. */ +#define RAQ RA0 + 1 + { 0x1f, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 }, + + /* The RA field in a D or X form instruction which is an updating + load, which means that the RA field may not be zero and may not + equal the RT field. */ +#define RAL RAQ + 1 + { 0x1f, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 }, + + /* The RA field in an lmw instruction, which has special value + restrictions. */ +#define RAM RAL + 1 + { 0x1f, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 }, + + /* The RA field in a D or X form instruction which is an updating + store or an updating floating point load, which means that the RA + field may not be zero. */ +#define RAS RAM + 1 + { 0x1f, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 }, + + /* The RA field of the tlbwe instruction, which is optional. */ +#define RAOPT RAS + 1 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL }, + + /* The RB field in an X, XO, M, or MDS form instruction. */ +#define RB RAOPT + 1 +#define RB_MASK (0x1f << 11) + { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR }, + + /* The RB field in an X form instruction when it must be the same as + the RS field in the instruction. This is used for extended + mnemonics like mr. */ +#define RBS RB + 1 + { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE }, + + /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form + instruction or the RT field in a D, DS, X, XFX or XO form + instruction. */ +#define RS RBS + 1 +#define RT RS +#define RT_MASK (0x1f << 21) + { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR }, + + /* The RS and RT fields of the DS form stq instruction, which have + special value restrictions. */ +#define RSQ RS + 1 +#define RTQ RSQ + { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR_0 }, + + /* The RS field of the tlbwe instruction, which is optional. */ +#define RSO RSQ + 1 +#define RTO RSO + { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL }, + + /* The SH field in an X or M form instruction. */ +#define SH RSO + 1 +#define SH_MASK (0x1f << 11) + /* The other UIMM field in a EVX form instruction. */ +#define EVUIMM SH + { 0x1f, 11, NULL, NULL, 0 }, + + /* The SH field in an MD form instruction. This is split. */ +#define SH6 SH + 1 +#define SH6_MASK ((0x1f << 11) | (1 << 1)) + { 0x3f, -1, insert_sh6, extract_sh6, 0 }, + + /* The SH field of the tlbwe instruction, which is optional. */ +#define SHO SH6 + 1 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL }, + + /* The SI field in a D form instruction. */ +#define SI SHO + 1 + { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED }, + + /* The SI field in a D form instruction when we accept a wide range + of positive values. */ +#define SISIGNOPT SI + 1 + { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT }, + + /* The SPR field in an XFX form instruction. This is flipped--the + lower 5 bits are stored in the upper 5 and vice- versa. */ +#define SPR SISIGNOPT + 1 +#define PMR SPR +#define SPR_MASK (0x3ff << 11) + { 0x3ff, 11, insert_spr, extract_spr, 0 }, + + /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */ +#define SPRBAT SPR + 1 +#define SPRBAT_MASK (0x3 << 17) + { 0x3, 17, NULL, NULL, 0 }, + + /* The SPRG register number in an XFX form m[ft]sprg instruction. */ +#define SPRG SPRBAT + 1 + { 0x1f, 16, insert_sprg, extract_sprg, 0 }, + + /* The SR field in an X form instruction. */ +#define SR SPRG + 1 + { 0xf, 16, NULL, NULL, 0 }, + + /* The STRM field in an X AltiVec form instruction. */ +#define STRM SR + 1 + { 0x3, 21, NULL, NULL, 0 }, + + /* The SV field in a POWER SC form instruction. */ +#define SV STRM + 1 + { 0x3fff, 2, NULL, NULL, 0 }, + + /* The TBR field in an XFX form instruction. This is like the SPR + field, but it is optional. */ +#define TBR SV + 1 + { 0x3ff, 11, insert_tbr, extract_tbr, PPC_OPERAND_OPTIONAL }, + + /* The TO field in a D or X form instruction. */ +#define TO TBR + 1 +#define TO_MASK (0x1f << 21) + { 0x1f, 21, NULL, NULL, 0 }, + + /* The UI field in a D form instruction. */ +#define UI TO + 1 + { 0xffff, 0, NULL, NULL, 0 }, + + /* The VA field in a VA, VX or VXR form instruction. */ +#define VA UI + 1 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR }, + + /* The VB field in a VA, VX or VXR form instruction. */ +#define VB VA + 1 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR }, + + /* The VC field in a VA form instruction. */ +#define VC VB + 1 + { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR }, + + /* The VD or VS field in a VA, VX, VXR or X form instruction. */ +#define VD VC + 1 +#define VS VD + { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR }, + + /* The SIMM field in a VX form instruction. */ +#define SIMM VD + 1 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED}, + + /* The UIMM field in a VX form instruction, and TE in Z form. */ +#define UIMM SIMM + 1 +#define TE UIMM + { 0x1f, 16, NULL, NULL, 0 }, + + /* The SHB field in a VA form instruction. */ +#define SHB UIMM + 1 + { 0xf, 6, NULL, NULL, 0 }, + + /* The other UIMM field in a half word EVX form instruction. */ +#define EVUIMM_2 SHB + 1 + { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS }, + + /* The other UIMM field in a word EVX form instruction. */ +#define EVUIMM_4 EVUIMM_2 + 1 + { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS }, + + /* The other UIMM field in a double EVX form instruction. */ +#define EVUIMM_8 EVUIMM_4 + 1 + { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS }, + + /* The WS field. */ +#define WS EVUIMM_8 + 1 + { 0x7, 11, NULL, NULL, 0 }, + + /* The L field in an mtmsrd or A form instruction or W in an X form. */ +#define A_L WS + 1 +#define W A_L + { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL }, + +#define RMC A_L + 1 + { 0x3, 9, NULL, NULL, 0 }, + +#define R RMC + 1 + { 0x1, 16, NULL, NULL, 0 }, + +#define SP R + 1 + { 0x3, 19, NULL, NULL, 0 }, + +#define S SP + 1 + { 0x1, 20, NULL, NULL, 0 }, + + /* SH field starting at bit position 16. */ +#define SH16 S + 1 + /* The DCM and DGM fields in a Z form instruction. */ +#define DCM SH16 +#define DGM DCM + { 0x3f, 10, NULL, NULL, 0 }, + + /* The EH field in larx instruction. */ +#define EH SH16 + 1 + { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL }, + + /* The L field in an mtfsf or XFL form instruction. */ +#define XFL_L EH + 1 + { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL}, +}; + +const unsigned int num_powerpc_operands = (sizeof (powerpc_operands) + / sizeof (powerpc_operands[0])); + +/* The functions used to insert and extract complicated operands. */ + +/* The BA field in an XL form instruction when it must be the same as + the BT field in the same instruction. This operand is marked FAKE. + The insertion function just copies the BT field into the BA field, + and the extraction function just checks that the fields are the + same. */ + +static unsigned long +insert_bat (unsigned long insn, + long value ATTRIBUTE_UNUSED, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + return insn | (((insn >> 21) & 0x1f) << 16); +} + +static long +extract_bat (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid) +{ + if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f)) + *invalid = 1; + return 0; +} + +/* The BB field in an XL form instruction when it must be the same as + the BA field in the same instruction. This operand is marked FAKE. + The insertion function just copies the BA field into the BB field, + and the extraction function just checks that the fields are the + same. */ + +static unsigned long +insert_bba (unsigned long insn, + long value ATTRIBUTE_UNUSED, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + return insn | (((insn >> 16) & 0x1f) << 11); +} + +static long +extract_bba (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid) +{ + if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f)) + *invalid = 1; + return 0; +} + +/* The BD field in a B form instruction when the - modifier is used. + This modifier means that the branch is not expected to be taken. + For chips built to versions of the architecture prior to version 2 + (ie. not Power4 compatible), we set the y bit of the BO field to 1 + if the offset is negative. When extracting, we require that the y + bit be 1 and that the offset be positive, since if the y bit is 0 + we just want to print the normal form of the instruction. + Power4 compatible targets use two bits, "a", and "t", instead of + the "y" bit. "at" == 00 => no hint, "at" == 01 => unpredictable, + "at" == 10 => not taken, "at" == 11 => taken. The "t" bit is 00001 + in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000 + for branch on CTR. We only handle the taken/not-taken hint here. + Note that we don't relax the conditions tested here when + disassembling with -Many because insns using extract_bdm and + extract_bdp always occur in pairs. One or the other will always + be valid. */ + +static unsigned long +insert_bdm (unsigned long insn, + long value, + int dialect, + const char **errmsg ATTRIBUTE_UNUSED) +{ + if ((dialect & PPC_OPCODE_POWER4) == 0) + { + if ((value & 0x8000) != 0) + insn |= 1 << 21; + } + else + { + if ((insn & (0x14 << 21)) == (0x04 << 21)) + insn |= 0x02 << 21; + else if ((insn & (0x14 << 21)) == (0x10 << 21)) + insn |= 0x08 << 21; + } + return insn | (value & 0xfffc); +} + +static long +extract_bdm (unsigned long insn, + int dialect, + int *invalid) +{ + if ((dialect & PPC_OPCODE_POWER4) == 0) + { + if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0)) + *invalid = 1; + } + else + { + if ((insn & (0x17 << 21)) != (0x06 << 21) + && (insn & (0x1d << 21)) != (0x18 << 21)) + *invalid = 1; + } + + return ((insn & 0xfffc) ^ 0x8000) - 0x8000; +} + +/* The BD field in a B form instruction when the + modifier is used. + This is like BDM, above, except that the branch is expected to be + taken. */ + +static unsigned long +insert_bdp (unsigned long insn, + long value, + int dialect, + const char **errmsg ATTRIBUTE_UNUSED) +{ + if ((dialect & PPC_OPCODE_POWER4) == 0) + { + if ((value & 0x8000) == 0) + insn |= 1 << 21; + } + else + { + if ((insn & (0x14 << 21)) == (0x04 << 21)) + insn |= 0x03 << 21; + else if ((insn & (0x14 << 21)) == (0x10 << 21)) + insn |= 0x09 << 21; + } + return insn | (value & 0xfffc); +} + +static long +extract_bdp (unsigned long insn, + int dialect, + int *invalid) +{ + if ((dialect & PPC_OPCODE_POWER4) == 0) + { + if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0)) + *invalid = 1; + } + else + { + if ((insn & (0x17 << 21)) != (0x07 << 21) + && (insn & (0x1d << 21)) != (0x19 << 21)) + *invalid = 1; + } + + return ((insn & 0xfffc) ^ 0x8000) - 0x8000; +} + +/* Check for legal values of a BO field. */ + +static int +valid_bo (long value, int dialect, int extract) +{ + if ((dialect & PPC_OPCODE_POWER4) == 0) + { + int valid; + /* Certain encodings have bits that are required to be zero. + These are (z must be zero, y may be anything): + 001zy + 011zy + 1z00y + 1z01y + 1z1zz + */ + switch (value & 0x14) + { + default: + case 0: + valid = 1; + break; + case 0x4: + valid = (value & 0x2) == 0; + break; + case 0x10: + valid = (value & 0x8) == 0; + break; + case 0x14: + valid = value == 0x14; + break; + } + /* When disassembling with -Many, accept power4 encodings too. */ + if (valid + || (dialect & PPC_OPCODE_ANY) == 0 + || !extract) + return valid; + } + + /* Certain encodings have bits that are required to be zero. + These are (z must be zero, a & t may be anything): + 0000z + 0001z + 0100z + 0101z + 001at + 011at + 1a00t + 1a01t + 1z1zz + */ + if ((value & 0x14) == 0) + return (value & 0x1) == 0; + else if ((value & 0x14) == 0x14) + return value == 0x14; + else + return 1; +} + +/* The BO field in a B form instruction. Warn about attempts to set + the field to an illegal value. */ + +static unsigned long +insert_bo (unsigned long insn, + long value, + int dialect, + const char **errmsg) +{ + if (!valid_bo (value, dialect, 0)) + *errmsg = _("invalid conditional option"); + return insn | ((value & 0x1f) << 21); +} + +static long +extract_bo (unsigned long insn, + int dialect, + int *invalid) +{ + long value; + + value = (insn >> 21) & 0x1f; + if (!valid_bo (value, dialect, 1)) + *invalid = 1; + return value; +} + +/* The BO field in a B form instruction when the + or - modifier is + used. This is like the BO field, but it must be even. When + extracting it, we force it to be even. */ + +static unsigned long +insert_boe (unsigned long insn, + long value, + int dialect, + const char **errmsg) +{ + if (!valid_bo (value, dialect, 0)) + *errmsg = _("invalid conditional option"); + else if ((value & 1) != 0) + *errmsg = _("attempt to set y bit when using + or - modifier"); + + return insn | ((value & 0x1f) << 21); +} + +static long +extract_boe (unsigned long insn, + int dialect, + int *invalid) +{ + long value; + + value = (insn >> 21) & 0x1f; + if (!valid_bo (value, dialect, 1)) + *invalid = 1; + return value & 0x1e; +} + +/* FXM mask in mfcr and mtcrf instructions. */ + +static unsigned long +insert_fxm (unsigned long insn, + long value, + int dialect, + const char **errmsg) +{ + /* If we're handling the mfocrf and mtocrf insns ensure that exactly + one bit of the mask field is set. */ + if ((insn & (1 << 20)) != 0) + { + if (value == 0 || (value & -value) != value) + { + *errmsg = _("invalid mask field"); + value = 0; + } + } + + /* If the optional field on mfcr is missing that means we want to use + the old form of the instruction that moves the whole cr. In that + case we'll have VALUE zero. There doesn't seem to be a way to + distinguish this from the case where someone writes mfcr %r3,0. */ + else if (value == 0) + ; + + /* If only one bit of the FXM field is set, we can use the new form + of the instruction, which is faster. Unlike the Power4 branch hint + encoding, this is not backward compatible. Do not generate the + new form unless -mpower4 has been given, or -many and the two + operand form of mfcr was used. */ + else if ((value & -value) == value + && ((dialect & PPC_OPCODE_POWER4) != 0 + || ((dialect & PPC_OPCODE_ANY) != 0 + && (insn & (0x3ff << 1)) == 19 << 1))) + insn |= 1 << 20; + + /* Any other value on mfcr is an error. */ + else if ((insn & (0x3ff << 1)) == 19 << 1) + { + *errmsg = _("ignoring invalid mfcr mask"); + value = 0; + } + + return insn | ((value & 0xff) << 12); +} + +static long +extract_fxm (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid) +{ + long mask = (insn >> 12) & 0xff; + + /* Is this a Power4 insn? */ + if ((insn & (1 << 20)) != 0) + { + /* Exactly one bit of MASK should be set. */ + if (mask == 0 || (mask & -mask) != mask) + *invalid = 1; + } + + /* Check that non-power4 form of mfcr has a zero MASK. */ + else if ((insn & (0x3ff << 1)) == 19 << 1) + { + if (mask != 0) + *invalid = 1; + } + + return mask; +} + +/* The MB and ME fields in an M form instruction expressed as a single + operand which is itself a bitmask. The extraction function always + marks it as invalid, since we never want to recognize an + instruction which uses a field of this type. */ + +static unsigned long +insert_mbe (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg) +{ + unsigned long uval, mask; + int mb, me, mx, count, last; + + uval = value; + + if (uval == 0) + { + *errmsg = _("illegal bitmask"); + return insn; + } + + mb = 0; + me = 32; + if ((uval & 1) != 0) + last = 1; + else + last = 0; + count = 0; + + /* mb: location of last 0->1 transition */ + /* me: location of last 1->0 transition */ + /* count: # transitions */ + + for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1) + { + if ((uval & mask) && !last) + { + ++count; + mb = mx; + last = 1; + } + else if (!(uval & mask) && last) + { + ++count; + me = mx; + last = 0; + } + } + if (me == 0) + me = 32; + + if (count != 2 && (count != 0 || ! last)) + *errmsg = _("illegal bitmask"); + + return insn | (mb << 6) | ((me - 1) << 1); +} + +static long +extract_mbe (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid) +{ + long ret; + int mb, me; + int i; + + *invalid = 1; + + mb = (insn >> 6) & 0x1f; + me = (insn >> 1) & 0x1f; + if (mb < me + 1) + { + ret = 0; + for (i = mb; i <= me; i++) + ret |= 1L << (31 - i); + } + else if (mb == me + 1) + ret = ~0; + else /* (mb > me + 1) */ + { + ret = ~0; + for (i = me + 1; i < mb; i++) + ret &= ~(1L << (31 - i)); + } + return ret; +} + +/* The MB or ME field in an MD or MDS form instruction. The high bit + is wrapped to the low end. */ + +static unsigned long +insert_mb6 (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + return insn | ((value & 0x1f) << 6) | (value & 0x20); +} + +static long +extract_mb6 (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid ATTRIBUTE_UNUSED) +{ + return ((insn >> 6) & 0x1f) | (insn & 0x20); +} + +/* The NB field in an X form instruction. The value 32 is stored as + 0. */ + +static long +extract_nb (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid ATTRIBUTE_UNUSED) +{ + long ret; + + ret = (insn >> 11) & 0x1f; + if (ret == 0) + ret = 32; + return ret; +} + +/* The NSI field in a D form instruction. This is the same as the SI + field, only negated. The extraction function always marks it as + invalid, since we never want to recognize an instruction which uses + a field of this type. */ + +static unsigned long +insert_nsi (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + return insn | (-value & 0xffff); +} + +static long +extract_nsi (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid) +{ + *invalid = 1; + return -(((insn & 0xffff) ^ 0x8000) - 0x8000); +} + +/* The RA field in a D or X form instruction which is an updating + load, which means that the RA field may not be zero and may not + equal the RT field. */ + +static unsigned long +insert_ral (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg) +{ + if (value == 0 + || (unsigned long) value == ((insn >> 21) & 0x1f)) + *errmsg = "invalid register operand when updating"; + return insn | ((value & 0x1f) << 16); +} + +/* The RA field in an lmw instruction, which has special value + restrictions. */ + +static unsigned long +insert_ram (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg) +{ + if ((unsigned long) value >= ((insn >> 21) & 0x1f)) + *errmsg = _("index register in load range"); + return insn | ((value & 0x1f) << 16); +} + +/* The RA field in the DQ form lq instruction, which has special + value restrictions. */ + +static unsigned long +insert_raq (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg) +{ + long rtvalue = (insn & RT_MASK) >> 21; + + if (value == rtvalue) + *errmsg = _("source and target register operands must be different"); + return insn | ((value & 0x1f) << 16); +} + +/* The RA field in a D or X form instruction which is an updating + store or an updating floating point load, which means that the RA + field may not be zero. */ + +static unsigned long +insert_ras (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg) +{ + if (value == 0) + *errmsg = _("invalid register operand when updating"); + return insn | ((value & 0x1f) << 16); +} + +/* The RB field in an X form instruction when it must be the same as + the RS field in the instruction. This is used for extended + mnemonics like mr. This operand is marked FAKE. The insertion + function just copies the BT field into the BA field, and the + extraction function just checks that the fields are the same. */ + +static unsigned long +insert_rbs (unsigned long insn, + long value ATTRIBUTE_UNUSED, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + return insn | (((insn >> 21) & 0x1f) << 11); +} + +static long +extract_rbs (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid) +{ + if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f)) + *invalid = 1; + return 0; +} + +/* The SH field in an MD form instruction. This is split. */ + +static unsigned long +insert_sh6 (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4); +} + +static long +extract_sh6 (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid ATTRIBUTE_UNUSED) +{ + return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20); +} + +/* The SPR field in an XFX form instruction. This is flipped--the + lower 5 bits are stored in the upper 5 and vice- versa. */ + +static unsigned long +insert_spr (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6); +} + +static long +extract_spr (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid ATTRIBUTE_UNUSED) +{ + return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0); +} + +/* Some dialects have 8 SPRG registers instead of the standard 4. */ + +static unsigned long +insert_sprg (unsigned long insn, + long value, + int dialect, + const char **errmsg) +{ + /* This check uses PPC_OPCODE_403 because PPC405 is later defined + as a synonym. If ever a 405 specific dialect is added this + check should use that instead. */ + if (value > 7 + || (value > 3 + && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0)) + *errmsg = _("invalid sprg number"); + + /* If this is mfsprg4..7 then use spr 260..263 which can be read in + user mode. Anything else must use spr 272..279. */ + if (value <= 3 || (insn & 0x100) != 0) + value |= 0x10; + + return insn | ((value & 0x17) << 16); +} + +static long +extract_sprg (unsigned long insn, + int dialect, + int *invalid) +{ + unsigned long val = (insn >> 16) & 0x1f; + + /* mfsprg can use 260..263 and 272..279. mtsprg only uses spr 272..279 + If not BOOKE or 405, then both use only 272..275. */ + if (val <= 3 + || (val < 0x10 && (insn & 0x100) != 0) + || (val - 0x10 > 3 + && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0)) + *invalid = 1; + return val & 7; +} + +/* The TBR field in an XFX instruction. This is just like SPR, but it + is optional. When TBR is omitted, it must be inserted as 268 (the + magic number of the TB register). These functions treat 0 + (indicating an omitted optional operand) as 268. This means that + ``mftb 4,0'' is not handled correctly. This does not matter very + much, since the architecture manual does not define mftb as + accepting any values other than 268 or 269. */ + +#define TB (268) + +static unsigned long +insert_tbr (unsigned long insn, + long value, + int dialect ATTRIBUTE_UNUSED, + const char **errmsg ATTRIBUTE_UNUSED) +{ + if (value == 0) + value = TB; + return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6); +} + +static long +extract_tbr (unsigned long insn, + int dialect ATTRIBUTE_UNUSED, + int *invalid ATTRIBUTE_UNUSED) +{ + long ret; + + ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0); + if (ret == TB) + ret = 0; + return ret; +} + +/* Macros used to form opcodes. */ + +/* The main opcode. */ +#define OP(x) ((((unsigned long)(x)) & 0x3f) << 26) +#define OP_MASK OP (0x3f) + +/* The main opcode combined with a trap code in the TO field of a D + form instruction. Used for extended mnemonics for the trap + instructions. */ +#define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21)) +#define OPTO_MASK (OP_MASK | TO_MASK) + +/* The main opcode combined with a comparison size bit in the L field + of a D form or X form instruction. Used for extended mnemonics for + the comparison instructions. */ +#define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21)) +#define OPL_MASK OPL (0x3f,1) + +/* An A form instruction. */ +#define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1)) +#define A_MASK A (0x3f, 0x1f, 1) + +/* An A_MASK with the FRB field fixed. */ +#define AFRB_MASK (A_MASK | FRB_MASK) + +/* An A_MASK with the FRC field fixed. */ +#define AFRC_MASK (A_MASK | FRC_MASK) + +/* An A_MASK with the FRA and FRC fields fixed. */ +#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK) + +/* An AFRAFRC_MASK, but with L bit clear. */ +#define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16)) + +/* A B form instruction. */ +#define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1)) +#define B_MASK B (0x3f, 1, 1) + +/* A B form instruction setting the BO field. */ +#define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21)) +#define BBO_MASK BBO (0x3f, 0x1f, 1, 1) + +/* A BBO_MASK with the y bit of the BO field removed. This permits + matching a conditional branch regardless of the setting of the y + bit. Similarly for the 'at' bits used for power4 branch hints. */ +#define Y_MASK (((unsigned long) 1) << 21) +#define AT1_MASK (((unsigned long) 3) << 21) +#define AT2_MASK (((unsigned long) 9) << 21) +#define BBOY_MASK (BBO_MASK &~ Y_MASK) +#define BBOAT_MASK (BBO_MASK &~ AT1_MASK) + +/* A B form instruction setting the BO field and the condition bits of + the BI field. */ +#define BBOCB(op, bo, cb, aa, lk) \ + (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16)) +#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1) + +/* A BBOCB_MASK with the y bit of the BO field removed. */ +#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK) +#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK) +#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK) + +/* A BBOYCB_MASK in which the BI field is fixed. */ +#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK) +#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK) + +/* An Context form instruction. */ +#define CTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7)) +#define CTX_MASK CTX(0x3f, 0x7) + +/* An User Context form instruction. */ +#define UCTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f)) +#define UCTX_MASK UCTX(0x3f, 0x1f) + +/* The main opcode mask with the RA field clear. */ +#define DRA_MASK (OP_MASK | RA_MASK) + +/* A DS form instruction. */ +#define DSO(op, xop) (OP (op) | ((xop) & 0x3)) +#define DS_MASK DSO (0x3f, 3) + +/* A DE form instruction. */ +#define DEO(op, xop) (OP (op) | ((xop) & 0xf)) +#define DE_MASK DEO (0x3e, 0xf) + +/* An EVSEL form instruction. */ +#define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3) +#define EVSEL_MASK EVSEL(0x3f, 0xff) + +/* An M form instruction. */ +#define M(op, rc) (OP (op) | ((rc) & 1)) +#define M_MASK M (0x3f, 1) + +/* An M form instruction with the ME field specified. */ +#define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1)) + +/* An M_MASK with the MB and ME fields fixed. */ +#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK) + +/* An M_MASK with the SH and ME fields fixed. */ +#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK) + +/* An MD form instruction. */ +#define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1)) +#define MD_MASK MD (0x3f, 0x7, 1) + +/* An MD_MASK with the MB field fixed. */ +#define MDMB_MASK (MD_MASK | MB6_MASK) + +/* An MD_MASK with the SH field fixed. */ +#define MDSH_MASK (MD_MASK | SH6_MASK) + +/* An MDS form instruction. */ +#define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1)) +#define MDS_MASK MDS (0x3f, 0xf, 1) + +/* An MDS_MASK with the MB field fixed. */ +#define MDSMB_MASK (MDS_MASK | MB6_MASK) + +/* An SC form instruction. */ +#define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1)) +#define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1) + +/* An VX form instruction. */ +#define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff)) + +/* The mask for an VX form instruction. */ +#define VX_MASK VX(0x3f, 0x7ff) + +/* An VA form instruction. */ +#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f)) + +/* The mask for an VA form instruction. */ +#define VXA_MASK VXA(0x3f, 0x3f) + +/* An VXR form instruction. */ +#define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff)) + +/* The mask for a VXR form instruction. */ +#define VXR_MASK VXR(0x3f, 0x3ff, 1) + +/* An X form instruction. */ +#define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1)) + +/* A Z form instruction. */ +#define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1)) + +/* An X form instruction with the RC bit specified. */ +#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1)) + +/* A Z form instruction with the RC bit specified. */ +#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1)) + +/* The mask for an X form instruction. */ +#define X_MASK XRC (0x3f, 0x3ff, 1) + +/* The mask for a Z form instruction. */ +#define Z_MASK ZRC (0x3f, 0x1ff, 1) +#define Z2_MASK ZRC (0x3f, 0xff, 1) + +/* An X_MASK with the RA field fixed. */ +#define XRA_MASK (X_MASK | RA_MASK) + +/* An XRA_MASK with the W field clear. */ +#define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16)) + +/* An X_MASK with the RB field fixed. */ +#define XRB_MASK (X_MASK | RB_MASK) + +/* An X_MASK with the RT field fixed. */ +#define XRT_MASK (X_MASK | RT_MASK) + +/* An XRT_MASK mask with the L bits clear. */ +#define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21)) + +/* An X_MASK with the RA and RB fields fixed. */ +#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK) + +/* An XRARB_MASK, but with the L bit clear. */ +#define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16)) + +/* An X_MASK with the RT and RA fields fixed. */ +#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK) + +/* An XRTRA_MASK, but with L bit clear. */ +#define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21)) + +/* An X form instruction with the L bit specified. */ +#define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21)) + +/* The mask for an X form comparison instruction. */ +#define XCMP_MASK (X_MASK | (((unsigned long)1) << 22)) + +/* The mask for an X form comparison instruction with the L field + fixed. */ +#define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21)) + +/* An X form trap instruction with the TO field specified. */ +#define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21)) +#define XTO_MASK (X_MASK | TO_MASK) + +/* An X form tlb instruction with the SH field specified. */ +#define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11)) +#define XTLB_MASK (X_MASK | SH_MASK) + +/* An X form sync instruction. */ +#define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21)) + +/* An X form sync instruction with everything filled in except the LS field. */ +#define XSYNC_MASK (0xff9fffff) + +/* An X_MASK, but with the EH bit clear. */ +#define XEH_MASK (X_MASK & ~((unsigned long )1)) + +/* An X form AltiVec dss instruction. */ +#define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25)) +#define XDSS_MASK XDSS(0x3f, 0x3ff, 1) + +/* An XFL form instruction. */ +#define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1)) +#define XFL_MASK XFL (0x3f, 0x3ff, 1) + +/* An X form isel instruction. */ +#define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1)) +#define XISEL_MASK XISEL(0x3f, 0x1f) + +/* An XL form instruction with the LK field set to 0. */ +#define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1)) + +/* An XL form instruction which uses the LK field. */ +#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1)) + +/* The mask for an XL form instruction. */ +#define XL_MASK XLLK (0x3f, 0x3ff, 1) + +/* An XL form instruction which explicitly sets the BO field. */ +#define XLO(op, bo, xop, lk) \ + (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21)) +#define XLO_MASK (XL_MASK | BO_MASK) + +/* An XL form instruction which explicitly sets the y bit of the BO + field. */ +#define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21)) +#define XLYLK_MASK (XL_MASK | Y_MASK) + +/* An XL form instruction which sets the BO field and the condition + bits of the BI field. */ +#define XLOCB(op, bo, cb, xop, lk) \ + (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16)) +#define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1) + +/* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed. */ +#define XLBB_MASK (XL_MASK | BB_MASK) +#define XLYBB_MASK (XLYLK_MASK | BB_MASK) +#define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK) + +/* A mask for branch instructions using the BH field. */ +#define XLBH_MASK (XL_MASK | (0x1c << 11)) + +/* An XL_MASK with the BO and BB fields fixed. */ +#define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK) + +/* An XL_MASK with the BO, BI and BB fields fixed. */ +#define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK) + +/* An XO form instruction. */ +#define XO(op, xop, oe, rc) \ + (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1)) +#define XO_MASK XO (0x3f, 0x1ff, 1, 1) + +/* An XO_MASK with the RB field fixed. */ +#define XORB_MASK (XO_MASK | RB_MASK) + +/* An XS form instruction. */ +#define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1)) +#define XS_MASK XS (0x3f, 0x1ff, 1) + +/* A mask for the FXM version of an XFX form instruction. */ +#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20)) + +/* An XFX form instruction with the FXM field filled in. */ +#define XFXM(op, xop, fxm, p4) \ + (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \ + | ((unsigned long)(p4) << 20)) + +/* An XFX form instruction with the SPR field filled in. */ +#define XSPR(op, xop, spr) \ + (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6)) +#define XSPR_MASK (X_MASK | SPR_MASK) + +/* An XFX form instruction with the SPR field filled in except for the + SPRBAT field. */ +#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK) + +/* An XFX form instruction with the SPR field filled in except for the + SPRG field. */ +#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16)) + +/* An X form instruction with everything filled in except the E field. */ +#define XE_MASK (0xffff7fff) + +/* An X form user context instruction. */ +#define XUC(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f)) +#define XUC_MASK XUC(0x3f, 0x1f) + +/* The BO encodings used in extended conditional branch mnemonics. */ +#define BODNZF (0x0) +#define BODNZFP (0x1) +#define BODZF (0x2) +#define BODZFP (0x3) +#define BODNZT (0x8) +#define BODNZTP (0x9) +#define BODZT (0xa) +#define BODZTP (0xb) + +#define BOF (0x4) +#define BOFP (0x5) +#define BOFM4 (0x6) +#define BOFP4 (0x7) +#define BOT (0xc) +#define BOTP (0xd) +#define BOTM4 (0xe) +#define BOTP4 (0xf) + +#define BODNZ (0x10) +#define BODNZP (0x11) +#define BODZ (0x12) +#define BODZP (0x13) +#define BODNZM4 (0x18) +#define BODNZP4 (0x19) +#define BODZM4 (0x1a) +#define BODZP4 (0x1b) + +#define BOU (0x14) + +/* The BI condition bit encodings used in extended conditional branch + mnemonics. */ +#define CBLT (0) +#define CBGT (1) +#define CBEQ (2) +#define CBSO (3) + +/* The TO encodings used in extended trap mnemonics. */ +#define TOLGT (0x1) +#define TOLLT (0x2) +#define TOEQ (0x4) +#define TOLGE (0x5) +#define TOLNL (0x5) +#define TOLLE (0x6) +#define TOLNG (0x6) +#define TOGT (0x8) +#define TOGE (0xc) +#define TONL (0xc) +#define TOLT (0x10) +#define TOLE (0x14) +#define TONG (0x14) +#define TONE (0x18) +#define TOU (0x1f) + +/* Smaller names for the flags so each entry in the opcodes table will + fit on a single line. */ +#undef PPC +#define PPC PPC_OPCODE_PPC +#define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON +#define NOPOWER4 PPC_OPCODE_NOPOWER4 | PPCCOM +#define POWER4 PPC_OPCODE_POWER4 +#define POWER5 PPC_OPCODE_POWER5 +#define POWER6 PPC_OPCODE_POWER6 +#define CELL PPC_OPCODE_CELL +#define PPC32 PPC_OPCODE_32 | PPC_OPCODE_PPC +#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_PPC +#define PPC403 PPC_OPCODE_403 +#define PPC405 PPC403 +#define PPC440 PPC_OPCODE_440 +#define PPC750 PPC +#define PPC860 PPC +#define PPCVEC PPC_OPCODE_ALTIVEC +#define POWER PPC_OPCODE_POWER +#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2 +#define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 +#define POWER32 PPC_OPCODE_POWER | PPC_OPCODE_32 +#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON +#define COM32 PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON | PPC_OPCODE_32 +#define M601 PPC_OPCODE_POWER | PPC_OPCODE_601 +#define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON +#define MFDEC1 PPC_OPCODE_POWER +#define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE +#define BOOKE PPC_OPCODE_BOOKE +#define BOOKE64 PPC_OPCODE_BOOKE64 +#define CLASSIC PPC_OPCODE_CLASSIC +#define PPCE300 PPC_OPCODE_E300 +#define PPCSPE PPC_OPCODE_SPE +#define PPCISEL PPC_OPCODE_ISEL +#define PPCEFS PPC_OPCODE_EFS +#define PPCBRLK PPC_OPCODE_BRLOCK +#define PPCPMR PPC_OPCODE_PMR +#define PPCCHLK PPC_OPCODE_CACHELCK +#define PPCCHLK64 PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64 +#define PPCRFMCI PPC_OPCODE_RFMCI + +/* The opcode table. + + The format of the opcode table is: + + NAME OPCODE MASK FLAGS { OPERANDS } + + NAME is the name of the instruction. + OPCODE is the instruction opcode. + MASK is the opcode mask; this is used to tell the disassembler + which bits in the actual opcode must match OPCODE. + FLAGS are flags indicated what processors support the instruction. + OPERANDS is the list of operands. + + The disassembler reads the table in order and prints the first + instruction which matches, so this table is sorted to put more + specific instructions before more general instructions. It is also + sorted by major opcode. */ + +const struct powerpc_opcode powerpc_opcodes[] = { +{ "attn", X(0,256), X_MASK, POWER4, { 0 } }, +{ "tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, { RA, SI } }, +{ "tdi", OP(2), OP_MASK, PPC64, { TO, RA, SI } }, + +{ "twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, { RA, SI } }, +{ "tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, { RA, SI } }, +{ "twi", OP(3), OP_MASK, PPCCOM, { TO, RA, SI } }, +{ "ti", OP(3), OP_MASK, PWRCOM, { TO, RA, SI } }, + +{ "macchw", XO(4,172,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchw.", XO(4,172,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwo", XO(4,172,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwo.", XO(4,172,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchws", XO(4,236,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchws.", XO(4,236,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwso", XO(4,236,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwso.", XO(4,236,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwsu", XO(4,204,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwsu.", XO(4,204,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwsuo", XO(4,204,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwsuo.", XO(4,204,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwu", XO(4,140,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwu.", XO(4,140,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwuo", XO(4,140,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "macchwuo.", XO(4,140,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhw", XO(4,44,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhw.", XO(4,44,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwo", XO(4,44,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwo.", XO(4,44,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhws", XO(4,108,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhws.", XO(4,108,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwso", XO(4,108,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwso.", XO(4,108,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwsu", XO(4,76,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwsu.", XO(4,76,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwsuo", XO(4,76,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwsuo.", XO(4,76,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwu", XO(4,12,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwu.", XO(4,12,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwuo", XO(4,12,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "machhwuo.", XO(4,12,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhw", XO(4,428,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhw.", XO(4,428,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwo", XO(4,428,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwo.", XO(4,428,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhws", XO(4,492,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhws.", XO(4,492,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwso", XO(4,492,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwso.", XO(4,492,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwsu", XO(4,460,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwsu.", XO(4,460,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwsuo", XO(4,460,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwsuo.", XO(4,460,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwu", XO(4,396,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwu.", XO(4,396,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwuo", XO(4,396,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "maclhwuo.", XO(4,396,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulchw", XRC(4,168,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulchw.", XRC(4,168,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulchwu", XRC(4,136,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulchwu.", XRC(4,136,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulhhw", XRC(4,40,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulhhw.", XRC(4,40,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulhhwu", XRC(4,8,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mulhhwu.", XRC(4,8,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mullhw", XRC(4,424,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mullhw.", XRC(4,424,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mullhwu", XRC(4,392,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mullhwu.", XRC(4,392,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchw", XO(4,174,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchw.", XO(4,174,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchwo", XO(4,174,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchwo.", XO(4,174,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchws", XO(4,238,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchws.", XO(4,238,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchwso", XO(4,238,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmacchwso.", XO(4,238,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhw", XO(4,46,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhw.", XO(4,46,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhwo", XO(4,46,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhwo.", XO(4,46,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhws", XO(4,110,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhws.", XO(4,110,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhwso", XO(4,110,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmachhwso.", XO(4,110,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhw", XO(4,430,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhw.", XO(4,430,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhwo", XO(4,430,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhwo.", XO(4,430,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhws", XO(4,494,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhws.", XO(4,494,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhwso", XO(4,494,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "nmaclhwso.", XO(4,494,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, +{ "mfvscr", VX(4, 1540), VX_MASK, PPCVEC, { VD } }, +{ "mtvscr", VX(4, 1604), VX_MASK, PPCVEC, { VB } }, + + /* Double-precision opcodes. */ + /* Some of these conflict with AltiVec, so move them before, since + PPCVEC includes the PPC_OPCODE_PPC set. */ +{ "efscfd", VX(4, 719), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdabs", VX(4, 740), VX_MASK, PPCEFS, { RS, RA } }, +{ "efdnabs", VX(4, 741), VX_MASK, PPCEFS, { RS, RA } }, +{ "efdneg", VX(4, 742), VX_MASK, PPCEFS, { RS, RA } }, +{ "efdadd", VX(4, 736), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efdsub", VX(4, 737), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efdmul", VX(4, 744), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efddiv", VX(4, 745), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efdcmpgt", VX(4, 748), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efdcmplt", VX(4, 749), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efdcmpeq", VX(4, 750), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efdtstgt", VX(4, 764), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efdtstlt", VX(4, 765), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efdtsteq", VX(4, 766), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efdcfsi", VX(4, 753), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdcfsid", VX(4, 739), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdcfui", VX(4, 752), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdcfuid", VX(4, 738), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdcfsf", VX(4, 755), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdcfuf", VX(4, 754), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctsi", VX(4, 757), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctsidz",VX(4, 747), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctsiz", VX(4, 762), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctui", VX(4, 756), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctuidz",VX(4, 746), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctuiz", VX(4, 760), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctsf", VX(4, 759), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdctuf", VX(4, 758), VX_MASK, PPCEFS, { RS, RB } }, +{ "efdcfs", VX(4, 751), VX_MASK, PPCEFS, { RS, RB } }, + /* End of double-precision opcodes. */ + +{ "vaddcuw", VX(4, 384), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vaddfp", VX(4, 10), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vaddsbs", VX(4, 768), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vaddshs", VX(4, 832), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vaddsws", VX(4, 896), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vaddubm", VX(4, 0), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vaddubs", VX(4, 512), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vadduhm", VX(4, 64), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vadduhs", VX(4, 576), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vadduwm", VX(4, 128), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vadduws", VX(4, 640), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vand", VX(4, 1028), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vandc", VX(4, 1092), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vavgsb", VX(4, 1282), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vavgsh", VX(4, 1346), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vavgsw", VX(4, 1410), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vavgub", VX(4, 1026), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vavguh", VX(4, 1090), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vavguw", VX(4, 1154), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcfsx", VX(4, 842), VX_MASK, PPCVEC, { VD, VB, UIMM } }, +{ "vcfux", VX(4, 778), VX_MASK, PPCVEC, { VD, VB, UIMM } }, +{ "vcmpbfp", VXR(4, 966, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpbfp.", VXR(4, 966, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpeqfp", VXR(4, 198, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpeqfp.", VXR(4, 198, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpequb", VXR(4, 6, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpequb.", VXR(4, 6, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpequh", VXR(4, 70, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpequh.", VXR(4, 70, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpequw", VXR(4, 134, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpequw.", VXR(4, 134, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgefp", VXR(4, 454, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgefp.", VXR(4, 454, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtfp", VXR(4, 710, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtfp.", VXR(4, 710, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtsb", VXR(4, 774, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtsb.", VXR(4, 774, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtsh", VXR(4, 838, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtsh.", VXR(4, 838, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtsw", VXR(4, 902, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtsw.", VXR(4, 902, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtub", VXR(4, 518, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtub.", VXR(4, 518, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtuh", VXR(4, 582, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtuh.", VXR(4, 582, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtuw", VXR(4, 646, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vcmpgtuw.", VXR(4, 646, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, +{ "vctsxs", VX(4, 970), VX_MASK, PPCVEC, { VD, VB, UIMM } }, +{ "vctuxs", VX(4, 906), VX_MASK, PPCVEC, { VD, VB, UIMM } }, +{ "vexptefp", VX(4, 394), VX_MASK, PPCVEC, { VD, VB } }, +{ "vlogefp", VX(4, 458), VX_MASK, PPCVEC, { VD, VB } }, +{ "vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, { VD, VA, VC, VB } }, +{ "vmaxfp", VX(4, 1034), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmaxsb", VX(4, 258), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmaxsh", VX(4, 322), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmaxsw", VX(4, 386), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmaxub", VX(4, 2), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmaxuh", VX(4, 66), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmaxuw", VX(4, 130), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vminfp", VX(4, 1098), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vminsb", VX(4, 770), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vminsh", VX(4, 834), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vminsw", VX(4, 898), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vminub", VX(4, 514), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vminuh", VX(4, 578), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vminuw", VX(4, 642), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmrghb", VX(4, 12), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmrghh", VX(4, 76), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmrghw", VX(4, 140), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmrglb", VX(4, 268), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmrglh", VX(4, 332), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmrglw", VX(4, 396), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vmulesb", VX(4, 776), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmulesh", VX(4, 840), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmuleub", VX(4, 520), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmuleuh", VX(4, 584), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmulosb", VX(4, 264), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmulosh", VX(4, 328), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmuloub", VX(4, 8), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vmulouh", VX(4, 72), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, { VD, VA, VC, VB } }, +{ "vnor", VX(4, 1284), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vor", VX(4, 1156), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vperm", VXA(4, 43), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vpkpx", VX(4, 782), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkshss", VX(4, 398), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkshus", VX(4, 270), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkswss", VX(4, 462), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkswus", VX(4, 334), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkuhum", VX(4, 14), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkuhus", VX(4, 142), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkuwum", VX(4, 78), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vpkuwus", VX(4, 206), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vrefp", VX(4, 266), VX_MASK, PPCVEC, { VD, VB } }, +{ "vrfim", VX(4, 714), VX_MASK, PPCVEC, { VD, VB } }, +{ "vrfin", VX(4, 522), VX_MASK, PPCVEC, { VD, VB } }, +{ "vrfip", VX(4, 650), VX_MASK, PPCVEC, { VD, VB } }, +{ "vrfiz", VX(4, 586), VX_MASK, PPCVEC, { VD, VB } }, +{ "vrlb", VX(4, 4), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vrlh", VX(4, 68), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vrlw", VX(4, 132), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vrsqrtefp", VX(4, 330), VX_MASK, PPCVEC, { VD, VB } }, +{ "vsel", VXA(4, 42), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, +{ "vsl", VX(4, 452), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vslb", VX(4, 260), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, { VD, VA, VB, SHB } }, +{ "vslh", VX(4, 324), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vslo", VX(4, 1036), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vslw", VX(4, 388), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vspltb", VX(4, 524), VX_MASK, PPCVEC, { VD, VB, UIMM } }, +{ "vsplth", VX(4, 588), VX_MASK, PPCVEC, { VD, VB, UIMM } }, +{ "vspltisb", VX(4, 780), VX_MASK, PPCVEC, { VD, SIMM } }, +{ "vspltish", VX(4, 844), VX_MASK, PPCVEC, { VD, SIMM } }, +{ "vspltisw", VX(4, 908), VX_MASK, PPCVEC, { VD, SIMM } }, +{ "vspltw", VX(4, 652), VX_MASK, PPCVEC, { VD, VB, UIMM } }, +{ "vsr", VX(4, 708), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsrab", VX(4, 772), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsrah", VX(4, 836), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsraw", VX(4, 900), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsrb", VX(4, 516), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsrh", VX(4, 580), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsro", VX(4, 1100), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsrw", VX(4, 644), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubcuw", VX(4, 1408), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubfp", VX(4, 74), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubsbs", VX(4, 1792), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubshs", VX(4, 1856), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubsws", VX(4, 1920), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsububm", VX(4, 1024), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsububs", VX(4, 1536), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubuhm", VX(4, 1088), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubuhs", VX(4, 1600), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubuwm", VX(4, 1152), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsubuws", VX(4, 1664), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsumsws", VX(4, 1928), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsum2sws", VX(4, 1672), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsum4sbs", VX(4, 1800), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsum4shs", VX(4, 1608), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vsum4ubs", VX(4, 1544), VX_MASK, PPCVEC, { VD, VA, VB } }, +{ "vupkhpx", VX(4, 846), VX_MASK, PPCVEC, { VD, VB } }, +{ "vupkhsb", VX(4, 526), VX_MASK, PPCVEC, { VD, VB } }, +{ "vupkhsh", VX(4, 590), VX_MASK, PPCVEC, { VD, VB } }, +{ "vupklpx", VX(4, 974), VX_MASK, PPCVEC, { VD, VB } }, +{ "vupklsb", VX(4, 654), VX_MASK, PPCVEC, { VD, VB } }, +{ "vupklsh", VX(4, 718), VX_MASK, PPCVEC, { VD, VB } }, +{ "vxor", VX(4, 1220), VX_MASK, PPCVEC, { VD, VA, VB } }, + +{ "evaddw", VX(4, 512), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evaddiw", VX(4, 514), VX_MASK, PPCSPE, { RS, RB, UIMM } }, +{ "evsubfw", VX(4, 516), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evsubw", VX(4, 516), VX_MASK, PPCSPE, { RS, RB, RA } }, +{ "evsubifw", VX(4, 518), VX_MASK, PPCSPE, { RS, UIMM, RB } }, +{ "evsubiw", VX(4, 518), VX_MASK, PPCSPE, { RS, RB, UIMM } }, +{ "evabs", VX(4, 520), VX_MASK, PPCSPE, { RS, RA } }, +{ "evneg", VX(4, 521), VX_MASK, PPCSPE, { RS, RA } }, +{ "evextsb", VX(4, 522), VX_MASK, PPCSPE, { RS, RA } }, +{ "evextsh", VX(4, 523), VX_MASK, PPCSPE, { RS, RA } }, +{ "evrndw", VX(4, 524), VX_MASK, PPCSPE, { RS, RA } }, +{ "evcntlzw", VX(4, 525), VX_MASK, PPCSPE, { RS, RA } }, +{ "evcntlsw", VX(4, 526), VX_MASK, PPCSPE, { RS, RA } }, + +{ "brinc", VX(4, 527), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evand", VX(4, 529), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evandc", VX(4, 530), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmr", VX(4, 535), VX_MASK, PPCSPE, { RS, RA, BBA } }, +{ "evor", VX(4, 535), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evorc", VX(4, 539), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evxor", VX(4, 534), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "eveqv", VX(4, 537), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evnand", VX(4, 542), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evnot", VX(4, 536), VX_MASK, PPCSPE, { RS, RA, BBA } }, +{ "evnor", VX(4, 536), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evrlw", VX(4, 552), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evrlwi", VX(4, 554), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, +{ "evslw", VX(4, 548), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evslwi", VX(4, 550), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, +{ "evsrws", VX(4, 545), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evsrwu", VX(4, 544), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evsrwis", VX(4, 547), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, +{ "evsrwiu", VX(4, 546), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, +{ "evsplati", VX(4, 553), VX_MASK, PPCSPE, { RS, SIMM } }, +{ "evsplatfi", VX(4, 555), VX_MASK, PPCSPE, { RS, SIMM } }, +{ "evmergehi", VX(4, 556), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmergelo", VX(4, 557), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmergehilo",VX(4,558), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmergelohi",VX(4,559), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evcmpgts", VX(4, 561), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evcmpgtu", VX(4, 560), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evcmplts", VX(4, 563), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evcmpltu", VX(4, 562), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evcmpeq", VX(4, 564), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evsel", EVSEL(4,79),EVSEL_MASK, PPCSPE, { RS, RA, RB, CRFS } }, + +{ "evldd", VX(4, 769), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, +{ "evlddx", VX(4, 768), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evldw", VX(4, 771), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, +{ "evldwx", VX(4, 770), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evldh", VX(4, 773), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, +{ "evldhx", VX(4, 772), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlwhe", VX(4, 785), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evlwhex", VX(4, 784), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlwhou", VX(4, 789), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evlwhoux", VX(4, 788), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlwhos", VX(4, 791), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evlwhosx", VX(4, 790), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlwwsplat",VX(4, 793), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evlwwsplatx",VX(4, 792), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlwhsplat",VX(4, 797), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evlwhsplatx",VX(4, 796), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlhhesplat",VX(4, 777), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } }, +{ "evlhhesplatx",VX(4, 776), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlhhousplat",VX(4, 781), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } }, +{ "evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evlhhossplat",VX(4, 783), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } }, +{ "evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evstdd", VX(4, 801), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, +{ "evstddx", VX(4, 800), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evstdw", VX(4, 803), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, +{ "evstdwx", VX(4, 802), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evstdh", VX(4, 805), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, +{ "evstdhx", VX(4, 804), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evstwwe", VX(4, 825), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evstwwex", VX(4, 824), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evstwwo", VX(4, 829), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evstwwox", VX(4, 828), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evstwhe", VX(4, 817), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evstwhex", VX(4, 816), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evstwho", VX(4, 821), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, +{ "evstwhox", VX(4, 820), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evfsabs", VX(4, 644), VX_MASK, PPCSPE, { RS, RA } }, +{ "evfsnabs", VX(4, 645), VX_MASK, PPCSPE, { RS, RA } }, +{ "evfsneg", VX(4, 646), VX_MASK, PPCSPE, { RS, RA } }, +{ "evfsadd", VX(4, 640), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evfssub", VX(4, 641), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evfsmul", VX(4, 648), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evfsdiv", VX(4, 649), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evfscmpgt", VX(4, 652), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evfscmplt", VX(4, 653), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evfscmpeq", VX(4, 654), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evfststgt", VX(4, 668), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evfststlt", VX(4, 669), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evfststeq", VX(4, 670), VX_MASK, PPCSPE, { CRFD, RA, RB } }, +{ "evfscfui", VX(4, 656), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfsctuiz", VX(4, 664), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfscfsi", VX(4, 657), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfscfuf", VX(4, 658), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfscfsf", VX(4, 659), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfsctui", VX(4, 660), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfsctsi", VX(4, 661), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfsctsiz", VX(4, 666), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfsctuf", VX(4, 662), VX_MASK, PPCSPE, { RS, RB } }, +{ "evfsctsf", VX(4, 663), VX_MASK, PPCSPE, { RS, RB } }, + +{ "efsabs", VX(4, 708), VX_MASK, PPCEFS, { RS, RA } }, +{ "efsnabs", VX(4, 709), VX_MASK, PPCEFS, { RS, RA } }, +{ "efsneg", VX(4, 710), VX_MASK, PPCEFS, { RS, RA } }, +{ "efsadd", VX(4, 704), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efssub", VX(4, 705), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efsmul", VX(4, 712), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efsdiv", VX(4, 713), VX_MASK, PPCEFS, { RS, RA, RB } }, +{ "efscmpgt", VX(4, 716), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efscmplt", VX(4, 717), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efscmpeq", VX(4, 718), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efststgt", VX(4, 732), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efststlt", VX(4, 733), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efststeq", VX(4, 734), VX_MASK, PPCEFS, { CRFD, RA, RB } }, +{ "efscfui", VX(4, 720), VX_MASK, PPCEFS, { RS, RB } }, +{ "efsctuiz", VX(4, 728), VX_MASK, PPCEFS, { RS, RB } }, +{ "efscfsi", VX(4, 721), VX_MASK, PPCEFS, { RS, RB } }, +{ "efscfuf", VX(4, 722), VX_MASK, PPCEFS, { RS, RB } }, +{ "efscfsf", VX(4, 723), VX_MASK, PPCEFS, { RS, RB } }, +{ "efsctui", VX(4, 724), VX_MASK, PPCEFS, { RS, RB } }, +{ "efsctsi", VX(4, 725), VX_MASK, PPCEFS, { RS, RB } }, +{ "efsctsiz", VX(4, 730), VX_MASK, PPCEFS, { RS, RB } }, +{ "efsctuf", VX(4, 726), VX_MASK, PPCEFS, { RS, RB } }, +{ "efsctsf", VX(4, 727), VX_MASK, PPCEFS, { RS, RB } }, + +{ "evmhossf", VX(4, 1031), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhossfa", VX(4, 1063), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmf", VX(4, 1039), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmfa", VX(4, 1071), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmi", VX(4, 1037), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmia", VX(4, 1069), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhoumi", VX(4, 1036), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhoumia", VX(4, 1068), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhessf", VX(4, 1027), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhessfa", VX(4, 1059), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmf", VX(4, 1035), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmfa", VX(4, 1067), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmi", VX(4, 1033), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmia", VX(4, 1065), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmheumi", VX(4, 1032), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmheumia", VX(4, 1064), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmhossfaaw",VX(4, 1287), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhossiaaw",VX(4, 1285), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmfaaw",VX(4, 1295), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmiaaw",VX(4, 1293), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhousiaaw",VX(4, 1284), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhoumiaaw",VX(4, 1292), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhessfaaw",VX(4, 1283), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhessiaaw",VX(4, 1281), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmfaaw",VX(4, 1291), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmiaaw",VX(4, 1289), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmheusiaaw",VX(4, 1280), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmheumiaaw",VX(4, 1288), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmhossfanw",VX(4, 1415), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhossianw",VX(4, 1413), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmfanw",VX(4, 1423), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhosmianw",VX(4, 1421), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhousianw",VX(4, 1412), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhoumianw",VX(4, 1420), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhessfanw",VX(4, 1411), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhessianw",VX(4, 1409), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmfanw",VX(4, 1419), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhesmianw",VX(4, 1417), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmheusianw",VX(4, 1408), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmheumianw",VX(4, 1416), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmhogsmfaa",VX(4, 1327), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhogsmiaa",VX(4, 1325), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhogumiaa",VX(4, 1324), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhegsmfaa",VX(4, 1323), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhegsmiaa",VX(4, 1321), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhegumiaa",VX(4, 1320), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmhogsmfan",VX(4, 1455), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhogsmian",VX(4, 1453), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhogumian",VX(4, 1452), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhegsmfan",VX(4, 1451), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhegsmian",VX(4, 1449), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmhegumian",VX(4, 1448), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmwhssf", VX(4, 1095), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwhssfa", VX(4, 1127), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwhsmf", VX(4, 1103), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwhsmfa", VX(4, 1135), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwhsmi", VX(4, 1101), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwhsmia", VX(4, 1133), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwhumi", VX(4, 1100), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwhumia", VX(4, 1132), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmwlumi", VX(4, 1096), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwlumia", VX(4, 1128), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmwlssiaaw",VX(4, 1345), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwlsmiaaw",VX(4, 1353), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwlusiaaw",VX(4, 1344), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwlumiaaw",VX(4, 1352), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmwlssianw",VX(4, 1473), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwlsmianw",VX(4, 1481), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwlusianw",VX(4, 1472), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwlumianw",VX(4, 1480), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmwssf", VX(4, 1107), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwssfa", VX(4, 1139), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmf", VX(4, 1115), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmfa", VX(4, 1147), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmi", VX(4, 1113), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmia", VX(4, 1145), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwumi", VX(4, 1112), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwumia", VX(4, 1144), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmwssfaa", VX(4, 1363), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmfaa", VX(4, 1371), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmiaa", VX(4, 1369), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwumiaa", VX(4, 1368), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evmwssfan", VX(4, 1491), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmfan", VX(4, 1499), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwsmian", VX(4, 1497), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evmwumian", VX(4, 1496), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "evaddssiaaw",VX(4, 1217), VX_MASK, PPCSPE, { RS, RA } }, +{ "evaddsmiaaw",VX(4, 1225), VX_MASK, PPCSPE, { RS, RA } }, +{ "evaddusiaaw",VX(4, 1216), VX_MASK, PPCSPE, { RS, RA } }, +{ "evaddumiaaw",VX(4, 1224), VX_MASK, PPCSPE, { RS, RA } }, + +{ "evsubfssiaaw",VX(4, 1219), VX_MASK, PPCSPE, { RS, RA } }, +{ "evsubfsmiaaw",VX(4, 1227), VX_MASK, PPCSPE, { RS, RA } }, +{ "evsubfusiaaw",VX(4, 1218), VX_MASK, PPCSPE, { RS, RA } }, +{ "evsubfumiaaw",VX(4, 1226), VX_MASK, PPCSPE, { RS, RA } }, + +{ "evmra", VX(4, 1220), VX_MASK, PPCSPE, { RS, RA } }, + +{ "evdivws", VX(4, 1222), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "evdivwu", VX(4, 1223), VX_MASK, PPCSPE, { RS, RA, RB } }, + +{ "mulli", OP(7), OP_MASK, PPCCOM, { RT, RA, SI } }, +{ "muli", OP(7), OP_MASK, PWRCOM, { RT, RA, SI } }, + +{ "subfic", OP(8), OP_MASK, PPCCOM, { RT, RA, SI } }, +{ "sfi", OP(8), OP_MASK, PWRCOM, { RT, RA, SI } }, + +{ "dozi", OP(9), OP_MASK, M601, { RT, RA, SI } }, + +{ "bce", B(9,0,0), B_MASK, BOOKE64, { BO, BI, BD } }, +{ "bcel", B(9,0,1), B_MASK, BOOKE64, { BO, BI, BD } }, +{ "bcea", B(9,1,0), B_MASK, BOOKE64, { BO, BI, BDA } }, +{ "bcela", B(9,1,1), B_MASK, BOOKE64, { BO, BI, BDA } }, + +{ "cmplwi", OPL(10,0), OPL_MASK, PPCCOM, { OBF, RA, UI } }, +{ "cmpldi", OPL(10,1), OPL_MASK, PPC64, { OBF, RA, UI } }, +{ "cmpli", OP(10), OP_MASK, PPC, { BF, L, RA, UI } }, +{ "cmpli", OP(10), OP_MASK, PWRCOM, { BF, RA, UI } }, + +{ "cmpwi", OPL(11,0), OPL_MASK, PPCCOM, { OBF, RA, SI } }, +{ "cmpdi", OPL(11,1), OPL_MASK, PPC64, { OBF, RA, SI } }, +{ "cmpi", OP(11), OP_MASK, PPC, { BF, L, RA, SI } }, +{ "cmpi", OP(11), OP_MASK, PWRCOM, { BF, RA, SI } }, + +{ "addic", OP(12), OP_MASK, PPCCOM, { RT, RA, SI } }, +{ "ai", OP(12), OP_MASK, PWRCOM, { RT, RA, SI } }, +{ "subic", OP(12), OP_MASK, PPCCOM, { RT, RA, NSI } }, + +{ "addic.", OP(13), OP_MASK, PPCCOM, { RT, RA, SI } }, +{ "ai.", OP(13), OP_MASK, PWRCOM, { RT, RA, SI } }, +{ "subic.", OP(13), OP_MASK, PPCCOM, { RT, RA, NSI } }, + +{ "li", OP(14), DRA_MASK, PPCCOM, { RT, SI } }, +{ "lil", OP(14), DRA_MASK, PWRCOM, { RT, SI } }, +{ "addi", OP(14), OP_MASK, PPCCOM, { RT, RA0, SI } }, +{ "cal", OP(14), OP_MASK, PWRCOM, { RT, D, RA0 } }, +{ "subi", OP(14), OP_MASK, PPCCOM, { RT, RA0, NSI } }, +{ "la", OP(14), OP_MASK, PPCCOM, { RT, D, RA0 } }, + +{ "lis", OP(15), DRA_MASK, PPCCOM, { RT, SISIGNOPT } }, +{ "liu", OP(15), DRA_MASK, PWRCOM, { RT, SISIGNOPT } }, +{ "addis", OP(15), OP_MASK, PPCCOM, { RT,RA0,SISIGNOPT } }, +{ "cau", OP(15), OP_MASK, PWRCOM, { RT,RA0,SISIGNOPT } }, +{ "subis", OP(15), OP_MASK, PPCCOM, { RT, RA0, NSI } }, + +{ "bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BDM } }, +{ "bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BDP } }, +{ "bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BD } }, +{ "bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, { BD } }, +{ "bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BDM } }, +{ "bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BDP } }, +{ "bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BD } }, +{ "bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, { BD } }, +{ "bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDMA } }, +{ "bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDPA } }, +{ "bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDA } }, +{ "bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, { BDA } }, +{ "bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDMA } }, +{ "bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDPA } }, +{ "bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDA } }, +{ "bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, { BDA } }, +{ "bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, { BDM } }, +{ "bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, { BDP } }, +{ "bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, { BD } }, +{ "bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, { BDM } }, +{ "bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, { BDP } }, +{ "bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, { BD } }, +{ "bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, { BDMA } }, +{ "bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, { BDPA } }, +{ "bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, { BDA } }, +{ "bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, { BDMA } }, +{ "bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, { BDPA } }, +{ "bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, { BDA } }, +{ "blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BD } }, +{ "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BD } }, +{ "buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDA } }, +{ "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDA } }, +{ "bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, { CR, BD } }, +{ "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, { CR, BD } }, +{ "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, { CR, BDA } }, +{ "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BD } }, +{ "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, +{ "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, +{ "bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BD } }, +{ "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDA } }, +{ "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, +{ "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, +{ "bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDA } }, +{ "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BDM } }, +{ "bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BDP } }, +{ "bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BD } }, +{ "bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, { BI, BD } }, +{ "btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BDM } }, +{ "btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BDP } }, +{ "btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BD } }, +{ "bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, { BI, BD } }, +{ "bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDMA } }, +{ "bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDPA } }, +{ "bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDA } }, +{ "bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, { BI, BDA } }, +{ "btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDMA } }, +{ "btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDPA } }, +{ "btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDA } }, +{ "bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, { BI, BDA } }, +{ "bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BDM } }, +{ "bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BDP } }, +{ "bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BD } }, +{ "bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, { BI, BD } }, +{ "bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BDM } }, +{ "bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BDP } }, +{ "bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BD } }, +{ "bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, { BI, BD } }, +{ "bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDMA } }, +{ "bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDPA } }, +{ "bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDA } }, +{ "bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, { BI, BDA } }, +{ "bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDMA } }, +{ "bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDPA } }, +{ "bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDA } }, +{ "bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, { BI, BDA } }, +{ "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, +{ "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, +{ "bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, +{ "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, +{ "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, +{ "bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, +{ "bc-", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDM } }, +{ "bc+", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDP } }, +{ "bc", B(16,0,0), B_MASK, COM, { BO, BI, BD } }, +{ "bcl-", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDM } }, +{ "bcl+", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDP } }, +{ "bcl", B(16,0,1), B_MASK, COM, { BO, BI, BD } }, +{ "bca-", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDMA } }, +{ "bca+", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDPA } }, +{ "bca", B(16,1,0), B_MASK, COM, { BO, BI, BDA } }, +{ "bcla-", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDMA } }, +{ "bcla+", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDPA } }, +{ "bcla", B(16,1,1), B_MASK, COM, { BO, BI, BDA } }, + +{ "sc", SC(17,1,0), SC_MASK, PPC, { LEV } }, +{ "svc", SC(17,0,0), SC_MASK, POWER, { SVC_LEV, FL1, FL2 } }, +{ "svcl", SC(17,0,1), SC_MASK, POWER, { SVC_LEV, FL1, FL2 } }, +{ "svca", SC(17,1,0), SC_MASK, PWRCOM, { SV } }, +{ "svcla", SC(17,1,1), SC_MASK, POWER, { SV } }, + +{ "b", B(18,0,0), B_MASK, COM, { LI } }, +{ "bl", B(18,0,1), B_MASK, COM, { LI } }, +{ "ba", B(18,1,0), B_MASK, COM, { LIA } }, +{ "bla", B(18,1,1), B_MASK, COM, { LIA } }, + +{ "mcrf", XL(19,0), XLBB_MASK|(3 << 21)|(3 << 16), COM, { BF, BFA } }, + +{ "blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } }, +{ "br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, { 0 } }, +{ "blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } }, +{ "brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, { 0 } }, +{ "bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } }, +{ "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } }, +{ "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdnzlrl-",XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdnzlrl+",XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } }, +{ "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } }, +{ "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, +{ "bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, +{ "bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, +{ "bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, POWER4, { BI } }, +{ "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, POWER4, { BI } }, +{ "bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, { BI } }, +{ "btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, POWER4, { BI } }, +{ "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, POWER4, { BI } }, +{ "bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, { BI } }, +{ "bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, POWER4, { BI } }, +{ "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, POWER4, { BI } }, +{ "bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, { BI } }, +{ "bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, POWER4, { BI } }, +{ "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, POWER4, { BI } }, +{ "bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, { BI } }, +{ "bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdnztlrl",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdnzflrl",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, { BO, BI, BH } }, +{ "bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, { BO, BI, BH } }, +{ "bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, { BO, BI } }, +{ "bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, { BO, BI } }, +{ "bclre", XLLK(19,17,0), XLBB_MASK, BOOKE64, { BO, BI } }, +{ "bclrel", XLLK(19,17,1), XLBB_MASK, BOOKE64, { BO, BI } }, + +{ "rfid", XL(19,18), 0xffffffff, PPC64, { 0 } }, + +{ "crnot", XL(19,33), XL_MASK, PPCCOM, { BT, BA, BBA } }, +{ "crnor", XL(19,33), XL_MASK, COM, { BT, BA, BB } }, +{ "rfmci", X(19,38), 0xffffffff, PPCRFMCI, { 0 } }, + +{ "rfi", XL(19,50), 0xffffffff, COM, { 0 } }, +{ "rfci", XL(19,51), 0xffffffff, PPC403 | BOOKE, { 0 } }, + +{ "rfsvc", XL(19,82), 0xffffffff, POWER, { 0 } }, + +{ "crandc", XL(19,129), XL_MASK, COM, { BT, BA, BB } }, + +{ "isync", XL(19,150), 0xffffffff, PPCCOM, { 0 } }, +{ "ics", XL(19,150), 0xffffffff, PWRCOM, { 0 } }, + +{ "crclr", XL(19,193), XL_MASK, PPCCOM, { BT, BAT, BBA } }, +{ "crxor", XL(19,193), XL_MASK, COM, { BT, BA, BB } }, + +{ "crnand", XL(19,225), XL_MASK, COM, { BT, BA, BB } }, + +{ "crand", XL(19,257), XL_MASK, COM, { BT, BA, BB } }, + +{ "hrfid", XL(19,274), 0xffffffff, POWER5 | CELL, { 0 } }, + +{ "crset", XL(19,289), XL_MASK, PPCCOM, { BT, BAT, BBA } }, +{ "creqv", XL(19,289), XL_MASK, COM, { BT, BA, BB } }, + +{ "doze", XL(19,402), 0xffffffff, POWER6, { 0 } }, + +{ "crorc", XL(19,417), XL_MASK, COM, { BT, BA, BB } }, + +{ "nap", XL(19,434), 0xffffffff, POWER6, { 0 } }, + +{ "crmove", XL(19,449), XL_MASK, PPCCOM, { BT, BA, BBA } }, +{ "cror", XL(19,449), XL_MASK, COM, { BT, BA, BB } }, + +{ "sleep", XL(19,466), 0xffffffff, POWER6, { 0 } }, +{ "rvwinkle", XL(19,498), 0xffffffff, POWER6, { 0 } }, + +{ "bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, { 0 } }, +{ "bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, { 0 } }, +{ "bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, +{ "bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, +{ "bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, +{ "btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, POWER4, { BI } }, +{ "btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, POWER4, { BI } }, +{ "btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, POWER4, { BI } }, +{ "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, POWER4, { BI } }, +{ "bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, POWER4, { BI } }, +{ "bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, POWER4, { BI } }, +{ "bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, { BI } }, +{ "bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, POWER4, { BI } }, +{ "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, +{ "bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, POWER4, { BI } }, +{ "bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, +{ "bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, { BO, BI, BH } }, +{ "bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, { BO, BI, BH } }, +{ "bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, { BO, BI } }, +{ "bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, { BO, BI } }, +{ "bcctre", XLLK(19,529,0), XLBB_MASK, BOOKE64, { BO, BI } }, +{ "bcctrel", XLLK(19,529,1), XLBB_MASK, BOOKE64, { BO, BI } }, + +{ "rlwimi", M(20,0), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, +{ "rlimi", M(20,0), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, + +{ "rlwimi.", M(20,1), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, +{ "rlimi.", M(20,1), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, + +{ "rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, { RA, RS, SH } }, +{ "clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, { RA, RS, MB } }, +{ "rlwinm", M(21,0), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, +{ "rlinm", M(21,0), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, +{ "rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, { RA,RS,SH } }, +{ "clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, { RA, RS, MB } }, +{ "rlwinm.", M(21,1), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, +{ "rlinm.", M(21,1), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, + +{ "rlmi", M(22,0), M_MASK, M601, { RA,RS,RB,MBE,ME } }, +{ "rlmi.", M(22,1), M_MASK, M601, { RA,RS,RB,MBE,ME } }, + +{ "be", B(22,0,0), B_MASK, BOOKE64, { LI } }, +{ "bel", B(22,0,1), B_MASK, BOOKE64, { LI } }, +{ "bea", B(22,1,0), B_MASK, BOOKE64, { LIA } }, +{ "bela", B(22,1,1), B_MASK, BOOKE64, { LIA } }, + +{ "rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, { RA, RS, RB } }, +{ "rlwnm", M(23,0), M_MASK, PPCCOM, { RA,RS,RB,MBE,ME } }, +{ "rlnm", M(23,0), M_MASK, PWRCOM, { RA,RS,RB,MBE,ME } }, +{ "rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, { RA, RS, RB } }, +{ "rlwnm.", M(23,1), M_MASK, PPCCOM, { RA,RS,RB,MBE,ME } }, +{ "rlnm.", M(23,1), M_MASK, PWRCOM, { RA,RS,RB,MBE,ME } }, + +{ "nop", OP(24), 0xffffffff, PPCCOM, { 0 } }, +{ "ori", OP(24), OP_MASK, PPCCOM, { RA, RS, UI } }, +{ "oril", OP(24), OP_MASK, PWRCOM, { RA, RS, UI } }, + +{ "oris", OP(25), OP_MASK, PPCCOM, { RA, RS, UI } }, +{ "oriu", OP(25), OP_MASK, PWRCOM, { RA, RS, UI } }, + +{ "xori", OP(26), OP_MASK, PPCCOM, { RA, RS, UI } }, +{ "xoril", OP(26), OP_MASK, PWRCOM, { RA, RS, UI } }, + +{ "xoris", OP(27), OP_MASK, PPCCOM, { RA, RS, UI } }, +{ "xoriu", OP(27), OP_MASK, PWRCOM, { RA, RS, UI } }, + +{ "andi.", OP(28), OP_MASK, PPCCOM, { RA, RS, UI } }, +{ "andil.", OP(28), OP_MASK, PWRCOM, { RA, RS, UI } }, + +{ "andis.", OP(29), OP_MASK, PPCCOM, { RA, RS, UI } }, +{ "andiu.", OP(29), OP_MASK, PWRCOM, { RA, RS, UI } }, + +{ "rotldi", MD(30,0,0), MDMB_MASK, PPC64, { RA, RS, SH6 } }, +{ "clrldi", MD(30,0,0), MDSH_MASK, PPC64, { RA, RS, MB6 } }, +{ "rldicl", MD(30,0,0), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, +{ "rotldi.", MD(30,0,1), MDMB_MASK, PPC64, { RA, RS, SH6 } }, +{ "clrldi.", MD(30,0,1), MDSH_MASK, PPC64, { RA, RS, MB6 } }, +{ "rldicl.", MD(30,0,1), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, + +{ "rldicr", MD(30,1,0), MD_MASK, PPC64, { RA, RS, SH6, ME6 } }, +{ "rldicr.", MD(30,1,1), MD_MASK, PPC64, { RA, RS, SH6, ME6 } }, + +{ "rldic", MD(30,2,0), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, +{ "rldic.", MD(30,2,1), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, + +{ "rldimi", MD(30,3,0), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, +{ "rldimi.", MD(30,3,1), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, + +{ "rotld", MDS(30,8,0), MDSMB_MASK, PPC64, { RA, RS, RB } }, +{ "rldcl", MDS(30,8,0), MDS_MASK, PPC64, { RA, RS, RB, MB6 } }, +{ "rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, { RA, RS, RB } }, +{ "rldcl.", MDS(30,8,1), MDS_MASK, PPC64, { RA, RS, RB, MB6 } }, + +{ "rldcr", MDS(30,9,0), MDS_MASK, PPC64, { RA, RS, RB, ME6 } }, +{ "rldcr.", MDS(30,9,1), MDS_MASK, PPC64, { RA, RS, RB, ME6 } }, + +{ "cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, { OBF, RA, RB } }, +{ "cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, { OBF, RA, RB } }, +{ "cmp", X(31,0), XCMP_MASK, PPC, { BF, L, RA, RB } }, +{ "cmp", X(31,0), XCMPL_MASK, PWRCOM, { BF, RA, RB } }, + +{ "twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, { RA, RB } }, +{ "tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, { RA, RB } }, +{ "teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, { RA, RB } }, +{ "twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, { RA, RB } }, +{ "tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, { RA, RB } }, +{ "trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, { 0 } }, +{ "tw", X(31,4), X_MASK, PPCCOM, { TO, RA, RB } }, +{ "t", X(31,4), X_MASK, PWRCOM, { TO, RA, RB } }, + +{ "subfc", XO(31,8,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sf", XO(31,8,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "subc", XO(31,8,0,0), XO_MASK, PPC, { RT, RB, RA } }, +{ "subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sf.", XO(31,8,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "subc.", XO(31,8,0,1), XO_MASK, PPCCOM, { RT, RB, RA } }, +{ "subfco", XO(31,8,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sfo", XO(31,8,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "subco", XO(31,8,1,0), XO_MASK, PPC, { RT, RB, RA } }, +{ "subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "subco.", XO(31,8,1,1), XO_MASK, PPC, { RT, RB, RA } }, + +{ "mulhdu", XO(31,9,0,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, { RT, RA, RB } }, + +{ "addc", XO(31,10,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "a", XO(31,10,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "addc.", XO(31,10,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "a.", XO(31,10,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "addco", XO(31,10,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "ao", XO(31,10,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "addco.", XO(31,10,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "ao.", XO(31,10,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, + +{ "mulhwu", XO(31,11,0,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "mulhwu.", XO(31,11,0,1), XO_MASK, PPC, { RT, RA, RB } }, + +{ "isellt", X(31,15), X_MASK, PPCISEL, { RT, RA, RB } }, +{ "iselgt", X(31,47), X_MASK, PPCISEL, { RT, RA, RB } }, +{ "iseleq", X(31,79), X_MASK, PPCISEL, { RT, RA, RB } }, +{ "isel", XISEL(31,15), XISEL_MASK, PPCISEL, { RT, RA, RB, CRB } }, + +{ "mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, { RT, FXM } }, +{ "mfcr", X(31,19), XRARB_MASK, NOPOWER4 | COM, { RT } }, +{ "mfcr", X(31,19), XFXFXM_MASK, POWER4, { RT, FXM4 } }, + +{ "lwarx", X(31,20), XEH_MASK, PPC, { RT, RA0, RB, EH } }, + +{ "ldx", X(31,21), X_MASK, PPC64, { RT, RA0, RB } }, + +{ "icbt", X(31,22), X_MASK, BOOKE|PPCE300, { CT, RA, RB } }, +{ "icbt", X(31,262), XRT_MASK, PPC403, { RA, RB } }, + +{ "lwzx", X(31,23), X_MASK, PPCCOM, { RT, RA0, RB } }, +{ "lx", X(31,23), X_MASK, PWRCOM, { RT, RA, RB } }, + +{ "slw", XRC(31,24,0), X_MASK, PPCCOM, { RA, RS, RB } }, +{ "sl", XRC(31,24,0), X_MASK, PWRCOM, { RA, RS, RB } }, +{ "slw.", XRC(31,24,1), X_MASK, PPCCOM, { RA, RS, RB } }, +{ "sl.", XRC(31,24,1), X_MASK, PWRCOM, { RA, RS, RB } }, + +{ "cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, { RA, RS } }, +{ "cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, { RA, RS } }, +{ "cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, { RA, RS } }, +{ "cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, { RA, RS } }, + +{ "sld", XRC(31,27,0), X_MASK, PPC64, { RA, RS, RB } }, +{ "sld.", XRC(31,27,1), X_MASK, PPC64, { RA, RS, RB } }, + +{ "and", XRC(31,28,0), X_MASK, COM, { RA, RS, RB } }, +{ "and.", XRC(31,28,1), X_MASK, COM, { RA, RS, RB } }, + +{ "maskg", XRC(31,29,0), X_MASK, M601, { RA, RS, RB } }, +{ "maskg.", XRC(31,29,1), X_MASK, M601, { RA, RS, RB } }, + +{ "icbte", X(31,30), X_MASK, BOOKE64, { CT, RA, RB } }, + +{ "lwzxe", X(31,31), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, { OBF, RA, RB } }, +{ "cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, { OBF, RA, RB } }, +{ "cmpl", X(31,32), XCMP_MASK, PPC, { BF, L, RA, RB } }, +{ "cmpl", X(31,32), XCMPL_MASK, PWRCOM, { BF, RA, RB } }, + +{ "subf", XO(31,40,0,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "sub", XO(31,40,0,0), XO_MASK, PPC, { RT, RB, RA } }, +{ "subf.", XO(31,40,0,1), XO_MASK, PPC, { RT, RA, RB } }, +{ "sub.", XO(31,40,0,1), XO_MASK, PPC, { RT, RB, RA } }, +{ "subfo", XO(31,40,1,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "subo", XO(31,40,1,0), XO_MASK, PPC, { RT, RB, RA } }, +{ "subfo.", XO(31,40,1,1), XO_MASK, PPC, { RT, RA, RB } }, +{ "subo.", XO(31,40,1,1), XO_MASK, PPC, { RT, RB, RA } }, + +{ "ldux", X(31,53), X_MASK, PPC64, { RT, RAL, RB } }, + +{ "dcbst", X(31,54), XRT_MASK, PPC, { RA, RB } }, + +{ "lwzux", X(31,55), X_MASK, PPCCOM, { RT, RAL, RB } }, +{ "lux", X(31,55), X_MASK, PWRCOM, { RT, RA, RB } }, + +{ "dcbste", X(31,62), XRT_MASK, BOOKE64, { RA, RB } }, + +{ "lwzuxe", X(31,63), X_MASK, BOOKE64, { RT, RAL, RB } }, + +{ "cntlzd", XRC(31,58,0), XRB_MASK, PPC64, { RA, RS } }, +{ "cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, { RA, RS } }, + +{ "andc", XRC(31,60,0), X_MASK, COM, { RA, RS, RB } }, +{ "andc.", XRC(31,60,1), X_MASK, COM, { RA, RS, RB } }, + +{ "tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, { RA, RB } }, +{ "tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, { RA, RB } }, +{ "tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, { RA, RB } }, +{ "tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, { RA, RB } }, +{ "tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, { RA, RB } }, +{ "tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, { RA, RB } }, +{ "tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, { RA, RB } }, +{ "tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, { RA, RB } }, +{ "tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, { RA, RB } }, +{ "tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, { RA, RB } }, +{ "tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, { RA, RB } }, +{ "tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, { RA, RB } }, +{ "tdng", XTO(31,68,TONG), XTO_MASK, PPC64, { RA, RB } }, +{ "tdne", XTO(31,68,TONE), XTO_MASK, PPC64, { RA, RB } }, +{ "td", X(31,68), X_MASK, PPC64, { TO, RA, RB } }, + +{ "mulhd", XO(31,73,0,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "mulhd.", XO(31,73,0,1), XO_MASK, PPC64, { RT, RA, RB } }, + +{ "mulhw", XO(31,75,0,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "mulhw.", XO(31,75,0,1), XO_MASK, PPC, { RT, RA, RB } }, + +{ "dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, { RA, RS, RB } }, +{ "dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, { RA, RS, RB } }, + +{ "mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, { SR, RS } }, + +{ "mfmsr", X(31,83), XRARB_MASK, COM, { RT } }, + +{ "ldarx", X(31,84), XEH_MASK, PPC64, { RT, RA0, RB, EH } }, + +{ "dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, { RA, RB } }, +{ "dcbf", X(31,86), XLRT_MASK, PPC, { RA, RB, L } }, + +{ "lbzx", X(31,87), X_MASK, COM, { RT, RA0, RB } }, + +{ "dcbfe", X(31,94), XRT_MASK, BOOKE64, { RA, RB } }, + +{ "lbzxe", X(31,95), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "neg", XO(31,104,0,0), XORB_MASK, COM, { RT, RA } }, +{ "neg.", XO(31,104,0,1), XORB_MASK, COM, { RT, RA } }, +{ "nego", XO(31,104,1,0), XORB_MASK, COM, { RT, RA } }, +{ "nego.", XO(31,104,1,1), XORB_MASK, COM, { RT, RA } }, + +{ "mul", XO(31,107,0,0), XO_MASK, M601, { RT, RA, RB } }, +{ "mul.", XO(31,107,0,1), XO_MASK, M601, { RT, RA, RB } }, +{ "mulo", XO(31,107,1,0), XO_MASK, M601, { RT, RA, RB } }, +{ "mulo.", XO(31,107,1,1), XO_MASK, M601, { RT, RA, RB } }, + +{ "mtsrdin", X(31,114), XRA_MASK, PPC64, { RS, RB } }, + +{ "clf", X(31,118), XTO_MASK, POWER, { RA, RB } }, + +{ "lbzux", X(31,119), X_MASK, COM, { RT, RAL, RB } }, + +{ "popcntb", X(31,122), XRB_MASK, POWER5, { RA, RS } }, + +{ "not", XRC(31,124,0), X_MASK, COM, { RA, RS, RBS } }, +{ "nor", XRC(31,124,0), X_MASK, COM, { RA, RS, RB } }, +{ "not.", XRC(31,124,1), X_MASK, COM, { RA, RS, RBS } }, +{ "nor.", XRC(31,124,1), X_MASK, COM, { RA, RS, RB } }, + +{ "lwarxe", X(31,126), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "lbzuxe", X(31,127), X_MASK, BOOKE64, { RT, RAL, RB } }, + +{ "wrtee", X(31,131), XRARB_MASK, PPC403 | BOOKE, { RS } }, + +{ "dcbtstls",X(31,134), X_MASK, PPCCHLK, { CT, RA, RB }}, + +{ "subfe", XO(31,136,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sfe", XO(31,136,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, + +{ "adde", XO(31,138,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "ae", XO(31,138,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "adde.", XO(31,138,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "ae.", XO(31,138,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "addeo", XO(31,138,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "aeo", XO(31,138,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, + +{ "dcbtstlse",X(31,142),X_MASK, PPCCHLK64, { CT, RA, RB }}, + +{ "mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, { FXM, RS } }, +{ "mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, { RS }}, +{ "mtcrf", X(31,144), XFXFXM_MASK, COM, { FXM, RS } }, + +{ "mtmsr", X(31,146), XRARB_MASK, COM, { RS } }, + +{ "stdx", X(31,149), X_MASK, PPC64, { RS, RA0, RB } }, + +{ "stwcx.", XRC(31,150,1), X_MASK, PPC, { RS, RA0, RB } }, + +{ "stwx", X(31,151), X_MASK, PPCCOM, { RS, RA0, RB } }, +{ "stx", X(31,151), X_MASK, PWRCOM, { RS, RA, RB } }, + +{ "stwcxe.", XRC(31,158,1), X_MASK, BOOKE64, { RS, RA0, RB } }, + +{ "stwxe", X(31,159), X_MASK, BOOKE64, { RS, RA0, RB } }, + +{ "slq", XRC(31,152,0), X_MASK, M601, { RA, RS, RB } }, +{ "slq.", XRC(31,152,1), X_MASK, M601, { RA, RS, RB } }, + +{ "sle", XRC(31,153,0), X_MASK, M601, { RA, RS, RB } }, +{ "sle.", XRC(31,153,1), X_MASK, M601, { RA, RS, RB } }, + +{ "prtyw", X(31,154), XRB_MASK, POWER6, { RA, RS } }, + +{ "wrteei", X(31,163), XE_MASK, PPC403 | BOOKE, { E } }, + +{ "dcbtls", X(31,166), X_MASK, PPCCHLK, { CT, RA, RB }}, +{ "dcbtlse", X(31,174), X_MASK, PPCCHLK64, { CT, RA, RB }}, + +{ "mtmsrd", X(31,178), XRLARB_MASK, PPC64, { RS, A_L } }, + +{ "stdux", X(31,181), X_MASK, PPC64, { RS, RAS, RB } }, + +{ "stwux", X(31,183), X_MASK, PPCCOM, { RS, RAS, RB } }, +{ "stux", X(31,183), X_MASK, PWRCOM, { RS, RA0, RB } }, + +{ "sliq", XRC(31,184,0), X_MASK, M601, { RA, RS, SH } }, +{ "sliq.", XRC(31,184,1), X_MASK, M601, { RA, RS, SH } }, + +{ "prtyd", X(31,186), XRB_MASK, POWER6, { RA, RS } }, + +{ "stwuxe", X(31,191), X_MASK, BOOKE64, { RS, RAS, RB } }, + +{ "subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, { RT, RA } }, +{ "subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "subfzeo.",XO(31,200,1,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, { RT, RA } }, + +{ "addze", XO(31,202,0,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "aze", XO(31,202,0,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, { RT, RA } }, +{ "addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, { RT, RA } }, + +{ "mtsr", X(31,210), XRB_MASK|(1<<20), COM32, { SR, RS } }, + +{ "stdcx.", XRC(31,214,1), X_MASK, PPC64, { RS, RA0, RB } }, + +{ "stbx", X(31,215), X_MASK, COM, { RS, RA0, RB } }, + +{ "sllq", XRC(31,216,0), X_MASK, M601, { RA, RS, RB } }, +{ "sllq.", XRC(31,216,1), X_MASK, M601, { RA, RS, RB } }, + +{ "sleq", XRC(31,217,0), X_MASK, M601, { RA, RS, RB } }, +{ "sleq.", XRC(31,217,1), X_MASK, M601, { RA, RS, RB } }, + +{ "stbxe", X(31,223), X_MASK, BOOKE64, { RS, RA0, RB } }, + +{ "icblc", X(31,230), X_MASK, PPCCHLK, { CT, RA, RB }}, + +{ "subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, { RT, RA } }, +{ "subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "subfmeo.",XO(31,232,1,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, { RT, RA } }, + +{ "mulld", XO(31,233,0,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "mulld.", XO(31,233,0,1), XO_MASK, PPC64, { RT, RA, RB } }, +{ "mulldo", XO(31,233,1,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "mulldo.", XO(31,233,1,1), XO_MASK, PPC64, { RT, RA, RB } }, + +{ "addme", XO(31,234,0,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "ame", XO(31,234,0,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, { RT, RA } }, +{ "addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, { RT, RA } }, +{ "ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, { RT, RA } }, +{ "addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, { RT, RA } }, +{ "ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, { RT, RA } }, + +{ "mullw", XO(31,235,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "muls", XO(31,235,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "muls.", XO(31,235,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "mulso", XO(31,235,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, + +{ "icblce", X(31,238), X_MASK, PPCCHLK64, { CT, RA, RB }}, +{ "mtsrin", X(31,242), XRA_MASK, PPC32, { RS, RB } }, +{ "mtsri", X(31,242), XRA_MASK, POWER32, { RS, RB } }, + +{ "dcbtst", X(31,246), X_MASK, PPC, { CT, RA, RB } }, + +{ "stbux", X(31,247), X_MASK, COM, { RS, RAS, RB } }, + +{ "slliq", XRC(31,248,0), X_MASK, M601, { RA, RS, SH } }, +{ "slliq.", XRC(31,248,1), X_MASK, M601, { RA, RS, SH } }, + +{ "dcbtste", X(31,253), X_MASK, BOOKE64, { CT, RA, RB } }, + +{ "stbuxe", X(31,255), X_MASK, BOOKE64, { RS, RAS, RB } }, + +{ "mfdcrx", X(31,259), X_MASK, BOOKE, { RS, RA } }, + +{ "doz", XO(31,264,0,0), XO_MASK, M601, { RT, RA, RB } }, +{ "doz.", XO(31,264,0,1), XO_MASK, M601, { RT, RA, RB } }, +{ "dozo", XO(31,264,1,0), XO_MASK, M601, { RT, RA, RB } }, +{ "dozo.", XO(31,264,1,1), XO_MASK, M601, { RT, RA, RB } }, + +{ "add", XO(31,266,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "cax", XO(31,266,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "add.", XO(31,266,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "cax.", XO(31,266,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "addo", XO(31,266,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "caxo", XO(31,266,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, +{ "addo.", XO(31,266,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, +{ "caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, + +{ "tlbiel", X(31,274), XRTLRA_MASK, POWER4, { RB, L } }, + +{ "mfapidi", X(31,275), X_MASK, BOOKE, { RT, RA } }, + +{ "lscbx", XRC(31,277,0), X_MASK, M601, { RT, RA, RB } }, +{ "lscbx.", XRC(31,277,1), X_MASK, M601, { RT, RA, RB } }, + +{ "dcbt", X(31,278), X_MASK, PPC, { CT, RA, RB } }, + +{ "lhzx", X(31,279), X_MASK, COM, { RT, RA0, RB } }, + +{ "eqv", XRC(31,284,0), X_MASK, COM, { RA, RS, RB } }, +{ "eqv.", XRC(31,284,1), X_MASK, COM, { RA, RS, RB } }, + +{ "dcbte", X(31,286), X_MASK, BOOKE64, { CT, RA, RB } }, + +{ "lhzxe", X(31,287), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "tlbie", X(31,306), XRTLRA_MASK, PPC, { RB, L } }, +{ "tlbi", X(31,306), XRT_MASK, POWER, { RA0, RB } }, + +{ "eciwx", X(31,310), X_MASK, PPC, { RT, RA, RB } }, + +{ "lhzux", X(31,311), X_MASK, COM, { RT, RAL, RB } }, + +{ "xor", XRC(31,316,0), X_MASK, COM, { RA, RS, RB } }, +{ "xor.", XRC(31,316,1), X_MASK, COM, { RA, RS, RB } }, + +{ "lhzuxe", X(31,319), X_MASK, BOOKE64, { RT, RAL, RB } }, + +{ "mfexisr", XSPR(31,323,64), XSPR_MASK, PPC403, { RT } }, +{ "mfexier", XSPR(31,323,66), XSPR_MASK, PPC403, { RT } }, +{ "mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, { RT } }, +{ "mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, { RT } }, +{ "mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, { RT } }, +{ "mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, { RT } }, +{ "mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, { RT } }, +{ "mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, { RT } }, +{ "mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, { RT } }, +{ "mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, { RT } }, +{ "mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, { RT } }, +{ "mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, { RT } }, +{ "mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, { RT } }, +{ "mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, { RT } }, +{ "mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, { RT } }, +{ "mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, { RT } }, +{ "mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, { RT } }, +{ "mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, { RT } }, +{ "mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, { RT } }, +{ "mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, { RT } }, +{ "mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, { RT } }, +{ "mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, { RT } }, +{ "mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, { RT } }, +{ "mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, { RT } }, +{ "mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, { RT } }, +{ "mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, { RT } }, +{ "mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, { RT } }, +{ "mfdcr", X(31,323), X_MASK, PPC403 | BOOKE, { RT, SPR } }, + +{ "div", XO(31,331,0,0), XO_MASK, M601, { RT, RA, RB } }, +{ "div.", XO(31,331,0,1), XO_MASK, M601, { RT, RA, RB } }, +{ "divo", XO(31,331,1,0), XO_MASK, M601, { RT, RA, RB } }, +{ "divo.", XO(31,331,1,1), XO_MASK, M601, { RT, RA, RB } }, + +{ "mfpmr", X(31,334), X_MASK, PPCPMR, { RT, PMR }}, + +{ "mfmq", XSPR(31,339,0), XSPR_MASK, M601, { RT } }, +{ "mfxer", XSPR(31,339,1), XSPR_MASK, COM, { RT } }, +{ "mfrtcu", XSPR(31,339,4), XSPR_MASK, COM, { RT } }, +{ "mfrtcl", XSPR(31,339,5), XSPR_MASK, COM, { RT } }, +{ "mfdec", XSPR(31,339,6), XSPR_MASK, MFDEC1, { RT } }, +{ "mfdec", XSPR(31,339,22), XSPR_MASK, MFDEC2, { RT } }, +{ "mflr", XSPR(31,339,8), XSPR_MASK, COM, { RT } }, +{ "mfctr", XSPR(31,339,9), XSPR_MASK, COM, { RT } }, +{ "mftid", XSPR(31,339,17), XSPR_MASK, POWER, { RT } }, +{ "mfdsisr", XSPR(31,339,18), XSPR_MASK, COM, { RT } }, +{ "mfdar", XSPR(31,339,19), XSPR_MASK, COM, { RT } }, +{ "mfsdr0", XSPR(31,339,24), XSPR_MASK, POWER, { RT } }, +{ "mfsdr1", XSPR(31,339,25), XSPR_MASK, COM, { RT } }, +{ "mfsrr0", XSPR(31,339,26), XSPR_MASK, COM, { RT } }, +{ "mfsrr1", XSPR(31,339,27), XSPR_MASK, COM, { RT } }, +{ "mfcfar", XSPR(31,339,28), XSPR_MASK, POWER6, { RT } }, +{ "mfpid", XSPR(31,339,48), XSPR_MASK, BOOKE, { RT } }, +{ "mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, { RT } }, +{ "mfcsrr0", XSPR(31,339,58), XSPR_MASK, BOOKE, { RT } }, +{ "mfcsrr1", XSPR(31,339,59), XSPR_MASK, BOOKE, { RT } }, +{ "mfdear", XSPR(31,339,61), XSPR_MASK, BOOKE, { RT } }, +{ "mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, { RT } }, +{ "mfesr", XSPR(31,339,62), XSPR_MASK, BOOKE, { RT } }, +{ "mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, { RT } }, +{ "mfivpr", XSPR(31,339,63), XSPR_MASK, BOOKE, { RT } }, +{ "mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, { RT } }, +{ "mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, { RT } }, +{ "mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, { RT } }, +{ "mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, { RT } }, +{ "mficr", XSPR(31,339,148), XSPR_MASK, PPC860, { RT } }, +{ "mfder", XSPR(31,339,149), XSPR_MASK, PPC860, { RT } }, +{ "mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, { RT } }, +{ "mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, { RT } }, +{ "mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, { RT } }, +{ "mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, { RT } }, +{ "mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, { RT } }, +{ "mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, { RT } }, +{ "mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, { RT } }, +{ "mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, { RT } }, +{ "mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, { RT } }, +{ "mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, { RT } }, +{ "mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, { RT } }, +{ "mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, { RT } }, +{ "mftb", X(31,371), X_MASK, CLASSIC, { RT, TBR } }, +{ "mftb", XSPR(31,339,268), XSPR_MASK, BOOKE, { RT } }, +{ "mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, { RT } }, +{ "mftbl", XSPR(31,339,268), XSPR_MASK, BOOKE, { RT } }, +{ "mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, { RT } }, +{ "mftbu", XSPR(31,339,269), XSPR_MASK, BOOKE, { RT } }, +{ "mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, { RT, SPRG } }, +{ "mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, { RT } }, +{ "mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, { RT } }, +{ "mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, { RT } }, +{ "mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, { RT } }, +{ "mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405 | BOOKE, { RT } }, +{ "mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405 | BOOKE, { RT } }, +{ "mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405 | BOOKE, { RT } }, +{ "mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405 | BOOKE, { RT } }, +{ "mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, { RT } }, +{ "mfear", XSPR(31,339,282), XSPR_MASK, PPC, { RT } }, +{ "mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, { RT } }, +{ "mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, { RT } }, +{ "mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, { RT } }, +{ "mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, { RT } }, +{ "mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, { RT } }, +{ "mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, { RT } }, +{ "mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, { RT } }, +{ "mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, { RT } }, +{ "mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, { RT } }, +{ "mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, { RT } }, +{ "mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, { RT } }, +{ "mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, { RT } }, +{ "mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, { RT } }, +{ "mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, { RT } }, +{ "mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, { RT } }, +{ "mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, { RT } }, +{ "mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, { RT } }, +{ "mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, { RT } }, +{ "mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, { RT } }, +{ "mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, { RT } }, +{ "mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, { RT } }, +{ "mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, { RT } }, +{ "mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, { RT } }, +{ "mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, { RT } }, +{ "mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, { RT } }, +{ "mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, { RT } }, +{ "mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, { RT } }, +{ "mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, { RT } }, +{ "mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, { RT } }, +{ "mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, { RT } }, +{ "mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, { RT } }, +{ "mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, { RT } }, +{ "mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, { RT } }, +{ "mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, { RT } }, +{ "mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, { RT } }, +{ "mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, { RT } }, +{ "mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, { RT } }, +{ "mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, { RT } }, +{ "mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, +{ "mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, +{ "mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, +{ "mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, +{ "mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, { RT } }, +{ "mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, { RT } }, +{ "mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, { RT } }, +{ "mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, { RT } }, +{ "mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, { RT } }, +{ "mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, { RT } }, +{ "mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, { RT } }, +{ "mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, { RT } }, +{ "mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, { RT } }, +{ "mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, { RT } }, +{ "mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, { RT } }, +{ "mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, { RT } }, +{ "mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, { RT } }, +{ "mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, { RT } }, +{ "mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_dbram0",XSPR(31,339,817), XSPR_MASK, PPC860, { RT } }, +{ "mfmi_dbram1",XSPR(31,339,818), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_dbram0",XSPR(31,339,825), XSPR_MASK, PPC860, { RT } }, +{ "mfmd_dbram1",XSPR(31,339,826), XSPR_MASK, PPC860, { RT } }, +{ "mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, { RT } }, +{ "mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, { RT } }, +{ "mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, { RT } }, +{ "mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, { RT } }, +{ "mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, { RT } }, +{ "mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, { RT } }, +{ "mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, { RT } }, +{ "mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, { RT } }, +{ "mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, { RT } }, +{ "mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, { RT } }, +{ "mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, { RT } }, +{ "mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, { RT } }, +{ "mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, { RT } }, +{ "mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, { RT } }, +{ "mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, { RT } }, +{ "mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, { RT } }, +{ "mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, { RT } }, +{ "mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, { RT } }, +{ "mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, { RT } }, +{ "mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, { RT } }, +{ "mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, { RT } }, +{ "mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, { RT } }, +{ "mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, { RT } }, +{ "mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, { RT } }, +{ "mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, { RT } }, +{ "mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, { RT } }, +{ "mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, { RT } }, +{ "mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, { RT } }, +{ "mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, { RT } }, +{ "mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, { RT } }, +{ "mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, { RT } }, +{ "mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, { RT } }, +{ "mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, { RT } }, +{ "mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, { RT } }, +{ "mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, { RT } }, +{ "mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, { RT } }, +{ "mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, { RT } }, +{ "mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, { RT } }, +{ "mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, { RT } }, +{ "mfspr", X(31,339), X_MASK, COM, { RT, SPR } }, + +{ "lwax", X(31,341), X_MASK, PPC64, { RT, RA0, RB } }, + +{ "dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, +{ "dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, + +{ "lhax", X(31,343), X_MASK, COM, { RT, RA0, RB } }, + +{ "lhaxe", X(31,351), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, +{ "dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, + +{ "dccci", X(31,454), XRT_MASK, PPC403|PPC440, { RA, RB } }, + +{ "abs", XO(31,360,0,0), XORB_MASK, M601, { RT, RA } }, +{ "abs.", XO(31,360,0,1), XORB_MASK, M601, { RT, RA } }, +{ "abso", XO(31,360,1,0), XORB_MASK, M601, { RT, RA } }, +{ "abso.", XO(31,360,1,1), XORB_MASK, M601, { RT, RA } }, + +{ "divs", XO(31,363,0,0), XO_MASK, M601, { RT, RA, RB } }, +{ "divs.", XO(31,363,0,1), XO_MASK, M601, { RT, RA, RB } }, +{ "divso", XO(31,363,1,0), XO_MASK, M601, { RT, RA, RB } }, +{ "divso.", XO(31,363,1,1), XO_MASK, M601, { RT, RA, RB } }, + +{ "tlbia", X(31,370), 0xffffffff, PPC, { 0 } }, + +{ "lwaux", X(31,373), X_MASK, PPC64, { RT, RAL, RB } }, + +{ "lhaux", X(31,375), X_MASK, COM, { RT, RAL, RB } }, + +{ "lhauxe", X(31,383), X_MASK, BOOKE64, { RT, RAL, RB } }, + +{ "mtdcrx", X(31,387), X_MASK, BOOKE, { RA, RS } }, + +{ "dcblc", X(31,390), X_MASK, PPCCHLK, { CT, RA, RB }}, + +{ "subfe64", XO(31,392,0,0), XO_MASK, BOOKE64, { RT, RA, RB } }, +{ "subfe64o",XO(31,392,1,0), XO_MASK, BOOKE64, { RT, RA, RB } }, + +{ "adde64", XO(31,394,0,0), XO_MASK, BOOKE64, { RT, RA, RB } }, +{ "adde64o", XO(31,394,1,0), XO_MASK, BOOKE64, { RT, RA, RB } }, + +{ "dcblce", X(31,398), X_MASK, PPCCHLK64, { CT, RA, RB }}, + +{ "slbmte", X(31,402), XRA_MASK, PPC64, { RS, RB } }, + +{ "sthx", X(31,407), X_MASK, COM, { RS, RA0, RB } }, + +{ "cmpb", X(31,508), X_MASK, POWER6, { RA, RS, RB } }, + +{ "lfqx", X(31,791), X_MASK, POWER2, { FRT, RA, RB } }, + +{ "lfdpx", X(31,791), X_MASK, POWER6, { FRT, RA, RB } }, + +{ "lfqux", X(31,823), X_MASK, POWER2, { FRT, RA, RB } }, + +{ "stfqx", X(31,919), X_MASK, POWER2, { FRS, RA, RB } }, + +{ "stfdpx", X(31,919), X_MASK, POWER6, { FRS, RA, RB } }, + +{ "stfqux", X(31,951), X_MASK, POWER2, { FRS, RA, RB } }, + +{ "orc", XRC(31,412,0), X_MASK, COM, { RA, RS, RB } }, +{ "orc.", XRC(31,412,1), X_MASK, COM, { RA, RS, RB } }, + +{ "sradi", XS(31,413,0), XS_MASK, PPC64, { RA, RS, SH6 } }, +{ "sradi.", XS(31,413,1), XS_MASK, PPC64, { RA, RS, SH6 } }, + +{ "sthxe", X(31,415), X_MASK, BOOKE64, { RS, RA0, RB } }, + +{ "slbie", X(31,434), XRTRA_MASK, PPC64, { RB } }, + +{ "ecowx", X(31,438), X_MASK, PPC, { RT, RA, RB } }, + +{ "sthux", X(31,439), X_MASK, COM, { RS, RAS, RB } }, + +{ "sthuxe", X(31,447), X_MASK, BOOKE64, { RS, RAS, RB } }, + +{ "cctpl", 0x7c210b78, 0xffffffff, CELL, { 0 }}, +{ "cctpm", 0x7c421378, 0xffffffff, CELL, { 0 }}, +{ "cctph", 0x7c631b78, 0xffffffff, CELL, { 0 }}, +{ "db8cyc", 0x7f9ce378, 0xffffffff, CELL, { 0 }}, +{ "db10cyc", 0x7fbdeb78, 0xffffffff, CELL, { 0 }}, +{ "db12cyc", 0x7fdef378, 0xffffffff, CELL, { 0 }}, +{ "db16cyc", 0x7ffffb78, 0xffffffff, CELL, { 0 }}, +{ "mr", XRC(31,444,0), X_MASK, COM, { RA, RS, RBS } }, +{ "or", XRC(31,444,0), X_MASK, COM, { RA, RS, RB } }, +{ "mr.", XRC(31,444,1), X_MASK, COM, { RA, RS, RBS } }, +{ "or.", XRC(31,444,1), X_MASK, COM, { RA, RS, RB } }, + +{ "mtexisr", XSPR(31,451,64), XSPR_MASK, PPC403, { RS } }, +{ "mtexier", XSPR(31,451,66), XSPR_MASK, PPC403, { RS } }, +{ "mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, { RS } }, +{ "mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, { RS } }, +{ "mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, { RS } }, +{ "mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, { RS } }, +{ "mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, { RS } }, +{ "mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, { RS } }, +{ "mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, { RS } }, +{ "mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, { RS } }, +{ "mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, { RS } }, +{ "mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, { RS } }, +{ "mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, { RS } }, +{ "mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, { RS } }, +{ "mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, { RS } }, +{ "mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, { RS } }, +{ "mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, { RS } }, +{ "mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, { RS } }, +{ "mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, { RS } }, +{ "mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, { RS } }, +{ "mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, { RS } }, +{ "mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, { RS } }, +{ "mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, { RS } }, +{ "mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, { RS } }, +{ "mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, { RS } }, +{ "mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, { RS } }, +{ "mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, { RS } }, +{ "mtdcr", X(31,451), X_MASK, PPC403 | BOOKE, { SPR, RS } }, + +{ "subfze64",XO(31,456,0,0), XORB_MASK, BOOKE64, { RT, RA } }, +{ "subfze64o",XO(31,456,1,0), XORB_MASK, BOOKE64, { RT, RA } }, + +{ "divdu", XO(31,457,0,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "divdu.", XO(31,457,0,1), XO_MASK, PPC64, { RT, RA, RB } }, +{ "divduo", XO(31,457,1,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "divduo.", XO(31,457,1,1), XO_MASK, PPC64, { RT, RA, RB } }, + +{ "addze64", XO(31,458,0,0), XORB_MASK, BOOKE64, { RT, RA } }, +{ "addze64o",XO(31,458,1,0), XORB_MASK, BOOKE64, { RT, RA } }, + +{ "divwu", XO(31,459,0,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "divwu.", XO(31,459,0,1), XO_MASK, PPC, { RT, RA, RB } }, +{ "divwuo", XO(31,459,1,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "divwuo.", XO(31,459,1,1), XO_MASK, PPC, { RT, RA, RB } }, + +{ "mtmq", XSPR(31,467,0), XSPR_MASK, M601, { RS } }, +{ "mtxer", XSPR(31,467,1), XSPR_MASK, COM, { RS } }, +{ "mtlr", XSPR(31,467,8), XSPR_MASK, COM, { RS } }, +{ "mtctr", XSPR(31,467,9), XSPR_MASK, COM, { RS } }, +{ "mttid", XSPR(31,467,17), XSPR_MASK, POWER, { RS } }, +{ "mtdsisr", XSPR(31,467,18), XSPR_MASK, COM, { RS } }, +{ "mtdar", XSPR(31,467,19), XSPR_MASK, COM, { RS } }, +{ "mtrtcu", XSPR(31,467,20), XSPR_MASK, COM, { RS } }, +{ "mtrtcl", XSPR(31,467,21), XSPR_MASK, COM, { RS } }, +{ "mtdec", XSPR(31,467,22), XSPR_MASK, COM, { RS } }, +{ "mtsdr0", XSPR(31,467,24), XSPR_MASK, POWER, { RS } }, +{ "mtsdr1", XSPR(31,467,25), XSPR_MASK, COM, { RS } }, +{ "mtsrr0", XSPR(31,467,26), XSPR_MASK, COM, { RS } }, +{ "mtsrr1", XSPR(31,467,27), XSPR_MASK, COM, { RS } }, +{ "mtcfar", XSPR(31,467,28), XSPR_MASK, POWER6, { RS } }, +{ "mtpid", XSPR(31,467,48), XSPR_MASK, BOOKE, { RS } }, +{ "mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, { RS } }, +{ "mtdecar", XSPR(31,467,54), XSPR_MASK, BOOKE, { RS } }, +{ "mtcsrr0", XSPR(31,467,58), XSPR_MASK, BOOKE, { RS } }, +{ "mtcsrr1", XSPR(31,467,59), XSPR_MASK, BOOKE, { RS } }, +{ "mtdear", XSPR(31,467,61), XSPR_MASK, BOOKE, { RS } }, +{ "mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, { RS } }, +{ "mtesr", XSPR(31,467,62), XSPR_MASK, BOOKE, { RS } }, +{ "mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, { RS } }, +{ "mtivpr", XSPR(31,467,63), XSPR_MASK, BOOKE, { RS } }, +{ "mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, { RS } }, +{ "mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, { RS } }, +{ "mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, { RS } }, +{ "mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, { RS } }, +{ "mticr", XSPR(31,467,148), XSPR_MASK, PPC860, { RS } }, +{ "mtder", XSPR(31,467,149), XSPR_MASK, PPC860, { RS } }, +{ "mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, { RS } }, +{ "mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, { RS } }, +{ "mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, { RS } }, +{ "mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, { RS } }, +{ "mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, { RS } }, +{ "mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, { RS } }, +{ "mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, { RS } }, +{ "mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, { RS } }, +{ "mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, { RS } }, +{ "mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, { RS } }, +{ "mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, { RS } }, +{ "mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, { RS } }, +{ "mtsprg", XSPR(31,467,256), XSPRG_MASK,PPC, { SPRG, RS } }, +{ "mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, { RS } }, +{ "mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, { RS } }, +{ "mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, { RS } }, +{ "mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, { RS } }, +{ "mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405 | BOOKE, { RS } }, +{ "mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405 | BOOKE, { RS } }, +{ "mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405 | BOOKE, { RS } }, +{ "mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405 | BOOKE, { RS } }, +{ "mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, { RS } }, +{ "mtear", XSPR(31,467,282), XSPR_MASK, PPC, { RS } }, +{ "mttbl", XSPR(31,467,284), XSPR_MASK, PPC, { RS } }, +{ "mttbu", XSPR(31,467,285), XSPR_MASK, PPC, { RS } }, +{ "mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, { RS } }, +{ "mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, { RS } }, +{ "mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, { RS } }, +{ "mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, { RS } }, +{ "mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, { RS } }, +{ "mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, { RS } }, +{ "mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, { RS } }, +{ "mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, { RS } }, +{ "mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, { RS } }, +{ "mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, { RS } }, +{ "mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, { RS } }, +{ "mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, { RS } }, +{ "mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, { RS } }, +{ "mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, { RS } }, +{ "mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, { RS } }, +{ "mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, { RS } }, +{ "mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, { RS } }, +{ "mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, { RS } }, +{ "mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, { RS } }, +{ "mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, { RS } }, +{ "mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, { RS } }, +{ "mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, { RS } }, +{ "mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, { RS } }, +{ "mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, { RS } }, +{ "mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, { RS } }, +{ "mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, { RS } }, +{ "mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, { RS } }, +{ "mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, { RS } }, +{ "mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, { RS } }, +{ "mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, { RS } }, +{ "mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, { RS } }, +{ "mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, { RS } }, +{ "mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, { RS } }, +{ "mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, { RS } }, +{ "mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, { RS } }, +{ "mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, { RS } }, +{ "mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, +{ "mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, +{ "mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, +{ "mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, +{ "mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, { RS } }, +{ "mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, { RS } }, +{ "mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, { RS } }, +{ "mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, { RS } }, +{ "mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, { RS } }, +{ "mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, { RS } }, +{ "mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, { RS } }, +{ "mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, { RS } }, +{ "mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, { RS } }, +{ "mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, { RS } }, +{ "mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, { RS } }, +{ "mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, { RS } }, +{ "mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, { RS } }, +{ "mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, { RS } }, +{ "mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, { RS } }, +{ "mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, { RS } }, +{ "mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, { RS } }, +{ "mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, { RS } }, +{ "mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, { RS } }, +{ "mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, { RS } }, +{ "mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, { RS } }, +{ "mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, { RS } }, +{ "mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, { RS } }, +{ "mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, { RS } }, +{ "mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, { RS } }, +{ "mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, { RS } }, +{ "mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, { RS } }, +{ "mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, { RS } }, +{ "mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, { RS } }, +{ "mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, { RS } }, +{ "mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, { RS } }, +{ "mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, { RS } }, +{ "mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, { RS } }, +{ "mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, { RS } }, +{ "mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, { RS } }, +{ "mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, { RS } }, +{ "mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, { RS } }, +{ "mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, { RS } }, +{ "mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, { RS } }, +{ "mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, { RS } }, +{ "mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, { RS } }, +{ "mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, { RS } }, +{ "mtspr", X(31,467), X_MASK, COM, { SPR, RS } }, + +{ "dcbi", X(31,470), XRT_MASK, PPC, { RA, RB } }, + +{ "nand", XRC(31,476,0), X_MASK, COM, { RA, RS, RB } }, +{ "nand.", XRC(31,476,1), X_MASK, COM, { RA, RS, RB } }, + +{ "dcbie", X(31,478), XRT_MASK, BOOKE64, { RA, RB } }, + +{ "dcread", X(31,486), X_MASK, PPC403|PPC440, { RT, RA, RB }}, + +{ "mtpmr", X(31,462), X_MASK, PPCPMR, { PMR, RS }}, + +{ "icbtls", X(31,486), X_MASK, PPCCHLK, { CT, RA, RB }}, + +{ "nabs", XO(31,488,0,0), XORB_MASK, M601, { RT, RA } }, +{ "subfme64",XO(31,488,0,0), XORB_MASK, BOOKE64, { RT, RA } }, +{ "nabs.", XO(31,488,0,1), XORB_MASK, M601, { RT, RA } }, +{ "nabso", XO(31,488,1,0), XORB_MASK, M601, { RT, RA } }, +{ "subfme64o",XO(31,488,1,0), XORB_MASK, BOOKE64, { RT, RA } }, +{ "nabso.", XO(31,488,1,1), XORB_MASK, M601, { RT, RA } }, + +{ "divd", XO(31,489,0,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "divd.", XO(31,489,0,1), XO_MASK, PPC64, { RT, RA, RB } }, +{ "divdo", XO(31,489,1,0), XO_MASK, PPC64, { RT, RA, RB } }, +{ "divdo.", XO(31,489,1,1), XO_MASK, PPC64, { RT, RA, RB } }, + +{ "addme64", XO(31,490,0,0), XORB_MASK, BOOKE64, { RT, RA } }, +{ "addme64o",XO(31,490,1,0), XORB_MASK, BOOKE64, { RT, RA } }, + +{ "divw", XO(31,491,0,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "divw.", XO(31,491,0,1), XO_MASK, PPC, { RT, RA, RB } }, +{ "divwo", XO(31,491,1,0), XO_MASK, PPC, { RT, RA, RB } }, +{ "divwo.", XO(31,491,1,1), XO_MASK, PPC, { RT, RA, RB } }, + +{ "icbtlse", X(31,494), X_MASK, PPCCHLK64, { CT, RA, RB }}, + +{ "slbia", X(31,498), 0xffffffff, PPC64, { 0 } }, + +{ "cli", X(31,502), XRB_MASK, POWER, { RT, RA } }, + +{ "stdcxe.", XRC(31,511,1), X_MASK, BOOKE64, { RS, RA, RB } }, + +{ "mcrxr", X(31,512), XRARB_MASK|(3<<21), COM, { BF } }, + +{ "bblels", X(31,518), X_MASK, PPCBRLK, { 0 }}, +{ "mcrxr64", X(31,544), XRARB_MASK|(3<<21), BOOKE64, { BF } }, + +{ "clcs", X(31,531), XRB_MASK, M601, { RT, RA } }, + +{ "ldbrx", X(31,532), X_MASK, CELL, { RT, RA0, RB } }, + +{ "lswx", X(31,533), X_MASK, PPCCOM, { RT, RA0, RB } }, +{ "lsx", X(31,533), X_MASK, PWRCOM, { RT, RA, RB } }, + +{ "lwbrx", X(31,534), X_MASK, PPCCOM, { RT, RA0, RB } }, +{ "lbrx", X(31,534), X_MASK, PWRCOM, { RT, RA, RB } }, + +{ "lfsx", X(31,535), X_MASK, COM, { FRT, RA0, RB } }, + +{ "srw", XRC(31,536,0), X_MASK, PPCCOM, { RA, RS, RB } }, +{ "sr", XRC(31,536,0), X_MASK, PWRCOM, { RA, RS, RB } }, +{ "srw.", XRC(31,536,1), X_MASK, PPCCOM, { RA, RS, RB } }, +{ "sr.", XRC(31,536,1), X_MASK, PWRCOM, { RA, RS, RB } }, + +{ "rrib", XRC(31,537,0), X_MASK, M601, { RA, RS, RB } }, +{ "rrib.", XRC(31,537,1), X_MASK, M601, { RA, RS, RB } }, + +{ "srd", XRC(31,539,0), X_MASK, PPC64, { RA, RS, RB } }, +{ "srd.", XRC(31,539,1), X_MASK, PPC64, { RA, RS, RB } }, + +{ "maskir", XRC(31,541,0), X_MASK, M601, { RA, RS, RB } }, +{ "maskir.", XRC(31,541,1), X_MASK, M601, { RA, RS, RB } }, + +{ "lwbrxe", X(31,542), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "lfsxe", X(31,543), X_MASK, BOOKE64, { FRT, RA0, RB } }, + +{ "bbelr", X(31,550), X_MASK, PPCBRLK, { 0 }}, + +{ "tlbsync", X(31,566), 0xffffffff, PPC, { 0 } }, + +{ "lfsux", X(31,567), X_MASK, COM, { FRT, RAS, RB } }, + +{ "lfsuxe", X(31,575), X_MASK, BOOKE64, { FRT, RAS, RB } }, + +{ "mfsr", X(31,595), XRB_MASK|(1<<20), COM32, { RT, SR } }, + +{ "lswi", X(31,597), X_MASK, PPCCOM, { RT, RA0, NB } }, +{ "lsi", X(31,597), X_MASK, PWRCOM, { RT, RA0, NB } }, + +{ "lwsync", XSYNC(31,598,1), 0xffffffff, PPC, { 0 } }, +{ "ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, { 0 } }, +{ "msync", X(31,598), 0xffffffff, BOOKE, { 0 } }, +{ "sync", X(31,598), XSYNC_MASK, PPCCOM, { LS } }, +{ "dcs", X(31,598), 0xffffffff, PWRCOM, { 0 } }, + +{ "lfdx", X(31,599), X_MASK, COM, { FRT, RA0, RB } }, + +{ "lfdxe", X(31,607), X_MASK, BOOKE64, { FRT, RA0, RB } }, + +{ "mffgpr", XRC(31,607,0), XRA_MASK, POWER6, { FRT, RB } }, + +{ "mfsri", X(31,627), X_MASK, PWRCOM, { RT, RA, RB } }, + +{ "dclst", X(31,630), XRB_MASK, PWRCOM, { RS, RA } }, + +{ "lfdux", X(31,631), X_MASK, COM, { FRT, RAS, RB } }, + +{ "lfduxe", X(31,639), X_MASK, BOOKE64, { FRT, RAS, RB } }, + +{ "mfsrin", X(31,659), XRA_MASK, PPC32, { RT, RB } }, + +{ "stdbrx", X(31,660), X_MASK, CELL, { RS, RA0, RB } }, + +{ "stswx", X(31,661), X_MASK, PPCCOM, { RS, RA0, RB } }, +{ "stsx", X(31,661), X_MASK, PWRCOM, { RS, RA0, RB } }, + +{ "stwbrx", X(31,662), X_MASK, PPCCOM, { RS, RA0, RB } }, +{ "stbrx", X(31,662), X_MASK, PWRCOM, { RS, RA0, RB } }, + +{ "stfsx", X(31,663), X_MASK, COM, { FRS, RA0, RB } }, + +{ "srq", XRC(31,664,0), X_MASK, M601, { RA, RS, RB } }, +{ "srq.", XRC(31,664,1), X_MASK, M601, { RA, RS, RB } }, + +{ "sre", XRC(31,665,0), X_MASK, M601, { RA, RS, RB } }, +{ "sre.", XRC(31,665,1), X_MASK, M601, { RA, RS, RB } }, + +{ "stwbrxe", X(31,670), X_MASK, BOOKE64, { RS, RA0, RB } }, + +{ "stfsxe", X(31,671), X_MASK, BOOKE64, { FRS, RA0, RB } }, + +{ "stfsux", X(31,695), X_MASK, COM, { FRS, RAS, RB } }, + +{ "sriq", XRC(31,696,0), X_MASK, M601, { RA, RS, SH } }, +{ "sriq.", XRC(31,696,1), X_MASK, M601, { RA, RS, SH } }, + +{ "stfsuxe", X(31,703), X_MASK, BOOKE64, { FRS, RAS, RB } }, + +{ "stswi", X(31,725), X_MASK, PPCCOM, { RS, RA0, NB } }, +{ "stsi", X(31,725), X_MASK, PWRCOM, { RS, RA0, NB } }, + +{ "stfdx", X(31,727), X_MASK, COM, { FRS, RA0, RB } }, + +{ "srlq", XRC(31,728,0), X_MASK, M601, { RA, RS, RB } }, +{ "srlq.", XRC(31,728,1), X_MASK, M601, { RA, RS, RB } }, + +{ "sreq", XRC(31,729,0), X_MASK, M601, { RA, RS, RB } }, +{ "sreq.", XRC(31,729,1), X_MASK, M601, { RA, RS, RB } }, + +{ "stfdxe", X(31,735), X_MASK, BOOKE64, { FRS, RA0, RB } }, + +{ "mftgpr", XRC(31,735,0), XRA_MASK, POWER6, { RT, FRB } }, + +{ "dcba", X(31,758), XRT_MASK, PPC405 | BOOKE, { RA, RB } }, + +{ "stfdux", X(31,759), X_MASK, COM, { FRS, RAS, RB } }, + +{ "srliq", XRC(31,760,0), X_MASK, M601, { RA, RS, SH } }, +{ "srliq.", XRC(31,760,1), X_MASK, M601, { RA, RS, SH } }, + +{ "dcbae", X(31,766), XRT_MASK, BOOKE64, { RA, RB } }, + +{ "stfduxe", X(31,767), X_MASK, BOOKE64, { FRS, RAS, RB } }, + +{ "tlbivax", X(31,786), XRT_MASK, BOOKE, { RA, RB } }, +{ "tlbivaxe",X(31,787), XRT_MASK, BOOKE64, { RA, RB } }, + +{ "lwzcix", X(31,789), X_MASK, POWER6, { RT, RA0, RB } }, + +{ "lhbrx", X(31,790), X_MASK, COM, { RT, RA0, RB } }, + +{ "sraw", XRC(31,792,0), X_MASK, PPCCOM, { RA, RS, RB } }, +{ "sra", XRC(31,792,0), X_MASK, PWRCOM, { RA, RS, RB } }, +{ "sraw.", XRC(31,792,1), X_MASK, PPCCOM, { RA, RS, RB } }, +{ "sra.", XRC(31,792,1), X_MASK, PWRCOM, { RA, RS, RB } }, + +{ "srad", XRC(31,794,0), X_MASK, PPC64, { RA, RS, RB } }, +{ "srad.", XRC(31,794,1), X_MASK, PPC64, { RA, RS, RB } }, + +{ "lhbrxe", X(31,798), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "ldxe", X(31,799), X_MASK, BOOKE64, { RT, RA0, RB } }, +{ "lduxe", X(31,831), X_MASK, BOOKE64, { RT, RA0, RB } }, + +{ "rac", X(31,818), X_MASK, PWRCOM, { RT, RA, RB } }, + +{ "lhzcix", X(31,821), X_MASK, POWER6, { RT, RA0, RB } }, + +{ "dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, { STRM } }, +{ "dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, { 0 } }, + +{ "srawi", XRC(31,824,0), X_MASK, PPCCOM, { RA, RS, SH } }, +{ "srai", XRC(31,824,0), X_MASK, PWRCOM, { RA, RS, SH } }, +{ "srawi.", XRC(31,824,1), X_MASK, PPCCOM, { RA, RS, SH } }, +{ "srai.", XRC(31,824,1), X_MASK, PWRCOM, { RA, RS, SH } }, + +{ "slbmfev", X(31,851), XRA_MASK, PPC64, { RT, RB } }, + +{ "lbzcix", X(31,853), X_MASK, POWER6, { RT, RA0, RB } }, + +{ "mbar", X(31,854), X_MASK, BOOKE, { MO } }, +{ "eieio", X(31,854), 0xffffffff, PPC, { 0 } }, + +{ "lfiwax", X(31,855), X_MASK, POWER6, { FRT, RA0, RB } }, + +{ "ldcix", X(31,885), X_MASK, POWER6, { RT, RA0, RB } }, + +{ "tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE, { RTO, RA, RB } }, +{ "tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE, { RTO, RA, RB } }, +{ "tlbsxe", XRC(31,915,0), X_MASK, BOOKE64, { RTO, RA, RB } }, +{ "tlbsxe.", XRC(31,915,1), X_MASK, BOOKE64, { RTO, RA, RB } }, + +{ "slbmfee", X(31,915), XRA_MASK, PPC64, { RT, RB } }, + +{ "stwcix", X(31,917), X_MASK, POWER6, { RS, RA0, RB } }, + +{ "sthbrx", X(31,918), X_MASK, COM, { RS, RA0, RB } }, + +{ "sraq", XRC(31,920,0), X_MASK, M601, { RA, RS, RB } }, +{ "sraq.", XRC(31,920,1), X_MASK, M601, { RA, RS, RB } }, + +{ "srea", XRC(31,921,0), X_MASK, M601, { RA, RS, RB } }, +{ "srea.", XRC(31,921,1), X_MASK, M601, { RA, RS, RB } }, + +{ "extsh", XRC(31,922,0), XRB_MASK, PPCCOM, { RA, RS } }, +{ "exts", XRC(31,922,0), XRB_MASK, PWRCOM, { RA, RS } }, +{ "extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, { RA, RS } }, +{ "exts.", XRC(31,922,1), XRB_MASK, PWRCOM, { RA, RS } }, + +{ "sthbrxe", X(31,926), X_MASK, BOOKE64, { RS, RA0, RB } }, + +{ "stdxe", X(31,927), X_MASK, BOOKE64, { RS, RA0, RB } }, + +{ "tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, { RT, RA } }, +{ "tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, { RT, RA } }, +{ "tlbre", X(31,946), X_MASK, PPC403|BOOKE, { RSO, RAOPT, SHO } }, + +{ "sthcix", X(31,949), X_MASK, POWER6, { RS, RA0, RB } }, + +{ "sraiq", XRC(31,952,0), X_MASK, M601, { RA, RS, SH } }, +{ "sraiq.", XRC(31,952,1), X_MASK, M601, { RA, RS, SH } }, + +{ "extsb", XRC(31,954,0), XRB_MASK, PPC, { RA, RS} }, +{ "extsb.", XRC(31,954,1), XRB_MASK, PPC, { RA, RS} }, + +{ "stduxe", X(31,959), X_MASK, BOOKE64, { RS, RAS, RB } }, + +{ "iccci", X(31,966), XRT_MASK, PPC403|PPC440, { RA, RB } }, + +{ "tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, { RT, RA } }, +{ "tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, { RT, RA } }, +{ "tlbwe", X(31,978), X_MASK, PPC403|BOOKE, { RSO, RAOPT, SHO } }, +{ "tlbld", X(31,978), XRTRA_MASK, PPC, { RB } }, + +{ "stbcix", X(31,981), X_MASK, POWER6, { RS, RA0, RB } }, + +{ "icbi", X(31,982), XRT_MASK, PPC, { RA, RB } }, + +{ "stfiwx", X(31,983), X_MASK, PPC, { FRS, RA0, RB } }, + +{ "extsw", XRC(31,986,0), XRB_MASK, PPC64 | BOOKE64,{ RA, RS } }, +{ "extsw.", XRC(31,986,1), XRB_MASK, PPC64, { RA, RS } }, + +{ "icread", X(31,998), XRT_MASK, PPC403|PPC440, { RA, RB } }, + +{ "icbie", X(31,990), XRT_MASK, BOOKE64, { RA, RB } }, +{ "stfiwxe", X(31,991), X_MASK, BOOKE64, { FRS, RA0, RB } }, + +{ "tlbli", X(31,1010), XRTRA_MASK, PPC, { RB } }, + +{ "stdcix", X(31,1013), X_MASK, POWER6, { RS, RA0, RB } }, + +{ "dcbzl", XOPL(31,1014,1), XRT_MASK,POWER4, { RA, RB } }, +{ "dcbz", X(31,1014), XRT_MASK, PPC, { RA, RB } }, +{ "dclz", X(31,1014), XRT_MASK, PPC, { RA, RB } }, + +{ "dcbze", X(31,1022), XRT_MASK, BOOKE64, { RA, RB } }, + +{ "lvebx", X(31, 7), X_MASK, PPCVEC, { VD, RA, RB } }, +{ "lvehx", X(31, 39), X_MASK, PPCVEC, { VD, RA, RB } }, +{ "lvewx", X(31, 71), X_MASK, PPCVEC, { VD, RA, RB } }, +{ "lvsl", X(31, 6), X_MASK, PPCVEC, { VD, RA, RB } }, +{ "lvsr", X(31, 38), X_MASK, PPCVEC, { VD, RA, RB } }, +{ "lvx", X(31, 103), X_MASK, PPCVEC, { VD, RA, RB } }, +{ "lvxl", X(31, 359), X_MASK, PPCVEC, { VD, RA, RB } }, +{ "stvebx", X(31, 135), X_MASK, PPCVEC, { VS, RA, RB } }, +{ "stvehx", X(31, 167), X_MASK, PPCVEC, { VS, RA, RB } }, +{ "stvewx", X(31, 199), X_MASK, PPCVEC, { VS, RA, RB } }, +{ "stvx", X(31, 231), X_MASK, PPCVEC, { VS, RA, RB } }, +{ "stvxl", X(31, 487), X_MASK, PPCVEC, { VS, RA, RB } }, + +/* New load/store left/right index vector instructions that are in the Cell only. */ +{ "lvlx", X(31, 519), X_MASK, CELL, { VD, RA0, RB } }, +{ "lvlxl", X(31, 775), X_MASK, CELL, { VD, RA0, RB } }, +{ "lvrx", X(31, 551), X_MASK, CELL, { VD, RA0, RB } }, +{ "lvrxl", X(31, 807), X_MASK, CELL, { VD, RA0, RB } }, +{ "stvlx", X(31, 647), X_MASK, CELL, { VS, RA0, RB } }, +{ "stvlxl", X(31, 903), X_MASK, CELL, { VS, RA0, RB } }, +{ "stvrx", X(31, 679), X_MASK, CELL, { VS, RA0, RB } }, +{ "stvrxl", X(31, 935), X_MASK, CELL, { VS, RA0, RB } }, + +{ "lwz", OP(32), OP_MASK, PPCCOM, { RT, D, RA0 } }, +{ "l", OP(32), OP_MASK, PWRCOM, { RT, D, RA0 } }, + +{ "lwzu", OP(33), OP_MASK, PPCCOM, { RT, D, RAL } }, +{ "lu", OP(33), OP_MASK, PWRCOM, { RT, D, RA0 } }, + +{ "lbz", OP(34), OP_MASK, COM, { RT, D, RA0 } }, + +{ "lbzu", OP(35), OP_MASK, COM, { RT, D, RAL } }, + +{ "stw", OP(36), OP_MASK, PPCCOM, { RS, D, RA0 } }, +{ "st", OP(36), OP_MASK, PWRCOM, { RS, D, RA0 } }, + +{ "stwu", OP(37), OP_MASK, PPCCOM, { RS, D, RAS } }, +{ "stu", OP(37), OP_MASK, PWRCOM, { RS, D, RA0 } }, + +{ "stb", OP(38), OP_MASK, COM, { RS, D, RA0 } }, + +{ "stbu", OP(39), OP_MASK, COM, { RS, D, RAS } }, + +{ "lhz", OP(40), OP_MASK, COM, { RT, D, RA0 } }, + +{ "lhzu", OP(41), OP_MASK, COM, { RT, D, RAL } }, + +{ "lha", OP(42), OP_MASK, COM, { RT, D, RA0 } }, + +{ "lhau", OP(43), OP_MASK, COM, { RT, D, RAL } }, + +{ "sth", OP(44), OP_MASK, COM, { RS, D, RA0 } }, + +{ "sthu", OP(45), OP_MASK, COM, { RS, D, RAS } }, + +{ "lmw", OP(46), OP_MASK, PPCCOM, { RT, D, RAM } }, +{ "lm", OP(46), OP_MASK, PWRCOM, { RT, D, RA0 } }, + +{ "stmw", OP(47), OP_MASK, PPCCOM, { RS, D, RA0 } }, +{ "stm", OP(47), OP_MASK, PWRCOM, { RS, D, RA0 } }, + +{ "lfs", OP(48), OP_MASK, COM, { FRT, D, RA0 } }, + +{ "lfsu", OP(49), OP_MASK, COM, { FRT, D, RAS } }, + +{ "lfd", OP(50), OP_MASK, COM, { FRT, D, RA0 } }, + +{ "lfdu", OP(51), OP_MASK, COM, { FRT, D, RAS } }, + +{ "stfs", OP(52), OP_MASK, COM, { FRS, D, RA0 } }, + +{ "stfsu", OP(53), OP_MASK, COM, { FRS, D, RAS } }, + +{ "stfd", OP(54), OP_MASK, COM, { FRS, D, RA0 } }, + +{ "stfdu", OP(55), OP_MASK, COM, { FRS, D, RAS } }, + +{ "lq", OP(56), OP_MASK, POWER4, { RTQ, DQ, RAQ } }, + +{ "lfq", OP(56), OP_MASK, POWER2, { FRT, D, RA0 } }, + +{ "lfqu", OP(57), OP_MASK, POWER2, { FRT, D, RA0 } }, + +{ "lfdp", OP(57), OP_MASK, POWER6, { FRT, D, RA0 } }, + +{ "lbze", DEO(58,0), DE_MASK, BOOKE64, { RT, DE, RA0 } }, +{ "lbzue", DEO(58,1), DE_MASK, BOOKE64, { RT, DE, RAL } }, +{ "lhze", DEO(58,2), DE_MASK, BOOKE64, { RT, DE, RA0 } }, +{ "lhzue", DEO(58,3), DE_MASK, BOOKE64, { RT, DE, RAL } }, +{ "lhae", DEO(58,4), DE_MASK, BOOKE64, { RT, DE, RA0 } }, +{ "lhaue", DEO(58,5), DE_MASK, BOOKE64, { RT, DE, RAL } }, +{ "lwze", DEO(58,6), DE_MASK, BOOKE64, { RT, DE, RA0 } }, +{ "lwzue", DEO(58,7), DE_MASK, BOOKE64, { RT, DE, RAL } }, +{ "stbe", DEO(58,8), DE_MASK, BOOKE64, { RS, DE, RA0 } }, +{ "stbue", DEO(58,9), DE_MASK, BOOKE64, { RS, DE, RAS } }, +{ "sthe", DEO(58,10), DE_MASK, BOOKE64, { RS, DE, RA0 } }, +{ "sthue", DEO(58,11), DE_MASK, BOOKE64, { RS, DE, RAS } }, +{ "stwe", DEO(58,14), DE_MASK, BOOKE64, { RS, DE, RA0 } }, +{ "stwue", DEO(58,15), DE_MASK, BOOKE64, { RS, DE, RAS } }, + +{ "ld", DSO(58,0), DS_MASK, PPC64, { RT, DS, RA0 } }, + +{ "ldu", DSO(58,1), DS_MASK, PPC64, { RT, DS, RAL } }, + +{ "lwa", DSO(58,2), DS_MASK, PPC64, { RT, DS, RA0 } }, + +{ "dadd", XRC(59,2,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "dadd.", XRC(59,2,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "dqua", ZRC(59,3,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, +{ "dqua.", ZRC(59,3,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, + +{ "fdivs", A(59,18,0), AFRC_MASK, PPC, { FRT, FRA, FRB } }, +{ "fdivs.", A(59,18,1), AFRC_MASK, PPC, { FRT, FRA, FRB } }, + +{ "fsubs", A(59,20,0), AFRC_MASK, PPC, { FRT, FRA, FRB } }, +{ "fsubs.", A(59,20,1), AFRC_MASK, PPC, { FRT, FRA, FRB } }, + +{ "fadds", A(59,21,0), AFRC_MASK, PPC, { FRT, FRA, FRB } }, +{ "fadds.", A(59,21,1), AFRC_MASK, PPC, { FRT, FRA, FRB } }, + +{ "fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, { FRT, FRB } }, +{ "fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, { FRT, FRB } }, + +{ "fres", A(59,24,0), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, +{ "fres.", A(59,24,1), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, + +{ "fmuls", A(59,25,0), AFRB_MASK, PPC, { FRT, FRA, FRC } }, +{ "fmuls.", A(59,25,1), AFRB_MASK, PPC, { FRT, FRA, FRC } }, + +{ "frsqrtes", A(59,26,0), AFRALFRC_MASK,POWER5, { FRT, FRB, A_L } }, +{ "frsqrtes.",A(59,26,1), AFRALFRC_MASK,POWER5, { FRT, FRB, A_L } }, + +{ "fmsubs", A(59,28,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, +{ "fmsubs.", A(59,28,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, + +{ "fmadds", A(59,29,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, +{ "fmadds.", A(59,29,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, + +{ "fnmsubs", A(59,30,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, +{ "fnmsubs.",A(59,30,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, + +{ "fnmadds", A(59,31,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, +{ "fnmadds.",A(59,31,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, + +{ "dmul", XRC(59,34,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "dmul.", XRC(59,34,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "drrnd", ZRC(59,35,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, +{ "drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, + +{ "dscli", ZRC(59,66,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, +{ "dscli.", ZRC(59,66,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, + +{ "dquai", ZRC(59,67,0), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, +{ "dquai.", ZRC(59,67,1), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, + +{ "dscri", ZRC(59,98,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, +{ "dscri.", ZRC(59,98,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, + +{ "drintx", ZRC(59,99,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, +{ "drintx.", ZRC(59,99,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, + +{ "dcmpo", X(59,130), X_MASK, POWER6, { BF, FRA, FRB } }, + +{ "dtstex", X(59,162), X_MASK, POWER6, { BF, FRA, FRB } }, +{ "dtstdc", Z(59,194), Z_MASK, POWER6, { BF, FRA, DCM } }, +{ "dtstdg", Z(59,226), Z_MASK, POWER6, { BF, FRA, DGM } }, + +{ "drintn", ZRC(59,227,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, +{ "drintn.", ZRC(59,227,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, + +{ "dctdp", XRC(59,258,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dctdp.", XRC(59,258,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "dctfix", XRC(59,290,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dctfix.", XRC(59,290,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "ddedpd", XRC(59,322,0), X_MASK, POWER6, { SP, FRT, FRB } }, +{ "ddedpd.", XRC(59,322,1), X_MASK, POWER6, { SP, FRT, FRB } }, + +{ "dxex", XRC(59,354,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dxex.", XRC(59,354,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "dsub", XRC(59,514,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "dsub.", XRC(59,514,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "ddiv", XRC(59,546,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "ddiv.", XRC(59,546,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "dcmpu", X(59,642), X_MASK, POWER6, { BF, FRA, FRB } }, + +{ "dtstsf", X(59,674), X_MASK, POWER6, { BF, FRA, FRB } }, + +{ "drsp", XRC(59,770,0), X_MASK, POWER6, { FRT, FRB } }, +{ "drsp.", XRC(59,770,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "dcffix", XRC(59,802,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dcffix.", XRC(59,802,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "denbcd", XRC(59,834,0), X_MASK, POWER6, { S, FRT, FRB } }, +{ "denbcd.", XRC(59,834,1), X_MASK, POWER6, { S, FRT, FRB } }, + +{ "diex", XRC(59,866,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "diex.", XRC(59,866,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "stfq", OP(60), OP_MASK, POWER2, { FRS, D, RA } }, + +{ "stfqu", OP(61), OP_MASK, POWER2, { FRS, D, RA } }, + +{ "stfdp", OP(61), OP_MASK, POWER6, { FRT, D, RA0 } }, + +{ "lde", DEO(62,0), DE_MASK, BOOKE64, { RT, DES, RA0 } }, +{ "ldue", DEO(62,1), DE_MASK, BOOKE64, { RT, DES, RA0 } }, +{ "lfse", DEO(62,4), DE_MASK, BOOKE64, { FRT, DES, RA0 } }, +{ "lfsue", DEO(62,5), DE_MASK, BOOKE64, { FRT, DES, RAS } }, +{ "lfde", DEO(62,6), DE_MASK, BOOKE64, { FRT, DES, RA0 } }, +{ "lfdue", DEO(62,7), DE_MASK, BOOKE64, { FRT, DES, RAS } }, +{ "stde", DEO(62,8), DE_MASK, BOOKE64, { RS, DES, RA0 } }, +{ "stdue", DEO(62,9), DE_MASK, BOOKE64, { RS, DES, RAS } }, +{ "stfse", DEO(62,12), DE_MASK, BOOKE64, { FRS, DES, RA0 } }, +{ "stfsue", DEO(62,13), DE_MASK, BOOKE64, { FRS, DES, RAS } }, +{ "stfde", DEO(62,14), DE_MASK, BOOKE64, { FRS, DES, RA0 } }, +{ "stfdue", DEO(62,15), DE_MASK, BOOKE64, { FRS, DES, RAS } }, + +{ "std", DSO(62,0), DS_MASK, PPC64, { RS, DS, RA0 } }, + +{ "stdu", DSO(62,1), DS_MASK, PPC64, { RS, DS, RAS } }, + +{ "stq", DSO(62,2), DS_MASK, POWER4, { RSQ, DS, RA0 } }, + +{ "fcmpu", X(63,0), X_MASK|(3<<21), COM, { BF, FRA, FRB } }, + +{ "daddq", XRC(63,2,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "daddq.", XRC(63,2,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "dquaq", ZRC(63,3,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, +{ "dquaq.", ZRC(63,3,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, + +{ "fcpsgn", XRC(63,8,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "fcpsgn.", XRC(63,8,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "frsp", XRC(63,12,0), XRA_MASK, COM, { FRT, FRB } }, +{ "frsp.", XRC(63,12,1), XRA_MASK, COM, { FRT, FRB } }, + +{ "fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, { FRT, FRB } }, +{ "fcir", XRC(63,14,0), XRA_MASK, POWER2, { FRT, FRB } }, +{ "fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, { FRT, FRB } }, +{ "fcir.", XRC(63,14,1), XRA_MASK, POWER2, { FRT, FRB } }, + +{ "fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, { FRT, FRB } }, +{ "fcirz", XRC(63,15,0), XRA_MASK, POWER2, { FRT, FRB } }, +{ "fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, { FRT, FRB } }, +{ "fcirz.", XRC(63,15,1), XRA_MASK, POWER2, { FRT, FRB } }, + +{ "fdiv", A(63,18,0), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, +{ "fd", A(63,18,0), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, +{ "fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, +{ "fd.", A(63,18,1), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, + +{ "fsub", A(63,20,0), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, +{ "fs", A(63,20,0), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, +{ "fsub.", A(63,20,1), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, +{ "fs.", A(63,20,1), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, + +{ "fadd", A(63,21,0), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, +{ "fa", A(63,21,0), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, +{ "fadd.", A(63,21,1), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, +{ "fa.", A(63,21,1), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, + +{ "fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, { FRT, FRB } }, +{ "fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, { FRT, FRB } }, + +{ "fsel", A(63,23,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, +{ "fsel.", A(63,23,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, + +{ "fre", A(63,24,0), AFRALFRC_MASK, POWER5, { FRT, FRB, A_L } }, +{ "fre.", A(63,24,1), AFRALFRC_MASK, POWER5, { FRT, FRB, A_L } }, + +{ "fmul", A(63,25,0), AFRB_MASK, PPCCOM, { FRT, FRA, FRC } }, +{ "fm", A(63,25,0), AFRB_MASK, PWRCOM, { FRT, FRA, FRC } }, +{ "fmul.", A(63,25,1), AFRB_MASK, PPCCOM, { FRT, FRA, FRC } }, +{ "fm.", A(63,25,1), AFRB_MASK, PWRCOM, { FRT, FRA, FRC } }, + +{ "frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, +{ "frsqrte.",A(63,26,1), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, + +{ "fmsub", A(63,28,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fms", A(63,28,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, +{ "fmsub.", A(63,28,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fms.", A(63,28,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, + +{ "fmadd", A(63,29,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fma", A(63,29,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, +{ "fmadd.", A(63,29,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fma.", A(63,29,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, + +{ "fnmsub", A(63,30,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fnms", A(63,30,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, +{ "fnmsub.", A(63,30,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fnms.", A(63,30,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, + +{ "fnmadd", A(63,31,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fnma", A(63,31,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, +{ "fnmadd.", A(63,31,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, +{ "fnma.", A(63,31,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, + +{ "fcmpo", X(63,32), X_MASK|(3<<21), COM, { BF, FRA, FRB } }, + +{ "dmulq", XRC(63,34,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "dmulq.", XRC(63,34,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "drrndq", ZRC(63,35,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, +{ "drrndq.", ZRC(63,35,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, + +{ "mtfsb1", XRC(63,38,0), XRARB_MASK, COM, { BT } }, +{ "mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, { BT } }, + +{ "fneg", XRC(63,40,0), XRA_MASK, COM, { FRT, FRB } }, +{ "fneg.", XRC(63,40,1), XRA_MASK, COM, { FRT, FRB } }, + +{ "mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, { BF, BFA } }, + +{ "dscliq", ZRC(63,66,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, +{ "dscliq.", ZRC(63,66,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, + +{ "dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, +{ "dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, + +{ "mtfsb0", XRC(63,70,0), XRARB_MASK, COM, { BT } }, +{ "mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, { BT } }, + +{ "fmr", XRC(63,72,0), XRA_MASK, COM, { FRT, FRB } }, +{ "fmr.", XRC(63,72,1), XRA_MASK, COM, { FRT, FRB } }, + +{ "dscriq", ZRC(63,98,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, +{ "dscriq.", ZRC(63,98,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, + +{ "drintxq", ZRC(63,99,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, +{ "drintxq.",ZRC(63,99,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, + +{ "dcmpoq", X(63,130), X_MASK, POWER6, { BF, FRA, FRB } }, + +{ "mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), COM, { BFF, U, W } }, +{ "mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), COM, { BFF, U, W } }, + +{ "fnabs", XRC(63,136,0), XRA_MASK, COM, { FRT, FRB } }, +{ "fnabs.", XRC(63,136,1), XRA_MASK, COM, { FRT, FRB } }, + +{ "dtstexq", X(63,162), X_MASK, POWER6, { BF, FRA, FRB } }, +{ "dtstdcq", Z(63,194), Z_MASK, POWER6, { BF, FRA, DCM } }, +{ "dtstdgq", Z(63,226), Z_MASK, POWER6, { BF, FRA, DGM } }, + +{ "drintnq", ZRC(63,227,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, +{ "drintnq.",ZRC(63,227,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, + +{ "dctqpq", XRC(63,258,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dctqpq.", XRC(63,258,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "fabs", XRC(63,264,0), XRA_MASK, COM, { FRT, FRB } }, +{ "fabs.", XRC(63,264,1), XRA_MASK, COM, { FRT, FRB } }, + +{ "dctfixq", XRC(63,290,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dctfixq.",XRC(63,290,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "ddedpdq", XRC(63,322,0), X_MASK, POWER6, { SP, FRT, FRB } }, +{ "ddedpdq.",XRC(63,322,1), X_MASK, POWER6, { SP, FRT, FRB } }, + +{ "dxexq", XRC(63,354,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dxexq.", XRC(63,354,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "frin", XRC(63,392,0), XRA_MASK, POWER5, { FRT, FRB } }, +{ "frin.", XRC(63,392,1), XRA_MASK, POWER5, { FRT, FRB } }, +{ "friz", XRC(63,424,0), XRA_MASK, POWER5, { FRT, FRB } }, +{ "friz.", XRC(63,424,1), XRA_MASK, POWER5, { FRT, FRB } }, +{ "frip", XRC(63,456,0), XRA_MASK, POWER5, { FRT, FRB } }, +{ "frip.", XRC(63,456,1), XRA_MASK, POWER5, { FRT, FRB } }, +{ "frim", XRC(63,488,0), XRA_MASK, POWER5, { FRT, FRB } }, +{ "frim.", XRC(63,488,1), XRA_MASK, POWER5, { FRT, FRB } }, + +{ "dsubq", XRC(63,514,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "dsubq.", XRC(63,514,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "ddivq", XRC(63,546,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "ddivq.", XRC(63,546,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +{ "mffs", XRC(63,583,0), XRARB_MASK, COM, { FRT } }, +{ "mffs.", XRC(63,583,1), XRARB_MASK, COM, { FRT } }, + +{ "dcmpuq", X(63,642), X_MASK, POWER6, { BF, FRA, FRB } }, + +{ "dtstsfq", X(63,674), X_MASK, POWER6, { BF, FRA, FRB } }, + +{ "mtfsf", XFL(63,711,0), XFL_MASK, COM, { FLM, FRB, XFL_L, W } }, +{ "mtfsf.", XFL(63,711,1), XFL_MASK, COM, { FLM, FRB, XFL_L, W } }, + +{ "drdpq", XRC(63,770,0), X_MASK, POWER6, { FRT, FRB } }, +{ "drdpq.", XRC(63,770,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "dcffixq", XRC(63,802,0), X_MASK, POWER6, { FRT, FRB } }, +{ "dcffixq.",XRC(63,802,1), X_MASK, POWER6, { FRT, FRB } }, + +{ "fctid", XRC(63,814,0), XRA_MASK, PPC64, { FRT, FRB } }, +{ "fctid.", XRC(63,814,1), XRA_MASK, PPC64, { FRT, FRB } }, + +{ "fctidz", XRC(63,815,0), XRA_MASK, PPC64, { FRT, FRB } }, +{ "fctidz.", XRC(63,815,1), XRA_MASK, PPC64, { FRT, FRB } }, + +{ "denbcdq", XRC(63,834,0), X_MASK, POWER6, { S, FRT, FRB } }, +{ "denbcdq.",XRC(63,834,1), X_MASK, POWER6, { S, FRT, FRB } }, + +{ "fcfid", XRC(63,846,0), XRA_MASK, PPC64, { FRT, FRB } }, +{ "fcfid.", XRC(63,846,1), XRA_MASK, PPC64, { FRT, FRB } }, + +{ "diexq", XRC(63,866,0), X_MASK, POWER6, { FRT, FRA, FRB } }, +{ "diexq.", XRC(63,866,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +}; + +const int powerpc_num_opcodes = + sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]); + +/* The macro table. This is only used by the assembler. */ + +/* The expressions of the form (-x ! 31) & (x | 31) have the value 0 + when x=0; 32-x when x is between 1 and 31; are negative if x is + negative; and are 32 or more otherwise. This is what you want + when, for instance, you are emulating a right shift by a + rotate-left-and-mask, because the underlying instructions support + shifts of size 0 but not shifts of size 32. By comparison, when + extracting x bits from some word you want to use just 32-x, because + the underlying instructions don't support extracting 0 bits but do + support extracting the whole word (32 bits in this case). */ + +const struct powerpc_macro powerpc_macros[] = { +{ "extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1" }, +{ "extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1" }, +{ "extrdi", 4, PPC64, "rldicl %0,%1,(%2)+(%3),64-(%2)" }, +{ "extrdi.", 4, PPC64, "rldicl. %0,%1,(%2)+(%3),64-(%2)" }, +{ "insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3" }, +{ "insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3" }, +{ "rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0" }, +{ "rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0" }, +{ "sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)" }, +{ "sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)" }, +{ "srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2" }, +{ "srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2" }, +{ "clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)" }, +{ "clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)" }, +{ "clrlsldi",4, PPC64, "rldic %0,%1,%3,(%2)-(%3)" }, +{ "clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)" }, + +{ "extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1" }, +{ "extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1" }, +{ "extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" }, +{ "extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" }, +{ "inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1" }, +{ "inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"}, +{ "insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1" }, +{ "insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"}, +{ "rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31" }, +{ "rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31" }, +{ "slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)" }, +{ "sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)" }, +{ "slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)" }, +{ "sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)" }, +{ "srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, +{ "sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, +{ "srwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, +{ "sri.", 3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, +{ "clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)" }, +{ "clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)" }, +{ "clrlslwi",4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)" }, +{ "clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)" }, +}; + +const int powerpc_num_macros = + sizeof (powerpc_macros) / sizeof (powerpc_macros[0]); + + +/* This file provides several disassembler functions, all of which use + the disassembler interface defined in dis-asm.h. Several functions + are provided because this file handles disassembly for the PowerPC + in both big and little endian mode and also for the POWER (RS/6000) + chip. */ + +static int print_insn_powerpc (bfd_vma, struct disassemble_info *, int, int); + +/* Determine which set of machines to disassemble for. PPC403/601 or + BookE. For convenience, also disassemble instructions supported + by the AltiVec vector unit. */ + +static int +powerpc_dialect (struct disassemble_info *info) +{ + int dialect = PPC_OPCODE_PPC; + + if (BFD_DEFAULT_TARGET_SIZE == 64) + dialect |= PPC_OPCODE_64; + + if (info->disassembler_options + && strstr (info->disassembler_options, "booke") != NULL) + dialect |= PPC_OPCODE_BOOKE | PPC_OPCODE_BOOKE64; + else if ((info->mach == bfd_mach_ppc_e500) + || (info->disassembler_options + && strstr (info->disassembler_options, "e500") != NULL)) + dialect |= (PPC_OPCODE_BOOKE + | PPC_OPCODE_SPE | PPC_OPCODE_ISEL + | PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK + | PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK + | PPC_OPCODE_RFMCI); + else if (info->disassembler_options + && strstr (info->disassembler_options, "efs") != NULL) + dialect |= PPC_OPCODE_EFS; + else if (info->disassembler_options + && strstr (info->disassembler_options, "e300") != NULL) + dialect |= PPC_OPCODE_E300 | PPC_OPCODE_CLASSIC | PPC_OPCODE_COMMON; + else if (info->disassembler_options + && strstr (info->disassembler_options, "440") != NULL) + dialect |= PPC_OPCODE_BOOKE | PPC_OPCODE_32 + | PPC_OPCODE_440 | PPC_OPCODE_ISEL | PPC_OPCODE_RFMCI; + else + dialect |= (PPC_OPCODE_403 | PPC_OPCODE_601 | PPC_OPCODE_CLASSIC + | PPC_OPCODE_COMMON | PPC_OPCODE_ALTIVEC); + + if (info->disassembler_options + && strstr (info->disassembler_options, "power4") != NULL) + dialect |= PPC_OPCODE_POWER4; + + if (info->disassembler_options + && strstr (info->disassembler_options, "power5") != NULL) + dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5; + + if (info->disassembler_options + && strstr (info->disassembler_options, "cell") != NULL) + dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_CELL | PPC_OPCODE_ALTIVEC; + + if (info->disassembler_options + && strstr (info->disassembler_options, "power6") != NULL) + dialect |= PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_ALTIVEC; + + if (info->disassembler_options + && strstr (info->disassembler_options, "any") != NULL) + dialect |= PPC_OPCODE_ANY; + + if (info->disassembler_options) + { + if (strstr (info->disassembler_options, "32") != NULL) + dialect &= ~PPC_OPCODE_64; + else if (strstr (info->disassembler_options, "64") != NULL) + dialect |= PPC_OPCODE_64; + } + + info->private_data = (char *) 0 + dialect; + return dialect; +} + +/* Qemu default */ +int +print_insn_ppc (bfd_vma memaddr, struct disassemble_info *info) +{ + int dialect = (char *) info->private_data - (char *) 0; + return print_insn_powerpc (memaddr, info, 1, dialect); +} + +/* Print a big endian PowerPC instruction. */ + +int +print_insn_big_powerpc (bfd_vma memaddr, struct disassemble_info *info) +{ + int dialect = (char *) info->private_data - (char *) 0; + return print_insn_powerpc (memaddr, info, 1, dialect); +} + +/* Print a little endian PowerPC instruction. */ + +int +print_insn_little_powerpc (bfd_vma memaddr, struct disassemble_info *info) +{ + int dialect = (char *) info->private_data - (char *) 0; + return print_insn_powerpc (memaddr, info, 0, dialect); +} + +/* Print a POWER (RS/6000) instruction. */ + +int +print_insn_rs6000 (bfd_vma memaddr, struct disassemble_info *info) +{ + return print_insn_powerpc (memaddr, info, 1, PPC_OPCODE_POWER); +} + +/* Extract the operand value from the PowerPC or POWER instruction. */ + +static long +operand_value_powerpc (const struct powerpc_operand *operand, + unsigned long insn, int dialect) +{ + long value; + int invalid; + /* Extract the value from the instruction. */ + if (operand->extract) + value = (*operand->extract) (insn, dialect, &invalid); + else + { + value = (insn >> operand->shift) & operand->bitm; + if ((operand->flags & PPC_OPERAND_SIGNED) != 0) + { + /* BITM is always some number of zeros followed by some + number of ones, followed by some numer of zeros. */ + unsigned long top = operand->bitm; + /* top & -top gives the rightmost 1 bit, so this + fills in any trailing zeros. */ + top |= (top & -top) - 1; + top &= ~(top >> 1); + value = (value ^ top) - top; + } + } + + return value; +} + +/* Determine whether the optional operand(s) should be printed. */ + +static int +skip_optional_operands (const unsigned char *opindex, + unsigned long insn, int dialect) +{ + const struct powerpc_operand *operand; + + for (; *opindex != 0; opindex++) + { + operand = &powerpc_operands[*opindex]; + if ((operand->flags & PPC_OPERAND_NEXT) != 0 + || ((operand->flags & PPC_OPERAND_OPTIONAL) != 0 + && operand_value_powerpc (operand, insn, dialect) != 0)) + return 0; + } + + return 1; +} + +/* Print a PowerPC or POWER instruction. */ + +static int +print_insn_powerpc (bfd_vma memaddr, + struct disassemble_info *info, + int bigendian, + int dialect) +{ + bfd_byte buffer[4]; + int status; + unsigned long insn; + const struct powerpc_opcode *opcode; + const struct powerpc_opcode *opcode_end; + unsigned long op; + + if (dialect == 0) + dialect = powerpc_dialect (info); + + status = (*info->read_memory_func) (memaddr, buffer, 4, info); + if (status != 0) + { + (*info->memory_error_func) (status, memaddr, info); + return -1; + } + + if (bigendian) + insn = bfd_getb32 (buffer); + else + insn = bfd_getl32 (buffer); + + /* Get the major opcode of the instruction. */ + op = PPC_OP (insn); + + /* Find the first match in the opcode table. We could speed this up + a bit by doing a binary search on the major opcode. */ + opcode_end = powerpc_opcodes + powerpc_num_opcodes; + again: + for (opcode = powerpc_opcodes; opcode < opcode_end; opcode++) + { + unsigned long table_op; + const unsigned char *opindex; + const struct powerpc_operand *operand; + int invalid; + int need_comma; + int need_paren; + int skip_optional; + + table_op = PPC_OP (opcode->opcode); + if (op < table_op) + break; + if (op > table_op) + continue; + + if ((insn & opcode->mask) != opcode->opcode + || (opcode->flags & dialect) == 0) + continue; + + /* Make two passes over the operands. First see if any of them + have extraction functions, and, if they do, make sure the + instruction is valid. */ + invalid = 0; + for (opindex = opcode->operands; *opindex != 0; opindex++) + { + operand = powerpc_operands + *opindex; + if (operand->extract) + (*operand->extract) (insn, dialect, &invalid); + } + if (invalid) + continue; + + /* The instruction is valid. */ + if (opcode->operands[0] != 0) + (*info->fprintf_func) (info->stream, "%-7s ", opcode->name); + else + (*info->fprintf_func) (info->stream, "%s", opcode->name); + + /* Now extract and print the operands. */ + need_comma = 0; + need_paren = 0; + skip_optional = -1; + for (opindex = opcode->operands; *opindex != 0; opindex++) + { + long value; + + operand = powerpc_operands + *opindex; + + /* Operands that are marked FAKE are simply ignored. We + already made sure that the extract function considered + the instruction to be valid. */ + if ((operand->flags & PPC_OPERAND_FAKE) != 0) + continue; + + /* If all of the optional operands have the value zero, + then don't print any of them. */ + if ((operand->flags & PPC_OPERAND_OPTIONAL) != 0) + { + if (skip_optional < 0) + skip_optional = skip_optional_operands (opindex, insn, + dialect); + if (skip_optional) + continue; + } + + value = operand_value_powerpc (operand, insn, dialect); + + if (need_comma) + { + (*info->fprintf_func) (info->stream, ","); + need_comma = 0; + } + + /* Print the operand as directed by the flags. */ + if ((operand->flags & PPC_OPERAND_GPR) != 0 + || ((operand->flags & PPC_OPERAND_GPR_0) != 0 && value != 0)) + (*info->fprintf_func) (info->stream, "r%ld", value); + else if ((operand->flags & PPC_OPERAND_FPR) != 0) + (*info->fprintf_func) (info->stream, "f%ld", value); + else if ((operand->flags & PPC_OPERAND_VR) != 0) + (*info->fprintf_func) (info->stream, "v%ld", value); + else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0) + (*info->print_address_func) (memaddr + value, info); + else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0) + (*info->print_address_func) ((bfd_vma) value & 0xffffffff, info); + else if ((operand->flags & PPC_OPERAND_CR) == 0 + || (dialect & PPC_OPCODE_PPC) == 0) + (*info->fprintf_func) (info->stream, "%ld", value); + else + { + if (operand->bitm == 7) + (*info->fprintf_func) (info->stream, "cr%ld", value); + else + { + static const char *cbnames[4] = { "lt", "gt", "eq", "so" }; + int cr; + int cc; + + cr = value >> 2; + if (cr != 0) + (*info->fprintf_func) (info->stream, "4*cr%d+", cr); + cc = value & 3; + (*info->fprintf_func) (info->stream, "%s", cbnames[cc]); + } + } + + if (need_paren) + { + (*info->fprintf_func) (info->stream, ")"); + need_paren = 0; + } + + if ((operand->flags & PPC_OPERAND_PARENS) == 0) + need_comma = 1; + else + { + (*info->fprintf_func) (info->stream, "("); + need_paren = 1; + } + } + + /* We have found and printed an instruction; return. */ + return 4; + } + + if ((dialect & PPC_OPCODE_ANY) != 0) + { + dialect = ~PPC_OPCODE_ANY; + goto again; + } + + /* We could not find a match. */ + (*info->fprintf_func) (info->stream, ".long 0x%lx", insn); + + return 4; +} diff --git a/qemu/qemu-git/ppc.ld b/qemu/qemu-git/ppc.ld new file mode 100644 index 0000000..5248ef1 --- /dev/null +++ b/qemu/qemu-git/ppc.ld @@ -0,0 +1,227 @@ +/* ld script to make i386 Linux kernel + * Written by Martin Mares ; + */ +OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc") +OUTPUT_ARCH(powerpc:common) +ENTRY(_start) +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rela.got1 : { *(.rela.got1) } + .rela.got2 : { *(.rela.got2) } + .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } + .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } + .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } + .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } + .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } + .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } + .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } + .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : + { + KEEP (*(.init)) + } =0 + .text : + { + *(.text .stub .text.* .gnu.linkonce.t.*) + KEEP (*(.text.*personality*)) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.glink) + } =0x47ff041f + .fini : + { + KEEP (*(.fini)) + } =0x47ff041f + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .sdata2 : + { + PROVIDE (_SDA2_BASE_ = 32768); + *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) + } + .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = DATA_SEGMENT_ALIGN (0x10000, 0x1000); + /* Exception handling */ + .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } + /* Thread Local Storage sections */ + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + } + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin*.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin*.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .got1 : { *(.got1) } + .got2 : { *(.got2) } + .dynamic : { *(.dynamic) } + .got : SPECIAL { *(.got) } + . = DATA_SEGMENT_RELRO_END (0, .); + .plt : SPECIAL { *(.plt) } + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + KEEP (*(.gnu.linkonce.d.*personality*)) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .got : SPECIAL { *(.got) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + PROVIDE (_SDA_BASE_ = 32768); + *(.sdata .sdata.* .gnu.linkonce.s.*) + } + _edata = .; PROVIDE (edata = .); + __bss_start = .; + .sbss : + { + PROVIDE (__sbss_start = .); PROVIDE (___sbss_start = .); + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + PROVIDE (__sbss_end = .); PROVIDE (___sbss_end = .); + } + .plt : SPECIAL { *(.plt) } + .bss : + { + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. + FIXME: Why do we need it? When there is no .bss section, we don't + pad the .data section. */ + . = ALIGN(. != 0 ? 32 / 8 : 1); + } + . = ALIGN(32 / 8); + . = ALIGN(32 / 8); + _end = .; PROVIDE (end = .); + . = DATA_SEGMENT_END (.); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ + /DISCARD/ : { *(.fixup) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/qemu/qemu-git/ppc64.ld b/qemu/qemu-git/ppc64.ld new file mode 100644 index 0000000..dea0dbd --- /dev/null +++ b/qemu/qemu-git/ppc64.ld @@ -0,0 +1,220 @@ +/* Script for -z combreloc: combine and sort reloc sections */ +OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", + "elf64-powerpc") +OUTPUT_ARCH(powerpc:common64) +ENTRY(_start) +/* __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + PROVIDE (__executable_start = 0x60000000); . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.dyn : + { + *(.rel.init) + *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) + *(.rel.fini) + *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) + *(.rel.data.rel.ro*) + *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) + *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) + *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) + *(.rel.ctors) + *(.rel.dtors) + *(.rel.got) + *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) + *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) + *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) + *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) + *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) + } + .rela.dyn : + { + *(.rela.init) + *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) + *(.rela.fini) + *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) + *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) + *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) + *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) + *(.rela.ctors) + *(.rela.dtors) + *(.rela.got) + *(.rela.toc) + *(.rela.opd) + *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) + *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) + *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) + *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) + *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) + } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .rela.tocbss : { *(.rela.tocbss) } + .init : + { + KEEP (*(.init)) + } =0x60000000 + .text : + { + *(.text .stub .text.* .gnu.linkonce.t.*) + KEEP (*(.text.*personality*)) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.sfpr .glink) + } =0x60000000 + .fini : + { + KEEP (*(.fini)) + } =0x60000000 + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } + .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) +*(.gcc_except_table.*) } /* Adjust the address for the data segment. We want to +adjust up to + the same address within the page on the next page up. */ + . = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = DATA_SEGMENT_ALIGN +(0x10000, 0x1000); /* Exception handling */ + .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) +*(.gcc_except_table.*) } /* Thread Local Storage sections */ + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + /* Ensure the __preinit_array_start label is properly aligned. We + could instead move the label definition inside the section, but + the linker would then create the section even if it turns out to + be empty, which isn't pretty. */ + . = ALIGN(64 / 8); + PROVIDE (__preinit_array_start = .); + .preinit_array : { KEEP (*(.preinit_array)) } + PROVIDE (__preinit_array_end = .); + PROVIDE (__init_array_start = .); + .init_array : { KEEP (*(.init_array)) } + PROVIDE (__init_array_end = .); + PROVIDE (__fini_array_start = .); + .fini_array : { KEEP (*(.fini_array)) } + PROVIDE (__fini_array_end = .); + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin*.o(.ctors)) + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin*.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } + .dynamic : { *(.dynamic) } + . = DATA_SEGMENT_RELRO_END (0, .); + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + KEEP (*(.gnu.linkonce.d.*personality*)) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .toc1 ALIGN(8) : { *(.toc1) } + .opd ALIGN(8) : { KEEP (*(.opd)) } + .got ALIGN(8) : { *(.got .toc) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata .sdata.* .gnu.linkonce.s.*) + } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .tocbss ALIGN(8) : { *(.tocbss)} + .sbss : + { + PROVIDE (__sbss_start = .); + PROVIDE (___sbss_start = .); + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + PROVIDE (__sbss_end = .); + PROVIDE (___sbss_end = .); + } + .plt : { *(.plt) } + .bss : + { + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. */ + . = ALIGN(64 / 8); + } + . = ALIGN(64 / 8); + _end = .; + PROVIDE (end = .); + . = DATA_SEGMENT_END (.); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/qemu/qemu-git/qemu-common.h b/qemu/qemu-git/qemu-common.h new file mode 100644 index 0000000..8630f8c --- /dev/null +++ b/qemu/qemu-git/qemu-common.h @@ -0,0 +1,275 @@ +/* Common header file that is included by all of qemu. */ +#ifndef QEMU_COMMON_H +#define QEMU_COMMON_H + +#define QEMU_NORETURN __attribute__ ((__noreturn__)) +#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT +#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +#define QEMU_WARN_UNUSED_RESULT +#endif + +/* Hack around the mess dyngen-exec.h causes: We need QEMU_NORETURN in files that + cannot include the following headers without conflicts. This condition has + to be removed once dyngen is gone. */ +#ifndef __DYNGEN_EXEC_H__ + +/* we put basic includes here to avoid repeating them in device drivers */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config-host.h" + +#ifndef O_LARGEFILE +#define O_LARGEFILE 0 +#endif +#ifndef O_BINARY +#define O_BINARY 0 +#endif +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif +#ifndef ENOMEDIUM +#define ENOMEDIUM ENODEV +#endif +#if !defined(ENOTSUP) +#define ENOTSUP 4096 +#endif + +#ifndef CONFIG_IOVEC +#define CONFIG_IOVEC +struct iovec { + void *iov_base; + size_t iov_len; +}; +#else +#include +#endif + +#ifdef _WIN32 +#define fsync _commit +#define lseek _lseeki64 +extern int qemu_ftruncate64(int, int64_t); +#define ftruncate qemu_ftruncate64 + +static inline char *realpath(const char *path, char *resolved_path) +{ + _fullpath(resolved_path, path, _MAX_PATH); + return resolved_path; +} + +#define PRId64 "I64d" +#define PRIx64 "I64x" +#define PRIu64 "I64u" +#define PRIo64 "I64o" +#endif + +/* FIXME: Remove NEED_CPU_H. */ +#ifndef NEED_CPU_H + +#include +#include "osdep.h" +#include "bswap.h" + +#else + +#include "cpu.h" + +#endif /* !defined(NEED_CPU_H) */ + +/* bottom halves */ +typedef struct QEMUBH QEMUBH; + +typedef void QEMUBHFunc(void *opaque); + +void async_context_push(void); +void async_context_pop(void); +int get_async_context_id(void); + +QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque); +void qemu_bh_schedule(QEMUBH *bh); +/* Bottom halfs that are scheduled from a bottom half handler are instantly + * invoked. This can create an infinite loop if a bottom half handler + * schedules itself. qemu_bh_schedule_idle() avoids this infinite loop by + * ensuring that the bottom half isn't executed until the next main loop + * iteration. + */ +void qemu_bh_schedule_idle(QEMUBH *bh); +void qemu_bh_cancel(QEMUBH *bh); +void qemu_bh_delete(QEMUBH *bh); +int qemu_bh_poll(void); +void qemu_bh_update_timeout(int *timeout); + +uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); + +void qemu_get_timedate(struct tm *tm, int offset); +int qemu_timedate_diff(struct tm *tm); + +/* cutils.c */ +void pstrcpy(char *buf, int buf_size, const char *str); +char *pstrcat(char *buf, int buf_size, const char *s); +int strstart(const char *str, const char *val, const char **ptr); +int stristart(const char *str, const char *val, const char **ptr); +int qemu_strnlen(const char *s, int max_len); +time_t mktimegm(struct tm *tm); +int qemu_fls(int i); +int qemu_fdatasync(int fd); + +/* path.c */ +void init_paths(const char *prefix); +const char *path(const char *pathname); + +#define qemu_isalnum(c) isalnum((unsigned char)(c)) +#define qemu_isalpha(c) isalpha((unsigned char)(c)) +#define qemu_iscntrl(c) iscntrl((unsigned char)(c)) +#define qemu_isdigit(c) isdigit((unsigned char)(c)) +#define qemu_isgraph(c) isgraph((unsigned char)(c)) +#define qemu_islower(c) islower((unsigned char)(c)) +#define qemu_isprint(c) isprint((unsigned char)(c)) +#define qemu_ispunct(c) ispunct((unsigned char)(c)) +#define qemu_isspace(c) isspace((unsigned char)(c)) +#define qemu_isupper(c) isupper((unsigned char)(c)) +#define qemu_isxdigit(c) isxdigit((unsigned char)(c)) +#define qemu_tolower(c) tolower((unsigned char)(c)) +#define qemu_toupper(c) toupper((unsigned char)(c)) +#define qemu_isascii(c) isascii((unsigned char)(c)) +#define qemu_toascii(c) toascii((unsigned char)(c)) + +void *qemu_malloc(size_t size); +void *qemu_realloc(void *ptr, size_t size); +void *qemu_mallocz(size_t size); +void qemu_free(void *ptr); +char *qemu_strdup(const char *str); +char *qemu_strndup(const char *str, size_t size); + +void *get_mmap_addr(unsigned long size); + + +void qemu_mutex_lock_iothread(void); +void qemu_mutex_unlock_iothread(void); + +int qemu_open(const char *name, int flags, ...); +void qemu_set_cloexec(int fd); + +#ifndef _WIN32 +int qemu_pipe(int pipefd[2]); +#endif + +/* Error handling. */ + +void QEMU_NORETURN hw_error(const char *fmt, ...) + __attribute__ ((__format__ (__printf__, 1, 2))); + +/* IO callbacks. */ +typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); +typedef int IOCanRWHandler(void *opaque); +typedef void IOHandler(void *opaque); + +struct ParallelIOArg { + void *buffer; + int count; +}; + +typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size); + +/* A load of opaque types so that device init declarations don't have to + pull in all the real definitions. */ +typedef struct NICInfo NICInfo; +typedef struct HCIInfo HCIInfo; +typedef struct AudioState AudioState; +typedef struct BlockDriverState BlockDriverState; +typedef struct DisplayState DisplayState; +typedef struct DisplayChangeListener DisplayChangeListener; +typedef struct DisplaySurface DisplaySurface; +typedef struct DisplayAllocator DisplayAllocator; +typedef struct PixelFormat PixelFormat; +typedef struct TextConsole TextConsole; +typedef TextConsole QEMUConsole; +typedef struct CharDriverState CharDriverState; +typedef struct MACAddr MACAddr; +typedef struct VLANState VLANState; +typedef struct VLANClientState VLANClientState; +typedef struct QEMUFile QEMUFile; +typedef struct i2c_bus i2c_bus; +typedef struct i2c_slave i2c_slave; +typedef struct SMBusDevice SMBusDevice; +typedef struct QEMUTimer QEMUTimer; +typedef struct PCIHostState PCIHostState; +typedef struct PCIExpressHost PCIExpressHost; +typedef struct PCIBus PCIBus; +typedef struct PCIDevice PCIDevice; +typedef struct SerialState SerialState; +typedef struct IRQState *qemu_irq; +typedef struct PCMCIACardState PCMCIACardState; +typedef struct MouseTransformInfo MouseTransformInfo; +typedef struct uWireSlave uWireSlave; +typedef struct I2SCodec I2SCodec; +typedef struct DeviceState DeviceState; +typedef struct SSIBus SSIBus; + +/* CPU save/load. */ +void cpu_save(QEMUFile *f, void *opaque); +int cpu_load(QEMUFile *f, void *opaque, int version_id); + +/* Force QEMU to stop what it's doing and service IO */ +void qemu_service_io(void); + +/* Force QEMU to process pending events */ +void qemu_notify_event(void); + +/* Unblock cpu */ +void qemu_cpu_kick(void *env); +int qemu_cpu_self(void *env); + +#ifdef CONFIG_USER_ONLY +#define qemu_init_vcpu(env) do { } while (0) +#else +void qemu_init_vcpu(void *env); +#endif + +typedef struct QEMUIOVector { + struct iovec *iov; + int niov; + int nalloc; + size_t size; +} QEMUIOVector; + +void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint); +void qemu_iovec_init_external(QEMUIOVector *qiov, struct iovec *iov, int niov); +void qemu_iovec_add(QEMUIOVector *qiov, void *base, size_t len); +void qemu_iovec_concat(QEMUIOVector *dst, QEMUIOVector *src, size_t size); +void qemu_iovec_destroy(QEMUIOVector *qiov); +void qemu_iovec_reset(QEMUIOVector *qiov); +void qemu_iovec_to_buffer(QEMUIOVector *qiov, void *buf); +void qemu_iovec_from_buffer(QEMUIOVector *qiov, const void *buf, size_t count); + +struct Monitor; +typedef struct Monitor Monitor; + +/* Convert a byte between binary and BCD. */ +static inline uint8_t to_bcd(uint8_t val) +{ + return ((val / 10) << 4) | (val % 10); +} + +static inline uint8_t from_bcd(uint8_t val) +{ + return ((val >> 4) * 10) + (val & 0x0f); +} + +#include "module.h" + +#endif /* dyngen-exec.h hack */ + +#endif diff --git a/qemu/qemu-git/qemu-lock.h b/qemu/qemu-git/qemu-lock.h new file mode 100644 index 0000000..9a3e6ac --- /dev/null +++ b/qemu/qemu-git/qemu-lock.h @@ -0,0 +1,247 @@ +/* + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see + */ + +/* Locking primitives. Most of this code should be redundant - + system emulation doesn't need/use locking, NPTL userspace uses + pthread mutexes, and non-NPTL userspace isn't threadsafe anyway. + In either case a spinlock is probably the wrong kind of lock. + Spinlocks are only good if you know annother CPU has the lock and is + likely to release it soon. In environments where you have more threads + than physical CPUs (the extreme case being a single CPU host) a spinlock + simply wastes CPU until the OS decides to preempt it. */ +#if defined(CONFIG_USE_NPTL) + +#include +#define spin_lock pthread_mutex_lock +#define spin_unlock pthread_mutex_unlock +#define spinlock_t pthread_mutex_t +#define SPIN_LOCK_UNLOCKED PTHREAD_MUTEX_INITIALIZER + +#else + +#if defined(__hppa__) + +typedef int spinlock_t[4]; + +#define SPIN_LOCK_UNLOCKED { 1, 1, 1, 1 } + +static inline void resetlock (spinlock_t *p) +{ + (*p)[0] = (*p)[1] = (*p)[2] = (*p)[3] = 1; +} + +#else + +typedef int spinlock_t; + +#define SPIN_LOCK_UNLOCKED 0 + +static inline void resetlock (spinlock_t *p) +{ + *p = SPIN_LOCK_UNLOCKED; +} + +#endif + +#if defined(_ARCH_PPC) +static inline int testandset (int *p) +{ + int ret; + __asm__ __volatile__ ( + " lwarx %0,0,%1\n" + " xor. %0,%3,%0\n" + " bne $+12\n" + " stwcx. %2,0,%1\n" + " bne- $-16\n" + : "=&r" (ret) + : "r" (p), "r" (1), "r" (0) + : "cr0", "memory"); + return ret; +} +#elif defined(__i386__) +static inline int testandset (int *p) +{ + long int readval = 0; + + __asm__ __volatile__ ("lock; cmpxchgl %2, %0" + : "+m" (*p), "+a" (readval) + : "r" (1) + : "cc"); + return readval; +} +#elif defined(__x86_64__) +static inline int testandset (int *p) +{ + long int readval = 0; + + __asm__ __volatile__ ("lock; cmpxchgl %2, %0" + : "+m" (*p), "+a" (readval) + : "r" (1) + : "cc"); + return readval; +} +#elif defined(__s390__) +static inline int testandset (int *p) +{ + int ret; + + __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n" + " jl 0b" + : "=&d" (ret) + : "r" (1), "a" (p), "0" (*p) + : "cc", "memory" ); + return ret; +} +#elif defined(__alpha__) +static inline int testandset (int *p) +{ + int ret; + unsigned long one; + + __asm__ __volatile__ ("0: mov 1,%2\n" + " ldl_l %0,%1\n" + " stl_c %2,%1\n" + " beq %2,1f\n" + ".subsection 2\n" + "1: br 0b\n" + ".previous" + : "=r" (ret), "=m" (*p), "=r" (one) + : "m" (*p)); + return ret; +} +#elif defined(__sparc__) +static inline int testandset (int *p) +{ + int ret; + + __asm__ __volatile__("ldstub [%1], %0" + : "=r" (ret) + : "r" (p) + : "memory"); + + return (ret ? 1 : 0); +} +#elif defined(__arm__) +static inline int testandset (int *spinlock) +{ + register unsigned int ret; + __asm__ __volatile__("swp %0, %1, [%2]" + : "=r"(ret) + : "0"(1), "r"(spinlock)); + + return ret; +} +#elif defined(__mc68000) +static inline int testandset (int *p) +{ + char ret; + __asm__ __volatile__("tas %1; sne %0" + : "=r" (ret) + : "m" (p) + : "cc","memory"); + return ret; +} +#elif defined(__hppa__) + +/* Because malloc only guarantees 8-byte alignment for malloc'd data, + and GCC only guarantees 8-byte alignment for stack locals, we can't + be assured of 16-byte alignment for atomic lock data even if we + specify "__attribute ((aligned(16)))" in the type declaration. So, + we use a struct containing an array of four ints for the atomic lock + type and dynamically select the 16-byte aligned int from the array + for the semaphore. */ +#define __PA_LDCW_ALIGNMENT 16 +static inline void *ldcw_align (void *p) { + unsigned long a = (unsigned long)p; + a = (a + __PA_LDCW_ALIGNMENT - 1) & ~(__PA_LDCW_ALIGNMENT - 1); + return (void *)a; +} + +static inline int testandset (spinlock_t *p) +{ + unsigned int ret; + p = ldcw_align(p); + __asm__ __volatile__("ldcw 0(%1),%0" + : "=r" (ret) + : "r" (p) + : "memory" ); + return !ret; +} + +#elif defined(__ia64) + +#include + +static inline int testandset (int *p) +{ + return __sync_lock_test_and_set (p, 1); +} +#elif defined(__mips__) +static inline int testandset (int *p) +{ + int ret; + + __asm__ __volatile__ ( + " .set push \n" + " .set noat \n" + " .set mips2 \n" + "1: li $1, 1 \n" + " ll %0, %1 \n" + " sc $1, %1 \n" + " beqz $1, 1b \n" + " .set pop " + : "=r" (ret), "+R" (*p) + : + : "memory"); + + return ret; +} +#else +#error unimplemented CPU support +#endif + +#if defined(CONFIG_USER_ONLY) +static inline void spin_lock(spinlock_t *lock) +{ + while (testandset(lock)); +} + +static inline void spin_unlock(spinlock_t *lock) +{ + resetlock(lock); +} + +static inline int spin_trylock(spinlock_t *lock) +{ + return !testandset(lock); +} +#else +static inline void spin_lock(spinlock_t *lock) +{ +} + +static inline void spin_unlock(spinlock_t *lock) +{ +} + +static inline int spin_trylock(spinlock_t *lock) +{ + return 1; +} +#endif + +#endif diff --git a/qemu/qemu-git/qemu-log.h b/qemu/qemu-git/qemu-log.h new file mode 100644 index 0000000..fccfb11 --- /dev/null +++ b/qemu/qemu-git/qemu-log.h @@ -0,0 +1,93 @@ +#ifndef QEMU_LOG_H +#define QEMU_LOG_H + +/* The deprecated global variables: */ +extern FILE *logfile; +extern int loglevel; + + +/* + * The new API: + * + */ + +/* Log settings checking macros: */ + +/* Returns true if qemu_log() will really write somewhere + */ +#define qemu_log_enabled() (logfile != NULL) + +/* Returns true if a bit is set in the current loglevel mask + */ +#define qemu_loglevel_mask(b) ((loglevel & (b)) != 0) + + +/* Logging functions: */ + +/* main logging function + */ +#define qemu_log(...) do { \ + if (logfile) \ + fprintf(logfile, ## __VA_ARGS__); \ + } while (0) + +/* vfprintf-like logging function + */ +#define qemu_log_vprintf(fmt, va) do { \ + if (logfile) \ + vfprintf(logfile, fmt, va); \ + } while (0) + +/* log only if a bit is set on the current loglevel mask + */ +#define qemu_log_mask(b, ...) do { \ + if (loglevel & (b)) \ + fprintf(logfile, ## __VA_ARGS__); \ + } while (0) + + + + +/* Special cases: */ + +/* cpu_dump_state() logging functions: */ +#define log_cpu_state(env, f) cpu_dump_state((env), logfile, fprintf, (f)); +#define log_cpu_state_mask(b, env, f) do { \ + if (loglevel & (b)) log_cpu_state((env), (f)); \ + } while (0) + +/* disas() and target_disas() to logfile: */ +#define log_target_disas(start, len, flags) \ + target_disas(logfile, (start), (len), (flags)) +#define log_disas(start, len) \ + disas(logfile, (start), (len)) + +/* page_dump() output to the log file: */ +#define log_page_dump() page_dump(logfile) + + + +/* Maintenance: */ + +/* fflush() the log file */ +#define qemu_log_flush() fflush(logfile) + +/* Close the log file */ +#define qemu_log_close() do { \ + fclose(logfile); \ + logfile = NULL; \ + } while (0) + +/* Set up a new log file */ +#define qemu_log_set_file(f) do { \ + logfile = (f); \ + } while (0) + +/* Set up a new log file, only if none is set */ +#define qemu_log_try_set_file(f) do { \ + if (!logfile) \ + logfile = (f); \ + } while (0) + + +#endif diff --git a/qemu/qemu-git/qemu-malloc.c b/qemu/qemu-git/qemu-malloc.c new file mode 100644 index 0000000..5d9e34d --- /dev/null +++ b/qemu/qemu-git/qemu-malloc.c @@ -0,0 +1,102 @@ +/* + * malloc-like functions for system emulation. + * + * Copyright (c) 2006 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "qemu-common.h" +#include + +static void *oom_check(void *ptr) +{ + if (ptr == NULL) { + abort(); + } + return ptr; +} + +void *get_mmap_addr(unsigned long size) +{ + return NULL; +} + +void qemu_free(void *ptr) +{ + free(ptr); +} + +static int allow_zero_malloc(void) +{ +#if defined(CONFIG_ZERO_MALLOC) + return 1; +#else + return 0; +#endif +} + +void *qemu_malloc(size_t size) +{ + if (!size && !allow_zero_malloc()) { + abort(); + } + return oom_check(malloc(size ? size : 1)); +} + +void *qemu_realloc(void *ptr, size_t size) +{ + if (size) { + return oom_check(realloc(ptr, size)); + } else if (allow_zero_malloc()) { + return oom_check(realloc(ptr, size ? size : 1)); + } + abort(); +} + +void *qemu_mallocz(size_t size) +{ + void *ptr; + ptr = qemu_malloc(size); + memset(ptr, 0, size); + return ptr; +} + +char *qemu_strdup(const char *str) +{ + char *ptr; + size_t len = strlen(str); + ptr = qemu_malloc(len + 1); + memcpy(ptr, str, len + 1); + return ptr; +} + +char *qemu_strndup(const char *str, size_t size) +{ + const char *end = memchr(str, 0, size); + char *new; + + if (end) { + size = end - str; + } + + new = qemu_malloc(size + 1); + new[size] = 0; + + return memcpy(new, str, size); +} diff --git a/qemu/qemu-git/qemu-queue.h b/qemu/qemu-git/qemu-queue.h new file mode 100644 index 0000000..1d07745 --- /dev/null +++ b/qemu/qemu-git/qemu-queue.h @@ -0,0 +1,449 @@ +/* $NetBSD: queue.h,v 1.52 2009/04/20 09:56:08 mschuett Exp $ */ + +/* + * Qemu version: Copy from netbsd, removed debug code, removed some of + * the implementations. Left in lists, simple queues, tail queues and + * circular queues. + */ + +/* + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + */ + +#ifndef QEMU_SYS_QUEUE_H_ +#define QEMU_SYS_QUEUE_H_ + +/* + * This file defines four types of data structures: + * lists, simple queues, tail queues, and circular queues. + * + * A list is headed by a single forward pointer (or an array of forward + * pointers for a hash table header). The elements are doubly linked + * so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before + * or after an existing element or at the head of the list. A list + * may only be traversed in the forward direction. + * + * A simple queue is headed by a pair of pointers, one the head of the + * list and the other to the tail of the list. The elements are singly + * linked to save space, so elements can only be removed from the + * head of the list. New elements can be added to the list after + * an existing element, at the head of the list, or at the end of the + * list. A simple queue may only be traversed in the forward direction. + * + * A tail queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or + * after an existing element, at the head of the list, or at the end of + * the list. A tail queue may be traversed in either direction. + * + * A circle queue is headed by a pair of pointers, one to the head of the + * list and the other to the tail of the list. The elements are doubly + * linked so that an arbitrary element can be removed without a need to + * traverse the list. New elements can be added to the list before or after + * an existing element, at the head of the list, or at the end of the list. + * A circle queue may be traversed in either direction, but has a more + * complex end of list detection. + * + * For details on the use of these macros, see the queue(3) manual page. + */ + +/* + * List definitions. + */ +#define QLIST_HEAD(name, type) \ +struct name { \ + struct type *lh_first; /* first element */ \ +} + +#define QLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define QLIST_ENTRY(type) \ +struct { \ + struct type *le_next; /* next element */ \ + struct type **le_prev; /* address of previous next element */ \ +} + +/* + * List functions. + */ +#define QLIST_INIT(head) do { \ + (head)->lh_first = NULL; \ +} while (/*CONSTCOND*/0) + +#define QLIST_INSERT_AFTER(listelm, elm, field) do { \ + if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \ + (listelm)->field.le_next->field.le_prev = \ + &(elm)->field.le_next; \ + (listelm)->field.le_next = (elm); \ + (elm)->field.le_prev = &(listelm)->field.le_next; \ +} while (/*CONSTCOND*/0) + +#define QLIST_INSERT_BEFORE(listelm, elm, field) do { \ + (elm)->field.le_prev = (listelm)->field.le_prev; \ + (elm)->field.le_next = (listelm); \ + *(listelm)->field.le_prev = (elm); \ + (listelm)->field.le_prev = &(elm)->field.le_next; \ +} while (/*CONSTCOND*/0) + +#define QLIST_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.le_next = (head)->lh_first) != NULL) \ + (head)->lh_first->field.le_prev = &(elm)->field.le_next;\ + (head)->lh_first = (elm); \ + (elm)->field.le_prev = &(head)->lh_first; \ +} while (/*CONSTCOND*/0) + +#define QLIST_REMOVE(elm, field) do { \ + if ((elm)->field.le_next != NULL) \ + (elm)->field.le_next->field.le_prev = \ + (elm)->field.le_prev; \ + *(elm)->field.le_prev = (elm)->field.le_next; \ +} while (/*CONSTCOND*/0) + +#define QLIST_FOREACH(var, head, field) \ + for ((var) = ((head)->lh_first); \ + (var); \ + (var) = ((var)->field.le_next)) + +#define QLIST_FOREACH_SAFE(var, head, field, next_var) \ + for ((var) = ((head)->lh_first); \ + (var) && ((next_var) = ((var)->field.le_next), 1); \ + (var) = (next_var)) + +/* + * List access methods. + */ +#define QLIST_EMPTY(head) ((head)->lh_first == NULL) +#define QLIST_FIRST(head) ((head)->lh_first) +#define QLIST_NEXT(elm, field) ((elm)->field.le_next) + + +/* + * Simple queue definitions. + */ +#define QSIMPLEQ_HEAD(name, type) \ +struct name { \ + struct type *sqh_first; /* first element */ \ + struct type **sqh_last; /* addr of last next element */ \ +} + +#define QSIMPLEQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).sqh_first } + +#define QSIMPLEQ_ENTRY(type) \ +struct { \ + struct type *sqe_next; /* next element */ \ +} + +/* + * Simple queue functions. + */ +#define QSIMPLEQ_INIT(head) do { \ + (head)->sqh_first = NULL; \ + (head)->sqh_last = &(head)->sqh_first; \ +} while (/*CONSTCOND*/0) + +#define QSIMPLEQ_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \ + (head)->sqh_last = &(elm)->field.sqe_next; \ + (head)->sqh_first = (elm); \ +} while (/*CONSTCOND*/0) + +#define QSIMPLEQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.sqe_next = NULL; \ + *(head)->sqh_last = (elm); \ + (head)->sqh_last = &(elm)->field.sqe_next; \ +} while (/*CONSTCOND*/0) + +#define QSIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ + if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL) \ + (head)->sqh_last = &(elm)->field.sqe_next; \ + (listelm)->field.sqe_next = (elm); \ +} while (/*CONSTCOND*/0) + +#define QSIMPLEQ_REMOVE_HEAD(head, field) do { \ + if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL)\ + (head)->sqh_last = &(head)->sqh_first; \ +} while (/*CONSTCOND*/0) + +#define QSIMPLEQ_REMOVE(head, elm, type, field) do { \ + if ((head)->sqh_first == (elm)) { \ + QSIMPLEQ_REMOVE_HEAD((head), field); \ + } else { \ + struct type *curelm = (head)->sqh_first; \ + while (curelm->field.sqe_next != (elm)) \ + curelm = curelm->field.sqe_next; \ + if ((curelm->field.sqe_next = \ + curelm->field.sqe_next->field.sqe_next) == NULL) \ + (head)->sqh_last = &(curelm)->field.sqe_next; \ + } \ +} while (/*CONSTCOND*/0) + +#define QSIMPLEQ_FOREACH(var, head, field) \ + for ((var) = ((head)->sqh_first); \ + (var); \ + (var) = ((var)->field.sqe_next)) + +#define QSIMPLEQ_FOREACH_SAFE(var, head, field, next) \ + for ((var) = ((head)->sqh_first); \ + (var) && ((next = ((var)->field.sqe_next)), 1); \ + (var) = (next)) + +#define QSIMPLEQ_CONCAT(head1, head2) do { \ + if (!QSIMPLEQ_EMPTY((head2))) { \ + *(head1)->sqh_last = (head2)->sqh_first; \ + (head1)->sqh_last = (head2)->sqh_last; \ + QSIMPLEQ_INIT((head2)); \ + } \ +} while (/*CONSTCOND*/0) + +#define QSIMPLEQ_LAST(head, type, field) \ + (QSIMPLEQ_EMPTY((head)) ? \ + NULL : \ + ((struct type *)(void *) \ + ((char *)((head)->sqh_last) - offsetof(struct type, field)))) + +/* + * Simple queue access methods. + */ +#define QSIMPLEQ_EMPTY(head) ((head)->sqh_first == NULL) +#define QSIMPLEQ_FIRST(head) ((head)->sqh_first) +#define QSIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next) + + +/* + * Tail queue definitions. + */ +#define Q_TAILQ_HEAD(name, type, qual) \ +struct name { \ + qual type *tqh_first; /* first element */ \ + qual type *qual *tqh_last; /* addr of last next element */ \ +} +#define QTAILQ_HEAD(name, type) Q_TAILQ_HEAD(name, struct type,) + +#define QTAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first } + +#define Q_TAILQ_ENTRY(type, qual) \ +struct { \ + qual type *tqe_next; /* next element */ \ + qual type *qual *tqe_prev; /* address of previous next element */\ +} +#define QTAILQ_ENTRY(type) Q_TAILQ_ENTRY(struct type,) + +/* + * Tail queue functions. + */ +#define QTAILQ_INIT(head) do { \ + (head)->tqh_first = NULL; \ + (head)->tqh_last = &(head)->tqh_first; \ +} while (/*CONSTCOND*/0) + +#define QTAILQ_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ + (head)->tqh_first->field.tqe_prev = \ + &(elm)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm)->field.tqe_next; \ + (head)->tqh_first = (elm); \ + (elm)->field.tqe_prev = &(head)->tqh_first; \ +} while (/*CONSTCOND*/0) + +#define QTAILQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.tqe_next = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &(elm)->field.tqe_next; \ +} while (/*CONSTCOND*/0) + +#define QTAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ + (elm)->field.tqe_next->field.tqe_prev = \ + &(elm)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm)->field.tqe_next; \ + (listelm)->field.tqe_next = (elm); \ + (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ +} while (/*CONSTCOND*/0) + +#define QTAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + (elm)->field.tqe_next = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ +} while (/*CONSTCOND*/0) + +#define QTAILQ_REMOVE(head, elm, field) do { \ + if (((elm)->field.tqe_next) != NULL) \ + (elm)->field.tqe_next->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ +} while (/*CONSTCOND*/0) + +#define QTAILQ_FOREACH(var, head, field) \ + for ((var) = ((head)->tqh_first); \ + (var); \ + (var) = ((var)->field.tqe_next)) + +#define QTAILQ_FOREACH_SAFE(var, head, field, next_var) \ + for ((var) = ((head)->tqh_first); \ + (var) && ((next_var) = ((var)->field.tqe_next), 1); \ + (var) = (next_var)) + +#define QTAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \ + (var); \ + (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last))) + +/* + * Tail queue access methods. + */ +#define QTAILQ_EMPTY(head) ((head)->tqh_first == NULL) +#define QTAILQ_FIRST(head) ((head)->tqh_first) +#define QTAILQ_NEXT(elm, field) ((elm)->field.tqe_next) + +#define QTAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) +#define QTAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + + +/* + * Circular queue definitions. + */ +#define QCIRCLEQ_HEAD(name, type) \ +struct name { \ + struct type *cqh_first; /* first element */ \ + struct type *cqh_last; /* last element */ \ +} + +#define QCIRCLEQ_HEAD_INITIALIZER(head) \ + { (void *)&head, (void *)&head } + +#define QCIRCLEQ_ENTRY(type) \ +struct { \ + struct type *cqe_next; /* next element */ \ + struct type *cqe_prev; /* previous element */ \ +} + +/* + * Circular queue functions. + */ +#define QCIRCLEQ_INIT(head) do { \ + (head)->cqh_first = (void *)(head); \ + (head)->cqh_last = (void *)(head); \ +} while (/*CONSTCOND*/0) + +#define QCIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ + (elm)->field.cqe_next = (listelm)->field.cqe_next; \ + (elm)->field.cqe_prev = (listelm); \ + if ((listelm)->field.cqe_next == (void *)(head)) \ + (head)->cqh_last = (elm); \ + else \ + (listelm)->field.cqe_next->field.cqe_prev = (elm); \ + (listelm)->field.cqe_next = (elm); \ +} while (/*CONSTCOND*/0) + +#define QCIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ + (elm)->field.cqe_next = (listelm); \ + (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ + if ((listelm)->field.cqe_prev == (void *)(head)) \ + (head)->cqh_first = (elm); \ + else \ + (listelm)->field.cqe_prev->field.cqe_next = (elm); \ + (listelm)->field.cqe_prev = (elm); \ +} while (/*CONSTCOND*/0) + +#define QCIRCLEQ_INSERT_HEAD(head, elm, field) do { \ + (elm)->field.cqe_next = (head)->cqh_first; \ + (elm)->field.cqe_prev = (void *)(head); \ + if ((head)->cqh_last == (void *)(head)) \ + (head)->cqh_last = (elm); \ + else \ + (head)->cqh_first->field.cqe_prev = (elm); \ + (head)->cqh_first = (elm); \ +} while (/*CONSTCOND*/0) + +#define QCIRCLEQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.cqe_next = (void *)(head); \ + (elm)->field.cqe_prev = (head)->cqh_last; \ + if ((head)->cqh_first == (void *)(head)) \ + (head)->cqh_first = (elm); \ + else \ + (head)->cqh_last->field.cqe_next = (elm); \ + (head)->cqh_last = (elm); \ +} while (/*CONSTCOND*/0) + +#define QCIRCLEQ_REMOVE(head, elm, field) do { \ + if ((elm)->field.cqe_next == (void *)(head)) \ + (head)->cqh_last = (elm)->field.cqe_prev; \ + else \ + (elm)->field.cqe_next->field.cqe_prev = \ + (elm)->field.cqe_prev; \ + if ((elm)->field.cqe_prev == (void *)(head)) \ + (head)->cqh_first = (elm)->field.cqe_next; \ + else \ + (elm)->field.cqe_prev->field.cqe_next = \ + (elm)->field.cqe_next; \ +} while (/*CONSTCOND*/0) + +#define QCIRCLEQ_FOREACH(var, head, field) \ + for ((var) = ((head)->cqh_first); \ + (var) != (const void *)(head); \ + (var) = ((var)->field.cqe_next)) + +#define QCIRCLEQ_FOREACH_REVERSE(var, head, field) \ + for ((var) = ((head)->cqh_last); \ + (var) != (const void *)(head); \ + (var) = ((var)->field.cqe_prev)) + +/* + * Circular queue access methods. + */ +#define QCIRCLEQ_EMPTY(head) ((head)->cqh_first == (void *)(head)) +#define QCIRCLEQ_FIRST(head) ((head)->cqh_first) +#define QCIRCLEQ_LAST(head) ((head)->cqh_last) +#define QCIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next) +#define QCIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev) + +#define QCIRCLEQ_LOOP_NEXT(head, elm, field) \ + (((elm)->field.cqe_next == (void *)(head)) \ + ? ((head)->cqh_first) \ + : (elm->field.cqe_next)) +#define QCIRCLEQ_LOOP_PREV(head, elm, field) \ + (((elm)->field.cqe_prev == (void *)(head)) \ + ? ((head)->cqh_last) \ + : (elm->field.cqe_prev)) + +#endif /* !QEMU_SYS_QUEUE_H_ */ diff --git a/qemu/qemu-git/rules.mak b/qemu/qemu-git/rules.mak new file mode 100644 index 0000000..5941b73 --- /dev/null +++ b/qemu/qemu-git/rules.mak @@ -0,0 +1,55 @@ + +# Don't use implicit rules or variables +# we have explicit rules for everything +MAKEFLAGS += -rR + +# Files with this suffixes are final, don't try to generate them +# using implicit rules +%.d: +%.h: +%.c: +%.m: +%.mak: + +# Flags for dependency generation +QEMU_DGFLAGS += -MMD -MP -MT $@ + +%.o: %.c + $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," CC $(TARGET_DIR)$@") + +%.o: %.S + $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," AS $(TARGET_DIR)$@") + +%.o: %.m + $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," OBJC $(TARGET_DIR)$@") + +LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(1) $(LIBS)," LINK $(TARGET_DIR)$@") + +%$(EXESUF): %.o + $(call LINK,$^) + +%.a: + $(call quiet-command,rm -f $@ && $(AR) rcs $@ $^," AR $(TARGET_DIR)$@") + +quiet-command = $(if $(V),$1,$(if $(2),@echo $2 && $1, @$1)) + +# cc-option +# Usage: CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0) + +cc-option = $(if $(shell $(CC) $1 $2 -S -o /dev/null -xc /dev/null \ + >/dev/null 2>&1 && echo OK), $2, $3) + +VPATH_SUFFIXES = %.c %.h %.S %.m %.mak %.texi +set-vpath = $(if $1,$(foreach PATTERN,$(VPATH_SUFFIXES), $(eval vpath $(PATTERN) $1))) + +# Generate timestamp files for .h include files + +%.h: %.h-timestamp + @test -f $@ || cp $< $@ + +%.h-timestamp: %.mak + $(call quiet-command, sh $(SRC_PATH)/create_config < $< > $@, " GEN $*.h") + @cmp $@ $*.h >/dev/null 2>&1 || cp $@ $*.h + +# will delete the target of a rule if commands exit with a nonzero exit status +.DELETE_ON_ERROR: diff --git a/qemu/qemu-git/s390-dis.c b/qemu/qemu-git/s390-dis.c new file mode 100644 index 0000000..86dd84f --- /dev/null +++ b/qemu/qemu-git/s390-dis.c @@ -0,0 +1,1704 @@ +/* s390-dis.c -- Disassemble S390 instructions + Copyright 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + This file is part of GDB, GAS and the GNU binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#include +#include "dis-asm.h" + +/* s390.h -- Header file for S390 opcode table + Copyright 2000, 2001, 2003 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#ifndef S390_H +#define S390_H + +/* List of instruction sets variations. */ + +enum s390_opcode_mode_val + { + S390_OPCODE_ESA = 0, + S390_OPCODE_ZARCH + }; + +enum s390_opcode_cpu_val + { + S390_OPCODE_G5 = 0, + S390_OPCODE_G6, + S390_OPCODE_Z900, + S390_OPCODE_Z990, + S390_OPCODE_Z9_109, + S390_OPCODE_Z9_EC + }; + +/* The opcode table is an array of struct s390_opcode. */ + +struct s390_opcode + { + /* The opcode name. */ + const char * name; + + /* The opcode itself. Those bits which will be filled in with + operands are zeroes. */ + unsigned char opcode[6]; + + /* The opcode mask. This is used by the disassembler. This is a + mask containing ones indicating those bits which must match the + opcode field, and zeroes indicating those bits which need not + match (and are presumably filled in by operands). */ + unsigned char mask[6]; + + /* The opcode length in bytes. */ + int oplen; + + /* An array of operand codes. Each code is an index into the + operand table. They appear in the order which the operands must + appear in assembly code, and are terminated by a zero. */ + unsigned char operands[6]; + + /* Bitmask of execution modes this opcode is available for. */ + unsigned int modes; + + /* First cpu this opcode is available for. */ + enum s390_opcode_cpu_val min_cpu; + }; + +/* The table itself is sorted by major opcode number, and is otherwise + in the order in which the disassembler should consider + instructions. */ +extern const struct s390_opcode s390_opcodes[]; +extern const int s390_num_opcodes; + +/* A opcode format table for the .insn pseudo mnemonic. */ +extern const struct s390_opcode s390_opformats[]; +extern const int s390_num_opformats; + +/* Values defined for the flags field of a struct powerpc_opcode. */ + +/* The operands table is an array of struct s390_operand. */ + +struct s390_operand + { + /* The number of bits in the operand. */ + int bits; + + /* How far the operand is left shifted in the instruction. */ + int shift; + + /* One bit syntax flags. */ + unsigned long flags; + }; + +/* Elements in the table are retrieved by indexing with values from + the operands field of the powerpc_opcodes table. */ + +extern const struct s390_operand s390_operands[]; + +/* Values defined for the flags field of a struct s390_operand. */ + +/* This operand names a register. The disassembler uses this to print + register names with a leading 'r'. */ +#define S390_OPERAND_GPR 0x1 + +/* This operand names a floating point register. The disassembler + prints these with a leading 'f'. */ +#define S390_OPERAND_FPR 0x2 + +/* This operand names an access register. The disassembler + prints these with a leading 'a'. */ +#define S390_OPERAND_AR 0x4 + +/* This operand names a control register. The disassembler + prints these with a leading 'c'. */ +#define S390_OPERAND_CR 0x8 + +/* This operand is a displacement. */ +#define S390_OPERAND_DISP 0x10 + +/* This operand names a base register. */ +#define S390_OPERAND_BASE 0x20 + +/* This operand names an index register, it can be skipped. */ +#define S390_OPERAND_INDEX 0x40 + +/* This operand is a relative branch displacement. The disassembler + prints these symbolically if possible. */ +#define S390_OPERAND_PCREL 0x80 + +/* This operand takes signed values. */ +#define S390_OPERAND_SIGNED 0x100 + +/* This operand is a length. */ +#define S390_OPERAND_LENGTH 0x200 + +/* This operand is optional. Only a single operand at the end of + the instruction may be optional. */ +#define S390_OPERAND_OPTIONAL 0x400 + + #endif /* S390_H */ + + +static int init_flag = 0; +static int opc_index[256]; +static int current_arch_mask = 0; + +/* Set up index table for first opcode byte. */ + +static void +init_disasm (struct disassemble_info *info) +{ + const struct s390_opcode *opcode; + const struct s390_opcode *opcode_end; + + memset (opc_index, 0, sizeof (opc_index)); + opcode_end = s390_opcodes + s390_num_opcodes; + for (opcode = s390_opcodes; opcode < opcode_end; opcode++) + { + opc_index[(int) opcode->opcode[0]] = opcode - s390_opcodes; + while ((opcode < opcode_end) && + (opcode[1].opcode[0] == opcode->opcode[0])) + opcode++; + } +// switch (info->mach) +// { +// case bfd_mach_s390_31: + current_arch_mask = 1 << S390_OPCODE_ESA; +// break; +// case bfd_mach_s390_64: +// current_arch_mask = 1 << S390_OPCODE_ZARCH; +// break; +// default: +// abort (); +// } + init_flag = 1; +} + +/* Extracts an operand value from an instruction. */ + +static inline unsigned int +s390_extract_operand (unsigned char *insn, const struct s390_operand *operand) +{ + unsigned int val; + int bits; + + /* Extract fragments of the operand byte for byte. */ + insn += operand->shift / 8; + bits = (operand->shift & 7) + operand->bits; + val = 0; + do + { + val <<= 8; + val |= (unsigned int) *insn++; + bits -= 8; + } + while (bits > 0); + val >>= -bits; + val &= ((1U << (operand->bits - 1)) << 1) - 1; + + /* Check for special long displacement case. */ + if (operand->bits == 20 && operand->shift == 20) + val = (val & 0xff) << 12 | (val & 0xfff00) >> 8; + + /* Sign extend value if the operand is signed or pc relative. */ + if ((operand->flags & (S390_OPERAND_SIGNED | S390_OPERAND_PCREL)) + && (val & (1U << (operand->bits - 1)))) + val |= (-1U << (operand->bits - 1)) << 1; + + /* Double value if the operand is pc relative. */ + if (operand->flags & S390_OPERAND_PCREL) + val <<= 1; + + /* Length x in an instructions has real length x + 1. */ + if (operand->flags & S390_OPERAND_LENGTH) + val++; + return val; +} + +/* Print a S390 instruction. */ + +int +print_insn_s390 (bfd_vma memaddr, struct disassemble_info *info) +{ + bfd_byte buffer[6]; + const struct s390_opcode *opcode; + const struct s390_opcode *opcode_end; + unsigned int value; + int status, opsize, bufsize; + char separator; + + if (init_flag == 0) + init_disasm (info); + + /* The output looks better if we put 6 bytes on a line. */ + info->bytes_per_line = 6; + + /* Every S390 instruction is max 6 bytes long. */ + memset (buffer, 0, 6); + status = (*info->read_memory_func) (memaddr, buffer, 6, info); + if (status != 0) + { + for (bufsize = 0; bufsize < 6; bufsize++) + if ((*info->read_memory_func) (memaddr, buffer, bufsize + 1, info) != 0) + break; + if (bufsize <= 0) + { + (*info->memory_error_func) (status, memaddr, info); + return -1; + } + /* Opsize calculation looks strange but it works + 00xxxxxx -> 2 bytes, 01xxxxxx/10xxxxxx -> 4 bytes, + 11xxxxxx -> 6 bytes. */ + opsize = ((((buffer[0] >> 6) + 1) >> 1) + 1) << 1; + status = opsize > bufsize; + } + else + { + bufsize = 6; + opsize = ((((buffer[0] >> 6) + 1) >> 1) + 1) << 1; + } + + if (status == 0) + { + /* Find the first match in the opcode table. */ + opcode_end = s390_opcodes + s390_num_opcodes; + for (opcode = s390_opcodes + opc_index[(int) buffer[0]]; + (opcode < opcode_end) && (buffer[0] == opcode->opcode[0]); + opcode++) + { + const struct s390_operand *operand; + const unsigned char *opindex; + + /* Check architecture. */ + if (!(opcode->modes & current_arch_mask)) + continue; + /* Check signature of the opcode. */ + if ((buffer[1] & opcode->mask[1]) != opcode->opcode[1] + || (buffer[2] & opcode->mask[2]) != opcode->opcode[2] + || (buffer[3] & opcode->mask[3]) != opcode->opcode[3] + || (buffer[4] & opcode->mask[4]) != opcode->opcode[4] + || (buffer[5] & opcode->mask[5]) != opcode->opcode[5]) + continue; + + /* The instruction is valid. */ + if (opcode->operands[0] != 0) + (*info->fprintf_func) (info->stream, "%s\t", opcode->name); + else + (*info->fprintf_func) (info->stream, "%s", opcode->name); + + /* Extract the operands. */ + separator = 0; + for (opindex = opcode->operands; *opindex != 0; opindex++) + { + unsigned int value; + + operand = s390_operands + *opindex; + value = s390_extract_operand (buffer, operand); + + if ((operand->flags & S390_OPERAND_INDEX) && value == 0) + continue; + if ((operand->flags & S390_OPERAND_BASE) && + value == 0 && separator == '(') + { + separator = ','; + continue; + } + + if (separator) + (*info->fprintf_func) (info->stream, "%c", separator); + + if (operand->flags & S390_OPERAND_GPR) + (*info->fprintf_func) (info->stream, "%%r%i", value); + else if (operand->flags & S390_OPERAND_FPR) + (*info->fprintf_func) (info->stream, "%%f%i", value); + else if (operand->flags & S390_OPERAND_AR) + (*info->fprintf_func) (info->stream, "%%a%i", value); + else if (operand->flags & S390_OPERAND_CR) + (*info->fprintf_func) (info->stream, "%%c%i", value); + else if (operand->flags & S390_OPERAND_PCREL) + (*info->print_address_func) (memaddr + (int) value, info); + else if (operand->flags & S390_OPERAND_SIGNED) + (*info->fprintf_func) (info->stream, "%i", (int) value); + else + (*info->fprintf_func) (info->stream, "%u", value); + + if (operand->flags & S390_OPERAND_DISP) + { + separator = '('; + } + else if (operand->flags & S390_OPERAND_BASE) + { + (*info->fprintf_func) (info->stream, ")"); + separator = ','; + } + else + separator = ','; + } + + /* Found instruction, printed it, return its size. */ + return opsize; + } + /* No matching instruction found, fall through to hex print. */ + } + + if (bufsize >= 4) + { + value = (unsigned int) buffer[0]; + value = (value << 8) + (unsigned int) buffer[1]; + value = (value << 8) + (unsigned int) buffer[2]; + value = (value << 8) + (unsigned int) buffer[3]; + (*info->fprintf_func) (info->stream, ".long\t0x%08x", value); + return 4; + } + else if (bufsize >= 2) + { + value = (unsigned int) buffer[0]; + value = (value << 8) + (unsigned int) buffer[1]; + (*info->fprintf_func) (info->stream, ".short\t0x%04x", value); + return 2; + } + else + { + value = (unsigned int) buffer[0]; + (*info->fprintf_func) (info->stream, ".byte\t0x%02x", value); + return 1; + } +} +/* s390-opc.c -- S390 opcode list + Copyright 2000, 2001, 2003 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + + This file is part of GDB, GAS, and the GNU binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#include + +/* This file holds the S390 opcode table. The opcode table + includes almost all of the extended instruction mnemonics. This + permits the disassembler to use them, and simplifies the assembler + logic, at the cost of increasing the table size. The table is + strictly constant data, so the compiler should be able to put it in + the .text section. + + This file also holds the operand table. All knowledge about + inserting operands into instructions and vice-versa is kept in this + file. */ + +/* The operands table. + The fields are bits, shift, insert, extract, flags. */ + +const struct s390_operand s390_operands[] = +{ +#define UNUSED 0 + { 0, 0, 0 }, /* Indicates the end of the operand list */ + +#define R_8 1 /* GPR starting at position 8 */ + { 4, 8, S390_OPERAND_GPR }, +#define R_12 2 /* GPR starting at position 12 */ + { 4, 12, S390_OPERAND_GPR }, +#define R_16 3 /* GPR starting at position 16 */ + { 4, 16, S390_OPERAND_GPR }, +#define R_20 4 /* GPR starting at position 20 */ + { 4, 20, S390_OPERAND_GPR }, +#define R_24 5 /* GPR starting at position 24 */ + { 4, 24, S390_OPERAND_GPR }, +#define R_28 6 /* GPR starting at position 28 */ + { 4, 28, S390_OPERAND_GPR }, +#define R_32 7 /* GPR starting at position 32 */ + { 4, 32, S390_OPERAND_GPR }, + +#define F_8 8 /* FPR starting at position 8 */ + { 4, 8, S390_OPERAND_FPR }, +#define F_12 9 /* FPR starting at position 12 */ + { 4, 12, S390_OPERAND_FPR }, +#define F_16 10 /* FPR starting at position 16 */ + { 4, 16, S390_OPERAND_FPR }, +#define F_20 11 /* FPR starting at position 16 */ + { 4, 16, S390_OPERAND_FPR }, +#define F_24 12 /* FPR starting at position 24 */ + { 4, 24, S390_OPERAND_FPR }, +#define F_28 13 /* FPR starting at position 28 */ + { 4, 28, S390_OPERAND_FPR }, +#define F_32 14 /* FPR starting at position 32 */ + { 4, 32, S390_OPERAND_FPR }, + +#define A_8 15 /* Access reg. starting at position 8 */ + { 4, 8, S390_OPERAND_AR }, +#define A_12 16 /* Access reg. starting at position 12 */ + { 4, 12, S390_OPERAND_AR }, +#define A_24 17 /* Access reg. starting at position 24 */ + { 4, 24, S390_OPERAND_AR }, +#define A_28 18 /* Access reg. starting at position 28 */ + { 4, 28, S390_OPERAND_AR }, + +#define C_8 19 /* Control reg. starting at position 8 */ + { 4, 8, S390_OPERAND_CR }, +#define C_12 20 /* Control reg. starting at position 12 */ + { 4, 12, S390_OPERAND_CR }, + +#define B_16 21 /* Base register starting at position 16 */ + { 4, 16, S390_OPERAND_BASE|S390_OPERAND_GPR }, +#define B_32 22 /* Base register starting at position 32 */ + { 4, 32, S390_OPERAND_BASE|S390_OPERAND_GPR }, + +#define X_12 23 /* Index register starting at position 12 */ + { 4, 12, S390_OPERAND_INDEX|S390_OPERAND_GPR }, + +#define D_20 24 /* Displacement starting at position 20 */ + { 12, 20, S390_OPERAND_DISP }, +#define D_36 25 /* Displacement starting at position 36 */ + { 12, 36, S390_OPERAND_DISP }, +#define D20_20 26 /* 20 bit displacement starting at 20 */ + { 20, 20, S390_OPERAND_DISP|S390_OPERAND_SIGNED }, + +#define L4_8 27 /* 4 bit length starting at position 8 */ + { 4, 8, S390_OPERAND_LENGTH }, +#define L4_12 28 /* 4 bit length starting at position 12 */ + { 4, 12, S390_OPERAND_LENGTH }, +#define L8_8 29 /* 8 bit length starting at position 8 */ + { 8, 8, S390_OPERAND_LENGTH }, + +#define U4_8 30 /* 4 bit unsigned value starting at 8 */ + { 4, 8, 0 }, +#define U4_12 31 /* 4 bit unsigned value starting at 12 */ + { 4, 12, 0 }, +#define U4_16 32 /* 4 bit unsigned value starting at 16 */ + { 4, 16, 0 }, +#define U4_20 33 /* 4 bit unsigned value starting at 20 */ + { 4, 20, 0 }, +#define U8_8 34 /* 8 bit unsigned value starting at 8 */ + { 8, 8, 0 }, +#define U8_16 35 /* 8 bit unsigned value starting at 16 */ + { 8, 16, 0 }, +#define I16_16 36 /* 16 bit signed value starting at 16 */ + { 16, 16, S390_OPERAND_SIGNED }, +#define U16_16 37 /* 16 bit unsigned value starting at 16 */ + { 16, 16, 0 }, +#define J16_16 38 /* PC relative jump offset at 16 */ + { 16, 16, S390_OPERAND_PCREL }, +#define J32_16 39 /* PC relative long offset at 16 */ + { 32, 16, S390_OPERAND_PCREL }, +#define I32_16 40 /* 32 bit signed value starting at 16 */ + { 32, 16, S390_OPERAND_SIGNED }, +#define U32_16 41 /* 32 bit unsigned value starting at 16 */ + { 32, 16, 0 }, +#define M_16 42 /* 4 bit optional mask starting at 16 */ + { 4, 16, S390_OPERAND_OPTIONAL }, +#define RO_28 43 /* optional GPR starting at position 28 */ + { 4, 28, (S390_OPERAND_GPR | S390_OPERAND_OPTIONAL) } + +}; + + +/* Macros used to form opcodes. */ + +/* 8/16/48 bit opcodes. */ +#define OP8(x) { x, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define OP16(x) { x >> 8, x & 255, 0x00, 0x00, 0x00, 0x00 } +#define OP48(x) { x >> 40, (x >> 32) & 255, (x >> 24) & 255, \ + (x >> 16) & 255, (x >> 8) & 255, x & 255} + +/* The new format of the INSTR_x_y and MASK_x_y defines is based + on the following rules: + 1) the middle part of the definition (x in INSTR_x_y) is the official + names of the instruction format that you can find in the principals + of operation. + 2) the last part of the definition (y in INSTR_x_y) gives you an idea + which operands the binary represenation of the instruction has. + The meanings of the letters in y are: + a - access register + c - control register + d - displacement, 12 bit + f - floating pointer register + i - signed integer, 4, 8, 16 or 32 bit + l - length, 4 or 8 bit + p - pc relative + r - general purpose register + u - unsigned integer, 4, 8, 16 or 32 bit + m - mode field, 4 bit + 0 - operand skipped. + The order of the letters reflects the layout of the format in + storage and not the order of the paramaters of the instructions. + The use of the letters is not a 100% match with the PoP but it is + quite close. + + For example the instruction "mvo" is defined in the PoP as follows: + + MVO D1(L1,B1),D2(L2,B2) [SS] + + -------------------------------------- + | 'F1' | L1 | L2 | B1 | D1 | B2 | D2 | + -------------------------------------- + 0 8 12 16 20 32 36 + + The instruction format is: INSTR_SS_LLRDRD / MASK_SS_LLRDRD. */ + +#define INSTR_E 2, { 0,0,0,0,0,0 } /* e.g. pr */ +#define INSTR_RIE_RRP 6, { R_8,R_12,J16_16,0,0,0 } /* e.g. brxhg */ +#define INSTR_RIL_0P 6, { J32_16,0,0,0,0 } /* e.g. jg */ +#define INSTR_RIL_RP 6, { R_8,J32_16,0,0,0,0 } /* e.g. brasl */ +#define INSTR_RIL_UP 6, { U4_8,J32_16,0,0,0,0 } /* e.g. brcl */ +#define INSTR_RIL_RI 6, { R_8,I32_16,0,0,0,0 } /* e.g. afi */ +#define INSTR_RIL_RU 6, { R_8,U32_16,0,0,0,0 } /* e.g. alfi */ +#define INSTR_RI_0P 4, { J16_16,0,0,0,0,0 } /* e.g. j */ +#define INSTR_RI_RI 4, { R_8,I16_16,0,0,0,0 } /* e.g. ahi */ +#define INSTR_RI_RP 4, { R_8,J16_16,0,0,0,0 } /* e.g. brct */ +#define INSTR_RI_RU 4, { R_8,U16_16,0,0,0,0 } /* e.g. tml */ +#define INSTR_RI_UP 4, { U4_8,J16_16,0,0,0,0 } /* e.g. brc */ +#define INSTR_RRE_00 4, { 0,0,0,0,0,0 } /* e.g. palb */ +#define INSTR_RRE_0R 4, { R_28,0,0,0,0,0 } /* e.g. tb */ +#define INSTR_RRE_AA 4, { A_24,A_28,0,0,0,0 } /* e.g. cpya */ +#define INSTR_RRE_AR 4, { A_24,R_28,0,0,0,0 } /* e.g. sar */ +#define INSTR_RRE_F0 4, { F_24,0,0,0,0,0 } /* e.g. sqer */ +#define INSTR_RRE_FF 4, { F_24,F_28,0,0,0,0 } /* e.g. debr */ +#define INSTR_RRE_R0 4, { R_24,0,0,0,0,0 } /* e.g. ipm */ +#define INSTR_RRE_RA 4, { R_24,A_28,0,0,0,0 } /* e.g. ear */ +#define INSTR_RRE_RF 4, { R_24,F_28,0,0,0,0 } /* e.g. cefbr */ +#define INSTR_RRE_RR 4, { R_24,R_28,0,0,0,0 } /* e.g. lura */ +#define INSTR_RRE_FR 4, { F_24,R_28,0,0,0,0 } /* e.g. ldgr */ +/* Actually efpc and sfpc do not take an optional operand. + This is just a workaround for existing code e.g. glibc. */ +#define INSTR_RRE_RR_OPT 4, { R_24,RO_28,0,0,0,0 } /* efpc, sfpc */ +#define INSTR_RRF_F0FF 4, { F_16,F_24,F_28,0,0,0 } /* e.g. madbr */ +#define INSTR_RRF_F0FF2 4, { F_24,F_16,F_28,0,0,0 } /* e.g. cpsdr */ +#define INSTR_RRF_F0FR 4, { F_24,F_16,R_28,0,0,0 } /* e.g. iedtr */ +#define INSTR_RRF_FUFF 4, { F_24,F_16,F_28,U4_20,0,0 } /* e.g. didbr */ +#define INSTR_RRF_RURR 4, { R_24,R_28,R_16,U4_20,0,0 } /* e.g. .insn */ +#define INSTR_RRF_R0RR 4, { R_24,R_28,R_16,0,0,0 } /* e.g. idte */ +#define INSTR_RRF_U0FF 4, { F_24,U4_16,F_28,0,0,0 } /* e.g. fixr */ +#define INSTR_RRF_U0RF 4, { R_24,U4_16,F_28,0,0,0 } /* e.g. cfebr */ +#define INSTR_RRF_UUFF 4, { F_24,U4_16,F_28,U4_20,0,0 } /* e.g. fidtr */ +#define INSTR_RRF_0UFF 4, { F_24,F_28,U4_20,0,0,0 } /* e.g. ldetr */ +#define INSTR_RRF_FFFU 4, { F_24,F_16,F_28,U4_20,0,0 } /* e.g. qadtr */ +#define INSTR_RRF_M0RR 4, { R_24,R_28,M_16,0,0,0 } /* e.g. sske */ +#define INSTR_RR_0R 2, { R_12, 0,0,0,0,0 } /* e.g. br */ +#define INSTR_RR_FF 2, { F_8,F_12,0,0,0,0 } /* e.g. adr */ +#define INSTR_RR_R0 2, { R_8, 0,0,0,0,0 } /* e.g. spm */ +#define INSTR_RR_RR 2, { R_8,R_12,0,0,0,0 } /* e.g. lr */ +#define INSTR_RR_U0 2, { U8_8, 0,0,0,0,0 } /* e.g. svc */ +#define INSTR_RR_UR 2, { U4_8,R_12,0,0,0,0 } /* e.g. bcr */ +#define INSTR_RRR_F0FF 4, { F_24,F_28,F_16,0,0,0 } /* e.g. ddtr */ +#define INSTR_RSE_RRRD 6, { R_8,R_12,D_20,B_16,0,0 } /* e.g. lmh */ +#define INSTR_RSE_CCRD 6, { C_8,C_12,D_20,B_16,0,0 } /* e.g. lmh */ +#define INSTR_RSE_RURD 6, { R_8,U4_12,D_20,B_16,0,0 } /* e.g. icmh */ +#define INSTR_RSL_R0RD 6, { R_8,D_20,B_16,0,0,0 } /* e.g. tp */ +#define INSTR_RSI_RRP 4, { R_8,R_12,J16_16,0,0,0 } /* e.g. brxh */ +#define INSTR_RSY_RRRD 6, { R_8,R_12,D20_20,B_16,0,0 } /* e.g. stmy */ +#define INSTR_RSY_RURD 6, { R_8,U4_12,D20_20,B_16,0,0 } /* e.g. icmh */ +#define INSTR_RSY_AARD 6, { A_8,A_12,D20_20,B_16,0,0 } /* e.g. lamy */ +#define INSTR_RSY_CCRD 6, { C_8,C_12,D20_20,B_16,0,0 } /* e.g. lamy */ +#define INSTR_RS_AARD 4, { A_8,A_12,D_20,B_16,0,0 } /* e.g. lam */ +#define INSTR_RS_CCRD 4, { C_8,C_12,D_20,B_16,0,0 } /* e.g. lctl */ +#define INSTR_RS_R0RD 4, { R_8,D_20,B_16,0,0,0 } /* e.g. sll */ +#define INSTR_RS_RRRD 4, { R_8,R_12,D_20,B_16,0,0 } /* e.g. cs */ +#define INSTR_RS_RURD 4, { R_8,U4_12,D_20,B_16,0,0 } /* e.g. icm */ +#define INSTR_RXE_FRRD 6, { F_8,D_20,X_12,B_16,0,0 } /* e.g. axbr */ +#define INSTR_RXE_RRRD 6, { R_8,D_20,X_12,B_16,0,0 } /* e.g. lg */ +#define INSTR_RXF_FRRDF 6, { F_32,F_8,D_20,X_12,B_16,0 } /* e.g. madb */ +#define INSTR_RXF_RRRDR 6, { R_32,R_8,D_20,X_12,B_16,0 } /* e.g. .insn */ +#define INSTR_RXY_RRRD 6, { R_8,D20_20,X_12,B_16,0,0 } /* e.g. ly */ +#define INSTR_RXY_FRRD 6, { F_8,D20_20,X_12,B_16,0,0 } /* e.g. ley */ +#define INSTR_RX_0RRD 4, { D_20,X_12,B_16,0,0,0 } /* e.g. be */ +#define INSTR_RX_FRRD 4, { F_8,D_20,X_12,B_16,0,0 } /* e.g. ae */ +#define INSTR_RX_RRRD 4, { R_8,D_20,X_12,B_16,0,0 } /* e.g. l */ +#define INSTR_RX_URRD 4, { U4_8,D_20,X_12,B_16,0,0 } /* e.g. bc */ +#define INSTR_SI_URD 4, { D_20,B_16,U8_8,0,0,0 } /* e.g. cli */ +#define INSTR_SIY_URD 6, { D20_20,B_16,U8_8,0,0,0 } /* e.g. tmy */ +#define INSTR_SSE_RDRD 6, { D_20,B_16,D_36,B_32,0,0 } /* e.g. mvsdk */ +#define INSTR_SS_L0RDRD 6, { D_20,L8_8,B_16,D_36,B_32,0 } /* e.g. mvc */ +#define INSTR_SS_L2RDRD 6, { D_20,B_16,D_36,L8_8,B_32,0 } /* e.g. pka */ +#define INSTR_SS_LIRDRD 6, { D_20,L4_8,B_16,D_36,B_32,U4_12 } /* e.g. srp */ +#define INSTR_SS_LLRDRD 6, { D_20,L4_8,B_16,D_36,L4_12,B_32 } /* e.g. pack */ +#define INSTR_SS_RRRDRD 6, { D_20,R_8,B_16,D_36,B_32,R_12 } /* e.g. mvck */ +#define INSTR_SS_RRRDRD2 6, { R_8,D_20,B_16,R_12,D_36,B_32 } /* e.g. plo */ +#define INSTR_SS_RRRDRD3 6, { R_8,R_12,D_20,B_16,D_36,B_32 } /* e.g. lmd */ +#define INSTR_S_00 4, { 0,0,0,0,0,0 } /* e.g. hsch */ +#define INSTR_S_RD 4, { D_20,B_16,0,0,0,0 } /* e.g. lpsw */ +#define INSTR_SSF_RRDRD 6, { D_20,B_16,D_36,B_32,R_8,0 } /* e.g. mvcos */ + +#define MASK_E { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RIE_RRP { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RIL_0P { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RIL_RP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RIL_UP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RIL_RI { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RIL_RU { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RI_0P { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RI_RI { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RI_RP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RI_RU { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RI_UP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RRE_00 { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 } +#define MASK_RRE_0R { 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00 } +#define MASK_RRE_AA { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRE_AR { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRE_F0 { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 } +#define MASK_RRE_FF { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRE_R0 { 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00 } +#define MASK_RRE_RA { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRE_RF { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRE_RR { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRE_FR { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRE_RR_OPT { 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 } +#define MASK_RRF_F0FF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RRF_F0FF2 { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RRF_F0FR { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RRF_FUFF { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RRF_RURR { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RRF_R0RR { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RRF_U0FF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RRF_U0RF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RRF_UUFF { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RRF_0UFF { 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00 } +#define MASK_RRF_FFFU { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RRF_M0RR { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RR_0R { 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RR_FF { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RR_R0 { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RR_RR { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RR_U0 { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RR_UR { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RRR_F0FF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 } +#define MASK_RSE_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSE_CCRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSE_RURD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSL_R0RD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSI_RRP { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RS_AARD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RS_CCRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RS_R0RD { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RS_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RS_RURD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RSY_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSY_RURD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSY_AARD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RSY_CCRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RXE_FRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RXE_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RXF_FRRDF { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RXF_RRRDR { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RXY_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RXY_FRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_RX_0RRD { 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RX_FRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RX_RRRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_RX_URRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SI_URD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SIY_URD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } +#define MASK_SSE_RDRD { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SS_L0RDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SS_L2RDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SS_LIRDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SS_LLRDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SS_RRRDRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SS_RRRDRD2 { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SS_RRRDRD3 { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 } +#define MASK_S_00 { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 } +#define MASK_S_RD { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } +#define MASK_SSF_RRDRD { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } + +/* The opcode formats table (blueprints for .insn pseudo mnemonic). */ + +const struct s390_opcode s390_opformats[] = + { + { "e", OP8(0x00LL), MASK_E, INSTR_E, 3, 0 }, + { "ri", OP8(0x00LL), MASK_RI_RI, INSTR_RI_RI, 3, 0 }, + { "rie", OP8(0x00LL), MASK_RIE_RRP, INSTR_RIE_RRP, 3, 0 }, + { "ril", OP8(0x00LL), MASK_RIL_RP, INSTR_RIL_RP, 3, 0 }, + { "rilu", OP8(0x00LL), MASK_RIL_RU, INSTR_RIL_RU, 3, 0 }, + { "rr", OP8(0x00LL), MASK_RR_RR, INSTR_RR_RR, 3, 0 }, + { "rre", OP8(0x00LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0 }, + { "rrf", OP8(0x00LL), MASK_RRF_RURR, INSTR_RRF_RURR, 3, 0 }, + { "rs", OP8(0x00LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0 }, + { "rse", OP8(0x00LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 3, 0 }, + { "rsi", OP8(0x00LL), MASK_RSI_RRP, INSTR_RSI_RRP, 3, 0 }, + { "rsy", OP8(0x00LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 3, 3 }, + { "rx", OP8(0x00LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0 }, + { "rxe", OP8(0x00LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 0 }, + { "rxf", OP8(0x00LL), MASK_RXF_RRRDR, INSTR_RXF_RRRDR,3, 0 }, + { "rxy", OP8(0x00LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3 }, + { "s", OP8(0x00LL), MASK_S_RD, INSTR_S_RD, 3, 0 }, + { "si", OP8(0x00LL), MASK_SI_URD, INSTR_SI_URD, 3, 0 }, + { "siy", OP8(0x00LL), MASK_SIY_URD, INSTR_SIY_URD, 3, 3 }, + { "ss", OP8(0x00LL), MASK_SS_RRRDRD, INSTR_SS_RRRDRD,3, 0 }, + { "sse", OP8(0x00LL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 3, 0 }, + { "ssf", OP8(0x00LL), MASK_SSF_RRDRD, INSTR_SSF_RRDRD,3, 0 }, +}; + +const int s390_num_opformats = + sizeof (s390_opformats) / sizeof (s390_opformats[0]); + +/* The opcode table. This file was generated by s390-mkopc. + + The format of the opcode table is: + + NAME OPCODE MASK OPERANDS + + Name is the name of the instruction. + OPCODE is the instruction opcode. + MASK is the opcode mask; this is used to tell the disassembler + which bits in the actual opcode must match OPCODE. + OPERANDS is the list of operands. + + The disassembler reads the table in order and prints the first + instruction which matches. */ + +const struct s390_opcode s390_opcodes[] = + { + { "dp", OP8(0xfdLL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "mp", OP8(0xfcLL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "sp", OP8(0xfbLL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "ap", OP8(0xfaLL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "cp", OP8(0xf9LL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "zap", OP8(0xf8LL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "unpk", OP8(0xf3LL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "pack", OP8(0xf2LL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "mvo", OP8(0xf1LL), MASK_SS_LLRDRD, INSTR_SS_LLRDRD, 3, 0}, + { "srp", OP8(0xf0LL), MASK_SS_LIRDRD, INSTR_SS_LIRDRD, 3, 0}, + { "lmd", OP8(0xefLL), MASK_SS_RRRDRD3, INSTR_SS_RRRDRD3, 2, 2}, + { "plo", OP8(0xeeLL), MASK_SS_RRRDRD2, INSTR_SS_RRRDRD2, 3, 0}, + { "stdy", OP48(0xed0000000067LL), MASK_RXY_FRRD, INSTR_RXY_FRRD, 2, 3}, + { "stey", OP48(0xed0000000066LL), MASK_RXY_FRRD, INSTR_RXY_FRRD, 2, 3}, + { "ldy", OP48(0xed0000000065LL), MASK_RXY_FRRD, INSTR_RXY_FRRD, 2, 3}, + { "ley", OP48(0xed0000000064LL), MASK_RXY_FRRD, INSTR_RXY_FRRD, 2, 3}, + { "tgxt", OP48(0xed0000000059LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 2, 5}, + { "tcxt", OP48(0xed0000000058LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 2, 5}, + { "tgdt", OP48(0xed0000000055LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 2, 5}, + { "tcdt", OP48(0xed0000000054LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 2, 5}, + { "tget", OP48(0xed0000000051LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 2, 5}, + { "tcet", OP48(0xed0000000050LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 2, 5}, + { "srxt", OP48(0xed0000000049LL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 5}, + { "slxt", OP48(0xed0000000048LL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 5}, + { "srdt", OP48(0xed0000000041LL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 5}, + { "sldt", OP48(0xed0000000040LL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 5}, + { "msd", OP48(0xed000000003fLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 3}, + { "mad", OP48(0xed000000003eLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 3}, + { "myh", OP48(0xed000000003dLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 4}, + { "mayh", OP48(0xed000000003cLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 4}, + { "my", OP48(0xed000000003bLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 4}, + { "may", OP48(0xed000000003aLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 4}, + { "myl", OP48(0xed0000000039LL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 4}, + { "mayl", OP48(0xed0000000038LL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 2, 4}, + { "mee", OP48(0xed0000000037LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "sqe", OP48(0xed0000000034LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "mse", OP48(0xed000000002fLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 3}, + { "mae", OP48(0xed000000002eLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 3}, + { "lxe", OP48(0xed0000000026LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "lxd", OP48(0xed0000000025LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "lde", OP48(0xed0000000024LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "msdb", OP48(0xed000000001fLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 0}, + { "madb", OP48(0xed000000001eLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 0}, + { "ddb", OP48(0xed000000001dLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "mdb", OP48(0xed000000001cLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "sdb", OP48(0xed000000001bLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "adb", OP48(0xed000000001aLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "cdb", OP48(0xed0000000019LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "kdb", OP48(0xed0000000018LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "meeb", OP48(0xed0000000017LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "sqdb", OP48(0xed0000000015LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "sqeb", OP48(0xed0000000014LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "tcxb", OP48(0xed0000000012LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "tcdb", OP48(0xed0000000011LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "tceb", OP48(0xed0000000010LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "mseb", OP48(0xed000000000fLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 0}, + { "maeb", OP48(0xed000000000eLL), MASK_RXF_FRRDF, INSTR_RXF_FRRDF, 3, 0}, + { "deb", OP48(0xed000000000dLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "mdeb", OP48(0xed000000000cLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "seb", OP48(0xed000000000bLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "aeb", OP48(0xed000000000aLL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "ceb", OP48(0xed0000000009LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "keb", OP48(0xed0000000008LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "mxdb", OP48(0xed0000000007LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "lxeb", OP48(0xed0000000006LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "lxdb", OP48(0xed0000000005LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "ldeb", OP48(0xed0000000004LL), MASK_RXE_FRRD, INSTR_RXE_FRRD, 3, 0}, + { "brxlg", OP48(0xec0000000045LL), MASK_RIE_RRP, INSTR_RIE_RRP, 2, 2}, + { "brxhg", OP48(0xec0000000044LL), MASK_RIE_RRP, INSTR_RIE_RRP, 2, 2}, + { "tp", OP48(0xeb00000000c0LL), MASK_RSL_R0RD, INSTR_RSL_R0RD, 3, 0}, + { "stamy", OP48(0xeb000000009bLL), MASK_RSY_AARD, INSTR_RSY_AARD, 2, 3}, + { "lamy", OP48(0xeb000000009aLL), MASK_RSY_AARD, INSTR_RSY_AARD, 2, 3}, + { "lmy", OP48(0xeb0000000098LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "lmh", OP48(0xeb0000000096LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "lmh", OP48(0xeb0000000096LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "stmy", OP48(0xeb0000000090LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "clclu", OP48(0xeb000000008fLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "mvclu", OP48(0xeb000000008eLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 3, 3}, + { "mvclu", OP48(0xeb000000008eLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 3, 0}, + { "icmy", OP48(0xeb0000000081LL), MASK_RSY_RURD, INSTR_RSY_RURD, 2, 3}, + { "icmh", OP48(0xeb0000000080LL), MASK_RSY_RURD, INSTR_RSY_RURD, 2, 3}, + { "icmh", OP48(0xeb0000000080LL), MASK_RSE_RURD, INSTR_RSE_RURD, 2, 2}, + { "xiy", OP48(0xeb0000000057LL), MASK_SIY_URD, INSTR_SIY_URD, 2, 3}, + { "oiy", OP48(0xeb0000000056LL), MASK_SIY_URD, INSTR_SIY_URD, 2, 3}, + { "cliy", OP48(0xeb0000000055LL), MASK_SIY_URD, INSTR_SIY_URD, 2, 3}, + { "niy", OP48(0xeb0000000054LL), MASK_SIY_URD, INSTR_SIY_URD, 2, 3}, + { "mviy", OP48(0xeb0000000052LL), MASK_SIY_URD, INSTR_SIY_URD, 2, 3}, + { "tmy", OP48(0xeb0000000051LL), MASK_SIY_URD, INSTR_SIY_URD, 2, 3}, + { "bxleg", OP48(0xeb0000000045LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "bxleg", OP48(0xeb0000000045LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "bxhg", OP48(0xeb0000000044LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "bxhg", OP48(0xeb0000000044LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "cdsg", OP48(0xeb000000003eLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "cdsg", OP48(0xeb000000003eLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "cdsy", OP48(0xeb0000000031LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "csg", OP48(0xeb0000000030LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "csg", OP48(0xeb0000000030LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "lctlg", OP48(0xeb000000002fLL), MASK_RSY_CCRD, INSTR_RSY_CCRD, 2, 3}, + { "lctlg", OP48(0xeb000000002fLL), MASK_RSE_CCRD, INSTR_RSE_CCRD, 2, 2}, + { "stcmy", OP48(0xeb000000002dLL), MASK_RSY_RURD, INSTR_RSY_RURD, 2, 3}, + { "stcmh", OP48(0xeb000000002cLL), MASK_RSY_RURD, INSTR_RSY_RURD, 2, 3}, + { "stcmh", OP48(0xeb000000002cLL), MASK_RSE_RURD, INSTR_RSE_RURD, 2, 2}, + { "stmh", OP48(0xeb0000000026LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "stmh", OP48(0xeb0000000026LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "stctg", OP48(0xeb0000000025LL), MASK_RSY_CCRD, INSTR_RSY_CCRD, 2, 3}, + { "stctg", OP48(0xeb0000000025LL), MASK_RSE_CCRD, INSTR_RSE_CCRD, 2, 2}, + { "stmg", OP48(0xeb0000000024LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "stmg", OP48(0xeb0000000024LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "clmy", OP48(0xeb0000000021LL), MASK_RSY_RURD, INSTR_RSY_RURD, 2, 3}, + { "clmh", OP48(0xeb0000000020LL), MASK_RSY_RURD, INSTR_RSY_RURD, 2, 3}, + { "clmh", OP48(0xeb0000000020LL), MASK_RSE_RURD, INSTR_RSE_RURD, 2, 2}, + { "rll", OP48(0xeb000000001dLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 3, 3}, + { "rll", OP48(0xeb000000001dLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 3, 2}, + { "rllg", OP48(0xeb000000001cLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "rllg", OP48(0xeb000000001cLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "csy", OP48(0xeb0000000014LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "tracg", OP48(0xeb000000000fLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "tracg", OP48(0xeb000000000fLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "sllg", OP48(0xeb000000000dLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "sllg", OP48(0xeb000000000dLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "srlg", OP48(0xeb000000000cLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "srlg", OP48(0xeb000000000cLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "slag", OP48(0xeb000000000bLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "slag", OP48(0xeb000000000bLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "srag", OP48(0xeb000000000aLL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "srag", OP48(0xeb000000000aLL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "lmg", OP48(0xeb0000000004LL), MASK_RSY_RRRD, INSTR_RSY_RRRD, 2, 3}, + { "lmg", OP48(0xeb0000000004LL), MASK_RSE_RRRD, INSTR_RSE_RRRD, 2, 2}, + { "unpka", OP8(0xeaLL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "pka", OP8(0xe9LL), MASK_SS_L2RDRD, INSTR_SS_L2RDRD, 3, 0}, + { "mvcin", OP8(0xe8LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "mvcdk", OP16(0xe50fLL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 3, 0}, + { "mvcsk", OP16(0xe50eLL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 3, 0}, + { "tprot", OP16(0xe501LL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 3, 0}, + { "strag", OP48(0xe50000000002LL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 2, 2}, + { "lasp", OP16(0xe500LL), MASK_SSE_RDRD, INSTR_SSE_RDRD, 3, 0}, + { "slb", OP48(0xe30000000099LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3}, + { "slb", OP48(0xe30000000099LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "alc", OP48(0xe30000000098LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3}, + { "alc", OP48(0xe30000000098LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "dl", OP48(0xe30000000097LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3}, + { "dl", OP48(0xe30000000097LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "ml", OP48(0xe30000000096LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3}, + { "ml", OP48(0xe30000000096LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "llh", OP48(0xe30000000095LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 4}, + { "llc", OP48(0xe30000000094LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 4}, + { "llgh", OP48(0xe30000000091LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "llgh", OP48(0xe30000000091LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "llgc", OP48(0xe30000000090LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "llgc", OP48(0xe30000000090LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "lpq", OP48(0xe3000000008fLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lpq", OP48(0xe3000000008fLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "stpq", OP48(0xe3000000008eLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "stpq", OP48(0xe3000000008eLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "slbg", OP48(0xe30000000089LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "slbg", OP48(0xe30000000089LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "alcg", OP48(0xe30000000088LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "alcg", OP48(0xe30000000088LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "dlg", OP48(0xe30000000087LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "dlg", OP48(0xe30000000087LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "mlg", OP48(0xe30000000086LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "mlg", OP48(0xe30000000086LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "xg", OP48(0xe30000000082LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "xg", OP48(0xe30000000082LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "og", OP48(0xe30000000081LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "og", OP48(0xe30000000081LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "ng", OP48(0xe30000000080LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "ng", OP48(0xe30000000080LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "shy", OP48(0xe3000000007bLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "ahy", OP48(0xe3000000007aLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "chy", OP48(0xe30000000079LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lhy", OP48(0xe30000000078LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lgb", OP48(0xe30000000077LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lb", OP48(0xe30000000076LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "icy", OP48(0xe30000000073LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "stcy", OP48(0xe30000000072LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lay", OP48(0xe30000000071LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "sthy", OP48(0xe30000000070LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "sly", OP48(0xe3000000005fLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "aly", OP48(0xe3000000005eLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "sy", OP48(0xe3000000005bLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "ay", OP48(0xe3000000005aLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "cy", OP48(0xe30000000059LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "ly", OP48(0xe30000000058LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "xy", OP48(0xe30000000057LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "oy", OP48(0xe30000000056LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "cly", OP48(0xe30000000055LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "ny", OP48(0xe30000000054LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "msy", OP48(0xe30000000051LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "sty", OP48(0xe30000000050LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "bctg", OP48(0xe30000000046LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "bctg", OP48(0xe30000000046LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "strvh", OP48(0xe3000000003fLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "strvh", OP48(0xe3000000003fLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "strv", OP48(0xe3000000003eLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3}, + { "strv", OP48(0xe3000000003eLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "clgf", OP48(0xe30000000031LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "clgf", OP48(0xe30000000031LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "cgf", OP48(0xe30000000030LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "cgf", OP48(0xe30000000030LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "strvg", OP48(0xe3000000002fLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "strvg", OP48(0xe3000000002fLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "cvdg", OP48(0xe3000000002eLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "cvdg", OP48(0xe3000000002eLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "cvdy", OP48(0xe30000000026LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "stg", OP48(0xe30000000024LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "stg", OP48(0xe30000000024LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "clg", OP48(0xe30000000021LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "clg", OP48(0xe30000000021LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "cg", OP48(0xe30000000020LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "cg", OP48(0xe30000000020LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "lrvh", OP48(0xe3000000001fLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3}, + { "lrvh", OP48(0xe3000000001fLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "lrv", OP48(0xe3000000001eLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 3, 3}, + { "lrv", OP48(0xe3000000001eLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 3, 2}, + { "dsgf", OP48(0xe3000000001dLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "dsgf", OP48(0xe3000000001dLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "msgf", OP48(0xe3000000001cLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "msgf", OP48(0xe3000000001cLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "slgf", OP48(0xe3000000001bLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "slgf", OP48(0xe3000000001bLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "algf", OP48(0xe3000000001aLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "algf", OP48(0xe3000000001aLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "sgf", OP48(0xe30000000019LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "sgf", OP48(0xe30000000019LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "agf", OP48(0xe30000000018LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "agf", OP48(0xe30000000018LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "llgt", OP48(0xe30000000017LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "llgt", OP48(0xe30000000017LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "llgf", OP48(0xe30000000016LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "llgf", OP48(0xe30000000016LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "lgh", OP48(0xe30000000015LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lgh", OP48(0xe30000000015LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "lgf", OP48(0xe30000000014LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lgf", OP48(0xe30000000014LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "lray", OP48(0xe30000000013LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lt", OP48(0xe30000000012LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 4}, + { "lrvg", OP48(0xe3000000000fLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lrvg", OP48(0xe3000000000fLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "cvbg", OP48(0xe3000000000eLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "cvbg", OP48(0xe3000000000eLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "dsg", OP48(0xe3000000000dLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "dsg", OP48(0xe3000000000dLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "msg", OP48(0xe3000000000cLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "msg", OP48(0xe3000000000cLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "slg", OP48(0xe3000000000bLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "slg", OP48(0xe3000000000bLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "alg", OP48(0xe3000000000aLL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "alg", OP48(0xe3000000000aLL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "sg", OP48(0xe30000000009LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "sg", OP48(0xe30000000009LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "ag", OP48(0xe30000000008LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "ag", OP48(0xe30000000008LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "cvby", OP48(0xe30000000006LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lg", OP48(0xe30000000004LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lg", OP48(0xe30000000004LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "lrag", OP48(0xe30000000003LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 3}, + { "lrag", OP48(0xe30000000003LL), MASK_RXE_RRRD, INSTR_RXE_RRRD, 2, 2}, + { "ltg", OP48(0xe30000000002LL), MASK_RXY_RRRD, INSTR_RXY_RRRD, 2, 4}, + { "unpku", OP8(0xe2LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "pku", OP8(0xe1LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "edmk", OP8(0xdfLL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "ed", OP8(0xdeLL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "trt", OP8(0xddLL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "tr", OP8(0xdcLL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "mvcs", OP8(0xdbLL), MASK_SS_RRRDRD, INSTR_SS_RRRDRD, 3, 0}, + { "mvcp", OP8(0xdaLL), MASK_SS_RRRDRD, INSTR_SS_RRRDRD, 3, 0}, + { "mvck", OP8(0xd9LL), MASK_SS_RRRDRD, INSTR_SS_RRRDRD, 3, 0}, + { "xc", OP8(0xd7LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "oc", OP8(0xd6LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "clc", OP8(0xd5LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "nc", OP8(0xd4LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "mvz", OP8(0xd3LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "mvc", OP8(0xd2LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "mvn", OP8(0xd1LL), MASK_SS_L0RDRD, INSTR_SS_L0RDRD, 3, 0}, + { "csst", OP16(0xc802LL), MASK_SSF_RRDRD, INSTR_SSF_RRDRD, 2, 5}, + { "ectg", OP16(0xc801LL), MASK_SSF_RRDRD, INSTR_SSF_RRDRD, 2, 5}, + { "mvcos", OP16(0xc800LL), MASK_SSF_RRDRD, INSTR_SSF_RRDRD, 2, 4}, + { "clfi", OP16(0xc20fLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "clgfi", OP16(0xc20eLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "cfi", OP16(0xc20dLL), MASK_RIL_RI, INSTR_RIL_RI, 2, 4}, + { "cgfi", OP16(0xc20cLL), MASK_RIL_RI, INSTR_RIL_RI, 2, 4}, + { "alfi", OP16(0xc20bLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "algfi", OP16(0xc20aLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "afi", OP16(0xc209LL), MASK_RIL_RI, INSTR_RIL_RI, 2, 4}, + { "agfi", OP16(0xc208LL), MASK_RIL_RI, INSTR_RIL_RI, 2, 4}, + { "slfi", OP16(0xc205LL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "slgfi", OP16(0xc204LL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "jg", OP16(0xc0f4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgno", OP16(0xc0e4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnh", OP16(0xc0d4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnp", OP16(0xc0d4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgle", OP16(0xc0c4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnl", OP16(0xc0b4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnm", OP16(0xc0b4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jghe", OP16(0xc0a4LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnlh", OP16(0xc094LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jge", OP16(0xc084LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgz", OP16(0xc084LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgne", OP16(0xc074LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnz", OP16(0xc074LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jglh", OP16(0xc064LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnhe", OP16(0xc054LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgl", OP16(0xc044LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgm", OP16(0xc044LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgnle", OP16(0xc034LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgh", OP16(0xc024LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgp", OP16(0xc024LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "jgo", OP16(0xc014LL), MASK_RIL_0P, INSTR_RIL_0P, 3, 2}, + { "llilf", OP16(0xc00fLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "llihf", OP16(0xc00eLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "oilf", OP16(0xc00dLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "oihf", OP16(0xc00cLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "nilf", OP16(0xc00bLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "nihf", OP16(0xc00aLL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "iilf", OP16(0xc009LL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "iihf", OP16(0xc008LL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "xilf", OP16(0xc007LL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "xihf", OP16(0xc006LL), MASK_RIL_RU, INSTR_RIL_RU, 2, 4}, + { "brasl", OP16(0xc005LL), MASK_RIL_RP, INSTR_RIL_RP, 3, 2}, + { "brcl", OP16(0xc004LL), MASK_RIL_UP, INSTR_RIL_UP, 3, 2}, + { "lgfi", OP16(0xc001LL), MASK_RIL_RI, INSTR_RIL_RI, 2, 4}, + { "larl", OP16(0xc000LL), MASK_RIL_RP, INSTR_RIL_RP, 3, 2}, + { "icm", OP8(0xbfLL), MASK_RS_RURD, INSTR_RS_RURD, 3, 0}, + { "stcm", OP8(0xbeLL), MASK_RS_RURD, INSTR_RS_RURD, 3, 0}, + { "clm", OP8(0xbdLL), MASK_RS_RURD, INSTR_RS_RURD, 3, 0}, + { "cds", OP8(0xbbLL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "cs", OP8(0xbaLL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "cu42", OP16(0xb9b3LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "cu41", OP16(0xb9b2LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "cu24", OP16(0xb9b1LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "cu14", OP16(0xb9b0LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "lptea", OP16(0xb9aaLL), MASK_RRF_RURR, INSTR_RRF_RURR, 2, 4}, + { "esea", OP16(0xb99dLL), MASK_RRE_R0, INSTR_RRE_R0, 2, 2}, + { "slbr", OP16(0xb999LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 2}, + { "alcr", OP16(0xb998LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 2}, + { "dlr", OP16(0xb997LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 2}, + { "mlr", OP16(0xb996LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 2}, + { "llhr", OP16(0xb995LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "llcr", OP16(0xb994LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "troo", OP16(0xb993LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 3, 4}, + { "troo", OP16(0xb993LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "trot", OP16(0xb992LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 3, 4}, + { "trot", OP16(0xb992LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "trto", OP16(0xb991LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 3, 4}, + { "trto", OP16(0xb991LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "trtt", OP16(0xb990LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 3, 4}, + { "trtt", OP16(0xb990LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "idte", OP16(0xb98eLL), MASK_RRF_R0RR, INSTR_RRF_R0RR, 2, 3}, + { "epsw", OP16(0xb98dLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 2}, + { "cspg", OP16(0xb98aLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 3}, + { "slbgr", OP16(0xb989LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "alcgr", OP16(0xb988LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "dlgr", OP16(0xb987LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "mlgr", OP16(0xb986LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "llghr", OP16(0xb985LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "llgcr", OP16(0xb984LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "flogr", OP16(0xb983LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "xgr", OP16(0xb982LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "ogr", OP16(0xb981LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "ngr", OP16(0xb980LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "bctgr", OP16(0xb946LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "klmd", OP16(0xb93fLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 3}, + { "kimd", OP16(0xb93eLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 3}, + { "clgfr", OP16(0xb931LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "cgfr", OP16(0xb930LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "kmc", OP16(0xb92fLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 3}, + { "km", OP16(0xb92eLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 3}, + { "lhr", OP16(0xb927LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "lbr", OP16(0xb926LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "sturg", OP16(0xb925LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "clgr", OP16(0xb921LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "cgr", OP16(0xb920LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lrvr", OP16(0xb91fLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 2}, + { "kmac", OP16(0xb91eLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 3}, + { "dsgfr", OP16(0xb91dLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "msgfr", OP16(0xb91cLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "slgfr", OP16(0xb91bLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "algfr", OP16(0xb91aLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "sgfr", OP16(0xb919LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "agfr", OP16(0xb918LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "llgtr", OP16(0xb917LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "llgfr", OP16(0xb916LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lgfr", OP16(0xb914LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lcgfr", OP16(0xb913LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "ltgfr", OP16(0xb912LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lngfr", OP16(0xb911LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lpgfr", OP16(0xb910LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lrvgr", OP16(0xb90fLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "eregg", OP16(0xb90eLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "dsgr", OP16(0xb90dLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "msgr", OP16(0xb90cLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "slgr", OP16(0xb90bLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "algr", OP16(0xb90aLL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "sgr", OP16(0xb909LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "agr", OP16(0xb908LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lghr", OP16(0xb907LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "lgbr", OP16(0xb906LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 4}, + { "lurag", OP16(0xb905LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lgr", OP16(0xb904LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lcgr", OP16(0xb903LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "ltgr", OP16(0xb902LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lngr", OP16(0xb901LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lpgr", OP16(0xb900LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "lctl", OP8(0xb7LL), MASK_RS_CCRD, INSTR_RS_CCRD, 3, 0}, + { "stctl", OP8(0xb6LL), MASK_RS_CCRD, INSTR_RS_CCRD, 3, 0}, + { "rrxtr", OP16(0xb3ffLL), MASK_RRF_FFFU, INSTR_RRF_FFFU, 2, 5}, + { "iextr", OP16(0xb3feLL), MASK_RRF_F0FR, INSTR_RRF_F0FR, 2, 5}, + { "qaxtr", OP16(0xb3fdLL), MASK_RRF_FFFU, INSTR_RRF_FFFU, 2, 5}, + { "cextr", OP16(0xb3fcLL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "cxstr", OP16(0xb3fbLL), MASK_RRE_FR, INSTR_RRE_FR, 2, 5}, + { "cxutr", OP16(0xb3faLL), MASK_RRE_FR, INSTR_RRE_FR, 2, 5}, + { "cxgtr", OP16(0xb3f9LL), MASK_RRE_FR, INSTR_RRE_FR, 2, 5}, + { "rrdtr", OP16(0xb3f7LL), MASK_RRF_FFFU, INSTR_RRF_FFFU, 2, 5}, + { "iedtr", OP16(0xb3f6LL), MASK_RRF_F0FR, INSTR_RRF_F0FR, 2, 5}, + { "qadtr", OP16(0xb3f5LL), MASK_RRF_FFFU, INSTR_RRF_FFFU, 2, 5}, + { "cedtr", OP16(0xb3f4LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "cdstr", OP16(0xb3f3LL), MASK_RRE_FR, INSTR_RRE_FR, 2, 5}, + { "cdutr", OP16(0xb3f2LL), MASK_RRE_FR, INSTR_RRE_FR, 2, 5}, + { "cdgtr", OP16(0xb3f1LL), MASK_RRE_FR, INSTR_RRE_FR, 2, 5}, + { "esxtr", OP16(0xb3efLL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "eextr", OP16(0xb3edLL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "cxtr", OP16(0xb3ecLL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "csxtr", OP16(0xb3ebLL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "cuxtr", OP16(0xb3eaLL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "cgxtr", OP16(0xb3e9LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 5}, + { "kxtr", OP16(0xb3e8LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "esdtr", OP16(0xb3e7LL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "eedtr", OP16(0xb3e5LL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "cdtr", OP16(0xb3e4LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "csdtr", OP16(0xb3e3LL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "cudtr", OP16(0xb3e2LL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "cgdtr", OP16(0xb3e1LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 5}, + { "kdtr", OP16(0xb3e0LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "fixtr", OP16(0xb3dfLL), MASK_RRF_UUFF, INSTR_RRF_UUFF, 2, 5}, + { "ltxtr", OP16(0xb3deLL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "ldxtr", OP16(0xb3ddLL), MASK_RRF_UUFF, INSTR_RRF_UUFF, 2, 5}, + { "lxdtr", OP16(0xb3dcLL), MASK_RRF_0UFF, INSTR_RRF_0UFF, 2, 5}, + { "sxtr", OP16(0xb3dbLL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "axtr", OP16(0xb3daLL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "dxtr", OP16(0xb3d9LL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "mxtr", OP16(0xb3d8LL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "fidtr", OP16(0xb3d7LL), MASK_RRF_UUFF, INSTR_RRF_UUFF, 2, 5}, + { "ltdtr", OP16(0xb3d6LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "ledtr", OP16(0xb3d5LL), MASK_RRF_UUFF, INSTR_RRF_UUFF, 2, 5}, + { "ldetr", OP16(0xb3d4LL), MASK_RRF_0UFF, INSTR_RRF_0UFF, 2, 5}, + { "sdtr", OP16(0xb3d3LL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "adtr", OP16(0xb3d2LL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "ddtr", OP16(0xb3d1LL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "mdtr", OP16(0xb3d0LL), MASK_RRR_F0FF, INSTR_RRR_F0FF, 2, 5}, + { "lgdr", OP16(0xb3cdLL), MASK_RRE_RF, INSTR_RRE_RF, 2, 5}, + { "cgxr", OP16(0xb3caLL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cgdr", OP16(0xb3c9LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cger", OP16(0xb3c8LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cxgr", OP16(0xb3c6LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "cdgr", OP16(0xb3c5LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "cegr", OP16(0xb3c4LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "ldgr", OP16(0xb3c1LL), MASK_RRE_FR, INSTR_RRE_FR, 2, 5}, + { "cfxr", OP16(0xb3baLL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cfdr", OP16(0xb3b9LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cfer", OP16(0xb3b8LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cxfr", OP16(0xb3b6LL), MASK_RRE_RF, INSTR_RRE_RF, 3, 0}, + { "cdfr", OP16(0xb3b5LL), MASK_RRE_RF, INSTR_RRE_RF, 3, 0}, + { "cefr", OP16(0xb3b4LL), MASK_RRE_RF, INSTR_RRE_RF, 3, 0}, + { "cgxbr", OP16(0xb3aaLL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cgdbr", OP16(0xb3a9LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cgebr", OP16(0xb3a8LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 2, 2}, + { "cxgbr", OP16(0xb3a6LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "cdgbr", OP16(0xb3a5LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "cegbr", OP16(0xb3a4LL), MASK_RRE_RR, INSTR_RRE_RR, 2, 2}, + { "cfxbr", OP16(0xb39aLL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 3, 0}, + { "cfdbr", OP16(0xb399LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 3, 0}, + { "cfebr", OP16(0xb398LL), MASK_RRF_U0RF, INSTR_RRF_U0RF, 3, 0}, + { "cxfbr", OP16(0xb396LL), MASK_RRE_RF, INSTR_RRE_RF, 3, 0}, + { "cdfbr", OP16(0xb395LL), MASK_RRE_RF, INSTR_RRE_RF, 3, 0}, + { "cefbr", OP16(0xb394LL), MASK_RRE_RF, INSTR_RRE_RF, 3, 0}, + { "efpc", OP16(0xb38cLL), MASK_RRE_RR_OPT, INSTR_RRE_RR_OPT, 3, 0}, + { "sfasr", OP16(0xb385LL), MASK_RRE_R0, INSTR_RRE_R0, 2, 5}, + { "sfpc", OP16(0xb384LL), MASK_RRE_RR_OPT, INSTR_RRE_RR_OPT, 3, 0}, + { "fidr", OP16(0xb37fLL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "fier", OP16(0xb377LL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "lzxr", OP16(0xb376LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "lzdr", OP16(0xb375LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "lzer", OP16(0xb374LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "lcdfr", OP16(0xb373LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "cpsdr", OP16(0xb372LL), MASK_RRF_F0FF2, INSTR_RRF_F0FF2, 2, 5}, + { "lndfr", OP16(0xb371LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "lpdfr", OP16(0xb370LL), MASK_RRE_FF, INSTR_RRE_FF, 2, 5}, + { "cxr", OP16(0xb369LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "fixr", OP16(0xb367LL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "lexr", OP16(0xb366LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lxr", OP16(0xb365LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "lcxr", OP16(0xb363LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "ltxr", OP16(0xb362LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lnxr", OP16(0xb361LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lpxr", OP16(0xb360LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "fidbr", OP16(0xb35fLL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "didbr", OP16(0xb35bLL), MASK_RRF_FUFF, INSTR_RRF_FUFF, 3, 0}, + { "thdr", OP16(0xb359LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "thder", OP16(0xb358LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "fiebr", OP16(0xb357LL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "diebr", OP16(0xb353LL), MASK_RRF_FUFF, INSTR_RRF_FUFF, 3, 0}, + { "tbdr", OP16(0xb351LL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "tbedr", OP16(0xb350LL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "dxbr", OP16(0xb34dLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "mxbr", OP16(0xb34cLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "sxbr", OP16(0xb34bLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "axbr", OP16(0xb34aLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "cxbr", OP16(0xb349LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "kxbr", OP16(0xb348LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "fixbr", OP16(0xb347LL), MASK_RRF_U0FF, INSTR_RRF_U0FF, 3, 0}, + { "lexbr", OP16(0xb346LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "ldxbr", OP16(0xb345LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "ledbr", OP16(0xb344LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lcxbr", OP16(0xb343LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "ltxbr", OP16(0xb342LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lnxbr", OP16(0xb341LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lpxbr", OP16(0xb340LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "msdr", OP16(0xb33fLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 3}, + { "madr", OP16(0xb33eLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 3}, + { "myhr", OP16(0xb33dLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 2, 4}, + { "mayhr", OP16(0xb33cLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 2, 4}, + { "myr", OP16(0xb33bLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 2, 4}, + { "mayr", OP16(0xb33aLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 2, 4}, + { "mylr", OP16(0xb339LL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 2, 4}, + { "maylr", OP16(0xb338LL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 2, 4}, + { "meer", OP16(0xb337LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "sqxr", OP16(0xb336LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "mser", OP16(0xb32fLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 3}, + { "maer", OP16(0xb32eLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 3}, + { "lxer", OP16(0xb326LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lxdr", OP16(0xb325LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lder", OP16(0xb324LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "msdbr", OP16(0xb31fLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 0}, + { "madbr", OP16(0xb31eLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 0}, + { "ddbr", OP16(0xb31dLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "mdbr", OP16(0xb31cLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "sdbr", OP16(0xb31bLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "adbr", OP16(0xb31aLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "cdbr", OP16(0xb319LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "kdbr", OP16(0xb318LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "meebr", OP16(0xb317LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "sqxbr", OP16(0xb316LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "sqdbr", OP16(0xb315LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "sqebr", OP16(0xb314LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lcdbr", OP16(0xb313LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "ltdbr", OP16(0xb312LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lndbr", OP16(0xb311LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lpdbr", OP16(0xb310LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "msebr", OP16(0xb30fLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 0}, + { "maebr", OP16(0xb30eLL), MASK_RRF_F0FF, INSTR_RRF_F0FF, 3, 0}, + { "debr", OP16(0xb30dLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "mdebr", OP16(0xb30cLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "sebr", OP16(0xb30bLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "aebr", OP16(0xb30aLL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "cebr", OP16(0xb309LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "kebr", OP16(0xb308LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "mxdbr", OP16(0xb307LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lxebr", OP16(0xb306LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lxdbr", OP16(0xb305LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "ldebr", OP16(0xb304LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lcebr", OP16(0xb303LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "ltebr", OP16(0xb302LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lnebr", OP16(0xb301LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "lpebr", OP16(0xb300LL), MASK_RRE_FF, INSTR_RRE_FF, 3, 0}, + { "trap4", OP16(0xb2ffLL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "lfas", OP16(0xb2bdLL), MASK_S_RD, INSTR_S_RD, 2, 5}, + { "srnmt", OP16(0xb2b9LL), MASK_S_RD, INSTR_S_RD, 2, 5}, + { "lpswe", OP16(0xb2b2LL), MASK_S_RD, INSTR_S_RD, 2, 2}, + { "stfl", OP16(0xb2b1LL), MASK_S_RD, INSTR_S_RD, 3, 2}, + { "stfle", OP16(0xb2b0LL), MASK_S_RD, INSTR_S_RD, 2, 4}, + { "cu12", OP16(0xb2a7LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "cutfu", OP16(0xb2a7LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "cutfu", OP16(0xb2a7LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "cu21", OP16(0xb2a6LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "cuutf", OP16(0xb2a6LL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "cuutf", OP16(0xb2a6LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "tre", OP16(0xb2a5LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "lfpc", OP16(0xb29dLL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stfpc", OP16(0xb29cLL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "srnm", OP16(0xb299LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stsi", OP16(0xb27dLL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stckf", OP16(0xb27cLL), MASK_S_RD, INSTR_S_RD, 2, 4}, + { "sacf", OP16(0xb279LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stcke", OP16(0xb278LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "rp", OP16(0xb277LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "xsch", OP16(0xb276LL), MASK_S_00, INSTR_S_00, 3, 0}, + { "siga", OP16(0xb274LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "cmpsc", OP16(0xb263LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "cmpsc", OP16(0xb263LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "srst", OP16(0xb25eLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "clst", OP16(0xb25dLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "bsa", OP16(0xb25aLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "bsg", OP16(0xb258LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "cuse", OP16(0xb257LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "mvst", OP16(0xb255LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "mvpg", OP16(0xb254LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "msr", OP16(0xb252LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "csp", OP16(0xb250LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "ear", OP16(0xb24fLL), MASK_RRE_RA, INSTR_RRE_RA, 3, 0}, + { "sar", OP16(0xb24eLL), MASK_RRE_AR, INSTR_RRE_AR, 3, 0}, + { "cpya", OP16(0xb24dLL), MASK_RRE_AA, INSTR_RRE_AA, 3, 0}, + { "tar", OP16(0xb24cLL), MASK_RRE_AR, INSTR_RRE_AR, 3, 0}, + { "lura", OP16(0xb24bLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "esta", OP16(0xb24aLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "ereg", OP16(0xb249LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "palb", OP16(0xb248LL), MASK_RRE_00, INSTR_RRE_00, 3, 0}, + { "msta", OP16(0xb247LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "stura", OP16(0xb246LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "sqer", OP16(0xb245LL), MASK_RRE_F0, INSTR_RRE_F0, 3, 0}, + { "sqdr", OP16(0xb244LL), MASK_RRE_F0, INSTR_RRE_F0, 3, 0}, + { "cksm", OP16(0xb241LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "bakr", OP16(0xb240LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "schm", OP16(0xb23cLL), MASK_S_00, INSTR_S_00, 3, 0}, + { "rchp", OP16(0xb23bLL), MASK_S_00, INSTR_S_00, 3, 0}, + { "stcps", OP16(0xb23aLL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stcrw", OP16(0xb239LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "rsch", OP16(0xb238LL), MASK_S_00, INSTR_S_00, 3, 0}, + { "sal", OP16(0xb237LL), MASK_S_00, INSTR_S_00, 3, 0}, + { "tpi", OP16(0xb236LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "tsch", OP16(0xb235LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stsch", OP16(0xb234LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "ssch", OP16(0xb233LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "msch", OP16(0xb232LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "hsch", OP16(0xb231LL), MASK_S_00, INSTR_S_00, 3, 0}, + { "csch", OP16(0xb230LL), MASK_S_00, INSTR_S_00, 3, 0}, + { "pgout", OP16(0xb22fLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "pgin", OP16(0xb22eLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "dxr", OP16(0xb22dLL), MASK_RRE_F0, INSTR_RRE_F0, 3, 0}, + { "tb", OP16(0xb22cLL), MASK_RRE_0R, INSTR_RRE_0R, 3, 0}, + { "sske", OP16(0xb22bLL), MASK_RRF_M0RR, INSTR_RRF_M0RR, 2, 4}, + { "sske", OP16(0xb22bLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "rrbe", OP16(0xb22aLL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "iske", OP16(0xb229LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "pt", OP16(0xb228LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "esar", OP16(0xb227LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "epar", OP16(0xb226LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "ssar", OP16(0xb225LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "iac", OP16(0xb224LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "ivsk", OP16(0xb223LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "ipm", OP16(0xb222LL), MASK_RRE_R0, INSTR_RRE_R0, 3, 0}, + { "ipte", OP16(0xb221LL), MASK_RRE_RR, INSTR_RRE_RR, 3, 0}, + { "cfc", OP16(0xb21aLL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "sac", OP16(0xb219LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "pc", OP16(0xb218LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "sie", OP16(0xb214LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stap", OP16(0xb212LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stpx", OP16(0xb211LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "spx", OP16(0xb210LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "ptlb", OP16(0xb20dLL), MASK_S_00, INSTR_S_00, 3, 0}, + { "ipk", OP16(0xb20bLL), MASK_S_00, INSTR_S_00, 3, 0}, + { "spka", OP16(0xb20aLL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stpt", OP16(0xb209LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "spt", OP16(0xb208LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stckc", OP16(0xb207LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "sckc", OP16(0xb206LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stck", OP16(0xb205LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "sck", OP16(0xb204LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "stidp", OP16(0xb202LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "lra", OP8(0xb1LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "mc", OP8(0xafLL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "sigp", OP8(0xaeLL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "stosm", OP8(0xadLL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "stnsm", OP8(0xacLL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "clcle", OP8(0xa9LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "mvcle", OP8(0xa8LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "j", OP16(0xa7f4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jno", OP16(0xa7e4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnh", OP16(0xa7d4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnp", OP16(0xa7d4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jle", OP16(0xa7c4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnl", OP16(0xa7b4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnm", OP16(0xa7b4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jhe", OP16(0xa7a4LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnlh", OP16(0xa794LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "je", OP16(0xa784LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jz", OP16(0xa784LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jne", OP16(0xa774LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnz", OP16(0xa774LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jlh", OP16(0xa764LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnhe", OP16(0xa754LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jl", OP16(0xa744LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jm", OP16(0xa744LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jnle", OP16(0xa734LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jh", OP16(0xa724LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jp", OP16(0xa724LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "jo", OP16(0xa714LL), MASK_RI_0P, INSTR_RI_0P, 3, 0}, + { "cghi", OP16(0xa70fLL), MASK_RI_RI, INSTR_RI_RI, 2, 2}, + { "chi", OP16(0xa70eLL), MASK_RI_RI, INSTR_RI_RI, 3, 0}, + { "mghi", OP16(0xa70dLL), MASK_RI_RI, INSTR_RI_RI, 2, 2}, + { "mhi", OP16(0xa70cLL), MASK_RI_RI, INSTR_RI_RI, 3, 0}, + { "aghi", OP16(0xa70bLL), MASK_RI_RI, INSTR_RI_RI, 2, 2}, + { "ahi", OP16(0xa70aLL), MASK_RI_RI, INSTR_RI_RI, 3, 0}, + { "lghi", OP16(0xa709LL), MASK_RI_RI, INSTR_RI_RI, 2, 2}, + { "lhi", OP16(0xa708LL), MASK_RI_RI, INSTR_RI_RI, 3, 0}, + { "brctg", OP16(0xa707LL), MASK_RI_RP, INSTR_RI_RP, 2, 2}, + { "brct", OP16(0xa706LL), MASK_RI_RP, INSTR_RI_RP, 3, 0}, + { "bras", OP16(0xa705LL), MASK_RI_RP, INSTR_RI_RP, 3, 0}, + { "brc", OP16(0xa704LL), MASK_RI_UP, INSTR_RI_UP, 3, 0}, + { "tmhl", OP16(0xa703LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "tmhh", OP16(0xa702LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "tml", OP16(0xa701LL), MASK_RI_RU, INSTR_RI_RU, 3, 0}, + { "tmll", OP16(0xa701LL), MASK_RI_RU, INSTR_RI_RU, 3, 0}, + { "tmh", OP16(0xa700LL), MASK_RI_RU, INSTR_RI_RU, 3, 0}, + { "tmlh", OP16(0xa700LL), MASK_RI_RU, INSTR_RI_RU, 3, 0}, + { "llill", OP16(0xa50fLL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "llilh", OP16(0xa50eLL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "llihl", OP16(0xa50dLL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "llihh", OP16(0xa50cLL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "oill", OP16(0xa50bLL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "oilh", OP16(0xa50aLL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "oihl", OP16(0xa509LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "oihh", OP16(0xa508LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "nill", OP16(0xa507LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "nilh", OP16(0xa506LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "nihl", OP16(0xa505LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "nihh", OP16(0xa504LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "iill", OP16(0xa503LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "iilh", OP16(0xa502LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "iihl", OP16(0xa501LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "iihh", OP16(0xa500LL), MASK_RI_RU, INSTR_RI_RU, 2, 2}, + { "stam", OP8(0x9bLL), MASK_RS_AARD, INSTR_RS_AARD, 3, 0}, + { "lam", OP8(0x9aLL), MASK_RS_AARD, INSTR_RS_AARD, 3, 0}, + { "trace", OP8(0x99LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "lm", OP8(0x98LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "xi", OP8(0x97LL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "oi", OP8(0x96LL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "cli", OP8(0x95LL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "ni", OP8(0x94LL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "ts", OP8(0x93LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "mvi", OP8(0x92LL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "tm", OP8(0x91LL), MASK_SI_URD, INSTR_SI_URD, 3, 0}, + { "stm", OP8(0x90LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "slda", OP8(0x8fLL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "srda", OP8(0x8eLL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "sldl", OP8(0x8dLL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "srdl", OP8(0x8cLL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "sla", OP8(0x8bLL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "sra", OP8(0x8aLL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "sll", OP8(0x89LL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "srl", OP8(0x88LL), MASK_RS_R0RD, INSTR_RS_R0RD, 3, 0}, + { "bxle", OP8(0x87LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "bxh", OP8(0x86LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "brxle", OP8(0x85LL), MASK_RSI_RRP, INSTR_RSI_RRP, 3, 0}, + { "brxh", OP8(0x84LL), MASK_RSI_RRP, INSTR_RSI_RRP, 3, 0}, + { "diag", OP8(0x83LL), MASK_RS_RRRD, INSTR_RS_RRRD, 3, 0}, + { "lpsw", OP8(0x82LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "ssm", OP8(0x80LL), MASK_S_RD, INSTR_S_RD, 3, 0}, + { "su", OP8(0x7fLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "au", OP8(0x7eLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "de", OP8(0x7dLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "me", OP8(0x7cLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "mde", OP8(0x7cLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "se", OP8(0x7bLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "ae", OP8(0x7aLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "ce", OP8(0x79LL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "le", OP8(0x78LL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "ms", OP8(0x71LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "ste", OP8(0x70LL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "sw", OP8(0x6fLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "aw", OP8(0x6eLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "dd", OP8(0x6dLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "md", OP8(0x6cLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "sd", OP8(0x6bLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "ad", OP8(0x6aLL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "cd", OP8(0x69LL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "ld", OP8(0x68LL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "mxd", OP8(0x67LL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "std", OP8(0x60LL), MASK_RX_FRRD, INSTR_RX_FRRD, 3, 0}, + { "sl", OP8(0x5fLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "al", OP8(0x5eLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "d", OP8(0x5dLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "m", OP8(0x5cLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "s", OP8(0x5bLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "a", OP8(0x5aLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "c", OP8(0x59LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "l", OP8(0x58LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "x", OP8(0x57LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "o", OP8(0x56LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "cl", OP8(0x55LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "n", OP8(0x54LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "lae", OP8(0x51LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "st", OP8(0x50LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "cvb", OP8(0x4fLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "cvd", OP8(0x4eLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "bas", OP8(0x4dLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "mh", OP8(0x4cLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "sh", OP8(0x4bLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "ah", OP8(0x4aLL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "ch", OP8(0x49LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "lh", OP8(0x48LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "b", OP16(0x47f0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bno", OP16(0x47e0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnh", OP16(0x47d0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnp", OP16(0x47d0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "ble", OP16(0x47c0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnl", OP16(0x47b0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnm", OP16(0x47b0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bhe", OP16(0x47a0LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnlh", OP16(0x4790LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "be", OP16(0x4780LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bz", OP16(0x4780LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bne", OP16(0x4770LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnz", OP16(0x4770LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "blh", OP16(0x4760LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnhe", OP16(0x4750LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bl", OP16(0x4740LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bm", OP16(0x4740LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bnle", OP16(0x4730LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bh", OP16(0x4720LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bp", OP16(0x4720LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bo", OP16(0x4710LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bc", OP8(0x47LL), MASK_RX_URRD, INSTR_RX_URRD, 3, 0}, + { "nop", OP16(0x4700LL), MASK_RX_0RRD, INSTR_RX_0RRD, 3, 0}, + { "bct", OP8(0x46LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "bal", OP8(0x45LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "ex", OP8(0x44LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "ic", OP8(0x43LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "stc", OP8(0x42LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "la", OP8(0x41LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "sth", OP8(0x40LL), MASK_RX_RRRD, INSTR_RX_RRRD, 3, 0}, + { "sur", OP8(0x3fLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "aur", OP8(0x3eLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "der", OP8(0x3dLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "mer", OP8(0x3cLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "mder", OP8(0x3cLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "ser", OP8(0x3bLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "aer", OP8(0x3aLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "cer", OP8(0x39LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "ler", OP8(0x38LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "sxr", OP8(0x37LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "axr", OP8(0x36LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lrer", OP8(0x35LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "ledr", OP8(0x35LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "her", OP8(0x34LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lcer", OP8(0x33LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lter", OP8(0x32LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lner", OP8(0x31LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lper", OP8(0x30LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "swr", OP8(0x2fLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "awr", OP8(0x2eLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "ddr", OP8(0x2dLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "mdr", OP8(0x2cLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "sdr", OP8(0x2bLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "adr", OP8(0x2aLL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "cdr", OP8(0x29LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "ldr", OP8(0x28LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "mxdr", OP8(0x27LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "mxr", OP8(0x26LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lrdr", OP8(0x25LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "ldxr", OP8(0x25LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "hdr", OP8(0x24LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lcdr", OP8(0x23LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "ltdr", OP8(0x22LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lndr", OP8(0x21LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "lpdr", OP8(0x20LL), MASK_RR_FF, INSTR_RR_FF, 3, 0}, + { "slr", OP8(0x1fLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "alr", OP8(0x1eLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "dr", OP8(0x1dLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "mr", OP8(0x1cLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "sr", OP8(0x1bLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "ar", OP8(0x1aLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "cr", OP8(0x19LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "lr", OP8(0x18LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "xr", OP8(0x17LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "or", OP8(0x16LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "clr", OP8(0x15LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "nr", OP8(0x14LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "lcr", OP8(0x13LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "ltr", OP8(0x12LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "lnr", OP8(0x11LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "lpr", OP8(0x10LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "clcl", OP8(0x0fLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "mvcl", OP8(0x0eLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "basr", OP8(0x0dLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "bassm", OP8(0x0cLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "bsm", OP8(0x0bLL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "svc", OP8(0x0aLL), MASK_RR_U0, INSTR_RR_U0, 3, 0}, + { "br", OP16(0x07f0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnor", OP16(0x07e0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnhr", OP16(0x07d0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnpr", OP16(0x07d0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bler", OP16(0x07c0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnlr", OP16(0x07b0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnmr", OP16(0x07b0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bher", OP16(0x07a0LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnlhr", OP16(0x0790LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "ber", OP16(0x0780LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bzr", OP16(0x0780LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bner", OP16(0x0770LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnzr", OP16(0x0770LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "blhr", OP16(0x0760LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnher", OP16(0x0750LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "blr", OP16(0x0740LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bmr", OP16(0x0740LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bnler", OP16(0x0730LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bhr", OP16(0x0720LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bpr", OP16(0x0720LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bor", OP16(0x0710LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bcr", OP8(0x07LL), MASK_RR_UR, INSTR_RR_UR, 3, 0}, + { "nopr", OP16(0x0700LL), MASK_RR_0R, INSTR_RR_0R, 3, 0}, + { "bctr", OP8(0x06LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "balr", OP8(0x05LL), MASK_RR_RR, INSTR_RR_RR, 3, 0}, + { "spm", OP8(0x04LL), MASK_RR_R0, INSTR_RR_R0, 3, 0}, + { "trap2", OP16(0x01ffLL), MASK_E, INSTR_E, 3, 0}, + { "sam64", OP16(0x010eLL), MASK_E, INSTR_E, 2, 2}, + { "sam31", OP16(0x010dLL), MASK_E, INSTR_E, 3, 2}, + { "sam24", OP16(0x010cLL), MASK_E, INSTR_E, 3, 2}, + { "tam", OP16(0x010bLL), MASK_E, INSTR_E, 3, 2}, + { "pfpo", OP16(0x010aLL), MASK_E, INSTR_E, 2, 5}, + { "sckpf", OP16(0x0107LL), MASK_E, INSTR_E, 3, 0}, + { "upt", OP16(0x0102LL), MASK_E, INSTR_E, 3, 0}, + { "pr", OP16(0x0101LL), MASK_E, INSTR_E, 3, 0} +}; + +const int s390_num_opcodes = + sizeof (s390_opcodes) / sizeof (s390_opcodes[0]); diff --git a/qemu/qemu-git/s390.ld b/qemu/qemu-git/s390.ld new file mode 100644 index 0000000..a9c5370 --- /dev/null +++ b/qemu/qemu-git/s390.ld @@ -0,0 +1,201 @@ +OUTPUT_FORMAT("elf32-s390", "elf32-s390", + "elf32-s390") +OUTPUT_ARCH(s390:31-bit) +ENTRY(_start) +/* __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.dyn : + { + *(.rel.init) + *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) + *(.rel.fini) + *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) + *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) + *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) + *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) + *(.rel.ctors) + *(.rel.dtors) + *(.rel.got) + *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) + *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) + *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) + *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) + *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) + } + .rela.dyn : + { + *(.rela.init) + *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) + *(.rela.fini) + *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) + *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) + *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) + *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) + *(.rela.ctors) + *(.rela.dtors) + *(.rela.got) + *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) + *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) + *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) + *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) + *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) + } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : + { + KEEP (*(.init)) + } =0x07070707 + .plt : { *(.plt) } + .text : + { + *(.text .stub .text.* .gnu.linkonce.t.*) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + } =0x07070707 + .fini : + { + KEEP (*(.fini)) + } =0x07070707 + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } + .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(0x1000) + (. & (0x1000 - 1)); + /* Ensure the __preinit_array_start label is properly aligned. We + could instead move the label definition inside the section, but + the linker would then create the section even if it turns out to + be empty, which isn't pretty. */ + . = ALIGN(32 / 8); + PROVIDE (__preinit_array_start = .); + .preinit_array : { *(.preinit_array) } + PROVIDE (__preinit_array_end = .); + PROVIDE (__init_array_start = .); + .init_array : { *(.init_array) } + PROVIDE (__init_array_end = .); + PROVIDE (__fini_array_start = .); + .fini_array : { *(.fini_array) } + PROVIDE (__fini_array_end = .); + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .eh_frame : { KEEP (*(.eh_frame)) } + .gcc_except_table : { *(.gcc_except_table) } + .dynamic : { *(.dynamic) } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .got : { *(.got.plt) *(.got) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata .sdata.* .gnu.linkonce.s.*) + } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .sbss : + { + PROVIDE (__sbss_start = .); + PROVIDE (___sbss_start = .); + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + PROVIDE (__sbss_end = .); + PROVIDE (___sbss_end = .); + } + .bss : + { + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. */ + . = ALIGN(32 / 8); + } + . = ALIGN(32 / 8); + _end = .; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/qemu/qemu-git/sh4-dis.c b/qemu/qemu-git/sh4-dis.c new file mode 100644 index 0000000..41fd866 --- /dev/null +++ b/qemu/qemu-git/sh4-dis.c @@ -0,0 +1,2083 @@ +/* Disassemble SH instructions. + Copyright 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#include +#include "dis-asm.h" + +#define DEFINE_TABLE + +typedef enum + { + HEX_0, + HEX_1, + HEX_2, + HEX_3, + HEX_4, + HEX_5, + HEX_6, + HEX_7, + HEX_8, + HEX_9, + HEX_A, + HEX_B, + HEX_C, + HEX_D, + HEX_E, + HEX_F, + HEX_XX00, + HEX_00YY, + REG_N, + REG_N_D, /* nnn0 */ + REG_N_B01, /* nn01 */ + REG_M, + SDT_REG_N, + REG_NM, + REG_B, + BRANCH_12, + BRANCH_8, + IMM0_4, + IMM0_4BY2, + IMM0_4BY4, + IMM1_4, + IMM1_4BY2, + IMM1_4BY4, + PCRELIMM_8BY2, + PCRELIMM_8BY4, + IMM0_8, + IMM0_8BY2, + IMM0_8BY4, + IMM1_8, + IMM1_8BY2, + IMM1_8BY4, + PPI, + NOPX, + NOPY, + MOVX, + MOVY, + MOVX_NOPY, + MOVY_NOPX, + PSH, + PMUL, + PPI3, + PPI3NC, + PDC, + PPIC, + REPEAT, + IMM0_3c, /* xxxx 0iii */ + IMM0_3s, /* xxxx 1iii */ + IMM0_3Uc, /* 0iii xxxx */ + IMM0_3Us, /* 1iii xxxx */ + IMM0_20_4, + IMM0_20, /* follows IMM0_20_4 */ + IMM0_20BY8, /* follows IMM0_20_4 */ + DISP0_12, + DISP0_12BY2, + DISP0_12BY4, + DISP0_12BY8, + DISP1_12, + DISP1_12BY2, + DISP1_12BY4, + DISP1_12BY8 + } +sh_nibble_type; + +typedef enum + { + A_END, + A_BDISP12, + A_BDISP8, + A_DEC_M, + A_DEC_N, + A_DISP_GBR, + A_PC, + A_DISP_PC, + A_DISP_PC_ABS, + A_DISP_REG_M, + A_DISP_REG_N, + A_GBR, + A_IMM, + A_INC_M, + A_INC_N, + A_IND_M, + A_IND_N, + A_IND_R0_REG_M, + A_IND_R0_REG_N, + A_MACH, + A_MACL, + A_PR, + A_R0, + A_R0_GBR, + A_REG_M, + A_REG_N, + A_REG_B, + A_SR, + A_VBR, + A_TBR, + A_DISP_TBR, + A_DISP2_TBR, + A_DEC_R15, + A_INC_R15, + A_MOD, + A_RE, + A_RS, + A_DSR, + DSP_REG_M, + DSP_REG_N, + DSP_REG_X, + DSP_REG_Y, + DSP_REG_E, + DSP_REG_F, + DSP_REG_G, + DSP_REG_A_M, + DSP_REG_AX, + DSP_REG_XY, + DSP_REG_AY, + DSP_REG_YX, + AX_INC_N, + AY_INC_N, + AXY_INC_N, + AYX_INC_N, + AX_IND_N, + AY_IND_N, + AXY_IND_N, + AYX_IND_N, + AX_PMOD_N, + AXY_PMOD_N, + AY_PMOD_N, + AYX_PMOD_N, + AS_DEC_N, + AS_INC_N, + AS_IND_N, + AS_PMOD_N, + A_A0, + A_X0, + A_X1, + A_Y0, + A_Y1, + A_SSR, + A_SPC, + A_SGR, + A_DBR, + F_REG_N, + F_REG_M, + D_REG_N, + D_REG_M, + X_REG_N, /* Only used for argument parsing. */ + X_REG_M, /* Only used for argument parsing. */ + DX_REG_N, + DX_REG_M, + V_REG_N, + V_REG_M, + XMTRX_M4, + F_FR0, + FPUL_N, + FPUL_M, + FPSCR_N, + FPSCR_M + } +sh_arg_type; + +typedef enum + { + A_A1_NUM = 5, + A_A0_NUM = 7, + A_X0_NUM, A_X1_NUM, A_Y0_NUM, A_Y1_NUM, + A_M0_NUM, A_A1G_NUM, A_M1_NUM, A_A0G_NUM + } +sh_dsp_reg_nums; + +#define arch_sh1_base 0x0001 +#define arch_sh2_base 0x0002 +#define arch_sh3_base 0x0004 +#define arch_sh4_base 0x0008 +#define arch_sh4a_base 0x0010 +#define arch_sh2a_base 0x0020 + +/* This is an annotation on instruction types, but we abuse the arch + field in instructions to denote it. */ +#define arch_op32 0x00100000 /* This is a 32-bit opcode. */ + +#define arch_sh_no_mmu 0x04000000 +#define arch_sh_has_mmu 0x08000000 +#define arch_sh_no_co 0x10000000 /* neither FPU nor DSP co-processor */ +#define arch_sh_sp_fpu 0x20000000 /* single precision FPU */ +#define arch_sh_dp_fpu 0x40000000 /* double precision FPU */ +#define arch_sh_has_dsp 0x80000000 + + +#define arch_sh_base_mask 0x0000003f +#define arch_opann_mask 0x00100000 +#define arch_sh_mmu_mask 0x0c000000 +#define arch_sh_co_mask 0xf0000000 + + +#define arch_sh1 (arch_sh1_base|arch_sh_no_mmu|arch_sh_no_co) +#define arch_sh2 (arch_sh2_base|arch_sh_no_mmu|arch_sh_no_co) +#define arch_sh2a (arch_sh2a_base|arch_sh_no_mmu|arch_sh_dp_fpu) +#define arch_sh2a_nofpu (arch_sh2a_base|arch_sh_no_mmu|arch_sh_no_co) +#define arch_sh2e (arch_sh2_base|arch_sh2a_base|arch_sh_no_mmu|arch_sh_sp_fpu) +#define arch_sh_dsp (arch_sh2_base|arch_sh_no_mmu|arch_sh_has_dsp) +#define arch_sh3_nommu (arch_sh3_base|arch_sh_no_mmu|arch_sh_no_co) +#define arch_sh3 (arch_sh3_base|arch_sh_has_mmu|arch_sh_no_co) +#define arch_sh3e (arch_sh3_base|arch_sh_has_mmu|arch_sh_sp_fpu) +#define arch_sh3_dsp (arch_sh3_base|arch_sh_has_mmu|arch_sh_has_dsp) +#define arch_sh4 (arch_sh4_base|arch_sh_has_mmu|arch_sh_dp_fpu) +#define arch_sh4a (arch_sh4a_base|arch_sh_has_mmu|arch_sh_dp_fpu) +#define arch_sh4al_dsp (arch_sh4a_base|arch_sh_has_mmu|arch_sh_has_dsp) +#define arch_sh4_nofpu (arch_sh4_base|arch_sh_has_mmu|arch_sh_no_co) +#define arch_sh4a_nofpu (arch_sh4a_base|arch_sh_has_mmu|arch_sh_no_co) +#define arch_sh4_nommu_nofpu (arch_sh4_base|arch_sh_no_mmu|arch_sh_no_co) + +#define SH_MERGE_ARCH_SET(SET1, SET2) ((SET1) & (SET2)) +#define SH_VALID_BASE_ARCH_SET(SET) (((SET) & arch_sh_base_mask) != 0) +#define SH_VALID_MMU_ARCH_SET(SET) (((SET) & arch_sh_mmu_mask) != 0) +#define SH_VALID_CO_ARCH_SET(SET) (((SET) & arch_sh_co_mask) != 0) +#define SH_VALID_ARCH_SET(SET) \ + (SH_VALID_BASE_ARCH_SET (SET) \ + && SH_VALID_MMU_ARCH_SET (SET) \ + && SH_VALID_CO_ARCH_SET (SET)) +#define SH_MERGE_ARCH_SET_VALID(SET1, SET2) \ + SH_VALID_ARCH_SET (SH_MERGE_ARCH_SET (SET1, SET2)) + +#define SH_ARCH_SET_HAS_FPU(SET) \ + (((SET) & (arch_sh_sp_fpu | arch_sh_dp_fpu)) != 0) +#define SH_ARCH_SET_HAS_DSP(SET) \ + (((SET) & arch_sh_has_dsp) != 0) + +/* This is returned from the functions below when an error occurs + (in addition to a call to BFD_FAIL). The value should allow + the tools to continue to function in most cases - there may + be some confusion between DSP and FPU etc. */ +#define SH_ARCH_UNKNOWN_ARCH 0xffffffff + +/* These are defined in bfd/cpu-sh.c . */ +unsigned int sh_get_arch_from_bfd_mach (unsigned long mach); +unsigned int sh_get_arch_up_from_bfd_mach (unsigned long mach); +unsigned long sh_get_bfd_mach_from_arch_set (unsigned int arch_set); +/* bfd_boolean sh_merge_bfd_arch (bfd *ibfd, bfd *obfd); */ + +/* Below are the 'architecture sets'. + They describe the following inheritance graph: + + SH1 + | + SH2 + .------------'|`--------------------. + / | \ +SH-DSP SH3-nommu SH2E + | |`--------. | + | | \ | + | SH3 SH4-nommu-nofpu | + | | | | + | .------------'|`----------+---------. | + |/ / \| + | | .-------' | + | |/ | +SH3-dsp SH4-nofpu SH3E + | |`--------------------. | + | | \| + | SH4A-nofpu SH4 + | .------------' `--------------------. | + |/ \| +SH4AL-dsp SH4A + +*/ + +/* Central branches */ +#define arch_sh1_up (arch_sh1 | arch_sh2_up) +#define arch_sh2_up (arch_sh2 | arch_sh2e_up | arch_sh2a_nofpu_up | arch_sh3_nommu_up | arch_sh_dsp_up) +#define arch_sh3_nommu_up (arch_sh3_nommu | arch_sh3_up | arch_sh4_nommu_nofpu_up) +#define arch_sh3_up (arch_sh3 | arch_sh3e_up | arch_sh3_dsp_up | arch_sh4_nofp_up) +#define arch_sh4_nommu_nofpu_up (arch_sh4_nommu_nofpu | arch_sh4_nofp_up) +#define arch_sh4_nofp_up (arch_sh4_nofpu | arch_sh4_up | arch_sh4a_nofp_up) +#define arch_sh4a_nofp_up (arch_sh4a_nofpu | arch_sh4a_up | arch_sh4al_dsp_up) + +/* Right branch */ +#define arch_sh2e_up (arch_sh2e | arch_sh2a_up | arch_sh3e_up) +#define arch_sh3e_up (arch_sh3e | arch_sh4_up) +#define arch_sh4_up (arch_sh4 | arch_sh4a_up) +#define arch_sh4a_up (arch_sh4a) + +/* Left branch */ +#define arch_sh_dsp_up (arch_sh_dsp | arch_sh3_dsp_up) +#define arch_sh3_dsp_up (arch_sh3_dsp | arch_sh4al_dsp_up) +#define arch_sh4al_dsp_up (arch_sh4al_dsp) + +/* SH 2a branched off SH2e, adding a lot but not all of SH4 and SH4a. */ +#define arch_sh2a_up (arch_sh2a) +#define arch_sh2a_nofpu_up (arch_sh2a_nofpu | arch_sh2a_up) + + +typedef struct +{ + const char *name; + sh_arg_type arg[4]; + sh_nibble_type nibbles[9]; + unsigned int arch; +} sh_opcode_info; + +#ifdef DEFINE_TABLE + +const sh_opcode_info sh_table[] = + { +/* 0111nnnni8*1.... add #, */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh1_up}, + +/* 0011nnnnmmmm1100 add , */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh1_up}, + +/* 0011nnnnmmmm1110 addc ,*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh1_up}, + +/* 0011nnnnmmmm1111 addv ,*/{"addv",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_F}, arch_sh1_up}, + +/* 11001001i8*1.... and #,R0 */{"and",{A_IMM,A_R0},{HEX_C,HEX_9,IMM0_8}, arch_sh1_up}, + +/* 0010nnnnmmmm1001 and , */{"and",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_9}, arch_sh1_up}, + +/* 11001101i8*1.... and.b #,@(R0,GBR)*/{"and.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_D,IMM0_8}, arch_sh1_up}, + +/* 1010i12......... bra */{"bra",{A_BDISP12},{HEX_A,BRANCH_12}, arch_sh1_up}, + +/* 1011i12......... bsr */{"bsr",{A_BDISP12},{HEX_B,BRANCH_12}, arch_sh1_up}, + +/* 10001001i8p1.... bt */{"bt",{A_BDISP8},{HEX_8,HEX_9,BRANCH_8}, arch_sh1_up}, + +/* 10001011i8p1.... bf */{"bf",{A_BDISP8},{HEX_8,HEX_B,BRANCH_8}, arch_sh1_up}, + +/* 10001101i8p1.... bt.s */{"bt.s",{A_BDISP8},{HEX_8,HEX_D,BRANCH_8}, arch_sh2_up}, + +/* 10001101i8p1.... bt/s */{"bt/s",{A_BDISP8},{HEX_8,HEX_D,BRANCH_8}, arch_sh2_up}, + +/* 10001111i8p1.... bf.s */{"bf.s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}, + +/* 10001111i8p1.... bf/s */{"bf/s",{A_BDISP8},{HEX_8,HEX_F,BRANCH_8}, arch_sh2_up}, + +/* 0000000010001000 clrdmxy */{"clrdmxy",{0},{HEX_0,HEX_0,HEX_8,HEX_8}, arch_sh4al_dsp_up}, + +/* 0000000000101000 clrmac */{"clrmac",{0},{HEX_0,HEX_0,HEX_2,HEX_8}, arch_sh1_up}, + +/* 0000000001001000 clrs */{"clrs",{0},{HEX_0,HEX_0,HEX_4,HEX_8}, arch_sh1_up}, + +/* 0000000000001000 clrt */{"clrt",{0},{HEX_0,HEX_0,HEX_0,HEX_8}, arch_sh1_up}, + +/* 10001000i8*1.... cmp/eq #,R0 */{"cmp/eq",{A_IMM,A_R0},{HEX_8,HEX_8,IMM0_8}, arch_sh1_up}, + +/* 0011nnnnmmmm0000 cmp/eq ,*/{"cmp/eq",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_0}, arch_sh1_up}, + +/* 0011nnnnmmmm0011 cmp/ge ,*/{"cmp/ge",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_3}, arch_sh1_up}, + +/* 0011nnnnmmmm0111 cmp/gt ,*/{"cmp/gt",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_7}, arch_sh1_up}, + +/* 0011nnnnmmmm0110 cmp/hi ,*/{"cmp/hi",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_6}, arch_sh1_up}, + +/* 0011nnnnmmmm0010 cmp/hs ,*/{"cmp/hs",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_2}, arch_sh1_up}, + +/* 0100nnnn00010101 cmp/pl */{"cmp/pl",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_5}, arch_sh1_up}, + +/* 0100nnnn00010001 cmp/pz */{"cmp/pz",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_1}, arch_sh1_up}, + +/* 0010nnnnmmmm1100 cmp/str ,*/{"cmp/str",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_C}, arch_sh1_up}, + +/* 0010nnnnmmmm0111 div0s ,*/{"div0s",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_7}, arch_sh1_up}, + +/* 0000000000011001 div0u */{"div0u",{0},{HEX_0,HEX_0,HEX_1,HEX_9}, arch_sh1_up}, + +/* 0011nnnnmmmm0100 div1 ,*/{"div1",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_4}, arch_sh1_up}, + +/* 0110nnnnmmmm1110 exts.b ,*/{"exts.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_E}, arch_sh1_up}, + +/* 0110nnnnmmmm1111 exts.w ,*/{"exts.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_F}, arch_sh1_up}, + +/* 0110nnnnmmmm1100 extu.b ,*/{"extu.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_C}, arch_sh1_up}, + +/* 0110nnnnmmmm1101 extu.w ,*/{"extu.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_D}, arch_sh1_up}, + +/* 0000nnnn11100011 icbi @ */{"icbi",{A_IND_N},{HEX_0,REG_N,HEX_E,HEX_3}, arch_sh4a_nofp_up}, + +/* 0100nnnn00101011 jmp @ */{"jmp",{A_IND_N},{HEX_4,REG_N,HEX_2,HEX_B}, arch_sh1_up}, + +/* 0100nnnn00001011 jsr @ */{"jsr",{A_IND_N},{HEX_4,REG_N,HEX_0,HEX_B}, arch_sh1_up}, + +/* 0100nnnn00001110 ldc ,SR */{"ldc",{A_REG_N,A_SR},{HEX_4,REG_N,HEX_0,HEX_E}, arch_sh1_up}, + +/* 0100nnnn00011110 ldc ,GBR */{"ldc",{A_REG_N,A_GBR},{HEX_4,REG_N,HEX_1,HEX_E}, arch_sh1_up}, + +/* 0100nnnn00111010 ldc ,SGR */{"ldc",{A_REG_N,A_SGR},{HEX_4,REG_N,HEX_3,HEX_A}, arch_sh4_nommu_nofpu_up}, + +/* 0100mmmm01001010 ldc ,TBR */{"ldc",{A_REG_M,A_TBR},{HEX_4,REG_M,HEX_4,HEX_A}, arch_sh2a_nofpu_up}, + +/* 0100nnnn00101110 ldc ,VBR */{"ldc",{A_REG_N,A_VBR},{HEX_4,REG_N,HEX_2,HEX_E}, arch_sh1_up}, + +/* 0100nnnn01011110 ldc ,MOD */{"ldc",{A_REG_N,A_MOD},{HEX_4,REG_N,HEX_5,HEX_E}, arch_sh_dsp_up}, + +/* 0100nnnn01111110 ldc ,RE */{"ldc",{A_REG_N,A_RE},{HEX_4,REG_N,HEX_7,HEX_E}, arch_sh_dsp_up}, + +/* 0100nnnn01101110 ldc ,RS */{"ldc",{A_REG_N,A_RS},{HEX_4,REG_N,HEX_6,HEX_E}, arch_sh_dsp_up}, + +/* 0100nnnn00111110 ldc ,SSR */{"ldc",{A_REG_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_E}, arch_sh3_nommu_up}, + +/* 0100nnnn01001110 ldc ,SPC */{"ldc",{A_REG_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_E}, arch_sh3_nommu_up}, + +/* 0100nnnn11111010 ldc ,DBR */{"ldc",{A_REG_N,A_DBR},{HEX_4,REG_N,HEX_F,HEX_A}, arch_sh4_nommu_nofpu_up}, + +/* 0100nnnn1xxx1110 ldc ,Rn_BANK */{"ldc",{A_REG_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_E}, arch_sh3_nommu_up}, + +/* 0100nnnn00000111 ldc.l @+,SR */{"ldc.l",{A_INC_N,A_SR},{HEX_4,REG_N,HEX_0,HEX_7}, arch_sh1_up}, + +/* 0100nnnn00010111 ldc.l @+,GBR */{"ldc.l",{A_INC_N,A_GBR},{HEX_4,REG_N,HEX_1,HEX_7}, arch_sh1_up}, + +/* 0100nnnn00100111 ldc.l @+,VBR */{"ldc.l",{A_INC_N,A_VBR},{HEX_4,REG_N,HEX_2,HEX_7}, arch_sh1_up}, + +/* 0100nnnn00110110 ldc.l @+,SGR */{"ldc.l",{A_INC_N,A_SGR},{HEX_4,REG_N,HEX_3,HEX_6}, arch_sh4_nommu_nofpu_up}, + +/* 0100nnnn01010111 ldc.l @+,MOD */{"ldc.l",{A_INC_N,A_MOD},{HEX_4,REG_N,HEX_5,HEX_7}, arch_sh_dsp_up}, + +/* 0100nnnn01110111 ldc.l @+,RE */{"ldc.l",{A_INC_N,A_RE},{HEX_4,REG_N,HEX_7,HEX_7}, arch_sh_dsp_up}, + +/* 0100nnnn01100111 ldc.l @+,RS */{"ldc.l",{A_INC_N,A_RS},{HEX_4,REG_N,HEX_6,HEX_7}, arch_sh_dsp_up}, + +/* 0100nnnn00110111 ldc.l @+,SSR */{"ldc.l",{A_INC_N,A_SSR},{HEX_4,REG_N,HEX_3,HEX_7}, arch_sh3_nommu_up}, + +/* 0100nnnn01000111 ldc.l @+,SPC */{"ldc.l",{A_INC_N,A_SPC},{HEX_4,REG_N,HEX_4,HEX_7}, arch_sh3_nommu_up}, + +/* 0100nnnn11110110 ldc.l @+,DBR */{"ldc.l",{A_INC_N,A_DBR},{HEX_4,REG_N,HEX_F,HEX_6}, arch_sh4_nommu_nofpu_up}, + +/* 0100nnnn1xxx0111 ldc.l ,Rn_BANK */{"ldc.l",{A_INC_N,A_REG_B},{HEX_4,REG_N,REG_B,HEX_7}, arch_sh3_nommu_up}, + +/* 0100mmmm00110100 ldrc */{"ldrc",{A_REG_M},{HEX_4,REG_M,HEX_3,HEX_4}, arch_sh4al_dsp_up}, +/* 10001010i8*1.... ldrc # */{"ldrc",{A_IMM},{HEX_8,HEX_A,IMM0_8}, arch_sh4al_dsp_up}, + +/* 10001110i8p2.... ldre @(,PC) */{"ldre",{A_DISP_PC},{HEX_8,HEX_E,PCRELIMM_8BY2}, arch_sh_dsp_up}, + +/* 10001100i8p2.... ldrs @(,PC) */{"ldrs",{A_DISP_PC},{HEX_8,HEX_C,PCRELIMM_8BY2}, arch_sh_dsp_up}, + +/* 0100nnnn00001010 lds ,MACH */{"lds",{A_REG_N,A_MACH},{HEX_4,REG_N,HEX_0,HEX_A}, arch_sh1_up}, + +/* 0100nnnn00011010 lds ,MACL */{"lds",{A_REG_N,A_MACL},{HEX_4,REG_N,HEX_1,HEX_A}, arch_sh1_up}, + +/* 0100nnnn00101010 lds ,PR */{"lds",{A_REG_N,A_PR},{HEX_4,REG_N,HEX_2,HEX_A}, arch_sh1_up}, + +/* 0100nnnn01101010 lds ,DSR */{"lds",{A_REG_N,A_DSR},{HEX_4,REG_N,HEX_6,HEX_A}, arch_sh_dsp_up}, + +/* 0100nnnn01111010 lds ,A0 */{"lds",{A_REG_N,A_A0},{HEX_4,REG_N,HEX_7,HEX_A}, arch_sh_dsp_up}, + +/* 0100nnnn10001010 lds ,X0 */{"lds",{A_REG_N,A_X0},{HEX_4,REG_N,HEX_8,HEX_A}, arch_sh_dsp_up}, + +/* 0100nnnn10011010 lds ,X1 */{"lds",{A_REG_N,A_X1},{HEX_4,REG_N,HEX_9,HEX_A}, arch_sh_dsp_up}, + +/* 0100nnnn10101010 lds ,Y0 */{"lds",{A_REG_N,A_Y0},{HEX_4,REG_N,HEX_A,HEX_A}, arch_sh_dsp_up}, + +/* 0100nnnn10111010 lds ,Y1 */{"lds",{A_REG_N,A_Y1},{HEX_4,REG_N,HEX_B,HEX_A}, arch_sh_dsp_up}, + +/* 0100nnnn01011010 lds ,FPUL */{"lds",{A_REG_M,FPUL_N},{HEX_4,REG_M,HEX_5,HEX_A}, arch_sh2e_up}, + +/* 0100nnnn01101010 lds ,FPSCR */{"lds",{A_REG_M,FPSCR_N},{HEX_4,REG_M,HEX_6,HEX_A}, arch_sh2e_up}, + +/* 0100nnnn00000110 lds.l @+,MACH*/{"lds.l",{A_INC_N,A_MACH},{HEX_4,REG_N,HEX_0,HEX_6}, arch_sh1_up}, + +/* 0100nnnn00010110 lds.l @+,MACL*/{"lds.l",{A_INC_N,A_MACL},{HEX_4,REG_N,HEX_1,HEX_6}, arch_sh1_up}, + +/* 0100nnnn00100110 lds.l @+,PR */{"lds.l",{A_INC_N,A_PR},{HEX_4,REG_N,HEX_2,HEX_6}, arch_sh1_up}, + +/* 0100nnnn01100110 lds.l @+,DSR */{"lds.l",{A_INC_N,A_DSR},{HEX_4,REG_N,HEX_6,HEX_6}, arch_sh_dsp_up}, + +/* 0100nnnn01110110 lds.l @+,A0 */{"lds.l",{A_INC_N,A_A0},{HEX_4,REG_N,HEX_7,HEX_6}, arch_sh_dsp_up}, + +/* 0100nnnn10000110 lds.l @+,X0 */{"lds.l",{A_INC_N,A_X0},{HEX_4,REG_N,HEX_8,HEX_6}, arch_sh_dsp_up}, + +/* 0100nnnn10010110 lds.l @+,X1 */{"lds.l",{A_INC_N,A_X1},{HEX_4,REG_N,HEX_9,HEX_6}, arch_sh_dsp_up}, + +/* 0100nnnn10100110 lds.l @+,Y0 */{"lds.l",{A_INC_N,A_Y0},{HEX_4,REG_N,HEX_A,HEX_6}, arch_sh_dsp_up}, + +/* 0100nnnn10110110 lds.l @+,Y1 */{"lds.l",{A_INC_N,A_Y1},{HEX_4,REG_N,HEX_B,HEX_6}, arch_sh_dsp_up}, + +/* 0100nnnn01010110 lds.l @+,FPUL*/{"lds.l",{A_INC_M,FPUL_N},{HEX_4,REG_M,HEX_5,HEX_6}, arch_sh2e_up}, + +/* 0100nnnn01100110 lds.l @+,FPSCR*/{"lds.l",{A_INC_M,FPSCR_N},{HEX_4,REG_M,HEX_6,HEX_6}, arch_sh2e_up}, + +/* 0000000000111000 ldtlb */{"ldtlb",{0},{HEX_0,HEX_0,HEX_3,HEX_8}, arch_sh3_up}, + +/* 0100nnnnmmmm1111 mac.w @+,@+*/{"mac.w",{A_INC_M,A_INC_N},{HEX_4,REG_N,REG_M,HEX_F}, arch_sh1_up}, + +/* 1110nnnni8*1.... mov #, */{"mov",{A_IMM,A_REG_N},{HEX_E,REG_N,IMM0_8}, arch_sh1_up}, + +/* 0110nnnnmmmm0011 mov , */{"mov",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_3}, arch_sh1_up}, + +/* 0000nnnnmmmm0100 mov.b ,@(R0,)*/{"mov.b",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_4}, arch_sh1_up}, + +/* 0010nnnnmmmm0100 mov.b ,@-*/{"mov.b",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_4}, arch_sh1_up}, + +/* 0010nnnnmmmm0000 mov.b ,@*/{"mov.b",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_0}, arch_sh1_up}, + +/* 10000100mmmmi4*1 mov.b @(,),R0*/{"mov.b",{A_DISP_REG_M,A_R0},{HEX_8,HEX_4,REG_M,IMM0_4}, arch_sh1_up}, + +/* 11000100i8*1.... mov.b @(,GBR),R0*/{"mov.b",{A_DISP_GBR,A_R0},{HEX_C,HEX_4,IMM0_8}, arch_sh1_up}, + +/* 0000nnnnmmmm1100 mov.b @(R0,),*/{"mov.b",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_C}, arch_sh1_up}, + +/* 0110nnnnmmmm0100 mov.b @+,*/{"mov.b",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_4}, arch_sh1_up}, + +/* 0110nnnnmmmm0000 mov.b @,*/{"mov.b",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_0}, arch_sh1_up}, + +/* 10000000mmmmi4*1 mov.b R0,@(,)*/{"mov.b",{A_R0,A_DISP_REG_M},{HEX_8,HEX_0,REG_M,IMM1_4}, arch_sh1_up}, + +/* 11000000i8*1.... mov.b R0,@(,GBR)*/{"mov.b",{A_R0,A_DISP_GBR},{HEX_C,HEX_0,IMM1_8}, arch_sh1_up}, + +/* 0100nnnn10001011 mov.b R0,@+ */{"mov.b",{A_R0,A_INC_N},{HEX_4,REG_N,HEX_8,HEX_B}, arch_sh2a_nofpu_up}, +/* 0100nnnn11001011 mov.b @-,R0 */{"mov.b",{A_DEC_M,A_R0},{HEX_4,REG_M,HEX_C,HEX_B}, arch_sh2a_nofpu_up}, +/* 0011nnnnmmmm0001 0000dddddddddddd mov.b ,@(,) */ +{"mov.b",{A_REG_M,A_DISP_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_0,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnnmmmm0001 0100dddddddddddd mov.b @(,), */ +{"mov.b",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_4,DISP0_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0001nnnnmmmmi4*4 mov.l ,@(,)*/{"mov.l",{ A_REG_M,A_DISP_REG_N},{HEX_1,REG_N,REG_M,IMM1_4BY4}, arch_sh1_up}, + +/* 0000nnnnmmmm0110 mov.l ,@(R0,)*/{"mov.l",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_6}, arch_sh1_up}, + +/* 0010nnnnmmmm0110 mov.l ,@-*/{"mov.l",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_6}, arch_sh1_up}, + +/* 0010nnnnmmmm0010 mov.l ,@*/{"mov.l",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_2}, arch_sh1_up}, + +/* 0101nnnnmmmmi4*4 mov.l @(,),*/{"mov.l",{A_DISP_REG_M,A_REG_N},{HEX_5,REG_N,REG_M,IMM0_4BY4}, arch_sh1_up}, + +/* 11000110i8*4.... mov.l @(,GBR),R0*/{"mov.l",{A_DISP_GBR,A_R0},{HEX_C,HEX_6,IMM0_8BY4}, arch_sh1_up}, + +/* 1101nnnni8p4.... mov.l @(,PC),*/{"mov.l",{A_DISP_PC,A_REG_N},{HEX_D,REG_N,PCRELIMM_8BY4}, arch_sh1_up}, + +/* 0000nnnnmmmm1110 mov.l @(R0,),*/{"mov.l",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_E}, arch_sh1_up}, + +/* 0110nnnnmmmm0110 mov.l @+,*/{"mov.l",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_6}, arch_sh1_up}, + +/* 0110nnnnmmmm0010 mov.l @,*/{"mov.l",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_2}, arch_sh1_up}, + +/* 11000010i8*4.... mov.l R0,@(,GBR)*/{"mov.l",{A_R0,A_DISP_GBR},{HEX_C,HEX_2,IMM1_8BY4}, arch_sh1_up}, + +/* 0100nnnn10101011 mov.l R0,@+ */{"mov.l",{A_R0,A_INC_N},{HEX_4,REG_N,HEX_A,HEX_B}, arch_sh2a_nofpu_up}, +/* 0100nnnn11001011 mov.l @-,R0 */{"mov.l",{A_DEC_M,A_R0},{HEX_4,REG_M,HEX_E,HEX_B}, arch_sh2a_nofpu_up}, +/* 0011nnnnmmmm0001 0010dddddddddddd mov.l ,@(,) */ +{"mov.l",{A_REG_M,A_DISP_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_2,DISP1_12BY4}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnnmmmm0001 0110dddddddddddd mov.l @(,), */ +{"mov.l",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_6,DISP0_12BY4}, arch_sh2a_nofpu_up | arch_op32}, +/* 0000nnnnmmmm0101 mov.w ,@(R0,)*/{"mov.w",{ A_REG_M,A_IND_R0_REG_N},{HEX_0,REG_N,REG_M,HEX_5}, arch_sh1_up}, + +/* 0010nnnnmmmm0101 mov.w ,@-*/{"mov.w",{ A_REG_M,A_DEC_N},{HEX_2,REG_N,REG_M,HEX_5}, arch_sh1_up}, + +/* 0010nnnnmmmm0001 mov.w ,@*/{"mov.w",{ A_REG_M,A_IND_N},{HEX_2,REG_N,REG_M,HEX_1}, arch_sh1_up}, + +/* 10000101mmmmi4*2 mov.w @(,),R0*/{"mov.w",{A_DISP_REG_M,A_R0},{HEX_8,HEX_5,REG_M,IMM0_4BY2}, arch_sh1_up}, + +/* 11000101i8*2.... mov.w @(,GBR),R0*/{"mov.w",{A_DISP_GBR,A_R0},{HEX_C,HEX_5,IMM0_8BY2}, arch_sh1_up}, + +/* 1001nnnni8p2.... mov.w @(,PC),*/{"mov.w",{A_DISP_PC,A_REG_N},{HEX_9,REG_N,PCRELIMM_8BY2}, arch_sh1_up}, + +/* 0000nnnnmmmm1101 mov.w @(R0,),*/{"mov.w",{A_IND_R0_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_D}, arch_sh1_up}, + +/* 0110nnnnmmmm0101 mov.w @+,*/{"mov.w",{A_INC_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_5}, arch_sh1_up}, + +/* 0110nnnnmmmm0001 mov.w @,*/{"mov.w",{A_IND_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_1}, arch_sh1_up}, + +/* 10000001mmmmi4*2 mov.w R0,@(,)*/{"mov.w",{A_R0,A_DISP_REG_M},{HEX_8,HEX_1,REG_M,IMM1_4BY2}, arch_sh1_up}, + +/* 11000001i8*2.... mov.w R0,@(,GBR)*/{"mov.w",{A_R0,A_DISP_GBR},{HEX_C,HEX_1,IMM1_8BY2}, arch_sh1_up}, + +/* 0100nnnn10011011 mov.w R0,@+ */{"mov.w",{A_R0,A_INC_N},{HEX_4,REG_N,HEX_9,HEX_B}, arch_sh2a_nofpu_up}, +/* 0100nnnn11011011 mov.w @-,R0 */{"mov.w",{A_DEC_M,A_R0},{HEX_4,REG_M,HEX_D,HEX_B}, arch_sh2a_nofpu_up}, +/* 0011nnnnmmmm0001 0001dddddddddddd mov.w ,@(,) */ +{"mov.w",{A_REG_M,A_DISP_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_1,DISP1_12BY2}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnnmmmm0001 0101dddddddddddd mov.w @(,), */ +{"mov.w",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_5,DISP0_12BY2}, arch_sh2a_nofpu_up | arch_op32}, +/* 11000111i8p4.... mova @(,PC),R0*/{"mova",{A_DISP_PC,A_R0},{HEX_C,HEX_7,PCRELIMM_8BY4}, arch_sh1_up}, +/* 0000nnnn11000011 movca.l R0,@ */{"movca.l",{A_R0,A_IND_N},{HEX_0,REG_N,HEX_C,HEX_3}, arch_sh4_nommu_nofpu_up}, + +/* 0000nnnn01110011 movco.l r0,@ */{"movco.l",{A_R0,A_IND_N},{HEX_0,REG_N,HEX_7,HEX_3}, arch_sh4a_nofp_up}, +/* 0000mmmm01100011 movli.l @,r0 */{"movli.l",{A_IND_M,A_R0},{HEX_0,REG_M,HEX_6,HEX_3}, arch_sh4a_nofp_up}, + +/* 0000nnnn00101001 movt */{"movt",{A_REG_N},{HEX_0,REG_N,HEX_2,HEX_9}, arch_sh1_up}, + +/* 0100mmmm10101001 movua.l @,r0 */{"movua.l",{A_IND_M,A_R0},{HEX_4,REG_M,HEX_A,HEX_9}, arch_sh4a_nofp_up}, +/* 0100mmmm11101001 movua.l @+,r0 */{"movua.l",{A_INC_M,A_R0},{HEX_4,REG_M,HEX_E,HEX_9}, arch_sh4a_nofp_up}, + +/* 0010nnnnmmmm1111 muls.w ,*/{"muls.w",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_F}, arch_sh1_up}, +/* 0010nnnnmmmm1111 muls ,*/{"muls",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_F}, arch_sh1_up}, + +/* 0000nnnnmmmm0111 mul.l ,*/{"mul.l",{ A_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_7}, arch_sh2_up}, + +/* 0010nnnnmmmm1110 mulu.w ,*/{"mulu.w",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_E}, arch_sh1_up}, +/* 0010nnnnmmmm1110 mulu ,*/{"mulu",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_E}, arch_sh1_up}, + +/* 0110nnnnmmmm1011 neg , */{"neg",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_B}, arch_sh1_up}, + +/* 0110nnnnmmmm1010 negc ,*/{"negc",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_A}, arch_sh1_up}, + +/* 0000000000001001 nop */{"nop",{0},{HEX_0,HEX_0,HEX_0,HEX_9}, arch_sh1_up}, + +/* 0110nnnnmmmm0111 not , */{"not",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_7}, arch_sh1_up}, +/* 0000nnnn10010011 ocbi @ */{"ocbi",{A_IND_N},{HEX_0,REG_N,HEX_9,HEX_3}, arch_sh4_nommu_nofpu_up}, + +/* 0000nnnn10100011 ocbp @ */{"ocbp",{A_IND_N},{HEX_0,REG_N,HEX_A,HEX_3}, arch_sh4_nommu_nofpu_up}, + +/* 0000nnnn10110011 ocbwb @ */{"ocbwb",{A_IND_N},{HEX_0,REG_N,HEX_B,HEX_3}, arch_sh4_nommu_nofpu_up}, + + +/* 11001011i8*1.... or #,R0 */{"or",{A_IMM,A_R0},{HEX_C,HEX_B,IMM0_8}, arch_sh1_up}, + +/* 0010nnnnmmmm1011 or , */{"or",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_B}, arch_sh1_up}, + +/* 11001111i8*1.... or.b #,@(R0,GBR)*/{"or.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_F,IMM0_8}, arch_sh1_up}, + +/* 0000nnnn10000011 pref @ */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh4_nommu_nofpu_up | arch_sh2a_nofpu_up}, + +/* 0000nnnn11010011 prefi @ */{"prefi",{A_IND_N},{HEX_0,REG_N,HEX_D,HEX_3}, arch_sh4a_nofp_up}, + +/* 0100nnnn00100100 rotcl */{"rotcl",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_4}, arch_sh1_up}, + +/* 0100nnnn00100101 rotcr */{"rotcr",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_5}, arch_sh1_up}, + +/* 0100nnnn00000100 rotl */{"rotl",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_4}, arch_sh1_up}, + +/* 0100nnnn00000101 rotr */{"rotr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_5}, arch_sh1_up}, + +/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh1_up}, + +/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh1_up}, + +/* 0000000010011000 setdmx */{"setdmx",{0},{HEX_0,HEX_0,HEX_9,HEX_8}, arch_sh4al_dsp_up}, +/* 0000000011001000 setdmy */{"setdmy",{0},{HEX_0,HEX_0,HEX_C,HEX_8}, arch_sh4al_dsp_up}, + +/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh1_up}, +/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh1_up}, + +/* 0100nnnn00010100 setrc */{"setrc",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_4}, arch_sh_dsp_up}, + +/* 10000010i8*1.... setrc # */{"setrc",{A_IMM},{HEX_8,HEX_2,IMM0_8}, arch_sh_dsp_up}, + +/* repeat start end */{"repeat",{A_DISP_PC,A_DISP_PC,A_REG_N},{REPEAT,REG_N,HEX_1,HEX_4}, arch_sh_dsp_up}, + +/* repeat start end # */{"repeat",{A_DISP_PC,A_DISP_PC,A_IMM},{REPEAT,HEX_2,IMM0_8,HEX_8}, arch_sh_dsp_up}, + +/* 0100nnnnmmmm1100 shad ,*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh3_nommu_up | arch_sh2a_nofpu_up}, + +/* 0100nnnnmmmm1101 shld ,*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh3_nommu_up | arch_sh2a_nofpu_up}, + +/* 0100nnnn00100000 shal */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh1_up}, + +/* 0100nnnn00100001 shar */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh1_up}, + +/* 0100nnnn00000000 shll */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh1_up}, + +/* 0100nnnn00101000 shll16 */{"shll16",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_8}, arch_sh1_up}, + +/* 0100nnnn00001000 shll2 */{"shll2",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_8}, arch_sh1_up}, + +/* 0100nnnn00011000 shll8 */{"shll8",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_8}, arch_sh1_up}, + +/* 0100nnnn00000001 shlr */{"shlr",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_1}, arch_sh1_up}, + +/* 0100nnnn00101001 shlr16 */{"shlr16",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_9}, arch_sh1_up}, + +/* 0100nnnn00001001 shlr2 */{"shlr2",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_9}, arch_sh1_up}, + +/* 0100nnnn00011001 shlr8 */{"shlr8",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_9}, arch_sh1_up}, + +/* 0000000000011011 sleep */{"sleep",{0},{HEX_0,HEX_0,HEX_1,HEX_B}, arch_sh1_up}, + +/* 0000nnnn00000010 stc SR, */{"stc",{A_SR,A_REG_N},{HEX_0,REG_N,HEX_0,HEX_2}, arch_sh1_up}, + +/* 0000nnnn00010010 stc GBR, */{"stc",{A_GBR,A_REG_N},{HEX_0,REG_N,HEX_1,HEX_2}, arch_sh1_up}, + +/* 0000nnnn00100010 stc VBR, */{"stc",{A_VBR,A_REG_N},{HEX_0,REG_N,HEX_2,HEX_2}, arch_sh1_up}, + +/* 0000nnnn01010010 stc MOD, */{"stc",{A_MOD,A_REG_N},{HEX_0,REG_N,HEX_5,HEX_2}, arch_sh_dsp_up}, + +/* 0000nnnn01110010 stc RE, */{"stc",{A_RE,A_REG_N},{HEX_0,REG_N,HEX_7,HEX_2}, arch_sh_dsp_up}, + +/* 0000nnnn01100010 stc RS, */{"stc",{A_RS,A_REG_N},{HEX_0,REG_N,HEX_6,HEX_2}, arch_sh_dsp_up}, + +/* 0000nnnn00110010 stc SSR, */{"stc",{A_SSR,A_REG_N},{HEX_0,REG_N,HEX_3,HEX_2}, arch_sh3_nommu_up}, + +/* 0000nnnn01000010 stc SPC, */{"stc",{A_SPC,A_REG_N},{HEX_0,REG_N,HEX_4,HEX_2}, arch_sh3_nommu_up}, + +/* 0000nnnn00111010 stc SGR, */{"stc",{A_SGR,A_REG_N},{HEX_0,REG_N,HEX_3,HEX_A}, arch_sh4_nommu_nofpu_up}, + +/* 0000nnnn11111010 stc DBR, */{"stc",{A_DBR,A_REG_N},{HEX_0,REG_N,HEX_F,HEX_A}, arch_sh4_nommu_nofpu_up}, + +/* 0000nnnn1xxx0010 stc Rn_BANK, */{"stc",{A_REG_B,A_REG_N},{HEX_0,REG_N,REG_B,HEX_2}, arch_sh3_nommu_up}, + +/* 0000nnnn01001010 stc TBR, */ {"stc",{A_TBR,A_REG_N},{HEX_0,REG_N,HEX_4,HEX_A}, arch_sh2a_nofpu_up}, + +/* 0100nnnn00000011 stc.l SR,@- */{"stc.l",{A_SR,A_DEC_N},{HEX_4,REG_N,HEX_0,HEX_3}, arch_sh1_up}, + +/* 0100nnnn00100011 stc.l VBR,@- */{"stc.l",{A_VBR,A_DEC_N},{HEX_4,REG_N,HEX_2,HEX_3}, arch_sh1_up}, + +/* 0100nnnn01010011 stc.l MOD,@- */{"stc.l",{A_MOD,A_DEC_N},{HEX_4,REG_N,HEX_5,HEX_3}, arch_sh_dsp_up}, + +/* 0100nnnn01110011 stc.l RE,@- */{"stc.l",{A_RE,A_DEC_N},{HEX_4,REG_N,HEX_7,HEX_3}, arch_sh_dsp_up}, + +/* 0100nnnn01100011 stc.l RS,@- */{"stc.l",{A_RS,A_DEC_N},{HEX_4,REG_N,HEX_6,HEX_3}, arch_sh_dsp_up}, + +/* 0100nnnn00110011 stc.l SSR,@- */{"stc.l",{A_SSR,A_DEC_N},{HEX_4,REG_N,HEX_3,HEX_3}, arch_sh3_nommu_up}, + +/* 0100nnnn01000011 stc.l SPC,@- */{"stc.l",{A_SPC,A_DEC_N},{HEX_4,REG_N,HEX_4,HEX_3}, arch_sh3_nommu_up}, + +/* 0100nnnn00010011 stc.l GBR,@- */{"stc.l",{A_GBR,A_DEC_N},{HEX_4,REG_N,HEX_1,HEX_3}, arch_sh1_up}, + +/* 0100nnnn00110010 stc.l SGR,@- */{"stc.l",{A_SGR,A_DEC_N},{HEX_4,REG_N,HEX_3,HEX_2}, arch_sh4_nommu_nofpu_up}, + +/* 0100nnnn11110010 stc.l DBR,@- */{"stc.l",{A_DBR,A_DEC_N},{HEX_4,REG_N,HEX_F,HEX_2}, arch_sh4_nommu_nofpu_up}, + +/* 0100nnnn1xxx0011 stc.l Rn_BANK,@- */{"stc.l",{A_REG_B,A_DEC_N},{HEX_4,REG_N,REG_B,HEX_3}, arch_sh3_nommu_up}, + +/* 0000nnnn00001010 sts MACH, */{"sts",{A_MACH,A_REG_N},{HEX_0,REG_N,HEX_0,HEX_A}, arch_sh1_up}, + +/* 0000nnnn00011010 sts MACL, */{"sts",{A_MACL,A_REG_N},{HEX_0,REG_N,HEX_1,HEX_A}, arch_sh1_up}, + +/* 0000nnnn00101010 sts PR, */{"sts",{A_PR,A_REG_N},{HEX_0,REG_N,HEX_2,HEX_A}, arch_sh1_up}, + +/* 0000nnnn01101010 sts DSR, */{"sts",{A_DSR,A_REG_N},{HEX_0,REG_N,HEX_6,HEX_A}, arch_sh_dsp_up}, + +/* 0000nnnn01111010 sts A0, */{"sts",{A_A0,A_REG_N},{HEX_0,REG_N,HEX_7,HEX_A}, arch_sh_dsp_up}, + +/* 0000nnnn10001010 sts X0, */{"sts",{A_X0,A_REG_N},{HEX_0,REG_N,HEX_8,HEX_A}, arch_sh_dsp_up}, + +/* 0000nnnn10011010 sts X1, */{"sts",{A_X1,A_REG_N},{HEX_0,REG_N,HEX_9,HEX_A}, arch_sh_dsp_up}, + +/* 0000nnnn10101010 sts Y0, */{"sts",{A_Y0,A_REG_N},{HEX_0,REG_N,HEX_A,HEX_A}, arch_sh_dsp_up}, + +/* 0000nnnn10111010 sts Y1, */{"sts",{A_Y1,A_REG_N},{HEX_0,REG_N,HEX_B,HEX_A}, arch_sh_dsp_up}, + +/* 0000nnnn01011010 sts FPUL, */{"sts",{FPUL_M,A_REG_N},{HEX_0,REG_N,HEX_5,HEX_A}, arch_sh2e_up}, + +/* 0000nnnn01101010 sts FPSCR, */{"sts",{FPSCR_M,A_REG_N},{HEX_0,REG_N,HEX_6,HEX_A}, arch_sh2e_up}, + +/* 0100nnnn00000010 sts.l MACH,@-*/{"sts.l",{A_MACH,A_DEC_N},{HEX_4,REG_N,HEX_0,HEX_2}, arch_sh1_up}, + +/* 0100nnnn00010010 sts.l MACL,@-*/{"sts.l",{A_MACL,A_DEC_N},{HEX_4,REG_N,HEX_1,HEX_2}, arch_sh1_up}, + +/* 0100nnnn00100010 sts.l PR,@- */{"sts.l",{A_PR,A_DEC_N},{HEX_4,REG_N,HEX_2,HEX_2}, arch_sh1_up}, + +/* 0100nnnn01100110 sts.l DSR,@- */{"sts.l",{A_DSR,A_DEC_N},{HEX_4,REG_N,HEX_6,HEX_2}, arch_sh_dsp_up}, + +/* 0100nnnn01110110 sts.l A0,@- */{"sts.l",{A_A0,A_DEC_N},{HEX_4,REG_N,HEX_7,HEX_2}, arch_sh_dsp_up}, + +/* 0100nnnn10000110 sts.l X0,@- */{"sts.l",{A_X0,A_DEC_N},{HEX_4,REG_N,HEX_8,HEX_2}, arch_sh_dsp_up}, + +/* 0100nnnn10010110 sts.l X1,@- */{"sts.l",{A_X1,A_DEC_N},{HEX_4,REG_N,HEX_9,HEX_2}, arch_sh_dsp_up}, + +/* 0100nnnn10100110 sts.l Y0,@- */{"sts.l",{A_Y0,A_DEC_N},{HEX_4,REG_N,HEX_A,HEX_2}, arch_sh_dsp_up}, + +/* 0100nnnn10110110 sts.l Y1,@- */{"sts.l",{A_Y1,A_DEC_N},{HEX_4,REG_N,HEX_B,HEX_2}, arch_sh_dsp_up}, + +/* 0100nnnn01010010 sts.l FPUL,@-*/{"sts.l",{FPUL_M,A_DEC_N},{HEX_4,REG_N,HEX_5,HEX_2}, arch_sh2e_up}, + +/* 0100nnnn01100010 sts.l FPSCR,@-*/{"sts.l",{FPSCR_M,A_DEC_N},{HEX_4,REG_N,HEX_6,HEX_2}, arch_sh2e_up}, + +/* 0011nnnnmmmm1000 sub , */{"sub",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_8}, arch_sh1_up}, + +/* 0011nnnnmmmm1010 subc ,*/{"subc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_A}, arch_sh1_up}, + +/* 0011nnnnmmmm1011 subv ,*/{"subv",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_B}, arch_sh1_up}, + +/* 0110nnnnmmmm1000 swap.b ,*/{"swap.b",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_8}, arch_sh1_up}, + +/* 0110nnnnmmmm1001 swap.w ,*/{"swap.w",{ A_REG_M,A_REG_N},{HEX_6,REG_N,REG_M,HEX_9}, arch_sh1_up}, + +/* 0000000010101011 synco */{"synco",{0},{HEX_0,HEX_0,HEX_A,HEX_B}, arch_sh4a_nofp_up}, + +/* 0100nnnn00011011 tas.b @ */{"tas.b",{A_IND_N},{HEX_4,REG_N,HEX_1,HEX_B}, arch_sh1_up}, + +/* 11000011i8*1.... trapa # */{"trapa",{A_IMM},{HEX_C,HEX_3,IMM0_8}, arch_sh1_up}, + +/* 11001000i8*1.... tst #,R0 */{"tst",{A_IMM,A_R0},{HEX_C,HEX_8,IMM0_8}, arch_sh1_up}, + +/* 0010nnnnmmmm1000 tst , */{"tst",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_8}, arch_sh1_up}, + +/* 11001100i8*1.... tst.b #,@(R0,GBR)*/{"tst.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_C,IMM0_8}, arch_sh1_up}, + +/* 11001010i8*1.... xor #,R0 */{"xor",{A_IMM,A_R0},{HEX_C,HEX_A,IMM0_8}, arch_sh1_up}, + +/* 0010nnnnmmmm1010 xor , */{"xor",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_A}, arch_sh1_up}, + +/* 11001110i8*1.... xor.b #,@(R0,GBR)*/{"xor.b",{A_IMM,A_R0_GBR},{HEX_C,HEX_E,IMM0_8}, arch_sh1_up}, + +/* 0010nnnnmmmm1101 xtrct ,*/{"xtrct",{ A_REG_M,A_REG_N},{HEX_2,REG_N,REG_M,HEX_D}, arch_sh1_up}, + +/* 0000nnnnmmmm0111 mul.l ,*/{"mul.l",{ A_REG_M,A_REG_N},{HEX_0,REG_N,REG_M,HEX_7}, arch_sh1_up}, + +/* 0100nnnn00010000 dt */{"dt",{A_REG_N},{HEX_4,REG_N,HEX_1,HEX_0}, arch_sh2_up}, + +/* 0011nnnnmmmm1101 dmuls.l ,*/{"dmuls.l",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_D}, arch_sh2_up}, + +/* 0011nnnnmmmm0101 dmulu.l ,*/{"dmulu.l",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_5}, arch_sh2_up}, + +/* 0000nnnnmmmm1111 mac.l @+,@+*/{"mac.l",{A_INC_M,A_INC_N},{HEX_0,REG_N,REG_M,HEX_F}, arch_sh2_up}, + +/* 0000nnnn00100011 braf */{"braf",{A_REG_N},{HEX_0,REG_N,HEX_2,HEX_3}, arch_sh2_up}, + +/* 0000nnnn00000011 bsrf */{"bsrf",{A_REG_N},{HEX_0,REG_N,HEX_0,HEX_3}, arch_sh2_up}, + +/* 111101nnmmmm0000 movs.w @-, */ {"movs.w",{A_DEC_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_0}, arch_sh_dsp_up}, + +/* 111101nnmmmm0001 movs.w @, */ {"movs.w",{A_IND_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_4}, arch_sh_dsp_up}, + +/* 111101nnmmmm0010 movs.w @+, */ {"movs.w",{A_INC_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_8}, arch_sh_dsp_up}, + +/* 111101nnmmmm0011 movs.w @+r8, */ {"movs.w",{AS_PMOD_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_C}, arch_sh_dsp_up}, + +/* 111101nnmmmm0100 movs.w ,@- */ {"movs.w",{DSP_REG_M,A_DEC_N},{HEX_F,SDT_REG_N,REG_M,HEX_1}, arch_sh_dsp_up}, + +/* 111101nnmmmm0101 movs.w ,@ */ {"movs.w",{DSP_REG_M,A_IND_N},{HEX_F,SDT_REG_N,REG_M,HEX_5}, arch_sh_dsp_up}, + +/* 111101nnmmmm0110 movs.w ,@+ */ {"movs.w",{DSP_REG_M,A_INC_N},{HEX_F,SDT_REG_N,REG_M,HEX_9}, arch_sh_dsp_up}, + +/* 111101nnmmmm0111 movs.w ,@+r8 */ {"movs.w",{DSP_REG_M,AS_PMOD_N},{HEX_F,SDT_REG_N,REG_M,HEX_D}, arch_sh_dsp_up}, + +/* 111101nnmmmm1000 movs.l @-, */ {"movs.l",{A_DEC_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_2}, arch_sh_dsp_up}, + +/* 111101nnmmmm1001 movs.l @, */ {"movs.l",{A_IND_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_6}, arch_sh_dsp_up}, + +/* 111101nnmmmm1010 movs.l @+, */ {"movs.l",{A_INC_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_A}, arch_sh_dsp_up}, + +/* 111101nnmmmm1011 movs.l @+r8, */ {"movs.l",{AS_PMOD_N,DSP_REG_M},{HEX_F,SDT_REG_N,REG_M,HEX_E}, arch_sh_dsp_up}, + +/* 111101nnmmmm1100 movs.l ,@- */ {"movs.l",{DSP_REG_M,A_DEC_N},{HEX_F,SDT_REG_N,REG_M,HEX_3}, arch_sh_dsp_up}, + +/* 111101nnmmmm1101 movs.l ,@ */ {"movs.l",{DSP_REG_M,A_IND_N},{HEX_F,SDT_REG_N,REG_M,HEX_7}, arch_sh_dsp_up}, + +/* 111101nnmmmm1110 movs.l ,@+ */ {"movs.l",{DSP_REG_M,A_INC_N},{HEX_F,SDT_REG_N,REG_M,HEX_B}, arch_sh_dsp_up}, + +/* 111101nnmmmm1111 movs.l ,@+r8 */ {"movs.l",{DSP_REG_M,AS_PMOD_N},{HEX_F,SDT_REG_N,REG_M,HEX_F}, arch_sh_dsp_up}, + +/* 0*0*0*00** nopx */ {"nopx",{0},{PPI,NOPX}, arch_sh_dsp_up}, +/* *0*0*0**00 nopy */ {"nopy",{0},{PPI,NOPY}, arch_sh_dsp_up}, +/* n*m*0*01** movx.w @, */ {"movx.w",{AX_IND_N,DSP_REG_X},{PPI,MOVX,HEX_1}, arch_sh_dsp_up}, +/* n*m*0*10** movx.w @+, */ {"movx.w",{AX_INC_N,DSP_REG_X},{PPI,MOVX,HEX_2}, arch_sh_dsp_up}, +/* n*m*0*11** movx.w @+r8, */ {"movx.w",{AX_PMOD_N,DSP_REG_X},{PPI,MOVX,HEX_3}, arch_sh_dsp_up}, +/* n*m*1*01** movx.w ,@ */ {"movx.w",{DSP_REG_A_M,AX_IND_N},{PPI,MOVX,HEX_9}, arch_sh_dsp_up}, +/* n*m*1*10** movx.w ,@+ */ {"movx.w",{DSP_REG_A_M,AX_INC_N},{PPI,MOVX,HEX_A}, arch_sh_dsp_up}, +/* n*m*1*11** movx.w ,@+r8 */ {"movx.w",{DSP_REG_A_M,AX_PMOD_N},{PPI,MOVX,HEX_B}, arch_sh_dsp_up}, + +/* nnmm000100 movx.w @, */ {"movx.w",{AXY_IND_N,DSP_REG_XY},{PPI,MOVX_NOPY,HEX_0,HEX_4}, arch_sh4al_dsp_up}, +/* nnmm001000 movx.w @+, */{"movx.w",{AXY_INC_N,DSP_REG_XY},{PPI,MOVX_NOPY,HEX_0,HEX_8}, arch_sh4al_dsp_up}, +/* nnmm001100 movx.w @+r8, */{"movx.w",{AXY_PMOD_N,DSP_REG_XY},{PPI,MOVX_NOPY,HEX_0,HEX_C}, arch_sh4al_dsp_up}, +/* nnmm100100 movx.w ,@ */ {"movx.w",{DSP_REG_AX,AXY_IND_N},{PPI,MOVX_NOPY,HEX_2,HEX_4}, arch_sh4al_dsp_up}, +/* nnmm101000 movx.w ,@+ */{"movx.w",{DSP_REG_AX,AXY_INC_N},{PPI,MOVX_NOPY,HEX_2,HEX_8}, arch_sh4al_dsp_up}, +/* nnmm101100 movx.w ,@+r8 */{"movx.w",{DSP_REG_AX,AXY_PMOD_N},{PPI,MOVX_NOPY,HEX_2,HEX_C}, arch_sh4al_dsp_up}, + +/* nnmm010100 movx.l @, */ {"movx.l",{AXY_IND_N,DSP_REG_XY},{PPI,MOVX_NOPY,HEX_1,HEX_4}, arch_sh4al_dsp_up}, +/* nnmm011000 movx.l @+, */{"movx.l",{AXY_INC_N,DSP_REG_XY},{PPI,MOVX_NOPY,HEX_1,HEX_8}, arch_sh4al_dsp_up}, +/* nnmm011100 movx.l @+r8, */{"movx.l",{AXY_PMOD_N,DSP_REG_XY},{PPI,MOVX_NOPY,HEX_1,HEX_C}, arch_sh4al_dsp_up}, +/* nnmm110100 movx.l ,@ */ {"movx.l",{DSP_REG_AX,AXY_IND_N},{PPI,MOVX_NOPY,HEX_3,HEX_4}, arch_sh4al_dsp_up}, +/* nnmm111000 movx.l ,@+ */{"movx.l",{DSP_REG_AX,AXY_INC_N},{PPI,MOVX_NOPY,HEX_3,HEX_8}, arch_sh4al_dsp_up}, +/* nnmm111100 movx.l ,@+r8 */{"movx.l",{DSP_REG_AX,AXY_PMOD_N},{PPI,MOVX_NOPY,HEX_3,HEX_C}, arch_sh4al_dsp_up}, + +/* *n*m*0**01 movy.w @, */ {"movy.w",{AY_IND_N,DSP_REG_Y},{PPI,MOVY,HEX_1}, arch_sh_dsp_up}, +/* *n*m*0**10 movy.w @+, */ {"movy.w",{AY_INC_N,DSP_REG_Y},{PPI,MOVY,HEX_2}, arch_sh_dsp_up}, +/* *n*m*0**11 movy.w @+r9, */ {"movy.w",{AY_PMOD_N,DSP_REG_Y},{PPI,MOVY,HEX_3}, arch_sh_dsp_up}, +/* *n*m*1**01 movy.w ,@ */ {"movy.w",{DSP_REG_A_M,AY_IND_N},{PPI,MOVY,HEX_9}, arch_sh_dsp_up}, +/* *n*m*1**10 movy.w ,@+ */ {"movy.w",{DSP_REG_A_M,AY_INC_N},{PPI,MOVY,HEX_A}, arch_sh_dsp_up}, +/* *n*m*1**11 movy.w ,@+r9 */ {"movy.w",{DSP_REG_A_M,AY_PMOD_N},{PPI,MOVY,HEX_B}, arch_sh_dsp_up}, + +/* nnmm000001 movy.w @, */ {"movy.w",{AYX_IND_N,DSP_REG_YX},{PPI,MOVY_NOPX,HEX_0,HEX_1}, arch_sh4al_dsp_up}, +/* nnmm000010 movy.w @+, */{"movy.w",{AYX_INC_N,DSP_REG_YX},{PPI,MOVY_NOPX,HEX_0,HEX_2}, arch_sh4al_dsp_up}, +/* nnmm000011 movy.w @+r8, */{"movy.w",{AYX_PMOD_N,DSP_REG_YX},{PPI,MOVY_NOPX,HEX_0,HEX_3}, arch_sh4al_dsp_up}, +/* nnmm010001 movy.w ,@ */ {"movy.w",{DSP_REG_AY,AYX_IND_N},{PPI,MOVY_NOPX,HEX_1,HEX_1}, arch_sh4al_dsp_up}, +/* nnmm010010 movy.w ,@+ */{"movy.w",{DSP_REG_AY,AYX_INC_N},{PPI,MOVY_NOPX,HEX_1,HEX_2}, arch_sh4al_dsp_up}, +/* nnmm010011 movy.w ,@+r8 */{"movy.w",{DSP_REG_AY,AYX_PMOD_N},{PPI,MOVY_NOPX,HEX_1,HEX_3}, arch_sh4al_dsp_up}, + +/* nnmm100001 movy.l @, */ {"movy.l",{AYX_IND_N,DSP_REG_YX},{PPI,MOVY_NOPX,HEX_2,HEX_1}, arch_sh4al_dsp_up}, +/* nnmm100010 movy.l @+, */{"movy.l",{AYX_INC_N,DSP_REG_YX},{PPI,MOVY_NOPX,HEX_2,HEX_2}, arch_sh4al_dsp_up}, +/* nnmm100011 movy.l @+r8, */{"movy.l",{AYX_PMOD_N,DSP_REG_YX},{PPI,MOVY_NOPX,HEX_2,HEX_3}, arch_sh4al_dsp_up}, +/* nnmm110001 movy.l ,@ */ {"movy.l",{DSP_REG_AY,AYX_IND_N},{PPI,MOVY_NOPX,HEX_3,HEX_1}, arch_sh4al_dsp_up}, +/* nnmm110010 movy.l ,@+ */{"movy.l",{DSP_REG_AY,AYX_INC_N},{PPI,MOVY_NOPX,HEX_3,HEX_2}, arch_sh4al_dsp_up}, +/* nnmm110011 movy.l ,@+r8 */{"movy.l",{DSP_REG_AY,AYX_PMOD_N},{PPI,MOVY_NOPX,HEX_3,HEX_3}, arch_sh4al_dsp_up}, + +/* 01aaeeffxxyyggnn pmuls Se,Sf,Dg */ {"pmuls",{DSP_REG_E,DSP_REG_F,DSP_REG_G},{PPI,PMUL}, arch_sh_dsp_up}, +/* 10100000xxyynnnn psubc ,, */ +{"psubc",{DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPI3,HEX_A,HEX_0}, arch_sh_dsp_up}, +/* 10110000xxyynnnn paddc ,, */ +{"paddc",{DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPI3,HEX_B,HEX_0}, arch_sh_dsp_up}, +/* 10000100xxyynnnn pcmp , */ +{"pcmp", {DSP_REG_X,DSP_REG_Y},{PPI,PPI3,HEX_8,HEX_4}, arch_sh_dsp_up}, +/* 10100100xxyynnnn pwsb ,, */ +{"pwsb", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPI3,HEX_A,HEX_4}, arch_sh_dsp_up}, +/* 10110100xxyynnnn pwad ,, */ +{"pwad", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPI3,HEX_B,HEX_4}, arch_sh_dsp_up}, +/* 10001000xxyynnnn pabs , */ +{"pabs", {DSP_REG_X,DSP_REG_N},{PPI,PPI3NC,HEX_8,HEX_8}, arch_sh_dsp_up}, +/* 1000100!xx01nnnn pabs , */ +{"pabs", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_8,HEX_9,HEX_1}, arch_sh4al_dsp_up}, +/* 10101000xxyynnnn pabs , */ +{"pabs", {DSP_REG_Y,DSP_REG_N},{PPI,PPI3NC,HEX_A,HEX_8}, arch_sh_dsp_up}, +/* 1010100!01yynnnn pabs , */ +{"pabs", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_A,HEX_9,HEX_4}, arch_sh4al_dsp_up}, +/* 10011000xxyynnnn prnd , */ +{"prnd", {DSP_REG_X,DSP_REG_N},{PPI,PPI3NC,HEX_9,HEX_8}, arch_sh_dsp_up}, +/* 1001100!xx01nnnn prnd , */ +{"prnd", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_9,HEX_9,HEX_1}, arch_sh4al_dsp_up}, +/* 10111000xxyynnnn prnd , */ +{"prnd", {DSP_REG_Y,DSP_REG_N},{PPI,PPI3NC,HEX_B,HEX_8}, arch_sh_dsp_up}, +/* 1011100!01yynnnn prnd , */ +{"prnd", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_B,HEX_9,HEX_4}, arch_sh4al_dsp_up}, + +{"dct",{0},{PPI,PDC,HEX_1}, arch_sh_dsp_up}, +{"dcf",{0},{PPI,PDC,HEX_2}, arch_sh_dsp_up}, + +/* 10000001xxyynnnn pshl ,, */ +{"pshl", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_8,HEX_1}, arch_sh_dsp_up}, +/* 00000iiiiiiinnnn pshl #, */ {"pshl",{A_IMM,DSP_REG_N},{PPI,PSH,HEX_0}, arch_sh_dsp_up}, +/* 10010001xxyynnnn psha ,, */ +{"psha", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_9,HEX_1}, arch_sh_dsp_up}, +/* 00010iiiiiiinnnn psha #, */ {"psha",{A_IMM,DSP_REG_N},{PPI,PSH,HEX_1}, arch_sh_dsp_up}, +/* 10100001xxyynnnn psub ,, */ +{"psub", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_A,HEX_1}, arch_sh_dsp_up}, +/* 10000101xxyynnnn psub ,, */ +{"psub", {DSP_REG_Y,DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_8,HEX_5}, arch_sh4al_dsp_up}, +/* 10110001xxyynnnn padd ,, */ +{"padd", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_B,HEX_1}, arch_sh_dsp_up}, +/* 10010101xxyynnnn pand ,, */ +{"pand", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_9,HEX_5}, arch_sh_dsp_up}, +/* 10100101xxyynnnn pxor ,, */ +{"pxor", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_A,HEX_5}, arch_sh_dsp_up}, +/* 10110101xxyynnnn por ,, */ +{"por", {DSP_REG_X,DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_B,HEX_5}, arch_sh_dsp_up}, +/* 10001001xxyynnnn pdec , */ +{"pdec", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_8,HEX_9}, arch_sh_dsp_up}, +/* 10101001xxyynnnn pdec , */ +{"pdec", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_A,HEX_9}, arch_sh_dsp_up}, +/* 10011001xx00nnnn pinc , */ +{"pinc", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_9,HEX_9,HEX_XX00}, arch_sh_dsp_up}, +/* 1011100100yynnnn pinc , */ +{"pinc", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_B,HEX_9,HEX_00YY}, arch_sh_dsp_up}, +/* 10001101xxyynnnn pclr */ +{"pclr", {DSP_REG_N},{PPI,PPIC,HEX_8,HEX_D}, arch_sh_dsp_up}, +/* 10011101xx00nnnn pdmsb , */ +{"pdmsb", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_9,HEX_D,HEX_XX00}, arch_sh_dsp_up}, +/* 1011110100yynnnn pdmsb , */ +{"pdmsb", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_B,HEX_D,HEX_00YY}, arch_sh_dsp_up}, +/* 11001001xxyynnnn pneg , */ +{"pneg", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_C,HEX_9}, arch_sh_dsp_up}, +/* 11101001xxyynnnn pneg , */ +{"pneg", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_E,HEX_9}, arch_sh_dsp_up}, +/* 11011001xxyynnnn pcopy , */ +{"pcopy", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_D,HEX_9}, arch_sh_dsp_up}, +/* 11111001xxyynnnn pcopy , */ +{"pcopy", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_F,HEX_9}, arch_sh_dsp_up}, +/* 11001101xxyynnnn psts MACH, */ +{"psts", {A_MACH,DSP_REG_N},{PPI,PPIC,HEX_C,HEX_D}, arch_sh_dsp_up}, +/* 11011101xxyynnnn psts MACL, */ +{"psts", {A_MACL,DSP_REG_N},{PPI,PPIC,HEX_D,HEX_D}, arch_sh_dsp_up}, +/* 11101101xxyynnnn plds ,MACH */ +{"plds", {DSP_REG_N,A_MACH},{PPI,PPIC,HEX_E,HEX_D}, arch_sh_dsp_up}, +/* 11111101xxyynnnn plds ,MACL */ +{"plds", {DSP_REG_N,A_MACL},{PPI,PPIC,HEX_F,HEX_D}, arch_sh_dsp_up}, +/* 10011101xx01zzzz pswap , */ +{"pswap", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_9,HEX_D,HEX_1}, arch_sh4al_dsp_up}, +/* 1011110101yyzzzz pswap , */ +{"pswap", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_B,HEX_D,HEX_4}, arch_sh4al_dsp_up}, + +/* 1111nnnn01011101 fabs */{"fabs",{F_REG_N},{HEX_F,REG_N,HEX_5,HEX_D}, arch_sh2e_up}, +/* 1111nnn001011101 fabs */{"fabs",{D_REG_N},{HEX_F,REG_N,HEX_5,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm0000 fadd ,*/{"fadd",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_0}, arch_sh2e_up}, +/* 1111nnn0mmm00000 fadd ,*/{"fadd",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_0}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm0100 fcmp/eq ,*/{"fcmp/eq",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_4}, arch_sh2e_up}, +/* 1111nnn0mmm00100 fcmp/eq ,*/{"fcmp/eq",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_4}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm0101 fcmp/gt ,*/{"fcmp/gt",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_5}, arch_sh2e_up}, +/* 1111nnn0mmm00101 fcmp/gt ,*/{"fcmp/gt",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_5}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnn010111101 fcnvds ,FPUL*/{"fcnvds",{D_REG_N,FPUL_M},{HEX_F,REG_N_D,HEX_B,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnn010101101 fcnvsd FPUL,*/{"fcnvsd",{FPUL_M,D_REG_N},{HEX_F,REG_N_D,HEX_A,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm0011 fdiv ,*/{"fdiv",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_3}, arch_sh2e_up}, +/* 1111nnn0mmm00011 fdiv ,*/{"fdiv",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_3}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnmm11101101 fipr ,*/{"fipr",{V_REG_M,V_REG_N},{HEX_F,REG_NM,HEX_E,HEX_D}, arch_sh4_up}, + +/* 1111nnnn10001101 fldi0 */{"fldi0",{F_REG_N},{HEX_F,REG_N,HEX_8,HEX_D}, arch_sh2e_up}, + +/* 1111nnnn10011101 fldi1 */{"fldi1",{F_REG_N},{HEX_F,REG_N,HEX_9,HEX_D}, arch_sh2e_up}, + +/* 1111nnnn00011101 flds ,FPUL*/{"flds",{F_REG_N,FPUL_M},{HEX_F,REG_N,HEX_1,HEX_D}, arch_sh2e_up}, + +/* 1111nnnn00101101 float FPUL,*/{"float",{FPUL_M,F_REG_N},{HEX_F,REG_N,HEX_2,HEX_D}, arch_sh2e_up}, +/* 1111nnn000101101 float FPUL,*/{"float",{FPUL_M,D_REG_N},{HEX_F,REG_N,HEX_2,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm1110 fmac FR0,,*/{"fmac",{F_FR0,F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_E}, arch_sh2e_up}, + +/* 1111nnnnmmmm1100 fmov ,*/{"fmov",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_C}, arch_sh2e_up}, +/* 1111nnn1mmmm1100 fmov ,*/{"fmov",{DX_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_C}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm1000 fmov @,*/{"fmov",{A_IND_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_8}, arch_sh2e_up}, +/* 1111nnn1mmmm1000 fmov @,*/{"fmov",{A_IND_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_8}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm1010 fmov ,@*/{"fmov",{F_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}, arch_sh2e_up}, +/* 1111nnnnmmm11010 fmov ,@*/{"fmov",{DX_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm1001 fmov @+,*/{"fmov",{A_INC_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_9}, arch_sh2e_up}, +/* 1111nnn1mmmm1001 fmov @+,*/{"fmov",{A_INC_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_9}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm1011 fmov ,@-*/{"fmov",{F_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}, arch_sh2e_up}, +/* 1111nnnnmmm11011 fmov ,@-*/{"fmov",{DX_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm0110 fmov @(R0,),*/{"fmov",{A_IND_R0_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_6}, arch_sh2e_up}, +/* 1111nnn1mmmm0110 fmov @(R0,),*/{"fmov",{A_IND_R0_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_6}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmmm0111 fmov ,@(R0,)*/{"fmov",{F_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}, arch_sh2e_up}, +/* 1111nnnnmmm10111 fmov ,@(R0,)*/{"fmov",{DX_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnn1mmmm1000 fmov.d @,*/{"fmov.d",{A_IND_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_8}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmm11010 fmov.d ,@*/{"fmov.d",{DX_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnn1mmmm1001 fmov.d @+,*/{"fmov.d",{A_INC_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_9}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmm11011 fmov.d ,@-*/{"fmov.d",{DX_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnn1mmmm0110 fmov.d @(R0,),*/{"fmov.d",{A_IND_R0_REG_M,DX_REG_N},{HEX_F,REG_N,REG_M,HEX_6}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnnmmm10111 fmov.d ,@(R0,)*/{"fmov.d",{DX_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}, arch_sh4_up | arch_sh2a_up}, +/* 0011nnnnmmmm0001 0011dddddddddddd fmov.d ,@(,) */ +{"fmov.d",{DX_REG_M,A_DISP_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_3,DISP1_12BY8}, arch_sh2a_up | arch_op32}, +/* 0011nnnnmmmm0001 0111dddddddddddd fmov.d @(,),F_REG_N */ +{"fmov.d",{A_DISP_REG_M,DX_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_7,DISP0_12BY8}, arch_sh2a_up | arch_op32}, + +/* 1111nnnnmmmm1000 fmov.s @,*/{"fmov.s",{A_IND_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_8}, arch_sh2e_up}, + +/* 1111nnnnmmmm1010 fmov.s ,@*/{"fmov.s",{F_REG_M,A_IND_N},{HEX_F,REG_N,REG_M,HEX_A}, arch_sh2e_up}, + +/* 1111nnnnmmmm1001 fmov.s @+,*/{"fmov.s",{A_INC_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_9}, arch_sh2e_up}, + +/* 1111nnnnmmmm1011 fmov.s ,@-*/{"fmov.s",{F_REG_M,A_DEC_N},{HEX_F,REG_N,REG_M,HEX_B}, arch_sh2e_up}, + +/* 1111nnnnmmmm0110 fmov.s @(R0,),*/{"fmov.s",{A_IND_R0_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_6}, arch_sh2e_up}, + +/* 1111nnnnmmmm0111 fmov.s ,@(R0,)*/{"fmov.s",{F_REG_M,A_IND_R0_REG_N},{HEX_F,REG_N,REG_M,HEX_7}, arch_sh2e_up}, +/* 0011nnnnmmmm0001 0011dddddddddddd fmov.s ,@(,) */ +{"fmov.s",{F_REG_M,A_DISP_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_3,DISP1_12BY4}, arch_sh2a_up | arch_op32}, +/* 0011nnnnmmmm0001 0111dddddddddddd fmov.s @(,),F_REG_N */ +{"fmov.s",{A_DISP_REG_M,F_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_7,DISP0_12BY4}, arch_sh2a_up | arch_op32}, + +/* 1111nnnnmmmm0010 fmul ,*/{"fmul",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_2}, arch_sh2e_up}, +/* 1111nnn0mmm00010 fmul ,*/{"fmul",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_2}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnn01001101 fneg */{"fneg",{F_REG_N},{HEX_F,REG_N,HEX_4,HEX_D}, arch_sh2e_up}, +/* 1111nnn001001101 fneg */{"fneg",{D_REG_N},{HEX_F,REG_N,HEX_4,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111011111111101 fpchg */{"fpchg",{0},{HEX_F,HEX_7,HEX_F,HEX_D}, arch_sh4a_up}, + +/* 1111101111111101 frchg */{"frchg",{0},{HEX_F,HEX_B,HEX_F,HEX_D}, arch_sh4_up}, + +/* 1111nnn011111101 fsca FPUL, */{"fsca",{FPUL_M,D_REG_N},{HEX_F,REG_N_D,HEX_F,HEX_D}, arch_sh4_up}, + +/* 1111001111111101 fschg */{"fschg",{0},{HEX_F,HEX_3,HEX_F,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnn01101101 fsqrt */{"fsqrt",{F_REG_N},{HEX_F,REG_N,HEX_6,HEX_D}, arch_sh3e_up | arch_sh2a_up}, +/* 1111nnn001101101 fsqrt */{"fsqrt",{D_REG_N},{HEX_F,REG_N,HEX_6,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnn01111101 fsrra */{"fsrra",{F_REG_N},{HEX_F,REG_N,HEX_7,HEX_D}, arch_sh4_up}, + +/* 1111nnnn00001101 fsts FPUL,*/{"fsts",{FPUL_M,F_REG_N},{HEX_F,REG_N,HEX_0,HEX_D}, arch_sh2e_up}, + +/* 1111nnnnmmmm0001 fsub ,*/{"fsub",{F_REG_M,F_REG_N},{HEX_F,REG_N,REG_M,HEX_1}, arch_sh2e_up}, +/* 1111nnn0mmm00001 fsub ,*/{"fsub",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_1}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nnnn00111101 ftrc ,FPUL*/{"ftrc",{F_REG_N,FPUL_M},{HEX_F,REG_N,HEX_3,HEX_D}, arch_sh2e_up}, +/* 1111nnnn00111101 ftrc ,FPUL*/{"ftrc",{D_REG_N,FPUL_M},{HEX_F,REG_N,HEX_3,HEX_D}, arch_sh4_up | arch_sh2a_up}, + +/* 1111nn0111111101 ftrv XMTRX_M4,*/{"ftrv",{XMTRX_M4,V_REG_N},{HEX_F,REG_N_B01,HEX_F,HEX_D}, arch_sh4_up}, + + /* 10000110nnnn0iii bclr #, */ {"bclr",{A_IMM, A_REG_N},{HEX_8,HEX_6,REG_N,IMM0_3c}, arch_sh2a_nofpu_up}, + /* 0011nnnn0iii1001 0000dddddddddddd bclr.b #,@(,) */ +{"bclr.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_0,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, + /* 10000111nnnn1iii bld #, */ {"bld",{A_IMM, A_REG_N},{HEX_8,HEX_7,REG_N,IMM0_3s}, arch_sh2a_nofpu_up}, + /* 0011nnnn0iii1001 0011dddddddddddd bld.b #,@(,) */ +{"bld.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_3,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, + /* 10000110nnnn1iii bset #, */ {"bset",{A_IMM, A_REG_N},{HEX_8,HEX_6,REG_N,IMM0_3s}, arch_sh2a_nofpu_up}, + /* 0011nnnn0iii1001 0001dddddddddddd bset.b #,@(,) */ +{"bset.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_1,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, + /* 10000111nnnn0iii bst #, */ {"bst",{A_IMM, A_REG_N},{HEX_8,HEX_7,REG_N,IMM0_3c}, arch_sh2a_nofpu_up}, + /* 0011nnnn0iii1001 0010dddddddddddd bst.b #,@(,) */ +{"bst.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_2,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, + /* 0100nnnn10010001 clips.b */ {"clips.b",{A_REG_N},{HEX_4,REG_N,HEX_9,HEX_1}, arch_sh2a_nofpu_up}, + /* 0100nnnn10010101 clips.w */ {"clips.w",{A_REG_N},{HEX_4,REG_N,HEX_9,HEX_5}, arch_sh2a_nofpu_up}, + /* 0100nnnn10000001 clipu.b */ {"clipu.b",{A_REG_N},{HEX_4,REG_N,HEX_8,HEX_1}, arch_sh2a_nofpu_up}, + /* 0100nnnn10000101 clipu.w */ {"clipu.w",{A_REG_N},{HEX_4,REG_N,HEX_8,HEX_5}, arch_sh2a_nofpu_up}, + /* 0100nnnn10010100 divs R0, */ {"divs",{A_R0,A_REG_N},{HEX_4,REG_N,HEX_9,HEX_4}, arch_sh2a_nofpu_up}, + /* 0100nnnn10000100 divu R0, */ {"divu",{A_R0,A_REG_N},{HEX_4,REG_N,HEX_8,HEX_4}, arch_sh2a_nofpu_up}, + /* 0100mmmm01001011 jsr/n @ */ {"jsr/n",{A_IND_M},{HEX_4,REG_M,HEX_4,HEX_B}, arch_sh2a_nofpu_up}, + /* 10000011dddddddd jsr/n @@(,TBR) */ {"jsr/n",{A_DISP2_TBR},{HEX_8,HEX_3,IMM0_8BY4}, arch_sh2a_nofpu_up}, + /* 0100mmmm11100101 ldbank @,R0 */ {"ldbank",{A_IND_M,A_R0},{HEX_4,REG_M,HEX_E,HEX_5}, arch_sh2a_nofpu_up}, + /* 0100mmmm11110001 movml.l ,@-R15 */ {"movml.l",{A_REG_M,A_DEC_R15},{HEX_4,REG_M,HEX_F,HEX_1}, arch_sh2a_nofpu_up}, + /* 0100mmmm11110101 movml.l @R15+, */ {"movml.l",{A_INC_R15,A_REG_M},{HEX_4,REG_M,HEX_F,HEX_5}, arch_sh2a_nofpu_up}, + /* 0100mmmm11110000 movml.l ,@-R15 */ {"movmu.l",{A_REG_M,A_DEC_R15},{HEX_4,REG_M,HEX_F,HEX_0}, arch_sh2a_nofpu_up}, + /* 0100mmmm11110100 movml.l @R15+, */ {"movmu.l",{A_INC_R15,A_REG_M},{HEX_4,REG_M,HEX_F,HEX_4}, arch_sh2a_nofpu_up}, + /* 0000nnnn00111001 movrt */ {"movrt",{A_REG_N},{HEX_0,REG_N,HEX_3,HEX_9}, arch_sh2a_nofpu_up}, + /* 0100nnnn10000000 mulr R0, */ {"mulr",{A_R0,A_REG_N},{HEX_4,REG_N,HEX_8,HEX_0}, arch_sh2a_nofpu_up}, + /* 0000000001101000 nott */ {"nott",{A_END},{HEX_0,HEX_0,HEX_6,HEX_8}, arch_sh2a_nofpu_up}, + /* 0000000001011011 resbank */ {"resbank",{A_END},{HEX_0,HEX_0,HEX_5,HEX_B}, arch_sh2a_nofpu_up}, + /* 0000000001101011 rts/n */ {"rts/n",{A_END},{HEX_0,HEX_0,HEX_6,HEX_B}, arch_sh2a_nofpu_up}, + /* 0000mmmm01111011 rtv/n */ {"rtv/n",{A_REG_M},{HEX_0,REG_M,HEX_7,HEX_B}, arch_sh2a_nofpu_up}, + /* 0100nnnn11100001 stbank R0,@*/ {"stbank",{A_R0,A_IND_N},{HEX_4,REG_N,HEX_E,HEX_1}, arch_sh2a_nofpu_up}, + +/* 0011nnnn0iii1001 0100dddddddddddd band.b #,@(,) */ +{"band.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_4,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnn0iii1001 1100dddddddddddd bandnot.b #,@(,) */ +{"bandnot.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_C,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnn0iii1001 1011dddddddddddd bldnot.b #,@(,) */ +{"bldnot.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_B,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnn0iii1001 0101dddddddddddd bor.b #,@(,) */ +{"bor.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_5,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnn0iii1001 1101dddddddddddd bornot.b #,@(,) */ +{"bornot.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_D,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnn0iii1001 0110dddddddddddd bxor.b #,@(,) */ +{"bxor.b",{A_IMM,A_DISP_REG_N},{HEX_3,REG_N,IMM0_3Uc,HEX_9,HEX_6,DISP1_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0000nnnniiii0000 iiiiiiiiiiiiiiii movi20 #, */ +{"movi20",{A_IMM,A_REG_N},{HEX_0,REG_N,IMM0_20_4,HEX_0,IMM0_20}, arch_sh2a_nofpu_up | arch_op32}, +/* 0000nnnniiii0001 iiiiiiiiiiiiiiii movi20s #, */ +{"movi20s",{A_IMM,A_REG_N},{HEX_0,REG_N,IMM0_20_4,HEX_1,IMM0_20BY8}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnnmmmm0001 1000dddddddddddd movu.b @(,), */ +{"movu.b",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_8,DISP0_12}, arch_sh2a_nofpu_up | arch_op32}, +/* 0011nnnnmmmm0001 1001dddddddddddd movu.w @(,), */ +{"movu.w",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_9,DISP0_12BY2}, arch_sh2a_nofpu_up | arch_op32}, + +{ 0, {0}, {0}, 0 } +}; + +#endif + +#ifdef ARCH_all +#define INCLUDE_SHMEDIA +#endif + +static void print_movxy + (const sh_opcode_info *, int, int, fprintf_ftype, void *); +static void print_insn_ddt (int, struct disassemble_info *); +static void print_dsp_reg (int, fprintf_ftype, void *); +static void print_insn_ppi (int, struct disassemble_info *); + +static void +print_movxy (const sh_opcode_info *op, int rn, int rm, + fprintf_ftype fprintf_fn, void *stream) +{ + int n; + + fprintf_fn (stream, "%s\t", op->name); + for (n = 0; n < 2; n++) + { + switch (op->arg[n]) + { + case A_IND_N: + case AX_IND_N: + case AXY_IND_N: + case AY_IND_N: + case AYX_IND_N: + fprintf_fn (stream, "@r%d", rn); + break; + case A_INC_N: + case AX_INC_N: + case AXY_INC_N: + case AY_INC_N: + case AYX_INC_N: + fprintf_fn (stream, "@r%d+", rn); + break; + case AX_PMOD_N: + case AXY_PMOD_N: + fprintf_fn (stream, "@r%d+r8", rn); + break; + case AY_PMOD_N: + case AYX_PMOD_N: + fprintf_fn (stream, "@r%d+r9", rn); + break; + case DSP_REG_A_M: + fprintf_fn (stream, "a%c", '0' + rm); + break; + case DSP_REG_X: + fprintf_fn (stream, "x%c", '0' + rm); + break; + case DSP_REG_Y: + fprintf_fn (stream, "y%c", '0' + rm); + break; + case DSP_REG_AX: + fprintf_fn (stream, "%c%c", + (rm & 1) ? 'x' : 'a', + (rm & 2) ? '1' : '0'); + break; + case DSP_REG_XY: + fprintf_fn (stream, "%c%c", + (rm & 1) ? 'y' : 'x', + (rm & 2) ? '1' : '0'); + break; + case DSP_REG_AY: + fprintf_fn (stream, "%c%c", + (rm & 2) ? 'y' : 'a', + (rm & 1) ? '1' : '0'); + break; + case DSP_REG_YX: + fprintf_fn (stream, "%c%c", + (rm & 2) ? 'x' : 'y', + (rm & 1) ? '1' : '0'); + break; + default: + abort (); + } + if (n == 0) + fprintf_fn (stream, ","); + } +} + +/* Print a double data transfer insn. INSN is just the lower three + nibbles of the insn, i.e. field a and the bit that indicates if + a parallel processing insn follows. + Return nonzero if a field b of a parallel processing insns follows. */ + +static void +print_insn_ddt (int insn, struct disassemble_info *info) +{ + fprintf_ftype fprintf_fn = info->fprintf_func; + void *stream = info->stream; + + /* If this is just a nop, make sure to emit something. */ + if (insn == 0x000) + fprintf_fn (stream, "nopx\tnopy"); + + /* If a parallel processing insn was printed before, + and we got a non-nop, emit a tab. */ + if ((insn & 0x800) && (insn & 0x3ff)) + fprintf_fn (stream, "\t"); + + /* Check if either the x or y part is invalid. */ + if (((insn & 0xc) == 0 && (insn & 0x2a0)) + || ((insn & 3) == 0 && (insn & 0x150))) + if (info->mach != bfd_mach_sh_dsp + && info->mach != bfd_mach_sh3_dsp) + { + static const sh_opcode_info *first_movx, *first_movy; + const sh_opcode_info *op; + int is_movy; + + if (! first_movx) + { + for (first_movx = sh_table; first_movx->nibbles[1] != MOVX_NOPY;) + first_movx++; + for (first_movy = first_movx; first_movy->nibbles[1] != MOVY_NOPX;) + first_movy++; + } + + is_movy = ((insn & 3) != 0); + + if (is_movy) + op = first_movy; + else + op = first_movx; + + while (op->nibbles[2] != (unsigned) ((insn >> 4) & 3) + || op->nibbles[3] != (unsigned) (insn & 0xf)) + op++; + + print_movxy (op, + (4 * ((insn & (is_movy ? 0x200 : 0x100)) == 0) + + 2 * is_movy + + 1 * ((insn & (is_movy ? 0x100 : 0x200)) != 0)), + (insn >> 6) & 3, + fprintf_fn, stream); + } + else + fprintf_fn (stream, ".word 0x%x", insn); + else + { + static const sh_opcode_info *first_movx, *first_movy; + const sh_opcode_info *opx, *opy; + unsigned int insn_x, insn_y; + + if (! first_movx) + { + for (first_movx = sh_table; first_movx->nibbles[1] != MOVX;) + first_movx++; + for (first_movy = first_movx; first_movy->nibbles[1] != MOVY;) + first_movy++; + } + insn_x = (insn >> 2) & 0xb; + if (insn_x) + { + for (opx = first_movx; opx->nibbles[2] != insn_x;) + opx++; + print_movxy (opx, ((insn >> 9) & 1) + 4, (insn >> 7) & 1, + fprintf_fn, stream); + } + insn_y = (insn & 3) | ((insn >> 1) & 8); + if (insn_y) + { + if (insn_x) + fprintf_fn (stream, "\t"); + for (opy = first_movy; opy->nibbles[2] != insn_y;) + opy++; + print_movxy (opy, ((insn >> 8) & 1) + 6, (insn >> 6) & 1, + fprintf_fn, stream); + } + } +} + +static void +print_dsp_reg (int rm, fprintf_ftype fprintf_fn, void *stream) +{ + switch (rm) + { + case A_A1_NUM: + fprintf_fn (stream, "a1"); + break; + case A_A0_NUM: + fprintf_fn (stream, "a0"); + break; + case A_X0_NUM: + fprintf_fn (stream, "x0"); + break; + case A_X1_NUM: + fprintf_fn (stream, "x1"); + break; + case A_Y0_NUM: + fprintf_fn (stream, "y0"); + break; + case A_Y1_NUM: + fprintf_fn (stream, "y1"); + break; + case A_M0_NUM: + fprintf_fn (stream, "m0"); + break; + case A_A1G_NUM: + fprintf_fn (stream, "a1g"); + break; + case A_M1_NUM: + fprintf_fn (stream, "m1"); + break; + case A_A0G_NUM: + fprintf_fn (stream, "a0g"); + break; + default: + fprintf_fn (stream, "0x%x", rm); + break; + } +} + +static void +print_insn_ppi (int field_b, struct disassemble_info *info) +{ + static const char *sx_tab[] = { "x0", "x1", "a0", "a1" }; + static const char *sy_tab[] = { "y0", "y1", "m0", "m1" }; + fprintf_ftype fprintf_fn = info->fprintf_func; + void *stream = info->stream; + unsigned int nib1, nib2, nib3; + unsigned int altnib1, nib4; + const char *dc = NULL; + const sh_opcode_info *op; + + if ((field_b & 0xe800) == 0) + { + fprintf_fn (stream, "psh%c\t#%d,", + field_b & 0x1000 ? 'a' : 'l', + (field_b >> 4) & 127); + print_dsp_reg (field_b & 0xf, fprintf_fn, stream); + return; + } + if ((field_b & 0xc000) == 0x4000 && (field_b & 0x3000) != 0x1000) + { + static const char *du_tab[] = { "x0", "y0", "a0", "a1" }; + static const char *se_tab[] = { "x0", "x1", "y0", "a1" }; + static const char *sf_tab[] = { "y0", "y1", "x0", "a1" }; + static const char *sg_tab[] = { "m0", "m1", "a0", "a1" }; + + if (field_b & 0x2000) + { + fprintf_fn (stream, "p%s %s,%s,%s\t", + (field_b & 0x1000) ? "add" : "sub", + sx_tab[(field_b >> 6) & 3], + sy_tab[(field_b >> 4) & 3], + du_tab[(field_b >> 0) & 3]); + } + else if ((field_b & 0xf0) == 0x10 + && info->mach != bfd_mach_sh_dsp + && info->mach != bfd_mach_sh3_dsp) + { + fprintf_fn (stream, "pclr %s \t", du_tab[(field_b >> 0) & 3]); + } + else if ((field_b & 0xf3) != 0) + { + fprintf_fn (stream, ".word 0x%x\t", field_b); + } + fprintf_fn (stream, "pmuls%c%s,%s,%s", + field_b & 0x2000 ? ' ' : '\t', + se_tab[(field_b >> 10) & 3], + sf_tab[(field_b >> 8) & 3], + sg_tab[(field_b >> 2) & 3]); + return; + } + + nib1 = PPIC; + nib2 = field_b >> 12 & 0xf; + nib3 = field_b >> 8 & 0xf; + nib4 = field_b >> 4 & 0xf; + switch (nib3 & 0x3) + { + case 0: + dc = ""; + nib1 = PPI3; + break; + case 1: + dc = ""; + break; + case 2: + dc = "dct "; + nib3 -= 1; + break; + case 3: + dc = "dcf "; + nib3 -= 2; + break; + } + if (nib1 == PPI3) + altnib1 = PPI3NC; + else + altnib1 = nib1; + for (op = sh_table; op->name; op++) + { + if ((op->nibbles[1] == nib1 || op->nibbles[1] == altnib1) + && op->nibbles[2] == nib2 + && op->nibbles[3] == nib3) + { + int n; + + switch (op->nibbles[4]) + { + case HEX_0: + break; + case HEX_XX00: + if ((nib4 & 3) != 0) + continue; + break; + case HEX_1: + if ((nib4 & 3) != 1) + continue; + break; + case HEX_00YY: + if ((nib4 & 0xc) != 0) + continue; + break; + case HEX_4: + if ((nib4 & 0xc) != 4) + continue; + break; + default: + abort (); + } + fprintf_fn (stream, "%s%s\t", dc, op->name); + for (n = 0; n < 3 && op->arg[n] != A_END; n++) + { + if (n && op->arg[1] != A_END) + fprintf_fn (stream, ","); + switch (op->arg[n]) + { + case DSP_REG_N: + print_dsp_reg (field_b & 0xf, fprintf_fn, stream); + break; + case DSP_REG_X: + fprintf_fn (stream, sx_tab[(field_b >> 6) & 3]); + break; + case DSP_REG_Y: + fprintf_fn (stream, sy_tab[(field_b >> 4) & 3]); + break; + case A_MACH: + fprintf_fn (stream, "mach"); + break; + case A_MACL: + fprintf_fn (stream, "macl"); + break; + default: + abort (); + } + } + return; + } + } + /* Not found. */ + fprintf_fn (stream, ".word 0x%x", field_b); +} + +/* FIXME mvs: movx insns print as ".word 0x%03x", insn & 0xfff + (ie. the upper nibble is missing). */ +int +print_insn_sh (bfd_vma memaddr, struct disassemble_info *info) +{ + fprintf_ftype fprintf_fn = info->fprintf_func; + void *stream = info->stream; + unsigned char insn[4]; + unsigned char nibs[8]; + int status; + bfd_vma relmask = ~(bfd_vma) 0; + const sh_opcode_info *op; + unsigned int target_arch; + int allow_op32; + + switch (info->mach) + { + case bfd_mach_sh: + target_arch = arch_sh1; + break; + case bfd_mach_sh4: + target_arch = arch_sh4; + break; + case bfd_mach_sh5: +#ifdef INCLUDE_SHMEDIA + status = print_insn_sh64 (memaddr, info); + if (status != -2) + return status; +#endif + /* When we get here for sh64, it's because we want to disassemble + SHcompact, i.e. arch_sh4. */ + target_arch = arch_sh4; + break; + default: + fprintf (stderr, "sh architecture not supported\n"); + return -1; + } + + status = info->read_memory_func (memaddr, insn, 2, info); + + if (status != 0) + { + info->memory_error_func (status, memaddr, info); + return -1; + } + + if (info->endian == BFD_ENDIAN_LITTLE) + { + nibs[0] = (insn[1] >> 4) & 0xf; + nibs[1] = insn[1] & 0xf; + + nibs[2] = (insn[0] >> 4) & 0xf; + nibs[3] = insn[0] & 0xf; + } + else + { + nibs[0] = (insn[0] >> 4) & 0xf; + nibs[1] = insn[0] & 0xf; + + nibs[2] = (insn[1] >> 4) & 0xf; + nibs[3] = insn[1] & 0xf; + } + status = info->read_memory_func (memaddr + 2, insn + 2, 2, info); + if (status != 0) + allow_op32 = 0; + else + { + allow_op32 = 1; + + if (info->endian == BFD_ENDIAN_LITTLE) + { + nibs[4] = (insn[3] >> 4) & 0xf; + nibs[5] = insn[3] & 0xf; + + nibs[6] = (insn[2] >> 4) & 0xf; + nibs[7] = insn[2] & 0xf; + } + else + { + nibs[4] = (insn[2] >> 4) & 0xf; + nibs[5] = insn[2] & 0xf; + + nibs[6] = (insn[3] >> 4) & 0xf; + nibs[7] = insn[3] & 0xf; + } + } + + if (nibs[0] == 0xf && (nibs[1] & 4) == 0 + && SH_MERGE_ARCH_SET_VALID (target_arch, arch_sh_dsp_up)) + { + if (nibs[1] & 8) + { + int field_b; + + status = info->read_memory_func (memaddr + 2, insn, 2, info); + + if (status != 0) + { + info->memory_error_func (status, memaddr + 2, info); + return -1; + } + + if (info->endian == BFD_ENDIAN_LITTLE) + field_b = insn[1] << 8 | insn[0]; + else + field_b = insn[0] << 8 | insn[1]; + + print_insn_ppi (field_b, info); + print_insn_ddt ((nibs[1] << 8) | (nibs[2] << 4) | nibs[3], info); + return 4; + } + print_insn_ddt ((nibs[1] << 8) | (nibs[2] << 4) | nibs[3], info); + return 2; + } + for (op = sh_table; op->name; op++) + { + int n; + int imm = 0; + int rn = 0; + int rm = 0; + int rb = 0; + int disp_pc; + bfd_vma disp_pc_addr = 0; + int disp = 0; + int has_disp = 0; + int max_n = SH_MERGE_ARCH_SET (op->arch, arch_op32) ? 8 : 4; + + if (!allow_op32 + && SH_MERGE_ARCH_SET (op->arch, arch_op32)) + goto fail; + + if (!SH_MERGE_ARCH_SET_VALID (op->arch, target_arch)) + goto fail; + for (n = 0; n < max_n; n++) + { + int i = op->nibbles[n]; + + if (i < 16) + { + if (nibs[n] == i) + continue; + goto fail; + } + switch (i) + { + case BRANCH_8: + imm = (nibs[2] << 4) | (nibs[3]); + if (imm & 0x80) + imm |= ~0xff; + imm = ((char) imm) * 2 + 4; + goto ok; + case BRANCH_12: + imm = ((nibs[1]) << 8) | (nibs[2] << 4) | (nibs[3]); + if (imm & 0x800) + imm |= ~0xfff; + imm = imm * 2 + 4; + goto ok; + case IMM0_3c: + if (nibs[3] & 0x8) + goto fail; + imm = nibs[3] & 0x7; + break; + case IMM0_3s: + if (!(nibs[3] & 0x8)) + goto fail; + imm = nibs[3] & 0x7; + break; + case IMM0_3Uc: + if (nibs[2] & 0x8) + goto fail; + imm = nibs[2] & 0x7; + break; + case IMM0_3Us: + if (!(nibs[2] & 0x8)) + goto fail; + imm = nibs[2] & 0x7; + break; + case DISP0_12: + case DISP1_12: + disp = (nibs[5] << 8) | (nibs[6] << 4) | nibs[7]; + has_disp = 1; + goto ok; + case DISP0_12BY2: + case DISP1_12BY2: + disp = ((nibs[5] << 8) | (nibs[6] << 4) | nibs[7]) << 1; + relmask = ~(bfd_vma) 1; + has_disp = 1; + goto ok; + case DISP0_12BY4: + case DISP1_12BY4: + disp = ((nibs[5] << 8) | (nibs[6] << 4) | nibs[7]) << 2; + relmask = ~(bfd_vma) 3; + has_disp = 1; + goto ok; + case DISP0_12BY8: + case DISP1_12BY8: + disp = ((nibs[5] << 8) | (nibs[6] << 4) | nibs[7]) << 3; + relmask = ~(bfd_vma) 7; + has_disp = 1; + goto ok; + case IMM0_20_4: + break; + case IMM0_20: + imm = ((nibs[2] << 16) | (nibs[4] << 12) | (nibs[5] << 8) + | (nibs[6] << 4) | nibs[7]); + if (imm & 0x80000) + imm -= 0x100000; + goto ok; + case IMM0_20BY8: + imm = ((nibs[2] << 16) | (nibs[4] << 12) | (nibs[5] << 8) + | (nibs[6] << 4) | nibs[7]); + imm <<= 8; + if (imm & 0x8000000) + imm -= 0x10000000; + goto ok; + case IMM0_4: + case IMM1_4: + imm = nibs[3]; + goto ok; + case IMM0_4BY2: + case IMM1_4BY2: + imm = nibs[3] << 1; + goto ok; + case IMM0_4BY4: + case IMM1_4BY4: + imm = nibs[3] << 2; + goto ok; + case IMM0_8: + case IMM1_8: + imm = (nibs[2] << 4) | nibs[3]; + disp = imm; + has_disp = 1; + if (imm & 0x80) + imm -= 0x100; + goto ok; + case PCRELIMM_8BY2: + imm = ((nibs[2] << 4) | nibs[3]) << 1; + relmask = ~(bfd_vma) 1; + goto ok; + case PCRELIMM_8BY4: + imm = ((nibs[2] << 4) | nibs[3]) << 2; + relmask = ~(bfd_vma) 3; + goto ok; + case IMM0_8BY2: + case IMM1_8BY2: + imm = ((nibs[2] << 4) | nibs[3]) << 1; + goto ok; + case IMM0_8BY4: + case IMM1_8BY4: + imm = ((nibs[2] << 4) | nibs[3]) << 2; + goto ok; + case REG_N_D: + if ((nibs[n] & 1) != 0) + goto fail; + /* fall through */ + case REG_N: + rn = nibs[n]; + break; + case REG_M: + rm = nibs[n]; + break; + case REG_N_B01: + if ((nibs[n] & 0x3) != 1 /* binary 01 */) + goto fail; + rn = (nibs[n] & 0xc) >> 2; + break; + case REG_NM: + rn = (nibs[n] & 0xc) >> 2; + rm = (nibs[n] & 0x3); + break; + case REG_B: + rb = nibs[n] & 0x07; + break; + case SDT_REG_N: + /* sh-dsp: single data transfer. */ + rn = nibs[n]; + if ((rn & 0xc) != 4) + goto fail; + rn = rn & 0x3; + rn |= (!(rn & 2)) << 2; + break; + case PPI: + case REPEAT: + goto fail; + default: + abort (); + } + } + + ok: + /* sh2a has D_REG but not X_REG. We don't know the pattern + doesn't match unless we check the output args to see if they + make sense. */ + if (target_arch == arch_sh2a + && ((op->arg[0] == DX_REG_M && (rm & 1) != 0) + || (op->arg[1] == DX_REG_N && (rn & 1) != 0))) + goto fail; + + fprintf_fn (stream, "%s\t", op->name); + disp_pc = 0; + for (n = 0; n < 3 && op->arg[n] != A_END; n++) + { + if (n && op->arg[1] != A_END) + fprintf_fn (stream, ","); + switch (op->arg[n]) + { + case A_IMM: + fprintf_fn (stream, "#%d", imm); + break; + case A_R0: + fprintf_fn (stream, "r0"); + break; + case A_REG_N: + fprintf_fn (stream, "r%d", rn); + break; + case A_INC_N: + case AS_INC_N: + fprintf_fn (stream, "@r%d+", rn); + break; + case A_DEC_N: + case AS_DEC_N: + fprintf_fn (stream, "@-r%d", rn); + break; + case A_IND_N: + case AS_IND_N: + fprintf_fn (stream, "@r%d", rn); + break; + case A_DISP_REG_N: + fprintf_fn (stream, "@(%d,r%d)", has_disp?disp:imm, rn); + break; + case AS_PMOD_N: + fprintf_fn (stream, "@r%d+r8", rn); + break; + case A_REG_M: + fprintf_fn (stream, "r%d", rm); + break; + case A_INC_M: + fprintf_fn (stream, "@r%d+", rm); + break; + case A_DEC_M: + fprintf_fn (stream, "@-r%d", rm); + break; + case A_IND_M: + fprintf_fn (stream, "@r%d", rm); + break; + case A_DISP_REG_M: + fprintf_fn (stream, "@(%d,r%d)", has_disp?disp:imm, rm); + break; + case A_REG_B: + fprintf_fn (stream, "r%d_bank", rb); + break; + case A_DISP_PC: + disp_pc = 1; + disp_pc_addr = imm + 4 + (memaddr & relmask); + (*info->print_address_func) (disp_pc_addr, info); + break; + case A_IND_R0_REG_N: + fprintf_fn (stream, "@(r0,r%d)", rn); + break; + case A_IND_R0_REG_M: + fprintf_fn (stream, "@(r0,r%d)", rm); + break; + case A_DISP_GBR: + fprintf_fn (stream, "@(%d,gbr)", has_disp?disp:imm); + break; + case A_TBR: + fprintf_fn (stream, "tbr"); + break; + case A_DISP2_TBR: + fprintf_fn (stream, "@@(%d,tbr)", has_disp?disp:imm); + break; + case A_INC_R15: + fprintf_fn (stream, "@r15+"); + break; + case A_DEC_R15: + fprintf_fn (stream, "@-r15"); + break; + case A_R0_GBR: + fprintf_fn (stream, "@(r0,gbr)"); + break; + case A_BDISP12: + case A_BDISP8: + { + bfd_vma addr; + addr = imm + memaddr; + (*info->print_address_func) (addr, info); + } + break; + case A_SR: + fprintf_fn (stream, "sr"); + break; + case A_GBR: + fprintf_fn (stream, "gbr"); + break; + case A_VBR: + fprintf_fn (stream, "vbr"); + break; + case A_DSR: + fprintf_fn (stream, "dsr"); + break; + case A_MOD: + fprintf_fn (stream, "mod"); + break; + case A_RE: + fprintf_fn (stream, "re"); + break; + case A_RS: + fprintf_fn (stream, "rs"); + break; + case A_A0: + fprintf_fn (stream, "a0"); + break; + case A_X0: + fprintf_fn (stream, "x0"); + break; + case A_X1: + fprintf_fn (stream, "x1"); + break; + case A_Y0: + fprintf_fn (stream, "y0"); + break; + case A_Y1: + fprintf_fn (stream, "y1"); + break; + case DSP_REG_M: + print_dsp_reg (rm, fprintf_fn, stream); + break; + case A_SSR: + fprintf_fn (stream, "ssr"); + break; + case A_SPC: + fprintf_fn (stream, "spc"); + break; + case A_MACH: + fprintf_fn (stream, "mach"); + break; + case A_MACL: + fprintf_fn (stream, "macl"); + break; + case A_PR: + fprintf_fn (stream, "pr"); + break; + case A_SGR: + fprintf_fn (stream, "sgr"); + break; + case A_DBR: + fprintf_fn (stream, "dbr"); + break; + case F_REG_N: + fprintf_fn (stream, "fr%d", rn); + break; + case F_REG_M: + fprintf_fn (stream, "fr%d", rm); + break; + case DX_REG_N: + if (rn & 1) + { + fprintf_fn (stream, "xd%d", rn & ~1); + break; + } + case D_REG_N: + fprintf_fn (stream, "dr%d", rn); + break; + case DX_REG_M: + if (rm & 1) + { + fprintf_fn (stream, "xd%d", rm & ~1); + break; + } + case D_REG_M: + fprintf_fn (stream, "dr%d", rm); + break; + case FPSCR_M: + case FPSCR_N: + fprintf_fn (stream, "fpscr"); + break; + case FPUL_M: + case FPUL_N: + fprintf_fn (stream, "fpul"); + break; + case F_FR0: + fprintf_fn (stream, "fr0"); + break; + case V_REG_N: + fprintf_fn (stream, "fv%d", rn * 4); + break; + case V_REG_M: + fprintf_fn (stream, "fv%d", rm * 4); + break; + case XMTRX_M4: + fprintf_fn (stream, "xmtrx"); + break; + default: + abort (); + } + } + +#if 0 + /* This code prints instructions in delay slots on the same line + as the instruction which needs the delay slots. This can be + confusing, since other disassembler don't work this way, and + it means that the instructions are not all in a line. So I + disabled it. Ian. */ + if (!(info->flags & 1) + && (op->name[0] == 'j' + || (op->name[0] == 'b' + && (op->name[1] == 'r' + || op->name[1] == 's')) + || (op->name[0] == 'r' && op->name[1] == 't') + || (op->name[0] == 'b' && op->name[2] == '.'))) + { + info->flags |= 1; + fprintf_fn (stream, "\t(slot "); + print_insn_sh (memaddr + 2, info); + info->flags &= ~1; + fprintf_fn (stream, ")"); + return 4; + } +#endif + + if (disp_pc && strcmp (op->name, "mova") != 0) + { + int size; + bfd_byte bytes[4]; + + if (relmask == ~(bfd_vma) 1) + size = 2; + else + size = 4; + status = info->read_memory_func (disp_pc_addr, bytes, size, info); + if (status == 0) + { + unsigned int val; + + if (size == 2) + { + if (info->endian == BFD_ENDIAN_LITTLE) + val = bfd_getl16 (bytes); + else + val = bfd_getb16 (bytes); + } + else + { + if (info->endian == BFD_ENDIAN_LITTLE) + val = bfd_getl32 (bytes); + else + val = bfd_getb32 (bytes); + } + if ((*info->symbol_at_address_func) (val, info)) + { + fprintf_fn (stream, "\t! "); + (*info->print_address_func) (val, info); + } + else + fprintf_fn (stream, "\t! 0x%x", val); + } + } + + return SH_MERGE_ARCH_SET (op->arch, arch_op32) ? 4 : 2; + fail: + ; + + } + fprintf_fn (stream, ".word 0x%x%x%x%x", nibs[0], nibs[1], nibs[2], nibs[3]); + return 2; +} diff --git a/qemu/qemu-git/softmmu_defs.h b/qemu/qemu-git/softmmu_defs.h new file mode 100644 index 0000000..e38bb75 --- /dev/null +++ b/qemu/qemu-git/softmmu_defs.h @@ -0,0 +1,22 @@ +#ifndef SOFTMMU_DEFS_H +#define SOFTMMU_DEFS_H + +uint8_t REGPARM __ldb_mmu(target_ulong addr, int mmu_idx); +void REGPARM __stb_mmu(target_ulong addr, uint8_t val, int mmu_idx); +uint16_t REGPARM __ldw_mmu(target_ulong addr, int mmu_idx); +void REGPARM __stw_mmu(target_ulong addr, uint16_t val, int mmu_idx); +uint32_t REGPARM __ldl_mmu(target_ulong addr, int mmu_idx); +void REGPARM __stl_mmu(target_ulong addr, uint32_t val, int mmu_idx); +uint64_t REGPARM __ldq_mmu(target_ulong addr, int mmu_idx); +void REGPARM __stq_mmu(target_ulong addr, uint64_t val, int mmu_idx); + +uint8_t REGPARM __ldb_cmmu(target_ulong addr, int mmu_idx); +void REGPARM __stb_cmmu(target_ulong addr, uint8_t val, int mmu_idx); +uint16_t REGPARM __ldw_cmmu(target_ulong addr, int mmu_idx); +void REGPARM __stw_cmmu(target_ulong addr, uint16_t val, int mmu_idx); +uint32_t REGPARM __ldl_cmmu(target_ulong addr, int mmu_idx); +void REGPARM __stl_cmmu(target_ulong addr, uint32_t val, int mmu_idx); +uint64_t REGPARM __ldq_cmmu(target_ulong addr, int mmu_idx); +void REGPARM __stq_cmmu(target_ulong addr, uint64_t val, int mmu_idx); + +#endif diff --git a/qemu/qemu-git/softmmu_exec.h b/qemu/qemu-git/softmmu_exec.h new file mode 100644 index 0000000..a43e621 --- /dev/null +++ b/qemu/qemu-git/softmmu_exec.h @@ -0,0 +1,134 @@ +/* Common softmmu definitions and inline routines. */ + +/* XXX: find something cleaner. + * Furthermore, this is false for 64 bits targets + */ +#define ldul_user ldl_user +#define ldul_kernel ldl_kernel +#define ldul_hypv ldl_hypv +#define ldul_executive ldl_executive +#define ldul_supervisor ldl_supervisor + +#include "softmmu_defs.h" + +#define ACCESS_TYPE 0 +#define MEMSUFFIX MMU_MODE0_SUFFIX +#define DATA_SIZE 1 +#include "softmmu_header.h" + +#define DATA_SIZE 2 +#include "softmmu_header.h" + +#define DATA_SIZE 4 +#include "softmmu_header.h" + +#define DATA_SIZE 8 +#include "softmmu_header.h" +#undef ACCESS_TYPE +#undef MEMSUFFIX + +#define ACCESS_TYPE 1 +#define MEMSUFFIX MMU_MODE1_SUFFIX +#define DATA_SIZE 1 +#include "softmmu_header.h" + +#define DATA_SIZE 2 +#include "softmmu_header.h" + +#define DATA_SIZE 4 +#include "softmmu_header.h" + +#define DATA_SIZE 8 +#include "softmmu_header.h" +#undef ACCESS_TYPE +#undef MEMSUFFIX + +#if (NB_MMU_MODES >= 3) + +#define ACCESS_TYPE 2 +#define MEMSUFFIX MMU_MODE2_SUFFIX +#define DATA_SIZE 1 +#include "softmmu_header.h" + +#define DATA_SIZE 2 +#include "softmmu_header.h" + +#define DATA_SIZE 4 +#include "softmmu_header.h" + +#define DATA_SIZE 8 +#include "softmmu_header.h" +#undef ACCESS_TYPE +#undef MEMSUFFIX +#endif /* (NB_MMU_MODES >= 3) */ + +#if (NB_MMU_MODES >= 4) + +#define ACCESS_TYPE 3 +#define MEMSUFFIX MMU_MODE3_SUFFIX +#define DATA_SIZE 1 +#include "softmmu_header.h" + +#define DATA_SIZE 2 +#include "softmmu_header.h" + +#define DATA_SIZE 4 +#include "softmmu_header.h" + +#define DATA_SIZE 8 +#include "softmmu_header.h" +#undef ACCESS_TYPE +#undef MEMSUFFIX +#endif /* (NB_MMU_MODES >= 4) */ + +#if (NB_MMU_MODES >= 5) + +#define ACCESS_TYPE 4 +#define MEMSUFFIX MMU_MODE4_SUFFIX +#define DATA_SIZE 1 +#include "softmmu_header.h" + +#define DATA_SIZE 2 +#include "softmmu_header.h" + +#define DATA_SIZE 4 +#include "softmmu_header.h" + +#define DATA_SIZE 8 +#include "softmmu_header.h" +#undef ACCESS_TYPE +#undef MEMSUFFIX +#endif /* (NB_MMU_MODES >= 5) */ + +#if (NB_MMU_MODES > 5) +#error "NB_MMU_MODES > 5 is not supported for now" +#endif /* (NB_MMU_MODES > 5) */ + +/* these access are slower, they must be as rare as possible */ +#define ACCESS_TYPE (NB_MMU_MODES) +#define MEMSUFFIX _data +#define DATA_SIZE 1 +#include "softmmu_header.h" + +#define DATA_SIZE 2 +#include "softmmu_header.h" + +#define DATA_SIZE 4 +#include "softmmu_header.h" + +#define DATA_SIZE 8 +#include "softmmu_header.h" +#undef ACCESS_TYPE +#undef MEMSUFFIX + +#define ldub(p) ldub_data(p) +#define ldsb(p) ldsb_data(p) +#define lduw(p) lduw_data(p) +#define ldsw(p) ldsw_data(p) +#define ldl(p) ldl_data(p) +#define ldq(p) ldq_data(p) + +#define stb(p, v) stb_data(p, v) +#define stw(p, v) stw_data(p, v) +#define stl(p, v) stl_data(p, v) +#define stq(p, v) stq_data(p, v) diff --git a/qemu/qemu-git/softmmu_header.h b/qemu/qemu-git/softmmu_header.h new file mode 100644 index 0000000..6a36e01 --- /dev/null +++ b/qemu/qemu-git/softmmu_header.h @@ -0,0 +1,198 @@ +/* + * Software MMU support + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#if DATA_SIZE == 8 +#define SUFFIX q +#define USUFFIX q +#define DATA_TYPE uint64_t +#elif DATA_SIZE == 4 +#define SUFFIX l +#define USUFFIX l +#define DATA_TYPE uint32_t +#elif DATA_SIZE == 2 +#define SUFFIX w +#define USUFFIX uw +#define DATA_TYPE uint16_t +#define DATA_STYPE int16_t +#elif DATA_SIZE == 1 +#define SUFFIX b +#define USUFFIX ub +#define DATA_TYPE uint8_t +#define DATA_STYPE int8_t +#else +#error unsupported data size +#endif + +#if ACCESS_TYPE < (NB_MMU_MODES) + +#define CPU_MMU_INDEX ACCESS_TYPE +#define MMUSUFFIX _mmu + +#elif ACCESS_TYPE == (NB_MMU_MODES) + +#define CPU_MMU_INDEX (cpu_mmu_index(env)) +#define MMUSUFFIX _mmu + +#elif ACCESS_TYPE == (NB_MMU_MODES + 1) + +#define CPU_MMU_INDEX (cpu_mmu_index(env)) +#define MMUSUFFIX _cmmu + +#else +#error invalid ACCESS_TYPE +#endif + +#if DATA_SIZE == 8 +#define RES_TYPE uint64_t +#else +#define RES_TYPE int +#endif + +#if ACCESS_TYPE == (NB_MMU_MODES + 1) +#define ADDR_READ addr_code +#else +#define ADDR_READ addr_read +#endif + +/* generic load/store macros */ + +static inline RES_TYPE glue(glue(ld, USUFFIX), MEMSUFFIX)(target_ulong ptr) +{ + int page_index; + RES_TYPE res; + target_ulong addr; + unsigned long physaddr; + int mmu_idx; + + addr = ptr; + page_index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); + mmu_idx = CPU_MMU_INDEX; + if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ != + (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) { + res = glue(glue(__ld, SUFFIX), MMUSUFFIX)(addr, mmu_idx); + } else { + physaddr = addr + env->tlb_table[mmu_idx][page_index].addend; + res = glue(glue(ld, USUFFIX), _raw)((uint8_t *)physaddr); + } + return res; +} + +#if DATA_SIZE <= 2 +static inline int glue(glue(lds, SUFFIX), MEMSUFFIX)(target_ulong ptr) +{ + int res, page_index; + target_ulong addr; + unsigned long physaddr; + int mmu_idx; + + addr = ptr; + page_index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); + mmu_idx = CPU_MMU_INDEX; + if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ != + (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) { + res = (DATA_STYPE)glue(glue(__ld, SUFFIX), MMUSUFFIX)(addr, mmu_idx); + } else { + physaddr = addr + env->tlb_table[mmu_idx][page_index].addend; + res = glue(glue(lds, SUFFIX), _raw)((uint8_t *)physaddr); + } + return res; +} +#endif + +#if ACCESS_TYPE != (NB_MMU_MODES + 1) + +/* generic store macro */ + +static inline void glue(glue(st, SUFFIX), MEMSUFFIX)(target_ulong ptr, RES_TYPE v) +{ + int page_index; + target_ulong addr; + unsigned long physaddr; + int mmu_idx; + + addr = ptr; + page_index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); + mmu_idx = CPU_MMU_INDEX; + if (unlikely(env->tlb_table[mmu_idx][page_index].addr_write != + (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) { + glue(glue(__st, SUFFIX), MMUSUFFIX)(addr, v, mmu_idx); + } else { + physaddr = addr + env->tlb_table[mmu_idx][page_index].addend; + glue(glue(st, SUFFIX), _raw)((uint8_t *)physaddr, v); + } +} + +#endif /* ACCESS_TYPE != (NB_MMU_MODES + 1) */ + +#if ACCESS_TYPE != (NB_MMU_MODES + 1) + +#if DATA_SIZE == 8 +static inline float64 glue(ldfq, MEMSUFFIX)(target_ulong ptr) +{ + union { + float64 d; + uint64_t i; + } u; + u.i = glue(ldq, MEMSUFFIX)(ptr); + return u.d; +} + +static inline void glue(stfq, MEMSUFFIX)(target_ulong ptr, float64 v) +{ + union { + float64 d; + uint64_t i; + } u; + u.d = v; + glue(stq, MEMSUFFIX)(ptr, u.i); +} +#endif /* DATA_SIZE == 8 */ + +#if DATA_SIZE == 4 +static inline float32 glue(ldfl, MEMSUFFIX)(target_ulong ptr) +{ + union { + float32 f; + uint32_t i; + } u; + u.i = glue(ldl, MEMSUFFIX)(ptr); + return u.f; +} + +static inline void glue(stfl, MEMSUFFIX)(target_ulong ptr, float32 v) +{ + union { + float32 f; + uint32_t i; + } u; + u.f = v; + glue(stl, MEMSUFFIX)(ptr, u.i); +} +#endif /* DATA_SIZE == 4 */ + +#endif /* ACCESS_TYPE != (NB_MMU_MODES + 1) */ + +#undef RES_TYPE +#undef DATA_TYPE +#undef DATA_STYPE +#undef SUFFIX +#undef USUFFIX +#undef DATA_SIZE +#undef CPU_MMU_INDEX +#undef MMUSUFFIX +#undef ADDR_READ diff --git a/qemu/qemu-git/softmmu_template.h b/qemu/qemu-git/softmmu_template.h new file mode 100644 index 0000000..0e13153 --- /dev/null +++ b/qemu/qemu-git/softmmu_template.h @@ -0,0 +1,327 @@ +/* + * Software MMU support + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#define DATA_SIZE (1 << SHIFT) + +#if DATA_SIZE == 8 +#define SUFFIX q +#define USUFFIX q +#define DATA_TYPE uint64_t +#elif DATA_SIZE == 4 +#define SUFFIX l +#define USUFFIX l +#define DATA_TYPE uint32_t +#elif DATA_SIZE == 2 +#define SUFFIX w +#define USUFFIX uw +#define DATA_TYPE uint16_t +#elif DATA_SIZE == 1 +#define SUFFIX b +#define USUFFIX ub +#define DATA_TYPE uint8_t +#else +#error unsupported data size +#endif + +#ifdef SOFTMMU_CODE_ACCESS +#define READ_ACCESS_TYPE 2 +#define ADDR_READ addr_code +#else +#define READ_ACCESS_TYPE 0 +#define ADDR_READ addr_read +#endif + +static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(target_ulong addr, + int mmu_idx, + void *retaddr); +static inline DATA_TYPE glue(io_read, SUFFIX)(target_phys_addr_t physaddr, + target_ulong addr, + void *retaddr) +{ + DATA_TYPE res; + int index; + index = (physaddr >> IO_MEM_SHIFT) & (IO_MEM_NB_ENTRIES - 1); + physaddr = (physaddr & TARGET_PAGE_MASK) + addr; + env->mem_io_pc = (unsigned long)retaddr; + if (index > (IO_MEM_NOTDIRTY >> IO_MEM_SHIFT) + && !can_do_io(env)) { + cpu_io_recompile(env, retaddr); + } + + env->mem_io_vaddr = addr; +#if SHIFT <= 2 + res = io_mem_read[index][SHIFT](io_mem_opaque[index], physaddr); +#else +#ifdef TARGET_WORDS_BIGENDIAN + res = (uint64_t)io_mem_read[index][2](io_mem_opaque[index], physaddr) << 32; + res |= io_mem_read[index][2](io_mem_opaque[index], physaddr + 4); +#else + res = io_mem_read[index][2](io_mem_opaque[index], physaddr); + res |= (uint64_t)io_mem_read[index][2](io_mem_opaque[index], physaddr + 4) << 32; +#endif +#endif /* SHIFT > 2 */ + return res; +} + +/* handle all cases except unaligned access which span two pages */ +DATA_TYPE REGPARM glue(glue(__ld, SUFFIX), MMUSUFFIX)(target_ulong addr, + int mmu_idx) +{ + DATA_TYPE res; + int index; + target_ulong tlb_addr; + target_phys_addr_t addend; + void *retaddr; + + /* test if there is match for unaligned or IO access */ + /* XXX: could done more in memory macro in a non portable way */ + index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); + redo: + tlb_addr = env->tlb_table[mmu_idx][index].ADDR_READ; + if ((addr & TARGET_PAGE_MASK) == (tlb_addr & (TARGET_PAGE_MASK | TLB_INVALID_MASK))) { + if (tlb_addr & ~TARGET_PAGE_MASK) { + /* IO access */ + if ((addr & (DATA_SIZE - 1)) != 0) + goto do_unaligned_access; + retaddr = GETPC(); + addend = env->iotlb[mmu_idx][index]; + res = glue(io_read, SUFFIX)(addend, addr, retaddr); + } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { + /* slow unaligned access (it spans two pages or IO) */ + do_unaligned_access: + retaddr = GETPC(); +#ifdef ALIGNED_ONLY + do_unaligned_access(addr, READ_ACCESS_TYPE, mmu_idx, retaddr); +#endif + res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(addr, + mmu_idx, retaddr); + } else { + /* unaligned/aligned access in the same page */ +#ifdef ALIGNED_ONLY + if ((addr & (DATA_SIZE - 1)) != 0) { + retaddr = GETPC(); + do_unaligned_access(addr, READ_ACCESS_TYPE, mmu_idx, retaddr); + } +#endif + addend = env->tlb_table[mmu_idx][index].addend; + res = glue(glue(ld, USUFFIX), _raw)((uint8_t *)(long)(addr+addend)); + } + } else { + /* the page is not in the TLB : fill it */ + retaddr = GETPC(); +#ifdef ALIGNED_ONLY + if ((addr & (DATA_SIZE - 1)) != 0) + do_unaligned_access(addr, READ_ACCESS_TYPE, mmu_idx, retaddr); +#endif + tlb_fill(addr, READ_ACCESS_TYPE, mmu_idx, retaddr); + goto redo; + } + return res; +} + +/* handle all unaligned cases */ +static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(target_ulong addr, + int mmu_idx, + void *retaddr) +{ + DATA_TYPE res, res1, res2; + int index, shift; + target_phys_addr_t addend; + target_ulong tlb_addr, addr1, addr2; + + index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); + redo: + tlb_addr = env->tlb_table[mmu_idx][index].ADDR_READ; + if ((addr & TARGET_PAGE_MASK) == (tlb_addr & (TARGET_PAGE_MASK | TLB_INVALID_MASK))) { + if (tlb_addr & ~TARGET_PAGE_MASK) { + /* IO access */ + if ((addr & (DATA_SIZE - 1)) != 0) + goto do_unaligned_access; + retaddr = GETPC(); + addend = env->iotlb[mmu_idx][index]; + res = glue(io_read, SUFFIX)(addend, addr, retaddr); + } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { + do_unaligned_access: + /* slow unaligned access (it spans two pages) */ + addr1 = addr & ~(DATA_SIZE - 1); + addr2 = addr1 + DATA_SIZE; + res1 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(addr1, + mmu_idx, retaddr); + res2 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(addr2, + mmu_idx, retaddr); + shift = (addr & (DATA_SIZE - 1)) * 8; +#ifdef TARGET_WORDS_BIGENDIAN + res = (res1 << shift) | (res2 >> ((DATA_SIZE * 8) - shift)); +#else + res = (res1 >> shift) | (res2 << ((DATA_SIZE * 8) - shift)); +#endif + res = (DATA_TYPE)res; + } else { + /* unaligned/aligned access in the same page */ + addend = env->tlb_table[mmu_idx][index].addend; + res = glue(glue(ld, USUFFIX), _raw)((uint8_t *)(long)(addr+addend)); + } + } else { + /* the page is not in the TLB : fill it */ + tlb_fill(addr, READ_ACCESS_TYPE, mmu_idx, retaddr); + goto redo; + } + return res; +} + +#ifndef SOFTMMU_CODE_ACCESS + +static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(target_ulong addr, + DATA_TYPE val, + int mmu_idx, + void *retaddr); + +static inline void glue(io_write, SUFFIX)(target_phys_addr_t physaddr, + DATA_TYPE val, + target_ulong addr, + void *retaddr) +{ + int index; + index = (physaddr >> IO_MEM_SHIFT) & (IO_MEM_NB_ENTRIES - 1); + physaddr = (physaddr & TARGET_PAGE_MASK) + addr; + if (index > (IO_MEM_NOTDIRTY >> IO_MEM_SHIFT) + && !can_do_io(env)) { + cpu_io_recompile(env, retaddr); + } + + env->mem_io_vaddr = addr; + env->mem_io_pc = (unsigned long)retaddr; +#if SHIFT <= 2 + io_mem_write[index][SHIFT](io_mem_opaque[index], physaddr, val); +#else +#ifdef TARGET_WORDS_BIGENDIAN + io_mem_write[index][2](io_mem_opaque[index], physaddr, val >> 32); + io_mem_write[index][2](io_mem_opaque[index], physaddr + 4, val); +#else + io_mem_write[index][2](io_mem_opaque[index], physaddr, val); + io_mem_write[index][2](io_mem_opaque[index], physaddr + 4, val >> 32); +#endif +#endif /* SHIFT > 2 */ +} + +void REGPARM glue(glue(__st, SUFFIX), MMUSUFFIX)(target_ulong addr, + DATA_TYPE val, + int mmu_idx) +{ + target_phys_addr_t addend; + target_ulong tlb_addr; + void *retaddr; + int index; + + index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); + redo: + tlb_addr = env->tlb_table[mmu_idx][index].addr_write; + if ((addr & TARGET_PAGE_MASK) == (tlb_addr & (TARGET_PAGE_MASK | TLB_INVALID_MASK))) { + if (tlb_addr & ~TARGET_PAGE_MASK) { + /* IO access */ + if ((addr & (DATA_SIZE - 1)) != 0) + goto do_unaligned_access; + retaddr = GETPC(); + addend = env->iotlb[mmu_idx][index]; + glue(io_write, SUFFIX)(addend, val, addr, retaddr); + } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { + do_unaligned_access: + retaddr = GETPC(); +#ifdef ALIGNED_ONLY + do_unaligned_access(addr, 1, mmu_idx, retaddr); +#endif + glue(glue(slow_st, SUFFIX), MMUSUFFIX)(addr, val, + mmu_idx, retaddr); + } else { + /* aligned/unaligned access in the same page */ +#ifdef ALIGNED_ONLY + if ((addr & (DATA_SIZE - 1)) != 0) { + retaddr = GETPC(); + do_unaligned_access(addr, 1, mmu_idx, retaddr); + } +#endif + addend = env->tlb_table[mmu_idx][index].addend; + glue(glue(st, SUFFIX), _raw)((uint8_t *)(long)(addr+addend), val); + } + } else { + /* the page is not in the TLB : fill it */ + retaddr = GETPC(); +#ifdef ALIGNED_ONLY + if ((addr & (DATA_SIZE - 1)) != 0) + do_unaligned_access(addr, 1, mmu_idx, retaddr); +#endif + tlb_fill(addr, 1, mmu_idx, retaddr); + goto redo; + } +} + +/* handles all unaligned cases */ +static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(target_ulong addr, + DATA_TYPE val, + int mmu_idx, + void *retaddr) +{ + target_phys_addr_t addend; + target_ulong tlb_addr; + int index, i; + + index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); + redo: + tlb_addr = env->tlb_table[mmu_idx][index].addr_write; + if ((addr & TARGET_PAGE_MASK) == (tlb_addr & (TARGET_PAGE_MASK | TLB_INVALID_MASK))) { + if (tlb_addr & ~TARGET_PAGE_MASK) { + /* IO access */ + if ((addr & (DATA_SIZE - 1)) != 0) + goto do_unaligned_access; + addend = env->iotlb[mmu_idx][index]; + glue(io_write, SUFFIX)(addend, val, addr, retaddr); + } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { + do_unaligned_access: + /* XXX: not efficient, but simple */ + /* Note: relies on the fact that tlb_fill() does not remove the + * previous page from the TLB cache. */ + for(i = DATA_SIZE - 1; i >= 0; i--) { +#ifdef TARGET_WORDS_BIGENDIAN + glue(slow_stb, MMUSUFFIX)(addr + i, val >> (((DATA_SIZE - 1) * 8) - (i * 8)), + mmu_idx, retaddr); +#else + glue(slow_stb, MMUSUFFIX)(addr + i, val >> (i * 8), + mmu_idx, retaddr); +#endif + } + } else { + /* aligned/unaligned access in the same page */ + addend = env->tlb_table[mmu_idx][index].addend; + glue(glue(st, SUFFIX), _raw)((uint8_t *)(long)(addr+addend), val); + } + } else { + /* the page is not in the TLB : fill it */ + tlb_fill(addr, 1, mmu_idx, retaddr); + goto redo; + } +} + +#endif /* !defined(SOFTMMU_CODE_ACCESS) */ + +#undef READ_ACCESS_TYPE +#undef SHIFT +#undef DATA_TYPE +#undef SUFFIX +#undef USUFFIX +#undef DATA_SIZE +#undef ADDR_READ diff --git a/qemu/qemu-git/sparc-dis.c b/qemu/qemu-git/sparc-dis.c new file mode 100644 index 0000000..83a12ae --- /dev/null +++ b/qemu/qemu-git/sparc-dis.c @@ -0,0 +1,3253 @@ +/* + * These files from binutils are concatenated: + * include/opcode/sparc.h, opcodes/sparc-opc.c, opcodes/sparc-dis.c + */ + +/* include/opcode/sparc.h */ + +/* Definitions for opcode table for the sparc. + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2002, + 2003, 2005 Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and + the GNU Binutils. + + GAS/GDB is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GAS/GDB is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GAS or GDB; see the file COPYING. If not, + see . */ + +#include +#include "dis-asm.h" + +/* The SPARC opcode table (and other related data) is defined in + the opcodes library in sparc-opc.c. If you change anything here, make + sure you fix up that file, and vice versa. */ + + /* FIXME-someday: perhaps the ,a's and such should be embedded in the + instruction's name rather than the args. This would make gas faster, pinsn + slower, but would mess up some macros a bit. xoxorich. */ + +/* List of instruction sets variations. + These values are such that each element is either a superset of a + preceding each one or they conflict in which case SPARC_OPCODE_CONFLICT_P + returns non-zero. + The values are indices into `sparc_opcode_archs' defined in sparc-opc.c. + Don't change this without updating sparc-opc.c. */ + +enum sparc_opcode_arch_val +{ + SPARC_OPCODE_ARCH_V6 = 0, + SPARC_OPCODE_ARCH_V7, + SPARC_OPCODE_ARCH_V8, + SPARC_OPCODE_ARCH_SPARCLET, + SPARC_OPCODE_ARCH_SPARCLITE, + /* V9 variants must appear last. */ + SPARC_OPCODE_ARCH_V9, + SPARC_OPCODE_ARCH_V9A, /* V9 with ultrasparc additions. */ + SPARC_OPCODE_ARCH_V9B, /* V9 with ultrasparc and cheetah additions. */ + SPARC_OPCODE_ARCH_BAD /* Error return from sparc_opcode_lookup_arch. */ +}; + +/* The highest architecture in the table. */ +#define SPARC_OPCODE_ARCH_MAX (SPARC_OPCODE_ARCH_BAD - 1) + +/* Given an enum sparc_opcode_arch_val, return the bitmask to use in + insn encoding/decoding. */ +#define SPARC_OPCODE_ARCH_MASK(arch) (1 << (arch)) + +/* Given a valid sparc_opcode_arch_val, return non-zero if it's v9. */ +#define SPARC_OPCODE_ARCH_V9_P(arch) ((arch) >= SPARC_OPCODE_ARCH_V9) + +/* Table of cpu variants. */ + +typedef struct sparc_opcode_arch +{ + const char *name; + /* Mask of sparc_opcode_arch_val's supported. + EG: For v7 this would be + (SPARC_OPCODE_ARCH_MASK (..._V6) | SPARC_OPCODE_ARCH_MASK (..._V7)). + These are short's because sparc_opcode.architecture is. */ + short supported; +} sparc_opcode_arch; + +static const struct sparc_opcode_arch sparc_opcode_archs[]; + +/* Return the bitmask of supported architectures for ARCH. */ +#define SPARC_OPCODE_SUPPORTED(ARCH) (sparc_opcode_archs[ARCH].supported) + +/* Non-zero if ARCH1 conflicts with ARCH2. + IE: ARCH1 as a supported bit set that ARCH2 doesn't, and vice versa. */ +#define SPARC_OPCODE_CONFLICT_P(ARCH1, ARCH2) \ + (((SPARC_OPCODE_SUPPORTED (ARCH1) & SPARC_OPCODE_SUPPORTED (ARCH2)) \ + != SPARC_OPCODE_SUPPORTED (ARCH1)) \ + && ((SPARC_OPCODE_SUPPORTED (ARCH1) & SPARC_OPCODE_SUPPORTED (ARCH2)) \ + != SPARC_OPCODE_SUPPORTED (ARCH2))) + +/* Structure of an opcode table entry. */ + +typedef struct sparc_opcode +{ + const char *name; + unsigned long match; /* Bits that must be set. */ + unsigned long lose; /* Bits that must not be set. */ + const char *args; + /* This was called "delayed" in versions before the flags. */ + char flags; + short architecture; /* Bitmask of sparc_opcode_arch_val's. */ +} sparc_opcode; + +#define F_DELAYED 1 /* Delayed branch. */ +#define F_ALIAS 2 /* Alias for a "real" instruction. */ +#define F_UNBR 4 /* Unconditional branch. */ +#define F_CONDBR 8 /* Conditional branch. */ +#define F_JSR 16 /* Subroutine call. */ +#define F_FLOAT 32 /* Floating point instruction (not a branch). */ +#define F_FBR 64 /* Floating point branch. */ +/* FIXME: Add F_ANACHRONISTIC flag for v9. */ + +/* All sparc opcodes are 32 bits, except for the `set' instruction (really a + macro), which is 64 bits. It is handled as a special case. + + The match component is a mask saying which bits must match a particular + opcode in order for an instruction to be an instance of that opcode. + + The args component is a string containing one character for each operand of the + instruction. + + Kinds of operands: + # Number used by optimizer. It is ignored. + 1 rs1 register. + 2 rs2 register. + d rd register. + e frs1 floating point register. + v frs1 floating point register (double/even). + V frs1 floating point register (quad/multiple of 4). + f frs2 floating point register. + B frs2 floating point register (double/even). + R frs2 floating point register (quad/multiple of 4). + g frsd floating point register. + H frsd floating point register (double/even). + J frsd floating point register (quad/multiple of 4). + b crs1 coprocessor register + c crs2 coprocessor register + D crsd coprocessor register + m alternate space register (asr) in rd + M alternate space register (asr) in rs1 + h 22 high bits. + X 5 bit unsigned immediate + Y 6 bit unsigned immediate + 3 SIAM mode (3 bits). (v9b) + K MEMBAR mask (7 bits). (v9) + j 10 bit Immediate. (v9) + I 11 bit Immediate. (v9) + i 13 bit Immediate. + n 22 bit immediate. + k 2+14 bit PC relative immediate. (v9) + G 19 bit PC relative immediate. (v9) + l 22 bit PC relative immediate. + L 30 bit PC relative immediate. + a Annul. The annul bit is set. + A Alternate address space. Stored as 8 bits. + C Coprocessor state register. + F floating point state register. + p Processor state register. + N Branch predict clear ",pn" (v9) + T Branch predict set ",pt" (v9) + z %icc. (v9) + Z %xcc. (v9) + q Floating point queue. + r Single register that is both rs1 and rd. + O Single register that is both rs2 and rd. + Q Coprocessor queue. + S Special case. + t Trap base register. + w Window invalid mask register. + y Y register. + u sparclet coprocessor registers in rd position + U sparclet coprocessor registers in rs1 position + E %ccr. (v9) + s %fprs. (v9) + P %pc. (v9) + W %tick. (v9) + o %asi. (v9) + 6 %fcc0. (v9) + 7 %fcc1. (v9) + 8 %fcc2. (v9) + 9 %fcc3. (v9) + ! Privileged Register in rd (v9) + ? Privileged Register in rs1 (v9) + * Prefetch function constant. (v9) + x OPF field (v9 impdep). + 0 32/64 bit immediate for set or setx (v9) insns + _ Ancillary state register in rd (v9a) + / Ancillary state register in rs1 (v9a) + + The following chars are unused: (note: ,[] are used as punctuation) + [45]. */ + +#define OP2(x) (((x) & 0x7) << 22) /* Op2 field of format2 insns. */ +#define OP3(x) (((x) & 0x3f) << 19) /* Op3 field of format3 insns. */ +#define OP(x) ((unsigned) ((x) & 0x3) << 30) /* Op field of all insns. */ +#define OPF(x) (((x) & 0x1ff) << 5) /* Opf field of float insns. */ +#define OPF_LOW5(x) OPF ((x) & 0x1f) /* V9. */ +#define F3F(x, y, z) (OP (x) | OP3 (y) | OPF (z)) /* Format3 float insns. */ +#define F3I(x) (((x) & 0x1) << 13) /* Immediate field of format 3 insns. */ +#define F2(x, y) (OP (x) | OP2(y)) /* Format 2 insns. */ +#define F3(x, y, z) (OP (x) | OP3(y) | F3I(z)) /* Format3 insns. */ +#define F1(x) (OP (x)) +#define DISP30(x) ((x) & 0x3fffffff) +#define ASI(x) (((x) & 0xff) << 5) /* Asi field of format3 insns. */ +#define RS2(x) ((x) & 0x1f) /* Rs2 field. */ +#define SIMM13(x) ((x) & 0x1fff) /* Simm13 field. */ +#define RD(x) (((x) & 0x1f) << 25) /* Destination register field. */ +#define RS1(x) (((x) & 0x1f) << 14) /* Rs1 field. */ +#define ASI_RS2(x) (SIMM13 (x)) +#define MEMBAR(x) ((x) & 0x7f) +#define SLCPOP(x) (((x) & 0x7f) << 6) /* Sparclet cpop. */ + +#define ANNUL (1 << 29) +#define BPRED (1 << 19) /* V9. */ +#define IMMED F3I (1) +#define RD_G0 RD (~0) +#define RS1_G0 RS1 (~0) +#define RS2_G0 RS2 (~0) + +static const struct sparc_opcode sparc_opcodes[]; + +static const char *sparc_decode_asi_v8 (int); +static const char *sparc_decode_asi_v9 (int); +static const char *sparc_decode_membar (int); +static const char *sparc_decode_prefetch (int); +static const char *sparc_decode_sparclet_cpreg (int); + +/* Local Variables: + fill-column: 131 + comment-column: 0 + End: */ + +/* opcodes/sparc-opc.c */ + +/* Table of opcodes for the sparc. + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2002, 2004, 2005 + Free Software Foundation, Inc. + + This file is part of the BFD library. + + BFD is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2, or (at your option) any later + version. + + BFD is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with this software; see the file COPYING. If not, + see . */ + +/* FIXME-someday: perhaps the ,a's and such should be embedded in the + instruction's name rather than the args. This would make gas faster, pinsn + slower, but would mess up some macros a bit. xoxorich. */ + +/* Some defines to make life easy. */ +#define MASK_V6 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V6) +#define MASK_V7 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V7) +#define MASK_V8 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8) +#define MASK_SPARCLET SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLET) +#define MASK_SPARCLITE SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) +#define MASK_V9 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9) +#define MASK_V9A SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A) +#define MASK_V9B SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B) + +/* Bit masks of architectures supporting the insn. */ + +#define v6 (MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLET \ + | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) +/* v6 insns not supported on the sparclet. */ +#define v6notlet (MASK_V6 | MASK_V7 | MASK_V8 \ + | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) +#define v7 (MASK_V7 | MASK_V8 | MASK_SPARCLET \ + | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B) +/* Although not all insns are implemented in hardware, sparclite is defined + to be a superset of v8. Unimplemented insns trap and are then theoretically + implemented in software. + It's not clear that the same is true for sparclet, although the docs + suggest it is. Rather than complicating things, the sparclet assembler + recognizes all v8 insns. */ +#define v8 (MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE \ + | MASK_V9 | MASK_V9A | MASK_V9B) +#define sparclet (MASK_SPARCLET) +#define sparclite (MASK_SPARCLITE) +#define v9 (MASK_V9 | MASK_V9A | MASK_V9B) +#define v9a (MASK_V9A | MASK_V9B) +#define v9b (MASK_V9B) +/* v6 insns not supported by v9. */ +#define v6notv9 (MASK_V6 | MASK_V7 | MASK_V8 \ + | MASK_SPARCLET | MASK_SPARCLITE) +/* v9a instructions which would appear to be aliases to v9's impdep's + otherwise. */ +#define v9notv9a (MASK_V9) + +/* Table of opcode architectures. + The order is defined in opcode/sparc.h. */ + +static const struct sparc_opcode_arch sparc_opcode_archs[] = +{ + { "v6", MASK_V6 }, + { "v7", MASK_V6 | MASK_V7 }, + { "v8", MASK_V6 | MASK_V7 | MASK_V8 }, + { "sparclet", MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLET }, + { "sparclite", MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLITE }, + /* ??? Don't some v8 privileged insns conflict with v9? */ + { "v9", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 }, + /* v9 with ultrasparc additions */ + { "v9a", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 | MASK_V9A }, + /* v9 with cheetah additions */ + { "v9b", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 | MASK_V9A | MASK_V9B }, + { NULL, 0 } +}; + +/* Branch condition field. */ +#define COND(x) (((x) & 0xf) << 25) + +/* v9: Move (MOVcc and FMOVcc) condition field. */ +#define MCOND(x,i_or_f) ((((i_or_f) & 1) << 18) | (((x) >> 11) & (0xf << 14))) /* v9 */ + +/* v9: Move register (MOVRcc and FMOVRcc) condition field. */ +#define RCOND(x) (((x) & 0x7) << 10) /* v9 */ + +#define CONDA (COND (0x8)) +#define CONDCC (COND (0xd)) +#define CONDCS (COND (0x5)) +#define CONDE (COND (0x1)) +#define CONDG (COND (0xa)) +#define CONDGE (COND (0xb)) +#define CONDGU (COND (0xc)) +#define CONDL (COND (0x3)) +#define CONDLE (COND (0x2)) +#define CONDLEU (COND (0x4)) +#define CONDN (COND (0x0)) +#define CONDNE (COND (0x9)) +#define CONDNEG (COND (0x6)) +#define CONDPOS (COND (0xe)) +#define CONDVC (COND (0xf)) +#define CONDVS (COND (0x7)) + +#define CONDNZ CONDNE +#define CONDZ CONDE +#define CONDGEU CONDCC +#define CONDLU CONDCS + +#define FCONDA (COND (0x8)) +#define FCONDE (COND (0x9)) +#define FCONDG (COND (0x6)) +#define FCONDGE (COND (0xb)) +#define FCONDL (COND (0x4)) +#define FCONDLE (COND (0xd)) +#define FCONDLG (COND (0x2)) +#define FCONDN (COND (0x0)) +#define FCONDNE (COND (0x1)) +#define FCONDO (COND (0xf)) +#define FCONDU (COND (0x7)) +#define FCONDUE (COND (0xa)) +#define FCONDUG (COND (0x5)) +#define FCONDUGE (COND (0xc)) +#define FCONDUL (COND (0x3)) +#define FCONDULE (COND (0xe)) + +#define FCONDNZ FCONDNE +#define FCONDZ FCONDE + +#define ICC (0) /* v9 */ +#define XCC (1 << 12) /* v9 */ +#define FCC(x) (((x) & 0x3) << 11) /* v9 */ +#define FBFCC(x) (((x) & 0x3) << 20) /* v9 */ + +/* The order of the opcodes in the table is significant: + + * The assembler requires that all instances of the same mnemonic must + be consecutive. If they aren't, the assembler will bomb at runtime. + + * The disassembler should not care about the order of the opcodes. */ + +/* Entries for commutative arithmetic operations. */ +/* ??? More entries can make use of this. */ +#define COMMUTEOP(opcode, op3, arch_mask) \ +{ opcode, F3(2, op3, 0), F3(~2, ~op3, ~0)|ASI(~0), "1,2,d", 0, arch_mask }, \ +{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1), "1,i,d", 0, arch_mask }, \ +{ opcode, F3(2, op3, 1), F3(~2, ~op3, ~1), "i,1,d", 0, arch_mask } + +static const struct sparc_opcode sparc_opcodes[] = { + +{ "ld", F3(3, 0x00, 0), F3(~3, ~0x00, ~0), "[1+2],d", 0, v6 }, +{ "ld", F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0, "[1],d", 0, v6 }, /* ld [rs1+%g0],d */ +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[1+i],d", 0, v6 }, +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[i+1],d", 0, v6 }, +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0, "[i],d", 0, v6 }, +{ "ld", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ld [rs1+0],d */ +{ "ld", F3(3, 0x20, 0), F3(~3, ~0x20, ~0), "[1+2],g", 0, v6 }, +{ "ld", F3(3, 0x20, 0), F3(~3, ~0x20, ~0)|RS2_G0, "[1],g", 0, v6 }, /* ld [rs1+%g0],d */ +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1), "[1+i],g", 0, v6 }, +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1), "[i+1],g", 0, v6 }, +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|RS1_G0, "[i],g", 0, v6 }, +{ "ld", F3(3, 0x20, 1), F3(~3, ~0x20, ~1)|SIMM13(~0), "[1],g", 0, v6 }, /* ld [rs1+0],d */ + +{ "ld", F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RD(~0), "[1+2],F", 0, v6 }, +{ "ld", F3(3, 0x21, 0), F3(~3, ~0x21, ~0)|RS2_G0|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+%g0],d */ +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0), "[1+i],F", 0, v6 }, +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RD(~0), "[i+1],F", 0, v6 }, +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~0),"[i],F", 0, v6 }, +{ "ld", F3(3, 0x21, 1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~0),"[1],F", 0, v6 }, /* ld [rs1+0],d */ + +{ "ld", F3(3, 0x30, 0), F3(~3, ~0x30, ~0), "[1+2],D", 0, v6notv9 }, +{ "ld", F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0, "[1],D", 0, v6notv9 }, /* ld [rs1+%g0],d */ +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[1+i],D", 0, v6notv9 }, +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[i+1],D", 0, v6notv9 }, +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0, "[i],D", 0, v6notv9 }, +{ "ld", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0), "[1],D", 0, v6notv9 }, /* ld [rs1+0],d */ +{ "ld", F3(3, 0x31, 0), F3(~3, ~0x31, ~0), "[1+2],C", 0, v6notv9 }, +{ "ld", F3(3, 0x31, 0), F3(~3, ~0x31, ~0)|RS2_G0, "[1],C", 0, v6notv9 }, /* ld [rs1+%g0],d */ +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1), "[1+i],C", 0, v6notv9 }, +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1), "[i+1],C", 0, v6notv9 }, +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|RS1_G0, "[i],C", 0, v6notv9 }, +{ "ld", F3(3, 0x31, 1), F3(~3, ~0x31, ~1)|SIMM13(~0), "[1],C", 0, v6notv9 }, /* ld [rs1+0],d */ + +/* The v9 LDUW is the same as the old 'ld' opcode, it is not the same as the + 'ld' pseudo-op in v9. */ +{ "lduw", F3(3, 0x00, 0), F3(~3, ~0x00, ~0), "[1+2],d", F_ALIAS, v9 }, +{ "lduw", F3(3, 0x00, 0), F3(~3, ~0x00, ~0)|RS2_G0, "[1],d", F_ALIAS, v9 }, /* ld [rs1+%g0],d */ +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[1+i],d", F_ALIAS, v9 }, +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1), "[i+1],d", F_ALIAS, v9 }, +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|RS1_G0, "[i],d", F_ALIAS, v9 }, +{ "lduw", F3(3, 0x00, 1), F3(~3, ~0x00, ~1)|SIMM13(~0), "[1],d", F_ALIAS, v9 }, /* ld [rs1+0],d */ + +{ "ldd", F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI(~0), "[1+2],d", 0, v6 }, +{ "ldd", F3(3, 0x03, 0), F3(~3, ~0x03, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldd [rs1+%g0],d */ +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1), "[1+i],d", 0, v6 }, +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1), "[i+1],d", 0, v6 }, +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|RS1_G0, "[i],d", 0, v6 }, +{ "ldd", F3(3, 0x03, 1), F3(~3, ~0x03, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldd [rs1+0],d */ +{ "ldd", F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI(~0), "[1+2],H", 0, v6 }, +{ "ldd", F3(3, 0x23, 0), F3(~3, ~0x23, ~0)|ASI_RS2(~0), "[1],H", 0, v6 }, /* ldd [rs1+%g0],d */ +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1), "[1+i],H", 0, v6 }, +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1), "[i+1],H", 0, v6 }, +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|RS1_G0, "[i],H", 0, v6 }, +{ "ldd", F3(3, 0x23, 1), F3(~3, ~0x23, ~1)|SIMM13(~0), "[1],H", 0, v6 }, /* ldd [rs1+0],d */ + +{ "ldd", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI(~0), "[1+2],D", 0, v6notv9 }, +{ "ldd", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|ASI_RS2(~0), "[1],D", 0, v6notv9 }, /* ldd [rs1+%g0],d */ +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[1+i],D", 0, v6notv9 }, +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[i+1],D", 0, v6notv9 }, +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0, "[i],D", 0, v6notv9 }, +{ "ldd", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0), "[1],D", 0, v6notv9 }, /* ldd [rs1+0],d */ + +{ "ldq", F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI(~0), "[1+2],J", 0, v9 }, +{ "ldq", F3(3, 0x22, 0), F3(~3, ~0x22, ~0)|ASI_RS2(~0), "[1],J", 0, v9 }, /* ldd [rs1+%g0],d */ +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1), "[1+i],J", 0, v9 }, +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1), "[i+1],J", 0, v9 }, +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|RS1_G0, "[i],J", 0, v9 }, +{ "ldq", F3(3, 0x22, 1), F3(~3, ~0x22, ~1)|SIMM13(~0), "[1],J", 0, v9 }, /* ldd [rs1+0],d */ + +{ "ldsb", F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI(~0), "[1+2],d", 0, v6 }, +{ "ldsb", F3(3, 0x09, 0), F3(~3, ~0x09, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldsb [rs1+%g0],d */ +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1), "[1+i],d", 0, v6 }, +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1), "[i+1],d", 0, v6 }, +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|RS1_G0, "[i],d", 0, v6 }, +{ "ldsb", F3(3, 0x09, 1), F3(~3, ~0x09, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldsb [rs1+0],d */ + +{ "ldsh", F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldsh [rs1+%g0],d */ +{ "ldsh", F3(3, 0x0a, 0), F3(~3, ~0x0a, ~0)|ASI(~0), "[1+2],d", 0, v6 }, +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1), "[1+i],d", 0, v6 }, +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1), "[i+1],d", 0, v6 }, +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|RS1_G0, "[i],d", 0, v6 }, +{ "ldsh", F3(3, 0x0a, 1), F3(~3, ~0x0a, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldsh [rs1+0],d */ + +{ "ldstub", F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI(~0), "[1+2],d", 0, v6 }, +{ "ldstub", F3(3, 0x0d, 0), F3(~3, ~0x0d, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldstub [rs1+%g0],d */ +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1), "[1+i],d", 0, v6 }, +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1), "[i+1],d", 0, v6 }, +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|RS1_G0, "[i],d", 0, v6 }, +{ "ldstub", F3(3, 0x0d, 1), F3(~3, ~0x0d, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldstub [rs1+0],d */ + +{ "ldsw", F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI(~0), "[1+2],d", 0, v9 }, +{ "ldsw", F3(3, 0x08, 0), F3(~3, ~0x08, ~0)|ASI_RS2(~0), "[1],d", 0, v9 }, /* ldsw [rs1+%g0],d */ +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1), "[1+i],d", 0, v9 }, +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1), "[i+1],d", 0, v9 }, +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|RS1_G0, "[i],d", 0, v9 }, +{ "ldsw", F3(3, 0x08, 1), F3(~3, ~0x08, ~1)|SIMM13(~0), "[1],d", 0, v9 }, /* ldsw [rs1+0],d */ + +{ "ldub", F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI(~0), "[1+2],d", 0, v6 }, +{ "ldub", F3(3, 0x01, 0), F3(~3, ~0x01, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* ldub [rs1+%g0],d */ +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1), "[1+i],d", 0, v6 }, +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1), "[i+1],d", 0, v6 }, +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|RS1_G0, "[i],d", 0, v6 }, +{ "ldub", F3(3, 0x01, 1), F3(~3, ~0x01, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* ldub [rs1+0],d */ + +{ "lduh", F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI(~0), "[1+2],d", 0, v6 }, +{ "lduh", F3(3, 0x02, 0), F3(~3, ~0x02, ~0)|ASI_RS2(~0), "[1],d", 0, v6 }, /* lduh [rs1+%g0],d */ +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1), "[1+i],d", 0, v6 }, +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1), "[i+1],d", 0, v6 }, +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1)|RS1_G0, "[i],d", 0, v6 }, +{ "lduh", F3(3, 0x02, 1), F3(~3, ~0x02, ~1)|SIMM13(~0), "[1],d", 0, v6 }, /* lduh [rs1+0],d */ + +{ "ldx", F3(3, 0x0b, 0), F3(~3, ~0x0b, ~0)|ASI(~0), "[1+2],d", 0, v9 }, +{ "ldx", F3(3, 0x0b, 0), F3(~3, ~0x0b, ~0)|ASI_RS2(~0), "[1],d", 0, v9 }, /* ldx [rs1+%g0],d */ +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1), "[1+i],d", 0, v9 }, +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1), "[i+1],d", 0, v9 }, +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|RS1_G0, "[i],d", 0, v9 }, +{ "ldx", F3(3, 0x0b, 1), F3(~3, ~0x0b, ~1)|SIMM13(~0), "[1],d", 0, v9 }, /* ldx [rs1+0],d */ + +{ "ldx", F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RD(~1), "[1+2],F", 0, v9 }, +{ "ldx", F3(3, 0x21, 0)|RD(1), F3(~3, ~0x21, ~0)|RS2_G0|RD(~1), "[1],F", 0, v9 }, /* ld [rs1+%g0],d */ +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[1+i],F", 0, v9 }, +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RD(~1), "[i+1],F", 0, v9 }, +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|RS1_G0|RD(~1), "[i],F", 0, v9 }, +{ "ldx", F3(3, 0x21, 1)|RD(1), F3(~3, ~0x21, ~1)|SIMM13(~0)|RD(~1),"[1],F", 0, v9 }, /* ld [rs1+0],d */ + +{ "lda", F3(3, 0x10, 0), F3(~3, ~0x10, ~0), "[1+2]A,d", 0, v6 }, +{ "lda", F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lda [rs1+%g0],d */ +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[1+i]o,d", 0, v9 }, +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[i+1]o,d", 0, v9 }, +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "lda", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ +{ "lda", F3(3, 0x30, 0), F3(~3, ~0x30, ~0), "[1+2]A,g", 0, v9 }, +{ "lda", F3(3, 0x30, 0), F3(~3, ~0x30, ~0)|RS2_G0, "[1]A,g", 0, v9 }, /* lda [rs1+%g0],d */ +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[1+i]o,g", 0, v9 }, +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1), "[i+1]o,g", 0, v9 }, +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|RS1_G0, "[i]o,g", 0, v9 }, +{ "lda", F3(3, 0x30, 1), F3(~3, ~0x30, ~1)|SIMM13(~0), "[1]o,g", 0, v9 }, /* ld [rs1+0],d */ + +{ "ldda", F3(3, 0x13, 0), F3(~3, ~0x13, ~0), "[1+2]A,d", 0, v6 }, +{ "ldda", F3(3, 0x13, 0), F3(~3, ~0x13, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldda [rs1+%g0],d */ +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1), "[1+i]o,d", 0, v9 }, +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1), "[i+1]o,d", 0, v9 }, +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "ldda", F3(3, 0x13, 1), F3(~3, ~0x13, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "ldda", F3(3, 0x33, 0), F3(~3, ~0x33, ~0), "[1+2]A,H", 0, v9 }, +{ "ldda", F3(3, 0x33, 0), F3(~3, ~0x33, ~0)|RS2_G0, "[1]A,H", 0, v9 }, /* ldda [rs1+%g0],d */ +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[1+i]o,H", 0, v9 }, +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1), "[i+1]o,H", 0, v9 }, +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|RS1_G0, "[i]o,H", 0, v9 }, +{ "ldda", F3(3, 0x33, 1), F3(~3, ~0x33, ~1)|SIMM13(~0), "[1]o,H", 0, v9 }, /* ld [rs1+0],d */ + +{ "ldqa", F3(3, 0x32, 0), F3(~3, ~0x32, ~0), "[1+2]A,J", 0, v9 }, +{ "ldqa", F3(3, 0x32, 0), F3(~3, ~0x32, ~0)|RS2_G0, "[1]A,J", 0, v9 }, /* ldd [rs1+%g0],d */ +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1), "[1+i]o,J", 0, v9 }, +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1), "[i+1]o,J", 0, v9 }, +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|RS1_G0, "[i]o,J", 0, v9 }, +{ "ldqa", F3(3, 0x32, 1), F3(~3, ~0x32, ~1)|SIMM13(~0), "[1]o,J", 0, v9 }, /* ldd [rs1+0],d */ + +{ "ldsba", F3(3, 0x19, 0), F3(~3, ~0x19, ~0), "[1+2]A,d", 0, v6 }, +{ "ldsba", F3(3, 0x19, 0), F3(~3, ~0x19, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldsba [rs1+%g0],d */ +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1), "[1+i]o,d", 0, v9 }, +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1), "[i+1]o,d", 0, v9 }, +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "ldsba", F3(3, 0x19, 1), F3(~3, ~0x19, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "ldsha", F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0), "[1+2]A,d", 0, v6 }, +{ "ldsha", F3(3, 0x1a, 0), F3(~3, ~0x1a, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldsha [rs1+%g0],d */ +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1), "[1+i]o,d", 0, v9 }, +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1), "[i+1]o,d", 0, v9 }, +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "ldsha", F3(3, 0x1a, 1), F3(~3, ~0x1a, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "ldstuba", F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0), "[1+2]A,d", 0, v6 }, +{ "ldstuba", F3(3, 0x1d, 0), F3(~3, ~0x1d, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* ldstuba [rs1+%g0],d */ +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1), "[1+i]o,d", 0, v9 }, +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1), "[i+1]o,d", 0, v9 }, +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "ldstuba", F3(3, 0x1d, 1), F3(~3, ~0x1d, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "ldswa", F3(3, 0x18, 0), F3(~3, ~0x18, ~0), "[1+2]A,d", 0, v9 }, +{ "ldswa", F3(3, 0x18, 0), F3(~3, ~0x18, ~0)|RS2_G0, "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */ +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1), "[1+i]o,d", 0, v9 }, +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1), "[i+1]o,d", 0, v9 }, +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "ldswa", F3(3, 0x18, 1), F3(~3, ~0x18, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "lduba", F3(3, 0x11, 0), F3(~3, ~0x11, ~0), "[1+2]A,d", 0, v6 }, +{ "lduba", F3(3, 0x11, 0), F3(~3, ~0x11, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lduba [rs1+%g0],d */ +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1), "[1+i]o,d", 0, v9 }, +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1), "[i+1]o,d", 0, v9 }, +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "lduba", F3(3, 0x11, 1), F3(~3, ~0x11, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "lduha", F3(3, 0x12, 0), F3(~3, ~0x12, ~0), "[1+2]A,d", 0, v6 }, +{ "lduha", F3(3, 0x12, 0), F3(~3, ~0x12, ~0)|RS2_G0, "[1]A,d", 0, v6 }, /* lduha [rs1+%g0],d */ +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1), "[1+i]o,d", 0, v9 }, +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1), "[i+1]o,d", 0, v9 }, +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "lduha", F3(3, 0x12, 1), F3(~3, ~0x12, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "lduwa", F3(3, 0x10, 0), F3(~3, ~0x10, ~0), "[1+2]A,d", F_ALIAS, v9 }, /* lduwa === lda */ +{ "lduwa", F3(3, 0x10, 0), F3(~3, ~0x10, ~0)|RS2_G0, "[1]A,d", F_ALIAS, v9 }, /* lda [rs1+%g0],d */ +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[1+i]o,d", F_ALIAS, v9 }, +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1), "[i+1]o,d", F_ALIAS, v9 }, +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|RS1_G0, "[i]o,d", F_ALIAS, v9 }, +{ "lduwa", F3(3, 0x10, 1), F3(~3, ~0x10, ~1)|SIMM13(~0), "[1]o,d", F_ALIAS, v9 }, /* ld [rs1+0],d */ + +{ "ldxa", F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0), "[1+2]A,d", 0, v9 }, +{ "ldxa", F3(3, 0x1b, 0), F3(~3, ~0x1b, ~0)|RS2_G0, "[1]A,d", 0, v9 }, /* lda [rs1+%g0],d */ +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1), "[1+i]o,d", 0, v9 }, +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1), "[i+1]o,d", 0, v9 }, +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "ldxa", F3(3, 0x1b, 1), F3(~3, ~0x1b, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* ld [rs1+0],d */ + +{ "st", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, +{ "st", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* st d,[rs1+%g0] */ +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", 0, v6 }, +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", 0, v6 }, +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", 0, v6 }, +{ "st", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* st d,[rs1+0] */ +{ "st", F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI(~0), "g,[1+2]", 0, v6 }, +{ "st", F3(3, 0x24, 0), F3(~3, ~0x24, ~0)|ASI_RS2(~0), "g,[1]", 0, v6 }, /* st d[rs1+%g0] */ +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1), "g,[1+i]", 0, v6 }, +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1), "g,[i+1]", 0, v6 }, +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|RS1_G0, "g,[i]", 0, v6 }, +{ "st", F3(3, 0x24, 1), F3(~3, ~0x24, ~1)|SIMM13(~0), "g,[1]", 0, v6 }, /* st d,[rs1+0] */ + +{ "st", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI(~0), "D,[1+2]", 0, v6notv9 }, +{ "st", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|ASI_RS2(~0), "D,[1]", 0, v6notv9 }, /* st d,[rs1+%g0] */ +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "D,[1+i]", 0, v6notv9 }, +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "D,[i+1]", 0, v6notv9 }, +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0, "D,[i]", 0, v6notv9 }, +{ "st", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0), "D,[1]", 0, v6notv9 }, /* st d,[rs1+0] */ +{ "st", F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI(~0), "C,[1+2]", 0, v6notv9 }, +{ "st", F3(3, 0x35, 0), F3(~3, ~0x35, ~0)|ASI_RS2(~0), "C,[1]", 0, v6notv9 }, /* st d,[rs1+%g0] */ +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1), "C,[1+i]", 0, v6notv9 }, +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1), "C,[i+1]", 0, v6notv9 }, +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|RS1_G0, "C,[i]", 0, v6notv9 }, +{ "st", F3(3, 0x35, 1), F3(~3, ~0x35, ~1)|SIMM13(~0), "C,[1]", 0, v6notv9 }, /* st d,[rs1+0] */ + +{ "st", F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI(~0), "F,[1+2]", 0, v6 }, +{ "st", F3(3, 0x25, 0), F3(~3, ~0x25, ~0)|RD_G0|ASI_RS2(~0), "F,[1]", 0, v6 }, /* st d,[rs1+%g0] */ +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0, "F,[1+i]", 0, v6 }, +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0, "F,[i+1]", 0, v6 }, +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|RS1_G0, "F,[i]", 0, v6 }, +{ "st", F3(3, 0x25, 1), F3(~3, ~0x25, ~1)|RD_G0|SIMM13(~0), "F,[1]", 0, v6 }, /* st d,[rs1+0] */ + +{ "stw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, +{ "stw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, +{ "stw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ +{ "stsw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, +{ "stsw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, +{ "stsw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ +{ "stuw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v9 }, +{ "stuw", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+%g0] */ +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v9 }, +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v9 }, +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v9 }, +{ "stuw", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v9 }, /* st d,[rs1+0] */ + +{ "spill", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, +{ "spill", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* st d,[rs1+%g0] */ +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[1+i]", F_ALIAS, v6 }, +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1), "d,[i+1]", F_ALIAS, v6 }, +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, +{ "spill", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* st d,[rs1+0] */ + +{ "sta", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", 0, v6 }, +{ "sta", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* sta d,[rs1+%g0] */ +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", 0, v9 }, +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", 0, v9 }, +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", 0, v9 }, +{ "sta", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* st d,[rs1+0] */ + +{ "sta", F3(3, 0x34, 0), F3(~3, ~0x34, ~0), "g,[1+2]A", 0, v9 }, +{ "sta", F3(3, 0x34, 0), F3(~3, ~0x34, ~0)|RS2(~0), "g,[1]A", 0, v9 }, /* sta d,[rs1+%g0] */ +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "g,[1+i]o", 0, v9 }, +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1), "g,[i+1]o", 0, v9 }, +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|RS1_G0, "g,[i]o", 0, v9 }, +{ "sta", F3(3, 0x34, 1), F3(~3, ~0x34, ~1)|SIMM13(~0), "g,[1]o", 0, v9 }, /* st d,[rs1+0] */ + +{ "stwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, +{ "stwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, +{ "stwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ +{ "stswa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, +{ "stswa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, +{ "stswa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ +{ "stuwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0), "d,[1+2]A", F_ALIAS, v9 }, +{ "stuwa", F3(3, 0x14, 0), F3(~3, ~0x14, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v9 }, /* sta d,[rs1+%g0] */ +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[1+i]o", F_ALIAS, v9 }, +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1), "d,[i+1]o", F_ALIAS, v9 }, +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, +{ "stuwa", F3(3, 0x14, 1), F3(~3, ~0x14, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* st d,[rs1+0] */ + +{ "stb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, +{ "stb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* stb d,[rs1+%g0] */ +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", 0, v6 }, +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", 0, v6 }, +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", 0, v6 }, +{ "stb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* stb d,[rs1+0] */ + +{ "stsb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, +{ "stsb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+%g0] */ +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", F_ALIAS, v6 }, +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", F_ALIAS, v6 }, +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, +{ "stsb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+0] */ +{ "stub", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, +{ "stub", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+%g0] */ +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[1+i]", F_ALIAS, v6 }, +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1), "d,[i+1]", F_ALIAS, v6 }, +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, +{ "stub", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* stb d,[rs1+0] */ + +{ "stba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", 0, v6 }, +{ "stba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stba d,[rs1+%g0] */ +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", 0, v9 }, +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", 0, v9 }, +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", 0, v9 }, +{ "stba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* stb d,[rs1+0] */ + +{ "stsba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", F_ALIAS, v6 }, +{ "stsba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stba d,[rs1+%g0] */ +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", F_ALIAS, v9 }, +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", F_ALIAS, v9 }, +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, +{ "stsba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */ +{ "stuba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0), "d,[1+2]A", F_ALIAS, v6 }, +{ "stuba", F3(3, 0x15, 0), F3(~3, ~0x15, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stba d,[rs1+%g0] */ +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[1+i]o", F_ALIAS, v9 }, +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1), "d,[i+1]o", F_ALIAS, v9 }, +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, +{ "stuba", F3(3, 0x15, 1), F3(~3, ~0x15, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* stb d,[rs1+0] */ + +{ "std", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, +{ "std", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* std d,[rs1+%g0] */ +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[1+i]", 0, v6 }, +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[i+1]", 0, v6 }, +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|RS1_G0, "d,[i]", 0, v6 }, +{ "std", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* std d,[rs1+0] */ + +{ "std", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0), "q,[1+2]", 0, v6notv9 }, +{ "std", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0), "q,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "q,[1+i]", 0, v6notv9 }, +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "q,[i+1]", 0, v6notv9 }, +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0, "q,[i]", 0, v6notv9 }, +{ "std", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0), "q,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ +{ "std", F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI(~0), "H,[1+2]", 0, v6 }, +{ "std", F3(3, 0x27, 0), F3(~3, ~0x27, ~0)|ASI_RS2(~0), "H,[1]", 0, v6 }, /* std d,[rs1+%g0] */ +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1), "H,[1+i]", 0, v6 }, +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1), "H,[i+1]", 0, v6 }, +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|RS1_G0, "H,[i]", 0, v6 }, +{ "std", F3(3, 0x27, 1), F3(~3, ~0x27, ~1)|SIMM13(~0), "H,[1]", 0, v6 }, /* std d,[rs1+0] */ + +{ "std", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0), "Q,[1+2]", 0, v6notv9 }, +{ "std", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0), "Q,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "Q,[1+i]", 0, v6notv9 }, +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "Q,[i+1]", 0, v6notv9 }, +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0, "Q,[i]", 0, v6notv9 }, +{ "std", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0), "Q,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ +{ "std", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI(~0), "D,[1+2]", 0, v6notv9 }, +{ "std", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|ASI_RS2(~0), "D,[1]", 0, v6notv9 }, /* std d,[rs1+%g0] */ +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "D,[1+i]", 0, v6notv9 }, +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "D,[i+1]", 0, v6notv9 }, +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0, "D,[i]", 0, v6notv9 }, +{ "std", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0), "D,[1]", 0, v6notv9 }, /* std d,[rs1+0] */ + +{ "spilld", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, +{ "spilld", F3(3, 0x07, 0), F3(~3, ~0x07, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* std d,[rs1+%g0] */ +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[1+i]", F_ALIAS, v6 }, +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1), "d,[i+1]", F_ALIAS, v6 }, +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, +{ "spilld", F3(3, 0x07, 1), F3(~3, ~0x07, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* std d,[rs1+0] */ + +{ "stda", F3(3, 0x17, 0), F3(~3, ~0x17, ~0), "d,[1+2]A", 0, v6 }, +{ "stda", F3(3, 0x17, 0), F3(~3, ~0x17, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stda d,[rs1+%g0] */ +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1), "d,[1+i]o", 0, v9 }, +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1), "d,[i+1]o", 0, v9 }, +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|RS1_G0, "d,[i]o", 0, v9 }, +{ "stda", F3(3, 0x17, 1), F3(~3, ~0x17, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* std d,[rs1+0] */ +{ "stda", F3(3, 0x37, 0), F3(~3, ~0x37, ~0), "H,[1+2]A", 0, v9 }, +{ "stda", F3(3, 0x37, 0), F3(~3, ~0x37, ~0)|RS2(~0), "H,[1]A", 0, v9 }, /* stda d,[rs1+%g0] */ +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "H,[1+i]o", 0, v9 }, +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1), "H,[i+1]o", 0, v9 }, +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|RS1_G0, "H,[i]o", 0, v9 }, +{ "stda", F3(3, 0x37, 1), F3(~3, ~0x37, ~1)|SIMM13(~0), "H,[1]o", 0, v9 }, /* std d,[rs1+0] */ + +{ "sth", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", 0, v6 }, +{ "sth", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", 0, v6 }, /* sth d,[rs1+%g0] */ +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", 0, v6 }, +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", 0, v6 }, +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", 0, v6 }, +{ "sth", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", 0, v6 }, /* sth d,[rs1+0] */ + +{ "stsh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, +{ "stsh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+%g0] */ +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", F_ALIAS, v6 }, +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", F_ALIAS, v6 }, +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, +{ "stsh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+0] */ +{ "stuh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI(~0), "d,[1+2]", F_ALIAS, v6 }, +{ "stuh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|ASI_RS2(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+%g0] */ +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[1+i]", F_ALIAS, v6 }, +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1), "d,[i+1]", F_ALIAS, v6 }, +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RS1_G0, "d,[i]", F_ALIAS, v6 }, +{ "stuh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|SIMM13(~0), "d,[1]", F_ALIAS, v6 }, /* sth d,[rs1+0] */ + +{ "stha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", 0, v6 }, +{ "stha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", 0, v6 }, /* stha ,[rs1+%g0] */ +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", 0, v9 }, +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", 0, v9 }, +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", 0, v9 }, +{ "stha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* sth d,[rs1+0] */ + +{ "stsha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", F_ALIAS, v6 }, +{ "stsha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stha ,[rs1+%g0] */ +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", F_ALIAS, v9 }, +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", F_ALIAS, v9 }, +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, +{ "stsha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* sth d,[rs1+0] */ +{ "stuha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0), "d,[1+2]A", F_ALIAS, v6 }, +{ "stuha", F3(3, 0x16, 0), F3(~3, ~0x16, ~0)|RS2(~0), "d,[1]A", F_ALIAS, v6 }, /* stha ,[rs1+%g0] */ +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[1+i]o", F_ALIAS, v9 }, +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1), "d,[i+1]o", F_ALIAS, v9 }, +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|RS1_G0, "d,[i]o", F_ALIAS, v9 }, +{ "stuha", F3(3, 0x16, 1), F3(~3, ~0x16, ~1)|SIMM13(~0), "d,[1]o", F_ALIAS, v9 }, /* sth d,[rs1+0] */ + +{ "stx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI(~0), "d,[1+2]", 0, v9 }, +{ "stx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|ASI_RS2(~0), "d,[1]", 0, v9 }, /* stx d,[rs1+%g0] */ +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1), "d,[1+i]", 0, v9 }, +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1), "d,[i+1]", 0, v9 }, +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RS1_G0, "d,[i]", 0, v9 }, +{ "stx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|SIMM13(~0), "d,[1]", 0, v9 }, /* stx d,[rs1+0] */ + +{ "stx", F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI(~0)|RD(~1), "F,[1+2]", 0, v9 }, +{ "stx", F3(3, 0x25, 0)|RD(1), F3(~3, ~0x25, ~0)|ASI_RS2(~0)|RD(~1),"F,[1]", 0, v9 }, /* stx d,[rs1+%g0] */ +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1), "F,[1+i]", 0, v9 }, +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RD(~1), "F,[i+1]", 0, v9 }, +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|RS1_G0|RD(~1), "F,[i]", 0, v9 }, +{ "stx", F3(3, 0x25, 1)|RD(1), F3(~3, ~0x25, ~1)|SIMM13(~0)|RD(~1),"F,[1]", 0, v9 }, /* stx d,[rs1+0] */ + +{ "stxa", F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0), "d,[1+2]A", 0, v9 }, +{ "stxa", F3(3, 0x1e, 0), F3(~3, ~0x1e, ~0)|RS2(~0), "d,[1]A", 0, v9 }, /* stxa d,[rs1+%g0] */ +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1), "d,[1+i]o", 0, v9 }, +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1), "d,[i+1]o", 0, v9 }, +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|RS1_G0, "d,[i]o", 0, v9 }, +{ "stxa", F3(3, 0x1e, 1), F3(~3, ~0x1e, ~1)|SIMM13(~0), "d,[1]o", 0, v9 }, /* stx d,[rs1+0] */ + +{ "stq", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI(~0), "J,[1+2]", 0, v9 }, +{ "stq", F3(3, 0x26, 0), F3(~3, ~0x26, ~0)|ASI_RS2(~0), "J,[1]", 0, v9 }, /* stq [rs1+%g0] */ +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "J,[1+i]", 0, v9 }, +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1), "J,[i+1]", 0, v9 }, +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|RS1_G0, "J,[i]", 0, v9 }, +{ "stq", F3(3, 0x26, 1), F3(~3, ~0x26, ~1)|SIMM13(~0), "J,[1]", 0, v9 }, /* stq [rs1+0] */ + +{ "stqa", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI(~0), "J,[1+2]A", 0, v9 }, +{ "stqa", F3(3, 0x36, 0), F3(~3, ~0x36, ~0)|ASI_RS2(~0), "J,[1]A", 0, v9 }, /* stqa [rs1+%g0] */ +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "J,[1+i]o", 0, v9 }, +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1), "J,[i+1]o", 0, v9 }, +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|RS1_G0, "J,[i]o", 0, v9 }, +{ "stqa", F3(3, 0x36, 1), F3(~3, ~0x36, ~1)|SIMM13(~0), "J,[1]o", 0, v9 }, /* stqa [rs1+0] */ + +{ "swap", F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI(~0), "[1+2],d", 0, v7 }, +{ "swap", F3(3, 0x0f, 0), F3(~3, ~0x0f, ~0)|ASI_RS2(~0), "[1],d", 0, v7 }, /* swap [rs1+%g0],d */ +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1), "[1+i],d", 0, v7 }, +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1), "[i+1],d", 0, v7 }, +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1)|RS1_G0, "[i],d", 0, v7 }, +{ "swap", F3(3, 0x0f, 1), F3(~3, ~0x0f, ~1)|SIMM13(~0), "[1],d", 0, v7 }, /* swap [rs1+0],d */ + +{ "swapa", F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0), "[1+2]A,d", 0, v7 }, +{ "swapa", F3(3, 0x1f, 0), F3(~3, ~0x1f, ~0)|RS2(~0), "[1]A,d", 0, v7 }, /* swapa [rs1+%g0],d */ +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1), "[1+i]o,d", 0, v9 }, +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1), "[i+1]o,d", 0, v9 }, +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|RS1_G0, "[i]o,d", 0, v9 }, +{ "swapa", F3(3, 0x1f, 1), F3(~3, ~0x1f, ~1)|SIMM13(~0), "[1]o,d", 0, v9 }, /* swap [rs1+0],d */ + +{ "restore", F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "restore", F3(2, 0x3d, 0), F3(~2, ~0x3d, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "", 0, v6 }, /* restore %g0,%g0,%g0 */ +{ "restore", F3(2, 0x3d, 1), F3(~2, ~0x3d, ~1), "1,i,d", 0, v6 }, +{ "restore", F3(2, 0x3d, 1), F3(~2, ~0x3d, ~1)|RD_G0|RS1_G0|SIMM13(~0), "", 0, v6 }, /* restore %g0,0,%g0 */ + +{ "rett", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|RD_G0|ASI(~0), "1+2", F_UNBR|F_DELAYED, v6 }, /* rett rs1+rs2 */ +{ "rett", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|RD_G0|ASI_RS2(~0), "1", F_UNBR|F_DELAYED, v6 }, /* rett rs1,%g0 */ +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0, "1+i", F_UNBR|F_DELAYED, v6 }, /* rett rs1+X */ +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0, "i+1", F_UNBR|F_DELAYED, v6 }, /* rett X+rs1 */ +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* rett X+rs1 */ +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* rett X */ +{ "rett", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RD_G0|SIMM13(~0), "1", F_UNBR|F_DELAYED, v6 }, /* rett rs1+0 */ + +{ "save", F3(2, 0x3c, 0), F3(~2, ~0x3c, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "save", F3(2, 0x3c, 1), F3(~2, ~0x3c, ~1), "1,i,d", 0, v6 }, +{ "save", 0x81e00000, ~0x81e00000, "", F_ALIAS, v6 }, + +{ "ret", F3(2, 0x38, 1)|RS1(0x1f)|SIMM13(8), F3(~2, ~0x38, ~1)|SIMM13(~8), "", F_UNBR|F_DELAYED, v6 }, /* jmpl %i7+8,%g0 */ +{ "retl", F3(2, 0x38, 1)|RS1(0x0f)|SIMM13(8), F3(~2, ~0x38, ~1)|RS1(~0x0f)|SIMM13(~8), "", F_UNBR|F_DELAYED, v6 }, /* jmpl %o7+8,%g0 */ + +{ "jmpl", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|ASI(~0), "1+2,d", F_JSR|F_DELAYED, v6 }, +{ "jmpl", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|ASI_RS2(~0), "1,d", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+%g0,d */ +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|SIMM13(~0), "1,d", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+0,d */ +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RS1_G0, "i,d", F_JSR|F_DELAYED, v6 }, /* jmpl %g0+i,d */ +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1), "1+i,d", F_JSR|F_DELAYED, v6 }, +{ "jmpl", F3(2, 0x38, 1), F3(~2, ~0x38, ~1), "i+1,d", F_JSR|F_DELAYED, v6 }, + +{ "done", F3(2, 0x3e, 0)|RD(0), F3(~2, ~0x3e, ~0)|RD(~0)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "retry", F3(2, 0x3e, 0)|RD(1), F3(~2, ~0x3e, ~0)|RD(~1)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "saved", F3(2, 0x31, 0)|RD(0), F3(~2, ~0x31, ~0)|RD(~0)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "restored", F3(2, 0x31, 0)|RD(1), F3(~2, ~0x31, ~0)|RD(~1)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "allclean", F3(2, 0x31, 0)|RD(2), F3(~2, ~0x31, ~0)|RD(~2)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "otherw", F3(2, 0x31, 0)|RD(3), F3(~2, ~0x31, ~0)|RD(~3)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "normalw", F3(2, 0x31, 0)|RD(4), F3(~2, ~0x31, ~0)|RD(~4)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "invalw", F3(2, 0x31, 0)|RD(5), F3(~2, ~0x31, ~0)|RD(~5)|RS1_G0|SIMM13(~0), "", 0, v9 }, +{ "sir", F3(2, 0x30, 1)|RD(0xf), F3(~2, ~0x30, ~1)|RD(~0xf)|RS1_G0, "i", 0, v9 }, + +{ "flush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0), "1+2", 0, v8 }, +{ "flush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0), "1", 0, v8 }, /* flush rs1+%g0 */ +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0), "1", 0, v8 }, /* flush rs1+0 */ +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0, "i", 0, v8 }, /* flush %g0+i */ +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "1+i", 0, v8 }, +{ "flush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "i+1", 0, v8 }, + +/* IFLUSH was renamed to FLUSH in v8. */ +{ "iflush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI(~0), "1+2", F_ALIAS, v6 }, +{ "iflush", F3(2, 0x3b, 0), F3(~2, ~0x3b, ~0)|ASI_RS2(~0), "1", F_ALIAS, v6 }, /* flush rs1+%g0 */ +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|SIMM13(~0), "1", F_ALIAS, v6 }, /* flush rs1+0 */ +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1)|RS1_G0, "i", F_ALIAS, v6 }, +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "1+i", F_ALIAS, v6 }, +{ "iflush", F3(2, 0x3b, 1), F3(~2, ~0x3b, ~1), "i+1", F_ALIAS, v6 }, + +{ "return", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI(~0), "1+2", 0, v9 }, +{ "return", F3(2, 0x39, 0), F3(~2, ~0x39, ~0)|ASI_RS2(~0), "1", 0, v9 }, /* return rs1+%g0 */ +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|SIMM13(~0), "1", 0, v9 }, /* return rs1+0 */ +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1)|RS1_G0, "i", 0, v9 }, /* return %g0+i */ +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1), "1+i", 0, v9 }, +{ "return", F3(2, 0x39, 1), F3(~2, ~0x39, ~1), "i+1", 0, v9 }, + +{ "flushw", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "", 0, v9 }, + +{ "membar", F3(2, 0x28, 1)|RS1(0xf), F3(~2, ~0x28, ~1)|RD_G0|RS1(~0xf)|SIMM13(~127), "K", 0, v9 }, +{ "stbar", F3(2, 0x28, 0)|RS1(0xf), F3(~2, ~0x28, ~0)|RD_G0|RS1(~0xf)|SIMM13(~0), "", 0, v8 }, + +{ "prefetch", F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0), "[1+2],*", 0, v9 }, +{ "prefetch", F3(3, 0x2d, 0), F3(~3, ~0x2d, ~0)|RS2_G0, "[1],*", 0, v9 }, /* prefetch [rs1+%g0],prefetch_fcn */ +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1), "[1+i],*", 0, v9 }, +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1), "[i+1],*", 0, v9 }, +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|RS1_G0, "[i],*", 0, v9 }, +{ "prefetch", F3(3, 0x2d, 1), F3(~3, ~0x2d, ~1)|SIMM13(~0), "[1],*", 0, v9 }, /* prefetch [rs1+0],prefetch_fcn */ +{ "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0), "[1+2]A,*", 0, v9 }, +{ "prefetcha", F3(3, 0x3d, 0), F3(~3, ~0x3d, ~0)|RS2_G0, "[1]A,*", 0, v9 }, /* prefetcha [rs1+%g0],prefetch_fcn */ +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1), "[1+i]o,*", 0, v9 }, +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1), "[i+1]o,*", 0, v9 }, +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|RS1_G0, "[i]o,*", 0, v9 }, +{ "prefetcha", F3(3, 0x3d, 1), F3(~3, ~0x3d, ~1)|SIMM13(~0), "[1]o,*", 0, v9 }, /* prefetcha [rs1+0],d */ + +{ "sll", F3(2, 0x25, 0), F3(~2, ~0x25, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, +{ "sll", F3(2, 0x25, 1), F3(~2, ~0x25, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, +{ "sra", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, +{ "sra", F3(2, 0x27, 1), F3(~2, ~0x27, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, +{ "srl", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|(0x7f<<5), "1,2,d", 0, v6 }, +{ "srl", F3(2, 0x26, 1), F3(~2, ~0x26, ~1)|(1<<12)|(0x7f<<5), "1,X,d", 0, v6 }, + +{ "sllx", F3(2, 0x25, 0)|(1<<12), F3(~2, ~0x25, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, +{ "sllx", F3(2, 0x25, 1)|(1<<12), F3(~2, ~0x25, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, +{ "srax", F3(2, 0x27, 0)|(1<<12), F3(~2, ~0x27, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, +{ "srax", F3(2, 0x27, 1)|(1<<12), F3(~2, ~0x27, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, +{ "srlx", F3(2, 0x26, 0)|(1<<12), F3(~2, ~0x26, ~0)|(0x7f<<5), "1,2,d", 0, v9 }, +{ "srlx", F3(2, 0x26, 1)|(1<<12), F3(~2, ~0x26, ~1)|(0x3f<<6), "1,Y,d", 0, v9 }, + +{ "mulscc", F3(2, 0x24, 0), F3(~2, ~0x24, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "mulscc", F3(2, 0x24, 1), F3(~2, ~0x24, ~1), "1,i,d", 0, v6 }, + +{ "divscc", F3(2, 0x1d, 0), F3(~2, ~0x1d, ~0)|ASI(~0), "1,2,d", 0, sparclite }, +{ "divscc", F3(2, 0x1d, 1), F3(~2, ~0x1d, ~1), "1,i,d", 0, sparclite }, + +{ "scan", F3(2, 0x2c, 0), F3(~2, ~0x2c, ~0)|ASI(~0), "1,2,d", 0, sparclet|sparclite }, +{ "scan", F3(2, 0x2c, 1), F3(~2, ~0x2c, ~1), "1,i,d", 0, sparclet|sparclite }, + +{ "popc", F3(2, 0x2e, 0), F3(~2, ~0x2e, ~0)|RS1_G0|ASI(~0),"2,d", 0, v9 }, +{ "popc", F3(2, 0x2e, 1), F3(~2, ~0x2e, ~1)|RS1_G0, "i,d", 0, v9 }, + +{ "clr", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "d", F_ALIAS, v6 }, /* or %g0,%g0,d */ +{ "clr", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0|SIMM13(~0), "d", F_ALIAS, v6 }, /* or %g0,0,d */ +{ "clr", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, +{ "clr", F3(3, 0x04, 0), F3(~3, ~0x04, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* st %g0,[rs1+%g0] */ +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, +{ "clr", F3(3, 0x04, 1), F3(~3, ~0x04, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* st %g0,[rs1+0] */ + +{ "clrb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, +{ "clrb", F3(3, 0x05, 0), F3(~3, ~0x05, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* stb %g0,[rs1+%g0] */ +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, +{ "clrb", F3(3, 0x05, 1), F3(~3, ~0x05, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* stb %g0,[rs1+0] */ + +{ "clrh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v6 }, +{ "clrh", F3(3, 0x06, 0), F3(~3, ~0x06, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v6 }, /* sth %g0,[rs1+%g0] */ +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0, "[1+i]", F_ALIAS, v6 }, +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0, "[i+1]", F_ALIAS, v6 }, +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v6 }, +{ "clrh", F3(3, 0x06, 1), F3(~3, ~0x06, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v6 }, /* sth %g0,[rs1+0] */ + +{ "clrx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|RD_G0|ASI(~0), "[1+2]", F_ALIAS, v9 }, +{ "clrx", F3(3, 0x0e, 0), F3(~3, ~0x0e, ~0)|RD_G0|ASI_RS2(~0), "[1]", F_ALIAS, v9 }, /* stx %g0,[rs1+%g0] */ +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0, "[1+i]", F_ALIAS, v9 }, +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0, "[i+1]", F_ALIAS, v9 }, +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0|RS1_G0, "[i]", F_ALIAS, v9 }, +{ "clrx", F3(3, 0x0e, 1), F3(~3, ~0x0e, ~1)|RD_G0|SIMM13(~0), "[1]", F_ALIAS, v9 }, /* stx %g0,[rs1+0] */ + +{ "orcc", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "orcc", F3(2, 0x12, 1), F3(~2, ~0x12, ~1), "1,i,d", 0, v6 }, +{ "orcc", F3(2, 0x12, 1), F3(~2, ~0x12, ~1), "i,1,d", 0, v6 }, + +/* This is not a commutative instruction. */ +{ "orncc", F3(2, 0x16, 0), F3(~2, ~0x16, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "orncc", F3(2, 0x16, 1), F3(~2, ~0x16, ~1), "1,i,d", 0, v6 }, + +/* This is not a commutative instruction. */ +{ "orn", F3(2, 0x06, 0), F3(~2, ~0x06, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "orn", F3(2, 0x06, 1), F3(~2, ~0x06, ~1), "1,i,d", 0, v6 }, + +{ "tst", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|ASI_RS2(~0), "1", 0, v6 }, /* orcc rs1, %g0, %g0 */ +{ "tst", F3(2, 0x12, 0), F3(~2, ~0x12, ~0)|RD_G0|RS1_G0|ASI(~0), "2", 0, v6 }, /* orcc %g0, rs2, %g0 */ +{ "tst", F3(2, 0x12, 1), F3(~2, ~0x12, ~1)|RD_G0|SIMM13(~0), "1", 0, v6 }, /* orcc rs1, 0, %g0 */ + +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI(~0), "1,2,m", 0, v8 }, /* wr r,r,%asrX */ +{ "wr", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "1,i,m", 0, v8 }, /* wr r,i,%asrX */ +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI_RS2(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,%g0,%asrX */ +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI(~0), "1,2,y", 0, v6 }, /* wr r,r,%y */ +{ "wr", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "1,i,y", 0, v6 }, /* wr r,i,%y */ +{ "wr", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI_RS2(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,%g0,%y */ +{ "wr", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI(~0), "1,2,p", 0, v6notv9 }, /* wr r,r,%psr */ +{ "wr", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "1,i,p", 0, v6notv9 }, /* wr r,i,%psr */ +{ "wr", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI_RS2(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%psr */ +{ "wr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI(~0), "1,2,w", 0, v6notv9 }, /* wr r,r,%wim */ +{ "wr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "1,i,w", 0, v6notv9 }, /* wr r,i,%wim */ +{ "wr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI_RS2(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%wim */ +{ "wr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI(~0), "1,2,t", 0, v6notv9 }, /* wr r,r,%tbr */ +{ "wr", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "1,i,t", 0, v6notv9 }, /* wr r,i,%tbr */ +{ "wr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI_RS2(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%tbr */ + +{ "wr", F3(2, 0x30, 0)|RD(2), F3(~2, ~0x30, ~0)|RD(~2)|ASI(~0), "1,2,E", 0, v9 }, /* wr r,r,%ccr */ +{ "wr", F3(2, 0x30, 1)|RD(2), F3(~2, ~0x30, ~1)|RD(~2), "1,i,E", 0, v9 }, /* wr r,i,%ccr */ +{ "wr", F3(2, 0x30, 0)|RD(3), F3(~2, ~0x30, ~0)|RD(~3)|ASI(~0), "1,2,o", 0, v9 }, /* wr r,r,%asi */ +{ "wr", F3(2, 0x30, 1)|RD(3), F3(~2, ~0x30, ~1)|RD(~3), "1,i,o", 0, v9 }, /* wr r,i,%asi */ +{ "wr", F3(2, 0x30, 0)|RD(6), F3(~2, ~0x30, ~0)|RD(~6)|ASI(~0), "1,2,s", 0, v9 }, /* wr r,r,%fprs */ +{ "wr", F3(2, 0x30, 1)|RD(6), F3(~2, ~0x30, ~1)|RD(~6), "1,i,s", 0, v9 }, /* wr r,i,%fprs */ + +{ "wr", F3(2, 0x30, 0)|RD(16), F3(~2, ~0x30, ~0)|RD(~16)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%pcr */ +{ "wr", F3(2, 0x30, 1)|RD(16), F3(~2, ~0x30, ~1)|RD(~16), "1,i,_", 0, v9a }, /* wr r,i,%pcr */ +{ "wr", F3(2, 0x30, 0)|RD(17), F3(~2, ~0x30, ~0)|RD(~17)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%pic */ +{ "wr", F3(2, 0x30, 1)|RD(17), F3(~2, ~0x30, ~1)|RD(~17), "1,i,_", 0, v9a }, /* wr r,i,%pic */ +{ "wr", F3(2, 0x30, 0)|RD(18), F3(~2, ~0x30, ~0)|RD(~18)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%dcr */ +{ "wr", F3(2, 0x30, 1)|RD(18), F3(~2, ~0x30, ~1)|RD(~18), "1,i,_", 0, v9a }, /* wr r,i,%dcr */ +{ "wr", F3(2, 0x30, 0)|RD(19), F3(~2, ~0x30, ~0)|RD(~19)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%gsr */ +{ "wr", F3(2, 0x30, 1)|RD(19), F3(~2, ~0x30, ~1)|RD(~19), "1,i,_", 0, v9a }, /* wr r,i,%gsr */ +{ "wr", F3(2, 0x30, 0)|RD(20), F3(~2, ~0x30, ~0)|RD(~20)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%set_softint */ +{ "wr", F3(2, 0x30, 1)|RD(20), F3(~2, ~0x30, ~1)|RD(~20), "1,i,_", 0, v9a }, /* wr r,i,%set_softint */ +{ "wr", F3(2, 0x30, 0)|RD(21), F3(~2, ~0x30, ~0)|RD(~21)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%clear_softint */ +{ "wr", F3(2, 0x30, 1)|RD(21), F3(~2, ~0x30, ~1)|RD(~21), "1,i,_", 0, v9a }, /* wr r,i,%clear_softint */ +{ "wr", F3(2, 0x30, 0)|RD(22), F3(~2, ~0x30, ~0)|RD(~22)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%softint */ +{ "wr", F3(2, 0x30, 1)|RD(22), F3(~2, ~0x30, ~1)|RD(~22), "1,i,_", 0, v9a }, /* wr r,i,%softint */ +{ "wr", F3(2, 0x30, 0)|RD(23), F3(~2, ~0x30, ~0)|RD(~23)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%tick_cmpr */ +{ "wr", F3(2, 0x30, 1)|RD(23), F3(~2, ~0x30, ~1)|RD(~23), "1,i,_", 0, v9a }, /* wr r,i,%tick_cmpr */ +{ "wr", F3(2, 0x30, 0)|RD(24), F3(~2, ~0x30, ~0)|RD(~24)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick */ +{ "wr", F3(2, 0x30, 1)|RD(24), F3(~2, ~0x30, ~1)|RD(~24), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick */ +{ "wr", F3(2, 0x30, 0)|RD(25), F3(~2, ~0x30, ~0)|RD(~25)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick_cmpr */ +{ "wr", F3(2, 0x30, 1)|RD(25), F3(~2, ~0x30, ~1)|RD(~25), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick_cmpr */ + +{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|SIMM13(~0), "M,d", 0, v8 }, /* rd %asrX,r */ +{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0), "y,d", 0, v6 }, /* rd %y,r */ +{ "rd", F3(2, 0x29, 0), F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0), "p,d", 0, v6notv9 }, /* rd %psr,r */ +{ "rd", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0), "w,d", 0, v6notv9 }, /* rd %wim,r */ +{ "rd", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0), "t,d", 0, v6notv9 }, /* rd %tbr,r */ + +{ "rd", F3(2, 0x28, 0)|RS1(2), F3(~2, ~0x28, ~0)|RS1(~2)|SIMM13(~0), "E,d", 0, v9 }, /* rd %ccr,r */ +{ "rd", F3(2, 0x28, 0)|RS1(3), F3(~2, ~0x28, ~0)|RS1(~3)|SIMM13(~0), "o,d", 0, v9 }, /* rd %asi,r */ +{ "rd", F3(2, 0x28, 0)|RS1(4), F3(~2, ~0x28, ~0)|RS1(~4)|SIMM13(~0), "W,d", 0, v9 }, /* rd %tick,r */ +{ "rd", F3(2, 0x28, 0)|RS1(5), F3(~2, ~0x28, ~0)|RS1(~5)|SIMM13(~0), "P,d", 0, v9 }, /* rd %pc,r */ +{ "rd", F3(2, 0x28, 0)|RS1(6), F3(~2, ~0x28, ~0)|RS1(~6)|SIMM13(~0), "s,d", 0, v9 }, /* rd %fprs,r */ + +{ "rd", F3(2, 0x28, 0)|RS1(16), F3(~2, ~0x28, ~0)|RS1(~16)|SIMM13(~0), "/,d", 0, v9a }, /* rd %pcr,r */ +{ "rd", F3(2, 0x28, 0)|RS1(17), F3(~2, ~0x28, ~0)|RS1(~17)|SIMM13(~0), "/,d", 0, v9a }, /* rd %pic,r */ +{ "rd", F3(2, 0x28, 0)|RS1(18), F3(~2, ~0x28, ~0)|RS1(~18)|SIMM13(~0), "/,d", 0, v9a }, /* rd %dcr,r */ +{ "rd", F3(2, 0x28, 0)|RS1(19), F3(~2, ~0x28, ~0)|RS1(~19)|SIMM13(~0), "/,d", 0, v9a }, /* rd %gsr,r */ +{ "rd", F3(2, 0x28, 0)|RS1(22), F3(~2, ~0x28, ~0)|RS1(~22)|SIMM13(~0), "/,d", 0, v9a }, /* rd %softint,r */ +{ "rd", F3(2, 0x28, 0)|RS1(23), F3(~2, ~0x28, ~0)|RS1(~23)|SIMM13(~0), "/,d", 0, v9a }, /* rd %tick_cmpr,r */ +{ "rd", F3(2, 0x28, 0)|RS1(24), F3(~2, ~0x28, ~0)|RS1(~24)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick,r */ +{ "rd", F3(2, 0x28, 0)|RS1(25), F3(~2, ~0x28, ~0)|RS1(~25)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick_cmpr,r */ + +{ "rdpr", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|SIMM13(~0), "?,d", 0, v9 }, /* rdpr %priv,r */ +{ "wrpr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0), "1,2,!", 0, v9 }, /* wrpr r1,r2,%priv */ +{ "wrpr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|SIMM13(~0), "1,!", 0, v9 }, /* wrpr r1,%priv */ +{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1), "1,i,!", 0, v9 }, /* wrpr r1,i,%priv */ +{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1), "i,1,!", F_ALIAS, v9 }, /* wrpr i,r1,%priv */ +{ "wrpr", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RS1(~0), "i,!", 0, v9 }, /* wrpr i,%priv */ + +{ "rdhpr", F3(2, 0x29, 0), F3(~2, ~0x29, ~0)|SIMM13(~0), "$,d", 0, v9 }, /* rdhpr %hpriv,r */ +{ "wrhpr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0), "1,2,%", 0, v9 }, /* wrhpr r1,r2,%hpriv */ +{ "wrhpr", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|SIMM13(~0), "1,%", 0, v9 }, /* wrhpr r1,%hpriv */ +{ "wrhpr", F3(2, 0x33, 1), F3(~2, ~0x33, ~1), "1,i,%", 0, v9 }, /* wrhpr r1,i,%hpriv */ +{ "wrhpr", F3(2, 0x33, 1), F3(~2, ~0x33, ~1), "i,1,%", F_ALIAS, v9 }, /* wrhpr i,r1,%hpriv */ +{ "wrhpr", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RS1(~0), "i,%", 0, v9 }, /* wrhpr i,%hpriv */ + +/* ??? This group seems wrong. A three operand move? */ +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI(~0), "1,2,m", F_ALIAS, v8 }, /* wr r,r,%asrX */ +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "1,i,m", F_ALIAS, v8 }, /* wr r,i,%asrX */ +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI(~0), "1,2,y", F_ALIAS, v6 }, /* wr r,r,%y */ +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "1,i,y", F_ALIAS, v6 }, /* wr r,i,%y */ +{ "mov", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI(~0), "1,2,p", F_ALIAS, v6notv9 }, /* wr r,r,%psr */ +{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "1,i,p", F_ALIAS, v6notv9 }, /* wr r,i,%psr */ +{ "mov", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI(~0), "1,2,w", F_ALIAS, v6notv9 }, /* wr r,r,%wim */ +{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "1,i,w", F_ALIAS, v6notv9 }, /* wr r,i,%wim */ +{ "mov", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI(~0), "1,2,t", F_ALIAS, v6notv9 }, /* wr r,r,%tbr */ +{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "1,i,t", F_ALIAS, v6notv9 }, /* wr r,i,%tbr */ + +{ "mov", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|SIMM13(~0), "M,d", F_ALIAS, v8 }, /* rd %asr1,r */ +{ "mov", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0), "y,d", F_ALIAS, v6 }, /* rd %y,r */ +{ "mov", F3(2, 0x29, 0), F3(~2, ~0x29, ~0)|RS1_G0|SIMM13(~0), "p,d", F_ALIAS, v6notv9 }, /* rd %psr,r */ +{ "mov", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|RS1_G0|SIMM13(~0), "w,d", F_ALIAS, v6notv9 }, /* rd %wim,r */ +{ "mov", F3(2, 0x2b, 0), F3(~2, ~0x2b, ~0)|RS1_G0|SIMM13(~0), "t,d", F_ALIAS, v6notv9 }, /* rd %tbr,r */ + +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|ASI_RS2(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,%g0,%asrX */ +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1), "i,m", F_ALIAS, v8 }, /* wr %g0,i,%asrX */ +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|SIMM13(~0), "1,m", F_ALIAS, v8 }, /* wr rs1,0,%asrX */ +{ "mov", F3(2, 0x30, 0), F3(~2, ~0x30, ~0)|RD_G0|ASI_RS2(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,%g0,%y */ +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0, "i,y", F_ALIAS, v6 }, /* wr %g0,i,%y */ +{ "mov", F3(2, 0x30, 1), F3(~2, ~0x30, ~1)|RD_G0|SIMM13(~0), "1,y", F_ALIAS, v6 }, /* wr rs1,0,%y */ +{ "mov", F3(2, 0x31, 0), F3(~2, ~0x31, ~0)|RD_G0|ASI_RS2(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%psr */ +{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0, "i,p", F_ALIAS, v6notv9 }, /* wr %g0,i,%psr */ +{ "mov", F3(2, 0x31, 1), F3(~2, ~0x31, ~1)|RD_G0|SIMM13(~0), "1,p", F_ALIAS, v6notv9 }, /* wr rs1,0,%psr */ +{ "mov", F3(2, 0x32, 0), F3(~2, ~0x32, ~0)|RD_G0|ASI_RS2(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%wim */ +{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0, "i,w", F_ALIAS, v6notv9 }, /* wr %g0,i,%wim */ +{ "mov", F3(2, 0x32, 1), F3(~2, ~0x32, ~1)|RD_G0|SIMM13(~0), "1,w", F_ALIAS, v6notv9 }, /* wr rs1,0,%wim */ +{ "mov", F3(2, 0x33, 0), F3(~2, ~0x33, ~0)|RD_G0|ASI_RS2(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,%g0,%tbr */ +{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0, "i,t", F_ALIAS, v6notv9 }, /* wr %g0,i,%tbr */ +{ "mov", F3(2, 0x33, 1), F3(~2, ~0x33, ~1)|RD_G0|SIMM13(~0), "1,t", F_ALIAS, v6notv9 }, /* wr rs1,0,%tbr */ + +{ "mov", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RS1_G0|ASI(~0), "2,d", 0, v6 }, /* or %g0,rs2,d */ +{ "mov", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0, "i,d", 0, v6 }, /* or %g0,i,d */ +{ "mov", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI_RS2(~0), "1,d", 0, v6 }, /* or rs1,%g0,d */ +{ "mov", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|SIMM13(~0), "1,d", 0, v6 }, /* or rs1,0,d */ + +{ "or", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "or", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "1,i,d", 0, v6 }, +{ "or", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "i,1,d", 0, v6 }, + +{ "bset", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* or rd,rs2,rd */ +{ "bset", F3(2, 0x02, 1), F3(~2, ~0x02, ~1), "i,r", F_ALIAS, v6 }, /* or rd,i,rd */ + +/* This is not a commutative instruction. */ +{ "andn", F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "andn", F3(2, 0x05, 1), F3(~2, ~0x05, ~1), "1,i,d", 0, v6 }, + +/* This is not a commutative instruction. */ +{ "andncc", F3(2, 0x15, 0), F3(~2, ~0x15, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "andncc", F3(2, 0x15, 1), F3(~2, ~0x15, ~1), "1,i,d", 0, v6 }, + +{ "bclr", F3(2, 0x05, 0), F3(~2, ~0x05, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* andn rd,rs2,rd */ +{ "bclr", F3(2, 0x05, 1), F3(~2, ~0x05, ~1), "i,r", F_ALIAS, v6 }, /* andn rd,i,rd */ + +{ "cmp", F3(2, 0x14, 0), F3(~2, ~0x14, ~0)|RD_G0|ASI(~0), "1,2", 0, v6 }, /* subcc rs1,rs2,%g0 */ +{ "cmp", F3(2, 0x14, 1), F3(~2, ~0x14, ~1)|RD_G0, "1,i", 0, v6 }, /* subcc rs1,i,%g0 */ + +{ "sub", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "sub", F3(2, 0x04, 1), F3(~2, ~0x04, ~1), "1,i,d", 0, v6 }, + +{ "subcc", F3(2, 0x14, 0), F3(~2, ~0x14, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "subcc", F3(2, 0x14, 1), F3(~2, ~0x14, ~1), "1,i,d", 0, v6 }, + +{ "subx", F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, +{ "subx", F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1), "1,i,d", 0, v6notv9 }, +{ "subc", F3(2, 0x0c, 0), F3(~2, ~0x0c, ~0)|ASI(~0), "1,2,d", 0, v9 }, +{ "subc", F3(2, 0x0c, 1), F3(~2, ~0x0c, ~1), "1,i,d", 0, v9 }, + +{ "subxcc", F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, +{ "subxcc", F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1), "1,i,d", 0, v6notv9 }, +{ "subccc", F3(2, 0x1c, 0), F3(~2, ~0x1c, ~0)|ASI(~0), "1,2,d", 0, v9 }, +{ "subccc", F3(2, 0x1c, 1), F3(~2, ~0x1c, ~1), "1,i,d", 0, v9 }, + +{ "and", F3(2, 0x01, 0), F3(~2, ~0x01, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "and", F3(2, 0x01, 1), F3(~2, ~0x01, ~1), "1,i,d", 0, v6 }, +{ "and", F3(2, 0x01, 1), F3(~2, ~0x01, ~1), "i,1,d", 0, v6 }, + +{ "andcc", F3(2, 0x11, 0), F3(~2, ~0x11, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "andcc", F3(2, 0x11, 1), F3(~2, ~0x11, ~1), "1,i,d", 0, v6 }, +{ "andcc", F3(2, 0x11, 1), F3(~2, ~0x11, ~1), "i,1,d", 0, v6 }, + +{ "dec", F3(2, 0x04, 1)|SIMM13(0x1), F3(~2, ~0x04, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* sub rd,1,rd */ +{ "dec", F3(2, 0x04, 1), F3(~2, ~0x04, ~1), "i,r", F_ALIAS, v8 }, /* sub rd,imm,rd */ +{ "deccc", F3(2, 0x14, 1)|SIMM13(0x1), F3(~2, ~0x14, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* subcc rd,1,rd */ +{ "deccc", F3(2, 0x14, 1), F3(~2, ~0x14, ~1), "i,r", F_ALIAS, v8 }, /* subcc rd,imm,rd */ +{ "inc", F3(2, 0x00, 1)|SIMM13(0x1), F3(~2, ~0x00, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* add rd,1,rd */ +{ "inc", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "i,r", F_ALIAS, v8 }, /* add rd,imm,rd */ +{ "inccc", F3(2, 0x10, 1)|SIMM13(0x1), F3(~2, ~0x10, ~1)|SIMM13(~0x0001), "r", F_ALIAS, v6 }, /* addcc rd,1,rd */ +{ "inccc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "i,r", F_ALIAS, v8 }, /* addcc rd,imm,rd */ + +{ "btst", F3(2, 0x11, 0), F3(~2, ~0x11, ~0)|RD_G0|ASI(~0), "1,2", F_ALIAS, v6 }, /* andcc rs1,rs2,%g0 */ +{ "btst", F3(2, 0x11, 1), F3(~2, ~0x11, ~1)|RD_G0, "i,1", F_ALIAS, v6 }, /* andcc rs1,i,%g0 */ + +{ "neg", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|RS1_G0|ASI(~0), "2,d", F_ALIAS, v6 }, /* sub %g0,rs2,rd */ +{ "neg", F3(2, 0x04, 0), F3(~2, ~0x04, ~0)|RS1_G0|ASI(~0), "O", F_ALIAS, v6 }, /* sub %g0,rd,rd */ + +{ "add", F3(2, 0x00, 0), F3(~2, ~0x00, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "add", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "1,i,d", 0, v6 }, +{ "add", F3(2, 0x00, 1), F3(~2, ~0x00, ~1), "i,1,d", 0, v6 }, +{ "addcc", F3(2, 0x10, 0), F3(~2, ~0x10, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "addcc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "1,i,d", 0, v6 }, +{ "addcc", F3(2, 0x10, 1), F3(~2, ~0x10, ~1), "i,1,d", 0, v6 }, + +{ "addx", F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, +{ "addx", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "1,i,d", 0, v6notv9 }, +{ "addx", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "i,1,d", 0, v6notv9 }, +{ "addc", F3(2, 0x08, 0), F3(~2, ~0x08, ~0)|ASI(~0), "1,2,d", 0, v9 }, +{ "addc", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "1,i,d", 0, v9 }, +{ "addc", F3(2, 0x08, 1), F3(~2, ~0x08, ~1), "i,1,d", 0, v9 }, + +{ "addxcc", F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0), "1,2,d", 0, v6notv9 }, +{ "addxcc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "1,i,d", 0, v6notv9 }, +{ "addxcc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "i,1,d", 0, v6notv9 }, +{ "addccc", F3(2, 0x18, 0), F3(~2, ~0x18, ~0)|ASI(~0), "1,2,d", 0, v9 }, +{ "addccc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "1,i,d", 0, v9 }, +{ "addccc", F3(2, 0x18, 1), F3(~2, ~0x18, ~1), "i,1,d", 0, v9 }, + +{ "smul", F3(2, 0x0b, 0), F3(~2, ~0x0b, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "smul", F3(2, 0x0b, 1), F3(~2, ~0x0b, ~1), "1,i,d", 0, v8 }, +{ "smul", F3(2, 0x0b, 1), F3(~2, ~0x0b, ~1), "i,1,d", 0, v8 }, +{ "smulcc", F3(2, 0x1b, 0), F3(~2, ~0x1b, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "smulcc", F3(2, 0x1b, 1), F3(~2, ~0x1b, ~1), "1,i,d", 0, v8 }, +{ "smulcc", F3(2, 0x1b, 1), F3(~2, ~0x1b, ~1), "i,1,d", 0, v8 }, +{ "umul", F3(2, 0x0a, 0), F3(~2, ~0x0a, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "umul", F3(2, 0x0a, 1), F3(~2, ~0x0a, ~1), "1,i,d", 0, v8 }, +{ "umul", F3(2, 0x0a, 1), F3(~2, ~0x0a, ~1), "i,1,d", 0, v8 }, +{ "umulcc", F3(2, 0x1a, 0), F3(~2, ~0x1a, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "umulcc", F3(2, 0x1a, 1), F3(~2, ~0x1a, ~1), "1,i,d", 0, v8 }, +{ "umulcc", F3(2, 0x1a, 1), F3(~2, ~0x1a, ~1), "i,1,d", 0, v8 }, +{ "sdiv", F3(2, 0x0f, 0), F3(~2, ~0x0f, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "sdiv", F3(2, 0x0f, 1), F3(~2, ~0x0f, ~1), "1,i,d", 0, v8 }, +{ "sdiv", F3(2, 0x0f, 1), F3(~2, ~0x0f, ~1), "i,1,d", 0, v8 }, +{ "sdivcc", F3(2, 0x1f, 0), F3(~2, ~0x1f, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "sdivcc", F3(2, 0x1f, 1), F3(~2, ~0x1f, ~1), "1,i,d", 0, v8 }, +{ "sdivcc", F3(2, 0x1f, 1), F3(~2, ~0x1f, ~1), "i,1,d", 0, v8 }, +{ "udiv", F3(2, 0x0e, 0), F3(~2, ~0x0e, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "udiv", F3(2, 0x0e, 1), F3(~2, ~0x0e, ~1), "1,i,d", 0, v8 }, +{ "udiv", F3(2, 0x0e, 1), F3(~2, ~0x0e, ~1), "i,1,d", 0, v8 }, +{ "udivcc", F3(2, 0x1e, 0), F3(~2, ~0x1e, ~0)|ASI(~0), "1,2,d", 0, v8 }, +{ "udivcc", F3(2, 0x1e, 1), F3(~2, ~0x1e, ~1), "1,i,d", 0, v8 }, +{ "udivcc", F3(2, 0x1e, 1), F3(~2, ~0x1e, ~1), "i,1,d", 0, v8 }, + +{ "mulx", F3(2, 0x09, 0), F3(~2, ~0x09, ~0)|ASI(~0), "1,2,d", 0, v9 }, +{ "mulx", F3(2, 0x09, 1), F3(~2, ~0x09, ~1), "1,i,d", 0, v9 }, +{ "sdivx", F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|ASI(~0), "1,2,d", 0, v9 }, +{ "sdivx", F3(2, 0x2d, 1), F3(~2, ~0x2d, ~1), "1,i,d", 0, v9 }, +{ "udivx", F3(2, 0x0d, 0), F3(~2, ~0x0d, ~0)|ASI(~0), "1,2,d", 0, v9 }, +{ "udivx", F3(2, 0x0d, 1), F3(~2, ~0x0d, ~1), "1,i,d", 0, v9 }, + +{ "call", F1(0x1), F1(~0x1), "L", F_JSR|F_DELAYED, v6 }, +{ "call", F1(0x1), F1(~0x1), "L,#", F_JSR|F_DELAYED, v6 }, + +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI(~0), "1+2", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+rs2,%o7 */ +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI(~0), "1+2,#", F_JSR|F_DELAYED, v6 }, +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI_RS2(~0), "1", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+%g0,%o7 */ +{ "call", F3(2, 0x38, 0)|RD(0xf), F3(~2, ~0x38, ~0)|RD(~0xf)|ASI_RS2(~0), "1,#", F_JSR|F_DELAYED, v6 }, +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "1+i", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+i,%o7 */ +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "1+i,#", F_JSR|F_DELAYED, v6 }, +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "i+1", F_JSR|F_DELAYED, v6 }, /* jmpl i+rs1,%o7 */ +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf), "i+1,#", F_JSR|F_DELAYED, v6 }, +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|RS1_G0, "i", F_JSR|F_DELAYED, v6 }, /* jmpl %g0+i,%o7 */ +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|RS1_G0, "i,#", F_JSR|F_DELAYED, v6 }, +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|SIMM13(~0), "1", F_JSR|F_DELAYED, v6 }, /* jmpl rs1+0,%o7 */ +{ "call", F3(2, 0x38, 1)|RD(0xf), F3(~2, ~0x38, ~1)|RD(~0xf)|SIMM13(~0), "1,#", F_JSR|F_DELAYED, v6 }, + + +/* Conditional instructions. + + Because this part of the table was such a mess earlier, I have + macrofied it so that all the branches and traps are generated from + a single-line description of each condition value. John Gilmore. */ + +/* Define branches -- one annulled, one without, etc. */ +#define br(opcode, mask, lose, flags) \ + { opcode, (mask)|ANNUL, (lose), ",a l", (flags), v6 }, \ + { opcode, (mask) , (lose)|ANNUL, "l", (flags), v6 } + +#define brx(opcode, mask, lose, flags) /* v9 */ \ + { opcode, (mask)|(2<<20)|BPRED, ANNUL|(lose), "Z,G", (flags), v9 }, \ + { opcode, (mask)|(2<<20)|BPRED, ANNUL|(lose), ",T Z,G", (flags), v9 }, \ + { opcode, (mask)|(2<<20)|BPRED|ANNUL, (lose), ",a Z,G", (flags), v9 }, \ + { opcode, (mask)|(2<<20)|BPRED|ANNUL, (lose), ",a,T Z,G", (flags), v9 }, \ + { opcode, (mask)|(2<<20), ANNUL|BPRED|(lose), ",N Z,G", (flags), v9 }, \ + { opcode, (mask)|(2<<20)|ANNUL, BPRED|(lose), ",a,N Z,G", (flags), v9 }, \ + { opcode, (mask)|BPRED, ANNUL|(lose)|(2<<20), "z,G", (flags), v9 }, \ + { opcode, (mask)|BPRED, ANNUL|(lose)|(2<<20), ",T z,G", (flags), v9 }, \ + { opcode, (mask)|BPRED|ANNUL, (lose)|(2<<20), ",a z,G", (flags), v9 }, \ + { opcode, (mask)|BPRED|ANNUL, (lose)|(2<<20), ",a,T z,G", (flags), v9 }, \ + { opcode, (mask), ANNUL|BPRED|(lose)|(2<<20), ",N z,G", (flags), v9 }, \ + { opcode, (mask)|ANNUL, BPRED|(lose)|(2<<20), ",a,N z,G", (flags), v9 } + +/* Define four traps: reg+reg, reg + immediate, immediate alone, reg alone. */ +#define tr(opcode, mask, lose, flags) \ + { opcode, (mask)|(2<<11)|IMMED, (lose)|RS1_G0, "Z,i", (flags), v9 }, /* %g0 + imm */ \ + { opcode, (mask)|(2<<11)|IMMED, (lose), "Z,1+i", (flags), v9 }, /* rs1 + imm */ \ + { opcode, (mask)|(2<<11), IMMED|(lose), "Z,1+2", (flags), v9 }, /* rs1 + rs2 */ \ + { opcode, (mask)|(2<<11), IMMED|(lose)|RS2_G0, "Z,1", (flags), v9 }, /* rs1 + %g0 */ \ + { opcode, (mask)|IMMED, (lose)|RS1_G0, "z,i", (flags)|F_ALIAS, v9 }, /* %g0 + imm */ \ + { opcode, (mask)|IMMED, (lose), "z,1+i", (flags)|F_ALIAS, v9 }, /* rs1 + imm */ \ + { opcode, (mask), IMMED|(lose), "z,1+2", (flags)|F_ALIAS, v9 }, /* rs1 + rs2 */ \ + { opcode, (mask), IMMED|(lose)|RS2_G0, "z,1", (flags)|F_ALIAS, v9 }, /* rs1 + %g0 */ \ + { opcode, (mask)|IMMED, (lose)|RS1_G0, "i", (flags), v6 }, /* %g0 + imm */ \ + { opcode, (mask)|IMMED, (lose), "1+i", (flags), v6 }, /* rs1 + imm */ \ + { opcode, (mask), IMMED|(lose), "1+2", (flags), v6 }, /* rs1 + rs2 */ \ + { opcode, (mask), IMMED|(lose)|RS2_G0, "1", (flags), v6 } /* rs1 + %g0 */ + +/* v9: We must put `brx' before `br', to ensure that we never match something + v9: against an expression unless it is an expression. Otherwise, we end + v9: up with undefined symbol tables entries, because they get added, but + v9: are not deleted if the pattern fails to match. */ + +/* Define both branches and traps based on condition mask */ +#define cond(bop, top, mask, flags) \ + brx(bop, F2(0, 1)|(mask), F2(~0, ~1)|((~mask)&COND(~0)), F_DELAYED|(flags)), /* v9 */ \ + br(bop, F2(0, 2)|(mask), F2(~0, ~2)|((~mask)&COND(~0)), F_DELAYED|(flags)), \ + tr(top, F3(2, 0x3a, 0)|(mask), F3(~2, ~0x3a, 0)|((~mask)&COND(~0)), ((flags) & ~(F_UNBR|F_CONDBR))) + +/* Define all the conditions, all the branches, all the traps. */ + +/* Standard branch, trap mnemonics */ +cond ("b", "ta", CONDA, F_UNBR), +/* Alternative form (just for assembly, not for disassembly) */ +cond ("ba", "t", CONDA, F_UNBR|F_ALIAS), + +cond ("bcc", "tcc", CONDCC, F_CONDBR), +cond ("bcs", "tcs", CONDCS, F_CONDBR), +cond ("be", "te", CONDE, F_CONDBR), +cond ("beq", "teq", CONDE, F_CONDBR|F_ALIAS), +cond ("bg", "tg", CONDG, F_CONDBR), +cond ("bgt", "tgt", CONDG, F_CONDBR|F_ALIAS), +cond ("bge", "tge", CONDGE, F_CONDBR), +cond ("bgeu", "tgeu", CONDGEU, F_CONDBR|F_ALIAS), /* for cc */ +cond ("bgu", "tgu", CONDGU, F_CONDBR), +cond ("bl", "tl", CONDL, F_CONDBR), +cond ("blt", "tlt", CONDL, F_CONDBR|F_ALIAS), +cond ("ble", "tle", CONDLE, F_CONDBR), +cond ("bleu", "tleu", CONDLEU, F_CONDBR), +cond ("blu", "tlu", CONDLU, F_CONDBR|F_ALIAS), /* for cs */ +cond ("bn", "tn", CONDN, F_CONDBR), +cond ("bne", "tne", CONDNE, F_CONDBR), +cond ("bneg", "tneg", CONDNEG, F_CONDBR), +cond ("bnz", "tnz", CONDNZ, F_CONDBR|F_ALIAS), /* for ne */ +cond ("bpos", "tpos", CONDPOS, F_CONDBR), +cond ("bvc", "tvc", CONDVC, F_CONDBR), +cond ("bvs", "tvs", CONDVS, F_CONDBR), +cond ("bz", "tz", CONDZ, F_CONDBR|F_ALIAS), /* for e */ + +#undef cond +#undef br +#undef brr /* v9 */ +#undef tr + +#define brr(opcode, mask, lose, flags) /* v9 */ \ + { opcode, (mask)|BPRED, ANNUL|(lose), "1,k", F_DELAYED|(flags), v9 }, \ + { opcode, (mask)|BPRED, ANNUL|(lose), ",T 1,k", F_DELAYED|(flags), v9 }, \ + { opcode, (mask)|BPRED|ANNUL, (lose), ",a 1,k", F_DELAYED|(flags), v9 }, \ + { opcode, (mask)|BPRED|ANNUL, (lose), ",a,T 1,k", F_DELAYED|(flags), v9 }, \ + { opcode, (mask), ANNUL|BPRED|(lose), ",N 1,k", F_DELAYED|(flags), v9 }, \ + { opcode, (mask)|ANNUL, BPRED|(lose), ",a,N 1,k", F_DELAYED|(flags), v9 } + +#define condr(bop, mask, flags) /* v9 */ \ + brr(bop, F2(0, 3)|COND(mask), F2(~0, ~3)|COND(~(mask)), (flags)) /* v9 */ + +/* v9 */ condr("brnz", 0x5, F_CONDBR), +/* v9 */ condr("brz", 0x1, F_CONDBR), +/* v9 */ condr("brgez", 0x7, F_CONDBR), +/* v9 */ condr("brlz", 0x3, F_CONDBR), +/* v9 */ condr("brlez", 0x2, F_CONDBR), +/* v9 */ condr("brgz", 0x6, F_CONDBR), + +#undef condr /* v9 */ +#undef brr /* v9 */ + +#define movr(opcode, mask, flags) /* v9 */ \ + { opcode, F3(2, 0x2f, 0)|RCOND(mask), F3(~2, ~0x2f, ~0)|RCOND(~(mask)), "1,2,d", (flags), v9 }, \ + { opcode, F3(2, 0x2f, 1)|RCOND(mask), F3(~2, ~0x2f, ~1)|RCOND(~(mask)), "1,j,d", (flags), v9 } + +#define fmrrs(opcode, mask, lose, flags) /* v9 */ \ + { opcode, (mask), (lose), "1,f,g", (flags) | F_FLOAT, v9 } +#define fmrrd(opcode, mask, lose, flags) /* v9 */ \ + { opcode, (mask), (lose), "1,B,H", (flags) | F_FLOAT, v9 } +#define fmrrq(opcode, mask, lose, flags) /* v9 */ \ + { opcode, (mask), (lose), "1,R,J", (flags) | F_FLOAT, v9 } + +#define fmovrs(mop, mask, flags) /* v9 */ \ + fmrrs(mop, F3(2, 0x35, 0)|OPF_LOW5(5)|RCOND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~5)|RCOND(~(mask)), (flags)) /* v9 */ +#define fmovrd(mop, mask, flags) /* v9 */ \ + fmrrd(mop, F3(2, 0x35, 0)|OPF_LOW5(6)|RCOND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~6)|RCOND(~(mask)), (flags)) /* v9 */ +#define fmovrq(mop, mask, flags) /* v9 */ \ + fmrrq(mop, F3(2, 0x35, 0)|OPF_LOW5(7)|RCOND(mask), F3(~2, ~0x35, 0)|OPF_LOW5(~7)|RCOND(~(mask)), (flags)) /* v9 */ + +/* v9 */ movr("movrne", 0x5, 0), +/* v9 */ movr("movre", 0x1, 0), +/* v9 */ movr("movrgez", 0x7, 0), +/* v9 */ movr("movrlz", 0x3, 0), +/* v9 */ movr("movrlez", 0x2, 0), +/* v9 */ movr("movrgz", 0x6, 0), +/* v9 */ movr("movrnz", 0x5, F_ALIAS), +/* v9 */ movr("movrz", 0x1, F_ALIAS), + +/* v9 */ fmovrs("fmovrsne", 0x5, 0), +/* v9 */ fmovrs("fmovrse", 0x1, 0), +/* v9 */ fmovrs("fmovrsgez", 0x7, 0), +/* v9 */ fmovrs("fmovrslz", 0x3, 0), +/* v9 */ fmovrs("fmovrslez", 0x2, 0), +/* v9 */ fmovrs("fmovrsgz", 0x6, 0), +/* v9 */ fmovrs("fmovrsnz", 0x5, F_ALIAS), +/* v9 */ fmovrs("fmovrsz", 0x1, F_ALIAS), + +/* v9 */ fmovrd("fmovrdne", 0x5, 0), +/* v9 */ fmovrd("fmovrde", 0x1, 0), +/* v9 */ fmovrd("fmovrdgez", 0x7, 0), +/* v9 */ fmovrd("fmovrdlz", 0x3, 0), +/* v9 */ fmovrd("fmovrdlez", 0x2, 0), +/* v9 */ fmovrd("fmovrdgz", 0x6, 0), +/* v9 */ fmovrd("fmovrdnz", 0x5, F_ALIAS), +/* v9 */ fmovrd("fmovrdz", 0x1, F_ALIAS), + +/* v9 */ fmovrq("fmovrqne", 0x5, 0), +/* v9 */ fmovrq("fmovrqe", 0x1, 0), +/* v9 */ fmovrq("fmovrqgez", 0x7, 0), +/* v9 */ fmovrq("fmovrqlz", 0x3, 0), +/* v9 */ fmovrq("fmovrqlez", 0x2, 0), +/* v9 */ fmovrq("fmovrqgz", 0x6, 0), +/* v9 */ fmovrq("fmovrqnz", 0x5, F_ALIAS), +/* v9 */ fmovrq("fmovrqz", 0x1, F_ALIAS), + +#undef movr /* v9 */ +#undef fmovr /* v9 */ +#undef fmrr /* v9 */ + +#define movicc(opcode, cond, flags) /* v9 */ \ + { opcode, F3(2, 0x2c, 0)|MCOND(cond,1)|ICC, F3(~2, ~0x2c, ~0)|MCOND(~cond,~1)|XCC|(1<<11), "z,2,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 1)|MCOND(cond,1)|ICC, F3(~2, ~0x2c, ~1)|MCOND(~cond,~1)|XCC|(1<<11), "z,I,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 0)|MCOND(cond,1)|XCC, F3(~2, ~0x2c, ~0)|MCOND(~cond,~1)|(1<<11), "Z,2,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 1)|MCOND(cond,1)|XCC, F3(~2, ~0x2c, ~1)|MCOND(~cond,~1)|(1<<11), "Z,I,d", flags, v9 } + +#define movfcc(opcode, fcond, flags) /* v9 */ \ + { opcode, F3(2, 0x2c, 0)|FCC(0)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~0)|F3(~2, ~0x2c, ~0), "6,2,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 1)|FCC(0)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~0)|F3(~2, ~0x2c, ~1), "6,I,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 0)|FCC(1)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~1)|F3(~2, ~0x2c, ~0), "7,2,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 1)|FCC(1)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~1)|F3(~2, ~0x2c, ~1), "7,I,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 0)|FCC(2)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~2)|F3(~2, ~0x2c, ~0), "8,2,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 1)|FCC(2)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~2)|F3(~2, ~0x2c, ~1), "8,I,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 0)|FCC(3)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~3)|F3(~2, ~0x2c, ~0), "9,2,d", flags, v9 }, \ + { opcode, F3(2, 0x2c, 1)|FCC(3)|MCOND(fcond,0), MCOND(~fcond,~0)|FCC(~3)|F3(~2, ~0x2c, ~1), "9,I,d", flags, v9 } + +#define movcc(opcode, cond, fcond, flags) /* v9 */ \ + movfcc (opcode, fcond, flags), /* v9 */ \ + movicc (opcode, cond, flags) /* v9 */ + +/* v9 */ movcc ("mova", CONDA, FCONDA, 0), +/* v9 */ movicc ("movcc", CONDCC, 0), +/* v9 */ movicc ("movgeu", CONDGEU, F_ALIAS), +/* v9 */ movicc ("movcs", CONDCS, 0), +/* v9 */ movicc ("movlu", CONDLU, F_ALIAS), +/* v9 */ movcc ("move", CONDE, FCONDE, 0), +/* v9 */ movcc ("movg", CONDG, FCONDG, 0), +/* v9 */ movcc ("movge", CONDGE, FCONDGE, 0), +/* v9 */ movicc ("movgu", CONDGU, 0), +/* v9 */ movcc ("movl", CONDL, FCONDL, 0), +/* v9 */ movcc ("movle", CONDLE, FCONDLE, 0), +/* v9 */ movicc ("movleu", CONDLEU, 0), +/* v9 */ movfcc ("movlg", FCONDLG, 0), +/* v9 */ movcc ("movn", CONDN, FCONDN, 0), +/* v9 */ movcc ("movne", CONDNE, FCONDNE, 0), +/* v9 */ movicc ("movneg", CONDNEG, 0), +/* v9 */ movcc ("movnz", CONDNZ, FCONDNZ, F_ALIAS), +/* v9 */ movfcc ("movo", FCONDO, 0), +/* v9 */ movicc ("movpos", CONDPOS, 0), +/* v9 */ movfcc ("movu", FCONDU, 0), +/* v9 */ movfcc ("movue", FCONDUE, 0), +/* v9 */ movfcc ("movug", FCONDUG, 0), +/* v9 */ movfcc ("movuge", FCONDUGE, 0), +/* v9 */ movfcc ("movul", FCONDUL, 0), +/* v9 */ movfcc ("movule", FCONDULE, 0), +/* v9 */ movicc ("movvc", CONDVC, 0), +/* v9 */ movicc ("movvs", CONDVS, 0), +/* v9 */ movcc ("movz", CONDZ, FCONDZ, F_ALIAS), + +#undef movicc /* v9 */ +#undef movfcc /* v9 */ +#undef movcc /* v9 */ + +#define FM_SF 1 /* v9 - values for fpsize */ +#define FM_DF 2 /* v9 */ +#define FM_QF 3 /* v9 */ + +#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \ +{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags, v9 }, \ +{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags, v9 } + +#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \ +{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \ +{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \ +{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \ +{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 } + +/* FIXME: use fmovicc/fmovfcc? */ /* v9 */ +#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \ +{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags | F_FLOAT, v9 }, \ +{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \ +{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags | F_FLOAT, v9 }, \ +{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \ +{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \ +{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 } + +#define fmovicc(suffix, cond, flags) /* v9 */ \ +fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags), \ +fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags), \ +fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags) + +#define fmovfcc(suffix, fcond, flags) /* v9 */ \ +fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags), \ +fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags), \ +fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags) + +#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \ +fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags), \ +fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags), \ +fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags) + +/* v9 */ fmovcc ("a", CONDA, FCONDA, 0), +/* v9 */ fmovicc ("cc", CONDCC, 0), +/* v9 */ fmovicc ("cs", CONDCS, 0), +/* v9 */ fmovcc ("e", CONDE, FCONDE, 0), +/* v9 */ fmovcc ("g", CONDG, FCONDG, 0), +/* v9 */ fmovcc ("ge", CONDGE, FCONDGE, 0), +/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS), +/* v9 */ fmovicc ("gu", CONDGU, 0), +/* v9 */ fmovcc ("l", CONDL, FCONDL, 0), +/* v9 */ fmovcc ("le", CONDLE, FCONDLE, 0), +/* v9 */ fmovicc ("leu", CONDLEU, 0), +/* v9 */ fmovfcc ("lg", FCONDLG, 0), +/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS), +/* v9 */ fmovcc ("n", CONDN, FCONDN, 0), +/* v9 */ fmovcc ("ne", CONDNE, FCONDNE, 0), +/* v9 */ fmovicc ("neg", CONDNEG, 0), +/* v9 */ fmovcc ("nz", CONDNZ, FCONDNZ, F_ALIAS), +/* v9 */ fmovfcc ("o", FCONDO, 0), +/* v9 */ fmovicc ("pos", CONDPOS, 0), +/* v9 */ fmovfcc ("u", FCONDU, 0), +/* v9 */ fmovfcc ("ue", FCONDUE, 0), +/* v9 */ fmovfcc ("ug", FCONDUG, 0), +/* v9 */ fmovfcc ("uge", FCONDUGE, 0), +/* v9 */ fmovfcc ("ul", FCONDUL, 0), +/* v9 */ fmovfcc ("ule", FCONDULE, 0), +/* v9 */ fmovicc ("vc", CONDVC, 0), +/* v9 */ fmovicc ("vs", CONDVS, 0), +/* v9 */ fmovcc ("z", CONDZ, FCONDZ, F_ALIAS), + +#undef fmoviccx /* v9 */ +#undef fmovfccx /* v9 */ +#undef fmovccx /* v9 */ +#undef fmovicc /* v9 */ +#undef fmovfcc /* v9 */ +#undef fmovcc /* v9 */ +#undef FM_DF /* v9 */ +#undef FM_QF /* v9 */ +#undef FM_SF /* v9 */ + +/* Coprocessor branches. */ +#define CBR(opcode, mask, lose, flags, arch) \ + { opcode, (mask), ANNUL | (lose), "l", flags | F_DELAYED, arch }, \ + { opcode, (mask) | ANNUL, (lose), ",a l", flags | F_DELAYED, arch } + +/* Floating point branches. */ +#define FBR(opcode, mask, lose, flags) \ + { opcode, (mask), ANNUL | (lose), "l", flags | F_DELAYED | F_FBR, v6 }, \ + { opcode, (mask) | ANNUL, (lose), ",a l", flags | F_DELAYED | F_FBR, v6 } + +/* V9 extended floating point branches. */ +#define FBRX(opcode, mask, lose, flags) /* v9 */ \ + { opcode, FBFCC(0)|(mask)|BPRED, ANNUL|FBFCC(~0)|(lose), "6,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(0)|(mask)|BPRED, ANNUL|FBFCC(~0)|(lose), ",T 6,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(0)|(mask)|BPRED|ANNUL, FBFCC(~0)|(lose), ",a 6,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(0)|(mask)|BPRED|ANNUL, FBFCC(~0)|(lose), ",a,T 6,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(0)|(mask), ANNUL|BPRED|FBFCC(~0)|(lose), ",N 6,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(0)|(mask)|ANNUL, BPRED|FBFCC(~0)|(lose), ",a,N 6,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(1)|(mask)|BPRED, ANNUL|FBFCC(~1)|(lose), "7,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(1)|(mask)|BPRED, ANNUL|FBFCC(~1)|(lose), ",T 7,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(1)|(mask)|BPRED|ANNUL, FBFCC(~1)|(lose), ",a 7,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(1)|(mask)|BPRED|ANNUL, FBFCC(~1)|(lose), ",a,T 7,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(1)|(mask), ANNUL|BPRED|FBFCC(~1)|(lose), ",N 7,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(1)|(mask)|ANNUL, BPRED|FBFCC(~1)|(lose), ",a,N 7,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(2)|(mask)|BPRED, ANNUL|FBFCC(~2)|(lose), "8,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(2)|(mask)|BPRED, ANNUL|FBFCC(~2)|(lose), ",T 8,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(2)|(mask)|BPRED|ANNUL, FBFCC(~2)|(lose), ",a 8,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(2)|(mask)|BPRED|ANNUL, FBFCC(~2)|(lose), ",a,T 8,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(2)|(mask), ANNUL|BPRED|FBFCC(~2)|(lose), ",N 8,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(2)|(mask)|ANNUL, BPRED|FBFCC(~2)|(lose), ",a,N 8,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(3)|(mask)|BPRED, ANNUL|FBFCC(~3)|(lose), "9,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(3)|(mask)|BPRED, ANNUL|FBFCC(~3)|(lose), ",T 9,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(3)|(mask)|BPRED|ANNUL, FBFCC(~3)|(lose), ",a 9,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(3)|(mask)|BPRED|ANNUL, FBFCC(~3)|(lose), ",a,T 9,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(3)|(mask), ANNUL|BPRED|FBFCC(~3)|(lose), ",N 9,G", flags|F_DELAYED|F_FBR, v9 }, \ + { opcode, FBFCC(3)|(mask)|ANNUL, BPRED|FBFCC(~3)|(lose), ",a,N 9,G", flags|F_DELAYED|F_FBR, v9 } + +/* v9: We must put `FBRX' before `FBR', to ensure that we never match + v9: something against an expression unless it is an expression. Otherwise, + v9: we end up with undefined symbol tables entries, because they get added, + v9: but are not deleted if the pattern fails to match. */ + +#define CONDFC(fop, cop, mask, flags) \ + FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \ + FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags), \ + CBR(cop, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask)), flags, v6notlet) + +#define CONDFCL(fop, cop, mask, flags) \ + FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \ + FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags), \ + CBR(cop, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask)), flags, v6) + +#define CONDF(fop, mask, flags) \ + FBRX(fop, F2(0, 5)|COND(mask), F2(~0, ~5)|COND(~(mask)), flags), /* v9 */ \ + FBR(fop, F2(0, 6)|COND(mask), F2(~0, ~6)|COND(~(mask)), flags) + +CONDFC ("fb", "cb", 0x8, F_UNBR), +CONDFCL ("fba", "cba", 0x8, F_UNBR|F_ALIAS), +CONDFC ("fbe", "cb0", 0x9, F_CONDBR), +CONDF ("fbz", 0x9, F_CONDBR|F_ALIAS), +CONDFC ("fbg", "cb2", 0x6, F_CONDBR), +CONDFC ("fbge", "cb02", 0xb, F_CONDBR), +CONDFC ("fbl", "cb1", 0x4, F_CONDBR), +CONDFC ("fble", "cb01", 0xd, F_CONDBR), +CONDFC ("fblg", "cb12", 0x2, F_CONDBR), +CONDFCL ("fbn", "cbn", 0x0, F_UNBR), +CONDFC ("fbne", "cb123", 0x1, F_CONDBR), +CONDF ("fbnz", 0x1, F_CONDBR|F_ALIAS), +CONDFC ("fbo", "cb012", 0xf, F_CONDBR), +CONDFC ("fbu", "cb3", 0x7, F_CONDBR), +CONDFC ("fbue", "cb03", 0xa, F_CONDBR), +CONDFC ("fbug", "cb23", 0x5, F_CONDBR), +CONDFC ("fbuge", "cb023", 0xc, F_CONDBR), +CONDFC ("fbul", "cb13", 0x3, F_CONDBR), +CONDFC ("fbule", "cb013", 0xe, F_CONDBR), + +#undef CONDFC +#undef CONDFCL +#undef CONDF +#undef CBR +#undef FBR +#undef FBRX /* v9 */ + +{ "jmp", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI(~0), "1+2", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+rs2,%g0 */ +{ "jmp", F3(2, 0x38, 0), F3(~2, ~0x38, ~0)|RD_G0|ASI_RS2(~0), "1", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+%g0,%g0 */ +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0, "1+i", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+i,%g0 */ +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0, "i+1", F_UNBR|F_DELAYED, v6 }, /* jmpl i+rs1,%g0 */ +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0|RS1_G0, "i", F_UNBR|F_DELAYED, v6 }, /* jmpl %g0+i,%g0 */ +{ "jmp", F3(2, 0x38, 1), F3(~2, ~0x38, ~1)|RD_G0|SIMM13(~0), "1", F_UNBR|F_DELAYED, v6 }, /* jmpl rs1+0,%g0 */ + +{ "nop", F2(0, 4), 0xfeffffff, "", 0, v6 }, /* sethi 0, %g0 */ + +{ "set", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v6 }, +{ "setuw", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v9 }, +{ "setsw", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,d", F_ALIAS, v9 }, +{ "setx", F2(0x0, 0x4), F2(~0x0, ~0x4), "S0,1,d", F_ALIAS, v9 }, + +{ "sethi", F2(0x0, 0x4), F2(~0x0, ~0x4), "h,d", 0, v6 }, + +{ "taddcc", F3(2, 0x20, 0), F3(~2, ~0x20, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "taddcc", F3(2, 0x20, 1), F3(~2, ~0x20, ~1), "1,i,d", 0, v6 }, +{ "taddcc", F3(2, 0x20, 1), F3(~2, ~0x20, ~1), "i,1,d", 0, v6 }, +{ "taddcctv", F3(2, 0x22, 0), F3(~2, ~0x22, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "taddcctv", F3(2, 0x22, 1), F3(~2, ~0x22, ~1), "1,i,d", 0, v6 }, +{ "taddcctv", F3(2, 0x22, 1), F3(~2, ~0x22, ~1), "i,1,d", 0, v6 }, + +{ "tsubcc", F3(2, 0x21, 0), F3(~2, ~0x21, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "tsubcc", F3(2, 0x21, 1), F3(~2, ~0x21, ~1), "1,i,d", 0, v6 }, +{ "tsubcctv", F3(2, 0x23, 0), F3(~2, ~0x23, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "tsubcctv", F3(2, 0x23, 1), F3(~2, ~0x23, ~1), "1,i,d", 0, v6 }, + +{ "unimp", F2(0x0, 0x0), 0xffc00000, "n", 0, v6notv9 }, +{ "illtrap", F2(0, 0), F2(~0, ~0)|RD_G0, "n", 0, v9 }, + +/* This *is* a commutative instruction. */ +{ "xnor", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "xnor", F3(2, 0x07, 1), F3(~2, ~0x07, ~1), "1,i,d", 0, v6 }, +{ "xnor", F3(2, 0x07, 1), F3(~2, ~0x07, ~1), "i,1,d", 0, v6 }, +/* This *is* a commutative instruction. */ +{ "xnorcc", F3(2, 0x17, 0), F3(~2, ~0x17, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "xnorcc", F3(2, 0x17, 1), F3(~2, ~0x17, ~1), "1,i,d", 0, v6 }, +{ "xnorcc", F3(2, 0x17, 1), F3(~2, ~0x17, ~1), "i,1,d", 0, v6 }, +{ "xor", F3(2, 0x03, 0), F3(~2, ~0x03, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "xor", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "1,i,d", 0, v6 }, +{ "xor", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "i,1,d", 0, v6 }, +{ "xorcc", F3(2, 0x13, 0), F3(~2, ~0x13, ~0)|ASI(~0), "1,2,d", 0, v6 }, +{ "xorcc", F3(2, 0x13, 1), F3(~2, ~0x13, ~1), "1,i,d", 0, v6 }, +{ "xorcc", F3(2, 0x13, 1), F3(~2, ~0x13, ~1), "i,1,d", 0, v6 }, + +{ "not", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "1,d", F_ALIAS, v6 }, /* xnor rs1,%0,rd */ +{ "not", F3(2, 0x07, 0), F3(~2, ~0x07, ~0)|ASI(~0), "r", F_ALIAS, v6 }, /* xnor rd,%0,rd */ + +{ "btog", F3(2, 0x03, 0), F3(~2, ~0x03, ~0)|ASI(~0), "2,r", F_ALIAS, v6 }, /* xor rd,rs2,rd */ +{ "btog", F3(2, 0x03, 1), F3(~2, ~0x03, ~1), "i,r", F_ALIAS, v6 }, /* xor rd,i,rd */ + +/* FPop1 and FPop2 are not instructions. Don't accept them. */ + +{ "fdtoi", F3F(2, 0x34, 0x0d2), F3F(~2, ~0x34, ~0x0d2)|RS1_G0, "B,g", F_FLOAT, v6 }, +{ "fstoi", F3F(2, 0x34, 0x0d1), F3F(~2, ~0x34, ~0x0d1)|RS1_G0, "f,g", F_FLOAT, v6 }, +{ "fqtoi", F3F(2, 0x34, 0x0d3), F3F(~2, ~0x34, ~0x0d3)|RS1_G0, "R,g", F_FLOAT, v8 }, + +{ "fdtox", F3F(2, 0x34, 0x082), F3F(~2, ~0x34, ~0x082)|RS1_G0, "B,H", F_FLOAT, v9 }, +{ "fstox", F3F(2, 0x34, 0x081), F3F(~2, ~0x34, ~0x081)|RS1_G0, "f,H", F_FLOAT, v9 }, +{ "fqtox", F3F(2, 0x34, 0x083), F3F(~2, ~0x34, ~0x083)|RS1_G0, "R,H", F_FLOAT, v9 }, + +{ "fitod", F3F(2, 0x34, 0x0c8), F3F(~2, ~0x34, ~0x0c8)|RS1_G0, "f,H", F_FLOAT, v6 }, +{ "fitos", F3F(2, 0x34, 0x0c4), F3F(~2, ~0x34, ~0x0c4)|RS1_G0, "f,g", F_FLOAT, v6 }, +{ "fitoq", F3F(2, 0x34, 0x0cc), F3F(~2, ~0x34, ~0x0cc)|RS1_G0, "f,J", F_FLOAT, v8 }, + +{ "fxtod", F3F(2, 0x34, 0x088), F3F(~2, ~0x34, ~0x088)|RS1_G0, "B,H", F_FLOAT, v9 }, +{ "fxtos", F3F(2, 0x34, 0x084), F3F(~2, ~0x34, ~0x084)|RS1_G0, "B,g", F_FLOAT, v9 }, +{ "fxtoq", F3F(2, 0x34, 0x08c), F3F(~2, ~0x34, ~0x08c)|RS1_G0, "B,J", F_FLOAT, v9 }, + +{ "fdtoq", F3F(2, 0x34, 0x0ce), F3F(~2, ~0x34, ~0x0ce)|RS1_G0, "B,J", F_FLOAT, v8 }, +{ "fdtos", F3F(2, 0x34, 0x0c6), F3F(~2, ~0x34, ~0x0c6)|RS1_G0, "B,g", F_FLOAT, v6 }, +{ "fqtod", F3F(2, 0x34, 0x0cb), F3F(~2, ~0x34, ~0x0cb)|RS1_G0, "R,H", F_FLOAT, v8 }, +{ "fqtos", F3F(2, 0x34, 0x0c7), F3F(~2, ~0x34, ~0x0c7)|RS1_G0, "R,g", F_FLOAT, v8 }, +{ "fstod", F3F(2, 0x34, 0x0c9), F3F(~2, ~0x34, ~0x0c9)|RS1_G0, "f,H", F_FLOAT, v6 }, +{ "fstoq", F3F(2, 0x34, 0x0cd), F3F(~2, ~0x34, ~0x0cd)|RS1_G0, "f,J", F_FLOAT, v8 }, + +{ "fdivd", F3F(2, 0x34, 0x04e), F3F(~2, ~0x34, ~0x04e), "v,B,H", F_FLOAT, v6 }, +{ "fdivq", F3F(2, 0x34, 0x04f), F3F(~2, ~0x34, ~0x04f), "V,R,J", F_FLOAT, v8 }, +{ "fdivx", F3F(2, 0x34, 0x04f), F3F(~2, ~0x34, ~0x04f), "V,R,J", F_FLOAT|F_ALIAS, v8 }, +{ "fdivs", F3F(2, 0x34, 0x04d), F3F(~2, ~0x34, ~0x04d), "e,f,g", F_FLOAT, v6 }, +{ "fmuld", F3F(2, 0x34, 0x04a), F3F(~2, ~0x34, ~0x04a), "v,B,H", F_FLOAT, v6 }, +{ "fmulq", F3F(2, 0x34, 0x04b), F3F(~2, ~0x34, ~0x04b), "V,R,J", F_FLOAT, v8 }, +{ "fmulx", F3F(2, 0x34, 0x04b), F3F(~2, ~0x34, ~0x04b), "V,R,J", F_FLOAT|F_ALIAS, v8 }, +{ "fmuls", F3F(2, 0x34, 0x049), F3F(~2, ~0x34, ~0x049), "e,f,g", F_FLOAT, v6 }, + +{ "fdmulq", F3F(2, 0x34, 0x06e), F3F(~2, ~0x34, ~0x06e), "v,B,J", F_FLOAT, v8 }, +{ "fdmulx", F3F(2, 0x34, 0x06e), F3F(~2, ~0x34, ~0x06e), "v,B,J", F_FLOAT|F_ALIAS, v8 }, +{ "fsmuld", F3F(2, 0x34, 0x069), F3F(~2, ~0x34, ~0x069), "e,f,H", F_FLOAT, v8 }, + +{ "fsqrtd", F3F(2, 0x34, 0x02a), F3F(~2, ~0x34, ~0x02a)|RS1_G0, "B,H", F_FLOAT, v7 }, +{ "fsqrtq", F3F(2, 0x34, 0x02b), F3F(~2, ~0x34, ~0x02b)|RS1_G0, "R,J", F_FLOAT, v8 }, +{ "fsqrtx", F3F(2, 0x34, 0x02b), F3F(~2, ~0x34, ~0x02b)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v8 }, +{ "fsqrts", F3F(2, 0x34, 0x029), F3F(~2, ~0x34, ~0x029)|RS1_G0, "f,g", F_FLOAT, v7 }, + +{ "fabsd", F3F(2, 0x34, 0x00a), F3F(~2, ~0x34, ~0x00a)|RS1_G0, "B,H", F_FLOAT, v9 }, +{ "fabsq", F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", F_FLOAT, v9 }, +{ "fabsx", F3F(2, 0x34, 0x00b), F3F(~2, ~0x34, ~0x00b)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, +{ "fabss", F3F(2, 0x34, 0x009), F3F(~2, ~0x34, ~0x009)|RS1_G0, "f,g", F_FLOAT, v6 }, +{ "fmovd", F3F(2, 0x34, 0x002), F3F(~2, ~0x34, ~0x002)|RS1_G0, "B,H", F_FLOAT, v9 }, +{ "fmovq", F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", F_FLOAT, v9 }, +{ "fmovx", F3F(2, 0x34, 0x003), F3F(~2, ~0x34, ~0x003)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, +{ "fmovs", F3F(2, 0x34, 0x001), F3F(~2, ~0x34, ~0x001)|RS1_G0, "f,g", F_FLOAT, v6 }, +{ "fnegd", F3F(2, 0x34, 0x006), F3F(~2, ~0x34, ~0x006)|RS1_G0, "B,H", F_FLOAT, v9 }, +{ "fnegq", F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", F_FLOAT, v9 }, +{ "fnegx", F3F(2, 0x34, 0x007), F3F(~2, ~0x34, ~0x007)|RS1_G0, "R,J", F_FLOAT|F_ALIAS, v9 }, +{ "fnegs", F3F(2, 0x34, 0x005), F3F(~2, ~0x34, ~0x005)|RS1_G0, "f,g", F_FLOAT, v6 }, + +{ "faddd", F3F(2, 0x34, 0x042), F3F(~2, ~0x34, ~0x042), "v,B,H", F_FLOAT, v6 }, +{ "faddq", F3F(2, 0x34, 0x043), F3F(~2, ~0x34, ~0x043), "V,R,J", F_FLOAT, v8 }, +{ "faddx", F3F(2, 0x34, 0x043), F3F(~2, ~0x34, ~0x043), "V,R,J", F_FLOAT|F_ALIAS, v8 }, +{ "fadds", F3F(2, 0x34, 0x041), F3F(~2, ~0x34, ~0x041), "e,f,g", F_FLOAT, v6 }, +{ "fsubd", F3F(2, 0x34, 0x046), F3F(~2, ~0x34, ~0x046), "v,B,H", F_FLOAT, v6 }, +{ "fsubq", F3F(2, 0x34, 0x047), F3F(~2, ~0x34, ~0x047), "V,R,J", F_FLOAT, v8 }, +{ "fsubx", F3F(2, 0x34, 0x047), F3F(~2, ~0x34, ~0x047), "V,R,J", F_FLOAT|F_ALIAS, v8 }, +{ "fsubs", F3F(2, 0x34, 0x045), F3F(~2, ~0x34, ~0x045), "e,f,g", F_FLOAT, v6 }, + +#define CMPFCC(x) (((x)&0x3)<<25) + +{ "fcmpd", F3F(2, 0x35, 0x052), F3F(~2, ~0x35, ~0x052)|RD_G0, "v,B", F_FLOAT, v6 }, +{ "fcmpd", CMPFCC(0)|F3F(2, 0x35, 0x052), CMPFCC(~0)|F3F(~2, ~0x35, ~0x052), "6,v,B", F_FLOAT, v9 }, +{ "fcmpd", CMPFCC(1)|F3F(2, 0x35, 0x052), CMPFCC(~1)|F3F(~2, ~0x35, ~0x052), "7,v,B", F_FLOAT, v9 }, +{ "fcmpd", CMPFCC(2)|F3F(2, 0x35, 0x052), CMPFCC(~2)|F3F(~2, ~0x35, ~0x052), "8,v,B", F_FLOAT, v9 }, +{ "fcmpd", CMPFCC(3)|F3F(2, 0x35, 0x052), CMPFCC(~3)|F3F(~2, ~0x35, ~0x052), "9,v,B", F_FLOAT, v9 }, +{ "fcmped", F3F(2, 0x35, 0x056), F3F(~2, ~0x35, ~0x056)|RD_G0, "v,B", F_FLOAT, v6 }, +{ "fcmped", CMPFCC(0)|F3F(2, 0x35, 0x056), CMPFCC(~0)|F3F(~2, ~0x35, ~0x056), "6,v,B", F_FLOAT, v9 }, +{ "fcmped", CMPFCC(1)|F3F(2, 0x35, 0x056), CMPFCC(~1)|F3F(~2, ~0x35, ~0x056), "7,v,B", F_FLOAT, v9 }, +{ "fcmped", CMPFCC(2)|F3F(2, 0x35, 0x056), CMPFCC(~2)|F3F(~2, ~0x35, ~0x056), "8,v,B", F_FLOAT, v9 }, +{ "fcmped", CMPFCC(3)|F3F(2, 0x35, 0x056), CMPFCC(~3)|F3F(~2, ~0x35, ~0x056), "9,v,B", F_FLOAT, v9 }, +{ "fcmpq", F3F(2, 0x35, 0x053), F3F(~2, ~0x35, ~0x053)|RD_G0, "V,R", F_FLOAT, v8 }, +{ "fcmpq", CMPFCC(0)|F3F(2, 0x35, 0x053), CMPFCC(~0)|F3F(~2, ~0x35, ~0x053), "6,V,R", F_FLOAT, v9 }, +{ "fcmpq", CMPFCC(1)|F3F(2, 0x35, 0x053), CMPFCC(~1)|F3F(~2, ~0x35, ~0x053), "7,V,R", F_FLOAT, v9 }, +{ "fcmpq", CMPFCC(2)|F3F(2, 0x35, 0x053), CMPFCC(~2)|F3F(~2, ~0x35, ~0x053), "8,V,R", F_FLOAT, v9 }, +{ "fcmpq", CMPFCC(3)|F3F(2, 0x35, 0x053), CMPFCC(~3)|F3F(~2, ~0x35, ~0x053), "9,V,R", F_FLOAT, v9 }, +{ "fcmpeq", F3F(2, 0x35, 0x057), F3F(~2, ~0x35, ~0x057)|RD_G0, "V,R", F_FLOAT, v8 }, +{ "fcmpeq", CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057), "6,V,R", F_FLOAT, v9 }, +{ "fcmpeq", CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057), "7,V,R", F_FLOAT, v9 }, +{ "fcmpeq", CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057), "8,V,R", F_FLOAT, v9 }, +{ "fcmpeq", CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057), "9,V,R", F_FLOAT, v9 }, +{ "fcmpx", F3F(2, 0x35, 0x053), F3F(~2, ~0x35, ~0x053)|RD_G0, "V,R", F_FLOAT|F_ALIAS, v8 }, +{ "fcmpx", CMPFCC(0)|F3F(2, 0x35, 0x053), CMPFCC(~0)|F3F(~2, ~0x35, ~0x053), "6,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmpx", CMPFCC(1)|F3F(2, 0x35, 0x053), CMPFCC(~1)|F3F(~2, ~0x35, ~0x053), "7,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmpx", CMPFCC(2)|F3F(2, 0x35, 0x053), CMPFCC(~2)|F3F(~2, ~0x35, ~0x053), "8,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmpx", CMPFCC(3)|F3F(2, 0x35, 0x053), CMPFCC(~3)|F3F(~2, ~0x35, ~0x053), "9,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmpex", F3F(2, 0x35, 0x057), F3F(~2, ~0x35, ~0x057)|RD_G0, "V,R", F_FLOAT|F_ALIAS, v8 }, +{ "fcmpex", CMPFCC(0)|F3F(2, 0x35, 0x057), CMPFCC(~0)|F3F(~2, ~0x35, ~0x057), "6,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmpex", CMPFCC(1)|F3F(2, 0x35, 0x057), CMPFCC(~1)|F3F(~2, ~0x35, ~0x057), "7,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmpex", CMPFCC(2)|F3F(2, 0x35, 0x057), CMPFCC(~2)|F3F(~2, ~0x35, ~0x057), "8,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmpex", CMPFCC(3)|F3F(2, 0x35, 0x057), CMPFCC(~3)|F3F(~2, ~0x35, ~0x057), "9,V,R", F_FLOAT|F_ALIAS, v9 }, +{ "fcmps", F3F(2, 0x35, 0x051), F3F(~2, ~0x35, ~0x051)|RD_G0, "e,f", F_FLOAT, v6 }, +{ "fcmps", CMPFCC(0)|F3F(2, 0x35, 0x051), CMPFCC(~0)|F3F(~2, ~0x35, ~0x051), "6,e,f", F_FLOAT, v9 }, +{ "fcmps", CMPFCC(1)|F3F(2, 0x35, 0x051), CMPFCC(~1)|F3F(~2, ~0x35, ~0x051), "7,e,f", F_FLOAT, v9 }, +{ "fcmps", CMPFCC(2)|F3F(2, 0x35, 0x051), CMPFCC(~2)|F3F(~2, ~0x35, ~0x051), "8,e,f", F_FLOAT, v9 }, +{ "fcmps", CMPFCC(3)|F3F(2, 0x35, 0x051), CMPFCC(~3)|F3F(~2, ~0x35, ~0x051), "9,e,f", F_FLOAT, v9 }, +{ "fcmpes", F3F(2, 0x35, 0x055), F3F(~2, ~0x35, ~0x055)|RD_G0, "e,f", F_FLOAT, v6 }, +{ "fcmpes", CMPFCC(0)|F3F(2, 0x35, 0x055), CMPFCC(~0)|F3F(~2, ~0x35, ~0x055), "6,e,f", F_FLOAT, v9 }, +{ "fcmpes", CMPFCC(1)|F3F(2, 0x35, 0x055), CMPFCC(~1)|F3F(~2, ~0x35, ~0x055), "7,e,f", F_FLOAT, v9 }, +{ "fcmpes", CMPFCC(2)|F3F(2, 0x35, 0x055), CMPFCC(~2)|F3F(~2, ~0x35, ~0x055), "8,e,f", F_FLOAT, v9 }, +{ "fcmpes", CMPFCC(3)|F3F(2, 0x35, 0x055), CMPFCC(~3)|F3F(~2, ~0x35, ~0x055), "9,e,f", F_FLOAT, v9 }, + +/* These Extended FPop (FIFO) instructions are new in the Fujitsu + MB86934, replacing the CPop instructions from v6 and later + processors. */ + +#define EFPOP1_2(name, op, args) { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op)|RS1_G0, args, 0, sparclite } +#define EFPOP1_3(name, op, args) { name, F3F(2, 0x36, op), F3F(~2, ~0x36, ~op), args, 0, sparclite } +#define EFPOP2_2(name, op, args) { name, F3F(2, 0x37, op), F3F(~2, ~0x37, ~op)|RD_G0, args, 0, sparclite } + +EFPOP1_2 ("efitod", 0x0c8, "f,H"), +EFPOP1_2 ("efitos", 0x0c4, "f,g"), +EFPOP1_2 ("efdtoi", 0x0d2, "B,g"), +EFPOP1_2 ("efstoi", 0x0d1, "f,g"), +EFPOP1_2 ("efstod", 0x0c9, "f,H"), +EFPOP1_2 ("efdtos", 0x0c6, "B,g"), +EFPOP1_2 ("efmovs", 0x001, "f,g"), +EFPOP1_2 ("efnegs", 0x005, "f,g"), +EFPOP1_2 ("efabss", 0x009, "f,g"), +EFPOP1_2 ("efsqrtd", 0x02a, "B,H"), +EFPOP1_2 ("efsqrts", 0x029, "f,g"), +EFPOP1_3 ("efaddd", 0x042, "v,B,H"), +EFPOP1_3 ("efadds", 0x041, "e,f,g"), +EFPOP1_3 ("efsubd", 0x046, "v,B,H"), +EFPOP1_3 ("efsubs", 0x045, "e,f,g"), +EFPOP1_3 ("efdivd", 0x04e, "v,B,H"), +EFPOP1_3 ("efdivs", 0x04d, "e,f,g"), +EFPOP1_3 ("efmuld", 0x04a, "v,B,H"), +EFPOP1_3 ("efmuls", 0x049, "e,f,g"), +EFPOP1_3 ("efsmuld", 0x069, "e,f,H"), +EFPOP2_2 ("efcmpd", 0x052, "v,B"), +EFPOP2_2 ("efcmped", 0x056, "v,B"), +EFPOP2_2 ("efcmps", 0x051, "e,f"), +EFPOP2_2 ("efcmpes", 0x055, "e,f"), + +#undef EFPOP1_2 +#undef EFPOP1_3 +#undef EFPOP2_2 + +/* These are marked F_ALIAS, so that they won't conflict with sparclite insns + present. Otherwise, the F_ALIAS flag is ignored. */ +{ "cpop1", F3(2, 0x36, 0), F3(~2, ~0x36, ~1), "[1+2],d", F_ALIAS, v6notv9 }, +{ "cpop2", F3(2, 0x37, 0), F3(~2, ~0x37, ~1), "[1+2],d", F_ALIAS, v6notv9 }, + +/* sparclet specific insns */ + +COMMUTEOP ("umac", 0x3e, sparclet), +COMMUTEOP ("smac", 0x3f, sparclet), +COMMUTEOP ("umacd", 0x2e, sparclet), +COMMUTEOP ("smacd", 0x2f, sparclet), +COMMUTEOP ("umuld", 0x09, sparclet), +COMMUTEOP ("smuld", 0x0d, sparclet), + +{ "shuffle", F3(2, 0x2d, 0), F3(~2, ~0x2d, ~0)|ASI(~0), "1,2,d", 0, sparclet }, +{ "shuffle", F3(2, 0x2d, 1), F3(~2, ~0x2d, ~1), "1,i,d", 0, sparclet }, + +/* The manual isn't completely accurate on these insns. The `rs2' field is + treated as being 6 bits to account for 6 bit immediates to cpush. It is + assumed that it is intended that bit 5 is 0 when rs2 contains a reg. */ +#define BIT5 (1<<5) +{ "crdcxt", F3(2, 0x36, 0)|SLCPOP(4), F3(~2, ~0x36, ~0)|SLCPOP(~4)|BIT5|RS2(~0), "U,d", 0, sparclet }, +{ "cwrcxt", F3(2, 0x36, 0)|SLCPOP(3), F3(~2, ~0x36, ~0)|SLCPOP(~3)|BIT5|RS2(~0), "1,u", 0, sparclet }, +{ "cpush", F3(2, 0x36, 0)|SLCPOP(0), F3(~2, ~0x36, ~0)|SLCPOP(~0)|BIT5|RD(~0), "1,2", 0, sparclet }, +{ "cpush", F3(2, 0x36, 1)|SLCPOP(0), F3(~2, ~0x36, ~1)|SLCPOP(~0)|RD(~0), "1,Y", 0, sparclet }, +{ "cpusha", F3(2, 0x36, 0)|SLCPOP(1), F3(~2, ~0x36, ~0)|SLCPOP(~1)|BIT5|RD(~0), "1,2", 0, sparclet }, +{ "cpusha", F3(2, 0x36, 1)|SLCPOP(1), F3(~2, ~0x36, ~1)|SLCPOP(~1)|RD(~0), "1,Y", 0, sparclet }, +{ "cpull", F3(2, 0x36, 0)|SLCPOP(2), F3(~2, ~0x36, ~0)|SLCPOP(~2)|BIT5|RS1(~0)|RS2(~0), "d", 0, sparclet }, +#undef BIT5 + +/* sparclet coprocessor branch insns */ +#define SLCBCC2(opcode, mask, lose) \ + { opcode, (mask), ANNUL|(lose), "l", F_DELAYED|F_CONDBR, sparclet }, \ + { opcode, (mask)|ANNUL, (lose), ",a l", F_DELAYED|F_CONDBR, sparclet } +#define SLCBCC(opcode, mask) \ + SLCBCC2(opcode, F2(0, 7)|COND(mask), F2(~0, ~7)|COND(~(mask))) + +/* cbn,cba can't be defined here because they're defined elsewhere and GAS + requires all mnemonics of the same name to be consecutive. */ +/*SLCBCC("cbn", 0), - already defined */ +SLCBCC("cbe", 1), +SLCBCC("cbf", 2), +SLCBCC("cbef", 3), +SLCBCC("cbr", 4), +SLCBCC("cber", 5), +SLCBCC("cbfr", 6), +SLCBCC("cbefr", 7), +/*SLCBCC("cba", 8), - already defined */ +SLCBCC("cbne", 9), +SLCBCC("cbnf", 10), +SLCBCC("cbnef", 11), +SLCBCC("cbnr", 12), +SLCBCC("cbner", 13), +SLCBCC("cbnfr", 14), +SLCBCC("cbnefr", 15), + +#undef SLCBCC2 +#undef SLCBCC + +{ "casa", F3(3, 0x3c, 0), F3(~3, ~0x3c, ~0), "[1]A,2,d", 0, v9 }, +{ "casa", F3(3, 0x3c, 1), F3(~3, ~0x3c, ~1), "[1]o,2,d", 0, v9 }, +{ "casxa", F3(3, 0x3e, 0), F3(~3, ~0x3e, ~0), "[1]A,2,d", 0, v9 }, +{ "casxa", F3(3, 0x3e, 1), F3(~3, ~0x3e, ~1), "[1]o,2,d", 0, v9 }, + +/* v9 synthetic insns */ +{ "iprefetch", F2(0, 1)|(2<<20)|BPRED, F2(~0, ~1)|(1<<20)|ANNUL|COND(~0), "G", 0, v9 }, /* bn,a,pt %xcc,label */ +{ "signx", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|ASI(~0)|RS2_G0, "1,d", F_ALIAS, v9 }, /* sra rs1,%g0,rd */ +{ "signx", F3(2, 0x27, 0), F3(~2, ~0x27, ~0)|(1<<12)|ASI(~0)|RS2_G0, "r", F_ALIAS, v9 }, /* sra rd,%g0,rd */ +{ "clruw", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0)|RS2_G0, "1,d", F_ALIAS, v9 }, /* srl rs1,%g0,rd */ +{ "clruw", F3(2, 0x26, 0), F3(~2, ~0x26, ~0)|(1<<12)|ASI(~0)|RS2_G0, "r", F_ALIAS, v9 }, /* srl rd,%g0,rd */ +{ "cas", F3(3, 0x3c, 0)|ASI(0x80), F3(~3, ~0x3c, ~0)|ASI(~0x80), "[1],2,d", F_ALIAS, v9 }, /* casa [rs1]ASI_P,rs2,rd */ +{ "casl", F3(3, 0x3c, 0)|ASI(0x88), F3(~3, ~0x3c, ~0)|ASI(~0x88), "[1],2,d", F_ALIAS, v9 }, /* casa [rs1]ASI_P_L,rs2,rd */ +{ "casx", F3(3, 0x3e, 0)|ASI(0x80), F3(~3, ~0x3e, ~0)|ASI(~0x80), "[1],2,d", F_ALIAS, v9 }, /* casxa [rs1]ASI_P,rs2,rd */ +{ "casxl", F3(3, 0x3e, 0)|ASI(0x88), F3(~3, ~0x3e, ~0)|ASI(~0x88), "[1],2,d", F_ALIAS, v9 }, /* casxa [rs1]ASI_P_L,rs2,rd */ + +/* Ultrasparc extensions */ +{ "shutdown", F3F(2, 0x36, 0x080), F3F(~2, ~0x36, ~0x080)|RD_G0|RS1_G0|RS2_G0, "", 0, v9a }, + +/* FIXME: Do we want to mark these as F_FLOAT, or something similar? */ +{ "fpadd16", F3F(2, 0x36, 0x050), F3F(~2, ~0x36, ~0x050), "v,B,H", 0, v9a }, +{ "fpadd16s", F3F(2, 0x36, 0x051), F3F(~2, ~0x36, ~0x051), "e,f,g", 0, v9a }, +{ "fpadd32", F3F(2, 0x36, 0x052), F3F(~2, ~0x36, ~0x052), "v,B,H", 0, v9a }, +{ "fpadd32s", F3F(2, 0x36, 0x053), F3F(~2, ~0x36, ~0x053), "e,f,g", 0, v9a }, +{ "fpsub16", F3F(2, 0x36, 0x054), F3F(~2, ~0x36, ~0x054), "v,B,H", 0, v9a }, +{ "fpsub16s", F3F(2, 0x36, 0x055), F3F(~2, ~0x36, ~0x055), "e,f,g", 0, v9a }, +{ "fpsub32", F3F(2, 0x36, 0x056), F3F(~2, ~0x36, ~0x056), "v,B,H", 0, v9a }, +{ "fpsub32s", F3F(2, 0x36, 0x057), F3F(~2, ~0x36, ~0x057), "e,f,g", 0, v9a }, + +{ "fpack32", F3F(2, 0x36, 0x03a), F3F(~2, ~0x36, ~0x03a), "v,B,H", 0, v9a }, +{ "fpack16", F3F(2, 0x36, 0x03b), F3F(~2, ~0x36, ~0x03b)|RS1_G0, "B,g", 0, v9a }, +{ "fpackfix", F3F(2, 0x36, 0x03d), F3F(~2, ~0x36, ~0x03d)|RS1_G0, "B,g", 0, v9a }, +{ "fexpand", F3F(2, 0x36, 0x04d), F3F(~2, ~0x36, ~0x04d)|RS1_G0, "f,H", 0, v9a }, +{ "fpmerge", F3F(2, 0x36, 0x04b), F3F(~2, ~0x36, ~0x04b), "e,f,H", 0, v9a }, + +/* Note that the mixing of 32/64 bit regs is intentional. */ +{ "fmul8x16", F3F(2, 0x36, 0x031), F3F(~2, ~0x36, ~0x031), "e,B,H", 0, v9a }, +{ "fmul8x16au", F3F(2, 0x36, 0x033), F3F(~2, ~0x36, ~0x033), "e,f,H", 0, v9a }, +{ "fmul8x16al", F3F(2, 0x36, 0x035), F3F(~2, ~0x36, ~0x035), "e,f,H", 0, v9a }, +{ "fmul8sux16", F3F(2, 0x36, 0x036), F3F(~2, ~0x36, ~0x036), "v,B,H", 0, v9a }, +{ "fmul8ulx16", F3F(2, 0x36, 0x037), F3F(~2, ~0x36, ~0x037), "v,B,H", 0, v9a }, +{ "fmuld8sux16", F3F(2, 0x36, 0x038), F3F(~2, ~0x36, ~0x038), "e,f,H", 0, v9a }, +{ "fmuld8ulx16", F3F(2, 0x36, 0x039), F3F(~2, ~0x36, ~0x039), "e,f,H", 0, v9a }, + +{ "alignaddr", F3F(2, 0x36, 0x018), F3F(~2, ~0x36, ~0x018), "1,2,d", 0, v9a }, +{ "alignaddrl", F3F(2, 0x36, 0x01a), F3F(~2, ~0x36, ~0x01a), "1,2,d", 0, v9a }, +{ "faligndata", F3F(2, 0x36, 0x048), F3F(~2, ~0x36, ~0x048), "v,B,H", 0, v9a }, + +{ "fzero", F3F(2, 0x36, 0x060), F3F(~2, ~0x36, ~0x060), "H", 0, v9a }, +{ "fzeros", F3F(2, 0x36, 0x061), F3F(~2, ~0x36, ~0x061), "g", 0, v9a }, +{ "fone", F3F(2, 0x36, 0x07e), F3F(~2, ~0x36, ~0x07e), "H", 0, v9a }, +{ "fones", F3F(2, 0x36, 0x07f), F3F(~2, ~0x36, ~0x07f), "g", 0, v9a }, +{ "fsrc1", F3F(2, 0x36, 0x074), F3F(~2, ~0x36, ~0x074), "v,H", 0, v9a }, +{ "fsrc1s", F3F(2, 0x36, 0x075), F3F(~2, ~0x36, ~0x075), "e,g", 0, v9a }, +{ "fsrc2", F3F(2, 0x36, 0x078), F3F(~2, ~0x36, ~0x078), "B,H", 0, v9a }, +{ "fsrc2s", F3F(2, 0x36, 0x079), F3F(~2, ~0x36, ~0x079), "f,g", 0, v9a }, +{ "fnot1", F3F(2, 0x36, 0x06a), F3F(~2, ~0x36, ~0x06a), "v,H", 0, v9a }, +{ "fnot1s", F3F(2, 0x36, 0x06b), F3F(~2, ~0x36, ~0x06b), "e,g", 0, v9a }, +{ "fnot2", F3F(2, 0x36, 0x066), F3F(~2, ~0x36, ~0x066), "B,H", 0, v9a }, +{ "fnot2s", F3F(2, 0x36, 0x067), F3F(~2, ~0x36, ~0x067), "f,g", 0, v9a }, +{ "for", F3F(2, 0x36, 0x07c), F3F(~2, ~0x36, ~0x07c), "v,B,H", 0, v9a }, +{ "fors", F3F(2, 0x36, 0x07d), F3F(~2, ~0x36, ~0x07d), "e,f,g", 0, v9a }, +{ "fnor", F3F(2, 0x36, 0x062), F3F(~2, ~0x36, ~0x062), "v,B,H", 0, v9a }, +{ "fnors", F3F(2, 0x36, 0x063), F3F(~2, ~0x36, ~0x063), "e,f,g", 0, v9a }, +{ "fand", F3F(2, 0x36, 0x070), F3F(~2, ~0x36, ~0x070), "v,B,H", 0, v9a }, +{ "fands", F3F(2, 0x36, 0x071), F3F(~2, ~0x36, ~0x071), "e,f,g", 0, v9a }, +{ "fnand", F3F(2, 0x36, 0x06e), F3F(~2, ~0x36, ~0x06e), "v,B,H", 0, v9a }, +{ "fnands", F3F(2, 0x36, 0x06f), F3F(~2, ~0x36, ~0x06f), "e,f,g", 0, v9a }, +{ "fxor", F3F(2, 0x36, 0x06c), F3F(~2, ~0x36, ~0x06c), "v,B,H", 0, v9a }, +{ "fxors", F3F(2, 0x36, 0x06d), F3F(~2, ~0x36, ~0x06d), "e,f,g", 0, v9a }, +{ "fxnor", F3F(2, 0x36, 0x072), F3F(~2, ~0x36, ~0x072), "v,B,H", 0, v9a }, +{ "fxnors", F3F(2, 0x36, 0x073), F3F(~2, ~0x36, ~0x073), "e,f,g", 0, v9a }, +{ "fornot1", F3F(2, 0x36, 0x07a), F3F(~2, ~0x36, ~0x07a), "v,B,H", 0, v9a }, +{ "fornot1s", F3F(2, 0x36, 0x07b), F3F(~2, ~0x36, ~0x07b), "e,f,g", 0, v9a }, +{ "fornot2", F3F(2, 0x36, 0x076), F3F(~2, ~0x36, ~0x076), "v,B,H", 0, v9a }, +{ "fornot2s", F3F(2, 0x36, 0x077), F3F(~2, ~0x36, ~0x077), "e,f,g", 0, v9a }, +{ "fandnot1", F3F(2, 0x36, 0x068), F3F(~2, ~0x36, ~0x068), "v,B,H", 0, v9a }, +{ "fandnot1s", F3F(2, 0x36, 0x069), F3F(~2, ~0x36, ~0x069), "e,f,g", 0, v9a }, +{ "fandnot2", F3F(2, 0x36, 0x064), F3F(~2, ~0x36, ~0x064), "v,B,H", 0, v9a }, +{ "fandnot2s", F3F(2, 0x36, 0x065), F3F(~2, ~0x36, ~0x065), "e,f,g", 0, v9a }, + +{ "fcmpgt16", F3F(2, 0x36, 0x028), F3F(~2, ~0x36, ~0x028), "v,B,d", 0, v9a }, +{ "fcmpgt32", F3F(2, 0x36, 0x02c), F3F(~2, ~0x36, ~0x02c), "v,B,d", 0, v9a }, +{ "fcmple16", F3F(2, 0x36, 0x020), F3F(~2, ~0x36, ~0x020), "v,B,d", 0, v9a }, +{ "fcmple32", F3F(2, 0x36, 0x024), F3F(~2, ~0x36, ~0x024), "v,B,d", 0, v9a }, +{ "fcmpne16", F3F(2, 0x36, 0x022), F3F(~2, ~0x36, ~0x022), "v,B,d", 0, v9a }, +{ "fcmpne32", F3F(2, 0x36, 0x026), F3F(~2, ~0x36, ~0x026), "v,B,d", 0, v9a }, +{ "fcmpeq16", F3F(2, 0x36, 0x02a), F3F(~2, ~0x36, ~0x02a), "v,B,d", 0, v9a }, +{ "fcmpeq32", F3F(2, 0x36, 0x02e), F3F(~2, ~0x36, ~0x02e), "v,B,d", 0, v9a }, + +{ "edge8", F3F(2, 0x36, 0x000), F3F(~2, ~0x36, ~0x000), "1,2,d", 0, v9a }, +{ "edge8l", F3F(2, 0x36, 0x002), F3F(~2, ~0x36, ~0x002), "1,2,d", 0, v9a }, +{ "edge16", F3F(2, 0x36, 0x004), F3F(~2, ~0x36, ~0x004), "1,2,d", 0, v9a }, +{ "edge16l", F3F(2, 0x36, 0x006), F3F(~2, ~0x36, ~0x006), "1,2,d", 0, v9a }, +{ "edge32", F3F(2, 0x36, 0x008), F3F(~2, ~0x36, ~0x008), "1,2,d", 0, v9a }, +{ "edge32l", F3F(2, 0x36, 0x00a), F3F(~2, ~0x36, ~0x00a), "1,2,d", 0, v9a }, + +{ "pdist", F3F(2, 0x36, 0x03e), F3F(~2, ~0x36, ~0x03e), "v,B,H", 0, v9a }, + +{ "array8", F3F(2, 0x36, 0x010), F3F(~2, ~0x36, ~0x010), "1,2,d", 0, v9a }, +{ "array16", F3F(2, 0x36, 0x012), F3F(~2, ~0x36, ~0x012), "1,2,d", 0, v9a }, +{ "array32", F3F(2, 0x36, 0x014), F3F(~2, ~0x36, ~0x014), "1,2,d", 0, v9a }, + +/* Cheetah instructions */ +{ "edge8n", F3F(2, 0x36, 0x001), F3F(~2, ~0x36, ~0x001), "1,2,d", 0, v9b }, +{ "edge8ln", F3F(2, 0x36, 0x003), F3F(~2, ~0x36, ~0x003), "1,2,d", 0, v9b }, +{ "edge16n", F3F(2, 0x36, 0x005), F3F(~2, ~0x36, ~0x005), "1,2,d", 0, v9b }, +{ "edge16ln", F3F(2, 0x36, 0x007), F3F(~2, ~0x36, ~0x007), "1,2,d", 0, v9b }, +{ "edge32n", F3F(2, 0x36, 0x009), F3F(~2, ~0x36, ~0x009), "1,2,d", 0, v9b }, +{ "edge32ln", F3F(2, 0x36, 0x00b), F3F(~2, ~0x36, ~0x00b), "1,2,d", 0, v9b }, + +{ "bmask", F3F(2, 0x36, 0x019), F3F(~2, ~0x36, ~0x019), "1,2,d", 0, v9b }, +{ "bshuffle", F3F(2, 0x36, 0x04c), F3F(~2, ~0x36, ~0x04c), "v,B,H", 0, v9b }, + +{ "siam", F3F(2, 0x36, 0x081), F3F(~2, ~0x36, ~0x081)|RD_G0|RS1_G0|RS2(~7), "3", 0, v9b }, + +/* More v9 specific insns, these need to come last so they do not clash + with v9a instructions such as "edge8" which looks like impdep1. */ + +#define IMPDEP(name, code) \ +{ name, F3(2, code, 0), F3(~2, ~code, ~0)|ASI(~0), "1,2,d", 0, v9notv9a }, \ +{ name, F3(2, code, 1), F3(~2, ~code, ~1), "1,i,d", 0, v9notv9a }, \ +{ name, F3(2, code, 0), F3(~2, ~code, ~0), "x,1,2,d", 0, v9notv9a }, \ +{ name, F3(2, code, 0), F3(~2, ~code, ~0), "x,e,f,g", 0, v9notv9a } + +IMPDEP ("impdep1", 0x36), +IMPDEP ("impdep2", 0x37), + +#undef IMPDEP + +}; + +static const int sparc_num_opcodes = ((sizeof sparc_opcodes)/(sizeof sparc_opcodes[0])); + +/* Utilities for argument parsing. */ + +typedef struct +{ + int value; + const char *name; +} arg; + +/* Look up VALUE in TABLE. */ + +static const char * +lookup_value (const arg *table, int value) +{ + const arg *p; + + for (p = table; p->name; ++p) + if (value == p->value) + return p->name; + + return NULL; +} + +/* Handle ASI's. */ + +static const arg asi_table_v8[] = +{ + { 0x00, "#ASI_M_RES00" }, + { 0x01, "#ASI_M_UNA01" }, + { 0x02, "#ASI_M_MXCC" }, + { 0x03, "#ASI_M_FLUSH_PROBE" }, + { 0x04, "#ASI_M_MMUREGS" }, + { 0x05, "#ASI_M_TLBDIAG" }, + { 0x06, "#ASI_M_DIAGS" }, + { 0x07, "#ASI_M_IODIAG" }, + { 0x08, "#ASI_M_USERTXT" }, + { 0x09, "#ASI_M_KERNELTXT" }, + { 0x0A, "#ASI_M_USERDATA" }, + { 0x0B, "#ASI_M_KERNELDATA" }, + { 0x0C, "#ASI_M_TXTC_TAG" }, + { 0x0D, "#ASI_M_TXTC_DATA" }, + { 0x0E, "#ASI_M_DATAC_TAG" }, + { 0x0F, "#ASI_M_DATAC_DATA" }, + { 0x10, "#ASI_M_FLUSH_PAGE" }, + { 0x11, "#ASI_M_FLUSH_SEG" }, + { 0x12, "#ASI_M_FLUSH_REGION" }, + { 0x13, "#ASI_M_FLUSH_CTX" }, + { 0x14, "#ASI_M_FLUSH_USER" }, + { 0x17, "#ASI_M_BCOPY" }, + { 0x18, "#ASI_M_IFLUSH_PAGE" }, + { 0x19, "#ASI_M_IFLUSH_SEG" }, + { 0x1A, "#ASI_M_IFLUSH_REGION" }, + { 0x1B, "#ASI_M_IFLUSH_CTX" }, + { 0x1C, "#ASI_M_IFLUSH_USER" }, + { 0x1F, "#ASI_M_BFILL" }, + { 0x20, "#ASI_M_BYPASS" }, + { 0x29, "#ASI_M_FBMEM" }, + { 0x2A, "#ASI_M_VMEUS" }, + { 0x2B, "#ASI_M_VMEPS" }, + { 0x2C, "#ASI_M_VMEUT" }, + { 0x2D, "#ASI_M_VMEPT" }, + { 0x2E, "#ASI_M_SBUS" }, + { 0x2F, "#ASI_M_CTL" }, + { 0x31, "#ASI_M_FLUSH_IWHOLE" }, + { 0x36, "#ASI_M_IC_FLCLEAR" }, + { 0x37, "#ASI_M_DC_FLCLEAR" }, + { 0x39, "#ASI_M_DCDR" }, + { 0x40, "#ASI_M_VIKING_TMP1" }, + { 0x41, "#ASI_M_VIKING_TMP2" }, + { 0x4c, "#ASI_M_ACTION" }, + { 0, NULL } +}; + +static const arg asi_table_v9[] = +{ + /* These are in the v9 architecture manual. */ + /* The shorter versions appear first, they're here because Sun's as has them. + Sun's as uses #ASI_P_L instead of #ASI_PL (which appears in the + UltraSPARC architecture manual). */ + { 0x04, "#ASI_N" }, + { 0x0c, "#ASI_N_L" }, + { 0x10, "#ASI_AIUP" }, + { 0x11, "#ASI_AIUS" }, + { 0x18, "#ASI_AIUP_L" }, + { 0x19, "#ASI_AIUS_L" }, + { 0x80, "#ASI_P" }, + { 0x81, "#ASI_S" }, + { 0x82, "#ASI_PNF" }, + { 0x83, "#ASI_SNF" }, + { 0x88, "#ASI_P_L" }, + { 0x89, "#ASI_S_L" }, + { 0x8a, "#ASI_PNF_L" }, + { 0x8b, "#ASI_SNF_L" }, + { 0x04, "#ASI_NUCLEUS" }, + { 0x0c, "#ASI_NUCLEUS_LITTLE" }, + { 0x10, "#ASI_AS_IF_USER_PRIMARY" }, + { 0x11, "#ASI_AS_IF_USER_SECONDARY" }, + { 0x18, "#ASI_AS_IF_USER_PRIMARY_LITTLE" }, + { 0x19, "#ASI_AS_IF_USER_SECONDARY_LITTLE" }, + { 0x80, "#ASI_PRIMARY" }, + { 0x81, "#ASI_SECONDARY" }, + { 0x82, "#ASI_PRIMARY_NOFAULT" }, + { 0x83, "#ASI_SECONDARY_NOFAULT" }, + { 0x88, "#ASI_PRIMARY_LITTLE" }, + { 0x89, "#ASI_SECONDARY_LITTLE" }, + { 0x8a, "#ASI_PRIMARY_NOFAULT_LITTLE" }, + { 0x8b, "#ASI_SECONDARY_NOFAULT_LITTLE" }, + /* These are UltraSPARC extensions. */ + /* FIXME: There are dozens of them. Not sure we want them all. + Most are for kernel building but some are for vis type stuff. */ + { 0, NULL } +}; + +/* Return the name for ASI value VALUE or NULL if not found. */ + +static const char * +sparc_decode_asi_v9 (int value) +{ + return lookup_value (asi_table_v9, value); +} + +static const char * +sparc_decode_asi_v8 (int value) +{ + return lookup_value (asi_table_v8, value); +} + +/* Handle membar masks. */ + +static const arg membar_table[] = +{ + { 0x40, "#Sync" }, + { 0x20, "#MemIssue" }, + { 0x10, "#Lookaside" }, + { 0x08, "#StoreStore" }, + { 0x04, "#LoadStore" }, + { 0x02, "#StoreLoad" }, + { 0x01, "#LoadLoad" }, + { 0, NULL } +}; + +/* Return the name for membar value VALUE or NULL if not found. */ + +static const char * +sparc_decode_membar (int value) +{ + return lookup_value (membar_table, value); +} + +/* Handle prefetch args. */ + +static const arg prefetch_table[] = +{ + { 0, "#n_reads" }, + { 1, "#one_read" }, + { 2, "#n_writes" }, + { 3, "#one_write" }, + { 4, "#page" }, + { 16, "#invalidate" }, + { 0, NULL } +}; + +/* Return the name for prefetch value VALUE or NULL if not found. */ + +static const char * +sparc_decode_prefetch (int value) +{ + return lookup_value (prefetch_table, value); +} + +/* Handle sparclet coprocessor registers. */ + +static const arg sparclet_cpreg_table[] = +{ + { 0, "%ccsr" }, + { 1, "%ccfr" }, + { 2, "%cccrcr" }, + { 3, "%ccpr" }, + { 4, "%ccsr2" }, + { 5, "%cccrr" }, + { 6, "%ccrstr" }, + { 0, NULL } +}; + +/* Return the name for sparclet cpreg value VALUE or NULL if not found. */ + +static const char * +sparc_decode_sparclet_cpreg (int value) +{ + return lookup_value (sparclet_cpreg_table, value); +} + +#undef MASK_V9 + +/* opcodes/sparc-dis.c */ + +/* Print SPARC instructions. + Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +/* Bitmask of v9 architectures. */ +#define MASK_V9 ((1 << SPARC_OPCODE_ARCH_V9) \ + | (1 << SPARC_OPCODE_ARCH_V9A) \ + | (1 << SPARC_OPCODE_ARCH_V9B)) +/* 1 if INSN is for v9 only. */ +#define V9_ONLY_P(insn) (! ((insn)->architecture & ~MASK_V9)) +/* 1 if INSN is for v9. */ +#define V9_P(insn) (((insn)->architecture & MASK_V9) != 0) + +/* The sorted opcode table. */ +static const sparc_opcode **sorted_opcodes; + +/* For faster lookup, after insns are sorted they are hashed. */ +/* ??? I think there is room for even more improvement. */ + +#define HASH_SIZE 256 +/* It is important that we only look at insn code bits as that is how the + opcode table is hashed. OPCODE_BITS is a table of valid bits for each + of the main types (0,1,2,3). */ +static const int opcode_bits[4] = { 0x01c00000, 0x0, 0x01f80000, 0x01f80000 }; +#define HASH_INSN(INSN) \ + ((((INSN) >> 24) & 0xc0) | (((INSN) & opcode_bits[((INSN) >> 30) & 3]) >> 19)) +typedef struct sparc_opcode_hash +{ + struct sparc_opcode_hash *next; + const sparc_opcode *opcode; +} sparc_opcode_hash; + +static sparc_opcode_hash *opcode_hash_table[HASH_SIZE]; + +/* Sign-extend a value which is N bits long. */ +#define SEX(value, bits) \ + ((((int)(value)) << ((8 * sizeof (int)) - bits)) \ + >> ((8 * sizeof (int)) - bits) ) + +static const char * const reg_names[] = +{ "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7", + "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7", + "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7", + "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7", + "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", + "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", + "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", + "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", + "f32", "f33", "f34", "f35", "f36", "f37", "f38", "f39", + "f40", "f41", "f42", "f43", "f44", "f45", "f46", "f47", + "f48", "f49", "f50", "f51", "f52", "f53", "f54", "f55", + "f56", "f57", "f58", "f59", "f60", "f61", "f62", "f63", +/* psr, wim, tbr, fpsr, cpsr are v8 only. */ + "y", "psr", "wim", "tbr", "pc", "npc", "fpsr", "cpsr" +}; + +#define freg_names (®_names[4 * 8]) + +/* These are ordered according to there register number in + rdpr and wrpr insns. */ +static const char * const v9_priv_reg_names[] = +{ + "tpc", "tnpc", "tstate", "tt", "tick", "tba", "pstate", "tl", + "pil", "cwp", "cansave", "canrestore", "cleanwin", "otherwin", + "wstate", "fq", "gl" + /* "ver" - special cased */ +}; + +/* These are ordered according to there register number in + rdhpr and wrhpr insns. */ +static const char * const v9_hpriv_reg_names[] = +{ + "hpstate", "htstate", "resv2", "hintp", "resv4", "htba", "hver", + "resv7", "resv8", "resv9", "resv10", "resv11", "resv12", "resv13", + "resv14", "resv15", "resv16", "resv17", "resv18", "resv19", "resv20", + "resv21", "resv22", "resv23", "resv24", "resv25", "resv26", "resv27", + "resv28", "resv29", "resv30", "hstick_cmpr" +}; + +/* These are ordered according to there register number in + rd and wr insns (-16). */ +static const char * const v9a_asr_reg_names[] = +{ + "pcr", "pic", "dcr", "gsr", "set_softint", "clear_softint", + "softint", "tick_cmpr", "sys_tick", "sys_tick_cmpr" +}; + +/* Macros used to extract instruction fields. Not all fields have + macros defined here, only those which are actually used. */ + +#define X_RD(i) (((i) >> 25) & 0x1f) +#define X_RS1(i) (((i) >> 14) & 0x1f) +#define X_LDST_I(i) (((i) >> 13) & 1) +#define X_ASI(i) (((i) >> 5) & 0xff) +#define X_RS2(i) (((i) >> 0) & 0x1f) +#define X_IMM(i,n) (((i) >> 0) & ((1 << (n)) - 1)) +#define X_SIMM(i,n) SEX (X_IMM ((i), (n)), (n)) +#define X_DISP22(i) (((i) >> 0) & 0x3fffff) +#define X_IMM22(i) X_DISP22 (i) +#define X_DISP30(i) (((i) >> 0) & 0x3fffffff) + +/* These are for v9. */ +#define X_DISP16(i) (((((i) >> 20) & 3) << 14) | (((i) >> 0) & 0x3fff)) +#define X_DISP19(i) (((i) >> 0) & 0x7ffff) +#define X_MEMBAR(i) ((i) & 0x7f) + +/* Here is the union which was used to extract instruction fields + before the shift and mask macros were written. + + union sparc_insn + { + unsigned long int code; + struct + { + unsigned int anop:2; + #define op ldst.anop + unsigned int anrd:5; + #define rd ldst.anrd + unsigned int op3:6; + unsigned int anrs1:5; + #define rs1 ldst.anrs1 + unsigned int i:1; + unsigned int anasi:8; + #define asi ldst.anasi + unsigned int anrs2:5; + #define rs2 ldst.anrs2 + #define shcnt rs2 + } ldst; + struct + { + unsigned int anop:2, anrd:5, op3:6, anrs1:5, i:1; + unsigned int IMM13:13; + #define imm13 IMM13.IMM13 + } IMM13; + struct + { + unsigned int anop:2; + unsigned int a:1; + unsigned int cond:4; + unsigned int op2:3; + unsigned int DISP22:22; + #define disp22 branch.DISP22 + #define imm22 disp22 + } branch; + struct + { + unsigned int anop:2; + unsigned int a:1; + unsigned int z:1; + unsigned int rcond:3; + unsigned int op2:3; + unsigned int DISP16HI:2; + unsigned int p:1; + unsigned int _rs1:5; + unsigned int DISP16LO:14; + } branch16; + struct + { + unsigned int anop:2; + unsigned int adisp30:30; + #define disp30 call.adisp30 + } call; + }; */ + +/* Nonzero if INSN is the opcode for a delayed branch. */ + +static int +is_delayed_branch (unsigned long insn) +{ + sparc_opcode_hash *op; + + for (op = opcode_hash_table[HASH_INSN (insn)]; op; op = op->next) + { + const sparc_opcode *opcode = op->opcode; + + if ((opcode->match & insn) == opcode->match + && (opcode->lose & insn) == 0) + return opcode->flags & F_DELAYED; + } + return 0; +} + +/* extern void qsort (); */ + +/* Records current mask of SPARC_OPCODE_ARCH_FOO values, used to pass value + to compare_opcodes. */ +static unsigned int current_arch_mask; + +/* Given BFD mach number, return a mask of SPARC_OPCODE_ARCH_FOO values. */ + +static int +compute_arch_mask (unsigned long mach) +{ + switch (mach) + { + case 0 : + case bfd_mach_sparc : + return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8); + case bfd_mach_sparc_sparclet : + return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLET); + case bfd_mach_sparc_sparclite : + case bfd_mach_sparc_sparclite_le : + /* sparclites insns are recognized by default (because that's how + they've always been treated, for better or worse). Kludge this by + indicating generic v8 is also selected. */ + return (SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE) + | SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V8)); + case bfd_mach_sparc_v8plus : + case bfd_mach_sparc_v9 : + return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9); + case bfd_mach_sparc_v8plusa : + case bfd_mach_sparc_v9a : + return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A); + case bfd_mach_sparc_v8plusb : + case bfd_mach_sparc_v9b : + return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B); + } + abort (); +} + +/* Compare opcodes A and B. */ + +static int +compare_opcodes (const void * a, const void * b) +{ + sparc_opcode *op0 = * (sparc_opcode **) a; + sparc_opcode *op1 = * (sparc_opcode **) b; + unsigned long int match0 = op0->match, match1 = op1->match; + unsigned long int lose0 = op0->lose, lose1 = op1->lose; + register unsigned int i; + + /* If one (and only one) insn isn't supported by the current architecture, + prefer the one that is. If neither are supported, but they're both for + the same architecture, continue processing. Otherwise (both unsupported + and for different architectures), prefer lower numbered arch's (fudged + by comparing the bitmasks). */ + if (op0->architecture & current_arch_mask) + { + if (! (op1->architecture & current_arch_mask)) + return -1; + } + else + { + if (op1->architecture & current_arch_mask) + return 1; + else if (op0->architecture != op1->architecture) + return op0->architecture - op1->architecture; + } + + /* If a bit is set in both match and lose, there is something + wrong with the opcode table. */ + if (match0 & lose0) + { + fprintf + (stderr, + /* xgettext:c-format */ + _("Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"), + op0->name, match0, lose0); + op0->lose &= ~op0->match; + lose0 = op0->lose; + } + + if (match1 & lose1) + { + fprintf + (stderr, + /* xgettext:c-format */ + _("Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"), + op1->name, match1, lose1); + op1->lose &= ~op1->match; + lose1 = op1->lose; + } + + /* Because the bits that are variable in one opcode are constant in + another, it is important to order the opcodes in the right order. */ + for (i = 0; i < 32; ++i) + { + unsigned long int x = 1 << i; + int x0 = (match0 & x) != 0; + int x1 = (match1 & x) != 0; + + if (x0 != x1) + return x1 - x0; + } + + for (i = 0; i < 32; ++i) + { + unsigned long int x = 1 << i; + int x0 = (lose0 & x) != 0; + int x1 = (lose1 & x) != 0; + + if (x0 != x1) + return x1 - x0; + } + + /* They are functionally equal. So as long as the opcode table is + valid, we can put whichever one first we want, on aesthetic grounds. */ + + /* Our first aesthetic ground is that aliases defer to real insns. */ + { + int alias_diff = (op0->flags & F_ALIAS) - (op1->flags & F_ALIAS); + + if (alias_diff != 0) + /* Put the one that isn't an alias first. */ + return alias_diff; + } + + /* Except for aliases, two "identical" instructions had + better have the same opcode. This is a sanity check on the table. */ + i = strcmp (op0->name, op1->name); + if (i) + { + if (op0->flags & F_ALIAS) /* If they're both aliases, be arbitrary. */ + return i; + else + fprintf (stderr, + /* xgettext:c-format */ + _("Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"), + op0->name, op1->name); + } + + /* Fewer arguments are preferred. */ + { + int length_diff = strlen (op0->args) - strlen (op1->args); + + if (length_diff != 0) + /* Put the one with fewer arguments first. */ + return length_diff; + } + + /* Put 1+i before i+1. */ + { + char *p0 = (char *) strchr (op0->args, '+'); + char *p1 = (char *) strchr (op1->args, '+'); + + if (p0 && p1) + { + /* There is a plus in both operands. Note that a plus + sign cannot be the first character in args, + so the following [-1]'s are valid. */ + if (p0[-1] == 'i' && p1[1] == 'i') + /* op0 is i+1 and op1 is 1+i, so op1 goes first. */ + return 1; + if (p0[1] == 'i' && p1[-1] == 'i') + /* op0 is 1+i and op1 is i+1, so op0 goes first. */ + return -1; + } + } + + /* Put 1,i before i,1. */ + { + int i0 = strncmp (op0->args, "i,1", 3) == 0; + int i1 = strncmp (op1->args, "i,1", 3) == 0; + + if (i0 ^ i1) + return i0 - i1; + } + + /* They are, as far as we can tell, identical. + Since qsort may have rearranged the table partially, there is + no way to tell which one was first in the opcode table as + written, so just say there are equal. */ + /* ??? This is no longer true now that we sort a vector of pointers, + not the table itself. */ + return 0; +} + +/* Build a hash table from the opcode table. + OPCODE_TABLE is a sorted list of pointers into the opcode table. */ + +static void +build_hash_table (const sparc_opcode **opcode_table, + sparc_opcode_hash **hash_table, + int num_opcodes) +{ + int i; + int hash_count[HASH_SIZE]; + static sparc_opcode_hash *hash_buf = NULL; + + /* Start at the end of the table and work backwards so that each + chain is sorted. */ + + memset (hash_table, 0, HASH_SIZE * sizeof (hash_table[0])); + memset (hash_count, 0, HASH_SIZE * sizeof (hash_count[0])); + if (hash_buf != NULL) + free (hash_buf); + hash_buf = malloc (sizeof (* hash_buf) * num_opcodes); + for (i = num_opcodes - 1; i >= 0; --i) + { + int hash = HASH_INSN (opcode_table[i]->match); + sparc_opcode_hash *h = &hash_buf[i]; + + h->next = hash_table[hash]; + h->opcode = opcode_table[i]; + hash_table[hash] = h; + ++hash_count[hash]; + } + +#if 0 /* for debugging */ + { + int min_count = num_opcodes, max_count = 0; + int total; + + for (i = 0; i < HASH_SIZE; ++i) + { + if (hash_count[i] < min_count) + min_count = hash_count[i]; + if (hash_count[i] > max_count) + max_count = hash_count[i]; + total += hash_count[i]; + } + + printf ("Opcode hash table stats: min %d, max %d, ave %f\n", + min_count, max_count, (double) total / HASH_SIZE); + } +#endif +} + +/* Print one instruction from MEMADDR on INFO->STREAM. + + We suffix the instruction with a comment that gives the absolute + address involved, as well as its symbolic form, if the instruction + is preceded by a findable `sethi' and it either adds an immediate + displacement to that register, or it is an `add' or `or' instruction + on that register. */ + +int +print_insn_sparc (bfd_vma memaddr, disassemble_info *info) +{ + FILE *stream = info->stream; + bfd_byte buffer[4]; + unsigned long insn; + sparc_opcode_hash *op; + /* Nonzero of opcode table has been initialized. */ + static int opcodes_initialized = 0; + /* bfd mach number of last call. */ + static unsigned long current_mach = 0; + bfd_vma (*getword) (const unsigned char *); + + if (!opcodes_initialized + || info->mach != current_mach) + { + int i; + + current_arch_mask = compute_arch_mask (info->mach); + + if (!opcodes_initialized) + sorted_opcodes = + malloc (sparc_num_opcodes * sizeof (sparc_opcode *)); + /* Reset the sorted table so we can resort it. */ + for (i = 0; i < sparc_num_opcodes; ++i) + sorted_opcodes[i] = &sparc_opcodes[i]; + qsort ((char *) sorted_opcodes, sparc_num_opcodes, + sizeof (sorted_opcodes[0]), compare_opcodes); + + build_hash_table (sorted_opcodes, opcode_hash_table, sparc_num_opcodes); + current_mach = info->mach; + opcodes_initialized = 1; + } + + { + int status = + (*info->read_memory_func) (memaddr, buffer, sizeof (buffer), info); + + if (status != 0) + { + (*info->memory_error_func) (status, memaddr, info); + return -1; + } + } + + /* On SPARClite variants such as DANlite (sparc86x), instructions + are always big-endian even when the machine is in little-endian mode. */ + if (info->endian == BFD_ENDIAN_BIG || info->mach == bfd_mach_sparc_sparclite) + getword = bfd_getb32; + else + getword = bfd_getl32; + + insn = getword (buffer); + + info->insn_info_valid = 1; /* We do return this info. */ + info->insn_type = dis_nonbranch; /* Assume non branch insn. */ + info->branch_delay_insns = 0; /* Assume no delay. */ + info->target = 0; /* Assume no target known. */ + + for (op = opcode_hash_table[HASH_INSN (insn)]; op; op = op->next) + { + const sparc_opcode *opcode = op->opcode; + + /* If the insn isn't supported by the current architecture, skip it. */ + if (! (opcode->architecture & current_arch_mask)) + continue; + + if ((opcode->match & insn) == opcode->match + && (opcode->lose & insn) == 0) + { + /* Nonzero means that we have found an instruction which has + the effect of adding or or'ing the imm13 field to rs1. */ + int imm_added_to_rs1 = 0; + int imm_ored_to_rs1 = 0; + + /* Nonzero means that we have found a plus sign in the args + field of the opcode table. */ + int found_plus = 0; + + /* Nonzero means we have an annulled branch. */ + /* int is_annulled = 0; */ /* see FIXME below */ + + /* Do we have an `add' or `or' instruction combining an + immediate with rs1? */ + if (opcode->match == 0x80102000) /* or */ + imm_ored_to_rs1 = 1; + if (opcode->match == 0x80002000) /* add */ + imm_added_to_rs1 = 1; + + if (X_RS1 (insn) != X_RD (insn) + && strchr (opcode->args, 'r') != NULL) + /* Can't do simple format if source and dest are different. */ + continue; + if (X_RS2 (insn) != X_RD (insn) + && strchr (opcode->args, 'O') != NULL) + /* Can't do simple format if source and dest are different. */ + continue; + + (*info->fprintf_func) (stream, opcode->name); + + { + const char *s; + + if (opcode->args[0] != ',') + (*info->fprintf_func) (stream, " "); + + for (s = opcode->args; *s != '\0'; ++s) + { + while (*s == ',') + { + (*info->fprintf_func) (stream, ","); + ++s; + switch (*s) + { + case 'a': + (*info->fprintf_func) (stream, "a"); + /* is_annulled = 1; */ /* see FIXME below */ + ++s; + continue; + case 'N': + (*info->fprintf_func) (stream, "pn"); + ++s; + continue; + + case 'T': + (*info->fprintf_func) (stream, "pt"); + ++s; + continue; + + default: + break; + } + } + + (*info->fprintf_func) (stream, " "); + + switch (*s) + { + case '+': + found_plus = 1; + /* Fall through. */ + + default: + (*info->fprintf_func) (stream, "%c", *s); + break; + + case '#': + (*info->fprintf_func) (stream, "0"); + break; + +#define reg(n) (*info->fprintf_func) (stream, "%%%s", reg_names[n]) + case '1': + case 'r': + reg (X_RS1 (insn)); + break; + + case '2': + case 'O': + reg (X_RS2 (insn)); + break; + + case 'd': + reg (X_RD (insn)); + break; +#undef reg + +#define freg(n) (*info->fprintf_func) (stream, "%%%s", freg_names[n]) +#define fregx(n) (*info->fprintf_func) (stream, "%%%s", freg_names[((n) & ~1) | (((n) & 1) << 5)]) + case 'e': + freg (X_RS1 (insn)); + break; + case 'v': /* Double/even. */ + case 'V': /* Quad/multiple of 4. */ + fregx (X_RS1 (insn)); + break; + + case 'f': + freg (X_RS2 (insn)); + break; + case 'B': /* Double/even. */ + case 'R': /* Quad/multiple of 4. */ + fregx (X_RS2 (insn)); + break; + + case 'g': + freg (X_RD (insn)); + break; + case 'H': /* Double/even. */ + case 'J': /* Quad/multiple of 4. */ + fregx (X_RD (insn)); + break; +#undef freg +#undef fregx + +#define creg(n) (*info->fprintf_func) (stream, "%%c%u", (unsigned int) (n)) + case 'b': + creg (X_RS1 (insn)); + break; + + case 'c': + creg (X_RS2 (insn)); + break; + + case 'D': + creg (X_RD (insn)); + break; +#undef creg + + case 'h': + (*info->fprintf_func) (stream, "%%hi(%#x)", + ((unsigned) 0xFFFFFFFF + & ((int) X_IMM22 (insn) << 10))); + break; + + case 'i': /* 13 bit immediate. */ + case 'I': /* 11 bit immediate. */ + case 'j': /* 10 bit immediate. */ + { + int imm; + + if (*s == 'i') + imm = X_SIMM (insn, 13); + else if (*s == 'I') + imm = X_SIMM (insn, 11); + else + imm = X_SIMM (insn, 10); + + /* Check to see whether we have a 1+i, and take + note of that fact. + + Note: because of the way we sort the table, + we will be matching 1+i rather than i+1, + so it is OK to assume that i is after +, + not before it. */ + if (found_plus) + imm_added_to_rs1 = 1; + + if (imm <= 9) + (*info->fprintf_func) (stream, "%d", imm); + else + (*info->fprintf_func) (stream, "%#x", imm); + } + break; + + case 'X': /* 5 bit unsigned immediate. */ + case 'Y': /* 6 bit unsigned immediate. */ + { + int imm = X_IMM (insn, *s == 'X' ? 5 : 6); + + if (imm <= 9) + (info->fprintf_func) (stream, "%d", imm); + else + (info->fprintf_func) (stream, "%#x", (unsigned) imm); + } + break; + + case '3': + (info->fprintf_func) (stream, "%ld", X_IMM (insn, 3)); + break; + + case 'K': + { + int mask = X_MEMBAR (insn); + int bit = 0x40, printed_one = 0; + const char *name; + + if (mask == 0) + (info->fprintf_func) (stream, "0"); + else + while (bit) + { + if (mask & bit) + { + if (printed_one) + (info->fprintf_func) (stream, "|"); + name = sparc_decode_membar (bit); + (info->fprintf_func) (stream, "%s", name); + printed_one = 1; + } + bit >>= 1; + } + break; + } + + case 'k': + info->target = memaddr + SEX (X_DISP16 (insn), 16) * 4; + (*info->print_address_func) (info->target, info); + break; + + case 'G': + info->target = memaddr + SEX (X_DISP19 (insn), 19) * 4; + (*info->print_address_func) (info->target, info); + break; + + case '6': + case '7': + case '8': + case '9': + (*info->fprintf_func) (stream, "%%fcc%c", *s - '6' + '0'); + break; + + case 'z': + (*info->fprintf_func) (stream, "%%icc"); + break; + + case 'Z': + (*info->fprintf_func) (stream, "%%xcc"); + break; + + case 'E': + (*info->fprintf_func) (stream, "%%ccr"); + break; + + case 's': + (*info->fprintf_func) (stream, "%%fprs"); + break; + + case 'o': + (*info->fprintf_func) (stream, "%%asi"); + break; + + case 'W': + (*info->fprintf_func) (stream, "%%tick"); + break; + + case 'P': + (*info->fprintf_func) (stream, "%%pc"); + break; + + case '?': + if (X_RS1 (insn) == 31) + (*info->fprintf_func) (stream, "%%ver"); + else if ((unsigned) X_RS1 (insn) < 17) + (*info->fprintf_func) (stream, "%%%s", + v9_priv_reg_names[X_RS1 (insn)]); + else + (*info->fprintf_func) (stream, "%%reserved"); + break; + + case '!': + if ((unsigned) X_RD (insn) < 17) + (*info->fprintf_func) (stream, "%%%s", + v9_priv_reg_names[X_RD (insn)]); + else + (*info->fprintf_func) (stream, "%%reserved"); + break; + + case '$': + if ((unsigned) X_RS1 (insn) < 32) + (*info->fprintf_func) (stream, "%%%s", + v9_hpriv_reg_names[X_RS1 (insn)]); + else + (*info->fprintf_func) (stream, "%%reserved"); + break; + + case '%': + if ((unsigned) X_RD (insn) < 32) + (*info->fprintf_func) (stream, "%%%s", + v9_hpriv_reg_names[X_RD (insn)]); + else + (*info->fprintf_func) (stream, "%%reserved"); + break; + + case '/': + if (X_RS1 (insn) < 16 || X_RS1 (insn) > 25) + (*info->fprintf_func) (stream, "%%reserved"); + else + (*info->fprintf_func) (stream, "%%%s", + v9a_asr_reg_names[X_RS1 (insn)-16]); + break; + + case '_': + if (X_RD (insn) < 16 || X_RD (insn) > 25) + (*info->fprintf_func) (stream, "%%reserved"); + else + (*info->fprintf_func) (stream, "%%%s", + v9a_asr_reg_names[X_RD (insn)-16]); + break; + + case '*': + { + const char *name = sparc_decode_prefetch (X_RD (insn)); + + if (name) + (*info->fprintf_func) (stream, "%s", name); + else + (*info->fprintf_func) (stream, "%ld", X_RD (insn)); + break; + } + + case 'M': + (*info->fprintf_func) (stream, "%%asr%ld", X_RS1 (insn)); + break; + + case 'm': + (*info->fprintf_func) (stream, "%%asr%ld", X_RD (insn)); + break; + + case 'L': + info->target = memaddr + SEX (X_DISP30 (insn), 30) * 4; + (*info->print_address_func) (info->target, info); + break; + + case 'n': + (*info->fprintf_func) + (stream, "%#x", SEX (X_DISP22 (insn), 22)); + break; + + case 'l': + info->target = memaddr + SEX (X_DISP22 (insn), 22) * 4; + (*info->print_address_func) (info->target, info); + break; + + case 'A': + { + const char *name; + + if ((info->mach == bfd_mach_sparc_v8plusa) || + ((info->mach >= bfd_mach_sparc_v9) && + (info->mach <= bfd_mach_sparc_v9b))) + name = sparc_decode_asi_v9 (X_ASI (insn)); + else + name = sparc_decode_asi_v8 (X_ASI (insn)); + + if (name) + (*info->fprintf_func) (stream, "%s", name); + else + (*info->fprintf_func) (stream, "(%ld)", X_ASI (insn)); + break; + } + + case 'C': + (*info->fprintf_func) (stream, "%%csr"); + break; + + case 'F': + (*info->fprintf_func) (stream, "%%fsr"); + break; + + case 'p': + (*info->fprintf_func) (stream, "%%psr"); + break; + + case 'q': + (*info->fprintf_func) (stream, "%%fq"); + break; + + case 'Q': + (*info->fprintf_func) (stream, "%%cq"); + break; + + case 't': + (*info->fprintf_func) (stream, "%%tbr"); + break; + + case 'w': + (*info->fprintf_func) (stream, "%%wim"); + break; + + case 'x': + (*info->fprintf_func) (stream, "%ld", + ((X_LDST_I (insn) << 8) + + X_ASI (insn))); + break; + + case 'y': + (*info->fprintf_func) (stream, "%%y"); + break; + + case 'u': + case 'U': + { + int val = *s == 'U' ? X_RS1 (insn) : X_RD (insn); + const char *name = sparc_decode_sparclet_cpreg (val); + + if (name) + (*info->fprintf_func) (stream, "%s", name); + else + (*info->fprintf_func) (stream, "%%cpreg(%d)", val); + break; + } + } + } + } + + /* If we are adding or or'ing something to rs1, then + check to see whether the previous instruction was + a sethi to the same register as in the sethi. + If so, attempt to print the result of the add or + or (in this context add and or do the same thing) + and its symbolic value. */ + if (imm_ored_to_rs1 || imm_added_to_rs1) + { + unsigned long prev_insn; + int errcode; + + if (memaddr >= 4) + errcode = + (*info->read_memory_func) + (memaddr - 4, buffer, sizeof (buffer), info); + else + errcode = 1; + + prev_insn = getword (buffer); + + if (errcode == 0) + { + /* If it is a delayed branch, we need to look at the + instruction before the delayed branch. This handles + sequences such as: + + sethi %o1, %hi(_foo), %o1 + call _printf + or %o1, %lo(_foo), %o1 */ + + if (is_delayed_branch (prev_insn)) + { + if (memaddr >= 8) + errcode = (*info->read_memory_func) + (memaddr - 8, buffer, sizeof (buffer), info); + else + errcode = 1; + + prev_insn = getword (buffer); + } + } + + /* If there was a problem reading memory, then assume + the previous instruction was not sethi. */ + if (errcode == 0) + { + /* Is it sethi to the same register? */ + if ((prev_insn & 0xc1c00000) == 0x01000000 + && X_RD (prev_insn) == X_RS1 (insn)) + { + (*info->fprintf_func) (stream, "\t! "); + info->target = + ((unsigned) 0xFFFFFFFF + & ((int) X_IMM22 (prev_insn) << 10)); + if (imm_added_to_rs1) + info->target += X_SIMM (insn, 13); + else + info->target |= X_SIMM (insn, 13); + (*info->print_address_func) (info->target, info); + info->insn_type = dis_dref; + info->data_size = 4; /* FIXME!!! */ + } + } + } + + if (opcode->flags & (F_UNBR|F_CONDBR|F_JSR)) + { + /* FIXME -- check is_annulled flag. */ + if (opcode->flags & F_UNBR) + info->insn_type = dis_branch; + if (opcode->flags & F_CONDBR) + info->insn_type = dis_condbranch; + if (opcode->flags & F_JSR) + info->insn_type = dis_jsr; + if (opcode->flags & F_DELAYED) + info->branch_delay_insns = 1; + } + + return sizeof (buffer); + } + } + + info->insn_type = dis_noninsn; /* Mark as non-valid instruction. */ + (*info->fprintf_func) (stream, _("unknown")); + return sizeof (buffer); +} diff --git a/qemu/qemu-git/sparc.ld b/qemu/qemu-git/sparc.ld new file mode 100644 index 0000000..31321be --- /dev/null +++ b/qemu/qemu-git/sparc.ld @@ -0,0 +1,150 @@ +OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", + "elf32-sparc") +OUTPUT_ARCH(sparc) +ENTRY(_start) +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.text : + { *(.rel.text) *(.rel.gnu.linkonce.t*) } + .rela.text : + { *(.rela.text) *(.rela.gnu.linkonce.t*) } + .rel.data : + { *(.rel.data) *(.rel.gnu.linkonce.d*) } + .rela.data : + { *(.rela.data) *(.rela.gnu.linkonce.d*) } + .rel.rodata : + { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } + .rela.rodata : + { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } =0x47ff041f + .text : + { + *(.text) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) + } =0x47ff041f + _etext = .; + PROVIDE (etext = .); + .fini : { *(.fini) } =0x47ff041f + .rodata : { *(.rodata) *(.gnu.linkonce.r*) } + .rodata1 : { *(.rodata1) } + .reginfo : { *(.reginfo) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(0x100000) + (. & (0x100000 - 1)); + .data : + { + *(.data) + *(.gnu.linkonce.d*) + CONSTRUCTORS + } + .data1 : { *(.data1) } + .tdata : { *(.tdata) } + .tbss : { *(.tbss) } + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + } + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + PROVIDE_HIDDEN (__fini_array_end = .); + } + .ctors : + { + *(.ctors) + } + .dtors : + { + *(.dtors) + } + .plt : { *(.plt) } + .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : { *(.sdata) } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .sbss : { *(.sbss) *(.scommon) } + .bss : + { + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ + /DISCARD/ : { *(.note.GNU-stack) *(.note.ABI-tag) } +} diff --git a/qemu/qemu-git/sparc64.ld b/qemu/qemu-git/sparc64.ld new file mode 100644 index 0000000..9ea4143 --- /dev/null +++ b/qemu/qemu-git/sparc64.ld @@ -0,0 +1,138 @@ +OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", + "elf64-sparc") +OUTPUT_ARCH(sparc:v9) +ENTRY(_start) +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.text : + { *(.rel.text) *(.rel.gnu.linkonce.t*) } + .rela.text : + { *(.rela.text) *(.rela.gnu.linkonce.t*) } + .rel.data : + { *(.rel.data) *(.rel.gnu.linkonce.d*) } + .rela.data : + { *(.rela.data) *(.rela.gnu.linkonce.d*) } + .rel.rodata : + { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } + .rela.rodata : + { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } =0x47ff041f + .text : + { + *(.text) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) + } =0x47ff041f + _etext = .; + PROVIDE (etext = .); + .fini : { *(.fini) } =0x47ff041f + .rodata : { *(.rodata) *(.gnu.linkonce.r*) } + .rodata1 : { *(.rodata1) } + . = ALIGN(64 / 8); + PROVIDE (__preinit_array_start = .); + .preinit_array : { *(.preinit_array) } + PROVIDE (__preinit_array_end = .); + PROVIDE (__init_array_start = .); + .init_array : { *(.init_array) } + PROVIDE (__init_array_end = .); + PROVIDE (__fini_array_start = .); + .fini_array : { *(.fini_array) } + PROVIDE (__fini_array_end = .); + .reginfo : { *(.reginfo) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(0x100000) + (. & (0x100000 - 1)); + .data : + { + *(.gen_code) + *(.data) + *(.gnu.linkonce.d*) + CONSTRUCTORS + } + .data1 : { *(.data1) } + .ctors : + { + *(.ctors) + } + .dtors : + { + *(.dtors) + } + .plt : { *(.plt) } + .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : { *(.sdata) } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .sbss : { *(.sbss) *(.scommon) } + .bss : + { + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ +} diff --git a/qemu/qemu-git/target-arm/.svn/all-wcprops b/qemu/qemu-git/target-arm/.svn/all-wcprops new file mode 100644 index 0000000..f762d52 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 50 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm +END +neon_helper.c +K 25 +svn:wc:ra_dav:version-url +V 64 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/neon_helper.c +END +helper.c +K 25 +svn:wc:ra_dav:version-url +V 59 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/helper.c +END +iwmmxt_helper.c +K 25 +svn:wc:ra_dav:version-url +V 66 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/iwmmxt_helper.c +END +op_addsub.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/op_addsub.h +END +helpers.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/helpers.h +END +exec.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/exec.h +END +cpu.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/cpu.h +END +op_helper.c +K 25 +svn:wc:ra_dav:version-url +V 62 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/op_helper.c +END +translate.c +K 25 +svn:wc:ra_dav:version-url +V 62 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/target-arm/translate.c +END diff --git a/qemu/qemu-git/target-arm/.svn/entries b/qemu/qemu-git/target-arm/.svn/entries new file mode 100644 index 0000000..f1e4908 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/target-arm +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +neon_helper.c +file + + + + +2013-08-23T00:54:48.000000Z +18af6516540342d43df7cc8892c5f4be +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +35208 + +helper.c +file + + + + +2013-08-23T00:54:48.000000Z +823155c4d333cf222454e866d2ce7d5f +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +73283 + +iwmmxt_helper.c +file + + + + +2013-08-23T00:54:48.000000Z +8250353c2a25355004e2a16e16a7790f +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +25270 + +op_addsub.h +file + + + + +2013-08-23T00:54:48.000000Z +b6b4efec5d913f6524d22b51e6c35b1e +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +1841 + +helpers.h +file + + + + +2013-08-23T00:54:48.000000Z +776a9380263a7c3b95531f8b96a2bcff +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +16327 + +exec.h +file + + + + +2013-08-23T00:54:48.000000Z +c2acd2fca23a0a1e0bbb05d36948c4ba +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +1603 + +cpu.h +file + + + + +2013-08-23T00:54:48.000000Z +354b69a5f0344806d9016a0e988a0a4d +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +14765 + +op_helper.c +file + + + + +2013-08-23T00:54:48.000000Z +c0efc1eb0fd92046061b3ce8fc79437f +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +10951 + +translate.c +file + + + + +2013-08-23T00:54:48.000000Z +cb17dd22f174b2437221c58d73ab9e53 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +317978 + diff --git a/qemu/qemu-git/target-arm/.svn/text-base/cpu.h.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/cpu.h.svn-base new file mode 100644 index 0000000..a75a5be --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/cpu.h.svn-base @@ -0,0 +1,457 @@ +/* + * ARM virtual CPU header + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#ifndef CPU_ARM_H +#define CPU_ARM_H + +#define TARGET_LONG_BITS 32 + +#define ELF_MACHINE EM_ARM + +#define CPUState struct CPUARMState + +#include "cpu-defs.h" + +#include "softfloat.h" + +#define TARGET_HAS_ICE 1 + +#define EXCP_UDEF 1 /* undefined instruction */ +#define EXCP_SWI 2 /* software interrupt */ +#define EXCP_PREFETCH_ABORT 3 +#define EXCP_DATA_ABORT 4 +#define EXCP_IRQ 5 +#define EXCP_FIQ 6 +#define EXCP_BKPT 7 +#define EXCP_EXCEPTION_EXIT 8 /* Return from v7M exception. */ +#define EXCP_KERNEL_TRAP 9 /* Jumped to kernel code page. */ +#define EXCP_STREX 10 + +#define ARMV7M_EXCP_RESET 1 +#define ARMV7M_EXCP_NMI 2 +#define ARMV7M_EXCP_HARD 3 +#define ARMV7M_EXCP_MEM 4 +#define ARMV7M_EXCP_BUS 5 +#define ARMV7M_EXCP_USAGE 6 +#define ARMV7M_EXCP_SVC 11 +#define ARMV7M_EXCP_DEBUG 12 +#define ARMV7M_EXCP_PENDSV 14 +#define ARMV7M_EXCP_SYSTICK 15 + +typedef void ARMWriteCPFunc(void *opaque, int cp_info, + int srcreg, int operand, uint32_t value); +typedef uint32_t ARMReadCPFunc(void *opaque, int cp_info, + int dstreg, int operand); + +struct arm_boot_info; + +#define NB_MMU_MODES 2 + +/* We currently assume float and double are IEEE single and double + precision respectively. + Doing runtime conversions is tricky because VFP registers may contain + integer values (eg. as the result of a FTOSI instruction). + s<2n> maps to the least significant half of d + s<2n+1> maps to the most significant half of d + */ + +typedef struct CPUARMState { + /* Regs for current mode. */ + uint32_t regs[16]; + /* Frequently accessed CPSR bits are stored separately for efficiently. + This contains all the other bits. Use cpsr_{read,write} to access + the whole CPSR. */ + uint32_t uncached_cpsr; + uint32_t spsr; + + /* Banked registers. */ + uint32_t banked_spsr[6]; + uint32_t banked_r13[6]; + uint32_t banked_r14[6]; + + /* These hold r8-r12. */ + uint32_t usr_regs[5]; + uint32_t fiq_regs[5]; + + /* cpsr flag cache for faster execution */ + uint32_t CF; /* 0 or 1 */ + uint32_t VF; /* V is the bit 31. All other bits are undefined */ + uint32_t NF; /* N is bit 31. All other bits are undefined. */ + uint32_t ZF; /* Z set if zero. */ + uint32_t QF; /* 0 or 1 */ + uint32_t GE; /* cpsr[19:16] */ + uint32_t thumb; /* cpsr[5]. 0 = arm mode, 1 = thumb mode. */ + uint32_t condexec_bits; /* IT bits. cpsr[15:10,26:25]. */ + + /* System control coprocessor (cp15) */ + struct { + uint32_t c0_cpuid; + uint32_t c0_cachetype; + uint32_t c0_ccsid[16]; /* Cache size. */ + uint32_t c0_clid; /* Cache level. */ + uint32_t c0_cssel; /* Cache size selection. */ + uint32_t c0_c1[8]; /* Feature registers. */ + uint32_t c0_c2[8]; /* Instruction set registers. */ + uint32_t c1_sys; /* System control register. */ + uint32_t c1_coproc; /* Coprocessor access register. */ + uint32_t c1_xscaleauxcr; /* XScale auxiliary control register. */ + uint32_t c2_base0; /* MMU translation table base 0. */ + uint32_t c2_base1; /* MMU translation table base 1. */ + uint32_t c2_control; /* MMU translation table base control. */ + uint32_t c2_mask; /* MMU translation table base selection mask. */ + uint32_t c2_base_mask; /* MMU translation table base 0 mask. */ + uint32_t c2_data; /* MPU data cachable bits. */ + uint32_t c2_insn; /* MPU instruction cachable bits. */ + uint32_t c3; /* MMU domain access control register + MPU write buffer control. */ + uint32_t c5_insn; /* Fault status registers. */ + uint32_t c5_data; + uint32_t c6_region[8]; /* MPU base/size registers. */ + uint32_t c6_insn; /* Fault address registers. */ + uint32_t c6_data; + uint32_t c9_insn; /* Cache lockdown registers. */ + uint32_t c9_data; + uint32_t c13_fcse; /* FCSE PID. */ + uint32_t c13_context; /* Context ID. */ + uint32_t c13_tls1; /* User RW Thread register. */ + uint32_t c13_tls2; /* User RO Thread register. */ + uint32_t c13_tls3; /* Privileged Thread register. */ + uint32_t c15_cpar; /* XScale Coprocessor Access Register */ + uint32_t c15_ticonfig; /* TI925T configuration byte. */ + uint32_t c15_i_max; /* Maximum D-cache dirty line index. */ + uint32_t c15_i_min; /* Minimum D-cache dirty line index. */ + uint32_t c15_threadid; /* TI debugger thread-ID. */ + } cp15; + + struct { + uint32_t other_sp; + uint32_t vecbase; + uint32_t basepri; + uint32_t control; + int current_sp; + int exception; + int pending_exception; + void *nvic; + } v7m; + + /* Coprocessor IO used by peripherals */ + struct { + ARMReadCPFunc *cp_read; + ARMWriteCPFunc *cp_write; + void *opaque; + } cp[15]; + + /* Thumb-2 EE state. */ + uint32_t teecr; + uint32_t teehbr; + + /* Internal CPU feature flags. */ + uint32_t features; + + /* Callback for vectored interrupt controller. */ + int (*get_irq_vector)(struct CPUARMState *); + void *irq_opaque; + + /* VFP coprocessor state. */ + struct { + float64 regs[32]; + + uint32_t xregs[16]; + /* We store these fpcsr fields separately for convenience. */ + int vec_len; + int vec_stride; + + /* scratch space when Tn are not sufficient. */ + uint32_t scratch[8]; + + float_status fp_status; + } vfp; + uint32_t exclusive_addr; + uint32_t exclusive_val; + uint32_t exclusive_high; +#if defined(CONFIG_USER_ONLY) + uint32_t exclusive_test; + uint32_t exclusive_info; +#endif + + /* iwMMXt coprocessor state. */ + struct { + uint64_t regs[16]; + uint64_t val; + + uint32_t cregs[16]; + } iwmmxt; + +#if defined(CONFIG_USER_ONLY) + /* For usermode syscall translation. */ + int eabi; +#endif + + CPU_COMMON + + /* These fields after the common ones so they are preserved on reset. */ + struct arm_boot_info *boot_info; +} CPUARMState; + +CPUARMState *cpu_arm_init(const char *cpu_model); +void arm_translate_init(void); +int cpu_arm_exec(CPUARMState *s); +void cpu_arm_close(CPUARMState *s); +void do_interrupt(CPUARMState *); +void switch_mode(CPUARMState *, int); +uint32_t do_arm_semihosting(CPUARMState *env); + +/* you can call this signal handler from your SIGBUS and SIGSEGV + signal handlers to inform the virtual CPU of exceptions. non zero + is returned if the signal was handled by the virtual CPU. */ +int cpu_arm_signal_handler(int host_signum, void *pinfo, + void *puc); +int cpu_arm_handle_mmu_fault (CPUARMState *env, target_ulong address, int rw, + int mmu_idx, int is_softmuu); +#define cpu_handle_mmu_fault cpu_arm_handle_mmu_fault + +void cpu_lock(void); +void cpu_unlock(void); +static inline void cpu_set_tls(CPUARMState *env, target_ulong newtls) +{ + env->cp15.c13_tls2 = newtls; +} + +#define CPSR_M (0x1f) +#define CPSR_T (1 << 5) +#define CPSR_F (1 << 6) +#define CPSR_I (1 << 7) +#define CPSR_A (1 << 8) +#define CPSR_E (1 << 9) +#define CPSR_IT_2_7 (0xfc00) +#define CPSR_GE (0xf << 16) +#define CPSR_RESERVED (0xf << 20) +#define CPSR_J (1 << 24) +#define CPSR_IT_0_1 (3 << 25) +#define CPSR_Q (1 << 27) +#define CPSR_V (1 << 28) +#define CPSR_C (1 << 29) +#define CPSR_Z (1 << 30) +#define CPSR_N (1 << 31) +#define CPSR_NZCV (CPSR_N | CPSR_Z | CPSR_C | CPSR_V) + +#define CPSR_IT (CPSR_IT_0_1 | CPSR_IT_2_7) +#define CACHED_CPSR_BITS (CPSR_T | CPSR_GE | CPSR_IT | CPSR_Q | CPSR_NZCV) +/* Bits writable in user mode. */ +#define CPSR_USER (CPSR_NZCV | CPSR_Q | CPSR_GE) +/* Execution state bits. MRS read as zero, MSR writes ignored. */ +#define CPSR_EXEC (CPSR_T | CPSR_IT | CPSR_J) + +/* Return the current CPSR value. */ +uint32_t cpsr_read(CPUARMState *env); +/* Set the CPSR. Note that some bits of mask must be all-set or all-clear. */ +void cpsr_write(CPUARMState *env, uint32_t val, uint32_t mask); + +/* Return the current xPSR value. */ +static inline uint32_t xpsr_read(CPUARMState *env) +{ + int ZF; + ZF = (env->ZF == 0); + return (env->NF & 0x80000000) | (ZF << 30) + | (env->CF << 29) | ((env->VF & 0x80000000) >> 3) | (env->QF << 27) + | (env->thumb << 24) | ((env->condexec_bits & 3) << 25) + | ((env->condexec_bits & 0xfc) << 8) + | env->v7m.exception; +} + +/* Set the xPSR. Note that some bits of mask must be all-set or all-clear. */ +static inline void xpsr_write(CPUARMState *env, uint32_t val, uint32_t mask) +{ + if (mask & CPSR_NZCV) { + env->ZF = (~val) & CPSR_Z; + env->NF = val; + env->CF = (val >> 29) & 1; + env->VF = (val << 3) & 0x80000000; + } + if (mask & CPSR_Q) + env->QF = ((val & CPSR_Q) != 0); + if (mask & (1 << 24)) + env->thumb = ((val & (1 << 24)) != 0); + if (mask & CPSR_IT_0_1) { + env->condexec_bits &= ~3; + env->condexec_bits |= (val >> 25) & 3; + } + if (mask & CPSR_IT_2_7) { + env->condexec_bits &= 3; + env->condexec_bits |= (val >> 8) & 0xfc; + } + if (mask & 0x1ff) { + env->v7m.exception = val & 0x1ff; + } +} + +enum arm_cpu_mode { + ARM_CPU_MODE_USR = 0x10, + ARM_CPU_MODE_FIQ = 0x11, + ARM_CPU_MODE_IRQ = 0x12, + ARM_CPU_MODE_SVC = 0x13, + ARM_CPU_MODE_ABT = 0x17, + ARM_CPU_MODE_UND = 0x1b, + ARM_CPU_MODE_SYS = 0x1f +}; + +/* VFP system registers. */ +#define ARM_VFP_FPSID 0 +#define ARM_VFP_FPSCR 1 +#define ARM_VFP_MVFR1 6 +#define ARM_VFP_MVFR0 7 +#define ARM_VFP_FPEXC 8 +#define ARM_VFP_FPINST 9 +#define ARM_VFP_FPINST2 10 + +/* iwMMXt coprocessor control registers. */ +#define ARM_IWMMXT_wCID 0 +#define ARM_IWMMXT_wCon 1 +#define ARM_IWMMXT_wCSSF 2 +#define ARM_IWMMXT_wCASF 3 +#define ARM_IWMMXT_wCGR0 8 +#define ARM_IWMMXT_wCGR1 9 +#define ARM_IWMMXT_wCGR2 10 +#define ARM_IWMMXT_wCGR3 11 + +enum arm_features { + ARM_FEATURE_VFP, + ARM_FEATURE_AUXCR, /* ARM1026 Auxiliary control register. */ + ARM_FEATURE_XSCALE, /* Intel XScale extensions. */ + ARM_FEATURE_IWMMXT, /* Intel iwMMXt extension. */ + ARM_FEATURE_V6, + ARM_FEATURE_V6K, + ARM_FEATURE_V7, + ARM_FEATURE_THUMB2, + ARM_FEATURE_MPU, /* Only has Memory Protection Unit, not full MMU. */ + ARM_FEATURE_VFP3, + ARM_FEATURE_VFP_FP16, + ARM_FEATURE_NEON, + ARM_FEATURE_DIV, + ARM_FEATURE_M, /* Microcontroller profile. */ + ARM_FEATURE_OMAPCP, /* OMAP specific CP15 ops handling. */ + ARM_FEATURE_THUMB2EE +}; + +static inline int arm_feature(CPUARMState *env, int feature) +{ + return (env->features & (1u << feature)) != 0; +} + +void arm_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...)); + +/* Interface between CPU and Interrupt controller. */ +void armv7m_nvic_set_pending(void *opaque, int irq); +int armv7m_nvic_acknowledge_irq(void *opaque); +void armv7m_nvic_complete_irq(void *opaque, int irq); + +void cpu_arm_set_cp_io(CPUARMState *env, int cpnum, + ARMReadCPFunc *cp_read, ARMWriteCPFunc *cp_write, + void *opaque); + +/* Does the core conform to the the "MicroController" profile. e.g. Cortex-M3. + Note the M in older cores (eg. ARM7TDMI) stands for Multiply. These are + conventional cores (ie. Application or Realtime profile). */ + +#define IS_M(env) arm_feature(env, ARM_FEATURE_M) +#define ARM_CPUID(env) (env->cp15.c0_cpuid) + +#define ARM_CPUID_ARM1026 0x4106a262 +#define ARM_CPUID_ARM926 0x41069265 +#define ARM_CPUID_ARM946 0x41059461 +#define ARM_CPUID_TI915T 0x54029152 +#define ARM_CPUID_TI925T 0x54029252 +#define ARM_CPUID_PXA250 0x69052100 +#define ARM_CPUID_PXA255 0x69052d00 +#define ARM_CPUID_PXA260 0x69052903 +#define ARM_CPUID_PXA261 0x69052d05 +#define ARM_CPUID_PXA262 0x69052d06 +#define ARM_CPUID_PXA270 0x69054110 +#define ARM_CPUID_PXA270_A0 0x69054110 +#define ARM_CPUID_PXA270_A1 0x69054111 +#define ARM_CPUID_PXA270_B0 0x69054112 +#define ARM_CPUID_PXA270_B1 0x69054113 +#define ARM_CPUID_PXA270_C0 0x69054114 +#define ARM_CPUID_PXA270_C5 0x69054117 +#define ARM_CPUID_ARM1136 0x4117b363 +#define ARM_CPUID_ARM1136_R2 0x4107b362 +#define ARM_CPUID_ARM11MPCORE 0x410fb022 +#define ARM_CPUID_CORTEXA8 0x410fc080 +#define ARM_CPUID_CORTEXA9 0x410fc090 +#define ARM_CPUID_CORTEXM3 0x410fc231 +#define ARM_CPUID_ANY 0xffffffff + +#if defined(CONFIG_USER_ONLY) +#define TARGET_PAGE_BITS 12 +#else +/* The ARM MMU allows 1k pages. */ +/* ??? Linux doesn't actually use these, and they're deprecated in recent + architecture revisions. Maybe a configure option to disable them. */ +#define TARGET_PAGE_BITS 10 +#endif + +#define cpu_init cpu_arm_init +#define cpu_exec cpu_arm_exec +#define cpu_gen_code cpu_arm_gen_code +#define cpu_signal_handler cpu_arm_signal_handler +#define cpu_list arm_cpu_list + +#ifndef X49GP +#define CPU_SAVE_VERSION 2 +#endif + +/* MMU modes definitions */ +#define MMU_MODE0_SUFFIX _kernel +#define MMU_MODE1_SUFFIX _user +#define MMU_USER_IDX 1 +static inline int cpu_mmu_index (CPUState *env) +{ + return (env->uncached_cpsr & CPSR_M) == ARM_CPU_MODE_USR ? 1 : 0; +} + +#if defined(CONFIG_USER_ONLY) +static inline void cpu_clone_regs(CPUState *env, target_ulong newsp) +{ + if (newsp) + env->regs[13] = newsp; + env->regs[0] = 0; +} +#endif + +#include "cpu-all.h" +#include "exec-all.h" + +static inline void cpu_pc_from_tb(CPUState *env, TranslationBlock *tb) +{ + env->regs[15] = tb->pc; +} + +static inline void cpu_get_tb_cpu_state(CPUState *env, target_ulong *pc, + target_ulong *cs_base, int *flags) +{ + *pc = env->regs[15]; + *cs_base = 0; + *flags = env->thumb | (env->vfp.vec_len << 1) + | (env->vfp.vec_stride << 4) | (env->condexec_bits << 8); + if ((env->uncached_cpsr & CPSR_M) != ARM_CPU_MODE_USR) + *flags |= (1 << 6); + if (env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30)) + *flags |= (1 << 7); +} + +#endif diff --git a/qemu/qemu-git/target-arm/.svn/text-base/exec.h.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/exec.h.svn-base new file mode 100644 index 0000000..e9848e1 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/exec.h.svn-base @@ -0,0 +1,60 @@ +/* + * ARM execution defines + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include "config.h" +#include "dyngen-exec.h" + +register struct CPUARMState *env asm(AREG0); + +#define M0 env->iwmmxt.val + +#include "cpu.h" +#include "exec-all.h" + +static inline void env_to_regs(void) +{ +} + +static inline void regs_to_env(void) +{ +} + +static inline int cpu_has_work(CPUState *env) +{ + return (env->interrupt_request & + (CPU_INTERRUPT_FIQ | CPU_INTERRUPT_HARD | CPU_INTERRUPT_EXITTB)); +} + +static inline int cpu_halted(CPUState *env) { + if (!env->halted) + return 0; + /* An interrupt wakes the CPU even if the I and F CPSR bits are + set. We use EXITTB to silently wake CPU without causing an + actual interrupt. */ + if (cpu_has_work(env)) { + env->halted = 0; + return 0; + } + return EXCP_HALTED; +} + +#if !defined(CONFIG_USER_ONLY) +#include "softmmu_exec.h" +#endif + +void raise_exception(int); diff --git a/qemu/qemu-git/target-arm/.svn/text-base/helper.c.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/helper.c.svn-base new file mode 100644 index 0000000..b3aec99 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/helper.c.svn-base @@ -0,0 +1,2598 @@ +#include +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "gdbstub.h" +#include "helpers.h" +#include "qemu-common.h" +#include "host-utils.h" + +static uint32_t cortexa9_cp15_c0_c1[8] = +{ 0x1031, 0x11, 0x000, 0, 0x00100103, 0x20000000, 0x01230000, 0x00002111 }; + +static uint32_t cortexa9_cp15_c0_c2[8] = +{ 0x00101111, 0x13112111, 0x21232041, 0x11112131, 0x00111142, 0, 0, 0 }; + +static uint32_t cortexa8_cp15_c0_c1[8] = +{ 0x1031, 0x11, 0x400, 0, 0x31100003, 0x20000000, 0x01202000, 0x11 }; + +static uint32_t cortexa8_cp15_c0_c2[8] = +{ 0x00101111, 0x12112111, 0x21232031, 0x11112131, 0x00111142, 0, 0, 0 }; + +static uint32_t mpcore_cp15_c0_c1[8] = +{ 0x111, 0x1, 0, 0x2, 0x01100103, 0x10020302, 0x01222000, 0 }; + +static uint32_t mpcore_cp15_c0_c2[8] = +{ 0x00100011, 0x12002111, 0x11221011, 0x01102131, 0x141, 0, 0, 0 }; + +static uint32_t arm1136_cp15_c0_c1[8] = +{ 0x111, 0x1, 0x2, 0x3, 0x01130003, 0x10030302, 0x01222110, 0 }; + +static uint32_t arm1136_cp15_c0_c2[8] = +{ 0x00140011, 0x12002111, 0x11231111, 0x01102131, 0x141, 0, 0, 0 }; + +static uint32_t cpu_arm_find_by_name(const char *name); + +static inline void set_feature(CPUARMState *env, int feature) +{ + env->features |= 1u << feature; +} + +static void cpu_reset_model_id(CPUARMState *env, uint32_t id) +{ + env->cp15.c0_cpuid = id; + switch (id) { + case ARM_CPUID_ARM926: + set_feature(env, ARM_FEATURE_VFP); + env->vfp.xregs[ARM_VFP_FPSID] = 0x41011090; + env->cp15.c0_cachetype = 0x1dd20d2; + env->cp15.c1_sys = 0x00090078; + break; + case ARM_CPUID_ARM946: + set_feature(env, ARM_FEATURE_MPU); + env->cp15.c0_cachetype = 0x0f004006; + env->cp15.c1_sys = 0x00000078; + break; + case ARM_CPUID_ARM1026: + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_AUXCR); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410110a0; + env->cp15.c0_cachetype = 0x1dd20d2; + env->cp15.c1_sys = 0x00090078; + break; + case ARM_CPUID_ARM1136_R2: + case ARM_CPUID_ARM1136: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_AUXCR); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410120b4; + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11111111; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x00000000; + memcpy(env->cp15.c0_c1, arm1136_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, arm1136_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x1dd20d2; + break; + case ARM_CPUID_ARM11MPCORE: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_AUXCR); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410120b4; + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11111111; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x00000000; + memcpy(env->cp15.c0_c1, mpcore_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, mpcore_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x1dd20d2; + break; + case ARM_CPUID_CORTEXA8: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_AUXCR); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_VFP3); + set_feature(env, ARM_FEATURE_NEON); + set_feature(env, ARM_FEATURE_THUMB2EE); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410330c0; + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11110222; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x00011100; + memcpy(env->cp15.c0_c1, cortexa8_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, cortexa8_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x82048004; + env->cp15.c0_clid = (1 << 27) | (2 << 24) | 3; + env->cp15.c0_ccsid[0] = 0xe007e01a; /* 16k L1 dcache. */ + env->cp15.c0_ccsid[1] = 0x2007e01a; /* 16k L1 icache. */ + env->cp15.c0_ccsid[2] = 0xf0000000; /* No L2 icache. */ + break; + case ARM_CPUID_CORTEXA9: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_AUXCR); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_VFP3); + set_feature(env, ARM_FEATURE_VFP_FP16); + set_feature(env, ARM_FEATURE_NEON); + set_feature(env, ARM_FEATURE_THUMB2EE); + env->vfp.xregs[ARM_VFP_FPSID] = 0x41034000; /* Guess */ + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11110222; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x01111111; + memcpy(env->cp15.c0_c1, cortexa9_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, cortexa9_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x80038003; + env->cp15.c0_clid = (1 << 27) | (1 << 24) | 3; + env->cp15.c0_ccsid[0] = 0xe00fe015; /* 16k L1 dcache. */ + env->cp15.c0_ccsid[1] = 0x200fe015; /* 16k L1 icache. */ + break; + case ARM_CPUID_CORTEXM3: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_M); + set_feature(env, ARM_FEATURE_DIV); + break; + case ARM_CPUID_ANY: /* For userspace emulation. */ + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_VFP3); + set_feature(env, ARM_FEATURE_VFP_FP16); + set_feature(env, ARM_FEATURE_NEON); + set_feature(env, ARM_FEATURE_THUMB2EE); + set_feature(env, ARM_FEATURE_DIV); + break; + case ARM_CPUID_TI915T: + case ARM_CPUID_TI925T: + set_feature(env, ARM_FEATURE_OMAPCP); + env->cp15.c0_cpuid = ARM_CPUID_TI925T; /* Depends on wiring. */ + env->cp15.c0_cachetype = 0x5109149; + env->cp15.c1_sys = 0x00000070; + env->cp15.c15_i_max = 0x000; + env->cp15.c15_i_min = 0xff0; + break; + case ARM_CPUID_PXA250: + case ARM_CPUID_PXA255: + case ARM_CPUID_PXA260: + case ARM_CPUID_PXA261: + case ARM_CPUID_PXA262: + set_feature(env, ARM_FEATURE_XSCALE); + /* JTAG_ID is ((id << 28) | 0x09265013) */ + env->cp15.c0_cachetype = 0xd172172; + env->cp15.c1_sys = 0x00000078; + break; + case ARM_CPUID_PXA270_A0: + case ARM_CPUID_PXA270_A1: + case ARM_CPUID_PXA270_B0: + case ARM_CPUID_PXA270_B1: + case ARM_CPUID_PXA270_C0: + case ARM_CPUID_PXA270_C5: + set_feature(env, ARM_FEATURE_XSCALE); + /* JTAG_ID is ((id << 28) | 0x09265013) */ + set_feature(env, ARM_FEATURE_IWMMXT); + env->iwmmxt.cregs[ARM_IWMMXT_wCID] = 0x69051000 | 'Q'; + env->cp15.c0_cachetype = 0xd172172; + env->cp15.c1_sys = 0x00000078; + break; + default: + cpu_abort(env, "Bad CPU ID: %x\n", id); + break; + } +} + +void cpu_reset(CPUARMState *env) +{ + uint32_t id; + + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + + id = env->cp15.c0_cpuid; + memset(env, 0, offsetof(CPUARMState, breakpoints)); + if (id) + cpu_reset_model_id(env, id); +#if defined (CONFIG_USER_ONLY) + env->uncached_cpsr = ARM_CPU_MODE_USR; + env->vfp.xregs[ARM_VFP_FPEXC] = 1 << 30; +#else + /* SVC mode with interrupts disabled. */ + env->uncached_cpsr = ARM_CPU_MODE_SVC | CPSR_A | CPSR_F | CPSR_I; + /* On ARMv7-M the CPSR_I is the value of the PRIMASK register, and is + clear at reset. */ + if (IS_M(env)) + env->uncached_cpsr &= ~CPSR_I; + env->vfp.xregs[ARM_VFP_FPEXC] = 0; + env->cp15.c2_base_mask = 0xffffc000u; +#endif + env->regs[15] = 0; + tlb_flush(env, 1); +} + +static int vfp_gdb_get_reg(CPUState *env, uint8_t *buf, int reg) +{ + int nregs; + + /* VFP data registers are always little-endian. */ + nregs = arm_feature(env, ARM_FEATURE_VFP3) ? 32 : 16; + if (reg < nregs) { + stfq_le_p(buf, env->vfp.regs[reg]); + return 8; + } + if (arm_feature(env, ARM_FEATURE_NEON)) { + /* Aliases for Q regs. */ + nregs += 16; + if (reg < nregs) { + stfq_le_p(buf, env->vfp.regs[(reg - 32) * 2]); + stfq_le_p(buf + 8, env->vfp.regs[(reg - 32) * 2 + 1]); + return 16; + } + } + switch (reg - nregs) { + case 0: stl_p(buf, env->vfp.xregs[ARM_VFP_FPSID]); return 4; + case 1: stl_p(buf, env->vfp.xregs[ARM_VFP_FPSCR]); return 4; + case 2: stl_p(buf, env->vfp.xregs[ARM_VFP_FPEXC]); return 4; + } + return 0; +} + +static int vfp_gdb_set_reg(CPUState *env, uint8_t *buf, int reg) +{ + int nregs; + + nregs = arm_feature(env, ARM_FEATURE_VFP3) ? 32 : 16; + if (reg < nregs) { + env->vfp.regs[reg] = ldfq_le_p(buf); + return 8; + } + if (arm_feature(env, ARM_FEATURE_NEON)) { + nregs += 16; + if (reg < nregs) { + env->vfp.regs[(reg - 32) * 2] = ldfq_le_p(buf); + env->vfp.regs[(reg - 32) * 2 + 1] = ldfq_le_p(buf + 8); + return 16; + } + } + switch (reg - nregs) { + case 0: env->vfp.xregs[ARM_VFP_FPSID] = ldl_p(buf); return 4; + case 1: env->vfp.xregs[ARM_VFP_FPSCR] = ldl_p(buf); return 4; + case 2: env->vfp.xregs[ARM_VFP_FPEXC] = ldl_p(buf) & (1 << 30); return 4; + } + return 0; +} + +CPUARMState *cpu_arm_init(const char *cpu_model) +{ + CPUARMState *env; + uint32_t id; + static int inited = 0; + + id = cpu_arm_find_by_name(cpu_model); + if (id == 0) + return NULL; + env = qemu_mallocz(sizeof(CPUARMState)); + cpu_exec_init(env); + if (!inited) { + inited = 1; + arm_translate_init(); + } + + env->cpu_model_str = cpu_model; + env->cp15.c0_cpuid = id; + cpu_reset(env); + if (arm_feature(env, ARM_FEATURE_NEON)) { + gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg, + 51, "arm-neon.xml", 0); + } else if (arm_feature(env, ARM_FEATURE_VFP3)) { + gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg, + 35, "arm-vfp3.xml", 0); + } else if (arm_feature(env, ARM_FEATURE_VFP)) { + gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg, + 19, "arm-vfp.xml", 0); + } + qemu_init_vcpu(env); + return env; +} + +struct arm_cpu_t { + uint32_t id; + const char *name; +}; + +static const struct arm_cpu_t arm_cpu_names[] = { + { ARM_CPUID_ARM926, "arm926"}, + { ARM_CPUID_ARM946, "arm946"}, + { ARM_CPUID_ARM1026, "arm1026"}, + { ARM_CPUID_ARM1136, "arm1136"}, + { ARM_CPUID_ARM1136_R2, "arm1136-r2"}, + { ARM_CPUID_ARM11MPCORE, "arm11mpcore"}, + { ARM_CPUID_CORTEXM3, "cortex-m3"}, + { ARM_CPUID_CORTEXA8, "cortex-a8"}, + { ARM_CPUID_CORTEXA9, "cortex-a9"}, + { ARM_CPUID_TI925T, "ti925t" }, + { ARM_CPUID_PXA250, "pxa250" }, + { ARM_CPUID_PXA255, "pxa255" }, + { ARM_CPUID_PXA260, "pxa260" }, + { ARM_CPUID_PXA261, "pxa261" }, + { ARM_CPUID_PXA262, "pxa262" }, + { ARM_CPUID_PXA270, "pxa270" }, + { ARM_CPUID_PXA270_A0, "pxa270-a0" }, + { ARM_CPUID_PXA270_A1, "pxa270-a1" }, + { ARM_CPUID_PXA270_B0, "pxa270-b0" }, + { ARM_CPUID_PXA270_B1, "pxa270-b1" }, + { ARM_CPUID_PXA270_C0, "pxa270-c0" }, + { ARM_CPUID_PXA270_C5, "pxa270-c5" }, + { ARM_CPUID_ANY, "any"}, + { 0, NULL} +}; + +void arm_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...)) +{ + int i; + + (*cpu_fprintf)(f, "Available CPUs:\n"); + for (i = 0; arm_cpu_names[i].name; i++) { + (*cpu_fprintf)(f, " %s\n", arm_cpu_names[i].name); + } +} + +/* return 0 if not found */ +static uint32_t cpu_arm_find_by_name(const char *name) +{ + int i; + uint32_t id; + + id = 0; + for (i = 0; arm_cpu_names[i].name; i++) { + if (strcmp(name, arm_cpu_names[i].name) == 0) { + id = arm_cpu_names[i].id; + break; + } + } + return id; +} + +void cpu_arm_close(CPUARMState *env) +{ + free(env); +} + +uint32_t cpsr_read(CPUARMState *env) +{ + int ZF; + ZF = (env->ZF == 0); + return env->uncached_cpsr | (env->NF & 0x80000000) | (ZF << 30) | + (env->CF << 29) | ((env->VF & 0x80000000) >> 3) | (env->QF << 27) + | (env->thumb << 5) | ((env->condexec_bits & 3) << 25) + | ((env->condexec_bits & 0xfc) << 8) + | (env->GE << 16); +} + +void cpsr_write(CPUARMState *env, uint32_t val, uint32_t mask) +{ + if (mask & CPSR_NZCV) { + env->ZF = (~val) & CPSR_Z; + env->NF = val; + env->CF = (val >> 29) & 1; + env->VF = (val << 3) & 0x80000000; + } + if (mask & CPSR_Q) + env->QF = ((val & CPSR_Q) != 0); + if (mask & CPSR_T) + env->thumb = ((val & CPSR_T) != 0); + if (mask & CPSR_IT_0_1) { + env->condexec_bits &= ~3; + env->condexec_bits |= (val >> 25) & 3; + } + if (mask & CPSR_IT_2_7) { + env->condexec_bits &= 3; + env->condexec_bits |= (val >> 8) & 0xfc; + } + if (mask & CPSR_GE) { + env->GE = (val >> 16) & 0xf; + } + + if ((env->uncached_cpsr ^ val) & mask & CPSR_M) { + switch_mode(env, val & CPSR_M); + } + mask &= ~CACHED_CPSR_BITS; + env->uncached_cpsr = (env->uncached_cpsr & ~mask) | (val & mask); +} + +/* Sign/zero extend */ +uint32_t HELPER(sxtb16)(uint32_t x) +{ + uint32_t res; + res = (uint16_t)(int8_t)x; + res |= (uint32_t)(int8_t)(x >> 16) << 16; + return res; +} + +uint32_t HELPER(uxtb16)(uint32_t x) +{ + uint32_t res; + res = (uint16_t)(uint8_t)x; + res |= (uint32_t)(uint8_t)(x >> 16) << 16; + return res; +} + +uint32_t HELPER(clz)(uint32_t x) +{ + return clz32(x); +} + +int32_t HELPER(sdiv)(int32_t num, int32_t den) +{ + if (den == 0) + return 0; + if (num == INT_MIN && den == -1) + return INT_MIN; + return num / den; +} + +uint32_t HELPER(udiv)(uint32_t num, uint32_t den) +{ + if (den == 0) + return 0; + return num / den; +} + +uint32_t HELPER(rbit)(uint32_t x) +{ + x = ((x & 0xff000000) >> 24) + | ((x & 0x00ff0000) >> 8) + | ((x & 0x0000ff00) << 8) + | ((x & 0x000000ff) << 24); + x = ((x & 0xf0f0f0f0) >> 4) + | ((x & 0x0f0f0f0f) << 4); + x = ((x & 0x88888888) >> 3) + | ((x & 0x44444444) >> 1) + | ((x & 0x22222222) << 1) + | ((x & 0x11111111) << 3); + return x; +} + +uint32_t HELPER(abs)(uint32_t x) +{ + return ((int32_t)x < 0) ? -x : x; +} + +#if defined(CONFIG_USER_ONLY) + +void do_interrupt (CPUState *env) +{ + env->exception_index = -1; +} + +int cpu_arm_handle_mmu_fault (CPUState *env, target_ulong address, int rw, + int mmu_idx, int is_softmmu) +{ + if (rw == 2) { + env->exception_index = EXCP_PREFETCH_ABORT; + env->cp15.c6_insn = address; + } else { + env->exception_index = EXCP_DATA_ABORT; + env->cp15.c6_data = address; + } + return 1; +} + +target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) +{ + return addr; +} + +/* These should probably raise undefined insn exceptions. */ +void HELPER(set_cp)(CPUState *env, uint32_t insn, uint32_t val) +{ + int op1 = (insn >> 8) & 0xf; + cpu_abort(env, "cp%i insn %08x\n", op1, insn); + return; +} + +uint32_t HELPER(get_cp)(CPUState *env, uint32_t insn) +{ + int op1 = (insn >> 8) & 0xf; + cpu_abort(env, "cp%i insn %08x\n", op1, insn); + return 0; +} + +void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val) +{ + cpu_abort(env, "cp15 insn %08x\n", insn); +} + +uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn) +{ + cpu_abort(env, "cp15 insn %08x\n", insn); + return 0; +} + +/* These should probably raise undefined insn exceptions. */ +void HELPER(v7m_msr)(CPUState *env, uint32_t reg, uint32_t val) +{ + cpu_abort(env, "v7m_mrs %d\n", reg); +} + +uint32_t HELPER(v7m_mrs)(CPUState *env, uint32_t reg) +{ + cpu_abort(env, "v7m_mrs %d\n", reg); + return 0; +} + +void switch_mode(CPUState *env, int mode) +{ + if (mode != ARM_CPU_MODE_USR) + cpu_abort(env, "Tried to switch out of user mode\n"); +} + +void HELPER(set_r13_banked)(CPUState *env, uint32_t mode, uint32_t val) +{ + cpu_abort(env, "banked r13 write\n"); +} + +uint32_t HELPER(get_r13_banked)(CPUState *env, uint32_t mode) +{ + cpu_abort(env, "banked r13 read\n"); + return 0; +} + +#else + +extern int semihosting_enabled; + +/* Map CPU modes onto saved register banks. */ +static inline int bank_number (int mode) +{ + switch (mode) { + case ARM_CPU_MODE_USR: + case ARM_CPU_MODE_SYS: + return 0; + case ARM_CPU_MODE_SVC: + return 1; + case ARM_CPU_MODE_ABT: + return 2; + case ARM_CPU_MODE_UND: + return 3; + case ARM_CPU_MODE_IRQ: + return 4; + case ARM_CPU_MODE_FIQ: + return 5; + } + cpu_abort(cpu_single_env, "Bad mode %x\n", mode); + return -1; +} + +void switch_mode(CPUState *env, int mode) +{ + int old_mode; + int i; + + old_mode = env->uncached_cpsr & CPSR_M; + if (mode == old_mode) + return; + + if (old_mode == ARM_CPU_MODE_FIQ) { + memcpy (env->fiq_regs, env->regs + 8, 5 * sizeof(uint32_t)); + memcpy (env->regs + 8, env->usr_regs, 5 * sizeof(uint32_t)); + } else if (mode == ARM_CPU_MODE_FIQ) { + memcpy (env->usr_regs, env->regs + 8, 5 * sizeof(uint32_t)); + memcpy (env->regs + 8, env->fiq_regs, 5 * sizeof(uint32_t)); + } + + i = bank_number(old_mode); + env->banked_r13[i] = env->regs[13]; + env->banked_r14[i] = env->regs[14]; + env->banked_spsr[i] = env->spsr; + + i = bank_number(mode); + env->regs[13] = env->banked_r13[i]; + env->regs[14] = env->banked_r14[i]; + env->spsr = env->banked_spsr[i]; +} + +static void v7m_push(CPUARMState *env, uint32_t val) +{ + env->regs[13] -= 4; + stl_phys(env->regs[13], val); +} + +static uint32_t v7m_pop(CPUARMState *env) +{ + uint32_t val; + val = ldl_phys(env->regs[13]); + env->regs[13] += 4; + return val; +} + +/* Switch to V7M main or process stack pointer. */ +static void switch_v7m_sp(CPUARMState *env, int process) +{ + uint32_t tmp; + if (env->v7m.current_sp != process) { + tmp = env->v7m.other_sp; + env->v7m.other_sp = env->regs[13]; + env->regs[13] = tmp; + env->v7m.current_sp = process; + } +} + +static void do_v7m_exception_exit(CPUARMState *env) +{ + uint32_t type; + uint32_t xpsr; + + type = env->regs[15]; + if (env->v7m.exception != 0) + armv7m_nvic_complete_irq(env->v7m.nvic, env->v7m.exception); + + /* Switch to the target stack. */ + switch_v7m_sp(env, (type & 4) != 0); + /* Pop registers. */ + env->regs[0] = v7m_pop(env); + env->regs[1] = v7m_pop(env); + env->regs[2] = v7m_pop(env); + env->regs[3] = v7m_pop(env); + env->regs[12] = v7m_pop(env); + env->regs[14] = v7m_pop(env); + env->regs[15] = v7m_pop(env); + xpsr = v7m_pop(env); + xpsr_write(env, xpsr, 0xfffffdff); + /* Undo stack alignment. */ + if (xpsr & 0x200) + env->regs[13] |= 4; + /* ??? The exception return type specifies Thread/Handler mode. However + this is also implied by the xPSR value. Not sure what to do + if there is a mismatch. */ + /* ??? Likewise for mismatches between the CONTROL register and the stack + pointer. */ +} + +static void do_interrupt_v7m(CPUARMState *env) +{ + uint32_t xpsr = xpsr_read(env); + uint32_t lr; + uint32_t addr; + + lr = 0xfffffff1; + if (env->v7m.current_sp) + lr |= 4; + if (env->v7m.exception == 0) + lr |= 8; + + /* For exceptions we just mark as pending on the NVIC, and let that + handle it. */ + /* TODO: Need to escalate if the current priority is higher than the + one we're raising. */ + switch (env->exception_index) { + case EXCP_UDEF: + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_USAGE); + return; + case EXCP_SWI: + env->regs[15] += 2; + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_SVC); + return; + case EXCP_PREFETCH_ABORT: + case EXCP_DATA_ABORT: + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_MEM); + return; + case EXCP_BKPT: + if (semihosting_enabled) { + int nr; + nr = lduw_code(env->regs[15]) & 0xff; + if (nr == 0xab) { + env->regs[15] += 2; + env->regs[0] = do_arm_semihosting(env); + return; + } + } + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_DEBUG); + return; + case EXCP_IRQ: + env->v7m.exception = armv7m_nvic_acknowledge_irq(env->v7m.nvic); + break; + case EXCP_EXCEPTION_EXIT: + do_v7m_exception_exit(env); + return; + default: + cpu_abort(env, "Unhandled exception 0x%x\n", env->exception_index); + return; /* Never happens. Keep compiler happy. */ + } + + /* Align stack pointer. */ + /* ??? Should only do this if Configuration Control Register + STACKALIGN bit is set. */ + if (env->regs[13] & 4) { + env->regs[13] -= 4; + xpsr |= 0x200; + } + /* Switch to the handler mode. */ + v7m_push(env, xpsr); + v7m_push(env, env->regs[15]); + v7m_push(env, env->regs[14]); + v7m_push(env, env->regs[12]); + v7m_push(env, env->regs[3]); + v7m_push(env, env->regs[2]); + v7m_push(env, env->regs[1]); + v7m_push(env, env->regs[0]); + switch_v7m_sp(env, 0); + env->uncached_cpsr &= ~CPSR_IT; + env->regs[14] = lr; + addr = ldl_phys(env->v7m.vecbase + env->v7m.exception * 4); + env->regs[15] = addr & 0xfffffffe; + env->thumb = addr & 1; +} + +/* Handle a CPU exception. */ +void do_interrupt(CPUARMState *env) +{ + uint32_t addr; + uint32_t mask; + int new_mode; + uint32_t offset; + + if (IS_M(env)) { + do_interrupt_v7m(env); + return; + } + /* TODO: Vectored interrupt controller. */ + switch (env->exception_index) { + case EXCP_UDEF: + new_mode = ARM_CPU_MODE_UND; + addr = 0x04; + mask = CPSR_I; + if (env->thumb) + offset = 2; + else + offset = 4; + break; + case EXCP_SWI: + if (semihosting_enabled) { + /* Check for semihosting interrupt. */ + if (env->thumb) { + mask = lduw_code(env->regs[15] - 2) & 0xff; + } else { + mask = ldl_code(env->regs[15] - 4) & 0xffffff; + } + /* Only intercept calls from privileged modes, to provide some + semblance of security. */ + if (((mask == 0x123456 && !env->thumb) + || (mask == 0xab && env->thumb)) + && (env->uncached_cpsr & CPSR_M) != ARM_CPU_MODE_USR) { + env->regs[0] = do_arm_semihosting(env); + return; + } + } + new_mode = ARM_CPU_MODE_SVC; + addr = 0x08; + mask = CPSR_I; + /* The PC already points to the next instruction. */ + offset = 0; + break; + case EXCP_BKPT: + /* See if this is a semihosting syscall. */ + if (env->thumb && semihosting_enabled) { + mask = lduw_code(env->regs[15]) & 0xff; + if (mask == 0xab + && (env->uncached_cpsr & CPSR_M) != ARM_CPU_MODE_USR) { + env->regs[15] += 2; + env->regs[0] = do_arm_semihosting(env); + return; + } + } + /* Fall through to prefetch abort. */ + case EXCP_PREFETCH_ABORT: + new_mode = ARM_CPU_MODE_ABT; + addr = 0x0c; + mask = CPSR_A | CPSR_I; + offset = 4; + break; + case EXCP_DATA_ABORT: + new_mode = ARM_CPU_MODE_ABT; + addr = 0x10; + mask = CPSR_A | CPSR_I; + offset = 8; + break; + case EXCP_IRQ: + new_mode = ARM_CPU_MODE_IRQ; + addr = 0x18; + /* Disable IRQ and imprecise data aborts. */ + mask = CPSR_A | CPSR_I; + offset = 4; + break; + case EXCP_FIQ: + new_mode = ARM_CPU_MODE_FIQ; + addr = 0x1c; + /* Disable FIQ, IRQ and imprecise data aborts. */ + mask = CPSR_A | CPSR_I | CPSR_F; + offset = 4; + break; + default: + cpu_abort(env, "Unhandled exception 0x%x\n", env->exception_index); + return; /* Never happens. Keep compiler happy. */ + } + /* High vectors. */ + if (env->cp15.c1_sys & (1 << 13)) { + addr += 0xffff0000; + } + switch_mode (env, new_mode); + env->spsr = cpsr_read(env); + /* Clear IT bits. */ + env->condexec_bits = 0; + /* Switch to the new mode, and switch to Arm mode. */ + /* ??? Thumb interrupt handlers not implemented. */ + env->uncached_cpsr = (env->uncached_cpsr & ~CPSR_M) | new_mode; + env->uncached_cpsr |= mask; + env->thumb = 0; + env->regs[14] = env->regs[15] + offset; + env->regs[15] = addr; + env->interrupt_request |= CPU_INTERRUPT_EXITTB; +} + +/* Check section/page access permissions. + Returns the page protection flags, or zero if the access is not + permitted. */ +static inline int check_ap(CPUState *env, int ap, int domain, int access_type, + int is_user) +{ + int prot_ro; + + if (domain == 3) + return PAGE_READ | PAGE_WRITE; + + if (access_type == 1) + prot_ro = 0; + else + prot_ro = PAGE_READ; + + switch (ap) { + case 0: + if (access_type == 1) + return 0; + switch ((env->cp15.c1_sys >> 8) & 3) { + case 1: + return is_user ? 0 : PAGE_READ; + case 2: + return PAGE_READ; + default: + return 0; + } + case 1: + return is_user ? 0 : PAGE_READ | PAGE_WRITE; + case 2: + if (is_user) + return prot_ro; + else + return PAGE_READ | PAGE_WRITE; + case 3: + return PAGE_READ | PAGE_WRITE; + case 4: /* Reserved. */ + return 0; + case 5: + return is_user ? 0 : prot_ro; + case 6: + return prot_ro; + case 7: + if (!arm_feature (env, ARM_FEATURE_V7)) + return 0; + return prot_ro; + default: + abort(); + } +} + +static uint32_t get_level1_table_address(CPUState *env, uint32_t address) +{ + uint32_t table; + + if (address & env->cp15.c2_mask) + table = env->cp15.c2_base1 & 0xffffc000; + else + table = env->cp15.c2_base0 & env->cp15.c2_base_mask; + + table |= (address >> 18) & 0x3ffc; + return table; +} + +static int get_phys_addr_v5(CPUState *env, uint32_t address, int access_type, + int is_user, uint32_t *phys_ptr, int *prot) +{ + int code; + uint32_t table; + uint32_t desc; + int type; + int ap; + int domain; + uint32_t phys_addr; + + /* Pagetable walk. */ + /* Lookup l1 descriptor. */ + table = get_level1_table_address(env, address); + desc = ldl_phys(table); + type = (desc & 3); + domain = (env->cp15.c3 >> ((desc >> 4) & 0x1e)) & 3; + if (type == 0) { + /* Section translation fault. */ + code = 5; + goto do_fault; + } + if (domain == 0 || domain == 2) { + if (type == 2) + code = 9; /* Section domain fault. */ + else + code = 11; /* Page domain fault. */ + goto do_fault; + } + if (type == 2) { + /* 1Mb section. */ + phys_addr = (desc & 0xfff00000) | (address & 0x000fffff); + ap = (desc >> 10) & 3; + code = 13; + } else { + /* Lookup l2 entry. */ + if (type == 1) { + /* Coarse pagetable. */ + table = (desc & 0xfffffc00) | ((address >> 10) & 0x3fc); + } else { + /* Fine pagetable. */ + table = (desc & 0xfffff000) | ((address >> 8) & 0xffc); + } + desc = ldl_phys(table); + switch (desc & 3) { + case 0: /* Page translation fault. */ + code = 7; + goto do_fault; + case 1: /* 64k page. */ + phys_addr = (desc & 0xffff0000) | (address & 0xffff); + ap = (desc >> (4 + ((address >> 13) & 6))) & 3; + break; + case 2: /* 4k page. */ + phys_addr = (desc & 0xfffff000) | (address & 0xfff); + ap = (desc >> (4 + ((address >> 13) & 6))) & 3; + break; + case 3: /* 1k page. */ + if (type == 1) { + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + phys_addr = (desc & 0xfffff000) | (address & 0xfff); + } else { + /* Page translation fault. */ + code = 7; + goto do_fault; + } + } else { + phys_addr = (desc & 0xfffffc00) | (address & 0x3ff); + } + ap = (desc >> 4) & 3; + break; + default: + /* Never happens, but compiler isn't smart enough to tell. */ + abort(); + } + code = 15; + } + *prot = check_ap(env, ap, domain, access_type, is_user); + if (!*prot) { + /* Access permission fault. */ + goto do_fault; + } + *phys_ptr = phys_addr; + return 0; +do_fault: + return code | (domain << 4); +} + +static int get_phys_addr_v6(CPUState *env, uint32_t address, int access_type, + int is_user, uint32_t *phys_ptr, int *prot) +{ + int code; + uint32_t table; + uint32_t desc; + uint32_t xn; + int type; + int ap; + int domain; + uint32_t phys_addr; + + /* Pagetable walk. */ + /* Lookup l1 descriptor. */ + table = get_level1_table_address(env, address); + desc = ldl_phys(table); + type = (desc & 3); + if (type == 0) { + /* Section translation fault. */ + code = 5; + domain = 0; + goto do_fault; + } else if (type == 2 && (desc & (1 << 18))) { + /* Supersection. */ + domain = 0; + } else { + /* Section or page. */ + domain = (desc >> 4) & 0x1e; + } + domain = (env->cp15.c3 >> domain) & 3; + if (domain == 0 || domain == 2) { + if (type == 2) + code = 9; /* Section domain fault. */ + else + code = 11; /* Page domain fault. */ + goto do_fault; + } + if (type == 2) { + if (desc & (1 << 18)) { + /* Supersection. */ + phys_addr = (desc & 0xff000000) | (address & 0x00ffffff); + } else { + /* Section. */ + phys_addr = (desc & 0xfff00000) | (address & 0x000fffff); + } + ap = ((desc >> 10) & 3) | ((desc >> 13) & 4); + xn = desc & (1 << 4); + code = 13; + } else { + /* Lookup l2 entry. */ + table = (desc & 0xfffffc00) | ((address >> 10) & 0x3fc); + desc = ldl_phys(table); + ap = ((desc >> 4) & 3) | ((desc >> 7) & 4); + switch (desc & 3) { + case 0: /* Page translation fault. */ + code = 7; + goto do_fault; + case 1: /* 64k page. */ + phys_addr = (desc & 0xffff0000) | (address & 0xffff); + xn = desc & (1 << 15); + break; + case 2: case 3: /* 4k page. */ + phys_addr = (desc & 0xfffff000) | (address & 0xfff); + xn = desc & 1; + break; + default: + /* Never happens, but compiler isn't smart enough to tell. */ + abort(); + } + code = 15; + } + if (xn && access_type == 2) + goto do_fault; + + /* The simplified model uses AP[0] as an access control bit. */ + if ((env->cp15.c1_sys & (1 << 29)) && (ap & 1) == 0) { + /* Access flag fault. */ + code = (code == 15) ? 6 : 3; + goto do_fault; + } + *prot = check_ap(env, ap, domain, access_type, is_user); + if (!*prot) { + /* Access permission fault. */ + goto do_fault; + } + *phys_ptr = phys_addr; + return 0; +do_fault: + return code | (domain << 4); +} + +static int get_phys_addr_mpu(CPUState *env, uint32_t address, int access_type, + int is_user, uint32_t *phys_ptr, int *prot) +{ + int n; + uint32_t mask; + uint32_t base; + + *phys_ptr = address; + for (n = 7; n >= 0; n--) { + base = env->cp15.c6_region[n]; + if ((base & 1) == 0) + continue; + mask = 1 << ((base >> 1) & 0x1f); + /* Keep this shift separate from the above to avoid an + (undefined) << 32. */ + mask = (mask << 1) - 1; + if (((base ^ address) & ~mask) == 0) + break; + } + if (n < 0) + return 2; + + if (access_type == 2) { + mask = env->cp15.c5_insn; + } else { + mask = env->cp15.c5_data; + } + mask = (mask >> (n * 4)) & 0xf; + switch (mask) { + case 0: + return 1; + case 1: + if (is_user) + return 1; + *prot = PAGE_READ | PAGE_WRITE; + break; + case 2: + *prot = PAGE_READ; + if (!is_user) + *prot |= PAGE_WRITE; + break; + case 3: + *prot = PAGE_READ | PAGE_WRITE; + break; + case 5: + if (is_user) + return 1; + *prot = PAGE_READ; + break; + case 6: + *prot = PAGE_READ; + break; + default: + /* Bad permission. */ + return 1; + } + return 0; +} + +static inline int get_phys_addr(CPUState *env, uint32_t address, + int access_type, int is_user, + uint32_t *phys_ptr, int *prot) +{ + /* Fast Context Switch Extension. */ + if (address < 0x02000000) + address += env->cp15.c13_fcse; + + if ((env->cp15.c1_sys & 1) == 0) { + /* MMU/MPU disabled. */ + *phys_ptr = address; + *prot = PAGE_READ | PAGE_WRITE; + return 0; + } else if (arm_feature(env, ARM_FEATURE_MPU)) { + return get_phys_addr_mpu(env, address, access_type, is_user, phys_ptr, + prot); + } else if (env->cp15.c1_sys & (1 << 23)) { + return get_phys_addr_v6(env, address, access_type, is_user, phys_ptr, + prot); + } else { + return get_phys_addr_v5(env, address, access_type, is_user, phys_ptr, + prot); + } +} + +int cpu_arm_handle_mmu_fault (CPUState *env, target_ulong address, + int access_type, int mmu_idx, int is_softmmu) +{ + uint32_t phys_addr; + int prot; + int ret, is_user; + + is_user = mmu_idx == MMU_USER_IDX; + ret = get_phys_addr(env, address, access_type, is_user, &phys_addr, &prot); + if (ret == 0) { + /* Map a single [sub]page. */ + phys_addr &= ~(uint32_t)0x3ff; + address &= ~(uint32_t)0x3ff; + return tlb_set_page (env, address, phys_addr, prot, mmu_idx, + is_softmmu); + } + + if (access_type == 2) { + env->cp15.c5_insn = ret; + env->cp15.c6_insn = address; + env->exception_index = EXCP_PREFETCH_ABORT; + } else { + env->cp15.c5_data = ret; + if (access_type == 1 && arm_feature(env, ARM_FEATURE_V6)) + env->cp15.c5_data |= (1 << 11); + env->cp15.c6_data = address; + env->exception_index = EXCP_DATA_ABORT; + } + return 1; +} + +target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) +{ + uint32_t phys_addr; + int prot; + int ret; + + ret = get_phys_addr(env, addr, 0, 0, &phys_addr, &prot); + + if (ret != 0) + return -1; + + return phys_addr; +} + +void HELPER(set_cp)(CPUState *env, uint32_t insn, uint32_t val) +{ + int cp_num = (insn >> 8) & 0xf; + int cp_info = (insn >> 5) & 7; + int src = (insn >> 16) & 0xf; + int operand = insn & 0xf; + + if (env->cp[cp_num].cp_write) + env->cp[cp_num].cp_write(env->cp[cp_num].opaque, + cp_info, src, operand, val); +} + +uint32_t HELPER(get_cp)(CPUState *env, uint32_t insn) +{ + int cp_num = (insn >> 8) & 0xf; + int cp_info = (insn >> 5) & 7; + int dest = (insn >> 16) & 0xf; + int operand = insn & 0xf; + + if (env->cp[cp_num].cp_read) + return env->cp[cp_num].cp_read(env->cp[cp_num].opaque, + cp_info, dest, operand); + return 0; +} + +/* Return basic MPU access permission bits. */ +static uint32_t simple_mpu_ap_bits(uint32_t val) +{ + uint32_t ret; + uint32_t mask; + int i; + ret = 0; + mask = 3; + for (i = 0; i < 16; i += 2) { + ret |= (val >> i) & mask; + mask <<= 2; + } + return ret; +} + +/* Pad basic MPU access permission bits to extended format. */ +static uint32_t extended_mpu_ap_bits(uint32_t val) +{ + uint32_t ret; + uint32_t mask; + int i; + ret = 0; + mask = 3; + for (i = 0; i < 16; i += 2) { + ret |= (val & mask) << i; + mask <<= 2; + } + return ret; +} + +void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val) +{ + int op1; + int op2; + int crm; + + op1 = (insn >> 21) & 7; + op2 = (insn >> 5) & 7; + crm = insn & 0xf; + switch ((insn >> 16) & 0xf) { + case 0: + /* ID codes. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + break; + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + break; + if (arm_feature(env, ARM_FEATURE_V7) + && op1 == 2 && crm == 0 && op2 == 0) { + env->cp15.c0_cssel = val & 0xf; + break; + } + goto bad_reg; + case 1: /* System configuration. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + if (!arm_feature(env, ARM_FEATURE_XSCALE) || crm == 0) + env->cp15.c1_sys = val; + /* ??? Lots of these bits are not implemented. */ + /* This may enable/disable the MMU, so do a TLB flush. */ + tlb_flush(env, 1); + break; + case 1: /* Auxiliary cotrol register. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + env->cp15.c1_xscaleauxcr = val; + break; + } + /* Not implemented. */ + break; + case 2: + if (arm_feature(env, ARM_FEATURE_XSCALE)) + goto bad_reg; + if (env->cp15.c1_coproc != val) { + env->cp15.c1_coproc = val; + /* ??? Is this safe when called from within a TB? */ + tb_flush(env); + } + break; + default: + goto bad_reg; + } + break; + case 2: /* MMU Page table control / MPU cache control. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + switch (op2) { + case 0: + env->cp15.c2_data = val; + break; + case 1: + env->cp15.c2_insn = val; + break; + default: + goto bad_reg; + } + } else { + switch (op2) { + case 0: + env->cp15.c2_base0 = val; + break; + case 1: + env->cp15.c2_base1 = val; + break; + case 2: + val &= 7; + env->cp15.c2_control = val; + env->cp15.c2_mask = ~(((uint32_t)0xffffffffu) >> val); + env->cp15.c2_base_mask = ~((uint32_t)0x3fffu >> val); + break; + default: + goto bad_reg; + } + } + break; + case 3: /* MMU Domain access control / MPU write buffer control. */ + env->cp15.c3 = val; + tlb_flush(env, 1); /* Flush TLB as domain not tracked in TLB */ + break; + case 4: /* Reserved. */ + goto bad_reg; + case 5: /* MMU Fault status / MPU access permission. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + if (arm_feature(env, ARM_FEATURE_MPU)) + val = extended_mpu_ap_bits(val); + env->cp15.c5_data = val; + break; + case 1: + if (arm_feature(env, ARM_FEATURE_MPU)) + val = extended_mpu_ap_bits(val); + env->cp15.c5_insn = val; + break; + case 2: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + env->cp15.c5_data = val; + break; + case 3: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + env->cp15.c5_insn = val; + break; + default: + goto bad_reg; + } + break; + case 6: /* MMU Fault address / MPU base/size. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + if (crm >= 8) + goto bad_reg; + env->cp15.c6_region[crm] = val; + } else { + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + env->cp15.c6_data = val; + break; + case 1: /* ??? This is WFAR on armv6 */ + case 2: + env->cp15.c6_insn = val; + break; + default: + goto bad_reg; + } + } + break; + case 7: /* Cache control. */ + env->cp15.c15_i_max = 0x000; + env->cp15.c15_i_min = 0xff0; + /* No cache, so nothing to do. */ + /* ??? MPCore has VA to PA translation functions. */ + break; + case 8: /* MMU TLB control. */ + switch (op2) { + case 0: /* Invalidate all. */ + tlb_flush(env, 0); + break; + case 1: /* Invalidate single TLB entry. */ +#if 0 + /* ??? This is wrong for large pages and sections. */ + /* As an ugly hack to make linux work we always flush a 4K + pages. */ + val &= 0xfffff000; + tlb_flush_page(env, val); + tlb_flush_page(env, val + 0x400); + tlb_flush_page(env, val + 0x800); + tlb_flush_page(env, val + 0xc00); +#else + tlb_flush(env, 1); +#endif + break; + case 2: /* Invalidate on ASID. */ + tlb_flush(env, val == 0); + break; + case 3: /* Invalidate single entry on MVA. */ + /* ??? This is like case 1, but ignores ASID. */ + tlb_flush(env, 1); + break; + default: + goto bad_reg; + } + break; + case 9: + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + break; + switch (crm) { + case 0: /* Cache lockdown. */ + switch (op1) { + case 0: /* L1 cache. */ + switch (op2) { + case 0: + env->cp15.c9_data = val; + break; + case 1: + env->cp15.c9_insn = val; + break; + default: + goto bad_reg; + } + break; + case 1: /* L2 cache. */ + /* Ignore writes to L2 lockdown/auxiliary registers. */ + break; + default: + goto bad_reg; + } + break; + case 1: /* TCM memory region registers. */ + /* Not implemented. */ + goto bad_reg; + default: + goto bad_reg; + } + break; + case 10: /* MMU TLB lockdown. */ + /* ??? TLB lockdown not implemented. */ + break; + case 12: /* Reserved. */ + goto bad_reg; + case 13: /* Process ID. */ + switch (op2) { + case 0: + /* Unlike real hardware the qemu TLB uses virtual addresses, + not modified virtual addresses, so this causes a TLB flush. + */ + if (env->cp15.c13_fcse != val) + tlb_flush(env, 1); + env->cp15.c13_fcse = val; + break; + case 1: + /* This changes the ASID, so do a TLB flush. */ + if (env->cp15.c13_context != val + && !arm_feature(env, ARM_FEATURE_MPU)) + tlb_flush(env, 0); + env->cp15.c13_context = val; + break; + case 2: + env->cp15.c13_tls1 = val; + break; + case 3: + env->cp15.c13_tls2 = val; + break; + case 4: + env->cp15.c13_tls3 = val; + break; + default: + goto bad_reg; + } + break; + case 14: /* Reserved. */ + goto bad_reg; + case 15: /* Implementation specific. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + if (op2 == 0 && crm == 1) { + if (env->cp15.c15_cpar != (val & 0x3fff)) { + /* Changes cp0 to cp13 behavior, so needs a TB flush. */ + tb_flush(env); + env->cp15.c15_cpar = val & 0x3fff; + } + break; + } + goto bad_reg; + } + if (arm_feature(env, ARM_FEATURE_OMAPCP)) { + switch (crm) { + case 0: + break; + case 1: /* Set TI925T configuration. */ + env->cp15.c15_ticonfig = val & 0xe7; + env->cp15.c0_cpuid = (val & (1 << 5)) ? /* OS_TYPE bit */ + ARM_CPUID_TI915T : ARM_CPUID_TI925T; + break; + case 2: /* Set I_max. */ + env->cp15.c15_i_max = val; + break; + case 3: /* Set I_min. */ + env->cp15.c15_i_min = val; + break; + case 4: /* Set thread-ID. */ + env->cp15.c15_threadid = val & 0xffff; + break; + case 8: /* Wait-for-interrupt (deprecated). */ + cpu_interrupt(env, CPU_INTERRUPT_HALT); + break; + default: + goto bad_reg; + } + } + break; + } + return; +bad_reg: + /* ??? For debugging only. Should raise illegal instruction exception. */ + cpu_abort(env, "Unimplemented cp15 register write (c%d, c%d, {%d, %d})\n", + (insn >> 16) & 0xf, crm, op1, op2); +} + +uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn) +{ + int op1; + int op2; + int crm; + + op1 = (insn >> 21) & 7; + op2 = (insn >> 5) & 7; + crm = insn & 0xf; + switch ((insn >> 16) & 0xf) { + case 0: /* ID codes. */ + switch (op1) { + case 0: + switch (crm) { + case 0: + switch (op2) { + case 0: /* Device ID. */ + return env->cp15.c0_cpuid; + case 1: /* Cache Type. */ + return env->cp15.c0_cachetype; + case 2: /* TCM status. */ + return 0; + case 3: /* TLB type register. */ + return 0; /* No lockable TLB entries. */ + case 5: /* CPU ID */ + if (ARM_CPUID(env) == ARM_CPUID_CORTEXA9) { + return env->cpu_index | 0x80000900; + } else { + return env->cpu_index; + } + default: + goto bad_reg; + } + case 1: + if (!arm_feature(env, ARM_FEATURE_V6)) + goto bad_reg; + return env->cp15.c0_c1[op2]; + case 2: + if (!arm_feature(env, ARM_FEATURE_V6)) + goto bad_reg; + return env->cp15.c0_c2[op2]; + case 3: case 4: case 5: case 6: case 7: + return 0; + default: + goto bad_reg; + } + case 1: + /* These registers aren't documented on arm11 cores. However + Linux looks at them anyway. */ + if (!arm_feature(env, ARM_FEATURE_V6)) + goto bad_reg; + if (crm != 0) + goto bad_reg; + if (!arm_feature(env, ARM_FEATURE_V7)) + return 0; + + switch (op2) { + case 0: + return env->cp15.c0_ccsid[env->cp15.c0_cssel]; + case 1: + return env->cp15.c0_clid; + case 7: + return 0; + } + goto bad_reg; + case 2: + if (op2 != 0 || crm != 0) + goto bad_reg; + return env->cp15.c0_cssel; + default: + goto bad_reg; + } + case 1: /* System configuration. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: /* Control register. */ + return env->cp15.c1_sys; + case 1: /* Auxiliary control register. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + return env->cp15.c1_xscaleauxcr; + if (!arm_feature(env, ARM_FEATURE_AUXCR)) + goto bad_reg; + switch (ARM_CPUID(env)) { + case ARM_CPUID_ARM1026: + return 1; + case ARM_CPUID_ARM1136: + case ARM_CPUID_ARM1136_R2: + return 7; + case ARM_CPUID_ARM11MPCORE: + return 1; + case ARM_CPUID_CORTEXA8: + return 2; + case ARM_CPUID_CORTEXA9: + return 0; + default: + goto bad_reg; + } + case 2: /* Coprocessor access register. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + goto bad_reg; + return env->cp15.c1_coproc; + default: + goto bad_reg; + } + case 2: /* MMU Page table control / MPU cache control. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + switch (op2) { + case 0: + return env->cp15.c2_data; + break; + case 1: + return env->cp15.c2_insn; + break; + default: + goto bad_reg; + } + } else { + switch (op2) { + case 0: + return env->cp15.c2_base0; + case 1: + return env->cp15.c2_base1; + case 2: + return env->cp15.c2_control; + default: + goto bad_reg; + } + } + case 3: /* MMU Domain access control / MPU write buffer control. */ + return env->cp15.c3; + case 4: /* Reserved. */ + goto bad_reg; + case 5: /* MMU Fault status / MPU access permission. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + if (arm_feature(env, ARM_FEATURE_MPU)) + return simple_mpu_ap_bits(env->cp15.c5_data); + return env->cp15.c5_data; + case 1: + if (arm_feature(env, ARM_FEATURE_MPU)) + return simple_mpu_ap_bits(env->cp15.c5_data); + return env->cp15.c5_insn; + case 2: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + return env->cp15.c5_data; + case 3: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + return env->cp15.c5_insn; + default: + goto bad_reg; + } + case 6: /* MMU Fault address. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + if (crm >= 8) + goto bad_reg; + return env->cp15.c6_region[crm]; + } else { + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + return env->cp15.c6_data; + case 1: + if (arm_feature(env, ARM_FEATURE_V6)) { + /* Watchpoint Fault Adrress. */ + return 0; /* Not implemented. */ + } else { + /* Instruction Fault Adrress. */ + /* Arm9 doesn't have an IFAR, but implementing it anyway + shouldn't do any harm. */ + return env->cp15.c6_insn; + } + case 2: + if (arm_feature(env, ARM_FEATURE_V6)) { + /* Instruction Fault Adrress. */ + return env->cp15.c6_insn; + } else { + goto bad_reg; + } + default: + goto bad_reg; + } + } + case 7: /* Cache control. */ + /* FIXME: Should only clear Z flag if destination is r15. */ + env->ZF = 0; + return 0; + case 8: /* MMU TLB control. */ + goto bad_reg; + case 9: /* Cache lockdown. */ + switch (op1) { + case 0: /* L1 cache. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + return 0; + switch (op2) { + case 0: + return env->cp15.c9_data; + case 1: + return env->cp15.c9_insn; + default: + goto bad_reg; + } + case 1: /* L2 cache */ + if (crm != 0) + goto bad_reg; + /* L2 Lockdown and Auxiliary control. */ + return 0; + default: + goto bad_reg; + } + case 10: /* MMU TLB lockdown. */ + /* ??? TLB lockdown not implemented. */ + return 0; + case 11: /* TCM DMA control. */ + case 12: /* Reserved. */ + goto bad_reg; + case 13: /* Process ID. */ + switch (op2) { + case 0: + return env->cp15.c13_fcse; + case 1: + return env->cp15.c13_context; + case 2: + return env->cp15.c13_tls1; + case 3: + return env->cp15.c13_tls2; + case 4: + return env->cp15.c13_tls3; + default: + goto bad_reg; + } + case 14: /* Reserved. */ + goto bad_reg; + case 15: /* Implementation specific. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + if (op2 == 0 && crm == 1) + return env->cp15.c15_cpar; + + goto bad_reg; + } + if (arm_feature(env, ARM_FEATURE_OMAPCP)) { + switch (crm) { + case 0: + return 0; + case 1: /* Read TI925T configuration. */ + return env->cp15.c15_ticonfig; + case 2: /* Read I_max. */ + return env->cp15.c15_i_max; + case 3: /* Read I_min. */ + return env->cp15.c15_i_min; + case 4: /* Read thread-ID. */ + return env->cp15.c15_threadid; + case 8: /* TI925T_status */ + return 0; + } + /* TODO: Peripheral port remap register: + * On OMAP2 mcr p15, 0, rn, c15, c2, 4 sets up the interrupt + * controller base address at $rn & ~0xfff and map size of + * 0x200 << ($rn & 0xfff), when MMU is off. */ + goto bad_reg; + } + return 0; + } +bad_reg: + /* ??? For debugging only. Should raise illegal instruction exception. */ + cpu_abort(env, "Unimplemented cp15 register read (c%d, c%d, {%d, %d})\n", + (insn >> 16) & 0xf, crm, op1, op2); + return 0; +} + +void HELPER(set_r13_banked)(CPUState *env, uint32_t mode, uint32_t val) +{ + env->banked_r13[bank_number(mode)] = val; +} + +uint32_t HELPER(get_r13_banked)(CPUState *env, uint32_t mode) +{ + return env->banked_r13[bank_number(mode)]; +} + +uint32_t HELPER(v7m_mrs)(CPUState *env, uint32_t reg) +{ + switch (reg) { + case 0: /* APSR */ + return xpsr_read(env) & 0xf8000000; + case 1: /* IAPSR */ + return xpsr_read(env) & 0xf80001ff; + case 2: /* EAPSR */ + return xpsr_read(env) & 0xff00fc00; + case 3: /* xPSR */ + return xpsr_read(env) & 0xff00fdff; + case 5: /* IPSR */ + return xpsr_read(env) & 0x000001ff; + case 6: /* EPSR */ + return xpsr_read(env) & 0x0700fc00; + case 7: /* IEPSR */ + return xpsr_read(env) & 0x0700edff; + case 8: /* MSP */ + return env->v7m.current_sp ? env->v7m.other_sp : env->regs[13]; + case 9: /* PSP */ + return env->v7m.current_sp ? env->regs[13] : env->v7m.other_sp; + case 16: /* PRIMASK */ + return (env->uncached_cpsr & CPSR_I) != 0; + case 17: /* FAULTMASK */ + return (env->uncached_cpsr & CPSR_F) != 0; + case 18: /* BASEPRI */ + case 19: /* BASEPRI_MAX */ + return env->v7m.basepri; + case 20: /* CONTROL */ + return env->v7m.control; + default: + /* ??? For debugging only. */ + cpu_abort(env, "Unimplemented system register read (%d)\n", reg); + return 0; + } +} + +void HELPER(v7m_msr)(CPUState *env, uint32_t reg, uint32_t val) +{ + switch (reg) { + case 0: /* APSR */ + xpsr_write(env, val, 0xf8000000); + break; + case 1: /* IAPSR */ + xpsr_write(env, val, 0xf8000000); + break; + case 2: /* EAPSR */ + xpsr_write(env, val, 0xfe00fc00); + break; + case 3: /* xPSR */ + xpsr_write(env, val, 0xfe00fc00); + break; + case 5: /* IPSR */ + /* IPSR bits are readonly. */ + break; + case 6: /* EPSR */ + xpsr_write(env, val, 0x0600fc00); + break; + case 7: /* IEPSR */ + xpsr_write(env, val, 0x0600fc00); + break; + case 8: /* MSP */ + if (env->v7m.current_sp) + env->v7m.other_sp = val; + else + env->regs[13] = val; + break; + case 9: /* PSP */ + if (env->v7m.current_sp) + env->regs[13] = val; + else + env->v7m.other_sp = val; + break; + case 16: /* PRIMASK */ + if (val & 1) + env->uncached_cpsr |= CPSR_I; + else + env->uncached_cpsr &= ~CPSR_I; + break; + case 17: /* FAULTMASK */ + if (val & 1) + env->uncached_cpsr |= CPSR_F; + else + env->uncached_cpsr &= ~CPSR_F; + break; + case 18: /* BASEPRI */ + env->v7m.basepri = val & 0xff; + break; + case 19: /* BASEPRI_MAX */ + val &= 0xff; + if (val != 0 && (val < env->v7m.basepri || env->v7m.basepri == 0)) + env->v7m.basepri = val; + break; + case 20: /* CONTROL */ + env->v7m.control = val & 3; + switch_v7m_sp(env, (val & 2) != 0); + break; + default: + /* ??? For debugging only. */ + cpu_abort(env, "Unimplemented system register write (%d)\n", reg); + return; + } +} + +void cpu_arm_set_cp_io(CPUARMState *env, int cpnum, + ARMReadCPFunc *cp_read, ARMWriteCPFunc *cp_write, + void *opaque) +{ + if (cpnum < 0 || cpnum > 14) { + cpu_abort(env, "Bad coprocessor number: %i\n", cpnum); + return; + } + + env->cp[cpnum].cp_read = cp_read; + env->cp[cpnum].cp_write = cp_write; + env->cp[cpnum].opaque = opaque; +} + +#endif + +/* Note that signed overflow is undefined in C. The following routines are + careful to use unsigned types where modulo arithmetic is required. + Failure to do so _will_ break on newer gcc. */ + +/* Signed saturating arithmetic. */ + +/* Perform 16-bit signed saturating addition. */ +static inline uint16_t add16_sat(uint16_t a, uint16_t b) +{ + uint16_t res; + + res = a + b; + if (((res ^ a) & 0x8000) && !((a ^ b) & 0x8000)) { + if (a & 0x8000) + res = 0x8000; + else + res = 0x7fff; + } + return res; +} + +/* Perform 8-bit signed saturating addition. */ +static inline uint8_t add8_sat(uint8_t a, uint8_t b) +{ + uint8_t res; + + res = a + b; + if (((res ^ a) & 0x80) && !((a ^ b) & 0x80)) { + if (a & 0x80) + res = 0x80; + else + res = 0x7f; + } + return res; +} + +/* Perform 16-bit signed saturating subtraction. */ +static inline uint16_t sub16_sat(uint16_t a, uint16_t b) +{ + uint16_t res; + + res = a - b; + if (((res ^ a) & 0x8000) && ((a ^ b) & 0x8000)) { + if (a & 0x8000) + res = 0x8000; + else + res = 0x7fff; + } + return res; +} + +/* Perform 8-bit signed saturating subtraction. */ +static inline uint8_t sub8_sat(uint8_t a, uint8_t b) +{ + uint8_t res; + + res = a - b; + if (((res ^ a) & 0x80) && ((a ^ b) & 0x80)) { + if (a & 0x80) + res = 0x80; + else + res = 0x7f; + } + return res; +} + +#define ADD16(a, b, n) RESULT(add16_sat(a, b), n, 16); +#define SUB16(a, b, n) RESULT(sub16_sat(a, b), n, 16); +#define ADD8(a, b, n) RESULT(add8_sat(a, b), n, 8); +#define SUB8(a, b, n) RESULT(sub8_sat(a, b), n, 8); +#define PFX q + +#include "op_addsub.h" + +/* Unsigned saturating arithmetic. */ +static inline uint16_t add16_usat(uint16_t a, uint16_t b) +{ + uint16_t res; + res = a + b; + if (res < a) + res = 0xffff; + return res; +} + +static inline uint16_t sub16_usat(uint16_t a, uint16_t b) +{ + if (a < b) + return a - b; + else + return 0; +} + +static inline uint8_t add8_usat(uint8_t a, uint8_t b) +{ + uint8_t res; + res = a + b; + if (res < a) + res = 0xff; + return res; +} + +static inline uint8_t sub8_usat(uint8_t a, uint8_t b) +{ + if (a < b) + return a - b; + else + return 0; +} + +#define ADD16(a, b, n) RESULT(add16_usat(a, b), n, 16); +#define SUB16(a, b, n) RESULT(sub16_usat(a, b), n, 16); +#define ADD8(a, b, n) RESULT(add8_usat(a, b), n, 8); +#define SUB8(a, b, n) RESULT(sub8_usat(a, b), n, 8); +#define PFX uq + +#include "op_addsub.h" + +/* Signed modulo arithmetic. */ +#define SARITH16(a, b, n, op) do { \ + int32_t sum; \ + sum = (int16_t)((uint16_t)(a) op (uint16_t)(b)); \ + RESULT(sum, n, 16); \ + if (sum >= 0) \ + ge |= 3 << (n * 2); \ + } while(0) + +#define SARITH8(a, b, n, op) do { \ + int32_t sum; \ + sum = (int8_t)((uint8_t)(a) op (uint8_t)(b)); \ + RESULT(sum, n, 8); \ + if (sum >= 0) \ + ge |= 1 << n; \ + } while(0) + + +#define ADD16(a, b, n) SARITH16(a, b, n, +) +#define SUB16(a, b, n) SARITH16(a, b, n, -) +#define ADD8(a, b, n) SARITH8(a, b, n, +) +#define SUB8(a, b, n) SARITH8(a, b, n, -) +#define PFX s +#define ARITH_GE + +#include "op_addsub.h" + +/* Unsigned modulo arithmetic. */ +#define ADD16(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint16_t)(a) + (uint32_t)(uint16_t)(b); \ + RESULT(sum, n, 16); \ + if ((sum >> 16) == 1) \ + ge |= 3 << (n * 2); \ + } while(0) + +#define ADD8(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint8_t)(a) + (uint32_t)(uint8_t)(b); \ + RESULT(sum, n, 8); \ + if ((sum >> 8) == 1) \ + ge |= 1 << n; \ + } while(0) + +#define SUB16(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint16_t)(a) - (uint32_t)(uint16_t)(b); \ + RESULT(sum, n, 16); \ + if ((sum >> 16) == 0) \ + ge |= 3 << (n * 2); \ + } while(0) + +#define SUB8(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint8_t)(a) - (uint32_t)(uint8_t)(b); \ + RESULT(sum, n, 8); \ + if ((sum >> 8) == 0) \ + ge |= 1 << n; \ + } while(0) + +#define PFX u +#define ARITH_GE + +#include "op_addsub.h" + +/* Halved signed arithmetic. */ +#define ADD16(a, b, n) \ + RESULT(((int32_t)(int16_t)(a) + (int32_t)(int16_t)(b)) >> 1, n, 16) +#define SUB16(a, b, n) \ + RESULT(((int32_t)(int16_t)(a) - (int32_t)(int16_t)(b)) >> 1, n, 16) +#define ADD8(a, b, n) \ + RESULT(((int32_t)(int8_t)(a) + (int32_t)(int8_t)(b)) >> 1, n, 8) +#define SUB8(a, b, n) \ + RESULT(((int32_t)(int8_t)(a) - (int32_t)(int8_t)(b)) >> 1, n, 8) +#define PFX sh + +#include "op_addsub.h" + +/* Halved unsigned arithmetic. */ +#define ADD16(a, b, n) \ + RESULT(((uint32_t)(uint16_t)(a) + (uint32_t)(uint16_t)(b)) >> 1, n, 16) +#define SUB16(a, b, n) \ + RESULT(((uint32_t)(uint16_t)(a) - (uint32_t)(uint16_t)(b)) >> 1, n, 16) +#define ADD8(a, b, n) \ + RESULT(((uint32_t)(uint8_t)(a) + (uint32_t)(uint8_t)(b)) >> 1, n, 8) +#define SUB8(a, b, n) \ + RESULT(((uint32_t)(uint8_t)(a) - (uint32_t)(uint8_t)(b)) >> 1, n, 8) +#define PFX uh + +#include "op_addsub.h" + +static inline uint8_t do_usad(uint8_t a, uint8_t b) +{ + if (a > b) + return a - b; + else + return b - a; +} + +/* Unsigned sum of absolute byte differences. */ +uint32_t HELPER(usad8)(uint32_t a, uint32_t b) +{ + uint32_t sum; + sum = do_usad(a, b); + sum += do_usad(a >> 8, b >> 8); + sum += do_usad(a >> 16, b >>16); + sum += do_usad(a >> 24, b >> 24); + return sum; +} + +/* For ARMv6 SEL instruction. */ +uint32_t HELPER(sel_flags)(uint32_t flags, uint32_t a, uint32_t b) +{ + uint32_t mask; + + mask = 0; + if (flags & 1) + mask |= 0xff; + if (flags & 2) + mask |= 0xff00; + if (flags & 4) + mask |= 0xff0000; + if (flags & 8) + mask |= 0xff000000; + return (a & mask) | (b & ~mask); +} + +uint32_t HELPER(logicq_cc)(uint64_t val) +{ + return (val >> 32) | (val != 0); +} + +/* VFP support. We follow the convention used for VFP instrunctions: + Single precition routines have a "s" suffix, double precision a + "d" suffix. */ + +/* Convert host exception flags to vfp form. */ +static inline int vfp_exceptbits_from_host(int host_bits) +{ + int target_bits = 0; + + if (host_bits & float_flag_invalid) + target_bits |= 1; + if (host_bits & float_flag_divbyzero) + target_bits |= 2; + if (host_bits & float_flag_overflow) + target_bits |= 4; + if (host_bits & float_flag_underflow) + target_bits |= 8; + if (host_bits & float_flag_inexact) + target_bits |= 0x10; + return target_bits; +} + +uint32_t HELPER(vfp_get_fpscr)(CPUState *env) +{ + int i; + uint32_t fpscr; + + fpscr = (env->vfp.xregs[ARM_VFP_FPSCR] & 0xffc8ffff) + | (env->vfp.vec_len << 16) + | (env->vfp.vec_stride << 20); + i = get_float_exception_flags(&env->vfp.fp_status); + fpscr |= vfp_exceptbits_from_host(i); + return fpscr; +} + +/* Convert vfp exception flags to target form. */ +static inline int vfp_exceptbits_to_host(int target_bits) +{ + int host_bits = 0; + + if (target_bits & 1) + host_bits |= float_flag_invalid; + if (target_bits & 2) + host_bits |= float_flag_divbyzero; + if (target_bits & 4) + host_bits |= float_flag_overflow; + if (target_bits & 8) + host_bits |= float_flag_underflow; + if (target_bits & 0x10) + host_bits |= float_flag_inexact; + return host_bits; +} + +void HELPER(vfp_set_fpscr)(CPUState *env, uint32_t val) +{ + int i; + uint32_t changed; + + changed = env->vfp.xregs[ARM_VFP_FPSCR]; + env->vfp.xregs[ARM_VFP_FPSCR] = (val & 0xffc8ffff); + env->vfp.vec_len = (val >> 16) & 7; + env->vfp.vec_stride = (val >> 20) & 3; + + changed ^= val; + if (changed & (3 << 22)) { + i = (val >> 22) & 3; + switch (i) { + case 0: + i = float_round_nearest_even; + break; + case 1: + i = float_round_up; + break; + case 2: + i = float_round_down; + break; + case 3: + i = float_round_to_zero; + break; + } + set_float_rounding_mode(i, &env->vfp.fp_status); + } + if (changed & (1 << 24)) + set_flush_to_zero((val & (1 << 24)) != 0, &env->vfp.fp_status); + if (changed & (1 << 25)) + set_default_nan_mode((val & (1 << 25)) != 0, &env->vfp.fp_status); + + i = vfp_exceptbits_to_host((val >> 8) & 0x1f); + set_float_exception_flags(i, &env->vfp.fp_status); +} + +#define VFP_HELPER(name, p) HELPER(glue(glue(vfp_,name),p)) + +#define VFP_BINOP(name) \ +float32 VFP_HELPER(name, s)(float32 a, float32 b, CPUState *env) \ +{ \ + return float32_ ## name (a, b, &env->vfp.fp_status); \ +} \ +float64 VFP_HELPER(name, d)(float64 a, float64 b, CPUState *env) \ +{ \ + return float64_ ## name (a, b, &env->vfp.fp_status); \ +} +VFP_BINOP(add) +VFP_BINOP(sub) +VFP_BINOP(mul) +VFP_BINOP(div) +#undef VFP_BINOP + +float32 VFP_HELPER(neg, s)(float32 a) +{ + return float32_chs(a); +} + +float64 VFP_HELPER(neg, d)(float64 a) +{ + return float64_chs(a); +} + +float32 VFP_HELPER(abs, s)(float32 a) +{ + return float32_abs(a); +} + +float64 VFP_HELPER(abs, d)(float64 a) +{ + return float64_abs(a); +} + +float32 VFP_HELPER(sqrt, s)(float32 a, CPUState *env) +{ + return float32_sqrt(a, &env->vfp.fp_status); +} + +float64 VFP_HELPER(sqrt, d)(float64 a, CPUState *env) +{ + return float64_sqrt(a, &env->vfp.fp_status); +} + +/* XXX: check quiet/signaling case */ +#define DO_VFP_cmp(p, type) \ +void VFP_HELPER(cmp, p)(type a, type b, CPUState *env) \ +{ \ + uint32_t flags; \ + switch(type ## _compare_quiet(a, b, &env->vfp.fp_status)) { \ + case 0: flags = 0x6; break; \ + case -1: flags = 0x8; break; \ + case 1: flags = 0x2; break; \ + default: case 2: flags = 0x3; break; \ + } \ + env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ + | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ +} \ +void VFP_HELPER(cmpe, p)(type a, type b, CPUState *env) \ +{ \ + uint32_t flags; \ + switch(type ## _compare(a, b, &env->vfp.fp_status)) { \ + case 0: flags = 0x6; break; \ + case -1: flags = 0x8; break; \ + case 1: flags = 0x2; break; \ + default: case 2: flags = 0x3; break; \ + } \ + env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ + | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ +} +DO_VFP_cmp(s, float32) +DO_VFP_cmp(d, float64) +#undef DO_VFP_cmp + +/* Helper routines to perform bitwise copies between float and int. */ +static inline float32 vfp_itos(uint32_t i) +{ + union { + uint32_t i; + float32 s; + } v; + + v.i = i; + return v.s; +} + +static inline uint32_t vfp_stoi(float32 s) +{ + union { + uint32_t i; + float32 s; + } v; + + v.s = s; + return v.i; +} + +static inline float64 vfp_itod(uint64_t i) +{ + union { + uint64_t i; + float64 d; + } v; + + v.i = i; + return v.d; +} + +static inline uint64_t vfp_dtoi(float64 d) +{ + union { + uint64_t i; + float64 d; + } v; + + v.d = d; + return v.i; +} + +/* Integer to float conversion. */ +float32 VFP_HELPER(uito, s)(float32 x, CPUState *env) +{ + return uint32_to_float32(vfp_stoi(x), &env->vfp.fp_status); +} + +float64 VFP_HELPER(uito, d)(float32 x, CPUState *env) +{ + return uint32_to_float64(vfp_stoi(x), &env->vfp.fp_status); +} + +float32 VFP_HELPER(sito, s)(float32 x, CPUState *env) +{ + return int32_to_float32(vfp_stoi(x), &env->vfp.fp_status); +} + +float64 VFP_HELPER(sito, d)(float32 x, CPUState *env) +{ + return int32_to_float64(vfp_stoi(x), &env->vfp.fp_status); +} + +/* Float to integer conversion. */ +float32 VFP_HELPER(toui, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_uint32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(toui, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_uint32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosi, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_int32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosi, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_int32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(touiz, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_uint32_round_to_zero(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(touiz, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_uint32_round_to_zero(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosiz, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_int32_round_to_zero(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosiz, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_int32_round_to_zero(x, &env->vfp.fp_status)); +} + +/* floating point conversion */ +float64 VFP_HELPER(fcvtd, s)(float32 x, CPUState *env) +{ + return float32_to_float64(x, &env->vfp.fp_status); +} + +float32 VFP_HELPER(fcvts, d)(float64 x, CPUState *env) +{ + return float64_to_float32(x, &env->vfp.fp_status); +} + +/* VFP3 fixed point conversion. */ +#define VFP_CONV_FIX(name, p, ftype, itype, sign) \ +ftype VFP_HELPER(name##to, p)(ftype x, uint32_t shift, CPUState *env) \ +{ \ + ftype tmp; \ + tmp = sign##int32_to_##ftype ((itype)vfp_##p##toi(x), \ + &env->vfp.fp_status); \ + return ftype##_scalbn(tmp, -(int)shift, &env->vfp.fp_status); \ +} \ +ftype VFP_HELPER(to##name, p)(ftype x, uint32_t shift, CPUState *env) \ +{ \ + ftype tmp; \ + tmp = ftype##_scalbn(x, shift, &env->vfp.fp_status); \ + return vfp_ito##p((itype)ftype##_to_##sign##int32_round_to_zero(tmp, \ + &env->vfp.fp_status)); \ +} + +VFP_CONV_FIX(sh, d, float64, int16, ) +VFP_CONV_FIX(sl, d, float64, int32, ) +VFP_CONV_FIX(uh, d, float64, uint16, u) +VFP_CONV_FIX(ul, d, float64, uint32, u) +VFP_CONV_FIX(sh, s, float32, int16, ) +VFP_CONV_FIX(sl, s, float32, int32, ) +VFP_CONV_FIX(uh, s, float32, uint16, u) +VFP_CONV_FIX(ul, s, float32, uint32, u) +#undef VFP_CONV_FIX + +/* Half precision conversions. */ +float32 HELPER(vfp_fcvt_f16_to_f32)(uint32_t a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + int ieee = (env->vfp.xregs[ARM_VFP_FPSCR] & (1 << 26)) == 0; + return float16_to_float32(a, ieee, s); +} + +uint32_t HELPER(vfp_fcvt_f32_to_f16)(float32 a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + int ieee = (env->vfp.xregs[ARM_VFP_FPSCR] & (1 << 26)) == 0; + return float32_to_float16(a, ieee, s); +} + +float32 HELPER(recps_f32)(float32 a, float32 b, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 two = int32_to_float32(2, s); + return float32_sub(two, float32_mul(a, b, s), s); +} + +float32 HELPER(rsqrts_f32)(float32 a, float32 b, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 three = int32_to_float32(3, s); + return float32_sub(three, float32_mul(a, b, s), s); +} + +/* NEON helpers. */ + +/* TODO: The architecture specifies the value that the estimate functions + should return. We return the exact reciprocal/root instead. */ +float32 HELPER(recpe_f32)(float32 a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 one = int32_to_float32(1, s); + return float32_div(one, a, s); +} + +float32 HELPER(rsqrte_f32)(float32 a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 one = int32_to_float32(1, s); + return float32_div(one, float32_sqrt(a, s), s); +} + +uint32_t HELPER(recpe_u32)(uint32_t a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 tmp; + tmp = int32_to_float32(a, s); + tmp = float32_scalbn(tmp, -32, s); + tmp = helper_recpe_f32(tmp, env); + tmp = float32_scalbn(tmp, 31, s); + return float32_to_int32(tmp, s); +} + +uint32_t HELPER(rsqrte_u32)(uint32_t a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 tmp; + tmp = int32_to_float32(a, s); + tmp = float32_scalbn(tmp, -32, s); + tmp = helper_rsqrte_f32(tmp, env); + tmp = float32_scalbn(tmp, 31, s); + return float32_to_int32(tmp, s); +} + +void HELPER(set_teecr)(CPUState *env, uint32_t val) +{ + val &= 1; + if (env->teecr != val) { + env->teecr = val; + tb_flush(env); + } +} diff --git a/qemu/qemu-git/target-arm/.svn/text-base/helpers.h.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/helpers.h.svn-base new file mode 100644 index 0000000..0d1bc47 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/helpers.h.svn-base @@ -0,0 +1,450 @@ +#include "def-helper.h" + +DEF_HELPER_1(clz, i32, i32) +DEF_HELPER_1(sxtb16, i32, i32) +DEF_HELPER_1(uxtb16, i32, i32) + +DEF_HELPER_2(add_setq, i32, i32, i32) +DEF_HELPER_2(add_saturate, i32, i32, i32) +DEF_HELPER_2(sub_saturate, i32, i32, i32) +DEF_HELPER_2(add_usaturate, i32, i32, i32) +DEF_HELPER_2(sub_usaturate, i32, i32, i32) +DEF_HELPER_1(double_saturate, i32, s32) +DEF_HELPER_2(sdiv, s32, s32, s32) +DEF_HELPER_2(udiv, i32, i32, i32) +DEF_HELPER_1(rbit, i32, i32) +DEF_HELPER_1(abs, i32, i32) + +#define PAS_OP(pfx) \ + DEF_HELPER_3(pfx ## add8, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## sub8, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## sub16, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## add16, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## addsubx, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## subaddx, i32, i32, i32, ptr) + +PAS_OP(s) +PAS_OP(u) +#undef PAS_OP + +#define PAS_OP(pfx) \ + DEF_HELPER_2(pfx ## add8, i32, i32, i32) \ + DEF_HELPER_2(pfx ## sub8, i32, i32, i32) \ + DEF_HELPER_2(pfx ## sub16, i32, i32, i32) \ + DEF_HELPER_2(pfx ## add16, i32, i32, i32) \ + DEF_HELPER_2(pfx ## addsubx, i32, i32, i32) \ + DEF_HELPER_2(pfx ## subaddx, i32, i32, i32) +PAS_OP(q) +PAS_OP(sh) +PAS_OP(uq) +PAS_OP(uh) +#undef PAS_OP + +DEF_HELPER_2(ssat, i32, i32, i32) +DEF_HELPER_2(usat, i32, i32, i32) +DEF_HELPER_2(ssat16, i32, i32, i32) +DEF_HELPER_2(usat16, i32, i32, i32) + +DEF_HELPER_2(usad8, i32, i32, i32) + +DEF_HELPER_1(logicq_cc, i32, i64) + +DEF_HELPER_3(sel_flags, i32, i32, i32, i32) +DEF_HELPER_1(exception, void, i32) +DEF_HELPER_0(wfi, void) + +DEF_HELPER_2(cpsr_write, void, i32, i32) +DEF_HELPER_0(cpsr_read, i32) + +DEF_HELPER_3(v7m_msr, void, env, i32, i32) +DEF_HELPER_2(v7m_mrs, i32, env, i32) + +DEF_HELPER_3(set_cp15, void, env, i32, i32) +DEF_HELPER_2(get_cp15, i32, env, i32) + +DEF_HELPER_3(set_cp, void, env, i32, i32) +DEF_HELPER_2(get_cp, i32, env, i32) + +DEF_HELPER_2(get_r13_banked, i32, env, i32) +DEF_HELPER_3(set_r13_banked, void, env, i32, i32) + +DEF_HELPER_1(get_user_reg, i32, i32) +DEF_HELPER_2(set_user_reg, void, i32, i32) + +DEF_HELPER_1(vfp_get_fpscr, i32, env) +DEF_HELPER_2(vfp_set_fpscr, void, env, i32) + +DEF_HELPER_3(vfp_adds, f32, f32, f32, env) +DEF_HELPER_3(vfp_addd, f64, f64, f64, env) +DEF_HELPER_3(vfp_subs, f32, f32, f32, env) +DEF_HELPER_3(vfp_subd, f64, f64, f64, env) +DEF_HELPER_3(vfp_muls, f32, f32, f32, env) +DEF_HELPER_3(vfp_muld, f64, f64, f64, env) +DEF_HELPER_3(vfp_divs, f32, f32, f32, env) +DEF_HELPER_3(vfp_divd, f64, f64, f64, env) +DEF_HELPER_1(vfp_negs, f32, f32) +DEF_HELPER_1(vfp_negd, f64, f64) +DEF_HELPER_1(vfp_abss, f32, f32) +DEF_HELPER_1(vfp_absd, f64, f64) +DEF_HELPER_2(vfp_sqrts, f32, f32, env) +DEF_HELPER_2(vfp_sqrtd, f64, f64, env) +DEF_HELPER_3(vfp_cmps, void, f32, f32, env) +DEF_HELPER_3(vfp_cmpd, void, f64, f64, env) +DEF_HELPER_3(vfp_cmpes, void, f32, f32, env) +DEF_HELPER_3(vfp_cmped, void, f64, f64, env) + +DEF_HELPER_2(vfp_fcvtds, f64, f32, env) +DEF_HELPER_2(vfp_fcvtsd, f32, f64, env) + +DEF_HELPER_2(vfp_uitos, f32, f32, env) +DEF_HELPER_2(vfp_uitod, f64, f32, env) +DEF_HELPER_2(vfp_sitos, f32, f32, env) +DEF_HELPER_2(vfp_sitod, f64, f32, env) + +DEF_HELPER_2(vfp_touis, f32, f32, env) +DEF_HELPER_2(vfp_touid, f32, f64, env) +DEF_HELPER_2(vfp_touizs, f32, f32, env) +DEF_HELPER_2(vfp_touizd, f32, f64, env) +DEF_HELPER_2(vfp_tosis, f32, f32, env) +DEF_HELPER_2(vfp_tosid, f32, f64, env) +DEF_HELPER_2(vfp_tosizs, f32, f32, env) +DEF_HELPER_2(vfp_tosizd, f32, f64, env) + +DEF_HELPER_3(vfp_toshs, f32, f32, i32, env) +DEF_HELPER_3(vfp_tosls, f32, f32, i32, env) +DEF_HELPER_3(vfp_touhs, f32, f32, i32, env) +DEF_HELPER_3(vfp_touls, f32, f32, i32, env) +DEF_HELPER_3(vfp_toshd, f64, f64, i32, env) +DEF_HELPER_3(vfp_tosld, f64, f64, i32, env) +DEF_HELPER_3(vfp_touhd, f64, f64, i32, env) +DEF_HELPER_3(vfp_tould, f64, f64, i32, env) +DEF_HELPER_3(vfp_shtos, f32, f32, i32, env) +DEF_HELPER_3(vfp_sltos, f32, f32, i32, env) +DEF_HELPER_3(vfp_uhtos, f32, f32, i32, env) +DEF_HELPER_3(vfp_ultos, f32, f32, i32, env) +DEF_HELPER_3(vfp_shtod, f64, f64, i32, env) +DEF_HELPER_3(vfp_sltod, f64, f64, i32, env) +DEF_HELPER_3(vfp_uhtod, f64, f64, i32, env) +DEF_HELPER_3(vfp_ultod, f64, f64, i32, env) + +DEF_HELPER_2(vfp_fcvt_f16_to_f32, f32, i32, env) +DEF_HELPER_2(vfp_fcvt_f32_to_f16, i32, f32, env) + +DEF_HELPER_3(recps_f32, f32, f32, f32, env) +DEF_HELPER_3(rsqrts_f32, f32, f32, f32, env) +DEF_HELPER_2(recpe_f32, f32, f32, env) +DEF_HELPER_2(rsqrte_f32, f32, f32, env) +DEF_HELPER_2(recpe_u32, i32, i32, env) +DEF_HELPER_2(rsqrte_u32, i32, i32, env) +DEF_HELPER_4(neon_tbl, i32, i32, i32, i32, i32) +DEF_HELPER_2(neon_add_saturate_u64, i64, i64, i64) +DEF_HELPER_2(neon_add_saturate_s64, i64, i64, i64) +DEF_HELPER_2(neon_sub_saturate_u64, i64, i64, i64) +DEF_HELPER_2(neon_sub_saturate_s64, i64, i64, i64) + +DEF_HELPER_2(add_cc, i32, i32, i32) +DEF_HELPER_2(adc_cc, i32, i32, i32) +DEF_HELPER_2(sub_cc, i32, i32, i32) +DEF_HELPER_2(sbc_cc, i32, i32, i32) + +DEF_HELPER_2(shl, i32, i32, i32) +DEF_HELPER_2(shr, i32, i32, i32) +DEF_HELPER_2(sar, i32, i32, i32) +DEF_HELPER_2(shl_cc, i32, i32, i32) +DEF_HELPER_2(shr_cc, i32, i32, i32) +DEF_HELPER_2(sar_cc, i32, i32, i32) +DEF_HELPER_2(ror_cc, i32, i32, i32) + +/* neon_helper.c */ +DEF_HELPER_3(neon_qadd_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qadd_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qadd_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qadd_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_s16, i32, env, i32, i32) + +DEF_HELPER_2(neon_hadd_s8, i32, i32, i32) +DEF_HELPER_2(neon_hadd_u8, i32, i32, i32) +DEF_HELPER_2(neon_hadd_s16, i32, i32, i32) +DEF_HELPER_2(neon_hadd_u16, i32, i32, i32) +DEF_HELPER_2(neon_hadd_s32, s32, s32, s32) +DEF_HELPER_2(neon_hadd_u32, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_s8, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_u8, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_s16, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_u16, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_s32, s32, s32, s32) +DEF_HELPER_2(neon_rhadd_u32, i32, i32, i32) +DEF_HELPER_2(neon_hsub_s8, i32, i32, i32) +DEF_HELPER_2(neon_hsub_u8, i32, i32, i32) +DEF_HELPER_2(neon_hsub_s16, i32, i32, i32) +DEF_HELPER_2(neon_hsub_u16, i32, i32, i32) +DEF_HELPER_2(neon_hsub_s32, s32, s32, s32) +DEF_HELPER_2(neon_hsub_u32, i32, i32, i32) + +DEF_HELPER_2(neon_cgt_u8, i32, i32, i32) +DEF_HELPER_2(neon_cgt_s8, i32, i32, i32) +DEF_HELPER_2(neon_cgt_u16, i32, i32, i32) +DEF_HELPER_2(neon_cgt_s16, i32, i32, i32) +DEF_HELPER_2(neon_cgt_u32, i32, i32, i32) +DEF_HELPER_2(neon_cgt_s32, i32, i32, i32) +DEF_HELPER_2(neon_cge_u8, i32, i32, i32) +DEF_HELPER_2(neon_cge_s8, i32, i32, i32) +DEF_HELPER_2(neon_cge_u16, i32, i32, i32) +DEF_HELPER_2(neon_cge_s16, i32, i32, i32) +DEF_HELPER_2(neon_cge_u32, i32, i32, i32) +DEF_HELPER_2(neon_cge_s32, i32, i32, i32) + +DEF_HELPER_2(neon_min_u8, i32, i32, i32) +DEF_HELPER_2(neon_min_s8, i32, i32, i32) +DEF_HELPER_2(neon_min_u16, i32, i32, i32) +DEF_HELPER_2(neon_min_s16, i32, i32, i32) +DEF_HELPER_2(neon_min_u32, i32, i32, i32) +DEF_HELPER_2(neon_min_s32, i32, i32, i32) +DEF_HELPER_2(neon_max_u8, i32, i32, i32) +DEF_HELPER_2(neon_max_s8, i32, i32, i32) +DEF_HELPER_2(neon_max_u16, i32, i32, i32) +DEF_HELPER_2(neon_max_s16, i32, i32, i32) +DEF_HELPER_2(neon_max_u32, i32, i32, i32) +DEF_HELPER_2(neon_max_s32, i32, i32, i32) +DEF_HELPER_2(neon_pmin_u8, i32, i32, i32) +DEF_HELPER_2(neon_pmin_s8, i32, i32, i32) +DEF_HELPER_2(neon_pmin_u16, i32, i32, i32) +DEF_HELPER_2(neon_pmin_s16, i32, i32, i32) +DEF_HELPER_2(neon_pmax_u8, i32, i32, i32) +DEF_HELPER_2(neon_pmax_s8, i32, i32, i32) +DEF_HELPER_2(neon_pmax_u16, i32, i32, i32) +DEF_HELPER_2(neon_pmax_s16, i32, i32, i32) + +DEF_HELPER_2(neon_abd_u8, i32, i32, i32) +DEF_HELPER_2(neon_abd_s8, i32, i32, i32) +DEF_HELPER_2(neon_abd_u16, i32, i32, i32) +DEF_HELPER_2(neon_abd_s16, i32, i32, i32) +DEF_HELPER_2(neon_abd_u32, i32, i32, i32) +DEF_HELPER_2(neon_abd_s32, i32, i32, i32) + +DEF_HELPER_2(neon_shl_u8, i32, i32, i32) +DEF_HELPER_2(neon_shl_s8, i32, i32, i32) +DEF_HELPER_2(neon_shl_u16, i32, i32, i32) +DEF_HELPER_2(neon_shl_s16, i32, i32, i32) +DEF_HELPER_2(neon_shl_u32, i32, i32, i32) +DEF_HELPER_2(neon_shl_s32, i32, i32, i32) +DEF_HELPER_2(neon_shl_u64, i64, i64, i64) +DEF_HELPER_2(neon_shl_s64, i64, i64, i64) +DEF_HELPER_2(neon_rshl_u8, i32, i32, i32) +DEF_HELPER_2(neon_rshl_s8, i32, i32, i32) +DEF_HELPER_2(neon_rshl_u16, i32, i32, i32) +DEF_HELPER_2(neon_rshl_s16, i32, i32, i32) +DEF_HELPER_2(neon_rshl_u32, i32, i32, i32) +DEF_HELPER_2(neon_rshl_s32, i32, i32, i32) +DEF_HELPER_2(neon_rshl_u64, i64, i64, i64) +DEF_HELPER_2(neon_rshl_s64, i64, i64, i64) +DEF_HELPER_3(neon_qshl_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_u32, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_s32, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_u64, i64, env, i64, i64) +DEF_HELPER_3(neon_qshl_s64, i64, env, i64, i64) +DEF_HELPER_3(neon_qrshl_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_u32, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_s32, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_u64, i64, env, i64, i64) +DEF_HELPER_3(neon_qrshl_s64, i64, env, i64, i64) + +DEF_HELPER_2(neon_add_u8, i32, i32, i32) +DEF_HELPER_2(neon_add_u16, i32, i32, i32) +DEF_HELPER_2(neon_padd_u8, i32, i32, i32) +DEF_HELPER_2(neon_padd_u16, i32, i32, i32) +DEF_HELPER_2(neon_sub_u8, i32, i32, i32) +DEF_HELPER_2(neon_sub_u16, i32, i32, i32) +DEF_HELPER_2(neon_mul_u8, i32, i32, i32) +DEF_HELPER_2(neon_mul_u16, i32, i32, i32) +DEF_HELPER_2(neon_mul_p8, i32, i32, i32) + +DEF_HELPER_2(neon_tst_u8, i32, i32, i32) +DEF_HELPER_2(neon_tst_u16, i32, i32, i32) +DEF_HELPER_2(neon_tst_u32, i32, i32, i32) +DEF_HELPER_2(neon_ceq_u8, i32, i32, i32) +DEF_HELPER_2(neon_ceq_u16, i32, i32, i32) +DEF_HELPER_2(neon_ceq_u32, i32, i32, i32) + +DEF_HELPER_1(neon_abs_s8, i32, i32) +DEF_HELPER_1(neon_abs_s16, i32, i32) +DEF_HELPER_1(neon_clz_u8, i32, i32) +DEF_HELPER_1(neon_clz_u16, i32, i32) +DEF_HELPER_1(neon_cls_s8, i32, i32) +DEF_HELPER_1(neon_cls_s16, i32, i32) +DEF_HELPER_1(neon_cls_s32, i32, i32) +DEF_HELPER_1(neon_cnt_u8, i32, i32) + +DEF_HELPER_3(neon_qdmulh_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qrdmulh_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qdmulh_s32, i32, env, i32, i32) +DEF_HELPER_3(neon_qrdmulh_s32, i32, env, i32, i32) + +DEF_HELPER_1(neon_narrow_u8, i32, i64) +DEF_HELPER_1(neon_narrow_u16, i32, i64) +DEF_HELPER_2(neon_narrow_sat_u8, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_s8, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_u16, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_s16, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_u32, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_s32, i32, env, i64) +DEF_HELPER_1(neon_narrow_high_u8, i32, i64) +DEF_HELPER_1(neon_narrow_high_u16, i32, i64) +DEF_HELPER_1(neon_narrow_round_high_u8, i32, i64) +DEF_HELPER_1(neon_narrow_round_high_u16, i32, i64) +DEF_HELPER_1(neon_widen_u8, i64, i32) +DEF_HELPER_1(neon_widen_s8, i64, i32) +DEF_HELPER_1(neon_widen_u16, i64, i32) +DEF_HELPER_1(neon_widen_s16, i64, i32) + +DEF_HELPER_2(neon_addl_u16, i64, i64, i64) +DEF_HELPER_2(neon_addl_u32, i64, i64, i64) +DEF_HELPER_2(neon_paddl_u16, i64, i64, i64) +DEF_HELPER_2(neon_paddl_u32, i64, i64, i64) +DEF_HELPER_2(neon_subl_u16, i64, i64, i64) +DEF_HELPER_2(neon_subl_u32, i64, i64, i64) +DEF_HELPER_3(neon_addl_saturate_s32, i64, env, i64, i64) +DEF_HELPER_3(neon_addl_saturate_s64, i64, env, i64, i64) +DEF_HELPER_2(neon_abdl_u16, i64, i32, i32) +DEF_HELPER_2(neon_abdl_s16, i64, i32, i32) +DEF_HELPER_2(neon_abdl_u32, i64, i32, i32) +DEF_HELPER_2(neon_abdl_s32, i64, i32, i32) +DEF_HELPER_2(neon_abdl_u64, i64, i32, i32) +DEF_HELPER_2(neon_abdl_s64, i64, i32, i32) +DEF_HELPER_2(neon_mull_u8, i64, i32, i32) +DEF_HELPER_2(neon_mull_s8, i64, i32, i32) +DEF_HELPER_2(neon_mull_u16, i64, i32, i32) +DEF_HELPER_2(neon_mull_s16, i64, i32, i32) + +DEF_HELPER_1(neon_negl_u16, i64, i64) +DEF_HELPER_1(neon_negl_u32, i64, i64) +DEF_HELPER_1(neon_negl_u64, i64, i64) + +DEF_HELPER_2(neon_qabs_s8, i32, env, i32) +DEF_HELPER_2(neon_qabs_s16, i32, env, i32) +DEF_HELPER_2(neon_qabs_s32, i32, env, i32) +DEF_HELPER_2(neon_qneg_s8, i32, env, i32) +DEF_HELPER_2(neon_qneg_s16, i32, env, i32) +DEF_HELPER_2(neon_qneg_s32, i32, env, i32) + +DEF_HELPER_2(neon_min_f32, i32, i32, i32) +DEF_HELPER_2(neon_max_f32, i32, i32, i32) +DEF_HELPER_2(neon_abd_f32, i32, i32, i32) +DEF_HELPER_2(neon_add_f32, i32, i32, i32) +DEF_HELPER_2(neon_sub_f32, i32, i32, i32) +DEF_HELPER_2(neon_mul_f32, i32, i32, i32) +DEF_HELPER_2(neon_ceq_f32, i32, i32, i32) +DEF_HELPER_2(neon_cge_f32, i32, i32, i32) +DEF_HELPER_2(neon_cgt_f32, i32, i32, i32) +DEF_HELPER_2(neon_acge_f32, i32, i32, i32) +DEF_HELPER_2(neon_acgt_f32, i32, i32, i32) + +/* iwmmxt_helper.c */ +DEF_HELPER_2(iwmmxt_maddsq, i64, i64, i64) +DEF_HELPER_2(iwmmxt_madduq, i64, i64, i64) +DEF_HELPER_2(iwmmxt_sadb, i64, i64, i64) +DEF_HELPER_2(iwmmxt_sadw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_mulslw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_mulshw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_mululw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_muluhw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_macsw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_macuw, i64, i64, i64) +DEF_HELPER_1(iwmmxt_setpsr_nz, i32, i64) + +#define DEF_IWMMXT_HELPER_SIZE_ENV(name) \ +DEF_HELPER_3(iwmmxt_##name##b, i64, env, i64, i64) \ +DEF_HELPER_3(iwmmxt_##name##w, i64, env, i64, i64) \ +DEF_HELPER_3(iwmmxt_##name##l, i64, env, i64, i64) \ + +DEF_IWMMXT_HELPER_SIZE_ENV(unpackl) +DEF_IWMMXT_HELPER_SIZE_ENV(unpackh) + +DEF_HELPER_2(iwmmxt_unpacklub, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackluw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklul, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhub, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhuw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhul, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklsb, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklsw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklsl, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhsb, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhsw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhsl, i64, env, i64) + +DEF_IWMMXT_HELPER_SIZE_ENV(cmpeq) +DEF_IWMMXT_HELPER_SIZE_ENV(cmpgtu) +DEF_IWMMXT_HELPER_SIZE_ENV(cmpgts) + +DEF_IWMMXT_HELPER_SIZE_ENV(mins) +DEF_IWMMXT_HELPER_SIZE_ENV(minu) +DEF_IWMMXT_HELPER_SIZE_ENV(maxs) +DEF_IWMMXT_HELPER_SIZE_ENV(maxu) + +DEF_IWMMXT_HELPER_SIZE_ENV(subn) +DEF_IWMMXT_HELPER_SIZE_ENV(addn) +DEF_IWMMXT_HELPER_SIZE_ENV(subu) +DEF_IWMMXT_HELPER_SIZE_ENV(addu) +DEF_IWMMXT_HELPER_SIZE_ENV(subs) +DEF_IWMMXT_HELPER_SIZE_ENV(adds) + +DEF_HELPER_3(iwmmxt_avgb0, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_avgb1, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_avgw0, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_avgw1, i64, env, i64, i64) + +DEF_HELPER_2(iwmmxt_msadb, i64, i64, i64) + +DEF_HELPER_3(iwmmxt_align, i64, i64, i64, i32) +DEF_HELPER_4(iwmmxt_insr, i64, i64, i32, i32, i32) + +DEF_HELPER_1(iwmmxt_bcstb, i64, i32) +DEF_HELPER_1(iwmmxt_bcstw, i64, i32) +DEF_HELPER_1(iwmmxt_bcstl, i64, i32) + +DEF_HELPER_1(iwmmxt_addcb, i64, i64) +DEF_HELPER_1(iwmmxt_addcw, i64, i64) +DEF_HELPER_1(iwmmxt_addcl, i64, i64) + +DEF_HELPER_1(iwmmxt_msbb, i32, i64) +DEF_HELPER_1(iwmmxt_msbw, i32, i64) +DEF_HELPER_1(iwmmxt_msbl, i32, i64) + +DEF_HELPER_3(iwmmxt_srlw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_srll, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_srlq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sllw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_slll, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sllq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sraw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sral, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sraq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_rorw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_rorl, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_rorq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_shufh, i64, env, i64, i32) + +DEF_HELPER_3(iwmmxt_packuw, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packul, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packuq, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packsw, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packsl, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packsq, i64, env, i64, i64) + +DEF_HELPER_3(iwmmxt_muladdsl, i64, i64, i32, i32) +DEF_HELPER_3(iwmmxt_muladdsw, i64, i64, i32, i32) +DEF_HELPER_3(iwmmxt_muladdswl, i64, i64, i32, i32) + +DEF_HELPER_2(set_teecr, void, env, i32) + +#include "def-helper.h" diff --git a/qemu/qemu-git/target-arm/.svn/text-base/iwmmxt_helper.c.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/iwmmxt_helper.c.svn-base new file mode 100644 index 0000000..3332f70 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/iwmmxt_helper.c.svn-base @@ -0,0 +1,681 @@ +/* + * iwMMXt micro operations for XScale. + * + * Copyright (c) 2007 OpenedHand, Ltd. + * Written by Andrzej Zaborowski + * Copyright (c) 2008 CodeSourcery + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "helpers.h" + +/* iwMMXt macros extracted from GNU gdb. */ + +/* Set the SIMD wCASF flags for 8, 16, 32 or 64-bit operations. */ +#define SIMD8_SET( v, n, b) ((v != 0) << ((((b) + 1) * 4) + (n))) +#define SIMD16_SET(v, n, h) ((v != 0) << ((((h) + 1) * 8) + (n))) +#define SIMD32_SET(v, n, w) ((v != 0) << ((((w) + 1) * 16) + (n))) +#define SIMD64_SET(v, n) ((v != 0) << (32 + (n))) +/* Flags to pass as "n" above. */ +#define SIMD_NBIT -1 +#define SIMD_ZBIT -2 +#define SIMD_CBIT -3 +#define SIMD_VBIT -4 +/* Various status bit macros. */ +#define NBIT8(x) ((x) & 0x80) +#define NBIT16(x) ((x) & 0x8000) +#define NBIT32(x) ((x) & 0x80000000) +#define NBIT64(x) ((x) & 0x8000000000000000ULL) +#define ZBIT8(x) (((x) & 0xff) == 0) +#define ZBIT16(x) (((x) & 0xffff) == 0) +#define ZBIT32(x) (((x) & 0xffffffff) == 0) +#define ZBIT64(x) (x == 0) +/* Sign extension macros. */ +#define EXTEND8H(a) ((uint16_t) (int8_t) (a)) +#define EXTEND8(a) ((uint32_t) (int8_t) (a)) +#define EXTEND16(a) ((uint32_t) (int16_t) (a)) +#define EXTEND16S(a) ((int32_t) (int16_t) (a)) +#define EXTEND32(a) ((uint64_t) (int32_t) (a)) + +uint64_t HELPER(iwmmxt_maddsq)(uint64_t a, uint64_t b) +{ + a = (( + EXTEND16S((a >> 0) & 0xffff) * EXTEND16S((b >> 0) & 0xffff) + + EXTEND16S((a >> 16) & 0xffff) * EXTEND16S((b >> 16) & 0xffff) + ) & 0xffffffff) | ((uint64_t) ( + EXTEND16S((a >> 32) & 0xffff) * EXTEND16S((b >> 32) & 0xffff) + + EXTEND16S((a >> 48) & 0xffff) * EXTEND16S((b >> 48) & 0xffff) + ) << 32); + return a; +} + +uint64_t HELPER(iwmmxt_madduq)(uint64_t a, uint64_t b) +{ + a = (( + ((a >> 0) & 0xffff) * ((b >> 0) & 0xffff) + + ((a >> 16) & 0xffff) * ((b >> 16) & 0xffff) + ) & 0xffffffff) | (( + ((a >> 32) & 0xffff) * ((b >> 32) & 0xffff) + + ((a >> 48) & 0xffff) * ((b >> 48) & 0xffff) + ) << 32); + return a; +} + +uint64_t HELPER(iwmmxt_sadb)(uint64_t a, uint64_t b) +{ +#define abs(x) (((x) >= 0) ? x : -x) +#define SADB(SHR) abs((int) ((a >> SHR) & 0xff) - (int) ((b >> SHR) & 0xff)) + return + SADB(0) + SADB(8) + SADB(16) + SADB(24) + + SADB(32) + SADB(40) + SADB(48) + SADB(56); +#undef SADB +} + +uint64_t HELPER(iwmmxt_sadw)(uint64_t a, uint64_t b) +{ +#define SADW(SHR) \ + abs((int) ((a >> SHR) & 0xffff) - (int) ((b >> SHR) & 0xffff)) + return SADW(0) + SADW(16) + SADW(32) + SADW(48); +#undef SADW +} + +uint64_t HELPER(iwmmxt_mulslw)(uint64_t a, uint64_t b) +{ +#define MULS(SHR) ((uint64_t) ((( \ + EXTEND16S((a >> SHR) & 0xffff) * EXTEND16S((b >> SHR) & 0xffff) \ + ) >> 0) & 0xffff) << SHR) + return MULS(0) | MULS(16) | MULS(32) | MULS(48); +#undef MULS +} + +uint64_t HELPER(iwmmxt_mulshw)(uint64_t a, uint64_t b) +{ +#define MULS(SHR) ((uint64_t) ((( \ + EXTEND16S((a >> SHR) & 0xffff) * EXTEND16S((b >> SHR) & 0xffff) \ + ) >> 16) & 0xffff) << SHR) + return MULS(0) | MULS(16) | MULS(32) | MULS(48); +#undef MULS +} + +uint64_t HELPER(iwmmxt_mululw)(uint64_t a, uint64_t b) +{ +#define MULU(SHR) ((uint64_t) ((( \ + ((a >> SHR) & 0xffff) * ((b >> SHR) & 0xffff) \ + ) >> 0) & 0xffff) << SHR) + return MULU(0) | MULU(16) | MULU(32) | MULU(48); +#undef MULU +} + +uint64_t HELPER(iwmmxt_muluhw)(uint64_t a, uint64_t b) +{ +#define MULU(SHR) ((uint64_t) ((( \ + ((a >> SHR) & 0xffff) * ((b >> SHR) & 0xffff) \ + ) >> 16) & 0xffff) << SHR) + return MULU(0) | MULU(16) | MULU(32) | MULU(48); +#undef MULU +} + +uint64_t HELPER(iwmmxt_macsw)(uint64_t a, uint64_t b) +{ +#define MACS(SHR) ( \ + EXTEND16((a >> SHR) & 0xffff) * EXTEND16S((b >> SHR) & 0xffff)) + return (int64_t) (MACS(0) + MACS(16) + MACS(32) + MACS(48)); +#undef MACS +} + +uint64_t HELPER(iwmmxt_macuw)(uint64_t a, uint64_t b) +{ +#define MACU(SHR) ( \ + (uint32_t) ((a >> SHR) & 0xffff) * \ + (uint32_t) ((b >> SHR) & 0xffff)) + return MACU(0) + MACU(16) + MACU(32) + MACU(48); +#undef MACU +} + +#define NZBIT8(x, i) \ + SIMD8_SET(NBIT8((x) & 0xff), SIMD_NBIT, i) | \ + SIMD8_SET(ZBIT8((x) & 0xff), SIMD_ZBIT, i) +#define NZBIT16(x, i) \ + SIMD16_SET(NBIT16((x) & 0xffff), SIMD_NBIT, i) | \ + SIMD16_SET(ZBIT16((x) & 0xffff), SIMD_ZBIT, i) +#define NZBIT32(x, i) \ + SIMD32_SET(NBIT32((x) & 0xffffffff), SIMD_NBIT, i) | \ + SIMD32_SET(ZBIT32((x) & 0xffffffff), SIMD_ZBIT, i) +#define NZBIT64(x) \ + SIMD64_SET(NBIT64(x), SIMD_NBIT) | \ + SIMD64_SET(ZBIT64(x), SIMD_ZBIT) +#define IWMMXT_OP_UNPACK(S, SH0, SH1, SH2, SH3) \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, b)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + (((a >> SH0) & 0xff) << 0) | (((b >> SH0) & 0xff) << 8) | \ + (((a >> SH1) & 0xff) << 16) | (((b >> SH1) & 0xff) << 24) | \ + (((a >> SH2) & 0xff) << 32) | (((b >> SH2) & 0xff) << 40) | \ + (((a >> SH3) & 0xff) << 48) | (((b >> SH3) & 0xff) << 56); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | \ + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | \ + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | \ + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, w)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + (((a >> SH0) & 0xffff) << 0) | \ + (((b >> SH0) & 0xffff) << 16) | \ + (((a >> SH2) & 0xffff) << 32) | \ + (((b >> SH2) & 0xffff) << 48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT8(a >> 0, 0) | NZBIT8(a >> 16, 1) | \ + NZBIT8(a >> 32, 2) | NZBIT8(a >> 48, 3); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, l)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + (((a >> SH0) & 0xffffffff) << 0) | \ + (((b >> SH0) & 0xffffffff) << 32); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, ub)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + (((x >> SH0) & 0xff) << 0) | \ + (((x >> SH1) & 0xff) << 16) | \ + (((x >> SH2) & 0xff) << 32) | \ + (((x >> SH3) & 0xff) << 48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | \ + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, uw)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + (((x >> SH0) & 0xffff) << 0) | \ + (((x >> SH2) & 0xffff) << 32); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, ul)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = (((x >> SH0) & 0xffffffff) << 0); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x >> 0); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, sb)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + ((uint64_t) EXTEND8H((x >> SH0) & 0xff) << 0) | \ + ((uint64_t) EXTEND8H((x >> SH1) & 0xff) << 16) | \ + ((uint64_t) EXTEND8H((x >> SH2) & 0xff) << 32) | \ + ((uint64_t) EXTEND8H((x >> SH3) & 0xff) << 48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | \ + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, sw)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + ((uint64_t) EXTEND16((x >> SH0) & 0xffff) << 0) | \ + ((uint64_t) EXTEND16((x >> SH2) & 0xffff) << 32); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, sl)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = EXTEND32((x >> SH0) & 0xffffffff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x >> 0); \ + return x; \ +} +IWMMXT_OP_UNPACK(l, 0, 8, 16, 24) +IWMMXT_OP_UNPACK(h, 32, 40, 48, 56) + +#define IWMMXT_OP_CMP(SUFF, Tb, Tw, Tl, O) \ +uint64_t HELPER(glue(iwmmxt_, glue(SUFF, b)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + CMP(0, Tb, O, 0xff) | CMP(8, Tb, O, 0xff) | \ + CMP(16, Tb, O, 0xff) | CMP(24, Tb, O, 0xff) | \ + CMP(32, Tb, O, 0xff) | CMP(40, Tb, O, 0xff) | \ + CMP(48, Tb, O, 0xff) | CMP(56, Tb, O, 0xff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | \ + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | \ + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | \ + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_, glue(SUFF, w)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = CMP(0, Tw, O, 0xffff) | CMP(16, Tw, O, 0xffff) | \ + CMP(32, Tw, O, 0xffff) | CMP(48, Tw, O, 0xffff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT16(a >> 0, 0) | NZBIT16(a >> 16, 1) | \ + NZBIT16(a >> 32, 2) | NZBIT16(a >> 48, 3); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_, glue(SUFF, l)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = CMP(0, Tl, O, 0xffffffff) | \ + CMP(32, Tl, O, 0xffffffff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); \ + return a; \ +} +#define CMP(SHR, TYPE, OPER, MASK) ((((TYPE) ((a >> SHR) & MASK) OPER \ + (TYPE) ((b >> SHR) & MASK)) ? (uint64_t) MASK : 0) << SHR) +IWMMXT_OP_CMP(cmpeq, uint8_t, uint16_t, uint32_t, ==) +IWMMXT_OP_CMP(cmpgts, int8_t, int16_t, int32_t, >) +IWMMXT_OP_CMP(cmpgtu, uint8_t, uint16_t, uint32_t, >) +#undef CMP +#define CMP(SHR, TYPE, OPER, MASK) ((((TYPE) ((a >> SHR) & MASK) OPER \ + (TYPE) ((b >> SHR) & MASK)) ? a : b) & ((uint64_t) MASK << SHR)) +IWMMXT_OP_CMP(mins, int8_t, int16_t, int32_t, <) +IWMMXT_OP_CMP(minu, uint8_t, uint16_t, uint32_t, <) +IWMMXT_OP_CMP(maxs, int8_t, int16_t, int32_t, >) +IWMMXT_OP_CMP(maxu, uint8_t, uint16_t, uint32_t, >) +#undef CMP +#define CMP(SHR, TYPE, OPER, MASK) ((uint64_t) (((TYPE) ((a >> SHR) & MASK) \ + OPER (TYPE) ((b >> SHR) & MASK)) & MASK) << SHR) +IWMMXT_OP_CMP(subn, uint8_t, uint16_t, uint32_t, -) +IWMMXT_OP_CMP(addn, uint8_t, uint16_t, uint32_t, +) +#undef CMP +/* TODO Signed- and Unsigned-Saturation */ +#define CMP(SHR, TYPE, OPER, MASK) ((uint64_t) (((TYPE) ((a >> SHR) & MASK) \ + OPER (TYPE) ((b >> SHR) & MASK)) & MASK) << SHR) +IWMMXT_OP_CMP(subu, uint8_t, uint16_t, uint32_t, -) +IWMMXT_OP_CMP(addu, uint8_t, uint16_t, uint32_t, +) +IWMMXT_OP_CMP(subs, int8_t, int16_t, int32_t, -) +IWMMXT_OP_CMP(adds, int8_t, int16_t, int32_t, +) +#undef CMP +#undef IWMMXT_OP_CMP + +#define AVGB(SHR) ((( \ + ((a >> SHR) & 0xff) + ((b >> SHR) & 0xff) + round) >> 1) << SHR) +#define IWMMXT_OP_AVGB(r) \ +uint64_t HELPER(iwmmxt_avgb##r)(CPUState *env, uint64_t a, uint64_t b) \ +{ \ + const int round = r; \ + a = AVGB(0) | AVGB(8) | AVGB(16) | AVGB(24) | \ + AVGB(32) | AVGB(40) | AVGB(48) | AVGB(56); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + SIMD8_SET(ZBIT8((a >> 0) & 0xff), SIMD_ZBIT, 0) | \ + SIMD8_SET(ZBIT8((a >> 8) & 0xff), SIMD_ZBIT, 1) | \ + SIMD8_SET(ZBIT8((a >> 16) & 0xff), SIMD_ZBIT, 2) | \ + SIMD8_SET(ZBIT8((a >> 24) & 0xff), SIMD_ZBIT, 3) | \ + SIMD8_SET(ZBIT8((a >> 32) & 0xff), SIMD_ZBIT, 4) | \ + SIMD8_SET(ZBIT8((a >> 40) & 0xff), SIMD_ZBIT, 5) | \ + SIMD8_SET(ZBIT8((a >> 48) & 0xff), SIMD_ZBIT, 6) | \ + SIMD8_SET(ZBIT8((a >> 56) & 0xff), SIMD_ZBIT, 7); \ + return a; \ +} +IWMMXT_OP_AVGB(0) +IWMMXT_OP_AVGB(1) +#undef IWMMXT_OP_AVGB +#undef AVGB + +#define AVGW(SHR) ((( \ + ((a >> SHR) & 0xffff) + ((b >> SHR) & 0xffff) + round) >> 1) << SHR) +#define IWMMXT_OP_AVGW(r) \ +uint64_t HELPER(iwmmxt_avgw##r)(CPUState *env, uint64_t a, uint64_t b) \ +{ \ + const int round = r; \ + a = AVGW(0) | AVGW(16) | AVGW(32) | AVGW(48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + SIMD16_SET(ZBIT16((a >> 0) & 0xffff), SIMD_ZBIT, 0) | \ + SIMD16_SET(ZBIT16((a >> 16) & 0xffff), SIMD_ZBIT, 1) | \ + SIMD16_SET(ZBIT16((a >> 32) & 0xffff), SIMD_ZBIT, 2) | \ + SIMD16_SET(ZBIT16((a >> 48) & 0xffff), SIMD_ZBIT, 3); \ + return a; \ +} +IWMMXT_OP_AVGW(0) +IWMMXT_OP_AVGW(1) +#undef IWMMXT_OP_AVGW +#undef AVGW + +uint64_t HELPER(iwmmxt_msadb)(uint64_t a, uint64_t b) +{ + a = ((((a >> 0 ) & 0xffff) * ((b >> 0) & 0xffff) + + ((a >> 16) & 0xffff) * ((b >> 16) & 0xffff)) & 0xffffffff) | + ((((a >> 32) & 0xffff) * ((b >> 32) & 0xffff) + + ((a >> 48) & 0xffff) * ((b >> 48) & 0xffff)) << 32); + return a; +} + +uint64_t HELPER(iwmmxt_align)(uint64_t a, uint64_t b, uint32_t n) +{ + a >>= n << 3; + a |= b << (64 - (n << 3)); + return a; +} + +uint64_t HELPER(iwmmxt_insr)(uint64_t x, uint32_t a, uint32_t b, uint32_t n) +{ + x &= ~((uint64_t) b << n); + x |= (uint64_t) (a & b) << n; + return x; +} + +uint32_t HELPER(iwmmxt_setpsr_nz)(uint64_t x) +{ + return SIMD64_SET((x == 0), SIMD_ZBIT) | + SIMD64_SET((x & (1ULL << 63)), SIMD_NBIT); +} + +uint64_t HELPER(iwmmxt_bcstb)(uint32_t arg) +{ + arg &= 0xff; + return + ((uint64_t) arg << 0 ) | ((uint64_t) arg << 8 ) | + ((uint64_t) arg << 16) | ((uint64_t) arg << 24) | + ((uint64_t) arg << 32) | ((uint64_t) arg << 40) | + ((uint64_t) arg << 48) | ((uint64_t) arg << 56); +} + +uint64_t HELPER(iwmmxt_bcstw)(uint32_t arg) +{ + arg &= 0xffff; + return + ((uint64_t) arg << 0 ) | ((uint64_t) arg << 16) | + ((uint64_t) arg << 32) | ((uint64_t) arg << 48); +} + +uint64_t HELPER(iwmmxt_bcstl)(uint32_t arg) +{ + return arg | ((uint64_t) arg << 32); +} + +uint64_t HELPER(iwmmxt_addcb)(uint64_t x) +{ + return + ((x >> 0) & 0xff) + ((x >> 8) & 0xff) + + ((x >> 16) & 0xff) + ((x >> 24) & 0xff) + + ((x >> 32) & 0xff) + ((x >> 40) & 0xff) + + ((x >> 48) & 0xff) + ((x >> 56) & 0xff); +} + +uint64_t HELPER(iwmmxt_addcw)(uint64_t x) +{ + return + ((x >> 0) & 0xffff) + ((x >> 16) & 0xffff) + + ((x >> 32) & 0xffff) + ((x >> 48) & 0xffff); +} + +uint64_t HELPER(iwmmxt_addcl)(uint64_t x) +{ + return (x & 0xffffffff) + (x >> 32); +} + +uint32_t HELPER(iwmmxt_msbb)(uint64_t x) +{ + return + ((x >> 7) & 0x01) | ((x >> 14) & 0x02) | + ((x >> 21) & 0x04) | ((x >> 28) & 0x08) | + ((x >> 35) & 0x10) | ((x >> 42) & 0x20) | + ((x >> 49) & 0x40) | ((x >> 56) & 0x80); +} + +uint32_t HELPER(iwmmxt_msbw)(uint64_t x) +{ + return + ((x >> 15) & 0x01) | ((x >> 30) & 0x02) | + ((x >> 45) & 0x04) | ((x >> 52) & 0x08); +} + +uint32_t HELPER(iwmmxt_msbl)(uint64_t x) +{ + return ((x >> 31) & 0x01) | ((x >> 62) & 0x02); +} + +/* FIXME: Split wCASF setting into a separate op to avoid env use. */ +uint64_t HELPER(iwmmxt_srlw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((x & (0xffffll << 0)) >> n) & (0xffffll << 0)) | + (((x & (0xffffll << 16)) >> n) & (0xffffll << 16)) | + (((x & (0xffffll << 32)) >> n) & (0xffffll << 32)) | + (((x & (0xffffll << 48)) >> n) & (0xffffll << 48)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_srll)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((x & (0xffffffffll << 0)) >> n) | + ((x >> n) & (0xffffffffll << 32)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_srlq)(CPUState *env, uint64_t x, uint32_t n) +{ + x >>= n; + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_sllw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((x & (0xffffll << 0)) << n) & (0xffffll << 0)) | + (((x & (0xffffll << 16)) << n) & (0xffffll << 16)) | + (((x & (0xffffll << 32)) << n) & (0xffffll << 32)) | + (((x & (0xffffll << 48)) << n) & (0xffffll << 48)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_slll)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((x << n) & (0xffffffffll << 0)) | + ((x & (0xffffffffll << 32)) << n); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_sllq)(CPUState *env, uint64_t x, uint32_t n) +{ + x <<= n; + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_sraw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((uint64_t) ((EXTEND16(x >> 0) >> n) & 0xffff) << 0) | + ((uint64_t) ((EXTEND16(x >> 16) >> n) & 0xffff) << 16) | + ((uint64_t) ((EXTEND16(x >> 32) >> n) & 0xffff) << 32) | + ((uint64_t) ((EXTEND16(x >> 48) >> n) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_sral)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((EXTEND32(x >> 0) >> n) & 0xffffffff) << 0) | + (((EXTEND32(x >> 32) >> n) & 0xffffffff) << 32); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_sraq)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (int64_t) x >> n; + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_rorw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((((x & (0xffffll << 0)) >> n) | + ((x & (0xffffll << 0)) << (16 - n))) & (0xffffll << 0)) | + ((((x & (0xffffll << 16)) >> n) | + ((x & (0xffffll << 16)) << (16 - n))) & (0xffffll << 16)) | + ((((x & (0xffffll << 32)) >> n) | + ((x & (0xffffll << 32)) << (16 - n))) & (0xffffll << 32)) | + ((((x & (0xffffll << 48)) >> n) | + ((x & (0xffffll << 48)) << (16 - n))) & (0xffffll << 48)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_rorl)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((x & (0xffffffffll << 0)) >> n) | + ((x >> n) & (0xffffffffll << 32)) | + ((x << (32 - n)) & (0xffffffffll << 0)) | + ((x & (0xffffffffll << 32)) << (32 - n)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_rorq)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (x >> n) | (x << (64 - n)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_shufh)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((x >> ((n << 4) & 0x30)) & 0xffff) << 0) | + (((x >> ((n << 2) & 0x30)) & 0xffff) << 16) | + (((x >> ((n << 0) & 0x30)) & 0xffff) << 32) | + (((x >> ((n >> 2) & 0x30)) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +/* TODO: Unsigned-Saturation */ +uint64_t HELPER(iwmmxt_packuw)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xff) << 0) | (((a >> 16) & 0xff) << 8) | + (((a >> 32) & 0xff) << 16) | (((a >> 48) & 0xff) << 24) | + (((b >> 0) & 0xff) << 32) | (((b >> 16) & 0xff) << 40) | + (((b >> 32) & 0xff) << 48) | (((b >> 48) & 0xff) << 56); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); + return a; +} + +uint64_t HELPER(iwmmxt_packul)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xffff) << 0) | (((a >> 32) & 0xffff) << 16) | + (((b >> 0) & 0xffff) << 32) | (((b >> 32) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(a >> 0, 0) | NZBIT16(a >> 16, 1) | + NZBIT16(a >> 32, 2) | NZBIT16(a >> 48, 3); + return a; +} + +uint64_t HELPER(iwmmxt_packuq)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (a & 0xffffffff) | ((b & 0xffffffff) << 32); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); + return a; +} + +/* TODO: Signed-Saturation */ +uint64_t HELPER(iwmmxt_packsw)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xff) << 0) | (((a >> 16) & 0xff) << 8) | + (((a >> 32) & 0xff) << 16) | (((a >> 48) & 0xff) << 24) | + (((b >> 0) & 0xff) << 32) | (((b >> 16) & 0xff) << 40) | + (((b >> 32) & 0xff) << 48) | (((b >> 48) & 0xff) << 56); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); + return a; +} + +uint64_t HELPER(iwmmxt_packsl)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xffff) << 0) | (((a >> 32) & 0xffff) << 16) | + (((b >> 0) & 0xffff) << 32) | (((b >> 32) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(a >> 0, 0) | NZBIT16(a >> 16, 1) | + NZBIT16(a >> 32, 2) | NZBIT16(a >> 48, 3); + return a; +} + +uint64_t HELPER(iwmmxt_packsq)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (a & 0xffffffff) | ((b & 0xffffffff) << 32); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); + return a; +} + +uint64_t HELPER(iwmmxt_muladdsl)(uint64_t c, uint32_t a, uint32_t b) +{ + return c + ((int32_t) EXTEND32(a) * (int32_t) EXTEND32(b)); +} + +uint64_t HELPER(iwmmxt_muladdsw)(uint64_t c, uint32_t a, uint32_t b) +{ + c += EXTEND32(EXTEND16S((a >> 0) & 0xffff) * + EXTEND16S((b >> 0) & 0xffff)); + c += EXTEND32(EXTEND16S((a >> 16) & 0xffff) * + EXTEND16S((b >> 16) & 0xffff)); + return c; +} + +uint64_t HELPER(iwmmxt_muladdswl)(uint64_t c, uint32_t a, uint32_t b) +{ + return c + (EXTEND32(EXTEND16S(a & 0xffff) * + EXTEND16S(b & 0xffff))); +} diff --git a/qemu/qemu-git/target-arm/.svn/text-base/neon_helper.c.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/neon_helper.c.svn-base new file mode 100644 index 0000000..5e6452b --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/neon_helper.c.svn-base @@ -0,0 +1,1459 @@ +/* + * ARM NEON vector operations. + * + * Copyright (c) 2007, 2008 CodeSourcery. + * Written by Paul Brook + * + * This code is licenced under the GNU GPL v2. + */ +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "helpers.h" + +#define SIGNBIT (uint32_t)0x80000000 +#define SIGNBIT64 ((uint64_t)1 << 63) + +#define SET_QC() env->vfp.xregs[ARM_VFP_FPSCR] = CPSR_Q + +static float_status neon_float_status; +#define NFS &neon_float_status + +/* Helper routines to perform bitwise copies between float and int. */ +static inline float32 vfp_itos(uint32_t i) +{ + union { + uint32_t i; + float32 s; + } v; + + v.i = i; + return v.s; +} + +static inline uint32_t vfp_stoi(float32 s) +{ + union { + uint32_t i; + float32 s; + } v; + + v.s = s; + return v.i; +} + +#define NEON_TYPE1(name, type) \ +typedef struct \ +{ \ + type v1; \ +} neon_##name; +#ifdef HOST_WORDS_BIGENDIAN +#define NEON_TYPE2(name, type) \ +typedef struct \ +{ \ + type v2; \ + type v1; \ +} neon_##name; +#define NEON_TYPE4(name, type) \ +typedef struct \ +{ \ + type v4; \ + type v3; \ + type v2; \ + type v1; \ +} neon_##name; +#else +#define NEON_TYPE2(name, type) \ +typedef struct \ +{ \ + type v1; \ + type v2; \ +} neon_##name; +#define NEON_TYPE4(name, type) \ +typedef struct \ +{ \ + type v1; \ + type v2; \ + type v3; \ + type v4; \ +} neon_##name; +#endif + +NEON_TYPE4(s8, int8_t) +NEON_TYPE4(u8, uint8_t) +NEON_TYPE2(s16, int16_t) +NEON_TYPE2(u16, uint16_t) +NEON_TYPE1(s32, int32_t) +NEON_TYPE1(u32, uint32_t) +#undef NEON_TYPE4 +#undef NEON_TYPE2 +#undef NEON_TYPE1 + +/* Copy from a uint32_t to a vector structure type. */ +#define NEON_UNPACK(vtype, dest, val) do { \ + union { \ + vtype v; \ + uint32_t i; \ + } conv_u; \ + conv_u.i = (val); \ + dest = conv_u.v; \ + } while(0) + +/* Copy from a vector structure type to a uint32_t. */ +#define NEON_PACK(vtype, dest, val) do { \ + union { \ + vtype v; \ + uint32_t i; \ + } conv_u; \ + conv_u.v = (val); \ + dest = conv_u.i; \ + } while(0) + +#define NEON_DO1 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc2.v1); +#define NEON_DO2 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc2.v1); \ + NEON_FN(vdest.v2, vsrc1.v2, vsrc2.v2); +#define NEON_DO4 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc2.v1); \ + NEON_FN(vdest.v2, vsrc1.v2, vsrc2.v2); \ + NEON_FN(vdest.v3, vsrc1.v3, vsrc2.v3); \ + NEON_FN(vdest.v4, vsrc1.v4, vsrc2.v4); + +#define NEON_VOP_BODY(vtype, n) \ +{ \ + uint32_t res; \ + vtype vsrc1; \ + vtype vsrc2; \ + vtype vdest; \ + NEON_UNPACK(vtype, vsrc1, arg1); \ + NEON_UNPACK(vtype, vsrc2, arg2); \ + NEON_DO##n; \ + NEON_PACK(vtype, res, vdest); \ + return res; \ +} + +#define NEON_VOP(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(uint32_t arg1, uint32_t arg2) \ +NEON_VOP_BODY(vtype, n) + +#define NEON_VOP_ENV(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(CPUState *env, uint32_t arg1, uint32_t arg2) \ +NEON_VOP_BODY(vtype, n) + +/* Pairwise operations. */ +/* For 32-bit elements each segment only contains a single element, so + the elementwise and pairwise operations are the same. */ +#define NEON_PDO2 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc1.v2); \ + NEON_FN(vdest.v2, vsrc2.v1, vsrc2.v2); +#define NEON_PDO4 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc1.v2); \ + NEON_FN(vdest.v2, vsrc1.v3, vsrc1.v4); \ + NEON_FN(vdest.v3, vsrc2.v1, vsrc2.v2); \ + NEON_FN(vdest.v4, vsrc2.v3, vsrc2.v4); \ + +#define NEON_POP(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(uint32_t arg1, uint32_t arg2) \ +{ \ + uint32_t res; \ + vtype vsrc1; \ + vtype vsrc2; \ + vtype vdest; \ + NEON_UNPACK(vtype, vsrc1, arg1); \ + NEON_UNPACK(vtype, vsrc2, arg2); \ + NEON_PDO##n; \ + NEON_PACK(vtype, res, vdest); \ + return res; \ +} + +/* Unary operators. */ +#define NEON_VOP1(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(uint32_t arg) \ +{ \ + vtype vsrc1; \ + vtype vdest; \ + NEON_UNPACK(vtype, vsrc1, arg); \ + NEON_DO##n; \ + NEON_PACK(vtype, arg, vdest); \ + return arg; \ +} + + +#define NEON_USAT(dest, src1, src2, type) do { \ + uint32_t tmp = (uint32_t)src1 + (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + dest = ~0; \ + } else { \ + dest = tmp; \ + }} while(0) +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint8_t) +NEON_VOP_ENV(qadd_u8, neon_u8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint16_t) +NEON_VOP_ENV(qadd_u16, neon_u16, 2) +#undef NEON_FN +#undef NEON_USAT + +#define NEON_SSAT(dest, src1, src2, type) do { \ + int32_t tmp = (uint32_t)src1 + (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + if (src2 > 0) { \ + tmp = (1 << (sizeof(type) * 8 - 1)) - 1; \ + } else { \ + tmp = 1 << (sizeof(type) * 8 - 1); \ + } \ + } \ + dest = tmp; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int8_t) +NEON_VOP_ENV(qadd_s8, neon_s8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int16_t) +NEON_VOP_ENV(qadd_s16, neon_s16, 2) +#undef NEON_FN +#undef NEON_SSAT + +#define NEON_USAT(dest, src1, src2, type) do { \ + uint32_t tmp = (uint32_t)src1 - (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + dest = 0; \ + } else { \ + dest = tmp; \ + }} while(0) +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint8_t) +NEON_VOP_ENV(qsub_u8, neon_u8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint16_t) +NEON_VOP_ENV(qsub_u16, neon_u16, 2) +#undef NEON_FN +#undef NEON_USAT + +#define NEON_SSAT(dest, src1, src2, type) do { \ + int32_t tmp = (uint32_t)src1 - (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + if (src2 < 0) { \ + tmp = (1 << (sizeof(type) * 8 - 1)) - 1; \ + } else { \ + tmp = 1 << (sizeof(type) * 8 - 1); \ + } \ + } \ + dest = tmp; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int8_t) +NEON_VOP_ENV(qsub_s8, neon_s8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int16_t) +NEON_VOP_ENV(qsub_s16, neon_s16, 2) +#undef NEON_FN +#undef NEON_SSAT + +#define NEON_FN(dest, src1, src2) dest = (src1 + src2) >> 1 +NEON_VOP(hadd_s8, neon_s8, 4) +NEON_VOP(hadd_u8, neon_u8, 4) +NEON_VOP(hadd_s16, neon_s16, 2) +NEON_VOP(hadd_u16, neon_u16, 2) +#undef NEON_FN + +int32_t HELPER(neon_hadd_s32)(int32_t src1, int32_t src2) +{ + int32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if (src1 & src2 & 1) + dest++; + return dest; +} + +uint32_t HELPER(neon_hadd_u32)(uint32_t src1, uint32_t src2) +{ + uint32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if (src1 & src2 & 1) + dest++; + return dest; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 + src2 + 1) >> 1 +NEON_VOP(rhadd_s8, neon_s8, 4) +NEON_VOP(rhadd_u8, neon_u8, 4) +NEON_VOP(rhadd_s16, neon_s16, 2) +NEON_VOP(rhadd_u16, neon_u16, 2) +#undef NEON_FN + +int32_t HELPER(neon_rhadd_s32)(int32_t src1, int32_t src2) +{ + int32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if ((src1 | src2) & 1) + dest++; + return dest; +} + +uint32_t HELPER(neon_rhadd_u32)(uint32_t src1, uint32_t src2) +{ + uint32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if ((src1 | src2) & 1) + dest++; + return dest; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 - src2) >> 1 +NEON_VOP(hsub_s8, neon_s8, 4) +NEON_VOP(hsub_u8, neon_u8, 4) +NEON_VOP(hsub_s16, neon_s16, 2) +NEON_VOP(hsub_u16, neon_u16, 2) +#undef NEON_FN + +int32_t HELPER(neon_hsub_s32)(int32_t src1, int32_t src2) +{ + int32_t dest; + + dest = (src1 >> 1) - (src2 >> 1); + if ((~src1) & src2 & 1) + dest--; + return dest; +} + +uint32_t HELPER(neon_hsub_u32)(uint32_t src1, uint32_t src2) +{ + uint32_t dest; + + dest = (src1 >> 1) - (src2 >> 1); + if ((~src1) & src2 & 1) + dest--; + return dest; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 > src2) ? ~0 : 0 +NEON_VOP(cgt_s8, neon_s8, 4) +NEON_VOP(cgt_u8, neon_u8, 4) +NEON_VOP(cgt_s16, neon_s16, 2) +NEON_VOP(cgt_u16, neon_u16, 2) +NEON_VOP(cgt_s32, neon_s32, 1) +NEON_VOP(cgt_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 >= src2) ? ~0 : 0 +NEON_VOP(cge_s8, neon_s8, 4) +NEON_VOP(cge_u8, neon_u8, 4) +NEON_VOP(cge_s16, neon_s16, 2) +NEON_VOP(cge_u16, neon_u16, 2) +NEON_VOP(cge_s32, neon_s32, 1) +NEON_VOP(cge_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 < src2) ? src1 : src2 +NEON_VOP(min_s8, neon_s8, 4) +NEON_VOP(min_u8, neon_u8, 4) +NEON_VOP(min_s16, neon_s16, 2) +NEON_VOP(min_u16, neon_u16, 2) +NEON_VOP(min_s32, neon_s32, 1) +NEON_VOP(min_u32, neon_u32, 1) +NEON_POP(pmin_s8, neon_s8, 4) +NEON_POP(pmin_u8, neon_u8, 4) +NEON_POP(pmin_s16, neon_s16, 2) +NEON_POP(pmin_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 > src2) ? src1 : src2 +NEON_VOP(max_s8, neon_s8, 4) +NEON_VOP(max_u8, neon_u8, 4) +NEON_VOP(max_s16, neon_s16, 2) +NEON_VOP(max_u16, neon_u16, 2) +NEON_VOP(max_s32, neon_s32, 1) +NEON_VOP(max_u32, neon_u32, 1) +NEON_POP(pmax_s8, neon_s8, 4) +NEON_POP(pmax_u8, neon_u8, 4) +NEON_POP(pmax_s16, neon_s16, 2) +NEON_POP(pmax_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) \ + dest = (src1 > src2) ? (src1 - src2) : (src2 - src1) +NEON_VOP(abd_s8, neon_s8, 4) +NEON_VOP(abd_u8, neon_u8, 4) +NEON_VOP(abd_s16, neon_s16, 2) +NEON_VOP(abd_u16, neon_u16, 2) +NEON_VOP(abd_s32, neon_s32, 1) +NEON_VOP(abd_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8 || \ + tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(shl_u8, neon_u8, 4) +NEON_VOP(shl_u16, neon_u16, 2) +NEON_VOP(shl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_shl_u64)(uint64_t val, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + if (shift >= 64 || shift <= -64) { + val = 0; + } else if (shift < 0) { + val >>= -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (sizeof(src1) * 8 - 1); \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(shl_s8, neon_s8, 4) +NEON_VOP(shl_s16, neon_s16, 2) +NEON_VOP(shl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_shl_s64)(uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + int64_t val = valop; + if (shift >= 64) { + val = 0; + } else if (shift <= -64) { + val >>= 63; + } else if (shift < 0) { + val >>= -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp < -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (sizeof(src1) * 8 - 1); \ + } else if (tmp == -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (tmp - 1); \ + dest++; \ + dest >>= 1; \ + } else if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(rshl_s8, neon_s8, 4) +NEON_VOP(rshl_s16, neon_s16, 2) +NEON_VOP(rshl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_rshl_s64)(uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + int64_t val = valop; + if (shift >= 64) { + val = 0; + } else if (shift < -64) { + val >>= 63; + } else if (shift == -63) { + val >>= 63; + val++; + val >>= 1; + } else if (shift < 0) { + val = (val + ((int64_t)1 << (-1 - shift))) >> -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8 || \ + tmp < -(ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp == -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (tmp - 1); \ + } else if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(rshl_u8, neon_u8, 4) +NEON_VOP(rshl_u16, neon_u16, 2) +NEON_VOP(rshl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_rshl_u64)(uint64_t val, uint64_t shiftop) +{ + int8_t shift = (uint8_t)shiftop; + if (shift >= 64 || shift < 64) { + val = 0; + } else if (shift == -64) { + /* Rounding a 1-bit result just preserves that bit. */ + val >>= 63; + } if (shift < 0) { + val = (val + ((uint64_t)1 << (-1 - shift))) >> -shift; + val >>= -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + if (src1) { \ + SET_QC(); \ + dest = ~0; \ + } else { \ + dest = 0; \ + } \ + } else if (tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = ~0; \ + } \ + }} while (0) +NEON_VOP_ENV(qshl_u8, neon_u8, 4) +NEON_VOP_ENV(qshl_u16, neon_u16, 2) +NEON_VOP_ENV(qshl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qshl_u64)(CPUState *env, uint64_t val, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + if (shift >= 64) { + if (val) { + val = ~(uint64_t)0; + SET_QC(); + } else { + val = 0; + } + } else if (shift <= -64) { + val = 0; + } else if (shift < 0) { + val >>= -shift; + } else { + uint64_t tmp = val; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = ~(uint64_t)0; + } + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + if (src1) \ + SET_QC(); \ + dest = src1 >> 31; \ + } else if (tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> 31; \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = src2 >> 31; \ + } \ + }} while (0) +NEON_VOP_ENV(qshl_s8, neon_s8, 4) +NEON_VOP_ENV(qshl_s16, neon_s16, 2) +NEON_VOP_ENV(qshl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qshl_s64)(CPUState *env, uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (uint8_t)shiftop; + int64_t val = valop; + if (shift >= 64) { + if (val) { + SET_QC(); + val = (val >> 63) & ~SIGNBIT64; + } + } else if (shift <= 64) { + val >>= 63; + } else if (shift < 0) { + val >>= -shift; + } else { + int64_t tmp = val; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = (tmp >> 63) ^ ~SIGNBIT64; + } + } + return val; +} + + +/* FIXME: This is wrong. */ +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = ~0; \ + } \ + }} while (0) +NEON_VOP_ENV(qrshl_u8, neon_u8, 4) +NEON_VOP_ENV(qrshl_u16, neon_u16, 2) +NEON_VOP_ENV(qrshl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qrshl_u64)(CPUState *env, uint64_t val, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + if (shift < 0) { + val = (val + (1 << (-1 - shift))) >> -shift; + } else { \ + uint64_t tmp = val; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = ~0; + } + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = src1 >> 31; \ + } \ + }} while (0) +NEON_VOP_ENV(qrshl_s8, neon_s8, 4) +NEON_VOP_ENV(qrshl_s16, neon_s16, 2) +NEON_VOP_ENV(qrshl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qrshl_s64)(CPUState *env, uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (uint8_t)shiftop; + int64_t val = valop; + + if (shift < 0) { + val = (val + (1 << (-1 - shift))) >> -shift; + } else { + int64_t tmp = val;; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = tmp >> 31; + } + } + return val; +} + +uint32_t HELPER(neon_add_u8)(uint32_t a, uint32_t b) +{ + uint32_t mask; + mask = (a ^ b) & 0x80808080u; + a &= ~0x80808080u; + b &= ~0x80808080u; + return (a + b) ^ mask; +} + +uint32_t HELPER(neon_add_u16)(uint32_t a, uint32_t b) +{ + uint32_t mask; + mask = (a ^ b) & 0x80008000u; + a &= ~0x80008000u; + b &= ~0x80008000u; + return (a + b) ^ mask; +} + +#define NEON_FN(dest, src1, src2) dest = src1 + src2 +NEON_POP(padd_u8, neon_u8, 4) +NEON_POP(padd_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = src1 - src2 +NEON_VOP(sub_u8, neon_u8, 4) +NEON_VOP(sub_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = src1 * src2 +NEON_VOP(mul_u8, neon_u8, 4) +NEON_VOP(mul_u16, neon_u16, 2) +#undef NEON_FN + +/* Polynomial multiplication is like integer multiplication except the + partial products are XORed, not added. */ +uint32_t HELPER(neon_mul_p8)(uint32_t op1, uint32_t op2) +{ + uint32_t mask; + uint32_t result; + result = 0; + while (op1) { + mask = 0; + if (op1 & 1) + mask |= 0xff; + if (op1 & (1 << 8)) + mask |= (0xff << 8); + if (op1 & (1 << 16)) + mask |= (0xff << 16); + if (op1 & (1 << 24)) + mask |= (0xff << 24); + result ^= op2 & mask; + op1 = (op1 >> 1) & 0x7f7f7f7f; + op2 = (op2 << 1) & 0xfefefefe; + } + return result; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 & src2) ? -1 : 0 +NEON_VOP(tst_u8, neon_u8, 4) +NEON_VOP(tst_u16, neon_u16, 2) +NEON_VOP(tst_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 == src2) ? -1 : 0 +NEON_VOP(ceq_u8, neon_u8, 4) +NEON_VOP(ceq_u16, neon_u16, 2) +NEON_VOP(ceq_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = (src < 0) ? -src : src +NEON_VOP1(abs_s8, neon_s8, 4) +NEON_VOP1(abs_s16, neon_s16, 2) +#undef NEON_FN + +/* Count Leading Sign/Zero Bits. */ +static inline int do_clz8(uint8_t x) +{ + int n; + for (n = 8; x; n--) + x >>= 1; + return n; +} + +static inline int do_clz16(uint16_t x) +{ + int n; + for (n = 16; x; n--) + x >>= 1; + return n; +} + +#define NEON_FN(dest, src, dummy) dest = do_clz8(src) +NEON_VOP1(clz_u8, neon_u8, 4) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = do_clz16(src) +NEON_VOP1(clz_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = do_clz8((src < 0) ? ~src : src) - 1 +NEON_VOP1(cls_s8, neon_s8, 4) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = do_clz16((src < 0) ? ~src : src) - 1 +NEON_VOP1(cls_s16, neon_s16, 2) +#undef NEON_FN + +uint32_t HELPER(neon_cls_s32)(uint32_t x) +{ + int count; + if ((int32_t)x < 0) + x = ~x; + for (count = 32; x; count--) + x = x >> 1; + return count - 1; +} + +/* Bit count. */ +uint32_t HELPER(neon_cnt_u8)(uint32_t x) +{ + x = (x & 0x55555555) + ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x & 0x0f0f0f0f) + ((x >> 4) & 0x0f0f0f0f); + return x; +} + +#define NEON_QDMULH16(dest, src1, src2, round) do { \ + uint32_t tmp = (int32_t)(int16_t) src1 * (int16_t) src2; \ + if ((tmp ^ (tmp << 1)) & SIGNBIT) { \ + SET_QC(); \ + tmp = (tmp >> 31) ^ ~SIGNBIT; \ + } \ + tmp <<= 1; \ + if (round) { \ + int32_t old = tmp; \ + tmp += 1 << 15; \ + if ((int32_t)tmp < old) { \ + SET_QC(); \ + tmp = SIGNBIT - 1; \ + } \ + } \ + dest = tmp >> 16; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_QDMULH16(dest, src1, src2, 0) +NEON_VOP_ENV(qdmulh_s16, neon_s16, 2) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_QDMULH16(dest, src1, src2, 1) +NEON_VOP_ENV(qrdmulh_s16, neon_s16, 2) +#undef NEON_FN +#undef NEON_QDMULH16 + +#define NEON_QDMULH32(dest, src1, src2, round) do { \ + uint64_t tmp = (int64_t)(int32_t) src1 * (int32_t) src2; \ + if ((tmp ^ (tmp << 1)) & SIGNBIT64) { \ + SET_QC(); \ + tmp = (tmp >> 63) ^ ~SIGNBIT64; \ + } else { \ + tmp <<= 1; \ + } \ + if (round) { \ + int64_t old = tmp; \ + tmp += (int64_t)1 << 31; \ + if ((int64_t)tmp < old) { \ + SET_QC(); \ + tmp = SIGNBIT64 - 1; \ + } \ + } \ + dest = tmp >> 32; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_QDMULH32(dest, src1, src2, 0) +NEON_VOP_ENV(qdmulh_s32, neon_s32, 1) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_QDMULH32(dest, src1, src2, 1) +NEON_VOP_ENV(qrdmulh_s32, neon_s32, 1) +#undef NEON_FN +#undef NEON_QDMULH32 + +uint32_t HELPER(neon_narrow_u8)(uint64_t x) +{ + return (x & 0xffu) | ((x >> 8) & 0xff00u) | ((x >> 16) & 0xff0000u) + | ((x >> 24) & 0xff000000u); +} + +uint32_t HELPER(neon_narrow_u16)(uint64_t x) +{ + return (x & 0xffffu) | ((x >> 16) & 0xffff0000u); +} + +uint32_t HELPER(neon_narrow_high_u8)(uint64_t x) +{ + return ((x >> 8) & 0xff) | ((x >> 16) & 0xff00) + | ((x >> 24) & 0xff0000) | ((x >> 32) & 0xff000000); +} + +uint32_t HELPER(neon_narrow_high_u16)(uint64_t x) +{ + return ((x >> 16) & 0xffff) | ((x >> 32) & 0xffff0000); +} + +uint32_t HELPER(neon_narrow_round_high_u8)(uint64_t x) +{ + x &= 0xff80ff80ff80ff80ull; + x += 0x0080008000800080ull; + return ((x >> 8) & 0xff) | ((x >> 16) & 0xff00) + | ((x >> 24) & 0xff0000) | ((x >> 32) & 0xff000000); +} + +uint32_t HELPER(neon_narrow_round_high_u16)(uint64_t x) +{ + x &= 0xffff8000ffff8000ull; + x += 0x0000800000008000ull; + return ((x >> 16) & 0xffff) | ((x >> 32) & 0xffff0000); +} + +uint32_t HELPER(neon_narrow_sat_u8)(CPUState *env, uint64_t x) +{ + uint16_t s; + uint8_t d; + uint32_t res = 0; +#define SAT8(n) \ + s = x >> n; \ + if (s > 0xff) { \ + d = 0xff; \ + SET_QC(); \ + } else { \ + d = s; \ + } \ + res |= (uint32_t)d << (n / 2); + + SAT8(0); + SAT8(16); + SAT8(32); + SAT8(48); +#undef SAT8 + return res; +} + +uint32_t HELPER(neon_narrow_sat_s8)(CPUState *env, uint64_t x) +{ + int16_t s; + uint8_t d; + uint32_t res = 0; +#define SAT8(n) \ + s = x >> n; \ + if (s != (int8_t)s) { \ + d = (s >> 15) ^ 0x7f; \ + SET_QC(); \ + } else { \ + d = s; \ + } \ + res |= (uint32_t)d << (n / 2); + + SAT8(0); + SAT8(16); + SAT8(32); + SAT8(48); +#undef SAT8 + return res; +} + +uint32_t HELPER(neon_narrow_sat_u16)(CPUState *env, uint64_t x) +{ + uint32_t high; + uint32_t low; + low = x; + if (low > 0xffff) { + low = 0xffff; + SET_QC(); + } + high = x >> 32; + if (high > 0xffff) { + high = 0xffff; + SET_QC(); + } + return low | (high << 16); +} + +uint32_t HELPER(neon_narrow_sat_s16)(CPUState *env, uint64_t x) +{ + int32_t low; + int32_t high; + low = x; + if (low != (int16_t)low) { + low = (low >> 31) ^ 0x7fff; + SET_QC(); + } + high = x >> 32; + if (high != (int16_t)high) { + high = (high >> 31) ^ 0x7fff; + SET_QC(); + } + return (uint16_t)low | (high << 16); +} + +uint32_t HELPER(neon_narrow_sat_u32)(CPUState *env, uint64_t x) +{ + if (x > 0xffffffffu) { + SET_QC(); + return 0xffffffffu; + } + return x; +} + +uint32_t HELPER(neon_narrow_sat_s32)(CPUState *env, uint64_t x) +{ + if ((int64_t)x != (int32_t)x) { + SET_QC(); + return (x >> 63) ^ 0x7fffffff; + } + return x; +} + +uint64_t HELPER(neon_widen_u8)(uint32_t x) +{ + uint64_t tmp; + uint64_t ret; + ret = (uint8_t)x; + tmp = (uint8_t)(x >> 8); + ret |= tmp << 16; + tmp = (uint8_t)(x >> 16); + ret |= tmp << 32; + tmp = (uint8_t)(x >> 24); + ret |= tmp << 48; + return ret; +} + +uint64_t HELPER(neon_widen_s8)(uint32_t x) +{ + uint64_t tmp; + uint64_t ret; + ret = (uint16_t)(int8_t)x; + tmp = (uint16_t)(int8_t)(x >> 8); + ret |= tmp << 16; + tmp = (uint16_t)(int8_t)(x >> 16); + ret |= tmp << 32; + tmp = (uint16_t)(int8_t)(x >> 24); + ret |= tmp << 48; + return ret; +} + +uint64_t HELPER(neon_widen_u16)(uint32_t x) +{ + uint64_t high = (uint16_t)(x >> 16); + return ((uint16_t)x) | (high << 32); +} + +uint64_t HELPER(neon_widen_s16)(uint32_t x) +{ + uint64_t high = (int16_t)(x >> 16); + return ((uint32_t)(int16_t)x) | (high << 32); +} + +uint64_t HELPER(neon_addl_u16)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ b) & 0x8000800080008000ull; + a &= ~0x8000800080008000ull; + b &= ~0x8000800080008000ull; + return (a + b) ^ mask; +} + +uint64_t HELPER(neon_addl_u32)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ b) & 0x8000000080000000ull; + a &= ~0x8000000080000000ull; + b &= ~0x8000000080000000ull; + return (a + b) ^ mask; +} + +uint64_t HELPER(neon_paddl_u16)(uint64_t a, uint64_t b) +{ + uint64_t tmp; + uint64_t tmp2; + + tmp = a & 0x0000ffff0000ffffull; + tmp += (a >> 16) & 0x0000ffff0000ffffull; + tmp2 = b & 0xffff0000ffff0000ull; + tmp2 += (b << 16) & 0xffff0000ffff0000ull; + return ( tmp & 0xffff) + | ((tmp >> 16) & 0xffff0000ull) + | ((tmp2 << 16) & 0xffff00000000ull) + | ( tmp2 & 0xffff000000000000ull); +} + +uint64_t HELPER(neon_paddl_u32)(uint64_t a, uint64_t b) +{ + uint32_t low = a + (a >> 32); + uint32_t high = b + (b >> 32); + return low + ((uint64_t)high << 32); +} + +uint64_t HELPER(neon_subl_u16)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ ~b) & 0x8000800080008000ull; + a |= 0x8000800080008000ull; + b &= ~0x8000800080008000ull; + return (a - b) ^ mask; +} + +uint64_t HELPER(neon_subl_u32)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ ~b) & 0x8000000080000000ull; + a |= 0x8000000080000000ull; + b &= ~0x8000000080000000ull; + return (a - b) ^ mask; +} + +uint64_t HELPER(neon_addl_saturate_s32)(CPUState *env, uint64_t a, uint64_t b) +{ + uint32_t x, y; + uint32_t low, high; + + x = a; + y = b; + low = x + y; + if (((low ^ x) & SIGNBIT) && !((x ^ y) & SIGNBIT)) { + SET_QC(); + low = ((int32_t)x >> 31) ^ ~SIGNBIT; + } + x = a >> 32; + y = b >> 32; + high = x + y; + if (((high ^ x) & SIGNBIT) && !((x ^ y) & SIGNBIT)) { + SET_QC(); + high = ((int32_t)x >> 31) ^ ~SIGNBIT; + } + return low | ((uint64_t)high << 32); +} + +uint64_t HELPER(neon_addl_saturate_s64)(CPUState *env, uint64_t a, uint64_t b) +{ + uint64_t result; + + result = a + b; + if (((result ^ a) & SIGNBIT64) && !((a ^ b) & SIGNBIT64)) { + SET_QC(); + result = ((int64_t)a >> 63) ^ ~SIGNBIT64; + } + return result; +} + +#define DO_ABD(dest, x, y, type) do { \ + type tmp_x = x; \ + type tmp_y = y; \ + dest = ((tmp_x > tmp_y) ? tmp_x - tmp_y : tmp_y - tmp_x); \ + } while(0) + +uint64_t HELPER(neon_abdl_u16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, uint8_t); + DO_ABD(tmp, a >> 8, b >> 8, uint8_t); + result |= tmp << 16; + DO_ABD(tmp, a >> 16, b >> 16, uint8_t); + result |= tmp << 32; + DO_ABD(tmp, a >> 24, b >> 24, uint8_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_abdl_s16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, int8_t); + DO_ABD(tmp, a >> 8, b >> 8, int8_t); + result |= tmp << 16; + DO_ABD(tmp, a >> 16, b >> 16, int8_t); + result |= tmp << 32; + DO_ABD(tmp, a >> 24, b >> 24, int8_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_abdl_u32)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, uint16_t); + DO_ABD(tmp, a >> 16, b >> 16, uint16_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_abdl_s32)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, int16_t); + DO_ABD(tmp, a >> 16, b >> 16, int16_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_abdl_u64)(uint32_t a, uint32_t b) +{ + uint64_t result; + DO_ABD(result, a, b, uint32_t); + return result; +} + +uint64_t HELPER(neon_abdl_s64)(uint32_t a, uint32_t b) +{ + uint64_t result; + DO_ABD(result, a, b, int32_t); + return result; +} +#undef DO_ABD + +/* Widening multiply. Named type is the source type. */ +#define DO_MULL(dest, x, y, type1, type2) do { \ + type1 tmp_x = x; \ + type1 tmp_y = y; \ + dest = (type2)((type2)tmp_x * (type2)tmp_y); \ + } while(0) + +uint64_t HELPER(neon_mull_u8)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, uint8_t, uint16_t); + DO_MULL(tmp, a >> 8, b >> 8, uint8_t, uint16_t); + result |= tmp << 16; + DO_MULL(tmp, a >> 16, b >> 16, uint8_t, uint16_t); + result |= tmp << 32; + DO_MULL(tmp, a >> 24, b >> 24, uint8_t, uint16_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_mull_s8)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, int8_t, uint16_t); + DO_MULL(tmp, a >> 8, b >> 8, int8_t, uint16_t); + result |= tmp << 16; + DO_MULL(tmp, a >> 16, b >> 16, int8_t, uint16_t); + result |= tmp << 32; + DO_MULL(tmp, a >> 24, b >> 24, int8_t, uint16_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_mull_u16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, uint16_t, uint32_t); + DO_MULL(tmp, a >> 16, b >> 16, uint16_t, uint32_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_mull_s16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, int16_t, uint32_t); + DO_MULL(tmp, a >> 16, b >> 16, int16_t, uint32_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_negl_u16)(uint64_t x) +{ + uint16_t tmp; + uint64_t result; + result = (uint16_t)-x; + tmp = -(x >> 16); + result |= (uint64_t)tmp << 16; + tmp = -(x >> 32); + result |= (uint64_t)tmp << 32; + tmp = -(x >> 48); + result |= (uint64_t)tmp << 48; + return result; +} + +#include +uint64_t HELPER(neon_negl_u32)(uint64_t x) +{ + uint32_t low = -x; + uint32_t high = -(x >> 32); + return low | ((uint64_t)high << 32); +} + +/* FIXME: There should be a native op for this. */ +uint64_t HELPER(neon_negl_u64)(uint64_t x) +{ + return -x; +} + +/* Saturnating sign manuipulation. */ +/* ??? Make these use NEON_VOP1 */ +#define DO_QABS8(x) do { \ + if (x == (int8_t)0x80) { \ + x = 0x7f; \ + SET_QC(); \ + } else if (x < 0) { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qabs_s8)(CPUState *env, uint32_t x) +{ + neon_s8 vec; + NEON_UNPACK(neon_s8, vec, x); + DO_QABS8(vec.v1); + DO_QABS8(vec.v2); + DO_QABS8(vec.v3); + DO_QABS8(vec.v4); + NEON_PACK(neon_s8, x, vec); + return x; +} +#undef DO_QABS8 + +#define DO_QNEG8(x) do { \ + if (x == (int8_t)0x80) { \ + x = 0x7f; \ + SET_QC(); \ + } else { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qneg_s8)(CPUState *env, uint32_t x) +{ + neon_s8 vec; + NEON_UNPACK(neon_s8, vec, x); + DO_QNEG8(vec.v1); + DO_QNEG8(vec.v2); + DO_QNEG8(vec.v3); + DO_QNEG8(vec.v4); + NEON_PACK(neon_s8, x, vec); + return x; +} +#undef DO_QNEG8 + +#define DO_QABS16(x) do { \ + if (x == (int16_t)0x8000) { \ + x = 0x7fff; \ + SET_QC(); \ + } else if (x < 0) { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qabs_s16)(CPUState *env, uint32_t x) +{ + neon_s16 vec; + NEON_UNPACK(neon_s16, vec, x); + DO_QABS16(vec.v1); + DO_QABS16(vec.v2); + NEON_PACK(neon_s16, x, vec); + return x; +} +#undef DO_QABS16 + +#define DO_QNEG16(x) do { \ + if (x == (int16_t)0x8000) { \ + x = 0x7fff; \ + SET_QC(); \ + } else { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qneg_s16)(CPUState *env, uint32_t x) +{ + neon_s16 vec; + NEON_UNPACK(neon_s16, vec, x); + DO_QNEG16(vec.v1); + DO_QNEG16(vec.v2); + NEON_PACK(neon_s16, x, vec); + return x; +} +#undef DO_QNEG16 + +uint32_t HELPER(neon_qabs_s32)(CPUState *env, uint32_t x) +{ + if (x == SIGNBIT) { + SET_QC(); + x = ~SIGNBIT; + } else if ((int32_t)x < 0) { + x = -x; + } + return x; +} + +uint32_t HELPER(neon_qneg_s32)(CPUState *env, uint32_t x) +{ + if (x == SIGNBIT) { + SET_QC(); + x = ~SIGNBIT; + } else { + x = -x; + } + return x; +} + +/* NEON Float helpers. */ +uint32_t HELPER(neon_min_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = vfp_itos(a); + float32 f1 = vfp_itos(b); + return (float32_compare_quiet(f0, f1, NFS) == -1) ? a : b; +} + +uint32_t HELPER(neon_max_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = vfp_itos(a); + float32 f1 = vfp_itos(b); + return (float32_compare_quiet(f0, f1, NFS) == 1) ? a : b; +} + +uint32_t HELPER(neon_abd_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = vfp_itos(a); + float32 f1 = vfp_itos(b); + return vfp_stoi((float32_compare_quiet(f0, f1, NFS) == 1) + ? float32_sub(f0, f1, NFS) + : float32_sub(f1, f0, NFS)); +} + +uint32_t HELPER(neon_add_f32)(uint32_t a, uint32_t b) +{ + return vfp_stoi(float32_add(vfp_itos(a), vfp_itos(b), NFS)); +} + +uint32_t HELPER(neon_sub_f32)(uint32_t a, uint32_t b) +{ + return vfp_stoi(float32_sub(vfp_itos(a), vfp_itos(b), NFS)); +} + +uint32_t HELPER(neon_mul_f32)(uint32_t a, uint32_t b) +{ + return vfp_stoi(float32_mul(vfp_itos(a), vfp_itos(b), NFS)); +} + +/* Floating point comparisons produce an integer result. */ +#define NEON_VOP_FCMP(name, cmp) \ +uint32_t HELPER(neon_##name)(uint32_t a, uint32_t b) \ +{ \ + if (float32_compare_quiet(vfp_itos(a), vfp_itos(b), NFS) cmp 0) \ + return ~0; \ + else \ + return 0; \ +} + +NEON_VOP_FCMP(ceq_f32, ==) +NEON_VOP_FCMP(cge_f32, >=) +NEON_VOP_FCMP(cgt_f32, >) + +uint32_t HELPER(neon_acge_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = float32_abs(vfp_itos(a)); + float32 f1 = float32_abs(vfp_itos(b)); + return (float32_compare_quiet(f0, f1,NFS) >= 0) ? ~0 : 0; +} + +uint32_t HELPER(neon_acgt_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = float32_abs(vfp_itos(a)); + float32 f1 = float32_abs(vfp_itos(b)); + return (float32_compare_quiet(f0, f1, NFS) > 0) ? ~0 : 0; +} diff --git a/qemu/qemu-git/target-arm/.svn/text-base/op_addsub.h.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/op_addsub.h.svn-base new file mode 100644 index 0000000..29f77ba --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/op_addsub.h.svn-base @@ -0,0 +1,103 @@ +/* + * ARMv6 integer SIMD operations. + * + * Copyright (c) 2007 CodeSourcery. + * Written by Paul Brook + * + * This code is licenced under the GPL. + */ + +#ifdef ARITH_GE +#define GE_ARG , void *gep +#define DECLARE_GE uint32_t ge = 0 +#define SET_GE *(uint32_t *)gep = ge +#else +#define GE_ARG +#define DECLARE_GE do{}while(0) +#define SET_GE do{}while(0) +#endif + +#define RESULT(val, n, width) \ + res |= ((uint32_t)(glue(glue(uint,width),_t))(val)) << (n * width) + +uint32_t HELPER(glue(PFX,add16))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + ADD16(a, b, 0); + ADD16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,add8))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + ADD8(a, b, 0); + ADD8(a >> 8, b >> 8, 1); + ADD8(a >> 16, b >> 16, 2); + ADD8(a >> 24, b >> 24, 3); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,sub16))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + SUB16(a, b, 0); + SUB16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,sub8))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + SUB8(a, b, 0); + SUB8(a >> 8, b >> 8, 1); + SUB8(a >> 16, b >> 16, 2); + SUB8(a >> 24, b >> 24, 3); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,subaddx))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + ADD16(a, b, 0); + SUB16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,addsubx))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + SUB16(a, b, 0); + ADD16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +#undef GE_ARG +#undef DECLARE_GE +#undef SET_GE +#undef RESULT + +#undef ARITH_GE +#undef PFX +#undef ADD16 +#undef SUB16 +#undef ADD8 +#undef SUB8 diff --git a/qemu/qemu-git/target-arm/.svn/text-base/op_helper.c.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/op_helper.c.svn-base new file mode 100644 index 0000000..9b1a014 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/op_helper.c.svn-base @@ -0,0 +1,489 @@ +/* + * ARM helper routines + * + * Copyright (c) 2005-2007 CodeSourcery, LLC + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include "exec.h" +#include "helpers.h" + +#define SIGNBIT (uint32_t)0x80000000 +#define SIGNBIT64 ((uint64_t)1 << 63) + +void raise_exception(int tt) +{ + env->exception_index = tt; + cpu_loop_exit(); +} + +/* thread support */ + +static spinlock_t global_cpu_lock = SPIN_LOCK_UNLOCKED; + +void cpu_lock(void) +{ + spin_lock(&global_cpu_lock); +} + +void cpu_unlock(void) +{ + spin_unlock(&global_cpu_lock); +} + +uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def, + uint32_t rn, uint32_t maxindex) +{ + uint32_t val; + uint32_t tmp; + int index; + int shift; + uint64_t *table; + table = (uint64_t *)&env->vfp.regs[rn]; + val = 0; + for (shift = 0; shift < 32; shift += 8) { + index = (ireg >> shift) & 0xff; + if (index < maxindex) { + tmp = (table[index >> 3] >> ((index & 7) << 3)) & 0xff; + val |= tmp << shift; + } else { + val |= def & (0xff << shift); + } + } + return val; +} + +#if !defined(CONFIG_USER_ONLY) + +#define MMUSUFFIX _mmu + +#define SHIFT 0 +#include "softmmu_template.h" + +#define SHIFT 1 +#include "softmmu_template.h" + +#define SHIFT 2 +#include "softmmu_template.h" + +#define SHIFT 3 +#include "softmmu_template.h" + +/* try to fill the TLB and return an exception if error. If retaddr is + NULL, it means that the function was called in C code (i.e. not + from generated code or from helper.c) */ +/* XXX: fix it to restore all registers */ +void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr) +{ + TranslationBlock *tb; + CPUState *saved_env; + unsigned long pc; + int ret; + + /* XXX: hack to restore env in all cases, even if not called from + generated code */ + saved_env = env; + env = cpu_single_env; + ret = cpu_arm_handle_mmu_fault(env, addr, is_write, mmu_idx, 1); + if (unlikely(ret)) { + if (retaddr) { + /* now we have a real cpu fault */ + pc = (unsigned long)retaddr; + tb = tb_find_pc(pc); + if (tb) { + /* the PC is inside the translated code. It means that we have + a virtual CPU fault */ + cpu_restore_state(tb, env, pc, NULL); + } + } + raise_exception(env->exception_index); + } + env = saved_env; +} +#endif + +/* FIXME: Pass an axplicit pointer to QF to CPUState, and move saturating + instructions into helper.c */ +uint32_t HELPER(add_setq)(uint32_t a, uint32_t b) +{ + uint32_t res = a + b; + if (((res ^ a) & SIGNBIT) && !((a ^ b) & SIGNBIT)) + env->QF = 1; + return res; +} + +uint32_t HELPER(add_saturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a + b; + if (((res ^ a) & SIGNBIT) && !((a ^ b) & SIGNBIT)) { + env->QF = 1; + res = ~(((int32_t)a >> 31) ^ SIGNBIT); + } + return res; +} + +uint32_t HELPER(sub_saturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a - b; + if (((res ^ a) & SIGNBIT) && ((a ^ b) & SIGNBIT)) { + env->QF = 1; + res = ~(((int32_t)a >> 31) ^ SIGNBIT); + } + return res; +} + +uint32_t HELPER(double_saturate)(int32_t val) +{ + uint32_t res; + if (val >= 0x40000000) { + res = ~SIGNBIT; + env->QF = 1; + } else if (val <= (int32_t)0xc0000000) { + res = SIGNBIT; + env->QF = 1; + } else { + res = val << 1; + } + return res; +} + +uint32_t HELPER(add_usaturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a + b; + if (res < a) { + env->QF = 1; + res = ~0; + } + return res; +} + +uint32_t HELPER(sub_usaturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a - b; + if (res > a) { + env->QF = 1; + res = 0; + } + return res; +} + +/* Signed saturation. */ +static inline uint32_t do_ssat(int32_t val, int shift) +{ + int32_t top; + uint32_t mask; + + top = val >> shift; + mask = (1u << shift) - 1; + if (top > 0) { + env->QF = 1; + return mask; + } else if (top < -1) { + env->QF = 1; + return ~mask; + } + return val; +} + +/* Unsigned saturation. */ +static inline uint32_t do_usat(int32_t val, int shift) +{ + uint32_t max; + + max = (1u << shift) - 1; + if (val < 0) { + env->QF = 1; + return 0; + } else if (val > max) { + env->QF = 1; + return max; + } + return val; +} + +/* Signed saturate. */ +uint32_t HELPER(ssat)(uint32_t x, uint32_t shift) +{ + return do_ssat(x, shift); +} + +/* Dual halfword signed saturate. */ +uint32_t HELPER(ssat16)(uint32_t x, uint32_t shift) +{ + uint32_t res; + + res = (uint16_t)do_ssat((int16_t)x, shift); + res |= do_ssat(((int32_t)x) >> 16, shift) << 16; + return res; +} + +/* Unsigned saturate. */ +uint32_t HELPER(usat)(uint32_t x, uint32_t shift) +{ + return do_usat(x, shift); +} + +/* Dual halfword unsigned saturate. */ +uint32_t HELPER(usat16)(uint32_t x, uint32_t shift) +{ + uint32_t res; + + res = (uint16_t)do_usat((int16_t)x, shift); + res |= do_usat(((int32_t)x) >> 16, shift) << 16; + return res; +} + +void HELPER(wfi)(void) +{ + env->exception_index = EXCP_HLT; + env->halted = 1; + cpu_loop_exit(); +} + +void HELPER(exception)(uint32_t excp) +{ + env->exception_index = excp; + cpu_loop_exit(); +} + +uint32_t HELPER(cpsr_read)(void) +{ + return cpsr_read(env) & ~CPSR_EXEC; +} + +void HELPER(cpsr_write)(uint32_t val, uint32_t mask) +{ + cpsr_write(env, val, mask); +} + +/* Access to user mode registers from privileged modes. */ +uint32_t HELPER(get_user_reg)(uint32_t regno) +{ + uint32_t val; + + if (regno == 13) { + val = env->banked_r13[0]; + } else if (regno == 14) { + val = env->banked_r14[0]; + } else if (regno >= 8 + && (env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_FIQ) { + val = env->usr_regs[regno - 8]; + } else { + val = env->regs[regno]; + } + return val; +} + +void HELPER(set_user_reg)(uint32_t regno, uint32_t val) +{ + if (regno == 13) { + env->banked_r13[0] = val; + } else if (regno == 14) { + env->banked_r14[0] = val; + } else if (regno >= 8 + && (env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_FIQ) { + env->usr_regs[regno - 8] = val; + } else { + env->regs[regno] = val; + } +} + +/* ??? Flag setting arithmetic is awkward because we need to do comparisons. + The only way to do that in TCG is a conditional branch, which clobbers + all our temporaries. For now implement these as helper functions. */ + +uint32_t HELPER (add_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + result = a + b; + env->NF = env->ZF = result; + env->CF = result < a; + env->VF = (a ^ b ^ -1) & (a ^ result); + return result; +} + +uint32_t HELPER(adc_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + if (!env->CF) { + result = a + b; + env->CF = result < a; + } else { + result = a + b + 1; + env->CF = result <= a; + } + env->VF = (a ^ b ^ -1) & (a ^ result); + env->NF = env->ZF = result; + return result; +} + +uint32_t HELPER(sub_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + result = a - b; + env->NF = env->ZF = result; + env->CF = a >= b; + env->VF = (a ^ b) & (a ^ result); + return result; +} + +uint32_t HELPER(sbc_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + if (!env->CF) { + result = a - b - 1; + env->CF = a > b; + } else { + result = a - b; + env->CF = a >= b; + } + env->VF = (a ^ b) & (a ^ result); + env->NF = env->ZF = result; + return result; +} + +/* Similarly for variable shift instructions. */ + +uint32_t HELPER(shl)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) + return 0; + return x << shift; +} + +uint32_t HELPER(shr)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) + return 0; + return (uint32_t)x >> shift; +} + +uint32_t HELPER(sar)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) + shift = 31; + return (int32_t)x >> shift; +} + +uint32_t HELPER(shl_cc)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) { + if (shift == 32) + env->CF = x & 1; + else + env->CF = 0; + return 0; + } else if (shift != 0) { + env->CF = (x >> (32 - shift)) & 1; + return x << shift; + } + return x; +} + +uint32_t HELPER(shr_cc)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) { + if (shift == 32) + env->CF = (x >> 31) & 1; + else + env->CF = 0; + return 0; + } else if (shift != 0) { + env->CF = (x >> (shift - 1)) & 1; + return x >> shift; + } + return x; +} + +uint32_t HELPER(sar_cc)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) { + env->CF = (x >> 31) & 1; + return (int32_t)x >> 31; + } else if (shift != 0) { + env->CF = (x >> (shift - 1)) & 1; + return (int32_t)x >> shift; + } + return x; +} + +uint32_t HELPER(ror_cc)(uint32_t x, uint32_t i) +{ + int shift1, shift; + shift1 = i & 0xff; + shift = shift1 & 0x1f; + if (shift == 0) { + if (shift1 != 0) + env->CF = (x >> 31) & 1; + return x; + } else { + env->CF = (x >> (shift - 1)) & 1; + return ((uint32_t)x >> shift) | (x << (32 - shift)); + } +} + +uint64_t HELPER(neon_add_saturate_s64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + res = src1 + src2; + if (((res ^ src1) & SIGNBIT64) && !((src1 ^ src2) & SIGNBIT64)) { + env->QF = 1; + res = ((int64_t)src1 >> 63) ^ ~SIGNBIT64; + } + return res; +} + +uint64_t HELPER(neon_add_saturate_u64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + res = src1 + src2; + if (res < src1) { + env->QF = 1; + res = ~(uint64_t)0; + } + return res; +} + +uint64_t HELPER(neon_sub_saturate_s64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + res = src1 - src2; + if (((res ^ src1) & SIGNBIT64) && ((src1 ^ src2) & SIGNBIT64)) { + env->QF = 1; + res = ((int64_t)src1 >> 63) ^ ~SIGNBIT64; + } + return res; +} + +uint64_t HELPER(neon_sub_saturate_u64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + if (src1 < src2) { + env->QF = 1; + res = 0; + } else { + res = src1 - src2; + } + return res; +} diff --git a/qemu/qemu-git/target-arm/.svn/text-base/translate.c.svn-base b/qemu/qemu-git/target-arm/.svn/text-base/translate.c.svn-base new file mode 100644 index 0000000..5cf3e06 --- /dev/null +++ b/qemu/qemu-git/target-arm/.svn/text-base/translate.c.svn-base @@ -0,0 +1,9254 @@ +/* + * ARM translation + * + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2005-2007 CodeSourcery + * Copyright (c) 2007 OpenedHand, Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include +#include +#include +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "disas.h" +#include "tcg-op.h" +#include "qemu-log.h" + +#include "helpers.h" +#define GEN_HELPER 1 +#include "helpers.h" + +#define ENABLE_ARCH_5J 0 +#define ENABLE_ARCH_6 arm_feature(env, ARM_FEATURE_V6) +#define ENABLE_ARCH_6K arm_feature(env, ARM_FEATURE_V6K) +#define ENABLE_ARCH_6T2 arm_feature(env, ARM_FEATURE_THUMB2) +#define ENABLE_ARCH_7 arm_feature(env, ARM_FEATURE_V7) + +#define ARCH(x) do { if (!ENABLE_ARCH_##x) goto illegal_op; } while(0) + +/* internal defines */ +typedef struct DisasContext { + target_ulong pc; + int is_jmp; + /* Nonzero if this instruction has been conditionally skipped. */ + int condjmp; + /* The label that will be jumped to when the instruction is skipped. */ + int condlabel; + /* Thumb-2 condtional execution bits. */ + int condexec_mask; + int condexec_cond; + struct TranslationBlock *tb; + int singlestep_enabled; + int thumb; +#if !defined(CONFIG_USER_ONLY) + int user; +#endif +} DisasContext; + +#if defined(CONFIG_USER_ONLY) +#define IS_USER(s) 1 +#else +#define IS_USER(s) (s->user) +#endif + +/* These instructions trap after executing, so defer them until after the + conditional executions state has been updated. */ +#define DISAS_WFI 4 +#define DISAS_SWI 5 + +static TCGv_ptr cpu_env; +/* We reuse the same 64-bit temporaries for efficiency. */ +static TCGv_i64 cpu_V0, cpu_V1, cpu_M0; +static TCGv_i32 cpu_R[16]; +static TCGv_i32 cpu_exclusive_addr; +static TCGv_i32 cpu_exclusive_val; +static TCGv_i32 cpu_exclusive_high; +#ifdef CONFIG_USER_ONLY +static TCGv_i32 cpu_exclusive_test; +static TCGv_i32 cpu_exclusive_info; +#endif + +/* FIXME: These should be removed. */ +static TCGv cpu_F0s, cpu_F1s; +static TCGv_i64 cpu_F0d, cpu_F1d; + +#include "gen-icount.h" + +static const char *regnames[] = + { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "pc" }; + +/* initialize TCG globals. */ +void arm_translate_init(void) +{ + int i; + + cpu_env = tcg_global_reg_new_ptr(TCG_AREG0, "env"); + + for (i = 0; i < 16; i++) { + cpu_R[i] = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, regs[i]), + regnames[i]); + } + cpu_exclusive_addr = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_addr), "exclusive_addr"); + cpu_exclusive_val = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_val), "exclusive_val"); + cpu_exclusive_high = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_high), "exclusive_high"); +#ifdef CONFIG_USER_ONLY + cpu_exclusive_test = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_test), "exclusive_test"); + cpu_exclusive_info = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_info), "exclusive_info"); +#endif + +#define GEN_HELPER 2 +#include "helpers.h" +} + +static int num_temps; + +/* Allocate a temporary variable. */ +static TCGv_i32 new_tmp(void) +{ + num_temps++; + return tcg_temp_new_i32(); +} + +/* Release a temporary variable. */ +static void dead_tmp(TCGv tmp) +{ + tcg_temp_free(tmp); + num_temps--; +} + +static inline TCGv load_cpu_offset(int offset) +{ + TCGv tmp = new_tmp(); + tcg_gen_ld_i32(tmp, cpu_env, offset); + return tmp; +} + +#define load_cpu_field(name) load_cpu_offset(offsetof(CPUState, name)) + +static inline void store_cpu_offset(TCGv var, int offset) +{ + tcg_gen_st_i32(var, cpu_env, offset); + dead_tmp(var); +} + +#define store_cpu_field(var, name) \ + store_cpu_offset(var, offsetof(CPUState, name)) + +/* Set a variable to the value of a CPU register. */ +static void load_reg_var(DisasContext *s, TCGv var, int reg) +{ + if (reg == 15) { + uint32_t addr; + /* normaly, since we updated PC, we need only to add one insn */ + if (s->thumb) + addr = (long)s->pc + 2; + else + addr = (long)s->pc + 4; + tcg_gen_movi_i32(var, addr); + } else { + tcg_gen_mov_i32(var, cpu_R[reg]); + } +} + +/* Create a new temporary and set it to the value of a CPU register. */ +static inline TCGv load_reg(DisasContext *s, int reg) +{ + TCGv tmp = new_tmp(); + load_reg_var(s, tmp, reg); + return tmp; +} + +/* Set a CPU register. The source must be a temporary and will be + marked as dead. */ +static void store_reg(DisasContext *s, int reg, TCGv var) +{ + if (reg == 15) { + tcg_gen_andi_i32(var, var, ~1); + s->is_jmp = DISAS_JUMP; + } + tcg_gen_mov_i32(cpu_R[reg], var); + dead_tmp(var); +} + +/* Value extensions. */ +#define gen_uxtb(var) tcg_gen_ext8u_i32(var, var) +#define gen_uxth(var) tcg_gen_ext16u_i32(var, var) +#define gen_sxtb(var) tcg_gen_ext8s_i32(var, var) +#define gen_sxth(var) tcg_gen_ext16s_i32(var, var) + +#define gen_sxtb16(var) gen_helper_sxtb16(var, var) +#define gen_uxtb16(var) gen_helper_uxtb16(var, var) + + +static inline void gen_set_cpsr(TCGv var, uint32_t mask) +{ + TCGv tmp_mask = tcg_const_i32(mask); + gen_helper_cpsr_write(var, tmp_mask); + tcg_temp_free_i32(tmp_mask); +} +/* Set NZCV flags from the high 4 bits of var. */ +#define gen_set_nzcv(var) gen_set_cpsr(var, CPSR_NZCV) + +static void gen_exception(int excp) +{ + TCGv tmp = new_tmp(); + tcg_gen_movi_i32(tmp, excp); + gen_helper_exception(tmp); + dead_tmp(tmp); +} + +static void gen_smul_dual(TCGv a, TCGv b) +{ + TCGv tmp1 = new_tmp(); + TCGv tmp2 = new_tmp(); + tcg_gen_ext16s_i32(tmp1, a); + tcg_gen_ext16s_i32(tmp2, b); + tcg_gen_mul_i32(tmp1, tmp1, tmp2); + dead_tmp(tmp2); + tcg_gen_sari_i32(a, a, 16); + tcg_gen_sari_i32(b, b, 16); + tcg_gen_mul_i32(b, b, a); + tcg_gen_mov_i32(a, tmp1); + dead_tmp(tmp1); +} + +/* Byteswap each halfword. */ +static void gen_rev16(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 8); + tcg_gen_andi_i32(tmp, tmp, 0x00ff00ff); + tcg_gen_shli_i32(var, var, 8); + tcg_gen_andi_i32(var, var, 0xff00ff00); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Byteswap low halfword and sign extend. */ +static void gen_revsh(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 8); + tcg_gen_andi_i32(tmp, tmp, 0x00ff); + tcg_gen_shli_i32(var, var, 8); + tcg_gen_ext8s_i32(var, var); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Unsigned bitfield extract. */ +static void gen_ubfx(TCGv var, int shift, uint32_t mask) +{ + if (shift) + tcg_gen_shri_i32(var, var, shift); + tcg_gen_andi_i32(var, var, mask); +} + +/* Signed bitfield extract. */ +static void gen_sbfx(TCGv var, int shift, int width) +{ + uint32_t signbit; + + if (shift) + tcg_gen_sari_i32(var, var, shift); + if (shift + width < 32) { + signbit = 1u << (width - 1); + tcg_gen_andi_i32(var, var, (1u << width) - 1); + tcg_gen_xori_i32(var, var, signbit); + tcg_gen_subi_i32(var, var, signbit); + } +} + +/* Bitfield insertion. Insert val into base. Clobbers base and val. */ +static void gen_bfi(TCGv dest, TCGv base, TCGv val, int shift, uint32_t mask) +{ + tcg_gen_andi_i32(val, val, mask); + tcg_gen_shli_i32(val, val, shift); + tcg_gen_andi_i32(base, base, ~(mask << shift)); + tcg_gen_or_i32(dest, base, val); +} + +/* Round the top 32 bits of a 64-bit value. */ +static void gen_roundqd(TCGv a, TCGv b) +{ + tcg_gen_shri_i32(a, a, 31); + tcg_gen_add_i32(a, a, b); +} + +/* FIXME: Most targets have native widening multiplication. + It would be good to use that instead of a full wide multiply. */ +/* 32x32->64 multiply. Marks inputs as dead. */ +static TCGv_i64 gen_mulu_i64_i32(TCGv a, TCGv b) +{ + TCGv_i64 tmp1 = tcg_temp_new_i64(); + TCGv_i64 tmp2 = tcg_temp_new_i64(); + + tcg_gen_extu_i32_i64(tmp1, a); + dead_tmp(a); + tcg_gen_extu_i32_i64(tmp2, b); + dead_tmp(b); + tcg_gen_mul_i64(tmp1, tmp1, tmp2); + tcg_temp_free_i64(tmp2); + return tmp1; +} + +static TCGv_i64 gen_muls_i64_i32(TCGv a, TCGv b) +{ + TCGv_i64 tmp1 = tcg_temp_new_i64(); + TCGv_i64 tmp2 = tcg_temp_new_i64(); + + tcg_gen_ext_i32_i64(tmp1, a); + dead_tmp(a); + tcg_gen_ext_i32_i64(tmp2, b); + dead_tmp(b); + tcg_gen_mul_i64(tmp1, tmp1, tmp2); + tcg_temp_free_i64(tmp2); + return tmp1; +} + +/* Signed 32x32->64 multiply. */ +static void gen_imull(TCGv a, TCGv b) +{ + TCGv_i64 tmp1 = tcg_temp_new_i64(); + TCGv_i64 tmp2 = tcg_temp_new_i64(); + + tcg_gen_ext_i32_i64(tmp1, a); + tcg_gen_ext_i32_i64(tmp2, b); + tcg_gen_mul_i64(tmp1, tmp1, tmp2); + tcg_temp_free_i64(tmp2); + tcg_gen_trunc_i64_i32(a, tmp1); + tcg_gen_shri_i64(tmp1, tmp1, 32); + tcg_gen_trunc_i64_i32(b, tmp1); + tcg_temp_free_i64(tmp1); +} + +/* Swap low and high halfwords. */ +static void gen_swap_half(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 16); + tcg_gen_shli_i32(var, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Dual 16-bit add. Result placed in t0 and t1 is marked as dead. + tmp = (t0 ^ t1) & 0x8000; + t0 &= ~0x8000; + t1 &= ~0x8000; + t0 = (t0 + t1) ^ tmp; + */ + +static void gen_add16(TCGv t0, TCGv t1) +{ + TCGv tmp = new_tmp(); + tcg_gen_xor_i32(tmp, t0, t1); + tcg_gen_andi_i32(tmp, tmp, 0x8000); + tcg_gen_andi_i32(t0, t0, ~0x8000); + tcg_gen_andi_i32(t1, t1, ~0x8000); + tcg_gen_add_i32(t0, t0, t1); + tcg_gen_xor_i32(t0, t0, tmp); + dead_tmp(tmp); + dead_tmp(t1); +} + +#define gen_set_CF(var) tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, CF)) + +/* Set CF to the top bit of var. */ +static void gen_set_CF_bit31(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 31); + gen_set_CF(tmp); + dead_tmp(tmp); +} + +/* Set N and Z flags from var. */ +static inline void gen_logic_CC(TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, NF)); + tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, ZF)); +} + +/* T0 += T1 + CF. */ +static void gen_adc(TCGv t0, TCGv t1) +{ + TCGv tmp; + tcg_gen_add_i32(t0, t0, t1); + tmp = load_cpu_field(CF); + tcg_gen_add_i32(t0, t0, tmp); + dead_tmp(tmp); +} + +/* dest = T0 + T1 + CF. */ +static void gen_add_carry(TCGv dest, TCGv t0, TCGv t1) +{ + TCGv tmp; + tcg_gen_add_i32(dest, t0, t1); + tmp = load_cpu_field(CF); + tcg_gen_add_i32(dest, dest, tmp); + dead_tmp(tmp); +} + +/* dest = T0 - T1 + CF - 1. */ +static void gen_sub_carry(TCGv dest, TCGv t0, TCGv t1) +{ + TCGv tmp; + tcg_gen_sub_i32(dest, t0, t1); + tmp = load_cpu_field(CF); + tcg_gen_add_i32(dest, dest, tmp); + tcg_gen_subi_i32(dest, dest, 1); + dead_tmp(tmp); +} + +/* FIXME: Implement this natively. */ +#define tcg_gen_abs_i32(t0, t1) gen_helper_abs(t0, t1) + +static void shifter_out_im(TCGv var, int shift) +{ + TCGv tmp = new_tmp(); + if (shift == 0) { + tcg_gen_andi_i32(tmp, var, 1); + } else { + tcg_gen_shri_i32(tmp, var, shift); + if (shift != 31) + tcg_gen_andi_i32(tmp, tmp, 1); + } + gen_set_CF(tmp); + dead_tmp(tmp); +} + +/* Shift by immediate. Includes special handling for shift == 0. */ +static inline void gen_arm_shift_im(TCGv var, int shiftop, int shift, int flags) +{ + switch (shiftop) { + case 0: /* LSL */ + if (shift != 0) { + if (flags) + shifter_out_im(var, 32 - shift); + tcg_gen_shli_i32(var, var, shift); + } + break; + case 1: /* LSR */ + if (shift == 0) { + if (flags) { + tcg_gen_shri_i32(var, var, 31); + gen_set_CF(var); + } + tcg_gen_movi_i32(var, 0); + } else { + if (flags) + shifter_out_im(var, shift - 1); + tcg_gen_shri_i32(var, var, shift); + } + break; + case 2: /* ASR */ + if (shift == 0) + shift = 32; + if (flags) + shifter_out_im(var, shift - 1); + if (shift == 32) + shift = 31; + tcg_gen_sari_i32(var, var, shift); + break; + case 3: /* ROR/RRX */ + if (shift != 0) { + if (flags) + shifter_out_im(var, shift - 1); + tcg_gen_rotri_i32(var, var, shift); break; + } else { + TCGv tmp = load_cpu_field(CF); + if (flags) + shifter_out_im(var, 0); + tcg_gen_shri_i32(var, var, 1); + tcg_gen_shli_i32(tmp, tmp, 31); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); + } + } +}; + +static inline void gen_arm_shift_reg(TCGv var, int shiftop, + TCGv shift, int flags) +{ + if (flags) { + switch (shiftop) { + case 0: gen_helper_shl_cc(var, var, shift); break; + case 1: gen_helper_shr_cc(var, var, shift); break; + case 2: gen_helper_sar_cc(var, var, shift); break; + case 3: gen_helper_ror_cc(var, var, shift); break; + } + } else { + switch (shiftop) { + case 0: gen_helper_shl(var, var, shift); break; + case 1: gen_helper_shr(var, var, shift); break; + case 2: gen_helper_sar(var, var, shift); break; + case 3: tcg_gen_andi_i32(shift, shift, 0x1f); + tcg_gen_rotr_i32(var, var, shift); break; + } + } + dead_tmp(shift); +} + +#define PAS_OP(pfx) \ + switch (op2) { \ + case 0: gen_pas_helper(glue(pfx,add16)); break; \ + case 1: gen_pas_helper(glue(pfx,addsubx)); break; \ + case 2: gen_pas_helper(glue(pfx,subaddx)); break; \ + case 3: gen_pas_helper(glue(pfx,sub16)); break; \ + case 4: gen_pas_helper(glue(pfx,add8)); break; \ + case 7: gen_pas_helper(glue(pfx,sub8)); break; \ + } +static void gen_arm_parallel_addsub(int op1, int op2, TCGv a, TCGv b) +{ + TCGv_ptr tmp; + + switch (op1) { +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b, tmp) + case 1: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(s) + tcg_temp_free_ptr(tmp); + break; + case 5: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(u) + tcg_temp_free_ptr(tmp); + break; +#undef gen_pas_helper +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b) + case 2: + PAS_OP(q); + break; + case 3: + PAS_OP(sh); + break; + case 6: + PAS_OP(uq); + break; + case 7: + PAS_OP(uh); + break; +#undef gen_pas_helper + } +} +#undef PAS_OP + +/* For unknown reasons Arm and Thumb-2 use arbitrarily different encodings. */ +#define PAS_OP(pfx) \ + switch (op2) { \ + case 0: gen_pas_helper(glue(pfx,add8)); break; \ + case 1: gen_pas_helper(glue(pfx,add16)); break; \ + case 2: gen_pas_helper(glue(pfx,addsubx)); break; \ + case 4: gen_pas_helper(glue(pfx,sub8)); break; \ + case 5: gen_pas_helper(glue(pfx,sub16)); break; \ + case 6: gen_pas_helper(glue(pfx,subaddx)); break; \ + } +static void gen_thumb2_parallel_addsub(int op1, int op2, TCGv a, TCGv b) +{ + TCGv_ptr tmp; + + switch (op1) { +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b, tmp) + case 0: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(s) + tcg_temp_free_ptr(tmp); + break; + case 4: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(u) + tcg_temp_free_ptr(tmp); + break; +#undef gen_pas_helper +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b) + case 1: + PAS_OP(q); + break; + case 2: + PAS_OP(sh); + break; + case 5: + PAS_OP(uq); + break; + case 6: + PAS_OP(uh); + break; +#undef gen_pas_helper + } +} +#undef PAS_OP + +static void gen_test_cc(int cc, int label) +{ + TCGv tmp; + TCGv tmp2; + int inv; + + switch (cc) { + case 0: /* eq: Z */ + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + break; + case 1: /* ne: !Z */ + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, label); + break; + case 2: /* cs: C */ + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, label); + break; + case 3: /* cc: !C */ + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + break; + case 4: /* mi: N */ + tmp = load_cpu_field(NF); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + case 5: /* pl: !N */ + tmp = load_cpu_field(NF); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + break; + case 6: /* vs: V */ + tmp = load_cpu_field(VF); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + case 7: /* vc: !V */ + tmp = load_cpu_field(VF); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + break; + case 8: /* hi: C && !Z */ + inv = gen_new_label(); + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, inv); + dead_tmp(tmp); + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, label); + gen_set_label(inv); + break; + case 9: /* ls: !C || Z */ + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + dead_tmp(tmp); + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + break; + case 10: /* ge: N == V -> N ^ V == 0 */ + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + break; + case 11: /* lt: N != V -> N ^ V != 0 */ + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + case 12: /* gt: !Z && N == V */ + inv = gen_new_label(); + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, inv); + dead_tmp(tmp); + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + gen_set_label(inv); + break; + case 13: /* le: Z || N != V */ + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + dead_tmp(tmp); + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + default: + fprintf(stderr, "Bad condition code 0x%x\n", cc); + abort(); + } + dead_tmp(tmp); +} + +static const uint8_t table_logic_cc[16] = { + 1, /* and */ + 1, /* xor */ + 0, /* sub */ + 0, /* rsb */ + 0, /* add */ + 0, /* adc */ + 0, /* sbc */ + 0, /* rsc */ + 1, /* andl */ + 1, /* xorl */ + 0, /* cmp */ + 0, /* cmn */ + 1, /* orr */ + 1, /* mov */ + 1, /* bic */ + 1, /* mvn */ +}; + +/* Set PC and Thumb state from an immediate address. */ +static inline void gen_bx_im(DisasContext *s, uint32_t addr) +{ + TCGv tmp; + + s->is_jmp = DISAS_UPDATE; + if (s->thumb != (addr & 1)) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, addr & 1); + tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUState, thumb)); + dead_tmp(tmp); + } + tcg_gen_movi_i32(cpu_R[15], addr & ~1); +} + +/* Set PC and Thumb state from var. var is marked as dead. */ +static inline void gen_bx(DisasContext *s, TCGv var) +{ + s->is_jmp = DISAS_UPDATE; + tcg_gen_andi_i32(cpu_R[15], var, ~1); + tcg_gen_andi_i32(var, var, 1); + store_cpu_field(var, thumb); +} + +/* Variant of store_reg which uses branch&exchange logic when storing + to r15 in ARM architecture v7 and above. The source must be a temporary + and will be marked as dead. */ +static inline void store_reg_bx(CPUState *env, DisasContext *s, + int reg, TCGv var) +{ + if (reg == 15 && ENABLE_ARCH_7) { + gen_bx(s, var); + } else { + store_reg(s, reg, var); + } +} + +static inline TCGv gen_ld8s(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld8s(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld8u(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld8u(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld16s(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld16s(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld16u(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld16u(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld32(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld32u(tmp, addr, index); + return tmp; +} +static inline TCGv_i64 gen_ld64(TCGv addr, int index) +{ + TCGv_i64 tmp = tcg_temp_new_i64(); + tcg_gen_qemu_ld64(tmp, addr, index); + return tmp; +} +static inline void gen_st8(TCGv val, TCGv addr, int index) +{ + tcg_gen_qemu_st8(val, addr, index); + dead_tmp(val); +} +static inline void gen_st16(TCGv val, TCGv addr, int index) +{ + tcg_gen_qemu_st16(val, addr, index); + dead_tmp(val); +} +static inline void gen_st32(TCGv val, TCGv addr, int index) +{ + tcg_gen_qemu_st32(val, addr, index); + dead_tmp(val); +} +static inline void gen_st64(TCGv_i64 val, TCGv addr, int index) +{ + tcg_gen_qemu_st64(val, addr, index); + tcg_temp_free_i64(val); +} + +static inline void gen_set_pc_im(uint32_t val) +{ + tcg_gen_movi_i32(cpu_R[15], val); +} + +/* Force a TB lookup after an instruction that changes the CPU state. */ +static inline void gen_lookup_tb(DisasContext *s) +{ + tcg_gen_movi_i32(cpu_R[15], s->pc & ~1); + s->is_jmp = DISAS_UPDATE; +} + +static inline void gen_add_data_offset(DisasContext *s, unsigned int insn, + TCGv var) +{ + int val, rm, shift, shiftop; + TCGv offset; + + if (!(insn & (1 << 25))) { + /* immediate */ + val = insn & 0xfff; + if (!(insn & (1 << 23))) + val = -val; + if (val != 0) + tcg_gen_addi_i32(var, var, val); + } else { + /* shift/register */ + rm = (insn) & 0xf; + shift = (insn >> 7) & 0x1f; + shiftop = (insn >> 5) & 3; + offset = load_reg(s, rm); + gen_arm_shift_im(offset, shiftop, shift, 0); + if (!(insn & (1 << 23))) + tcg_gen_sub_i32(var, var, offset); + else + tcg_gen_add_i32(var, var, offset); + dead_tmp(offset); + } +} + +static inline void gen_add_datah_offset(DisasContext *s, unsigned int insn, + int extra, TCGv var) +{ + int val, rm; + TCGv offset; + + if (insn & (1 << 22)) { + /* immediate */ + val = (insn & 0xf) | ((insn >> 4) & 0xf0); + if (!(insn & (1 << 23))) + val = -val; + val += extra; + if (val != 0) + tcg_gen_addi_i32(var, var, val); + } else { + /* register */ + if (extra) + tcg_gen_addi_i32(var, var, extra); + rm = (insn) & 0xf; + offset = load_reg(s, rm); + if (!(insn & (1 << 23))) + tcg_gen_sub_i32(var, var, offset); + else + tcg_gen_add_i32(var, var, offset); + dead_tmp(offset); + } +} + +#define VFP_OP2(name) \ +static inline void gen_vfp_##name(int dp) \ +{ \ + if (dp) \ + gen_helper_vfp_##name##d(cpu_F0d, cpu_F0d, cpu_F1d, cpu_env); \ + else \ + gen_helper_vfp_##name##s(cpu_F0s, cpu_F0s, cpu_F1s, cpu_env); \ +} + +VFP_OP2(add) +VFP_OP2(sub) +VFP_OP2(mul) +VFP_OP2(div) + +#undef VFP_OP2 + +static inline void gen_vfp_abs(int dp) +{ + if (dp) + gen_helper_vfp_absd(cpu_F0d, cpu_F0d); + else + gen_helper_vfp_abss(cpu_F0s, cpu_F0s); +} + +static inline void gen_vfp_neg(int dp) +{ + if (dp) + gen_helper_vfp_negd(cpu_F0d, cpu_F0d); + else + gen_helper_vfp_negs(cpu_F0s, cpu_F0s); +} + +static inline void gen_vfp_sqrt(int dp) +{ + if (dp) + gen_helper_vfp_sqrtd(cpu_F0d, cpu_F0d, cpu_env); + else + gen_helper_vfp_sqrts(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_cmp(int dp) +{ + if (dp) + gen_helper_vfp_cmpd(cpu_F0d, cpu_F1d, cpu_env); + else + gen_helper_vfp_cmps(cpu_F0s, cpu_F1s, cpu_env); +} + +static inline void gen_vfp_cmpe(int dp) +{ + if (dp) + gen_helper_vfp_cmped(cpu_F0d, cpu_F1d, cpu_env); + else + gen_helper_vfp_cmpes(cpu_F0s, cpu_F1s, cpu_env); +} + +static inline void gen_vfp_F1_ld0(int dp) +{ + if (dp) + tcg_gen_movi_i64(cpu_F1d, 0); + else + tcg_gen_movi_i32(cpu_F1s, 0); +} + +static inline void gen_vfp_uito(int dp) +{ + if (dp) + gen_helper_vfp_uitod(cpu_F0d, cpu_F0s, cpu_env); + else + gen_helper_vfp_uitos(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_sito(int dp) +{ + if (dp) + gen_helper_vfp_sitod(cpu_F0d, cpu_F0s, cpu_env); + else + gen_helper_vfp_sitos(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_toui(int dp) +{ + if (dp) + gen_helper_vfp_touid(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_touis(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_touiz(int dp) +{ + if (dp) + gen_helper_vfp_touizd(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_touizs(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_tosi(int dp) +{ + if (dp) + gen_helper_vfp_tosid(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_tosis(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_tosiz(int dp) +{ + if (dp) + gen_helper_vfp_tosizd(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_tosizs(cpu_F0s, cpu_F0s, cpu_env); +} + +#define VFP_GEN_FIX(name) \ +static inline void gen_vfp_##name(int dp, int shift) \ +{ \ + TCGv tmp_shift = tcg_const_i32(shift); \ + if (dp) \ + gen_helper_vfp_##name##d(cpu_F0d, cpu_F0d, tmp_shift, cpu_env);\ + else \ + gen_helper_vfp_##name##s(cpu_F0s, cpu_F0s, tmp_shift, cpu_env);\ + tcg_temp_free_i32(tmp_shift); \ +} +VFP_GEN_FIX(tosh) +VFP_GEN_FIX(tosl) +VFP_GEN_FIX(touh) +VFP_GEN_FIX(toul) +VFP_GEN_FIX(shto) +VFP_GEN_FIX(slto) +VFP_GEN_FIX(uhto) +VFP_GEN_FIX(ulto) +#undef VFP_GEN_FIX + +static inline void gen_vfp_ld(DisasContext *s, int dp, TCGv addr) +{ + if (dp) + tcg_gen_qemu_ld64(cpu_F0d, addr, IS_USER(s)); + else + tcg_gen_qemu_ld32u(cpu_F0s, addr, IS_USER(s)); +} + +static inline void gen_vfp_st(DisasContext *s, int dp, TCGv addr) +{ + if (dp) + tcg_gen_qemu_st64(cpu_F0d, addr, IS_USER(s)); + else + tcg_gen_qemu_st32(cpu_F0s, addr, IS_USER(s)); +} + +static inline long +vfp_reg_offset (int dp, int reg) +{ + if (dp) + return offsetof(CPUARMState, vfp.regs[reg]); + else if (reg & 1) { + return offsetof(CPUARMState, vfp.regs[reg >> 1]) + + offsetof(CPU_DoubleU, l.upper); + } else { + return offsetof(CPUARMState, vfp.regs[reg >> 1]) + + offsetof(CPU_DoubleU, l.lower); + } +} + +/* Return the offset of a 32-bit piece of a NEON register. + zero is the least significant end of the register. */ +static inline long +neon_reg_offset (int reg, int n) +{ + int sreg; + sreg = reg * 2 + n; + return vfp_reg_offset(0, sreg); +} + +static TCGv neon_load_reg(int reg, int pass) +{ + TCGv tmp = new_tmp(); + tcg_gen_ld_i32(tmp, cpu_env, neon_reg_offset(reg, pass)); + return tmp; +} + +static void neon_store_reg(int reg, int pass, TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, neon_reg_offset(reg, pass)); + dead_tmp(var); +} + +static inline void neon_load_reg64(TCGv_i64 var, int reg) +{ + tcg_gen_ld_i64(var, cpu_env, vfp_reg_offset(1, reg)); +} + +static inline void neon_store_reg64(TCGv_i64 var, int reg) +{ + tcg_gen_st_i64(var, cpu_env, vfp_reg_offset(1, reg)); +} + +#define tcg_gen_ld_f32 tcg_gen_ld_i32 +#define tcg_gen_ld_f64 tcg_gen_ld_i64 +#define tcg_gen_st_f32 tcg_gen_st_i32 +#define tcg_gen_st_f64 tcg_gen_st_i64 + +static inline void gen_mov_F0_vreg(int dp, int reg) +{ + if (dp) + tcg_gen_ld_f64(cpu_F0d, cpu_env, vfp_reg_offset(dp, reg)); + else + tcg_gen_ld_f32(cpu_F0s, cpu_env, vfp_reg_offset(dp, reg)); +} + +static inline void gen_mov_F1_vreg(int dp, int reg) +{ + if (dp) + tcg_gen_ld_f64(cpu_F1d, cpu_env, vfp_reg_offset(dp, reg)); + else + tcg_gen_ld_f32(cpu_F1s, cpu_env, vfp_reg_offset(dp, reg)); +} + +static inline void gen_mov_vreg_F0(int dp, int reg) +{ + if (dp) + tcg_gen_st_f64(cpu_F0d, cpu_env, vfp_reg_offset(dp, reg)); + else + tcg_gen_st_f32(cpu_F0s, cpu_env, vfp_reg_offset(dp, reg)); +} + +#define ARM_CP_RW_BIT (1 << 20) + +static inline void iwmmxt_load_reg(TCGv_i64 var, int reg) +{ + tcg_gen_ld_i64(var, cpu_env, offsetof(CPUState, iwmmxt.regs[reg])); +} + +static inline void iwmmxt_store_reg(TCGv_i64 var, int reg) +{ + tcg_gen_st_i64(var, cpu_env, offsetof(CPUState, iwmmxt.regs[reg])); +} + +static inline TCGv iwmmxt_load_creg(int reg) +{ + TCGv var = new_tmp(); + tcg_gen_ld_i32(var, cpu_env, offsetof(CPUState, iwmmxt.cregs[reg])); + return var; +} + +static inline void iwmmxt_store_creg(int reg, TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, iwmmxt.cregs[reg])); +} + +static inline void gen_op_iwmmxt_movq_wRn_M0(int rn) +{ + iwmmxt_store_reg(cpu_M0, rn); +} + +static inline void gen_op_iwmmxt_movq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_M0, rn); +} + +static inline void gen_op_iwmmxt_orq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_or_i64(cpu_M0, cpu_M0, cpu_V1); +} + +static inline void gen_op_iwmmxt_andq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_and_i64(cpu_M0, cpu_M0, cpu_V1); +} + +static inline void gen_op_iwmmxt_xorq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_xor_i64(cpu_M0, cpu_M0, cpu_V1); +} + +#define IWMMXT_OP(name) \ +static inline void gen_op_iwmmxt_##name##_M0_wRn(int rn) \ +{ \ + iwmmxt_load_reg(cpu_V1, rn); \ + gen_helper_iwmmxt_##name(cpu_M0, cpu_M0, cpu_V1); \ +} + +#define IWMMXT_OP_ENV(name) \ +static inline void gen_op_iwmmxt_##name##_M0_wRn(int rn) \ +{ \ + iwmmxt_load_reg(cpu_V1, rn); \ + gen_helper_iwmmxt_##name(cpu_M0, cpu_env, cpu_M0, cpu_V1); \ +} + +#define IWMMXT_OP_ENV_SIZE(name) \ +IWMMXT_OP_ENV(name##b) \ +IWMMXT_OP_ENV(name##w) \ +IWMMXT_OP_ENV(name##l) + +#define IWMMXT_OP_ENV1(name) \ +static inline void gen_op_iwmmxt_##name##_M0(void) \ +{ \ + gen_helper_iwmmxt_##name(cpu_M0, cpu_env, cpu_M0); \ +} + +IWMMXT_OP(maddsq) +IWMMXT_OP(madduq) +IWMMXT_OP(sadb) +IWMMXT_OP(sadw) +IWMMXT_OP(mulslw) +IWMMXT_OP(mulshw) +IWMMXT_OP(mululw) +IWMMXT_OP(muluhw) +IWMMXT_OP(macsw) +IWMMXT_OP(macuw) + +IWMMXT_OP_ENV_SIZE(unpackl) +IWMMXT_OP_ENV_SIZE(unpackh) + +IWMMXT_OP_ENV1(unpacklub) +IWMMXT_OP_ENV1(unpackluw) +IWMMXT_OP_ENV1(unpacklul) +IWMMXT_OP_ENV1(unpackhub) +IWMMXT_OP_ENV1(unpackhuw) +IWMMXT_OP_ENV1(unpackhul) +IWMMXT_OP_ENV1(unpacklsb) +IWMMXT_OP_ENV1(unpacklsw) +IWMMXT_OP_ENV1(unpacklsl) +IWMMXT_OP_ENV1(unpackhsb) +IWMMXT_OP_ENV1(unpackhsw) +IWMMXT_OP_ENV1(unpackhsl) + +IWMMXT_OP_ENV_SIZE(cmpeq) +IWMMXT_OP_ENV_SIZE(cmpgtu) +IWMMXT_OP_ENV_SIZE(cmpgts) + +IWMMXT_OP_ENV_SIZE(mins) +IWMMXT_OP_ENV_SIZE(minu) +IWMMXT_OP_ENV_SIZE(maxs) +IWMMXT_OP_ENV_SIZE(maxu) + +IWMMXT_OP_ENV_SIZE(subn) +IWMMXT_OP_ENV_SIZE(addn) +IWMMXT_OP_ENV_SIZE(subu) +IWMMXT_OP_ENV_SIZE(addu) +IWMMXT_OP_ENV_SIZE(subs) +IWMMXT_OP_ENV_SIZE(adds) + +IWMMXT_OP_ENV(avgb0) +IWMMXT_OP_ENV(avgb1) +IWMMXT_OP_ENV(avgw0) +IWMMXT_OP_ENV(avgw1) + +IWMMXT_OP(msadb) + +IWMMXT_OP_ENV(packuw) +IWMMXT_OP_ENV(packul) +IWMMXT_OP_ENV(packuq) +IWMMXT_OP_ENV(packsw) +IWMMXT_OP_ENV(packsl) +IWMMXT_OP_ENV(packsq) + +static void gen_op_iwmmxt_set_mup(void) +{ + TCGv tmp; + tmp = load_cpu_field(iwmmxt.cregs[ARM_IWMMXT_wCon]); + tcg_gen_ori_i32(tmp, tmp, 2); + store_cpu_field(tmp, iwmmxt.cregs[ARM_IWMMXT_wCon]); +} + +static void gen_op_iwmmxt_set_cup(void) +{ + TCGv tmp; + tmp = load_cpu_field(iwmmxt.cregs[ARM_IWMMXT_wCon]); + tcg_gen_ori_i32(tmp, tmp, 1); + store_cpu_field(tmp, iwmmxt.cregs[ARM_IWMMXT_wCon]); +} + +static void gen_op_iwmmxt_setpsr_nz(void) +{ + TCGv tmp = new_tmp(); + gen_helper_iwmmxt_setpsr_nz(tmp, cpu_M0); + store_cpu_field(tmp, iwmmxt.cregs[ARM_IWMMXT_wCASF]); +} + +static inline void gen_op_iwmmxt_addl_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_ext32u_i64(cpu_V1, cpu_V1); + tcg_gen_add_i64(cpu_M0, cpu_M0, cpu_V1); +} + +static inline int gen_iwmmxt_address(DisasContext *s, uint32_t insn, TCGv dest) +{ + int rd; + uint32_t offset; + TCGv tmp; + + rd = (insn >> 16) & 0xf; + tmp = load_reg(s, rd); + + offset = (insn & 0xff) << ((insn >> 7) & 2); + if (insn & (1 << 24)) { + /* Pre indexed */ + if (insn & (1 << 23)) + tcg_gen_addi_i32(tmp, tmp, offset); + else + tcg_gen_addi_i32(tmp, tmp, -offset); + tcg_gen_mov_i32(dest, tmp); + if (insn & (1 << 21)) + store_reg(s, rd, tmp); + else + dead_tmp(tmp); + } else if (insn & (1 << 21)) { + /* Post indexed */ + tcg_gen_mov_i32(dest, tmp); + if (insn & (1 << 23)) + tcg_gen_addi_i32(tmp, tmp, offset); + else + tcg_gen_addi_i32(tmp, tmp, -offset); + store_reg(s, rd, tmp); + } else if (!(insn & (1 << 23))) + return 1; + return 0; +} + +static inline int gen_iwmmxt_shift(uint32_t insn, uint32_t mask, TCGv dest) +{ + int rd = (insn >> 0) & 0xf; + TCGv tmp; + + if (insn & (1 << 8)) { + if (rd < ARM_IWMMXT_wCGR0 || rd > ARM_IWMMXT_wCGR3) { + return 1; + } else { + tmp = iwmmxt_load_creg(rd); + } + } else { + tmp = new_tmp(); + iwmmxt_load_reg(cpu_V0, rd); + tcg_gen_trunc_i64_i32(tmp, cpu_V0); + } + tcg_gen_andi_i32(tmp, tmp, mask); + tcg_gen_mov_i32(dest, tmp); + dead_tmp(tmp); + return 0; +} + +/* Disassemble an iwMMXt instruction. Returns nonzero if an error occured + (ie. an undefined instruction). */ +static int disas_iwmmxt_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + int rd, wrd; + int rdhi, rdlo, rd0, rd1, i; + TCGv addr; + TCGv tmp, tmp2, tmp3; + + if ((insn & 0x0e000e00) == 0x0c000000) { + if ((insn & 0x0fe00ff0) == 0x0c400000) { + wrd = insn & 0xf; + rdlo = (insn >> 12) & 0xf; + rdhi = (insn >> 16) & 0xf; + if (insn & ARM_CP_RW_BIT) { /* TMRRC */ + iwmmxt_load_reg(cpu_V0, wrd); + tcg_gen_trunc_i64_i32(cpu_R[rdlo], cpu_V0); + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(cpu_R[rdhi], cpu_V0); + } else { /* TMCRR */ + tcg_gen_concat_i32_i64(cpu_V0, cpu_R[rdlo], cpu_R[rdhi]); + iwmmxt_store_reg(cpu_V0, wrd); + gen_op_iwmmxt_set_mup(); + } + return 0; + } + + wrd = (insn >> 12) & 0xf; + addr = new_tmp(); + if (gen_iwmmxt_address(s, insn, addr)) { + dead_tmp(addr); + return 1; + } + if (insn & ARM_CP_RW_BIT) { + if ((insn >> 28) == 0xf) { /* WLDRW wCx */ + tmp = new_tmp(); + tcg_gen_qemu_ld32u(tmp, addr, IS_USER(s)); + iwmmxt_store_creg(wrd, tmp); + } else { + i = 1; + if (insn & (1 << 8)) { + if (insn & (1 << 22)) { /* WLDRD */ + tcg_gen_qemu_ld64(cpu_M0, addr, IS_USER(s)); + i = 0; + } else { /* WLDRW wRd */ + tmp = gen_ld32(addr, IS_USER(s)); + } + } else { + if (insn & (1 << 22)) { /* WLDRH */ + tmp = gen_ld16u(addr, IS_USER(s)); + } else { /* WLDRB */ + tmp = gen_ld8u(addr, IS_USER(s)); + } + } + if (i) { + tcg_gen_extu_i32_i64(cpu_M0, tmp); + dead_tmp(tmp); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + } + } else { + if ((insn >> 28) == 0xf) { /* WSTRW wCx */ + tmp = iwmmxt_load_creg(wrd); + gen_st32(tmp, addr, IS_USER(s)); + } else { + gen_op_iwmmxt_movq_M0_wRn(wrd); + tmp = new_tmp(); + if (insn & (1 << 8)) { + if (insn & (1 << 22)) { /* WSTRD */ + dead_tmp(tmp); + tcg_gen_qemu_st64(cpu_M0, addr, IS_USER(s)); + } else { /* WSTRW wRd */ + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + gen_st32(tmp, addr, IS_USER(s)); + } + } else { + if (insn & (1 << 22)) { /* WSTRH */ + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + gen_st16(tmp, addr, IS_USER(s)); + } else { /* WSTRB */ + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + gen_st8(tmp, addr, IS_USER(s)); + } + } + } + } + return 0; + } + + if ((insn & 0x0f000000) != 0x0e000000) + return 1; + + switch (((insn >> 12) & 0xf00) | ((insn >> 4) & 0xff)) { + case 0x000: /* WOR */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + gen_op_iwmmxt_orq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x011: /* TMCR */ + if (insn & 0xf) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + switch (wrd) { + case ARM_IWMMXT_wCID: + case ARM_IWMMXT_wCASF: + break; + case ARM_IWMMXT_wCon: + gen_op_iwmmxt_set_cup(); + /* Fall through. */ + case ARM_IWMMXT_wCSSF: + tmp = iwmmxt_load_creg(wrd); + tmp2 = load_reg(s, rd); + tcg_gen_andc_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + iwmmxt_store_creg(wrd, tmp); + break; + case ARM_IWMMXT_wCGR0: + case ARM_IWMMXT_wCGR1: + case ARM_IWMMXT_wCGR2: + case ARM_IWMMXT_wCGR3: + gen_op_iwmmxt_set_cup(); + tmp = load_reg(s, rd); + iwmmxt_store_creg(wrd, tmp); + break; + default: + return 1; + } + break; + case 0x100: /* WXOR */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + gen_op_iwmmxt_xorq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x111: /* TMRC */ + if (insn & 0xf) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + tmp = iwmmxt_load_creg(wrd); + store_reg(s, rd, tmp); + break; + case 0x300: /* WANDN */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tcg_gen_neg_i64(cpu_M0, cpu_M0); + gen_op_iwmmxt_andq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x200: /* WAND */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + gen_op_iwmmxt_andq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x810: case 0xa10: /* WMADD */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 21)) + gen_op_iwmmxt_maddsq_M0_wRn(rd1); + else + gen_op_iwmmxt_madduq_M0_wRn(rd1); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x10e: case 0x50e: case 0x90e: case 0xd0e: /* WUNPCKIL */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_op_iwmmxt_unpacklb_M0_wRn(rd1); + break; + case 1: + gen_op_iwmmxt_unpacklw_M0_wRn(rd1); + break; + case 2: + gen_op_iwmmxt_unpackll_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x10c: case 0x50c: case 0x90c: case 0xd0c: /* WUNPCKIH */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_op_iwmmxt_unpackhb_M0_wRn(rd1); + break; + case 1: + gen_op_iwmmxt_unpackhw_M0_wRn(rd1); + break; + case 2: + gen_op_iwmmxt_unpackhl_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x012: case 0x112: case 0x412: case 0x512: /* WSAD */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 22)) + gen_op_iwmmxt_sadw_M0_wRn(rd1); + else + gen_op_iwmmxt_sadb_M0_wRn(rd1); + if (!(insn & (1 << 20))) + gen_op_iwmmxt_addl_M0_wRn(wrd); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x010: case 0x110: case 0x210: case 0x310: /* WMUL */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 21)) { + if (insn & (1 << 20)) + gen_op_iwmmxt_mulshw_M0_wRn(rd1); + else + gen_op_iwmmxt_mulslw_M0_wRn(rd1); + } else { + if (insn & (1 << 20)) + gen_op_iwmmxt_muluhw_M0_wRn(rd1); + else + gen_op_iwmmxt_mululw_M0_wRn(rd1); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x410: case 0x510: case 0x610: case 0x710: /* WMAC */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 21)) + gen_op_iwmmxt_macsw_M0_wRn(rd1); + else + gen_op_iwmmxt_macuw_M0_wRn(rd1); + if (!(insn & (1 << 20))) { + iwmmxt_load_reg(cpu_V1, wrd); + tcg_gen_add_i64(cpu_M0, cpu_M0, cpu_V1); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x006: case 0x406: case 0x806: case 0xc06: /* WCMPEQ */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_op_iwmmxt_cmpeqb_M0_wRn(rd1); + break; + case 1: + gen_op_iwmmxt_cmpeqw_M0_wRn(rd1); + break; + case 2: + gen_op_iwmmxt_cmpeql_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x800: case 0x900: case 0xc00: case 0xd00: /* WAVG2 */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 22)) { + if (insn & (1 << 20)) + gen_op_iwmmxt_avgw1_M0_wRn(rd1); + else + gen_op_iwmmxt_avgw0_M0_wRn(rd1); + } else { + if (insn & (1 << 20)) + gen_op_iwmmxt_avgb1_M0_wRn(rd1); + else + gen_op_iwmmxt_avgb0_M0_wRn(rd1); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x802: case 0x902: case 0xa02: case 0xb02: /* WALIGNR */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCGR0 + ((insn >> 20) & 3)); + tcg_gen_andi_i32(tmp, tmp, 7); + iwmmxt_load_reg(cpu_V1, rd1); + gen_helper_iwmmxt_align(cpu_M0, cpu_M0, cpu_V1, tmp); + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x601: case 0x605: case 0x609: case 0x60d: /* TINSR */ + if (((insn >> 6) & 3) == 3) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + tmp = load_reg(s, rd); + gen_op_iwmmxt_movq_M0_wRn(wrd); + switch ((insn >> 6) & 3) { + case 0: + tmp2 = tcg_const_i32(0xff); + tmp3 = tcg_const_i32((insn & 7) << 3); + break; + case 1: + tmp2 = tcg_const_i32(0xffff); + tmp3 = tcg_const_i32((insn & 3) << 4); + break; + case 2: + tmp2 = tcg_const_i32(0xffffffff); + tmp3 = tcg_const_i32((insn & 1) << 5); + break; + default: + TCGV_UNUSED(tmp2); + TCGV_UNUSED(tmp3); + } + gen_helper_iwmmxt_insr(cpu_M0, cpu_M0, tmp, tmp2, tmp3); + tcg_temp_free(tmp3); + tcg_temp_free(tmp2); + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x107: case 0x507: case 0x907: case 0xd07: /* TEXTRM */ + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + if (rd == 15 || ((insn >> 22) & 3) == 3) + return 1; + gen_op_iwmmxt_movq_M0_wRn(wrd); + tmp = new_tmp(); + switch ((insn >> 22) & 3) { + case 0: + tcg_gen_shri_i64(cpu_M0, cpu_M0, (insn & 7) << 3); + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + if (insn & 8) { + tcg_gen_ext8s_i32(tmp, tmp); + } else { + tcg_gen_andi_i32(tmp, tmp, 0xff); + } + break; + case 1: + tcg_gen_shri_i64(cpu_M0, cpu_M0, (insn & 3) << 4); + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + if (insn & 8) { + tcg_gen_ext16s_i32(tmp, tmp); + } else { + tcg_gen_andi_i32(tmp, tmp, 0xffff); + } + break; + case 2: + tcg_gen_shri_i64(cpu_M0, cpu_M0, (insn & 1) << 5); + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + break; + } + store_reg(s, rd, tmp); + break; + case 0x117: case 0x517: case 0x917: case 0xd17: /* TEXTRC */ + if ((insn & 0x000ff008) != 0x0003f000 || ((insn >> 22) & 3) == 3) + return 1; + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCASF); + switch ((insn >> 22) & 3) { + case 0: + tcg_gen_shri_i32(tmp, tmp, ((insn & 7) << 2) + 0); + break; + case 1: + tcg_gen_shri_i32(tmp, tmp, ((insn & 3) << 3) + 4); + break; + case 2: + tcg_gen_shri_i32(tmp, tmp, ((insn & 1) << 4) + 12); + break; + } + tcg_gen_shli_i32(tmp, tmp, 28); + gen_set_nzcv(tmp); + dead_tmp(tmp); + break; + case 0x401: case 0x405: case 0x409: case 0x40d: /* TBCST */ + if (((insn >> 6) & 3) == 3) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + tmp = load_reg(s, rd); + switch ((insn >> 6) & 3) { + case 0: + gen_helper_iwmmxt_bcstb(cpu_M0, tmp); + break; + case 1: + gen_helper_iwmmxt_bcstw(cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_bcstl(cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x113: case 0x513: case 0x913: case 0xd13: /* TANDC */ + if ((insn & 0x000ff00f) != 0x0003f000 || ((insn >> 22) & 3) == 3) + return 1; + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCASF); + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + switch ((insn >> 22) & 3) { + case 0: + for (i = 0; i < 7; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 4); + tcg_gen_and_i32(tmp, tmp, tmp2); + } + break; + case 1: + for (i = 0; i < 3; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 8); + tcg_gen_and_i32(tmp, tmp, tmp2); + } + break; + case 2: + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_and_i32(tmp, tmp, tmp2); + break; + } + gen_set_nzcv(tmp); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 0x01c: case 0x41c: case 0x81c: case 0xc1c: /* WACC */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_helper_iwmmxt_addcb(cpu_M0, cpu_M0); + break; + case 1: + gen_helper_iwmmxt_addcw(cpu_M0, cpu_M0); + break; + case 2: + gen_helper_iwmmxt_addcl(cpu_M0, cpu_M0); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x115: case 0x515: case 0x915: case 0xd15: /* TORC */ + if ((insn & 0x000ff00f) != 0x0003f000 || ((insn >> 22) & 3) == 3) + return 1; + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCASF); + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + switch ((insn >> 22) & 3) { + case 0: + for (i = 0; i < 7; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 4); + tcg_gen_or_i32(tmp, tmp, tmp2); + } + break; + case 1: + for (i = 0; i < 3; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 8); + tcg_gen_or_i32(tmp, tmp, tmp2); + } + break; + case 2: + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_or_i32(tmp, tmp, tmp2); + break; + } + gen_set_nzcv(tmp); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 0x103: case 0x503: case 0x903: case 0xd03: /* TMOVMSK */ + rd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + if ((insn & 0xf) != 0 || ((insn >> 22) & 3) == 3) + return 1; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + switch ((insn >> 22) & 3) { + case 0: + gen_helper_iwmmxt_msbb(tmp, cpu_M0); + break; + case 1: + gen_helper_iwmmxt_msbw(tmp, cpu_M0); + break; + case 2: + gen_helper_iwmmxt_msbl(tmp, cpu_M0); + break; + } + store_reg(s, rd, tmp); + break; + case 0x106: case 0x306: case 0x506: case 0x706: /* WCMPGT */ + case 0x906: case 0xb06: case 0xd06: case 0xf06: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_cmpgtsb_M0_wRn(rd1); + else + gen_op_iwmmxt_cmpgtub_M0_wRn(rd1); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_cmpgtsw_M0_wRn(rd1); + else + gen_op_iwmmxt_cmpgtuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_cmpgtsl_M0_wRn(rd1); + else + gen_op_iwmmxt_cmpgtul_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x00e: case 0x20e: case 0x40e: case 0x60e: /* WUNPCKEL */ + case 0x80e: case 0xa0e: case 0xc0e: case 0xe0e: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpacklsb_M0(); + else + gen_op_iwmmxt_unpacklub_M0(); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpacklsw_M0(); + else + gen_op_iwmmxt_unpackluw_M0(); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpacklsl_M0(); + else + gen_op_iwmmxt_unpacklul_M0(); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x00c: case 0x20c: case 0x40c: case 0x60c: /* WUNPCKEH */ + case 0x80c: case 0xa0c: case 0xc0c: case 0xe0c: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpackhsb_M0(); + else + gen_op_iwmmxt_unpackhub_M0(); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpackhsw_M0(); + else + gen_op_iwmmxt_unpackhuw_M0(); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpackhsl_M0(); + else + gen_op_iwmmxt_unpackhul_M0(); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x204: case 0x604: case 0xa04: case 0xe04: /* WSRL */ + case 0x214: case 0x614: case 0xa14: case 0xe14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + if (gen_iwmmxt_shift(insn, 0xff, tmp)) { + dead_tmp(tmp); + return 1; + } + switch ((insn >> 22) & 3) { + case 1: + gen_helper_iwmmxt_srlw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_srll(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + gen_helper_iwmmxt_srlq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x004: case 0x404: case 0x804: case 0xc04: /* WSRA */ + case 0x014: case 0x414: case 0x814: case 0xc14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + if (gen_iwmmxt_shift(insn, 0xff, tmp)) { + dead_tmp(tmp); + return 1; + } + switch ((insn >> 22) & 3) { + case 1: + gen_helper_iwmmxt_sraw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_sral(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + gen_helper_iwmmxt_sraq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x104: case 0x504: case 0x904: case 0xd04: /* WSLL */ + case 0x114: case 0x514: case 0x914: case 0xd14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + if (gen_iwmmxt_shift(insn, 0xff, tmp)) { + dead_tmp(tmp); + return 1; + } + switch ((insn >> 22) & 3) { + case 1: + gen_helper_iwmmxt_sllw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_slll(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + gen_helper_iwmmxt_sllq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x304: case 0x704: case 0xb04: case 0xf04: /* WROR */ + case 0x314: case 0x714: case 0xb14: case 0xf14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + switch ((insn >> 22) & 3) { + case 1: + if (gen_iwmmxt_shift(insn, 0xf, tmp)) { + dead_tmp(tmp); + return 1; + } + gen_helper_iwmmxt_rorw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + if (gen_iwmmxt_shift(insn, 0x1f, tmp)) { + dead_tmp(tmp); + return 1; + } + gen_helper_iwmmxt_rorl(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + if (gen_iwmmxt_shift(insn, 0x3f, tmp)) { + dead_tmp(tmp); + return 1; + } + gen_helper_iwmmxt_rorq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x116: case 0x316: case 0x516: case 0x716: /* WMIN */ + case 0x916: case 0xb16: case 0xd16: case 0xf16: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_minsb_M0_wRn(rd1); + else + gen_op_iwmmxt_minub_M0_wRn(rd1); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_minsw_M0_wRn(rd1); + else + gen_op_iwmmxt_minuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_minsl_M0_wRn(rd1); + else + gen_op_iwmmxt_minul_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x016: case 0x216: case 0x416: case 0x616: /* WMAX */ + case 0x816: case 0xa16: case 0xc16: case 0xe16: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_maxsb_M0_wRn(rd1); + else + gen_op_iwmmxt_maxub_M0_wRn(rd1); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_maxsw_M0_wRn(rd1); + else + gen_op_iwmmxt_maxuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_maxsl_M0_wRn(rd1); + else + gen_op_iwmmxt_maxul_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x002: case 0x102: case 0x202: case 0x302: /* WALIGNI */ + case 0x402: case 0x502: case 0x602: case 0x702: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = tcg_const_i32((insn >> 20) & 3); + iwmmxt_load_reg(cpu_V1, rd1); + gen_helper_iwmmxt_align(cpu_M0, cpu_M0, cpu_V1, tmp); + tcg_temp_free(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x01a: case 0x11a: case 0x21a: case 0x31a: /* WSUB */ + case 0x41a: case 0x51a: case 0x61a: case 0x71a: + case 0x81a: case 0x91a: case 0xa1a: case 0xb1a: + case 0xc1a: case 0xd1a: case 0xe1a: case 0xf1a: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 20) & 0xf) { + case 0x0: + gen_op_iwmmxt_subnb_M0_wRn(rd1); + break; + case 0x1: + gen_op_iwmmxt_subub_M0_wRn(rd1); + break; + case 0x3: + gen_op_iwmmxt_subsb_M0_wRn(rd1); + break; + case 0x4: + gen_op_iwmmxt_subnw_M0_wRn(rd1); + break; + case 0x5: + gen_op_iwmmxt_subuw_M0_wRn(rd1); + break; + case 0x7: + gen_op_iwmmxt_subsw_M0_wRn(rd1); + break; + case 0x8: + gen_op_iwmmxt_subnl_M0_wRn(rd1); + break; + case 0x9: + gen_op_iwmmxt_subul_M0_wRn(rd1); + break; + case 0xb: + gen_op_iwmmxt_subsl_M0_wRn(rd1); + break; + default: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x01e: case 0x11e: case 0x21e: case 0x31e: /* WSHUFH */ + case 0x41e: case 0x51e: case 0x61e: case 0x71e: + case 0x81e: case 0x91e: case 0xa1e: case 0xb1e: + case 0xc1e: case 0xd1e: case 0xe1e: case 0xf1e: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = tcg_const_i32(((insn >> 16) & 0xf0) | (insn & 0x0f)); + gen_helper_iwmmxt_shufh(cpu_M0, cpu_env, cpu_M0, tmp); + tcg_temp_free(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x018: case 0x118: case 0x218: case 0x318: /* WADD */ + case 0x418: case 0x518: case 0x618: case 0x718: + case 0x818: case 0x918: case 0xa18: case 0xb18: + case 0xc18: case 0xd18: case 0xe18: case 0xf18: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 20) & 0xf) { + case 0x0: + gen_op_iwmmxt_addnb_M0_wRn(rd1); + break; + case 0x1: + gen_op_iwmmxt_addub_M0_wRn(rd1); + break; + case 0x3: + gen_op_iwmmxt_addsb_M0_wRn(rd1); + break; + case 0x4: + gen_op_iwmmxt_addnw_M0_wRn(rd1); + break; + case 0x5: + gen_op_iwmmxt_adduw_M0_wRn(rd1); + break; + case 0x7: + gen_op_iwmmxt_addsw_M0_wRn(rd1); + break; + case 0x8: + gen_op_iwmmxt_addnl_M0_wRn(rd1); + break; + case 0x9: + gen_op_iwmmxt_addul_M0_wRn(rd1); + break; + case 0xb: + gen_op_iwmmxt_addsl_M0_wRn(rd1); + break; + default: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x008: case 0x108: case 0x208: case 0x308: /* WPACK */ + case 0x408: case 0x508: case 0x608: case 0x708: + case 0x808: case 0x908: case 0xa08: case 0xb08: + case 0xc08: case 0xd08: case 0xe08: case 0xf08: + if (!(insn & (1 << 20)) || ((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_packsw_M0_wRn(rd1); + else + gen_op_iwmmxt_packuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_packsl_M0_wRn(rd1); + else + gen_op_iwmmxt_packul_M0_wRn(rd1); + break; + case 3: + if (insn & (1 << 21)) + gen_op_iwmmxt_packsq_M0_wRn(rd1); + else + gen_op_iwmmxt_packuq_M0_wRn(rd1); + break; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x201: case 0x203: case 0x205: case 0x207: + case 0x209: case 0x20b: case 0x20d: case 0x20f: + case 0x211: case 0x213: case 0x215: case 0x217: + case 0x219: case 0x21b: case 0x21d: case 0x21f: + wrd = (insn >> 5) & 0xf; + rd0 = (insn >> 12) & 0xf; + rd1 = (insn >> 0) & 0xf; + if (rd0 == 0xf || rd1 == 0xf) + return 1; + gen_op_iwmmxt_movq_M0_wRn(wrd); + tmp = load_reg(s, rd0); + tmp2 = load_reg(s, rd1); + switch ((insn >> 16) & 0xf) { + case 0x0: /* TMIA */ + gen_helper_iwmmxt_muladdsl(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0x8: /* TMIAPH */ + gen_helper_iwmmxt_muladdsw(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0xc: case 0xd: case 0xe: case 0xf: /* TMIAxy */ + if (insn & (1 << 16)) + tcg_gen_shri_i32(tmp, tmp, 16); + if (insn & (1 << 17)) + tcg_gen_shri_i32(tmp2, tmp2, 16); + gen_helper_iwmmxt_muladdswl(cpu_M0, cpu_M0, tmp, tmp2); + break; + default: + dead_tmp(tmp2); + dead_tmp(tmp); + return 1; + } + dead_tmp(tmp2); + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + default: + return 1; + } + + return 0; +} + +/* Disassemble an XScale DSP instruction. Returns nonzero if an error occured + (ie. an undefined instruction). */ +static int disas_dsp_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + int acc, rd0, rd1, rdhi, rdlo; + TCGv tmp, tmp2; + + if ((insn & 0x0ff00f10) == 0x0e200010) { + /* Multiply with Internal Accumulate Format */ + rd0 = (insn >> 12) & 0xf; + rd1 = insn & 0xf; + acc = (insn >> 5) & 7; + + if (acc != 0) + return 1; + + tmp = load_reg(s, rd0); + tmp2 = load_reg(s, rd1); + switch ((insn >> 16) & 0xf) { + case 0x0: /* MIA */ + gen_helper_iwmmxt_muladdsl(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0x8: /* MIAPH */ + gen_helper_iwmmxt_muladdsw(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0xc: /* MIABB */ + case 0xd: /* MIABT */ + case 0xe: /* MIATB */ + case 0xf: /* MIATT */ + if (insn & (1 << 16)) + tcg_gen_shri_i32(tmp, tmp, 16); + if (insn & (1 << 17)) + tcg_gen_shri_i32(tmp2, tmp2, 16); + gen_helper_iwmmxt_muladdswl(cpu_M0, cpu_M0, tmp, tmp2); + break; + default: + return 1; + } + dead_tmp(tmp2); + dead_tmp(tmp); + + gen_op_iwmmxt_movq_wRn_M0(acc); + return 0; + } + + if ((insn & 0x0fe00ff8) == 0x0c400000) { + /* Internal Accumulator Access Format */ + rdhi = (insn >> 16) & 0xf; + rdlo = (insn >> 12) & 0xf; + acc = insn & 7; + + if (acc != 0) + return 1; + + if (insn & ARM_CP_RW_BIT) { /* MRA */ + iwmmxt_load_reg(cpu_V0, acc); + tcg_gen_trunc_i64_i32(cpu_R[rdlo], cpu_V0); + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(cpu_R[rdhi], cpu_V0); + tcg_gen_andi_i32(cpu_R[rdhi], cpu_R[rdhi], (1 << (40 - 32)) - 1); + } else { /* MAR */ + tcg_gen_concat_i32_i64(cpu_V0, cpu_R[rdlo], cpu_R[rdhi]); + iwmmxt_store_reg(cpu_V0, acc); + } + return 0; + } + + return 1; +} + +/* Disassemble system coprocessor instruction. Return nonzero if + instruction is not defined. */ +static int disas_cp_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + TCGv tmp, tmp2; + uint32_t rd = (insn >> 12) & 0xf; + uint32_t cp = (insn >> 8) & 0xf; + if (IS_USER(s)) { + return 1; + } + + if (insn & ARM_CP_RW_BIT) { + if (!env->cp[cp].cp_read) + return 1; + gen_set_pc_im(s->pc); + tmp = new_tmp(); + tmp2 = tcg_const_i32(insn); + gen_helper_get_cp(tmp, cpu_env, tmp2); + tcg_temp_free(tmp2); + store_reg(s, rd, tmp); + } else { + if (!env->cp[cp].cp_write) + return 1; + gen_set_pc_im(s->pc); + tmp = load_reg(s, rd); + tmp2 = tcg_const_i32(insn); + gen_helper_set_cp(cpu_env, tmp2, tmp); + tcg_temp_free(tmp2); + dead_tmp(tmp); + } + return 0; +} + +static int cp15_user_ok(uint32_t insn) +{ + int cpn = (insn >> 16) & 0xf; + int cpm = insn & 0xf; + int op = ((insn >> 5) & 7) | ((insn >> 18) & 0x38); + + if (cpn == 13 && cpm == 0) { + /* TLS register. */ + if (op == 2 || (op == 3 && (insn & ARM_CP_RW_BIT))) + return 1; + } + if (cpn == 7) { + /* ISB, DSB, DMB. */ + if ((cpm == 5 && op == 4) + || (cpm == 10 && (op == 4 || op == 5))) + return 1; + } + return 0; +} + +/* Disassemble system coprocessor (cp15) instruction. Return nonzero if + instruction is not defined. */ +static int disas_cp15_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + uint32_t rd; + TCGv tmp, tmp2; + + /* M profile cores use memory mapped registers instead of cp15. */ + if (arm_feature(env, ARM_FEATURE_M)) + return 1; + + if ((insn & (1 << 25)) == 0) { + if (insn & (1 << 20)) { + /* mrrc */ + return 1; + } + /* mcrr. Used for block cache operations, so implement as no-op. */ + return 0; + } + if ((insn & (1 << 4)) == 0) { + /* cdp */ + return 1; + } + if (IS_USER(s) && !cp15_user_ok(insn)) { + return 1; + } + if ((insn & 0x0fff0fff) == 0x0e070f90 + || (insn & 0x0fff0fff) == 0x0e070f58) { + /* Wait for interrupt. */ + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_WFI; + return 0; + } + rd = (insn >> 12) & 0xf; + tmp2 = tcg_const_i32(insn); + if (insn & ARM_CP_RW_BIT) { + tmp = new_tmp(); + gen_helper_get_cp15(tmp, cpu_env, tmp2); + /* If the destination register is r15 then sets condition codes. */ + if (rd != 15) + store_reg(s, rd, tmp); + else + dead_tmp(tmp); + } else { + tmp = load_reg(s, rd); + gen_helper_set_cp15(cpu_env, tmp2, tmp); + dead_tmp(tmp); + /* Normally we would always end the TB here, but Linux + * arch/arm/mach-pxa/sleep.S expects two instructions following + * an MMU enable to execute from cache. Imitate this behaviour. */ + if (!arm_feature(env, ARM_FEATURE_XSCALE) || + (insn & 0x0fff0fff) != 0x0e010f10) + gen_lookup_tb(s); + } + tcg_temp_free_i32(tmp2); + return 0; +} + +#define VFP_REG_SHR(x, n) (((n) > 0) ? (x) >> (n) : (x) << -(n)) +#define VFP_SREG(insn, bigbit, smallbit) \ + ((VFP_REG_SHR(insn, bigbit - 1) & 0x1e) | (((insn) >> (smallbit)) & 1)) +#define VFP_DREG(reg, insn, bigbit, smallbit) do { \ + if (arm_feature(env, ARM_FEATURE_VFP3)) { \ + reg = (((insn) >> (bigbit)) & 0x0f) \ + | (((insn) >> ((smallbit) - 4)) & 0x10); \ + } else { \ + if (insn & (1 << (smallbit))) \ + return 1; \ + reg = ((insn) >> (bigbit)) & 0x0f; \ + }} while (0) + +#define VFP_SREG_D(insn) VFP_SREG(insn, 12, 22) +#define VFP_DREG_D(reg, insn) VFP_DREG(reg, insn, 12, 22) +#define VFP_SREG_N(insn) VFP_SREG(insn, 16, 7) +#define VFP_DREG_N(reg, insn) VFP_DREG(reg, insn, 16, 7) +#define VFP_SREG_M(insn) VFP_SREG(insn, 0, 5) +#define VFP_DREG_M(reg, insn) VFP_DREG(reg, insn, 0, 5) + +/* Move between integer and VFP cores. */ +static TCGv gen_vfp_mrs(void) +{ + TCGv tmp = new_tmp(); + tcg_gen_mov_i32(tmp, cpu_F0s); + return tmp; +} + +static void gen_vfp_msr(TCGv tmp) +{ + tcg_gen_mov_i32(cpu_F0s, tmp); + dead_tmp(tmp); +} + +static inline int +vfp_enabled(CPUState * env) +{ + return ((env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30)) != 0); +} + +static void gen_neon_dup_u8(TCGv var, int shift) +{ + TCGv tmp = new_tmp(); + if (shift) + tcg_gen_shri_i32(var, var, shift); + tcg_gen_ext8u_i32(var, var); + tcg_gen_shli_i32(tmp, var, 8); + tcg_gen_or_i32(var, var, tmp); + tcg_gen_shli_i32(tmp, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +static void gen_neon_dup_low16(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_ext16u_i32(var, var); + tcg_gen_shli_i32(tmp, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +static void gen_neon_dup_high16(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_andi_i32(var, var, 0xffff0000); + tcg_gen_shri_i32(tmp, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Disassemble a VFP instruction. Returns nonzero if an error occured + (ie. an undefined instruction). */ +static int disas_vfp_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + uint32_t rd, rn, rm, op, i, n, offset, delta_d, delta_m, bank_mask; + int dp, veclen; + TCGv addr; + TCGv tmp; + TCGv tmp2; + + if (!arm_feature(env, ARM_FEATURE_VFP)) + return 1; + + if (!vfp_enabled(env)) { + /* VFP disabled. Only allow fmxr/fmrx to/from some control regs. */ + if ((insn & 0x0fe00fff) != 0x0ee00a10) + return 1; + rn = (insn >> 16) & 0xf; + if (rn != ARM_VFP_FPSID && rn != ARM_VFP_FPEXC + && rn != ARM_VFP_MVFR1 && rn != ARM_VFP_MVFR0) + return 1; + } + dp = ((insn & 0xf00) == 0xb00); + switch ((insn >> 24) & 0xf) { + case 0xe: + if (insn & (1 << 4)) { + /* single register transfer */ + rd = (insn >> 12) & 0xf; + if (dp) { + int size; + int pass; + + VFP_DREG_N(rn, insn); + if (insn & 0xf) + return 1; + if (insn & 0x00c00060 + && !arm_feature(env, ARM_FEATURE_NEON)) + return 1; + + pass = (insn >> 21) & 1; + if (insn & (1 << 22)) { + size = 0; + offset = ((insn >> 5) & 3) * 8; + } else if (insn & (1 << 5)) { + size = 1; + offset = (insn & (1 << 6)) ? 16 : 0; + } else { + size = 2; + offset = 0; + } + if (insn & ARM_CP_RW_BIT) { + /* vfp->arm */ + tmp = neon_load_reg(rn, pass); + switch (size) { + case 0: + if (offset) + tcg_gen_shri_i32(tmp, tmp, offset); + if (insn & (1 << 23)) + gen_uxtb(tmp); + else + gen_sxtb(tmp); + break; + case 1: + if (insn & (1 << 23)) { + if (offset) { + tcg_gen_shri_i32(tmp, tmp, 16); + } else { + gen_uxth(tmp); + } + } else { + if (offset) { + tcg_gen_sari_i32(tmp, tmp, 16); + } else { + gen_sxth(tmp); + } + } + break; + case 2: + break; + } + store_reg(s, rd, tmp); + } else { + /* arm->vfp */ + tmp = load_reg(s, rd); + if (insn & (1 << 23)) { + /* VDUP */ + if (size == 0) { + gen_neon_dup_u8(tmp, 0); + } else if (size == 1) { + gen_neon_dup_low16(tmp); + } + for (n = 0; n <= pass * 2; n++) { + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + neon_store_reg(rn, n, tmp2); + } + neon_store_reg(rn, n, tmp); + } else { + /* VMOV */ + switch (size) { + case 0: + tmp2 = neon_load_reg(rn, pass); + gen_bfi(tmp, tmp2, tmp, offset, 0xff); + dead_tmp(tmp2); + break; + case 1: + tmp2 = neon_load_reg(rn, pass); + gen_bfi(tmp, tmp2, tmp, offset, 0xffff); + dead_tmp(tmp2); + break; + case 2: + break; + } + neon_store_reg(rn, pass, tmp); + } + } + } else { /* !dp */ + if ((insn & 0x6f) != 0x00) + return 1; + rn = VFP_SREG_N(insn); + if (insn & ARM_CP_RW_BIT) { + /* vfp->arm */ + if (insn & (1 << 21)) { + /* system register */ + rn >>= 1; + + switch (rn) { + case ARM_VFP_FPSID: + /* VFP2 allows access to FSID from userspace. + VFP3 restricts all id registers to privileged + accesses. */ + if (IS_USER(s) + && arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + case ARM_VFP_FPEXC: + if (IS_USER(s)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + case ARM_VFP_FPINST: + case ARM_VFP_FPINST2: + /* Not present in VFP3. */ + if (IS_USER(s) + || arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + case ARM_VFP_FPSCR: + if (rd == 15) { + tmp = load_cpu_field(vfp.xregs[ARM_VFP_FPSCR]); + tcg_gen_andi_i32(tmp, tmp, 0xf0000000); + } else { + tmp = new_tmp(); + gen_helper_vfp_get_fpscr(tmp, cpu_env); + } + break; + case ARM_VFP_MVFR0: + case ARM_VFP_MVFR1: + if (IS_USER(s) + || !arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + default: + return 1; + } + } else { + gen_mov_F0_vreg(0, rn); + tmp = gen_vfp_mrs(); + } + if (rd == 15) { + /* Set the 4 flag bits in the CPSR. */ + gen_set_nzcv(tmp); + dead_tmp(tmp); + } else { + store_reg(s, rd, tmp); + } + } else { + /* arm->vfp */ + tmp = load_reg(s, rd); + if (insn & (1 << 21)) { + rn >>= 1; + /* system register */ + switch (rn) { + case ARM_VFP_FPSID: + case ARM_VFP_MVFR0: + case ARM_VFP_MVFR1: + /* Writes are ignored. */ + break; + case ARM_VFP_FPSCR: + gen_helper_vfp_set_fpscr(cpu_env, tmp); + dead_tmp(tmp); + gen_lookup_tb(s); + break; + case ARM_VFP_FPEXC: + if (IS_USER(s)) + return 1; + /* TODO: VFP subarchitecture support. + * For now, keep the EN bit only */ + tcg_gen_andi_i32(tmp, tmp, 1 << 30); + store_cpu_field(tmp, vfp.xregs[rn]); + gen_lookup_tb(s); + break; + case ARM_VFP_FPINST: + case ARM_VFP_FPINST2: + store_cpu_field(tmp, vfp.xregs[rn]); + break; + default: + return 1; + } + } else { + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rn); + } + } + } + } else { + /* data processing */ + /* The opcode is in bits 23, 21, 20 and 6. */ + op = ((insn >> 20) & 8) | ((insn >> 19) & 6) | ((insn >> 6) & 1); + if (dp) { + if (op == 15) { + /* rn is opcode */ + rn = ((insn >> 15) & 0x1e) | ((insn >> 7) & 1); + } else { + /* rn is register number */ + VFP_DREG_N(rn, insn); + } + + if (op == 15 && (rn == 15 || rn > 17)) { + /* Integer or single precision destination. */ + rd = VFP_SREG_D(insn); + } else { + VFP_DREG_D(rd, insn); + } + + if (op == 15 && (rn == 16 || rn == 17)) { + /* Integer source. */ + rm = ((insn << 1) & 0x1e) | ((insn >> 5) & 1); + } else { + VFP_DREG_M(rm, insn); + } + } else { + rn = VFP_SREG_N(insn); + if (op == 15 && rn == 15) { + /* Double precision destination. */ + VFP_DREG_D(rd, insn); + } else { + rd = VFP_SREG_D(insn); + } + rm = VFP_SREG_M(insn); + } + + veclen = env->vfp.vec_len; + if (op == 15 && rn > 3) + veclen = 0; + + /* Shut up compiler warnings. */ + delta_m = 0; + delta_d = 0; + bank_mask = 0; + + if (veclen > 0) { + if (dp) + bank_mask = 0xc; + else + bank_mask = 0x18; + + /* Figure out what type of vector operation this is. */ + if ((rd & bank_mask) == 0) { + /* scalar */ + veclen = 0; + } else { + if (dp) + delta_d = (env->vfp.vec_stride >> 1) + 1; + else + delta_d = env->vfp.vec_stride + 1; + + if ((rm & bank_mask) == 0) { + /* mixed scalar/vector */ + delta_m = 0; + } else { + /* vector */ + delta_m = delta_d; + } + } + } + + /* Load the initial operands. */ + if (op == 15) { + switch (rn) { + case 16: + case 17: + /* Integer source */ + gen_mov_F0_vreg(0, rm); + break; + case 8: + case 9: + /* Compare */ + gen_mov_F0_vreg(dp, rd); + gen_mov_F1_vreg(dp, rm); + break; + case 10: + case 11: + /* Compare with zero */ + gen_mov_F0_vreg(dp, rd); + gen_vfp_F1_ld0(dp); + break; + case 20: + case 21: + case 22: + case 23: + case 28: + case 29: + case 30: + case 31: + /* Source and destination the same. */ + gen_mov_F0_vreg(dp, rd); + break; + default: + /* One source operand. */ + gen_mov_F0_vreg(dp, rm); + break; + } + } else { + /* Two source operands. */ + gen_mov_F0_vreg(dp, rn); + gen_mov_F1_vreg(dp, rm); + } + + for (;;) { + /* Perform the calculation. */ + switch (op) { + case 0: /* mac: fd + (fn * fm) */ + gen_vfp_mul(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_add(dp); + break; + case 1: /* nmac: fd - (fn * fm) */ + gen_vfp_mul(dp); + gen_vfp_neg(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_add(dp); + break; + case 2: /* msc: -fd + (fn * fm) */ + gen_vfp_mul(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_sub(dp); + break; + case 3: /* nmsc: -fd - (fn * fm) */ + gen_vfp_mul(dp); + gen_vfp_neg(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_sub(dp); + break; + case 4: /* mul: fn * fm */ + gen_vfp_mul(dp); + break; + case 5: /* nmul: -(fn * fm) */ + gen_vfp_mul(dp); + gen_vfp_neg(dp); + break; + case 6: /* add: fn + fm */ + gen_vfp_add(dp); + break; + case 7: /* sub: fn - fm */ + gen_vfp_sub(dp); + break; + case 8: /* div: fn / fm */ + gen_vfp_div(dp); + break; + case 14: /* fconst */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + + n = (insn << 12) & 0x80000000; + i = ((insn >> 12) & 0x70) | (insn & 0xf); + if (dp) { + if (i & 0x40) + i |= 0x3f80; + else + i |= 0x4000; + n |= i << 16; + tcg_gen_movi_i64(cpu_F0d, ((uint64_t)n) << 32); + } else { + if (i & 0x40) + i |= 0x780; + else + i |= 0x800; + n |= i << 19; + tcg_gen_movi_i32(cpu_F0s, n); + } + break; + case 15: /* extension space */ + switch (rn) { + case 0: /* cpy */ + /* no-op */ + break; + case 1: /* abs */ + gen_vfp_abs(dp); + break; + case 2: /* neg */ + gen_vfp_neg(dp); + break; + case 3: /* sqrt */ + gen_vfp_sqrt(dp); + break; + case 4: /* vcvtb.f32.f16 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = gen_vfp_mrs(); + tcg_gen_ext16u_i32(tmp, tmp); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp, cpu_env); + dead_tmp(tmp); + break; + case 5: /* vcvtt.f32.f16 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = gen_vfp_mrs(); + tcg_gen_shri_i32(tmp, tmp, 16); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp, cpu_env); + dead_tmp(tmp); + break; + case 6: /* vcvtb.f16.f32 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = new_tmp(); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + gen_mov_F0_vreg(0, rd); + tmp2 = gen_vfp_mrs(); + tcg_gen_andi_i32(tmp2, tmp2, 0xffff0000); + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + gen_vfp_msr(tmp); + break; + case 7: /* vcvtt.f16.f32 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = new_tmp(); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + tcg_gen_shli_i32(tmp, tmp, 16); + gen_mov_F0_vreg(0, rd); + tmp2 = gen_vfp_mrs(); + tcg_gen_ext16u_i32(tmp2, tmp2); + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + gen_vfp_msr(tmp); + break; + case 8: /* cmp */ + gen_vfp_cmp(dp); + break; + case 9: /* cmpe */ + gen_vfp_cmpe(dp); + break; + case 10: /* cmpz */ + gen_vfp_cmp(dp); + break; + case 11: /* cmpez */ + gen_vfp_F1_ld0(dp); + gen_vfp_cmpe(dp); + break; + case 15: /* single<->double conversion */ + if (dp) + gen_helper_vfp_fcvtsd(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_fcvtds(cpu_F0d, cpu_F0s, cpu_env); + break; + case 16: /* fuito */ + gen_vfp_uito(dp); + break; + case 17: /* fsito */ + gen_vfp_sito(dp); + break; + case 20: /* fshto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_shto(dp, 16 - rm); + break; + case 21: /* fslto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_slto(dp, 32 - rm); + break; + case 22: /* fuhto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_uhto(dp, 16 - rm); + break; + case 23: /* fulto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_ulto(dp, 32 - rm); + break; + case 24: /* ftoui */ + gen_vfp_toui(dp); + break; + case 25: /* ftouiz */ + gen_vfp_touiz(dp); + break; + case 26: /* ftosi */ + gen_vfp_tosi(dp); + break; + case 27: /* ftosiz */ + gen_vfp_tosiz(dp); + break; + case 28: /* ftosh */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_tosh(dp, 16 - rm); + break; + case 29: /* ftosl */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_tosl(dp, 32 - rm); + break; + case 30: /* ftouh */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_touh(dp, 16 - rm); + break; + case 31: /* ftoul */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_toul(dp, 32 - rm); + break; + default: /* undefined */ + printf ("rn:%d\n", rn); + return 1; + } + break; + default: /* undefined */ + printf ("op:%d\n", op); + return 1; + } + + /* Write back the result. */ + if (op == 15 && (rn >= 8 && rn <= 11)) + ; /* Comparison, do nothing. */ + else if (op == 15 && rn > 17) + /* Integer result. */ + gen_mov_vreg_F0(0, rd); + else if (op == 15 && rn == 15) + /* conversion */ + gen_mov_vreg_F0(!dp, rd); + else + gen_mov_vreg_F0(dp, rd); + + /* break out of the loop if we have finished */ + if (veclen == 0) + break; + + if (op == 15 && delta_m == 0) { + /* single source one-many */ + while (veclen--) { + rd = ((rd + delta_d) & (bank_mask - 1)) + | (rd & bank_mask); + gen_mov_vreg_F0(dp, rd); + } + break; + } + /* Setup the next operands. */ + veclen--; + rd = ((rd + delta_d) & (bank_mask - 1)) + | (rd & bank_mask); + + if (op == 15) { + /* One source operand. */ + rm = ((rm + delta_m) & (bank_mask - 1)) + | (rm & bank_mask); + gen_mov_F0_vreg(dp, rm); + } else { + /* Two source operands. */ + rn = ((rn + delta_d) & (bank_mask - 1)) + | (rn & bank_mask); + gen_mov_F0_vreg(dp, rn); + if (delta_m) { + rm = ((rm + delta_m) & (bank_mask - 1)) + | (rm & bank_mask); + gen_mov_F1_vreg(dp, rm); + } + } + } + } + break; + case 0xc: + case 0xd: + if (dp && (insn & 0x03e00000) == 0x00400000) { + /* two-register transfer */ + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + if (dp) { + VFP_DREG_M(rm, insn); + } else { + rm = VFP_SREG_M(insn); + } + + if (insn & ARM_CP_RW_BIT) { + /* vfp->arm */ + if (dp) { + gen_mov_F0_vreg(0, rm * 2); + tmp = gen_vfp_mrs(); + store_reg(s, rd, tmp); + gen_mov_F0_vreg(0, rm * 2 + 1); + tmp = gen_vfp_mrs(); + store_reg(s, rn, tmp); + } else { + gen_mov_F0_vreg(0, rm); + tmp = gen_vfp_mrs(); + store_reg(s, rn, tmp); + gen_mov_F0_vreg(0, rm + 1); + tmp = gen_vfp_mrs(); + store_reg(s, rd, tmp); + } + } else { + /* arm->vfp */ + if (dp) { + tmp = load_reg(s, rd); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm * 2); + tmp = load_reg(s, rn); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm * 2 + 1); + } else { + tmp = load_reg(s, rn); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm); + tmp = load_reg(s, rd); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm + 1); + } + } + } else { + /* Load/store */ + rn = (insn >> 16) & 0xf; + if (dp) + VFP_DREG_D(rd, insn); + else + rd = VFP_SREG_D(insn); + if (s->thumb && rn == 15) { + addr = new_tmp(); + tcg_gen_movi_i32(addr, s->pc & ~2); + } else { + addr = load_reg(s, rn); + } + if ((insn & 0x01200000) == 0x01000000) { + /* Single load/store */ + offset = (insn & 0xff) << 2; + if ((insn & (1 << 23)) == 0) + offset = -offset; + tcg_gen_addi_i32(addr, addr, offset); + if (insn & (1 << 20)) { + gen_vfp_ld(s, dp, addr); + gen_mov_vreg_F0(dp, rd); + } else { + gen_mov_F0_vreg(dp, rd); + gen_vfp_st(s, dp, addr); + } + dead_tmp(addr); + } else { + /* load/store multiple */ + if (dp) + n = (insn >> 1) & 0x7f; + else + n = insn & 0xff; + + if (insn & (1 << 24)) /* pre-decrement */ + tcg_gen_addi_i32(addr, addr, -((insn & 0xff) << 2)); + + if (dp) + offset = 8; + else + offset = 4; + for (i = 0; i < n; i++) { + if (insn & ARM_CP_RW_BIT) { + /* load */ + gen_vfp_ld(s, dp, addr); + gen_mov_vreg_F0(dp, rd + i); + } else { + /* store */ + gen_mov_F0_vreg(dp, rd + i); + gen_vfp_st(s, dp, addr); + } + tcg_gen_addi_i32(addr, addr, offset); + } + if (insn & (1 << 21)) { + /* writeback */ + if (insn & (1 << 24)) + offset = -offset * n; + else if (dp && (insn & 1)) + offset = 4; + else + offset = 0; + + if (offset != 0) + tcg_gen_addi_i32(addr, addr, offset); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } + } + break; + default: + /* Should never happen. */ + return 1; + } + return 0; +} + +static inline void gen_goto_tb(DisasContext *s, int n, uint32_t dest) +{ + TranslationBlock *tb; + + tb = s->tb; + if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) { + tcg_gen_goto_tb(n); + gen_set_pc_im(dest); + tcg_gen_exit_tb((long)tb + n); + } else { + gen_set_pc_im(dest); + tcg_gen_exit_tb(0); + } +} + +static inline void gen_jmp (DisasContext *s, uint32_t dest) +{ + if (unlikely(s->singlestep_enabled)) { + /* An indirect jump so that we still trigger the debug exception. */ + if (s->thumb) + dest |= 1; + gen_bx_im(s, dest); + } else { + gen_goto_tb(s, 0, dest); + s->is_jmp = DISAS_TB_JUMP; + } +} + +static inline void gen_mulxy(TCGv t0, TCGv t1, int x, int y) +{ + if (x) + tcg_gen_sari_i32(t0, t0, 16); + else + gen_sxth(t0); + if (y) + tcg_gen_sari_i32(t1, t1, 16); + else + gen_sxth(t1); + tcg_gen_mul_i32(t0, t0, t1); +} + +/* Return the mask of PSR bits set by a MSR instruction. */ +static uint32_t msr_mask(CPUState *env, DisasContext *s, int flags, int spsr) { + uint32_t mask; + + mask = 0; + if (flags & (1 << 0)) + mask |= 0xff; + if (flags & (1 << 1)) + mask |= 0xff00; + if (flags & (1 << 2)) + mask |= 0xff0000; + if (flags & (1 << 3)) + mask |= 0xff000000; + + /* Mask out undefined bits. */ + mask &= ~CPSR_RESERVED; + if (!arm_feature(env, ARM_FEATURE_V6)) + mask &= ~(CPSR_E | CPSR_GE); + if (!arm_feature(env, ARM_FEATURE_THUMB2)) + mask &= ~CPSR_IT; + /* Mask out execution state bits. */ + if (!spsr) + mask &= ~CPSR_EXEC; + /* Mask out privileged bits. */ + if (IS_USER(s)) + mask &= CPSR_USER; + return mask; +} + +/* Returns nonzero if access to the PSR is not permitted. Marks t0 as dead. */ +static int gen_set_psr(DisasContext *s, uint32_t mask, int spsr, TCGv t0) +{ + TCGv tmp; + if (spsr) { + /* ??? This is also undefined in system mode. */ + if (IS_USER(s)) + return 1; + + tmp = load_cpu_field(spsr); + tcg_gen_andi_i32(tmp, tmp, ~mask); + tcg_gen_andi_i32(t0, t0, mask); + tcg_gen_or_i32(tmp, tmp, t0); + store_cpu_field(tmp, spsr); + } else { + gen_set_cpsr(t0, mask); + } + dead_tmp(t0); + gen_lookup_tb(s); + return 0; +} + +/* Returns nonzero if access to the PSR is not permitted. */ +static int gen_set_psr_im(DisasContext *s, uint32_t mask, int spsr, uint32_t val) +{ + TCGv tmp; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + return gen_set_psr(s, mask, spsr, tmp); +} + +/* Generate an old-style exception return. Marks pc as dead. */ +static void gen_exception_return(DisasContext *s, TCGv pc) +{ + TCGv tmp; + store_reg(s, 15, pc); + tmp = load_cpu_field(spsr); + gen_set_cpsr(tmp, 0xffffffff); + dead_tmp(tmp); + s->is_jmp = DISAS_UPDATE; +} + +/* Generate a v6 exception return. Marks both values as dead. */ +static void gen_rfe(DisasContext *s, TCGv pc, TCGv cpsr) +{ + gen_set_cpsr(cpsr, 0xffffffff); + dead_tmp(cpsr); + store_reg(s, 15, pc); + s->is_jmp = DISAS_UPDATE; +} + +static inline void +gen_set_condexec (DisasContext *s) +{ + if (s->condexec_mask) { + uint32_t val = (s->condexec_cond << 4) | (s->condexec_mask >> 1); + TCGv tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + store_cpu_field(tmp, condexec_bits); + } +} + +static void gen_nop_hint(DisasContext *s, int val) +{ + switch (val) { + case 3: /* wfi */ + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_WFI; + break; + case 2: /* wfe */ + case 4: /* sev */ + /* TODO: Implement SEV and WFE. May help SMP performance. */ + default: /* nop */ + break; + } +} + +#define CPU_V001 cpu_V0, cpu_V0, cpu_V1 + +static inline int gen_neon_add(int size, TCGv t0, TCGv t1) +{ + switch (size) { + case 0: gen_helper_neon_add_u8(t0, t0, t1); break; + case 1: gen_helper_neon_add_u16(t0, t0, t1); break; + case 2: tcg_gen_add_i32(t0, t0, t1); break; + default: return 1; + } + return 0; +} + +static inline void gen_neon_rsb(int size, TCGv t0, TCGv t1) +{ + switch (size) { + case 0: gen_helper_neon_sub_u8(t0, t1, t0); break; + case 1: gen_helper_neon_sub_u16(t0, t1, t0); break; + case 2: tcg_gen_sub_i32(t0, t1, t0); break; + default: return; + } +} + +/* 32-bit pairwise ops end up the same as the elementwise versions. */ +#define gen_helper_neon_pmax_s32 gen_helper_neon_max_s32 +#define gen_helper_neon_pmax_u32 gen_helper_neon_max_u32 +#define gen_helper_neon_pmin_s32 gen_helper_neon_min_s32 +#define gen_helper_neon_pmin_u32 gen_helper_neon_min_u32 + +/* FIXME: This is wrong. They set the wrong overflow bit. */ +#define gen_helper_neon_qadd_s32(a, e, b, c) gen_helper_add_saturate(a, b, c) +#define gen_helper_neon_qadd_u32(a, e, b, c) gen_helper_add_usaturate(a, b, c) +#define gen_helper_neon_qsub_s32(a, e, b, c) gen_helper_sub_saturate(a, b, c) +#define gen_helper_neon_qsub_u32(a, e, b, c) gen_helper_sub_usaturate(a, b, c) + +#define GEN_NEON_INTEGER_OP_ENV(name) do { \ + switch ((size << 1) | u) { \ + case 0: \ + gen_helper_neon_##name##_s8(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 1: \ + gen_helper_neon_##name##_u8(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 2: \ + gen_helper_neon_##name##_s16(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 3: \ + gen_helper_neon_##name##_u16(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 4: \ + gen_helper_neon_##name##_s32(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 5: \ + gen_helper_neon_##name##_u32(tmp, cpu_env, tmp, tmp2); \ + break; \ + default: return 1; \ + }} while (0) + +#define GEN_NEON_INTEGER_OP(name) do { \ + switch ((size << 1) | u) { \ + case 0: \ + gen_helper_neon_##name##_s8(tmp, tmp, tmp2); \ + break; \ + case 1: \ + gen_helper_neon_##name##_u8(tmp, tmp, tmp2); \ + break; \ + case 2: \ + gen_helper_neon_##name##_s16(tmp, tmp, tmp2); \ + break; \ + case 3: \ + gen_helper_neon_##name##_u16(tmp, tmp, tmp2); \ + break; \ + case 4: \ + gen_helper_neon_##name##_s32(tmp, tmp, tmp2); \ + break; \ + case 5: \ + gen_helper_neon_##name##_u32(tmp, tmp, tmp2); \ + break; \ + default: return 1; \ + }} while (0) + +static TCGv neon_load_scratch(int scratch) +{ + TCGv tmp = new_tmp(); + tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, vfp.scratch[scratch])); + return tmp; +} + +static void neon_store_scratch(int scratch, TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, offsetof(CPUARMState, vfp.scratch[scratch])); + dead_tmp(var); +} + +static inline TCGv neon_get_scalar(int size, int reg) +{ + TCGv tmp; + if (size == 1) { + tmp = neon_load_reg(reg >> 1, reg & 1); + } else { + tmp = neon_load_reg(reg >> 2, (reg >> 1) & 1); + if (reg & 1) { + gen_neon_dup_low16(tmp); + } else { + gen_neon_dup_high16(tmp); + } + } + return tmp; +} + +static void gen_neon_unzip_u8(TCGv t0, TCGv t1) +{ + TCGv rd, rm, tmp; + + rd = new_tmp(); + rm = new_tmp(); + tmp = new_tmp(); + + tcg_gen_andi_i32(rd, t0, 0xff); + tcg_gen_shri_i32(tmp, t0, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t1, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff000000); + tcg_gen_or_i32(rd, rd, tmp); + + tcg_gen_shri_i32(rm, t0, 8); + tcg_gen_andi_i32(rm, rm, 0xff); + tcg_gen_shri_i32(tmp, t0, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_shli_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_andi_i32(tmp, t1, 0xff000000); + tcg_gen_or_i32(t1, rm, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rm); + dead_tmp(rd); +} + +static void gen_neon_zip_u8(TCGv t0, TCGv t1) +{ + TCGv rd, rm, tmp; + + rd = new_tmp(); + rm = new_tmp(); + tmp = new_tmp(); + + tcg_gen_andi_i32(rd, t0, 0xff); + tcg_gen_shli_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t0, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t1, 24); + tcg_gen_andi_i32(tmp, tmp, 0xff000000); + tcg_gen_or_i32(rd, rd, tmp); + + tcg_gen_andi_i32(rm, t1, 0xff000000); + tcg_gen_shri_i32(tmp, t0, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_shri_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_shri_i32(tmp, t0, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff); + tcg_gen_or_i32(t1, rm, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rm); + dead_tmp(rd); +} + +static void gen_neon_zip_u16(TCGv t0, TCGv t1) +{ + TCGv tmp, tmp2; + + tmp = new_tmp(); + tmp2 = new_tmp(); + + tcg_gen_andi_i32(tmp, t0, 0xffff); + tcg_gen_shli_i32(tmp2, t1, 16); + tcg_gen_or_i32(tmp, tmp, tmp2); + tcg_gen_andi_i32(t1, t1, 0xffff0000); + tcg_gen_shri_i32(tmp2, t0, 16); + tcg_gen_or_i32(t1, t1, tmp2); + tcg_gen_mov_i32(t0, tmp); + + dead_tmp(tmp2); + dead_tmp(tmp); +} + +static void gen_neon_unzip(int reg, int q, int tmp, int size) +{ + int n; + TCGv t0, t1; + + for (n = 0; n < q + 1; n += 2) { + t0 = neon_load_reg(reg, n); + t1 = neon_load_reg(reg, n + 1); + switch (size) { + case 0: gen_neon_unzip_u8(t0, t1); break; + case 1: gen_neon_zip_u16(t0, t1); break; /* zip and unzip are the same. */ + case 2: /* no-op */; break; + default: abort(); + } + neon_store_scratch(tmp + n, t0); + neon_store_scratch(tmp + n + 1, t1); + } +} + +static void gen_neon_trn_u8(TCGv t0, TCGv t1) +{ + TCGv rd, tmp; + + rd = new_tmp(); + tmp = new_tmp(); + + tcg_gen_shli_i32(rd, t0, 8); + tcg_gen_andi_i32(rd, rd, 0xff00ff00); + tcg_gen_andi_i32(tmp, t1, 0x00ff00ff); + tcg_gen_or_i32(rd, rd, tmp); + + tcg_gen_shri_i32(t1, t1, 8); + tcg_gen_andi_i32(t1, t1, 0x00ff00ff); + tcg_gen_andi_i32(tmp, t0, 0xff00ff00); + tcg_gen_or_i32(t1, t1, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rd); +} + +static void gen_neon_trn_u16(TCGv t0, TCGv t1) +{ + TCGv rd, tmp; + + rd = new_tmp(); + tmp = new_tmp(); + + tcg_gen_shli_i32(rd, t0, 16); + tcg_gen_andi_i32(tmp, t1, 0xffff); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shri_i32(t1, t1, 16); + tcg_gen_andi_i32(tmp, t0, 0xffff0000); + tcg_gen_or_i32(t1, t1, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rd); +} + + +static struct { + int nregs; + int interleave; + int spacing; +} neon_ls_element_type[11] = { + {4, 4, 1}, + {4, 4, 2}, + {4, 1, 1}, + {4, 2, 1}, + {3, 3, 1}, + {3, 3, 2}, + {3, 1, 1}, + {1, 1, 1}, + {2, 2, 1}, + {2, 2, 2}, + {2, 1, 1} +}; + +/* Translate a NEON load/store element instruction. Return nonzero if the + instruction is invalid. */ +static int disas_neon_ls_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + int rd, rn, rm; + int op; + int nregs; + int interleave; + int spacing; + int stride; + int size; + int reg; + int pass; + int load; + int shift; + int n; + TCGv addr; + TCGv tmp; + TCGv tmp2; + TCGv_i64 tmp64; + + if (!vfp_enabled(env)) + return 1; + VFP_DREG_D(rd, insn); + rn = (insn >> 16) & 0xf; + rm = insn & 0xf; + load = (insn & (1 << 21)) != 0; + addr = new_tmp(); + if ((insn & (1 << 23)) == 0) { + /* Load store all elements. */ + op = (insn >> 8) & 0xf; + size = (insn >> 6) & 3; + if (op > 10) + return 1; + nregs = neon_ls_element_type[op].nregs; + interleave = neon_ls_element_type[op].interleave; + spacing = neon_ls_element_type[op].spacing; + if (size == 3 && (interleave | spacing) != 1) + return 1; + load_reg_var(s, addr, rn); + stride = (1 << size) * interleave; + for (reg = 0; reg < nregs; reg++) { + if (interleave > 2 || (interleave == 2 && nregs == 2)) { + load_reg_var(s, addr, rn); + tcg_gen_addi_i32(addr, addr, (1 << size) * reg); + } else if (interleave == 2 && nregs == 4 && reg == 2) { + load_reg_var(s, addr, rn); + tcg_gen_addi_i32(addr, addr, 1 << size); + } + if (size == 3) { + if (load) { + tmp64 = gen_ld64(addr, IS_USER(s)); + neon_store_reg64(tmp64, rd); + tcg_temp_free_i64(tmp64); + } else { + tmp64 = tcg_temp_new_i64(); + neon_load_reg64(tmp64, rd); + gen_st64(tmp64, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, stride); + } else { + for (pass = 0; pass < 2; pass++) { + if (size == 2) { + if (load) { + tmp = gen_ld32(addr, IS_USER(s)); + neon_store_reg(rd, pass, tmp); + } else { + tmp = neon_load_reg(rd, pass); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, stride); + } else if (size == 1) { + if (load) { + tmp = gen_ld16u(addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + tmp2 = gen_ld16u(addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + gen_bfi(tmp, tmp, tmp2, 16, 0xffff); + dead_tmp(tmp2); + neon_store_reg(rd, pass, tmp); + } else { + tmp = neon_load_reg(rd, pass); + tmp2 = new_tmp(); + tcg_gen_shri_i32(tmp2, tmp, 16); + gen_st16(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + gen_st16(tmp2, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + } + } else /* size == 0 */ { + if (load) { + TCGV_UNUSED(tmp2); + for (n = 0; n < 4; n++) { + tmp = gen_ld8u(addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + if (n == 0) { + tmp2 = tmp; + } else { + gen_bfi(tmp2, tmp2, tmp, n * 8, 0xff); + dead_tmp(tmp); + } + } + neon_store_reg(rd, pass, tmp2); + } else { + tmp2 = neon_load_reg(rd, pass); + for (n = 0; n < 4; n++) { + tmp = new_tmp(); + if (n == 0) { + tcg_gen_mov_i32(tmp, tmp2); + } else { + tcg_gen_shri_i32(tmp, tmp2, n * 8); + } + gen_st8(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + } + dead_tmp(tmp2); + } + } + } + } + rd += spacing; + } + stride = nregs * 8; + } else { + size = (insn >> 10) & 3; + if (size == 3) { + /* Load single element to all lanes. */ + if (!load) + return 1; + size = (insn >> 6) & 3; + nregs = ((insn >> 8) & 3) + 1; + stride = (insn & (1 << 5)) ? 2 : 1; + load_reg_var(s, addr, rn); + for (reg = 0; reg < nregs; reg++) { + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + gen_neon_dup_u8(tmp, 0); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + gen_neon_dup_low16(tmp); + break; + case 2: + tmp = gen_ld32(addr, IS_USER(s)); + break; + case 3: + return 1; + default: /* Avoid compiler warnings. */ + abort(); + } + tcg_gen_addi_i32(addr, addr, 1 << size); + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + neon_store_reg(rd, 0, tmp2); + neon_store_reg(rd, 1, tmp); + rd += stride; + } + stride = (1 << size) * nregs; + } else { + /* Single element. */ + pass = (insn >> 7) & 1; + switch (size) { + case 0: + shift = ((insn >> 5) & 3) * 8; + stride = 1; + break; + case 1: + shift = ((insn >> 6) & 1) * 16; + stride = (insn & (1 << 5)) ? 2 : 1; + break; + case 2: + shift = 0; + stride = (insn & (1 << 6)) ? 2 : 1; + break; + default: + abort(); + } + nregs = ((insn >> 8) & 3) + 1; + load_reg_var(s, addr, rn); + for (reg = 0; reg < nregs; reg++) { + if (load) { + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + tmp = gen_ld32(addr, IS_USER(s)); + break; + default: /* Avoid compiler warnings. */ + abort(); + } + if (size != 2) { + tmp2 = neon_load_reg(rd, pass); + gen_bfi(tmp, tmp2, tmp, shift, size ? 0xffff : 0xff); + dead_tmp(tmp2); + } + neon_store_reg(rd, pass, tmp); + } else { /* Store */ + tmp = neon_load_reg(rd, pass); + if (shift) + tcg_gen_shri_i32(tmp, tmp, shift); + switch (size) { + case 0: + gen_st8(tmp, addr, IS_USER(s)); + break; + case 1: + gen_st16(tmp, addr, IS_USER(s)); + break; + case 2: + gen_st32(tmp, addr, IS_USER(s)); + break; + } + } + rd += stride; + tcg_gen_addi_i32(addr, addr, 1 << size); + } + stride = nregs * (1 << size); + } + } + dead_tmp(addr); + if (rm != 15) { + TCGv base; + + base = load_reg(s, rn); + if (rm == 13) { + tcg_gen_addi_i32(base, base, stride); + } else { + TCGv index; + index = load_reg(s, rm); + tcg_gen_add_i32(base, base, index); + dead_tmp(index); + } + store_reg(s, rn, base); + } + return 0; +} + +/* Bitwise select. dest = c ? t : f. Clobbers T and F. */ +static void gen_neon_bsl(TCGv dest, TCGv t, TCGv f, TCGv c) +{ + tcg_gen_and_i32(t, t, c); + tcg_gen_andc_i32(f, f, c); + tcg_gen_or_i32(dest, t, f); +} + +static inline void gen_neon_narrow(int size, TCGv dest, TCGv_i64 src) +{ + switch (size) { + case 0: gen_helper_neon_narrow_u8(dest, src); break; + case 1: gen_helper_neon_narrow_u16(dest, src); break; + case 2: tcg_gen_trunc_i64_i32(dest, src); break; + default: abort(); + } +} + +static inline void gen_neon_narrow_sats(int size, TCGv dest, TCGv_i64 src) +{ + switch (size) { + case 0: gen_helper_neon_narrow_sat_s8(dest, cpu_env, src); break; + case 1: gen_helper_neon_narrow_sat_s16(dest, cpu_env, src); break; + case 2: gen_helper_neon_narrow_sat_s32(dest, cpu_env, src); break; + default: abort(); + } +} + +static inline void gen_neon_narrow_satu(int size, TCGv dest, TCGv_i64 src) +{ + switch (size) { + case 0: gen_helper_neon_narrow_sat_u8(dest, cpu_env, src); break; + case 1: gen_helper_neon_narrow_sat_u16(dest, cpu_env, src); break; + case 2: gen_helper_neon_narrow_sat_u32(dest, cpu_env, src); break; + default: abort(); + } +} + +static inline void gen_neon_shift_narrow(int size, TCGv var, TCGv shift, + int q, int u) +{ + if (q) { + if (u) { + switch (size) { + case 1: gen_helper_neon_rshl_u16(var, var, shift); break; + case 2: gen_helper_neon_rshl_u32(var, var, shift); break; + default: abort(); + } + } else { + switch (size) { + case 1: gen_helper_neon_rshl_s16(var, var, shift); break; + case 2: gen_helper_neon_rshl_s32(var, var, shift); break; + default: abort(); + } + } + } else { + if (u) { + switch (size) { + case 1: gen_helper_neon_rshl_u16(var, var, shift); break; + case 2: gen_helper_neon_rshl_u32(var, var, shift); break; + default: abort(); + } + } else { + switch (size) { + case 1: gen_helper_neon_shl_s16(var, var, shift); break; + case 2: gen_helper_neon_shl_s32(var, var, shift); break; + default: abort(); + } + } + } +} + +static inline void gen_neon_widen(TCGv_i64 dest, TCGv src, int size, int u) +{ + if (u) { + switch (size) { + case 0: gen_helper_neon_widen_u8(dest, src); break; + case 1: gen_helper_neon_widen_u16(dest, src); break; + case 2: tcg_gen_extu_i32_i64(dest, src); break; + default: abort(); + } + } else { + switch (size) { + case 0: gen_helper_neon_widen_s8(dest, src); break; + case 1: gen_helper_neon_widen_s16(dest, src); break; + case 2: tcg_gen_ext_i32_i64(dest, src); break; + default: abort(); + } + } + dead_tmp(src); +} + +static inline void gen_neon_addl(int size) +{ + switch (size) { + case 0: gen_helper_neon_addl_u16(CPU_V001); break; + case 1: gen_helper_neon_addl_u32(CPU_V001); break; + case 2: tcg_gen_add_i64(CPU_V001); break; + default: abort(); + } +} + +static inline void gen_neon_subl(int size) +{ + switch (size) { + case 0: gen_helper_neon_subl_u16(CPU_V001); break; + case 1: gen_helper_neon_subl_u32(CPU_V001); break; + case 2: tcg_gen_sub_i64(CPU_V001); break; + default: abort(); + } +} + +static inline void gen_neon_negl(TCGv_i64 var, int size) +{ + switch (size) { + case 0: gen_helper_neon_negl_u16(var, var); break; + case 1: gen_helper_neon_negl_u32(var, var); break; + case 2: gen_helper_neon_negl_u64(var, var); break; + default: abort(); + } +} + +static inline void gen_neon_addl_saturate(TCGv_i64 op0, TCGv_i64 op1, int size) +{ + switch (size) { + case 1: gen_helper_neon_addl_saturate_s32(op0, cpu_env, op0, op1); break; + case 2: gen_helper_neon_addl_saturate_s64(op0, cpu_env, op0, op1); break; + default: abort(); + } +} + +static inline void gen_neon_mull(TCGv_i64 dest, TCGv a, TCGv b, int size, int u) +{ + TCGv_i64 tmp; + + switch ((size << 1) | u) { + case 0: gen_helper_neon_mull_s8(dest, a, b); break; + case 1: gen_helper_neon_mull_u8(dest, a, b); break; + case 2: gen_helper_neon_mull_s16(dest, a, b); break; + case 3: gen_helper_neon_mull_u16(dest, a, b); break; + case 4: + tmp = gen_muls_i64_i32(a, b); + tcg_gen_mov_i64(dest, tmp); + break; + case 5: + tmp = gen_mulu_i64_i32(a, b); + tcg_gen_mov_i64(dest, tmp); + break; + default: abort(); + } +} + +/* Translate a NEON data processing instruction. Return nonzero if the + instruction is invalid. + We process data in a mixture of 32-bit and 64-bit chunks. + Mostly we use 32-bit chunks so we can use normal scalar instructions. */ + +static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + int op; + int q; + int rd, rn, rm; + int size; + int shift; + int pass; + int count; + int pairwise; + int u; + int n; + uint32_t imm, mask; + TCGv tmp, tmp2, tmp3, tmp4, tmp5; + TCGv_i64 tmp64; + + if (!vfp_enabled(env)) + return 1; + q = (insn & (1 << 6)) != 0; + u = (insn >> 24) & 1; + VFP_DREG_D(rd, insn); + VFP_DREG_N(rn, insn); + VFP_DREG_M(rm, insn); + size = (insn >> 20) & 3; + if ((insn & (1 << 23)) == 0) { + /* Three register same length. */ + op = ((insn >> 7) & 0x1e) | ((insn >> 4) & 1); + if (size == 3 && (op == 1 || op == 5 || op == 8 || op == 9 + || op == 10 || op == 11 || op == 16)) { + /* 64-bit element instructions. */ + for (pass = 0; pass < (q ? 2 : 1); pass++) { + neon_load_reg64(cpu_V0, rn + pass); + neon_load_reg64(cpu_V1, rm + pass); + switch (op) { + case 1: /* VQADD */ + if (u) { + gen_helper_neon_add_saturate_u64(CPU_V001); + } else { + gen_helper_neon_add_saturate_s64(CPU_V001); + } + break; + case 5: /* VQSUB */ + if (u) { + gen_helper_neon_sub_saturate_u64(CPU_V001); + } else { + gen_helper_neon_sub_saturate_s64(CPU_V001); + } + break; + case 8: /* VSHL */ + if (u) { + gen_helper_neon_shl_u64(cpu_V0, cpu_V1, cpu_V0); + } else { + gen_helper_neon_shl_s64(cpu_V0, cpu_V1, cpu_V0); + } + break; + case 9: /* VQSHL */ + if (u) { + gen_helper_neon_qshl_u64(cpu_V0, cpu_env, + cpu_V0, cpu_V0); + } else { + gen_helper_neon_qshl_s64(cpu_V1, cpu_env, + cpu_V1, cpu_V0); + } + break; + case 10: /* VRSHL */ + if (u) { + gen_helper_neon_rshl_u64(cpu_V0, cpu_V1, cpu_V0); + } else { + gen_helper_neon_rshl_s64(cpu_V0, cpu_V1, cpu_V0); + } + break; + case 11: /* VQRSHL */ + if (u) { + gen_helper_neon_qrshl_u64(cpu_V0, cpu_env, + cpu_V1, cpu_V0); + } else { + gen_helper_neon_qrshl_s64(cpu_V0, cpu_env, + cpu_V1, cpu_V0); + } + break; + case 16: + if (u) { + tcg_gen_sub_i64(CPU_V001); + } else { + tcg_gen_add_i64(CPU_V001); + } + break; + default: + abort(); + } + neon_store_reg64(cpu_V0, rd + pass); + } + return 0; + } + switch (op) { + case 8: /* VSHL */ + case 9: /* VQSHL */ + case 10: /* VRSHL */ + case 11: /* VQRSHL */ + { + int rtmp; + /* Shift instruction operands are reversed. */ + rtmp = rn; + rn = rm; + rm = rtmp; + pairwise = 0; + } + break; + case 20: /* VPMAX */ + case 21: /* VPMIN */ + case 23: /* VPADD */ + pairwise = 1; + break; + case 26: /* VPADD (float) */ + pairwise = (u && size < 2); + break; + case 30: /* VPMIN/VPMAX (float) */ + pairwise = u; + break; + default: + pairwise = 0; + break; + } + + for (pass = 0; pass < (q ? 4 : 2); pass++) { + + if (pairwise) { + /* Pairwise. */ + if (q) + n = (pass & 1) * 2; + else + n = 0; + if (pass < q + 1) { + tmp = neon_load_reg(rn, n); + tmp2 = neon_load_reg(rn, n + 1); + } else { + tmp = neon_load_reg(rm, n); + tmp2 = neon_load_reg(rm, n + 1); + } + } else { + /* Elementwise. */ + tmp = neon_load_reg(rn, pass); + tmp2 = neon_load_reg(rm, pass); + } + switch (op) { + case 0: /* VHADD */ + GEN_NEON_INTEGER_OP(hadd); + break; + case 1: /* VQADD */ + GEN_NEON_INTEGER_OP_ENV(qadd); + break; + case 2: /* VRHADD */ + GEN_NEON_INTEGER_OP(rhadd); + break; + case 3: /* Logic ops. */ + switch ((u << 2) | size) { + case 0: /* VAND */ + tcg_gen_and_i32(tmp, tmp, tmp2); + break; + case 1: /* BIC */ + tcg_gen_andc_i32(tmp, tmp, tmp2); + break; + case 2: /* VORR */ + tcg_gen_or_i32(tmp, tmp, tmp2); + break; + case 3: /* VORN */ + tcg_gen_orc_i32(tmp, tmp, tmp2); + break; + case 4: /* VEOR */ + tcg_gen_xor_i32(tmp, tmp, tmp2); + break; + case 5: /* VBSL */ + tmp3 = neon_load_reg(rd, pass); + gen_neon_bsl(tmp, tmp, tmp2, tmp3); + dead_tmp(tmp3); + break; + case 6: /* VBIT */ + tmp3 = neon_load_reg(rd, pass); + gen_neon_bsl(tmp, tmp, tmp3, tmp2); + dead_tmp(tmp3); + break; + case 7: /* VBIF */ + tmp3 = neon_load_reg(rd, pass); + gen_neon_bsl(tmp, tmp3, tmp, tmp2); + dead_tmp(tmp3); + break; + } + break; + case 4: /* VHSUB */ + GEN_NEON_INTEGER_OP(hsub); + break; + case 5: /* VQSUB */ + GEN_NEON_INTEGER_OP_ENV(qsub); + break; + case 6: /* VCGT */ + GEN_NEON_INTEGER_OP(cgt); + break; + case 7: /* VCGE */ + GEN_NEON_INTEGER_OP(cge); + break; + case 8: /* VSHL */ + GEN_NEON_INTEGER_OP(shl); + break; + case 9: /* VQSHL */ + GEN_NEON_INTEGER_OP_ENV(qshl); + break; + case 10: /* VRSHL */ + GEN_NEON_INTEGER_OP(rshl); + break; + case 11: /* VQRSHL */ + GEN_NEON_INTEGER_OP_ENV(qrshl); + break; + case 12: /* VMAX */ + GEN_NEON_INTEGER_OP(max); + break; + case 13: /* VMIN */ + GEN_NEON_INTEGER_OP(min); + break; + case 14: /* VABD */ + GEN_NEON_INTEGER_OP(abd); + break; + case 15: /* VABA */ + GEN_NEON_INTEGER_OP(abd); + dead_tmp(tmp2); + tmp2 = neon_load_reg(rd, pass); + gen_neon_add(size, tmp, tmp2); + break; + case 16: + if (!u) { /* VADD */ + if (gen_neon_add(size, tmp, tmp2)) + return 1; + } else { /* VSUB */ + switch (size) { + case 0: gen_helper_neon_sub_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_sub_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_sub_i32(tmp, tmp, tmp2); break; + default: return 1; + } + } + break; + case 17: + if (!u) { /* VTST */ + switch (size) { + case 0: gen_helper_neon_tst_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_tst_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_tst_u32(tmp, tmp, tmp2); break; + default: return 1; + } + } else { /* VCEQ */ + switch (size) { + case 0: gen_helper_neon_ceq_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_ceq_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_ceq_u32(tmp, tmp, tmp2); break; + default: return 1; + } + } + break; + case 18: /* Multiply. */ + switch (size) { + case 0: gen_helper_neon_mul_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_mul_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_mul_i32(tmp, tmp, tmp2); break; + default: return 1; + } + dead_tmp(tmp2); + tmp2 = neon_load_reg(rd, pass); + if (u) { /* VMLS */ + gen_neon_rsb(size, tmp, tmp2); + } else { /* VMLA */ + gen_neon_add(size, tmp, tmp2); + } + break; + case 19: /* VMUL */ + if (u) { /* polynomial */ + gen_helper_neon_mul_p8(tmp, tmp, tmp2); + } else { /* Integer */ + switch (size) { + case 0: gen_helper_neon_mul_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_mul_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_mul_i32(tmp, tmp, tmp2); break; + default: return 1; + } + } + break; + case 20: /* VPMAX */ + GEN_NEON_INTEGER_OP(pmax); + break; + case 21: /* VPMIN */ + GEN_NEON_INTEGER_OP(pmin); + break; + case 22: /* Hultiply high. */ + if (!u) { /* VQDMULH */ + switch (size) { + case 1: gen_helper_neon_qdmulh_s16(tmp, cpu_env, tmp, tmp2); break; + case 2: gen_helper_neon_qdmulh_s32(tmp, cpu_env, tmp, tmp2); break; + default: return 1; + } + } else { /* VQRDHMUL */ + switch (size) { + case 1: gen_helper_neon_qrdmulh_s16(tmp, cpu_env, tmp, tmp2); break; + case 2: gen_helper_neon_qrdmulh_s32(tmp, cpu_env, tmp, tmp2); break; + default: return 1; + } + } + break; + case 23: /* VPADD */ + if (u) + return 1; + switch (size) { + case 0: gen_helper_neon_padd_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_padd_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_add_i32(tmp, tmp, tmp2); break; + default: return 1; + } + break; + case 26: /* Floating point arithnetic. */ + switch ((u << 2) | size) { + case 0: /* VADD */ + gen_helper_neon_add_f32(tmp, tmp, tmp2); + break; + case 2: /* VSUB */ + gen_helper_neon_sub_f32(tmp, tmp, tmp2); + break; + case 4: /* VPADD */ + gen_helper_neon_add_f32(tmp, tmp, tmp2); + break; + case 6: /* VABD */ + gen_helper_neon_abd_f32(tmp, tmp, tmp2); + break; + default: + return 1; + } + break; + case 27: /* Float multiply. */ + gen_helper_neon_mul_f32(tmp, tmp, tmp2); + if (!u) { + dead_tmp(tmp2); + tmp2 = neon_load_reg(rd, pass); + if (size == 0) { + gen_helper_neon_add_f32(tmp, tmp, tmp2); + } else { + gen_helper_neon_sub_f32(tmp, tmp2, tmp); + } + } + break; + case 28: /* Float compare. */ + if (!u) { + gen_helper_neon_ceq_f32(tmp, tmp, tmp2); + } else { + if (size == 0) + gen_helper_neon_cge_f32(tmp, tmp, tmp2); + else + gen_helper_neon_cgt_f32(tmp, tmp, tmp2); + } + break; + case 29: /* Float compare absolute. */ + if (!u) + return 1; + if (size == 0) + gen_helper_neon_acge_f32(tmp, tmp, tmp2); + else + gen_helper_neon_acgt_f32(tmp, tmp, tmp2); + break; + case 30: /* Float min/max. */ + if (size == 0) + gen_helper_neon_max_f32(tmp, tmp, tmp2); + else + gen_helper_neon_min_f32(tmp, tmp, tmp2); + break; + case 31: + if (size == 0) + gen_helper_recps_f32(tmp, tmp, tmp2, cpu_env); + else + gen_helper_rsqrts_f32(tmp, tmp, tmp2, cpu_env); + break; + default: + abort(); + } + dead_tmp(tmp2); + + /* Save the result. For elementwise operations we can put it + straight into the destination register. For pairwise operations + we have to be careful to avoid clobbering the source operands. */ + if (pairwise && rd == rm) { + neon_store_scratch(pass, tmp); + } else { + neon_store_reg(rd, pass, tmp); + } + + } /* for pass */ + if (pairwise && rd == rm) { + for (pass = 0; pass < (q ? 4 : 2); pass++) { + tmp = neon_load_scratch(pass); + neon_store_reg(rd, pass, tmp); + } + } + /* End of 3 register same size operations. */ + } else if (insn & (1 << 4)) { + if ((insn & 0x00380080) != 0) { + /* Two registers and shift. */ + op = (insn >> 8) & 0xf; + if (insn & (1 << 7)) { + /* 64-bit shift. */ + size = 3; + } else { + size = 2; + while ((insn & (1 << (size + 19))) == 0) + size--; + } + shift = (insn >> 16) & ((1 << (3 + size)) - 1); + /* To avoid excessive dumplication of ops we implement shift + by immediate using the variable shift operations. */ + if (op < 8) { + /* Shift by immediate: + VSHR, VSRA, VRSHR, VRSRA, VSRI, VSHL, VQSHL, VQSHLU. */ + /* Right shifts are encoded as N - shift, where N is the + element size in bits. */ + if (op <= 4) + shift = shift - (1 << (size + 3)); + if (size == 3) { + count = q + 1; + } else { + count = q ? 4: 2; + } + switch (size) { + case 0: + imm = (uint8_t) shift; + imm |= imm << 8; + imm |= imm << 16; + break; + case 1: + imm = (uint16_t) shift; + imm |= imm << 16; + break; + case 2: + case 3: + imm = shift; + break; + default: + abort(); + } + + for (pass = 0; pass < count; pass++) { + if (size == 3) { + neon_load_reg64(cpu_V0, rm + pass); + tcg_gen_movi_i64(cpu_V1, imm); + switch (op) { + case 0: /* VSHR */ + case 1: /* VSRA */ + if (u) + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, cpu_V1); + else + gen_helper_neon_shl_s64(cpu_V0, cpu_V0, cpu_V1); + break; + case 2: /* VRSHR */ + case 3: /* VRSRA */ + if (u) + gen_helper_neon_rshl_u64(cpu_V0, cpu_V0, cpu_V1); + else + gen_helper_neon_rshl_s64(cpu_V0, cpu_V0, cpu_V1); + break; + case 4: /* VSRI */ + if (!u) + return 1; + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, cpu_V1); + break; + case 5: /* VSHL, VSLI */ + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, cpu_V1); + break; + case 6: /* VQSHL */ + if (u) + gen_helper_neon_qshl_u64(cpu_V0, cpu_env, cpu_V0, cpu_V1); + else + gen_helper_neon_qshl_s64(cpu_V0, cpu_env, cpu_V0, cpu_V1); + break; + case 7: /* VQSHLU */ + gen_helper_neon_qshl_u64(cpu_V0, cpu_env, cpu_V0, cpu_V1); + break; + } + if (op == 1 || op == 3) { + /* Accumulate. */ + neon_load_reg64(cpu_V0, rd + pass); + tcg_gen_add_i64(cpu_V0, cpu_V0, cpu_V1); + } else if (op == 4 || (op == 5 && u)) { + /* Insert */ + cpu_abort(env, "VS[LR]I.64 not implemented"); + } + neon_store_reg64(cpu_V0, rd + pass); + } else { /* size < 3 */ + /* Operands in T0 and T1. */ + tmp = neon_load_reg(rm, pass); + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, imm); + switch (op) { + case 0: /* VSHR */ + case 1: /* VSRA */ + GEN_NEON_INTEGER_OP(shl); + break; + case 2: /* VRSHR */ + case 3: /* VRSRA */ + GEN_NEON_INTEGER_OP(rshl); + break; + case 4: /* VSRI */ + if (!u) + return 1; + GEN_NEON_INTEGER_OP(shl); + break; + case 5: /* VSHL, VSLI */ + switch (size) { + case 0: gen_helper_neon_shl_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_shl_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_shl_u32(tmp, tmp, tmp2); break; + default: return 1; + } + break; + case 6: /* VQSHL */ + GEN_NEON_INTEGER_OP_ENV(qshl); + break; + case 7: /* VQSHLU */ + switch (size) { + case 0: gen_helper_neon_qshl_u8(tmp, cpu_env, tmp, tmp2); break; + case 1: gen_helper_neon_qshl_u16(tmp, cpu_env, tmp, tmp2); break; + case 2: gen_helper_neon_qshl_u32(tmp, cpu_env, tmp, tmp2); break; + default: return 1; + } + break; + } + dead_tmp(tmp2); + + if (op == 1 || op == 3) { + /* Accumulate. */ + tmp2 = neon_load_reg(rd, pass); + gen_neon_add(size, tmp2, tmp); + dead_tmp(tmp2); + } else if (op == 4 || (op == 5 && u)) { + /* Insert */ + switch (size) { + case 0: + if (op == 4) + mask = 0xff >> -shift; + else + mask = (uint8_t)(0xff << shift); + mask |= mask << 8; + mask |= mask << 16; + break; + case 1: + if (op == 4) + mask = 0xffff >> -shift; + else + mask = (uint16_t)(0xffff << shift); + mask |= mask << 16; + break; + case 2: + if (shift < -31 || shift > 31) { + mask = 0; + } else { + if (op == 4) + mask = 0xffffffffu >> -shift; + else + mask = 0xffffffffu << shift; + } + break; + default: + abort(); + } + tmp2 = neon_load_reg(rd, pass); + tcg_gen_andi_i32(tmp, tmp, mask); + tcg_gen_andi_i32(tmp2, tmp2, ~mask); + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + neon_store_reg(rd, pass, tmp); + } + } /* for pass */ + } else if (op < 10) { + /* Shift by immediate and narrow: + VSHRN, VRSHRN, VQSHRN, VQRSHRN. */ + shift = shift - (1 << (size + 3)); + size++; + switch (size) { + case 1: + imm = (uint16_t)shift; + imm |= imm << 16; + tmp2 = tcg_const_i32(imm); + TCGV_UNUSED_I64(tmp64); + break; + case 2: + imm = (uint32_t)shift; + tmp2 = tcg_const_i32(imm); + TCGV_UNUSED_I64(tmp64); + break; + case 3: + tmp64 = tcg_const_i64(shift); + TCGV_UNUSED(tmp2); + break; + default: + abort(); + } + + for (pass = 0; pass < 2; pass++) { + if (size == 3) { + neon_load_reg64(cpu_V0, rm + pass); + if (q) { + if (u) + gen_helper_neon_rshl_u64(cpu_V0, cpu_V0, tmp64); + else + gen_helper_neon_rshl_s64(cpu_V0, cpu_V0, tmp64); + } else { + if (u) + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, tmp64); + else + gen_helper_neon_shl_s64(cpu_V0, cpu_V0, tmp64); + } + } else { + tmp = neon_load_reg(rm + pass, 0); + gen_neon_shift_narrow(size, tmp, tmp2, q, u); + tmp3 = neon_load_reg(rm + pass, 1); + gen_neon_shift_narrow(size, tmp3, tmp2, q, u); + tcg_gen_concat_i32_i64(cpu_V0, tmp, tmp3); + dead_tmp(tmp); + dead_tmp(tmp3); + } + tmp = new_tmp(); + if (op == 8 && !u) { + gen_neon_narrow(size - 1, tmp, cpu_V0); + } else { + if (op == 8) + gen_neon_narrow_sats(size - 1, tmp, cpu_V0); + else + gen_neon_narrow_satu(size - 1, tmp, cpu_V0); + } + neon_store_reg(rd, pass, tmp); + } /* for pass */ + if (size == 3) { + tcg_temp_free_i64(tmp64); + } else { + dead_tmp(tmp2); + } + } else if (op == 10) { + /* VSHLL */ + if (q || size == 3) + return 1; + tmp = neon_load_reg(rm, 0); + tmp2 = neon_load_reg(rm, 1); + for (pass = 0; pass < 2; pass++) { + if (pass == 1) + tmp = tmp2; + + gen_neon_widen(cpu_V0, tmp, size, u); + + if (shift != 0) { + /* The shift is less than the width of the source + type, so we can just shift the whole register. */ + tcg_gen_shli_i64(cpu_V0, cpu_V0, shift); + if (size < 2 || !u) { + uint64_t imm64; + if (size == 0) { + imm = (0xffu >> (8 - shift)); + imm |= imm << 16; + } else { + imm = 0xffff >> (16 - shift); + } + imm64 = imm | (((uint64_t)imm) << 32); + tcg_gen_andi_i64(cpu_V0, cpu_V0, imm64); + } + } + neon_store_reg64(cpu_V0, rd + pass); + } + } else if (op == 15 || op == 16) { + /* VCVT fixed-point. */ + for (pass = 0; pass < (q ? 4 : 2); pass++) { + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, pass)); + if (op & 1) { + if (u) + gen_vfp_ulto(0, shift); + else + gen_vfp_slto(0, shift); + } else { + if (u) + gen_vfp_toul(0, shift); + else + gen_vfp_tosl(0, shift); + } + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, pass)); + } + } else { + return 1; + } + } else { /* (insn & 0x00380080) == 0 */ + int invert; + + op = (insn >> 8) & 0xf; + /* One register and immediate. */ + imm = (u << 7) | ((insn >> 12) & 0x70) | (insn & 0xf); + invert = (insn & (1 << 5)) != 0; + switch (op) { + case 0: case 1: + /* no-op */ + break; + case 2: case 3: + imm <<= 8; + break; + case 4: case 5: + imm <<= 16; + break; + case 6: case 7: + imm <<= 24; + break; + case 8: case 9: + imm |= imm << 16; + break; + case 10: case 11: + imm = (imm << 8) | (imm << 24); + break; + case 12: + imm = (imm < 8) | 0xff; + break; + case 13: + imm = (imm << 16) | 0xffff; + break; + case 14: + imm |= (imm << 8) | (imm << 16) | (imm << 24); + if (invert) + imm = ~imm; + break; + case 15: + imm = ((imm & 0x80) << 24) | ((imm & 0x3f) << 19) + | ((imm & 0x40) ? (0x1f << 25) : (1 << 30)); + break; + } + if (invert) + imm = ~imm; + + for (pass = 0; pass < (q ? 4 : 2); pass++) { + if (op & 1 && op < 12) { + tmp = neon_load_reg(rd, pass); + if (invert) { + /* The immediate value has already been inverted, so + BIC becomes AND. */ + tcg_gen_andi_i32(tmp, tmp, imm); + } else { + tcg_gen_ori_i32(tmp, tmp, imm); + } + } else { + /* VMOV, VMVN. */ + tmp = new_tmp(); + if (op == 14 && invert) { + uint32_t val; + val = 0; + for (n = 0; n < 4; n++) { + if (imm & (1 << (n + (pass & 1) * 4))) + val |= 0xff << (n * 8); + } + tcg_gen_movi_i32(tmp, val); + } else { + tcg_gen_movi_i32(tmp, imm); + } + } + neon_store_reg(rd, pass, tmp); + } + } + } else { /* (insn & 0x00800010 == 0x00800000) */ + if (size != 3) { + op = (insn >> 8) & 0xf; + if ((insn & (1 << 6)) == 0) { + /* Three registers of different lengths. */ + int src1_wide; + int src2_wide; + int prewiden; + /* prewiden, src1_wide, src2_wide */ + static const int neon_3reg_wide[16][3] = { + {1, 0, 0}, /* VADDL */ + {1, 1, 0}, /* VADDW */ + {1, 0, 0}, /* VSUBL */ + {1, 1, 0}, /* VSUBW */ + {0, 1, 1}, /* VADDHN */ + {0, 0, 0}, /* VABAL */ + {0, 1, 1}, /* VSUBHN */ + {0, 0, 0}, /* VABDL */ + {0, 0, 0}, /* VMLAL */ + {0, 0, 0}, /* VQDMLAL */ + {0, 0, 0}, /* VMLSL */ + {0, 0, 0}, /* VQDMLSL */ + {0, 0, 0}, /* Integer VMULL */ + {0, 0, 0}, /* VQDMULL */ + {0, 0, 0} /* Polynomial VMULL */ + }; + + prewiden = neon_3reg_wide[op][0]; + src1_wide = neon_3reg_wide[op][1]; + src2_wide = neon_3reg_wide[op][2]; + + if (size == 0 && (op == 9 || op == 11 || op == 13)) + return 1; + + /* Avoid overlapping operands. Wide source operands are + always aligned so will never overlap with wide + destinations in problematic ways. */ + if (rd == rm && !src2_wide) { + tmp = neon_load_reg(rm, 1); + neon_store_scratch(2, tmp); + } else if (rd == rn && !src1_wide) { + tmp = neon_load_reg(rn, 1); + neon_store_scratch(2, tmp); + } + TCGV_UNUSED(tmp3); + for (pass = 0; pass < 2; pass++) { + if (src1_wide) { + neon_load_reg64(cpu_V0, rn + pass); + TCGV_UNUSED(tmp); + } else { + if (pass == 1 && rd == rn) { + tmp = neon_load_scratch(2); + } else { + tmp = neon_load_reg(rn, pass); + } + if (prewiden) { + gen_neon_widen(cpu_V0, tmp, size, u); + } + } + if (src2_wide) { + neon_load_reg64(cpu_V1, rm + pass); + TCGV_UNUSED(tmp2); + } else { + if (pass == 1 && rd == rm) { + tmp2 = neon_load_scratch(2); + } else { + tmp2 = neon_load_reg(rm, pass); + } + if (prewiden) { + gen_neon_widen(cpu_V1, tmp2, size, u); + } + } + switch (op) { + case 0: case 1: case 4: /* VADDL, VADDW, VADDHN, VRADDHN */ + gen_neon_addl(size); + break; + case 2: case 3: case 6: /* VSUBL, VSUBW, VSUBHL, VRSUBHL */ + gen_neon_subl(size); + break; + case 5: case 7: /* VABAL, VABDL */ + switch ((size << 1) | u) { + case 0: + gen_helper_neon_abdl_s16(cpu_V0, tmp, tmp2); + break; + case 1: + gen_helper_neon_abdl_u16(cpu_V0, tmp, tmp2); + break; + case 2: + gen_helper_neon_abdl_s32(cpu_V0, tmp, tmp2); + break; + case 3: + gen_helper_neon_abdl_u32(cpu_V0, tmp, tmp2); + break; + case 4: + gen_helper_neon_abdl_s64(cpu_V0, tmp, tmp2); + break; + case 5: + gen_helper_neon_abdl_u64(cpu_V0, tmp, tmp2); + break; + default: abort(); + } + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 8: case 9: case 10: case 11: case 12: case 13: + /* VMLAL, VQDMLAL, VMLSL, VQDMLSL, VMULL, VQDMULL */ + gen_neon_mull(cpu_V0, tmp, tmp2, size, u); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 14: /* Polynomial VMULL */ + cpu_abort(env, "Polynomial VMULL not implemented"); + + default: /* 15 is RESERVED. */ + return 1; + } + if (op == 5 || op == 13 || (op >= 8 && op <= 11)) { + /* Accumulate. */ + if (op == 10 || op == 11) { + gen_neon_negl(cpu_V0, size); + } + + if (op != 13) { + neon_load_reg64(cpu_V1, rd + pass); + } + + switch (op) { + case 5: case 8: case 10: /* VABAL, VMLAL, VMLSL */ + gen_neon_addl(size); + break; + case 9: case 11: /* VQDMLAL, VQDMLSL */ + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + gen_neon_addl_saturate(cpu_V0, cpu_V1, size); + break; + /* Fall through. */ + case 13: /* VQDMULL */ + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + break; + default: + abort(); + } + neon_store_reg64(cpu_V0, rd + pass); + } else if (op == 4 || op == 6) { + /* Narrowing operation. */ + tmp = new_tmp(); + if (u) { + switch (size) { + case 0: + gen_helper_neon_narrow_high_u8(tmp, cpu_V0); + break; + case 1: + gen_helper_neon_narrow_high_u16(tmp, cpu_V0); + break; + case 2: + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(tmp, cpu_V0); + break; + default: abort(); + } + } else { + switch (size) { + case 0: + gen_helper_neon_narrow_round_high_u8(tmp, cpu_V0); + break; + case 1: + gen_helper_neon_narrow_round_high_u16(tmp, cpu_V0); + break; + case 2: + tcg_gen_addi_i64(cpu_V0, cpu_V0, 1u << 31); + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(tmp, cpu_V0); + break; + default: abort(); + } + } + if (pass == 0) { + tmp3 = tmp; + } else { + neon_store_reg(rd, 0, tmp3); + neon_store_reg(rd, 1, tmp); + } + } else { + /* Write back the result. */ + neon_store_reg64(cpu_V0, rd + pass); + } + } + } else { + /* Two registers and a scalar. */ + switch (op) { + case 0: /* Integer VMLA scalar */ + case 1: /* Float VMLA scalar */ + case 4: /* Integer VMLS scalar */ + case 5: /* Floating point VMLS scalar */ + case 8: /* Integer VMUL scalar */ + case 9: /* Floating point VMUL scalar */ + case 12: /* VQDMULH scalar */ + case 13: /* VQRDMULH scalar */ + tmp = neon_get_scalar(size, rm); + neon_store_scratch(0, tmp); + for (pass = 0; pass < (u ? 4 : 2); pass++) { + tmp = neon_load_scratch(0); + tmp2 = neon_load_reg(rn, pass); + if (op == 12) { + if (size == 1) { + gen_helper_neon_qdmulh_s16(tmp, cpu_env, tmp, tmp2); + } else { + gen_helper_neon_qdmulh_s32(tmp, cpu_env, tmp, tmp2); + } + } else if (op == 13) { + if (size == 1) { + gen_helper_neon_qrdmulh_s16(tmp, cpu_env, tmp, tmp2); + } else { + gen_helper_neon_qrdmulh_s32(tmp, cpu_env, tmp, tmp2); + } + } else if (op & 1) { + gen_helper_neon_mul_f32(tmp, tmp, tmp2); + } else { + switch (size) { + case 0: gen_helper_neon_mul_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_mul_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_mul_i32(tmp, tmp, tmp2); break; + default: return 1; + } + } + dead_tmp(tmp2); + if (op < 8) { + /* Accumulate. */ + tmp2 = neon_load_reg(rd, pass); + switch (op) { + case 0: + gen_neon_add(size, tmp, tmp2); + break; + case 1: + gen_helper_neon_add_f32(tmp, tmp, tmp2); + break; + case 4: + gen_neon_rsb(size, tmp, tmp2); + break; + case 5: + gen_helper_neon_sub_f32(tmp, tmp2, tmp); + break; + default: + abort(); + } + dead_tmp(tmp2); + } + neon_store_reg(rd, pass, tmp); + } + break; + case 2: /* VMLAL sclar */ + case 3: /* VQDMLAL scalar */ + case 6: /* VMLSL scalar */ + case 7: /* VQDMLSL scalar */ + case 10: /* VMULL scalar */ + case 11: /* VQDMULL scalar */ + if (size == 0 && (op == 3 || op == 7 || op == 11)) + return 1; + + tmp2 = neon_get_scalar(size, rm); + tmp3 = neon_load_reg(rn, 1); + + for (pass = 0; pass < 2; pass++) { + if (pass == 0) { + tmp = neon_load_reg(rn, 0); + } else { + tmp = tmp3; + } + gen_neon_mull(cpu_V0, tmp, tmp2, size, u); + dead_tmp(tmp); + if (op == 6 || op == 7) { + gen_neon_negl(cpu_V0, size); + } + if (op != 11) { + neon_load_reg64(cpu_V1, rd + pass); + } + switch (op) { + case 2: case 6: + gen_neon_addl(size); + break; + case 3: case 7: + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + gen_neon_addl_saturate(cpu_V0, cpu_V1, size); + break; + case 10: + /* no-op */ + break; + case 11: + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + break; + default: + abort(); + } + neon_store_reg64(cpu_V0, rd + pass); + } + + dead_tmp(tmp2); + + break; + default: /* 14 and 15 are RESERVED */ + return 1; + } + } + } else { /* size == 3 */ + if (!u) { + /* Extract. */ + imm = (insn >> 8) & 0xf; + count = q + 1; + + if (imm > 7 && !q) + return 1; + + if (imm == 0) { + neon_load_reg64(cpu_V0, rn); + if (q) { + neon_load_reg64(cpu_V1, rn + 1); + } + } else if (imm == 8) { + neon_load_reg64(cpu_V0, rn + 1); + if (q) { + neon_load_reg64(cpu_V1, rm); + } + } else if (q) { + tmp64 = tcg_temp_new_i64(); + if (imm < 8) { + neon_load_reg64(cpu_V0, rn); + neon_load_reg64(tmp64, rn + 1); + } else { + neon_load_reg64(cpu_V0, rn + 1); + neon_load_reg64(tmp64, rm); + } + tcg_gen_shri_i64(cpu_V0, cpu_V0, (imm & 7) * 8); + tcg_gen_shli_i64(cpu_V1, tmp64, 64 - ((imm & 7) * 8)); + tcg_gen_or_i64(cpu_V0, cpu_V0, cpu_V1); + if (imm < 8) { + neon_load_reg64(cpu_V1, rm); + } else { + neon_load_reg64(cpu_V1, rm + 1); + imm -= 8; + } + tcg_gen_shli_i64(cpu_V1, cpu_V1, 64 - (imm * 8)); + tcg_gen_shri_i64(tmp64, tmp64, imm * 8); + tcg_gen_or_i64(cpu_V1, cpu_V1, tmp64); + tcg_temp_free_i64(tmp64); + } else { + /* BUGFIX */ + neon_load_reg64(cpu_V0, rn); + tcg_gen_shri_i64(cpu_V0, cpu_V0, imm * 8); + neon_load_reg64(cpu_V1, rm); + tcg_gen_shli_i64(cpu_V1, cpu_V1, 64 - (imm * 8)); + tcg_gen_or_i64(cpu_V0, cpu_V0, cpu_V1); + } + neon_store_reg64(cpu_V0, rd); + if (q) { + neon_store_reg64(cpu_V1, rd + 1); + } + } else if ((insn & (1 << 11)) == 0) { + /* Two register misc. */ + op = ((insn >> 12) & 0x30) | ((insn >> 7) & 0xf); + size = (insn >> 18) & 3; + switch (op) { + case 0: /* VREV64 */ + if (size == 3) + return 1; + for (pass = 0; pass < (q ? 2 : 1); pass++) { + tmp = neon_load_reg(rm, pass * 2); + tmp2 = neon_load_reg(rm, pass * 2 + 1); + switch (size) { + case 0: tcg_gen_bswap32_i32(tmp, tmp); break; + case 1: gen_swap_half(tmp); break; + case 2: /* no-op */ break; + default: abort(); + } + neon_store_reg(rd, pass * 2 + 1, tmp); + if (size == 2) { + neon_store_reg(rd, pass * 2, tmp2); + } else { + switch (size) { + case 0: tcg_gen_bswap32_i32(tmp2, tmp2); break; + case 1: gen_swap_half(tmp2); break; + default: abort(); + } + neon_store_reg(rd, pass * 2, tmp2); + } + } + break; + case 4: case 5: /* VPADDL */ + case 12: case 13: /* VPADAL */ + if (size == 3) + return 1; + for (pass = 0; pass < q + 1; pass++) { + tmp = neon_load_reg(rm, pass * 2); + gen_neon_widen(cpu_V0, tmp, size, op & 1); + tmp = neon_load_reg(rm, pass * 2 + 1); + gen_neon_widen(cpu_V1, tmp, size, op & 1); + switch (size) { + case 0: gen_helper_neon_paddl_u16(CPU_V001); break; + case 1: gen_helper_neon_paddl_u32(CPU_V001); break; + case 2: tcg_gen_add_i64(CPU_V001); break; + default: abort(); + } + if (op >= 12) { + /* Accumulate. */ + neon_load_reg64(cpu_V1, rd + pass); + gen_neon_addl(size); + } + neon_store_reg64(cpu_V0, rd + pass); + } + break; + case 33: /* VTRN */ + if (size == 2) { + for (n = 0; n < (q ? 4 : 2); n += 2) { + tmp = neon_load_reg(rm, n); + tmp2 = neon_load_reg(rd, n + 1); + neon_store_reg(rm, n, tmp2); + neon_store_reg(rd, n + 1, tmp); + } + } else { + goto elementwise; + } + break; + case 34: /* VUZP */ + /* Reg Before After + Rd A3 A2 A1 A0 B2 B0 A2 A0 + Rm B3 B2 B1 B0 B3 B1 A3 A1 + */ + if (size == 3) + return 1; + gen_neon_unzip(rd, q, 0, size); + gen_neon_unzip(rm, q, 4, size); + if (q) { + static int unzip_order_q[8] = + {0, 2, 4, 6, 1, 3, 5, 7}; + for (n = 0; n < 8; n++) { + int reg = (n < 4) ? rd : rm; + tmp = neon_load_scratch(unzip_order_q[n]); + neon_store_reg(reg, n % 4, tmp); + } + } else { + static int unzip_order[4] = + {0, 4, 1, 5}; + for (n = 0; n < 4; n++) { + int reg = (n < 2) ? rd : rm; + tmp = neon_load_scratch(unzip_order[n]); + neon_store_reg(reg, n % 2, tmp); + } + } + break; + case 35: /* VZIP */ + /* Reg Before After + Rd A3 A2 A1 A0 B1 A1 B0 A0 + Rm B3 B2 B1 B0 B3 A3 B2 A2 + */ + if (size == 3) + return 1; + count = (q ? 4 : 2); + for (n = 0; n < count; n++) { + tmp = neon_load_reg(rd, n); + tmp2 = neon_load_reg(rd, n); + switch (size) { + case 0: gen_neon_zip_u8(tmp, tmp2); break; + case 1: gen_neon_zip_u16(tmp, tmp2); break; + case 2: /* no-op */; break; + default: abort(); + } + neon_store_scratch(n * 2, tmp); + neon_store_scratch(n * 2 + 1, tmp2); + } + for (n = 0; n < count * 2; n++) { + int reg = (n < count) ? rd : rm; + tmp = neon_load_scratch(n); + neon_store_reg(reg, n % count, tmp); + } + break; + case 36: case 37: /* VMOVN, VQMOVUN, VQMOVN */ + if (size == 3) + return 1; + TCGV_UNUSED(tmp2); + for (pass = 0; pass < 2; pass++) { + neon_load_reg64(cpu_V0, rm + pass); + tmp = new_tmp(); + if (op == 36 && q == 0) { + gen_neon_narrow(size, tmp, cpu_V0); + } else if (q) { + gen_neon_narrow_satu(size, tmp, cpu_V0); + } else { + gen_neon_narrow_sats(size, tmp, cpu_V0); + } + if (pass == 0) { + tmp2 = tmp; + } else { + neon_store_reg(rd, 0, tmp2); + neon_store_reg(rd, 1, tmp); + } + } + break; + case 38: /* VSHLL */ + if (q || size == 3) + return 1; + tmp = neon_load_reg(rm, 0); + tmp2 = neon_load_reg(rm, 1); + for (pass = 0; pass < 2; pass++) { + if (pass == 1) + tmp = tmp2; + gen_neon_widen(cpu_V0, tmp, size, 1); + neon_store_reg64(cpu_V0, rd + pass); + } + break; + case 44: /* VCVT.F16.F32 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = new_tmp(); + tmp2 = new_tmp(); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 0)); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 1)); + gen_helper_vfp_fcvt_f32_to_f16(tmp2, cpu_F0s, cpu_env); + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_or_i32(tmp2, tmp2, tmp); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 2)); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 3)); + neon_store_reg(rd, 0, tmp2); + tmp2 = new_tmp(); + gen_helper_vfp_fcvt_f32_to_f16(tmp2, cpu_F0s, cpu_env); + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_or_i32(tmp2, tmp2, tmp); + neon_store_reg(rd, 1, tmp2); + dead_tmp(tmp); + break; + case 46: /* VCVT.F32.F16 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp3 = new_tmp(); + tmp = neon_load_reg(rm, 0); + tmp2 = neon_load_reg(rm, 1); + tcg_gen_ext16u_i32(tmp3, tmp); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 0)); + tcg_gen_shri_i32(tmp3, tmp, 16); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 1)); + dead_tmp(tmp); + tcg_gen_ext16u_i32(tmp3, tmp2); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 2)); + tcg_gen_shri_i32(tmp3, tmp2, 16); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 3)); + dead_tmp(tmp2); + dead_tmp(tmp3); + break; + default: + elementwise: + for (pass = 0; pass < (q ? 4 : 2); pass++) { + if (op == 30 || op == 31 || op >= 58) { + tcg_gen_ld_f32(cpu_F0s, cpu_env, + neon_reg_offset(rm, pass)); + TCGV_UNUSED(tmp); + } else { + tmp = neon_load_reg(rm, pass); + } + switch (op) { + case 1: /* VREV32 */ + switch (size) { + case 0: tcg_gen_bswap32_i32(tmp, tmp); break; + case 1: gen_swap_half(tmp); break; + default: return 1; + } + break; + case 2: /* VREV16 */ + if (size != 0) + return 1; + gen_rev16(tmp); + break; + case 8: /* CLS */ + switch (size) { + case 0: gen_helper_neon_cls_s8(tmp, tmp); break; + case 1: gen_helper_neon_cls_s16(tmp, tmp); break; + case 2: gen_helper_neon_cls_s32(tmp, tmp); break; + default: return 1; + } + break; + case 9: /* CLZ */ + switch (size) { + case 0: gen_helper_neon_clz_u8(tmp, tmp); break; + case 1: gen_helper_neon_clz_u16(tmp, tmp); break; + case 2: gen_helper_clz(tmp, tmp); break; + default: return 1; + } + break; + case 10: /* CNT */ + if (size != 0) + return 1; + gen_helper_neon_cnt_u8(tmp, tmp); + break; + case 11: /* VNOT */ + if (size != 0) + return 1; + tcg_gen_not_i32(tmp, tmp); + break; + case 14: /* VQABS */ + switch (size) { + case 0: gen_helper_neon_qabs_s8(tmp, cpu_env, tmp); break; + case 1: gen_helper_neon_qabs_s16(tmp, cpu_env, tmp); break; + case 2: gen_helper_neon_qabs_s32(tmp, cpu_env, tmp); break; + default: return 1; + } + break; + case 15: /* VQNEG */ + switch (size) { + case 0: gen_helper_neon_qneg_s8(tmp, cpu_env, tmp); break; + case 1: gen_helper_neon_qneg_s16(tmp, cpu_env, tmp); break; + case 2: gen_helper_neon_qneg_s32(tmp, cpu_env, tmp); break; + default: return 1; + } + break; + case 16: case 19: /* VCGT #0, VCLE #0 */ + tmp2 = tcg_const_i32(0); + switch(size) { + case 0: gen_helper_neon_cgt_s8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_cgt_s16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_cgt_s32(tmp, tmp, tmp2); break; + default: return 1; + } + tcg_temp_free(tmp2); + if (op == 19) + tcg_gen_not_i32(tmp, tmp); + break; + case 17: case 20: /* VCGE #0, VCLT #0 */ + tmp2 = tcg_const_i32(0); + switch(size) { + case 0: gen_helper_neon_cge_s8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_cge_s16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_cge_s32(tmp, tmp, tmp2); break; + default: return 1; + } + tcg_temp_free(tmp2); + if (op == 20) + tcg_gen_not_i32(tmp, tmp); + break; + case 18: /* VCEQ #0 */ + tmp2 = tcg_const_i32(0); + switch(size) { + case 0: gen_helper_neon_ceq_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_ceq_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_ceq_u32(tmp, tmp, tmp2); break; + default: return 1; + } + tcg_temp_free(tmp2); + break; + case 22: /* VABS */ + switch(size) { + case 0: gen_helper_neon_abs_s8(tmp, tmp); break; + case 1: gen_helper_neon_abs_s16(tmp, tmp); break; + case 2: tcg_gen_abs_i32(tmp, tmp); break; + default: return 1; + } + break; + case 23: /* VNEG */ + if (size == 3) + return 1; + tmp2 = tcg_const_i32(0); + gen_neon_rsb(size, tmp, tmp2); + tcg_temp_free(tmp2); + break; + case 24: case 27: /* Float VCGT #0, Float VCLE #0 */ + tmp2 = tcg_const_i32(0); + gen_helper_neon_cgt_f32(tmp, tmp, tmp2); + tcg_temp_free(tmp2); + if (op == 27) + tcg_gen_not_i32(tmp, tmp); + break; + case 25: case 28: /* Float VCGE #0, Float VCLT #0 */ + tmp2 = tcg_const_i32(0); + gen_helper_neon_cge_f32(tmp, tmp, tmp2); + tcg_temp_free(tmp2); + if (op == 28) + tcg_gen_not_i32(tmp, tmp); + break; + case 26: /* Float VCEQ #0 */ + tmp2 = tcg_const_i32(0); + gen_helper_neon_ceq_f32(tmp, tmp, tmp2); + tcg_temp_free(tmp2); + break; + case 30: /* Float VABS */ + gen_vfp_abs(0); + break; + case 31: /* Float VNEG */ + gen_vfp_neg(0); + break; + case 32: /* VSWP */ + tmp2 = neon_load_reg(rd, pass); + neon_store_reg(rm, pass, tmp2); + break; + case 33: /* VTRN */ + tmp2 = neon_load_reg(rd, pass); + switch (size) { + case 0: gen_neon_trn_u8(tmp, tmp2); break; + case 1: gen_neon_trn_u16(tmp, tmp2); break; + case 2: abort(); + default: return 1; + } + neon_store_reg(rm, pass, tmp2); + break; + case 56: /* Integer VRECPE */ + gen_helper_recpe_u32(tmp, tmp, cpu_env); + break; + case 57: /* Integer VRSQRTE */ + gen_helper_rsqrte_u32(tmp, tmp, cpu_env); + break; + case 58: /* Float VRECPE */ + gen_helper_recpe_f32(cpu_F0s, cpu_F0s, cpu_env); + break; + case 59: /* Float VRSQRTE */ + gen_helper_rsqrte_f32(cpu_F0s, cpu_F0s, cpu_env); + break; + case 60: /* VCVT.F32.S32 */ + gen_vfp_tosiz(0); + break; + case 61: /* VCVT.F32.U32 */ + gen_vfp_touiz(0); + break; + case 62: /* VCVT.S32.F32 */ + gen_vfp_sito(0); + break; + case 63: /* VCVT.U32.F32 */ + gen_vfp_uito(0); + break; + default: + /* Reserved: 21, 29, 39-56 */ + return 1; + } + if (op == 30 || op == 31 || op >= 58) { + tcg_gen_st_f32(cpu_F0s, cpu_env, + neon_reg_offset(rd, pass)); + } else { + neon_store_reg(rd, pass, tmp); + } + } + break; + } + } else if ((insn & (1 << 10)) == 0) { + /* VTBL, VTBX. */ + n = ((insn >> 5) & 0x18) + 8; + if (insn & (1 << 6)) { + tmp = neon_load_reg(rd, 0); + } else { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } + tmp2 = neon_load_reg(rm, 0); + tmp4 = tcg_const_i32(rn); + tmp5 = tcg_const_i32(n); + gen_helper_neon_tbl(tmp2, tmp2, tmp, tmp4, tmp5); + dead_tmp(tmp); + if (insn & (1 << 6)) { + tmp = neon_load_reg(rd, 1); + } else { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } + tmp3 = neon_load_reg(rm, 1); + gen_helper_neon_tbl(tmp3, tmp3, tmp, tmp4, tmp5); + tcg_temp_free_i32(tmp5); + tcg_temp_free_i32(tmp4); + neon_store_reg(rd, 0, tmp2); + neon_store_reg(rd, 1, tmp3); + dead_tmp(tmp); + } else if ((insn & 0x380) == 0) { + /* VDUP */ + if (insn & (1 << 19)) { + tmp = neon_load_reg(rm, 1); + } else { + tmp = neon_load_reg(rm, 0); + } + if (insn & (1 << 16)) { + gen_neon_dup_u8(tmp, ((insn >> 17) & 3) * 8); + } else if (insn & (1 << 17)) { + if ((insn >> 18) & 1) + gen_neon_dup_high16(tmp); + else + gen_neon_dup_low16(tmp); + } + for (pass = 0; pass < (q ? 4 : 2); pass++) { + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + neon_store_reg(rd, pass, tmp2); + } + dead_tmp(tmp); + } else { + return 1; + } + } + } + return 0; +} + +static int disas_cp14_read(CPUState * env, DisasContext *s, uint32_t insn) +{ + int crn = (insn >> 16) & 0xf; + int crm = insn & 0xf; + int op1 = (insn >> 21) & 7; + int op2 = (insn >> 5) & 7; + int rt = (insn >> 12) & 0xf; + TCGv tmp; + + if (arm_feature(env, ARM_FEATURE_THUMB2EE)) { + if (op1 == 6 && crn == 0 && crm == 0 && op2 == 0) { + /* TEECR */ + if (IS_USER(s)) + return 1; + tmp = load_cpu_field(teecr); + store_reg(s, rt, tmp); + return 0; + } + if (op1 == 6 && crn == 1 && crm == 0 && op2 == 0) { + /* TEEHBR */ + if (IS_USER(s) && (env->teecr & 1)) + return 1; + tmp = load_cpu_field(teehbr); + store_reg(s, rt, tmp); + return 0; + } + } + fprintf(stderr, "Unknown cp14 read op1:%d crn:%d crm:%d op2:%d\n", + op1, crn, crm, op2); + return 1; +} + +static int disas_cp14_write(CPUState * env, DisasContext *s, uint32_t insn) +{ + int crn = (insn >> 16) & 0xf; + int crm = insn & 0xf; + int op1 = (insn >> 21) & 7; + int op2 = (insn >> 5) & 7; + int rt = (insn >> 12) & 0xf; + TCGv tmp; + + if (arm_feature(env, ARM_FEATURE_THUMB2EE)) { + if (op1 == 6 && crn == 0 && crm == 0 && op2 == 0) { + /* TEECR */ + if (IS_USER(s)) + return 1; + tmp = load_reg(s, rt); + gen_helper_set_teecr(cpu_env, tmp); + dead_tmp(tmp); + return 0; + } + if (op1 == 6 && crn == 1 && crm == 0 && op2 == 0) { + /* TEEHBR */ + if (IS_USER(s) && (env->teecr & 1)) + return 1; + tmp = load_reg(s, rt); + store_cpu_field(tmp, teehbr); + return 0; + } + } + fprintf(stderr, "Unknown cp14 write op1:%d crn:%d crm:%d op2:%d\n", + op1, crn, crm, op2); + return 1; +} + +static int disas_coproc_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + int cpnum; + + cpnum = (insn >> 8) & 0xf; + if (arm_feature(env, ARM_FEATURE_XSCALE) + && ((env->cp15.c15_cpar ^ 0x3fff) & (1 << cpnum))) + return 1; + + switch (cpnum) { + case 0: + case 1: + if (arm_feature(env, ARM_FEATURE_IWMMXT)) { + return disas_iwmmxt_insn(env, s, insn); + } else if (arm_feature(env, ARM_FEATURE_XSCALE)) { + return disas_dsp_insn(env, s, insn); + } + return 1; + case 10: + case 11: + return disas_vfp_insn (env, s, insn); + case 14: + /* Coprocessors 7-15 are architecturally reserved by ARM. + Unfortunately Intel decided to ignore this. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + goto board; + if (insn & (1 << 20)) + return disas_cp14_read(env, s, insn); + else + return disas_cp14_write(env, s, insn); + case 15: + return disas_cp15_insn (env, s, insn); + default: + board: + /* Unknown coprocessor. See if the board has hooked it. */ + return disas_cp_insn (env, s, insn); + } +} + + +/* Store a 64-bit value to a register pair. Clobbers val. */ +static void gen_storeq_reg(DisasContext *s, int rlow, int rhigh, TCGv_i64 val) +{ + TCGv tmp; + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, val); + store_reg(s, rlow, tmp); + tmp = new_tmp(); + tcg_gen_shri_i64(val, val, 32); + tcg_gen_trunc_i64_i32(tmp, val); + store_reg(s, rhigh, tmp); +} + +/* load a 32-bit value from a register and perform a 64-bit accumulate. */ +static void gen_addq_lo(DisasContext *s, TCGv_i64 val, int rlow) +{ + TCGv_i64 tmp; + TCGv tmp2; + + /* Load value and extend to 64 bits. */ + tmp = tcg_temp_new_i64(); + tmp2 = load_reg(s, rlow); + tcg_gen_extu_i32_i64(tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_add_i64(val, val, tmp); + tcg_temp_free_i64(tmp); +} + +/* load and add a 64-bit value from a register pair. */ +static void gen_addq(DisasContext *s, TCGv_i64 val, int rlow, int rhigh) +{ + TCGv_i64 tmp; + TCGv tmpl; + TCGv tmph; + + /* Load 64-bit value rd:rn. */ + tmpl = load_reg(s, rlow); + tmph = load_reg(s, rhigh); + tmp = tcg_temp_new_i64(); + tcg_gen_concat_i32_i64(tmp, tmpl, tmph); + dead_tmp(tmpl); + dead_tmp(tmph); + tcg_gen_add_i64(val, val, tmp); + tcg_temp_free_i64(tmp); +} + +/* Set N and Z flags from a 64-bit value. */ +static void gen_logicq_cc(TCGv_i64 val) +{ + TCGv tmp = new_tmp(); + gen_helper_logicq_cc(tmp, val); + gen_logic_CC(tmp); + dead_tmp(tmp); +} + +/* Load/Store exclusive instructions are implemented by remembering + the value/address loaded, and seeing if these are the same + when the store is performed. This should be is sufficient to implement + the architecturally mandated semantics, and avoids having to monitor + regular stores. + + In system emulation mode only one CPU will be running at once, so + this sequence is effectively atomic. In user emulation mode we + throw an exception and handle the atomic operation elsewhere. */ +static void gen_load_exclusive(DisasContext *s, int rt, int rt2, + TCGv addr, int size) +{ + TCGv tmp; + + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + case 3: + tmp = gen_ld32(addr, IS_USER(s)); + break; + default: + abort(); + } + tcg_gen_mov_i32(cpu_exclusive_val, tmp); + store_reg(s, rt, tmp); + if (size == 3) { + tcg_gen_addi_i32(addr, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + tcg_gen_mov_i32(cpu_exclusive_high, tmp); + store_reg(s, rt2, tmp); + } + tcg_gen_mov_i32(cpu_exclusive_addr, addr); +} + +static void gen_clrex(DisasContext *s) +{ + tcg_gen_movi_i32(cpu_exclusive_addr, -1); +} + +#ifdef CONFIG_USER_ONLY +static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2, + TCGv addr, int size) +{ + tcg_gen_mov_i32(cpu_exclusive_test, addr); + tcg_gen_movi_i32(cpu_exclusive_info, + size | (rd << 4) | (rt << 8) | (rt2 << 12)); + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_STREX); + s->is_jmp = DISAS_JUMP; +} +#else +static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2, + TCGv addr, int size) +{ + TCGv tmp; + int done_label; + int fail_label; + + /* if (env->exclusive_addr == addr && env->exclusive_val == [addr]) { + [addr] = {Rt}; + {Rd} = 0; + } else { + {Rd} = 1; + } */ + fail_label = gen_new_label(); + done_label = gen_new_label(); + tcg_gen_brcond_i32(TCG_COND_NE, addr, cpu_exclusive_addr, fail_label); + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + case 3: + tmp = gen_ld32(addr, IS_USER(s)); + break; + default: + abort(); + } + tcg_gen_brcond_i32(TCG_COND_NE, tmp, cpu_exclusive_val, fail_label); + dead_tmp(tmp); + if (size == 3) { + TCGv tmp2 = new_tmp(); + tcg_gen_addi_i32(tmp2, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + dead_tmp(tmp2); + tcg_gen_brcond_i32(TCG_COND_NE, tmp, cpu_exclusive_high, fail_label); + dead_tmp(tmp); + } + tmp = load_reg(s, rt); + switch (size) { + case 0: + gen_st8(tmp, addr, IS_USER(s)); + break; + case 1: + gen_st16(tmp, addr, IS_USER(s)); + break; + case 2: + case 3: + gen_st32(tmp, addr, IS_USER(s)); + break; + default: + abort(); + } + if (size == 3) { + tcg_gen_addi_i32(addr, addr, 4); + tmp = load_reg(s, rt2); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_movi_i32(cpu_R[rd], 0); + tcg_gen_br(done_label); + gen_set_label(fail_label); + tcg_gen_movi_i32(cpu_R[rd], 1); + gen_set_label(done_label); + tcg_gen_movi_i32(cpu_exclusive_addr, -1); +} +#endif + +static void disas_arm_insn(CPUState * env, DisasContext *s) +{ + unsigned int cond, insn, val, op1, i, shift, rm, rs, rn, rd, sh; + TCGv tmp; + TCGv tmp2; + TCGv tmp3; + TCGv addr; + TCGv_i64 tmp64; + + insn = ldl_code(s->pc); + s->pc += 4; + + /* M variants do not implement ARM mode. */ + if (IS_M(env)) + goto illegal_op; + cond = insn >> 28; + if (cond == 0xf){ + /* Unconditional instructions. */ + if (((insn >> 25) & 7) == 1) { + /* NEON Data processing. */ + if (!arm_feature(env, ARM_FEATURE_NEON)) + goto illegal_op; + + if (disas_neon_data_insn(env, s, insn)) + goto illegal_op; + return; + } + if ((insn & 0x0f100000) == 0x04000000) { + /* NEON load/store. */ + if (!arm_feature(env, ARM_FEATURE_NEON)) + goto illegal_op; + + if (disas_neon_ls_insn(env, s, insn)) + goto illegal_op; + return; + } + if ((insn & 0x0d70f000) == 0x0550f000) + return; /* PLD */ + else if ((insn & 0x0ffffdff) == 0x01010000) { + ARCH(6); + /* setend */ + if (insn & (1 << 9)) { + /* BE8 mode not implemented. */ + goto illegal_op; + } + return; + } else if ((insn & 0x0fffff00) == 0x057ff000) { + switch ((insn >> 4) & 0xf) { + case 1: /* clrex */ + ARCH(6K); + gen_clrex(s); + return; + case 4: /* dsb */ + case 5: /* dmb */ + case 6: /* isb */ + ARCH(7); + /* We don't emulate caches so these are a no-op. */ + return; + default: + goto illegal_op; + } + } else if ((insn & 0x0e5fffe0) == 0x084d0500) { + /* srs */ + int32_t offset; + if (IS_USER(s)) + goto illegal_op; + ARCH(6); + op1 = (insn & 0x1f); + if (op1 == (env->uncached_cpsr & CPSR_M)) { + addr = load_reg(s, 13); + } else { + addr = new_tmp(); + tmp = tcg_const_i32(op1); + gen_helper_get_r13_banked(addr, cpu_env, tmp); + tcg_temp_free_i32(tmp); + } + i = (insn >> 23) & 3; + switch (i) { + case 0: offset = -4; break; /* DA */ + case 1: offset = 0; break; /* IA */ + case 2: offset = -8; break; /* DB */ + case 3: offset = 4; break; /* IB */ + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + tmp = load_reg(s, 14); + gen_st32(tmp, addr, 0); + tmp = load_cpu_field(spsr); + tcg_gen_addi_i32(addr, addr, 4); + gen_st32(tmp, addr, 0); + if (insn & (1 << 21)) { + /* Base writeback. */ + switch (i) { + case 0: offset = -8; break; + case 1: offset = 4; break; + case 2: offset = -4; break; + case 3: offset = 0; break; + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + if (op1 == (env->uncached_cpsr & CPSR_M)) { + store_reg(s, 13, addr); + } else { + tmp = tcg_const_i32(op1); + gen_helper_set_r13_banked(cpu_env, tmp, addr); + tcg_temp_free_i32(tmp); + dead_tmp(addr); + } + } else { + dead_tmp(addr); + } + } else if ((insn & 0x0e5fffe0) == 0x081d0a00) { + /* rfe */ + int32_t offset; + if (IS_USER(s)) + goto illegal_op; + ARCH(6); + rn = (insn >> 16) & 0xf; + addr = load_reg(s, rn); + i = (insn >> 23) & 3; + switch (i) { + case 0: offset = -4; break; /* DA */ + case 1: offset = 0; break; /* IA */ + case 2: offset = -8; break; /* DB */ + case 3: offset = 4; break; /* IB */ + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + /* Load PC into tmp and CPSR into tmp2. */ + tmp = gen_ld32(addr, 0); + tcg_gen_addi_i32(addr, addr, 4); + tmp2 = gen_ld32(addr, 0); + if (insn & (1 << 21)) { + /* Base writeback. */ + switch (i) { + case 0: offset = -8; break; + case 1: offset = 4; break; + case 2: offset = -4; break; + case 3: offset = 0; break; + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + gen_rfe(s, tmp, tmp2); + return; + } else if ((insn & 0x0e000000) == 0x0a000000) { + /* branch link and change to thumb (blx ) */ + int32_t offset; + + val = (uint32_t)s->pc; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + store_reg(s, 14, tmp); + /* Sign-extend the 24-bit offset */ + offset = (((int32_t)insn) << 8) >> 8; + /* offset * 4 + bit24 * 2 + (thumb bit) */ + val += (offset << 2) | ((insn >> 23) & 2) | 1; + /* pipeline offset */ + val += 4; + gen_bx_im(s, val); + return; + } else if ((insn & 0x0e000f00) == 0x0c000100) { + if (arm_feature(env, ARM_FEATURE_IWMMXT)) { + /* iWMMXt register transfer. */ + if (env->cp15.c15_cpar & (1 << 1)) + if (!disas_iwmmxt_insn(env, s, insn)) + return; + } + } else if ((insn & 0x0fe00000) == 0x0c400000) { + /* Coprocessor double register transfer. */ + } else if ((insn & 0x0f000010) == 0x0e000010) { + /* Additional coprocessor register transfer. */ + } else if ((insn & 0x0ff10020) == 0x01000000) { + uint32_t mask; + uint32_t val; + /* cps (privileged) */ + if (IS_USER(s)) + return; + mask = val = 0; + if (insn & (1 << 19)) { + if (insn & (1 << 8)) + mask |= CPSR_A; + if (insn & (1 << 7)) + mask |= CPSR_I; + if (insn & (1 << 6)) + mask |= CPSR_F; + if (insn & (1 << 18)) + val |= mask; + } + if (insn & (1 << 17)) { + mask |= CPSR_M; + val |= (insn & 0x1f); + } + if (mask) { + gen_set_psr_im(s, mask, 0, val); + } + return; + } + goto illegal_op; + } + if (cond != 0xe) { + /* if not always execute, we generate a conditional jump to + next instruction */ + s->condlabel = gen_new_label(); + gen_test_cc(cond ^ 1, s->condlabel); + s->condjmp = 1; + } + if ((insn & 0x0f900000) == 0x03000000) { + if ((insn & (1 << 21)) == 0) { + ARCH(6T2); + rd = (insn >> 12) & 0xf; + val = ((insn >> 4) & 0xf000) | (insn & 0xfff); + if ((insn & (1 << 22)) == 0) { + /* MOVW */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + } else { + /* MOVT */ + tmp = load_reg(s, rd); + tcg_gen_ext16u_i32(tmp, tmp); + tcg_gen_ori_i32(tmp, tmp, val << 16); + } + store_reg(s, rd, tmp); + } else { + if (((insn >> 12) & 0xf) != 0xf) + goto illegal_op; + if (((insn >> 16) & 0xf) == 0) { + gen_nop_hint(s, insn & 0xff); + } else { + /* CPSR = immediate */ + val = insn & 0xff; + shift = ((insn >> 8) & 0xf) * 2; + if (shift) + val = (val >> shift) | (val << (32 - shift)); + i = ((insn & (1 << 22)) != 0); + if (gen_set_psr_im(s, msr_mask(env, s, (insn >> 16) & 0xf, i), i, val)) + goto illegal_op; + } + } + } else if ((insn & 0x0f900000) == 0x01000000 + && (insn & 0x00000090) != 0x00000090) { + /* miscellaneous instructions */ + op1 = (insn >> 21) & 3; + sh = (insn >> 4) & 0xf; + rm = insn & 0xf; + switch (sh) { + case 0x0: /* move program status register */ + if (op1 & 1) { + /* PSR = reg */ + tmp = load_reg(s, rm); + i = ((op1 & 2) != 0); + if (gen_set_psr(s, msr_mask(env, s, (insn >> 16) & 0xf, i), i, tmp)) + goto illegal_op; + } else { + /* reg = PSR */ + rd = (insn >> 12) & 0xf; + if (op1 & 2) { + if (IS_USER(s)) + goto illegal_op; + tmp = load_cpu_field(spsr); + } else { + tmp = new_tmp(); + gen_helper_cpsr_read(tmp); + } + store_reg(s, rd, tmp); + } + break; + case 0x1: + if (op1 == 1) { + /* branch/exchange thumb (bx). */ + tmp = load_reg(s, rm); + gen_bx(s, tmp); + } else if (op1 == 3) { + /* clz */ + rd = (insn >> 12) & 0xf; + tmp = load_reg(s, rm); + gen_helper_clz(tmp, tmp); + store_reg(s, rd, tmp); + } else { + goto illegal_op; + } + break; + case 0x2: + if (op1 == 1) { + ARCH(5J); /* bxj */ + /* Trivial implementation equivalent to bx. */ + tmp = load_reg(s, rm); + gen_bx(s, tmp); + } else { + goto illegal_op; + } + break; + case 0x3: + if (op1 != 1) + goto illegal_op; + + /* branch link/exchange thumb (blx) */ + tmp = load_reg(s, rm); + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, s->pc); + store_reg(s, 14, tmp2); + gen_bx(s, tmp); + break; + case 0x5: /* saturating add/subtract */ + rd = (insn >> 12) & 0xf; + rn = (insn >> 16) & 0xf; + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rn); + if (op1 & 2) + gen_helper_double_saturate(tmp2, tmp2); + if (op1 & 1) + gen_helper_sub_saturate(tmp, tmp, tmp2); + else + gen_helper_add_saturate(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 7: /* bkpt */ + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_BKPT); + s->is_jmp = DISAS_JUMP; + break; + case 0x8: /* signed multiply */ + case 0xa: + case 0xc: + case 0xe: + rs = (insn >> 8) & 0xf; + rn = (insn >> 12) & 0xf; + rd = (insn >> 16) & 0xf; + if (op1 == 1) { + /* (32 * 16) >> 16 */ + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + if (sh & 4) + tcg_gen_sari_i32(tmp2, tmp2, 16); + else + gen_sxth(tmp2); + tmp64 = gen_muls_i64_i32(tmp, tmp2); + tcg_gen_shri_i64(tmp64, tmp64, 16); + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, tmp64); + tcg_temp_free_i64(tmp64); + if ((sh & 2) == 0) { + tmp2 = load_reg(s, rn); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rd, tmp); + } else { + /* 16 * 16 */ + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + gen_mulxy(tmp, tmp2, sh & 2, sh & 4); + dead_tmp(tmp2); + if (op1 == 2) { + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + gen_addq(s, tmp64, rn, rd); + gen_storeq_reg(s, rn, rd, tmp64); + tcg_temp_free_i64(tmp64); + } else { + if (op1 == 0) { + tmp2 = load_reg(s, rn); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rd, tmp); + } + } + break; + default: + goto illegal_op; + } + } else if (((insn & 0x0e000000) == 0 && + (insn & 0x00000090) != 0x90) || + ((insn & 0x0e000000) == (1 << 25))) { + int set_cc, logic_cc, shiftop; + + op1 = (insn >> 21) & 0xf; + set_cc = (insn >> 20) & 1; + logic_cc = table_logic_cc[op1] & set_cc; + + /* data processing instruction */ + if (insn & (1 << 25)) { + /* immediate operand */ + val = insn & 0xff; + shift = ((insn >> 8) & 0xf) * 2; + if (shift) { + val = (val >> shift) | (val << (32 - shift)); + } + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, val); + if (logic_cc && shift) { + gen_set_CF_bit31(tmp2); + } + } else { + /* register */ + rm = (insn) & 0xf; + tmp2 = load_reg(s, rm); + shiftop = (insn >> 5) & 3; + if (!(insn & (1 << 4))) { + shift = (insn >> 7) & 0x1f; + gen_arm_shift_im(tmp2, shiftop, shift, logic_cc); + } else { + rs = (insn >> 8) & 0xf; + tmp = load_reg(s, rs); + gen_arm_shift_reg(tmp2, shiftop, tmp, logic_cc); + } + } + if (op1 != 0x0f && op1 != 0x0d) { + rn = (insn >> 16) & 0xf; + tmp = load_reg(s, rn); + } else { + TCGV_UNUSED(tmp); + } + rd = (insn >> 12) & 0xf; + switch(op1) { + case 0x00: + tcg_gen_and_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x01: + tcg_gen_xor_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x02: + if (set_cc && rd == 15) { + /* SUBS r15, ... is used for exception return. */ + if (IS_USER(s)) { + goto illegal_op; + } + gen_helper_sub_cc(tmp, tmp, tmp2); + gen_exception_return(s, tmp); + } else { + if (set_cc) { + gen_helper_sub_cc(tmp, tmp, tmp2); + } else { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + } + break; + case 0x03: + if (set_cc) { + gen_helper_sub_cc(tmp, tmp2, tmp); + } else { + tcg_gen_sub_i32(tmp, tmp2, tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x04: + if (set_cc) { + gen_helper_add_cc(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x05: + if (set_cc) { + gen_helper_adc_cc(tmp, tmp, tmp2); + } else { + gen_add_carry(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x06: + if (set_cc) { + gen_helper_sbc_cc(tmp, tmp, tmp2); + } else { + gen_sub_carry(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x07: + if (set_cc) { + gen_helper_sbc_cc(tmp, tmp2, tmp); + } else { + gen_sub_carry(tmp, tmp2, tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x08: + if (set_cc) { + tcg_gen_and_i32(tmp, tmp, tmp2); + gen_logic_CC(tmp); + } + dead_tmp(tmp); + break; + case 0x09: + if (set_cc) { + tcg_gen_xor_i32(tmp, tmp, tmp2); + gen_logic_CC(tmp); + } + dead_tmp(tmp); + break; + case 0x0a: + if (set_cc) { + gen_helper_sub_cc(tmp, tmp, tmp2); + } + dead_tmp(tmp); + break; + case 0x0b: + if (set_cc) { + gen_helper_add_cc(tmp, tmp, tmp2); + } + dead_tmp(tmp); + break; + case 0x0c: + tcg_gen_or_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x0d: + if (logic_cc && rd == 15) { + /* MOVS r15, ... is used for exception return. */ + if (IS_USER(s)) { + goto illegal_op; + } + gen_exception_return(s, tmp2); + } else { + if (logic_cc) { + gen_logic_CC(tmp2); + } + store_reg_bx(env, s, rd, tmp2); + } + break; + case 0x0e: + tcg_gen_andc_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + default: + case 0x0f: + tcg_gen_not_i32(tmp2, tmp2); + if (logic_cc) { + gen_logic_CC(tmp2); + } + store_reg_bx(env, s, rd, tmp2); + break; + } + if (op1 != 0x0f && op1 != 0x0d) { + dead_tmp(tmp2); + } + } else { + /* other instructions */ + op1 = (insn >> 24) & 0xf; + switch(op1) { + case 0x0: + case 0x1: + /* multiplies, extra load/stores */ + sh = (insn >> 5) & 3; + if (sh == 0) { + if (op1 == 0x0) { + rd = (insn >> 16) & 0xf; + rn = (insn >> 12) & 0xf; + rs = (insn >> 8) & 0xf; + rm = (insn) & 0xf; + op1 = (insn >> 20) & 0xf; + switch (op1) { + case 0: case 1: case 2: case 3: case 6: + /* 32 bit mul */ + tmp = load_reg(s, rs); + tmp2 = load_reg(s, rm); + tcg_gen_mul_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (insn & (1 << 22)) { + /* Subtract (mls) */ + ARCH(6T2); + tmp2 = load_reg(s, rn); + tcg_gen_sub_i32(tmp, tmp2, tmp); + dead_tmp(tmp2); + } else if (insn & (1 << 21)) { + /* Add */ + tmp2 = load_reg(s, rn); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + if (insn & (1 << 20)) + gen_logic_CC(tmp); + store_reg(s, rd, tmp); + break; + default: + /* 64 bit mul */ + tmp = load_reg(s, rs); + tmp2 = load_reg(s, rm); + if (insn & (1 << 22)) + tmp64 = gen_muls_i64_i32(tmp, tmp2); + else + tmp64 = gen_mulu_i64_i32(tmp, tmp2); + if (insn & (1 << 21)) /* mult accumulate */ + gen_addq(s, tmp64, rn, rd); + if (!(insn & (1 << 23))) { /* double accumulate */ + ARCH(6); + gen_addq_lo(s, tmp64, rn); + gen_addq_lo(s, tmp64, rd); + } + if (insn & (1 << 20)) + gen_logicq_cc(tmp64); + gen_storeq_reg(s, rn, rd, tmp64); + tcg_temp_free_i64(tmp64); + break; + } + } else { + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + if (insn & (1 << 23)) { + /* load/store exclusive */ + op1 = (insn >> 21) & 0x3; + if (op1) + ARCH(6K); + else + ARCH(6); + addr = tcg_temp_local_new_i32(); + load_reg_var(s, addr, rn); + if (insn & (1 << 20)) { + switch (op1) { + case 0: /* ldrex */ + gen_load_exclusive(s, rd, 15, addr, 2); + break; + case 1: /* ldrexd */ + gen_load_exclusive(s, rd, rd + 1, addr, 3); + break; + case 2: /* ldrexb */ + gen_load_exclusive(s, rd, 15, addr, 0); + break; + case 3: /* ldrexh */ + gen_load_exclusive(s, rd, 15, addr, 1); + break; + default: + abort(); + } + } else { + rm = insn & 0xf; + switch (op1) { + case 0: /* strex */ + gen_store_exclusive(s, rd, rm, 15, addr, 2); + break; + case 1: /* strexd */ + gen_store_exclusive(s, rd, rm, rm + 1, addr, 3); + break; + case 2: /* strexb */ + gen_store_exclusive(s, rd, rm, 15, addr, 0); + break; + case 3: /* strexh */ + gen_store_exclusive(s, rd, rm, 15, addr, 1); + break; + default: + abort(); + } + } + tcg_temp_free(addr); + } else { + /* SWP instruction */ + rm = (insn) & 0xf; + + /* ??? This is not really atomic. However we know + we never have multiple CPUs running in parallel, + so it is good enough. */ + addr = load_reg(s, rn); + tmp = load_reg(s, rm); + if (insn & (1 << 22)) { + tmp2 = gen_ld8u(addr, IS_USER(s)); + gen_st8(tmp, addr, IS_USER(s)); + } else { + tmp2 = gen_ld32(addr, IS_USER(s)); + gen_st32(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + store_reg(s, rd, tmp2); + } + } + } else { + int address_offset; + int load; + /* Misc load/store */ + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + addr = load_reg(s, rn); + if (insn & (1 << 24)) + gen_add_datah_offset(s, insn, 0, addr); + address_offset = 0; + if (insn & (1 << 20)) { + /* load */ + switch(sh) { + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + tmp = gen_ld8s(addr, IS_USER(s)); + break; + default: + case 3: + tmp = gen_ld16s(addr, IS_USER(s)); + break; + } + load = 1; + } else if (sh & 2) { + /* doubleword */ + if (sh & 1) { + /* store */ + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, 4); + tmp = load_reg(s, rd + 1); + gen_st32(tmp, addr, IS_USER(s)); + load = 0; + } else { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + tcg_gen_addi_i32(addr, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + rd++; + load = 1; + } + address_offset = -4; + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st16(tmp, addr, IS_USER(s)); + load = 0; + } + /* Perform base writeback before the loaded value to + ensure correct behavior with overlapping index registers. + ldrd with base writeback is is undefined if the + destination and index registers overlap. */ + if (!(insn & (1 << 24))) { + gen_add_datah_offset(s, insn, address_offset, addr); + store_reg(s, rn, addr); + } else if (insn & (1 << 21)) { + if (address_offset) + tcg_gen_addi_i32(addr, addr, address_offset); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + if (load) { + /* Complete the load. */ + store_reg(s, rd, tmp); + } + } + break; + case 0x4: + case 0x5: + goto do_ldst; + case 0x6: + case 0x7: + if (insn & (1 << 4)) { + ARCH(6); + /* Armv6 Media instructions. */ + rm = insn & 0xf; + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + rs = (insn >> 8) & 0xf; + switch ((insn >> 23) & 3) { + case 0: /* Parallel add/subtract. */ + op1 = (insn >> 20) & 7; + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + sh = (insn >> 5) & 7; + if ((op1 & 3) == 0 || sh == 5 || sh == 6) + goto illegal_op; + gen_arm_parallel_addsub(op1, sh, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 1: + if ((insn & 0x00700020) == 0) { + /* Halfword pack. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + shift = (insn >> 7) & 0x1f; + if (insn & (1 << 6)) { + /* pkhtb */ + if (shift == 0) + shift = 31; + tcg_gen_sari_i32(tmp2, tmp2, shift); + tcg_gen_andi_i32(tmp, tmp, 0xffff0000); + tcg_gen_ext16u_i32(tmp2, tmp2); + } else { + /* pkhbt */ + if (shift) + tcg_gen_shli_i32(tmp2, tmp2, shift); + tcg_gen_ext16u_i32(tmp, tmp); + tcg_gen_andi_i32(tmp2, tmp2, 0xffff0000); + } + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else if ((insn & 0x00200020) == 0x00200000) { + /* [us]sat */ + tmp = load_reg(s, rm); + shift = (insn >> 7) & 0x1f; + if (insn & (1 << 6)) { + if (shift == 0) + shift = 31; + tcg_gen_sari_i32(tmp, tmp, shift); + } else { + tcg_gen_shli_i32(tmp, tmp, shift); + } + sh = (insn >> 16) & 0x1f; + if (sh != 0) { + tmp2 = tcg_const_i32(sh); + if (insn & (1 << 22)) + gen_helper_usat(tmp, tmp, tmp2); + else + gen_helper_ssat(tmp, tmp, tmp2); + tcg_temp_free_i32(tmp2); + } + store_reg(s, rd, tmp); + } else if ((insn & 0x00300fe0) == 0x00200f20) { + /* [us]sat16 */ + tmp = load_reg(s, rm); + sh = (insn >> 16) & 0x1f; + if (sh != 0) { + tmp2 = tcg_const_i32(sh); + if (insn & (1 << 22)) + gen_helper_usat16(tmp, tmp, tmp2); + else + gen_helper_ssat16(tmp, tmp, tmp2); + tcg_temp_free_i32(tmp2); + } + store_reg(s, rd, tmp); + } else if ((insn & 0x00700fe0) == 0x00000fa0) { + /* Select bytes. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + tmp3 = new_tmp(); + tcg_gen_ld_i32(tmp3, cpu_env, offsetof(CPUState, GE)); + gen_helper_sel_flags(tmp, tmp3, tmp, tmp2); + dead_tmp(tmp3); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else if ((insn & 0x000003e0) == 0x00000060) { + tmp = load_reg(s, rm); + shift = (insn >> 10) & 3; + /* ??? In many cases it's not neccessary to do a + rotate, a shift is sufficient. */ + if (shift != 0) + tcg_gen_rotri_i32(tmp, tmp, shift * 8); + op1 = (insn >> 20) & 7; + switch (op1) { + case 0: gen_sxtb16(tmp); break; + case 2: gen_sxtb(tmp); break; + case 3: gen_sxth(tmp); break; + case 4: gen_uxtb16(tmp); break; + case 6: gen_uxtb(tmp); break; + case 7: gen_uxth(tmp); break; + default: goto illegal_op; + } + if (rn != 15) { + tmp2 = load_reg(s, rn); + if ((op1 & 3) == 0) { + gen_add16(tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + } + store_reg(s, rd, tmp); + } else if ((insn & 0x003f0f60) == 0x003f0f20) { + /* rev */ + tmp = load_reg(s, rm); + if (insn & (1 << 22)) { + if (insn & (1 << 7)) { + gen_revsh(tmp); + } else { + ARCH(6T2); + gen_helper_rbit(tmp, tmp); + } + } else { + if (insn & (1 << 7)) + gen_rev16(tmp); + else + tcg_gen_bswap32_i32(tmp, tmp); + } + store_reg(s, rd, tmp); + } else { + goto illegal_op; + } + break; + case 2: /* Multiplies (Type 3). */ + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + if (insn & (1 << 20)) { + /* Signed multiply most significant [accumulate]. */ + tmp64 = gen_muls_i64_i32(tmp, tmp2); + if (insn & (1 << 5)) + tcg_gen_addi_i64(tmp64, tmp64, 0x80000000u); + tcg_gen_shri_i64(tmp64, tmp64, 32); + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, tmp64); + tcg_temp_free_i64(tmp64); + if (rd != 15) { + tmp2 = load_reg(s, rd); + if (insn & (1 << 6)) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + } + store_reg(s, rn, tmp); + } else { + if (insn & (1 << 5)) + gen_swap_half(tmp2); + gen_smul_dual(tmp, tmp2); + /* This addition cannot overflow. */ + if (insn & (1 << 6)) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + if (insn & (1 << 22)) { + /* smlald, smlsld */ + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + gen_addq(s, tmp64, rd, rn); + gen_storeq_reg(s, rd, rn, tmp64); + tcg_temp_free_i64(tmp64); + } else { + /* smuad, smusd, smlad, smlsd */ + if (rd != 15) + { + tmp2 = load_reg(s, rd); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rn, tmp); + } + } + break; + case 3: + op1 = ((insn >> 17) & 0x38) | ((insn >> 5) & 7); + switch (op1) { + case 0: /* Unsigned sum of absolute differences. */ + ARCH(6); + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + gen_helper_usad8(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (rd != 15) { + tmp2 = load_reg(s, rd); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rn, tmp); + break; + case 0x20: case 0x24: case 0x28: case 0x2c: + /* Bitfield insert/clear. */ + ARCH(6T2); + shift = (insn >> 7) & 0x1f; + i = (insn >> 16) & 0x1f; + i = i + 1 - shift; + if (rm == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rm); + } + if (i != 32) { + tmp2 = load_reg(s, rd); + gen_bfi(tmp, tmp2, tmp, shift, (1u << i) - 1); + dead_tmp(tmp2); + } + store_reg(s, rd, tmp); + break; + case 0x12: case 0x16: case 0x1a: case 0x1e: /* sbfx */ + case 0x32: case 0x36: case 0x3a: case 0x3e: /* ubfx */ + ARCH(6T2); + tmp = load_reg(s, rm); + shift = (insn >> 7) & 0x1f; + i = ((insn >> 16) & 0x1f) + 1; + if (shift + i > 32) + goto illegal_op; + if (i < 32) { + if (op1 & 0x20) { + gen_ubfx(tmp, shift, (1u << i) - 1); + } else { + gen_sbfx(tmp, shift, i); + } + } + store_reg(s, rd, tmp); + break; + default: + goto illegal_op; + } + break; + } + break; + } + do_ldst: + /* Check for undefined extension instructions + * per the ARM Bible IE: + * xxxx 0111 1111 xxxx xxxx xxxx 1111 xxxx + */ + sh = (0xf << 20) | (0xf << 4); + if (op1 == 0x7 && ((insn & sh) == sh)) + { + goto illegal_op; + } + /* load/store byte/word */ + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + tmp2 = load_reg(s, rn); + i = (IS_USER(s) || (insn & 0x01200000) == 0x00200000); + if (insn & (1 << 24)) + gen_add_data_offset(s, insn, tmp2); + if (insn & (1 << 20)) { + /* load */ + if (insn & (1 << 22)) { + tmp = gen_ld8u(tmp2, i); + } else { + tmp = gen_ld32(tmp2, i); + } + } else { + /* store */ + tmp = load_reg(s, rd); + if (insn & (1 << 22)) + gen_st8(tmp, tmp2, i); + else + gen_st32(tmp, tmp2, i); + } + if (!(insn & (1 << 24))) { + gen_add_data_offset(s, insn, tmp2); + store_reg(s, rn, tmp2); + } else if (insn & (1 << 21)) { + store_reg(s, rn, tmp2); + } else { + dead_tmp(tmp2); + } + if (insn & (1 << 20)) { + /* Complete the load. */ + if (rd == 15) + gen_bx(s, tmp); + else + store_reg(s, rd, tmp); + } + break; + case 0x08: + case 0x09: + { + int j, n, user, loaded_base; + TCGv loaded_var; + /* load/store multiple words */ + /* XXX: store correct base if write back */ + user = 0; + if (insn & (1 << 22)) { + if (IS_USER(s)) + goto illegal_op; /* only usable in supervisor mode */ + + if ((insn & (1 << 15)) == 0) + user = 1; + } + rn = (insn >> 16) & 0xf; + addr = load_reg(s, rn); + + /* compute total size */ + loaded_base = 0; + TCGV_UNUSED(loaded_var); + n = 0; + for(i=0;i<16;i++) { + if (insn & (1 << i)) + n++; + } + /* XXX: test invalid n == 0 case ? */ + if (insn & (1 << 23)) { + if (insn & (1 << 24)) { + /* pre increment */ + tcg_gen_addi_i32(addr, addr, 4); + } else { + /* post increment */ + } + } else { + if (insn & (1 << 24)) { + /* pre decrement */ + tcg_gen_addi_i32(addr, addr, -(n * 4)); + } else { + /* post decrement */ + if (n != 1) + tcg_gen_addi_i32(addr, addr, -((n - 1) * 4)); + } + } + j = 0; + for(i=0;i<16;i++) { + if (insn & (1 << i)) { + if (insn & (1 << 20)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + if (i == 15) { + gen_bx(s, tmp); + } else if (user) { + tmp2 = tcg_const_i32(i); + gen_helper_set_user_reg(tmp2, tmp); + tcg_temp_free_i32(tmp2); + dead_tmp(tmp); + } else if (i == rn) { + loaded_var = tmp; + loaded_base = 1; + } else { + store_reg(s, i, tmp); + } + } else { + /* store */ + if (i == 15) { + /* special case: r15 = PC + 8 */ + val = (long)s->pc + 4; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + } else if (user) { + tmp = new_tmp(); + tmp2 = tcg_const_i32(i); + gen_helper_get_user_reg(tmp, tmp2); + tcg_temp_free_i32(tmp2); + } else { + tmp = load_reg(s, i); + } + gen_st32(tmp, addr, IS_USER(s)); + } + j++; + /* no need to add after the last transfer */ + if (j != n) + tcg_gen_addi_i32(addr, addr, 4); + } + } + if (insn & (1 << 21)) { + /* write back */ + if (insn & (1 << 23)) { + if (insn & (1 << 24)) { + /* pre increment */ + } else { + /* post increment */ + tcg_gen_addi_i32(addr, addr, 4); + } + } else { + if (insn & (1 << 24)) { + /* pre decrement */ + if (n != 1) + tcg_gen_addi_i32(addr, addr, -((n - 1) * 4)); + } else { + /* post decrement */ + tcg_gen_addi_i32(addr, addr, -(n * 4)); + } + } + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + if (loaded_base) { + store_reg(s, rn, loaded_var); + } + if ((insn & (1 << 22)) && !user) { + /* Restore CPSR from SPSR. */ + tmp = load_cpu_field(spsr); + gen_set_cpsr(tmp, 0xffffffff); + dead_tmp(tmp); + s->is_jmp = DISAS_UPDATE; + } + } + break; + case 0xa: + case 0xb: + { + int32_t offset; + + /* branch (and link) */ + val = (int32_t)s->pc; + if (insn & (1 << 24)) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + store_reg(s, 14, tmp); + } + offset = (((int32_t)insn << 8) >> 8); + val += (offset << 2) + 4; + gen_jmp(s, val); + } + break; + case 0xc: + case 0xd: + case 0xe: + /* Coprocessor. */ + if (disas_coproc_insn(env, s, insn)) + goto illegal_op; + break; + case 0xf: + /* swi */ + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_SWI; + break; + default: + illegal_op: + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_UDEF); + s->is_jmp = DISAS_JUMP; + break; + } + } +} + +/* Return true if this is a Thumb-2 logical op. */ +static int +thumb2_logic_op(int op) +{ + return (op < 8); +} + +/* Generate code for a Thumb-2 data processing operation. If CONDS is nonzero + then set condition code flags based on the result of the operation. + If SHIFTER_OUT is nonzero then set the carry flag for logical operations + to the high bit of T1. + Returns zero if the opcode is valid. */ + +static int +gen_thumb2_data_op(DisasContext *s, int op, int conds, uint32_t shifter_out, TCGv t0, TCGv t1) +{ + int logic_cc; + + logic_cc = 0; + switch (op) { + case 0: /* and */ + tcg_gen_and_i32(t0, t0, t1); + logic_cc = conds; + break; + case 1: /* bic */ + tcg_gen_andc_i32(t0, t0, t1); + logic_cc = conds; + break; + case 2: /* orr */ + tcg_gen_or_i32(t0, t0, t1); + logic_cc = conds; + break; + case 3: /* orn */ + tcg_gen_not_i32(t1, t1); + tcg_gen_or_i32(t0, t0, t1); + logic_cc = conds; + break; + case 4: /* eor */ + tcg_gen_xor_i32(t0, t0, t1); + logic_cc = conds; + break; + case 8: /* add */ + if (conds) + gen_helper_add_cc(t0, t0, t1); + else + tcg_gen_add_i32(t0, t0, t1); + break; + case 10: /* adc */ + if (conds) + gen_helper_adc_cc(t0, t0, t1); + else + gen_adc(t0, t1); + break; + case 11: /* sbc */ + if (conds) + gen_helper_sbc_cc(t0, t0, t1); + else + gen_sub_carry(t0, t0, t1); + break; + case 13: /* sub */ + if (conds) + gen_helper_sub_cc(t0, t0, t1); + else + tcg_gen_sub_i32(t0, t0, t1); + break; + case 14: /* rsb */ + if (conds) + gen_helper_sub_cc(t0, t1, t0); + else + tcg_gen_sub_i32(t0, t1, t0); + break; + default: /* 5, 6, 7, 9, 12, 15. */ + return 1; + } + if (logic_cc) { + gen_logic_CC(t0); + if (shifter_out) + gen_set_CF_bit31(t1); + } + return 0; +} + +/* Translate a 32-bit thumb instruction. Returns nonzero if the instruction + is not legal. */ +static int disas_thumb2_insn(CPUState *env, DisasContext *s, uint16_t insn_hw1) +{ + uint32_t insn, imm, shift, offset; + uint32_t rd, rn, rm, rs; + TCGv tmp; + TCGv tmp2; + TCGv tmp3; + TCGv addr; + TCGv_i64 tmp64; + int op; + int shiftop; + int conds; + int logic_cc; + + if (!(arm_feature(env, ARM_FEATURE_THUMB2) + || arm_feature (env, ARM_FEATURE_M))) { + /* Thumb-1 cores may need to treat bl and blx as a pair of + 16-bit instructions to get correct prefetch abort behavior. */ + insn = insn_hw1; + if ((insn & (1 << 12)) == 0) { + /* Second half of blx. */ + offset = ((insn & 0x7ff) << 1); + tmp = load_reg(s, 14); + tcg_gen_addi_i32(tmp, tmp, offset); + tcg_gen_andi_i32(tmp, tmp, 0xfffffffc); + + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, s->pc | 1); + store_reg(s, 14, tmp2); + gen_bx(s, tmp); + return 0; + } + if (insn & (1 << 11)) { + /* Second half of bl. */ + offset = ((insn & 0x7ff) << 1) | 1; + tmp = load_reg(s, 14); + tcg_gen_addi_i32(tmp, tmp, offset); + + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, s->pc | 1); + store_reg(s, 14, tmp2); + gen_bx(s, tmp); + return 0; + } + if ((s->pc & ~TARGET_PAGE_MASK) == 0) { + /* Instruction spans a page boundary. Implement it as two + 16-bit instructions in case the second half causes an + prefetch abort. */ + offset = ((int32_t)insn << 21) >> 9; + tcg_gen_movi_i32(cpu_R[14], s->pc + 2 + offset); + return 0; + } + /* Fall through to 32-bit decode. */ + } + + insn = lduw_code(s->pc); + s->pc += 2; + insn |= (uint32_t)insn_hw1 << 16; + + if ((insn & 0xf800e800) != 0xf000e800) { + ARCH(6T2); + } + + rn = (insn >> 16) & 0xf; + rs = (insn >> 12) & 0xf; + rd = (insn >> 8) & 0xf; + rm = insn & 0xf; + switch ((insn >> 25) & 0xf) { + case 0: case 1: case 2: case 3: + /* 16-bit instructions. Should never happen. */ + abort(); + case 4: + if (insn & (1 << 22)) { + /* Other load/store, table branch. */ + if (insn & 0x01200000) { + /* Load/store doubleword. */ + if (rn == 15) { + addr = new_tmp(); + tcg_gen_movi_i32(addr, s->pc & ~3); + } else { + addr = load_reg(s, rn); + } + offset = (insn & 0xff) * 4; + if ((insn & (1 << 23)) == 0) + offset = -offset; + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, offset); + offset = 0; + } + if (insn & (1 << 20)) { + /* ldrd */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rs, tmp); + tcg_gen_addi_i32(addr, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* strd */ + tmp = load_reg(s, rs); + gen_st32(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, 4); + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + } + if (insn & (1 << 21)) { + /* Base writeback. */ + if (rn == 15) + goto illegal_op; + tcg_gen_addi_i32(addr, addr, offset - 4); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } else if ((insn & (1 << 23)) == 0) { + /* Load/store exclusive word. */ + addr = tcg_temp_local_new(); + load_reg_var(s, addr, rn); + tcg_gen_addi_i32(addr, addr, (insn & 0xff) << 2); + if (insn & (1 << 20)) { + gen_load_exclusive(s, rs, 15, addr, 2); + } else { + gen_store_exclusive(s, rd, rs, 15, addr, 2); + } + tcg_temp_free(addr); + } else if ((insn & (1 << 6)) == 0) { + /* Table Branch. */ + if (rn == 15) { + addr = new_tmp(); + tcg_gen_movi_i32(addr, s->pc); + } else { + addr = load_reg(s, rn); + } + tmp = load_reg(s, rm); + tcg_gen_add_i32(addr, addr, tmp); + if (insn & (1 << 4)) { + /* tbh */ + tcg_gen_add_i32(addr, addr, tmp); + dead_tmp(tmp); + tmp = gen_ld16u(addr, IS_USER(s)); + } else { /* tbb */ + dead_tmp(tmp); + tmp = gen_ld8u(addr, IS_USER(s)); + } + dead_tmp(addr); + tcg_gen_shli_i32(tmp, tmp, 1); + tcg_gen_addi_i32(tmp, tmp, s->pc); + store_reg(s, 15, tmp); + } else { + /* Load/store exclusive byte/halfword/doubleword. */ + ARCH(7); + op = (insn >> 4) & 0x3; + if (op == 2) { + goto illegal_op; + } + addr = tcg_temp_local_new(); + load_reg_var(s, addr, rn); + if (insn & (1 << 20)) { + gen_load_exclusive(s, rs, rd, addr, op); + } else { + gen_store_exclusive(s, rm, rs, rd, addr, op); + } + tcg_temp_free(addr); + } + } else { + /* Load/store multiple, RFE, SRS. */ + if (((insn >> 23) & 1) == ((insn >> 24) & 1)) { + /* Not available in user mode. */ + if (IS_USER(s)) + goto illegal_op; + if (insn & (1 << 20)) { + /* rfe */ + addr = load_reg(s, rn); + if ((insn & (1 << 24)) == 0) + tcg_gen_addi_i32(addr, addr, -8); + /* Load PC into tmp and CPSR into tmp2. */ + tmp = gen_ld32(addr, 0); + tcg_gen_addi_i32(addr, addr, 4); + tmp2 = gen_ld32(addr, 0); + if (insn & (1 << 21)) { + /* Base writeback. */ + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, 4); + } else { + tcg_gen_addi_i32(addr, addr, -4); + } + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + gen_rfe(s, tmp, tmp2); + } else { + /* srs */ + op = (insn & 0x1f); + if (op == (env->uncached_cpsr & CPSR_M)) { + addr = load_reg(s, 13); + } else { + addr = new_tmp(); + tmp = tcg_const_i32(op); + gen_helper_get_r13_banked(addr, cpu_env, tmp); + tcg_temp_free_i32(tmp); + } + if ((insn & (1 << 24)) == 0) { + tcg_gen_addi_i32(addr, addr, -8); + } + tmp = load_reg(s, 14); + gen_st32(tmp, addr, 0); + tcg_gen_addi_i32(addr, addr, 4); + tmp = new_tmp(); + gen_helper_cpsr_read(tmp); + gen_st32(tmp, addr, 0); + if (insn & (1 << 21)) { + if ((insn & (1 << 24)) == 0) { + tcg_gen_addi_i32(addr, addr, -4); + } else { + tcg_gen_addi_i32(addr, addr, 4); + } + if (op == (env->uncached_cpsr & CPSR_M)) { + store_reg(s, 13, addr); + } else { + tmp = tcg_const_i32(op); + gen_helper_set_r13_banked(cpu_env, tmp, addr); + tcg_temp_free_i32(tmp); + } + } else { + dead_tmp(addr); + } + } + } else { + int i; + /* Load/store multiple. */ + addr = load_reg(s, rn); + offset = 0; + for (i = 0; i < 16; i++) { + if (insn & (1 << i)) + offset += 4; + } + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, -offset); + } + + for (i = 0; i < 16; i++) { + if ((insn & (1 << i)) == 0) + continue; + if (insn & (1 << 20)) { + /* Load. */ + tmp = gen_ld32(addr, IS_USER(s)); + if (i == 15) { + gen_bx(s, tmp); + } else { + store_reg(s, i, tmp); + } + } else { + /* Store. */ + tmp = load_reg(s, i); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, 4); + } + if (insn & (1 << 21)) { + /* Base register writeback. */ + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, -offset); + } + /* Fault if writeback register is in register list. */ + if (insn & (1 << rn)) + goto illegal_op; + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } + } + break; + case 5: /* Data processing register constant shift. */ + if (rn == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rn); + } + tmp2 = load_reg(s, rm); + op = (insn >> 21) & 0xf; + shiftop = (insn >> 4) & 3; + shift = ((insn >> 6) & 3) | ((insn >> 10) & 0x1c); + conds = (insn & (1 << 20)) != 0; + logic_cc = (conds && thumb2_logic_op(op)); + gen_arm_shift_im(tmp2, shiftop, shift, logic_cc); + if (gen_thumb2_data_op(s, op, conds, 0, tmp, tmp2)) + goto illegal_op; + dead_tmp(tmp2); + if (rd != 15) { + store_reg(s, rd, tmp); + } else { + dead_tmp(tmp); + } + break; + case 13: /* Misc data processing. */ + op = ((insn >> 22) & 6) | ((insn >> 7) & 1); + if (op < 4 && (insn & 0xf000) != 0xf000) + goto illegal_op; + switch (op) { + case 0: /* Register controlled shift. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + if ((insn & 0x70) != 0) + goto illegal_op; + op = (insn >> 21) & 3; + logic_cc = (insn & (1 << 20)) != 0; + gen_arm_shift_reg(tmp, op, tmp2, logic_cc); + if (logic_cc) + gen_logic_CC(tmp); + store_reg_bx(env, s, rd, tmp); + break; + case 1: /* Sign/zero extend. */ + tmp = load_reg(s, rm); + shift = (insn >> 4) & 3; + /* ??? In many cases it's not neccessary to do a + rotate, a shift is sufficient. */ + if (shift != 0) + tcg_gen_rotri_i32(tmp, tmp, shift * 8); + op = (insn >> 20) & 7; + switch (op) { + case 0: gen_sxth(tmp); break; + case 1: gen_uxth(tmp); break; + case 2: gen_sxtb16(tmp); break; + case 3: gen_uxtb16(tmp); break; + case 4: gen_sxtb(tmp); break; + case 5: gen_uxtb(tmp); break; + default: goto illegal_op; + } + if (rn != 15) { + tmp2 = load_reg(s, rn); + if ((op >> 1) == 1) { + gen_add16(tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + } + store_reg(s, rd, tmp); + break; + case 2: /* SIMD add/subtract. */ + op = (insn >> 20) & 7; + shift = (insn >> 4) & 7; + if ((op & 3) == 3 || (shift & 3) == 3) + goto illegal_op; + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + gen_thumb2_parallel_addsub(op, shift, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 3: /* Other data processing. */ + op = ((insn >> 17) & 0x38) | ((insn >> 4) & 7); + if (op < 4) { + /* Saturating add/subtract. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + if (op & 2) + gen_helper_double_saturate(tmp, tmp); + if (op & 1) + gen_helper_sub_saturate(tmp, tmp2, tmp); + else + gen_helper_add_saturate(tmp, tmp, tmp2); + dead_tmp(tmp2); + } else { + tmp = load_reg(s, rn); + switch (op) { + case 0x0a: /* rbit */ + gen_helper_rbit(tmp, tmp); + break; + case 0x08: /* rev */ + tcg_gen_bswap32_i32(tmp, tmp); + break; + case 0x09: /* rev16 */ + gen_rev16(tmp); + break; + case 0x0b: /* revsh */ + gen_revsh(tmp); + break; + case 0x10: /* sel */ + tmp2 = load_reg(s, rm); + tmp3 = new_tmp(); + tcg_gen_ld_i32(tmp3, cpu_env, offsetof(CPUState, GE)); + gen_helper_sel_flags(tmp, tmp3, tmp, tmp2); + dead_tmp(tmp3); + dead_tmp(tmp2); + break; + case 0x18: /* clz */ + gen_helper_clz(tmp, tmp); + break; + default: + goto illegal_op; + } + } + store_reg(s, rd, tmp); + break; + case 4: case 5: /* 32-bit multiply. Sum of absolute differences. */ + op = (insn >> 4) & 0xf; + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + switch ((insn >> 20) & 7) { + case 0: /* 32 x 32 -> 32 */ + tcg_gen_mul_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (rs != 15) { + tmp2 = load_reg(s, rs); + if (op) + tcg_gen_sub_i32(tmp, tmp2, tmp); + else + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 1: /* 16 x 16 -> 32 */ + gen_mulxy(tmp, tmp2, op & 2, op & 1); + dead_tmp(tmp2); + if (rs != 15) { + tmp2 = load_reg(s, rs); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 2: /* Dual multiply add. */ + case 4: /* Dual multiply subtract. */ + if (op) + gen_swap_half(tmp2); + gen_smul_dual(tmp, tmp2); + /* This addition cannot overflow. */ + if (insn & (1 << 22)) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + if (rs != 15) + { + tmp2 = load_reg(s, rs); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 3: /* 32 * 16 -> 32msb */ + if (op) + tcg_gen_sari_i32(tmp2, tmp2, 16); + else + gen_sxth(tmp2); + tmp64 = gen_muls_i64_i32(tmp, tmp2); + tcg_gen_shri_i64(tmp64, tmp64, 16); + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, tmp64); + tcg_temp_free_i64(tmp64); + if (rs != 15) + { + tmp2 = load_reg(s, rs); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 5: case 6: /* 32 * 32 -> 32msb */ + gen_imull(tmp, tmp2); + if (insn & (1 << 5)) { + gen_roundqd(tmp, tmp2); + dead_tmp(tmp2); + } else { + dead_tmp(tmp); + tmp = tmp2; + } + if (rs != 15) { + tmp2 = load_reg(s, rs); + if (insn & (1 << 21)) { + tcg_gen_add_i32(tmp, tmp, tmp2); + } else { + tcg_gen_sub_i32(tmp, tmp2, tmp); + } + dead_tmp(tmp2); + } + break; + case 7: /* Unsigned sum of absolute differences. */ + gen_helper_usad8(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (rs != 15) { + tmp2 = load_reg(s, rs); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + } + store_reg(s, rd, tmp); + break; + case 6: case 7: /* 64-bit multiply, Divide. */ + op = ((insn >> 4) & 0xf) | ((insn >> 16) & 0x70); + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + if ((op & 0x50) == 0x10) { + /* sdiv, udiv */ + if (!arm_feature(env, ARM_FEATURE_DIV)) + goto illegal_op; + if (op & 0x20) + gen_helper_udiv(tmp, tmp, tmp2); + else + gen_helper_sdiv(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else if ((op & 0xe) == 0xc) { + /* Dual multiply accumulate long. */ + if (op & 1) + gen_swap_half(tmp2); + gen_smul_dual(tmp, tmp2); + if (op & 0x10) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + /* BUGFIX */ + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + gen_addq(s, tmp64, rs, rd); + gen_storeq_reg(s, rs, rd, tmp64); + tcg_temp_free_i64(tmp64); + } else { + if (op & 0x20) { + /* Unsigned 64-bit multiply */ + tmp64 = gen_mulu_i64_i32(tmp, tmp2); + } else { + if (op & 8) { + /* smlalxy */ + gen_mulxy(tmp, tmp2, op & 2, op & 1); + dead_tmp(tmp2); + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + } else { + /* Signed 64-bit multiply */ + tmp64 = gen_muls_i64_i32(tmp, tmp2); + } + } + if (op & 4) { + /* umaal */ + gen_addq_lo(s, tmp64, rs); + gen_addq_lo(s, tmp64, rd); + } else if (op & 0x40) { + /* 64-bit accumulate. */ + gen_addq(s, tmp64, rs, rd); + } + gen_storeq_reg(s, rs, rd, tmp64); + tcg_temp_free_i64(tmp64); + } + break; + } + break; + case 6: case 7: case 14: case 15: + /* Coprocessor. */ + if (((insn >> 24) & 3) == 3) { + /* Translate into the equivalent ARM encoding. */ + insn = (insn & 0xe2ffffff) | ((insn & (1 << 28)) >> 4); + if (disas_neon_data_insn(env, s, insn)) + goto illegal_op; + } else { + if (insn & (1 << 28)) + goto illegal_op; + if (disas_coproc_insn (env, s, insn)) + goto illegal_op; + } + break; + case 8: case 9: case 10: case 11: + if (insn & (1 << 15)) { + /* Branches, misc control. */ + if (insn & 0x5000) { + /* Unconditional branch. */ + /* signextend(hw1[10:0]) -> offset[:12]. */ + offset = ((int32_t)insn << 5) >> 9 & ~(int32_t)0xfff; + /* hw1[10:0] -> offset[11:1]. */ + offset |= (insn & 0x7ff) << 1; + /* (~hw2[13, 11] ^ offset[24]) -> offset[23,22] + offset[24:22] already have the same value because of the + sign extension above. */ + offset ^= ((~insn) & (1 << 13)) << 10; + offset ^= ((~insn) & (1 << 11)) << 11; + + if (insn & (1 << 14)) { + /* Branch and link. */ + tcg_gen_movi_i32(cpu_R[14], s->pc | 1); + } + + offset += s->pc; + if (insn & (1 << 12)) { + /* b/bl */ + gen_jmp(s, offset); + } else { + /* blx */ + offset &= ~(uint32_t)2; + gen_bx_im(s, offset); + } + } else if (((insn >> 23) & 7) == 7) { + /* Misc control */ + if (insn & (1 << 13)) + goto illegal_op; + + if (insn & (1 << 26)) { + /* Secure monitor call (v6Z) */ + goto illegal_op; /* not implemented. */ + } else { + op = (insn >> 20) & 7; + switch (op) { + case 0: /* msr cpsr. */ + if (IS_M(env)) { + tmp = load_reg(s, rn); + addr = tcg_const_i32(insn & 0xff); + gen_helper_v7m_msr(cpu_env, addr, tmp); + tcg_temp_free_i32(addr); + dead_tmp(tmp); + gen_lookup_tb(s); + break; + } + /* fall through */ + case 1: /* msr spsr. */ + if (IS_M(env)) + goto illegal_op; + tmp = load_reg(s, rn); + if (gen_set_psr(s, + msr_mask(env, s, (insn >> 8) & 0xf, op == 1), + op == 1, tmp)) + goto illegal_op; + break; + case 2: /* cps, nop-hint. */ + if (((insn >> 8) & 7) == 0) { + gen_nop_hint(s, insn & 0xff); + } + /* Implemented as NOP in user mode. */ + if (IS_USER(s)) + break; + offset = 0; + imm = 0; + if (insn & (1 << 10)) { + if (insn & (1 << 7)) + offset |= CPSR_A; + if (insn & (1 << 6)) + offset |= CPSR_I; + if (insn & (1 << 5)) + offset |= CPSR_F; + if (insn & (1 << 9)) + imm = CPSR_A | CPSR_I | CPSR_F; + } + if (insn & (1 << 8)) { + offset |= 0x1f; + imm |= (insn & 0x1f); + } + if (offset) { + gen_set_psr_im(s, offset, 0, imm); + } + break; + case 3: /* Special control operations. */ + ARCH(7); + op = (insn >> 4) & 0xf; + switch (op) { + case 2: /* clrex */ + gen_clrex(s); + break; + case 4: /* dsb */ + case 5: /* dmb */ + case 6: /* isb */ + /* These execute as NOPs. */ + break; + default: + goto illegal_op; + } + break; + case 4: /* bxj */ + /* Trivial implementation equivalent to bx. */ + tmp = load_reg(s, rn); + gen_bx(s, tmp); + break; + case 5: /* Exception return. */ + /* Unpredictable in user mode. */ + goto illegal_op; + case 6: /* mrs cpsr. */ + tmp = new_tmp(); + if (IS_M(env)) { + addr = tcg_const_i32(insn & 0xff); + gen_helper_v7m_mrs(tmp, cpu_env, addr); + tcg_temp_free_i32(addr); + } else { + gen_helper_cpsr_read(tmp); + } + store_reg(s, rd, tmp); + break; + case 7: /* mrs spsr. */ + /* Not accessible in user mode. */ + if (IS_USER(s) || IS_M(env)) + goto illegal_op; + tmp = load_cpu_field(spsr); + store_reg(s, rd, tmp); + break; + } + } + } else { + /* Conditional branch. */ + op = (insn >> 22) & 0xf; + /* Generate a conditional jump to next instruction. */ + s->condlabel = gen_new_label(); + gen_test_cc(op ^ 1, s->condlabel); + s->condjmp = 1; + + /* offset[11:1] = insn[10:0] */ + offset = (insn & 0x7ff) << 1; + /* offset[17:12] = insn[21:16]. */ + offset |= (insn & 0x003f0000) >> 4; + /* offset[31:20] = insn[26]. */ + offset |= ((int32_t)((insn << 5) & 0x80000000)) >> 11; + /* offset[18] = insn[13]. */ + offset |= (insn & (1 << 13)) << 5; + /* offset[19] = insn[11]. */ + offset |= (insn & (1 << 11)) << 8; + + /* jump to the offset */ + gen_jmp(s, s->pc + offset); + } + } else { + /* Data processing immediate. */ + if (insn & (1 << 25)) { + if (insn & (1 << 24)) { + if (insn & (1 << 20)) + goto illegal_op; + /* Bitfield/Saturate. */ + op = (insn >> 21) & 7; + imm = insn & 0x1f; + shift = ((insn >> 6) & 3) | ((insn >> 10) & 0x1c); + if (rn == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rn); + } + switch (op) { + case 2: /* Signed bitfield extract. */ + imm++; + if (shift + imm > 32) + goto illegal_op; + if (imm < 32) + gen_sbfx(tmp, shift, imm); + break; + case 6: /* Unsigned bitfield extract. */ + imm++; + if (shift + imm > 32) + goto illegal_op; + if (imm < 32) + gen_ubfx(tmp, shift, (1u << imm) - 1); + break; + case 3: /* Bitfield insert/clear. */ + if (imm < shift) + goto illegal_op; + imm = imm + 1 - shift; + if (imm != 32) { + tmp2 = load_reg(s, rd); + gen_bfi(tmp, tmp2, tmp, shift, (1u << imm) - 1); + dead_tmp(tmp2); + } + break; + case 7: + goto illegal_op; + default: /* Saturate. */ + if (shift) { + if (op & 1) + tcg_gen_sari_i32(tmp, tmp, shift); + else + tcg_gen_shli_i32(tmp, tmp, shift); + } + tmp2 = tcg_const_i32(imm); + if (op & 4) { + /* Unsigned. */ + if ((op & 1) && shift == 0) + gen_helper_usat16(tmp, tmp, tmp2); + else + gen_helper_usat(tmp, tmp, tmp2); + } else { + /* Signed. */ + if ((op & 1) && shift == 0) + gen_helper_ssat16(tmp, tmp, tmp2); + else + gen_helper_ssat(tmp, tmp, tmp2); + } + tcg_temp_free_i32(tmp2); + break; + } + store_reg(s, rd, tmp); + } else { + imm = ((insn & 0x04000000) >> 15) + | ((insn & 0x7000) >> 4) | (insn & 0xff); + if (insn & (1 << 22)) { + /* 16-bit immediate. */ + imm |= (insn >> 4) & 0xf000; + if (insn & (1 << 23)) { + /* movt */ + tmp = load_reg(s, rd); + tcg_gen_ext16u_i32(tmp, tmp); + tcg_gen_ori_i32(tmp, tmp, imm << 16); + } else { + /* movw */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, imm); + } + } else { + /* Add/sub 12-bit immediate. */ + if (rn == 15) { + offset = s->pc & ~(uint32_t)3; + if (insn & (1 << 23)) + offset -= imm; + else + offset += imm; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, offset); + } else { + tmp = load_reg(s, rn); + if (insn & (1 << 23)) + tcg_gen_subi_i32(tmp, tmp, imm); + else + tcg_gen_addi_i32(tmp, tmp, imm); + } + } + store_reg(s, rd, tmp); + } + } else { + int shifter_out = 0; + /* modified 12-bit immediate. */ + shift = ((insn & 0x04000000) >> 23) | ((insn & 0x7000) >> 12); + imm = (insn & 0xff); + switch (shift) { + case 0: /* XY */ + /* Nothing to do. */ + break; + case 1: /* 00XY00XY */ + imm |= imm << 16; + break; + case 2: /* XY00XY00 */ + imm |= imm << 16; + imm <<= 8; + break; + case 3: /* XYXYXYXY */ + imm |= imm << 16; + imm |= imm << 8; + break; + default: /* Rotated constant. */ + shift = (shift << 1) | (imm >> 7); + imm |= 0x80; + imm = imm << (32 - shift); + shifter_out = 1; + break; + } + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, imm); + rn = (insn >> 16) & 0xf; + if (rn == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rn); + } + op = (insn >> 21) & 0xf; + if (gen_thumb2_data_op(s, op, (insn & (1 << 20)) != 0, + shifter_out, tmp, tmp2)) + goto illegal_op; + dead_tmp(tmp2); + rd = (insn >> 8) & 0xf; + if (rd != 15) { + store_reg(s, rd, tmp); + } else { + dead_tmp(tmp); + } + } + } + break; + case 12: /* Load/store single data item. */ + { + int postinc = 0; + int writeback = 0; + int user; + if ((insn & 0x01100000) == 0x01000000) { + if (disas_neon_ls_insn(env, s, insn)) + goto illegal_op; + break; + } + user = IS_USER(s); + if (rn == 15) { + addr = new_tmp(); + /* PC relative. */ + /* s->pc has already been incremented by 4. */ + imm = s->pc & 0xfffffffc; + if (insn & (1 << 23)) + imm += insn & 0xfff; + else + imm -= insn & 0xfff; + tcg_gen_movi_i32(addr, imm); + } else { + addr = load_reg(s, rn); + if (insn & (1 << 23)) { + /* Positive offset. */ + imm = insn & 0xfff; + tcg_gen_addi_i32(addr, addr, imm); + } else { + op = (insn >> 8) & 7; + imm = insn & 0xff; + switch (op) { + case 0: case 8: /* Shifted Register. */ + shift = (insn >> 4) & 0xf; + if (shift > 3) + goto illegal_op; + tmp = load_reg(s, rm); + if (shift) + tcg_gen_shli_i32(tmp, tmp, shift); + tcg_gen_add_i32(addr, addr, tmp); + dead_tmp(tmp); + break; + case 4: /* Negative offset. */ + tcg_gen_addi_i32(addr, addr, -imm); + break; + case 6: /* User privilege. */ + tcg_gen_addi_i32(addr, addr, imm); + user = 1; + break; + case 1: /* Post-decrement. */ + imm = -imm; + /* Fall through. */ + case 3: /* Post-increment. */ + postinc = 1; + writeback = 1; + break; + case 5: /* Pre-decrement. */ + imm = -imm; + /* Fall through. */ + case 7: /* Pre-increment. */ + tcg_gen_addi_i32(addr, addr, imm); + writeback = 1; + break; + default: + goto illegal_op; + } + } + } + op = ((insn >> 21) & 3) | ((insn >> 22) & 4); + if (insn & (1 << 20)) { + /* Load. */ + if (rs == 15 && op != 2) { + if (op & 2) + goto illegal_op; + /* Memory hint. Implemented as NOP. */ + } else { + switch (op) { + case 0: tmp = gen_ld8u(addr, user); break; + case 4: tmp = gen_ld8s(addr, user); break; + case 1: tmp = gen_ld16u(addr, user); break; + case 5: tmp = gen_ld16s(addr, user); break; + case 2: tmp = gen_ld32(addr, user); break; + default: goto illegal_op; + } + if (rs == 15) { + gen_bx(s, tmp); + } else { + store_reg(s, rs, tmp); + } + } + } else { + /* Store. */ + if (rs == 15) + goto illegal_op; + tmp = load_reg(s, rs); + switch (op) { + case 0: gen_st8(tmp, addr, user); break; + case 1: gen_st16(tmp, addr, user); break; + case 2: gen_st32(tmp, addr, user); break; + default: goto illegal_op; + } + } + if (postinc) + tcg_gen_addi_i32(addr, addr, imm); + if (writeback) { + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } + break; + default: + goto illegal_op; + } + return 0; +illegal_op: + return 1; +} + +static void disas_thumb_insn(CPUState *env, DisasContext *s) +{ + uint32_t val, insn, op, rm, rn, rd, shift, cond; + int32_t offset; + int i; + TCGv tmp; + TCGv tmp2; + TCGv addr; + + if (s->condexec_mask) { + cond = s->condexec_cond; + s->condlabel = gen_new_label(); + gen_test_cc(cond ^ 1, s->condlabel); + s->condjmp = 1; + } + + insn = lduw_code(s->pc); + s->pc += 2; + + switch (insn >> 12) { + case 0: case 1: + + rd = insn & 7; + op = (insn >> 11) & 3; + if (op == 3) { + /* add/subtract */ + rn = (insn >> 3) & 7; + tmp = load_reg(s, rn); + if (insn & (1 << 10)) { + /* immediate */ + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, (insn >> 6) & 7); + } else { + /* reg */ + rm = (insn >> 6) & 7; + tmp2 = load_reg(s, rm); + } + if (insn & (1 << 9)) { + if (s->condexec_mask) + tcg_gen_sub_i32(tmp, tmp, tmp2); + else + gen_helper_sub_cc(tmp, tmp, tmp2); + } else { + if (s->condexec_mask) + tcg_gen_add_i32(tmp, tmp, tmp2); + else + gen_helper_add_cc(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else { + /* shift immediate */ + rm = (insn >> 3) & 7; + shift = (insn >> 6) & 0x1f; + tmp = load_reg(s, rm); + gen_arm_shift_im(tmp, op, shift, s->condexec_mask == 0); + if (!s->condexec_mask) + gen_logic_CC(tmp); + store_reg(s, rd, tmp); + } + break; + case 2: case 3: + /* arithmetic large immediate */ + op = (insn >> 11) & 3; + rd = (insn >> 8) & 0x7; + if (op == 0) { /* mov */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, insn & 0xff); + if (!s->condexec_mask) + gen_logic_CC(tmp); + store_reg(s, rd, tmp); + } else { + tmp = load_reg(s, rd); + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, insn & 0xff); + switch (op) { + case 1: /* cmp */ + gen_helper_sub_cc(tmp, tmp, tmp2); + dead_tmp(tmp); + dead_tmp(tmp2); + break; + case 2: /* add */ + if (s->condexec_mask) + tcg_gen_add_i32(tmp, tmp, tmp2); + else + gen_helper_add_cc(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 3: /* sub */ + if (s->condexec_mask) + tcg_gen_sub_i32(tmp, tmp, tmp2); + else + gen_helper_sub_cc(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + } + } + break; + case 4: + if (insn & (1 << 11)) { + rd = (insn >> 8) & 7; + /* load pc-relative. Bit 1 of PC is ignored. */ + val = s->pc + 2 + ((insn & 0xff) * 4); + val &= ~(uint32_t)2; + addr = new_tmp(); + tcg_gen_movi_i32(addr, val); + tmp = gen_ld32(addr, IS_USER(s)); + dead_tmp(addr); + store_reg(s, rd, tmp); + break; + } + if (insn & (1 << 10)) { + /* data processing extended or blx */ + rd = (insn & 7) | ((insn >> 4) & 8); + rm = (insn >> 3) & 0xf; + op = (insn >> 8) & 3; + switch (op) { + case 0: /* add */ + tmp = load_reg(s, rd); + tmp2 = load_reg(s, rm); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 1: /* cmp */ + tmp = load_reg(s, rd); + tmp2 = load_reg(s, rm); + gen_helper_sub_cc(tmp, tmp, tmp2); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 2: /* mov/cpy */ + tmp = load_reg(s, rm); + store_reg(s, rd, tmp); + break; + case 3:/* branch [and link] exchange thumb register */ + tmp = load_reg(s, rm); + if (insn & (1 << 7)) { + val = (uint32_t)s->pc | 1; + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, val); + store_reg(s, 14, tmp2); + } + gen_bx(s, tmp); + break; + } + break; + } + + /* data processing register */ + rd = insn & 7; + rm = (insn >> 3) & 7; + op = (insn >> 6) & 0xf; + if (op == 2 || op == 3 || op == 4 || op == 7) { + /* the shift/rotate ops want the operands backwards */ + val = rm; + rm = rd; + rd = val; + val = 1; + } else { + val = 0; + } + + if (op == 9) { /* neg */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else if (op != 0xf) { /* mvn doesn't read its first operand */ + tmp = load_reg(s, rd); + } else { + TCGV_UNUSED(tmp); + } + + tmp2 = load_reg(s, rm); + switch (op) { + case 0x0: /* and */ + tcg_gen_and_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0x1: /* eor */ + tcg_gen_xor_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0x2: /* lsl */ + if (s->condexec_mask) { + gen_helper_shl(tmp2, tmp2, tmp); + } else { + gen_helper_shl_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x3: /* lsr */ + if (s->condexec_mask) { + gen_helper_shr(tmp2, tmp2, tmp); + } else { + gen_helper_shr_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x4: /* asr */ + if (s->condexec_mask) { + gen_helper_sar(tmp2, tmp2, tmp); + } else { + gen_helper_sar_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x5: /* adc */ + if (s->condexec_mask) + gen_adc(tmp, tmp2); + else + gen_helper_adc_cc(tmp, tmp, tmp2); + break; + case 0x6: /* sbc */ + if (s->condexec_mask) + gen_sub_carry(tmp, tmp, tmp2); + else + gen_helper_sbc_cc(tmp, tmp, tmp2); + break; + case 0x7: /* ror */ + if (s->condexec_mask) { + tcg_gen_andi_i32(tmp, tmp, 0x1f); + tcg_gen_rotr_i32(tmp2, tmp2, tmp); + } else { + gen_helper_ror_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x8: /* tst */ + tcg_gen_and_i32(tmp, tmp, tmp2); + gen_logic_CC(tmp); + rd = 16; + break; + case 0x9: /* neg */ + if (s->condexec_mask) + tcg_gen_neg_i32(tmp, tmp2); + else + gen_helper_sub_cc(tmp, tmp, tmp2); + break; + case 0xa: /* cmp */ + gen_helper_sub_cc(tmp, tmp, tmp2); + rd = 16; + break; + case 0xb: /* cmn */ + gen_helper_add_cc(tmp, tmp, tmp2); + rd = 16; + break; + case 0xc: /* orr */ + tcg_gen_or_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0xd: /* mul */ + tcg_gen_mul_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0xe: /* bic */ + tcg_gen_andc_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0xf: /* mvn */ + tcg_gen_not_i32(tmp2, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp2); + val = 1; + rm = rd; + break; + } + if (rd != 16) { + if (val) { + store_reg(s, rm, tmp2); + if (op != 0xf) + dead_tmp(tmp); + } else { + store_reg(s, rd, tmp); + dead_tmp(tmp2); + } + } else { + dead_tmp(tmp); + dead_tmp(tmp2); + } + break; + + case 5: + /* load/store register offset. */ + rd = insn & 7; + rn = (insn >> 3) & 7; + rm = (insn >> 6) & 7; + op = (insn >> 9) & 7; + addr = load_reg(s, rn); + tmp = load_reg(s, rm); + tcg_gen_add_i32(addr, addr, tmp); + dead_tmp(tmp); + + if (op < 3) /* store */ + tmp = load_reg(s, rd); + + switch (op) { + case 0: /* str */ + gen_st32(tmp, addr, IS_USER(s)); + break; + case 1: /* strh */ + gen_st16(tmp, addr, IS_USER(s)); + break; + case 2: /* strb */ + gen_st8(tmp, addr, IS_USER(s)); + break; + case 3: /* ldrsb */ + tmp = gen_ld8s(addr, IS_USER(s)); + break; + case 4: /* ldr */ + tmp = gen_ld32(addr, IS_USER(s)); + break; + case 5: /* ldrh */ + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 6: /* ldrb */ + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 7: /* ldrsh */ + tmp = gen_ld16s(addr, IS_USER(s)); + break; + } + if (op >= 3) /* load */ + store_reg(s, rd, tmp); + dead_tmp(addr); + break; + + case 6: + /* load/store word immediate offset */ + rd = insn & 7; + rn = (insn >> 3) & 7; + addr = load_reg(s, rn); + val = (insn >> 4) & 0x7c; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 7: + /* load/store byte immediate offset */ + rd = insn & 7; + rn = (insn >> 3) & 7; + addr = load_reg(s, rn); + val = (insn >> 6) & 0x1f; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld8u(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st8(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 8: + /* load/store halfword immediate offset */ + rd = insn & 7; + rn = (insn >> 3) & 7; + addr = load_reg(s, rn); + val = (insn >> 5) & 0x3e; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld16u(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st16(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 9: + /* load/store from stack */ + rd = (insn >> 8) & 7; + addr = load_reg(s, 13); + val = (insn & 0xff) * 4; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 10: + /* add to high reg */ + rd = (insn >> 8) & 7; + if (insn & (1 << 11)) { + /* SP */ + tmp = load_reg(s, 13); + } else { + /* PC. bit 1 is ignored. */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, (s->pc + 2) & ~(uint32_t)2); + } + val = (insn & 0xff) * 4; + tcg_gen_addi_i32(tmp, tmp, val); + store_reg(s, rd, tmp); + break; + + case 11: + /* misc */ + op = (insn >> 8) & 0xf; + switch (op) { + case 0: + /* adjust stack pointer */ + tmp = load_reg(s, 13); + val = (insn & 0x7f) * 4; + if (insn & (1 << 7)) + val = -(int32_t)val; + tcg_gen_addi_i32(tmp, tmp, val); + store_reg(s, 13, tmp); + break; + + case 2: /* sign/zero extend. */ + ARCH(6); + rd = insn & 7; + rm = (insn >> 3) & 7; + tmp = load_reg(s, rm); + switch ((insn >> 6) & 3) { + case 0: gen_sxth(tmp); break; + case 1: gen_sxtb(tmp); break; + case 2: gen_uxth(tmp); break; + case 3: gen_uxtb(tmp); break; + } + store_reg(s, rd, tmp); + break; + case 4: case 5: case 0xc: case 0xd: + /* push/pop */ + addr = load_reg(s, 13); + if (insn & (1 << 8)) + offset = 4; + else + offset = 0; + for (i = 0; i < 8; i++) { + if (insn & (1 << i)) + offset += 4; + } + if ((insn & (1 << 11)) == 0) { + tcg_gen_addi_i32(addr, addr, -offset); + } + for (i = 0; i < 8; i++) { + if (insn & (1 << i)) { + if (insn & (1 << 11)) { + /* pop */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, i, tmp); + } else { + /* push */ + tmp = load_reg(s, i); + gen_st32(tmp, addr, IS_USER(s)); + } + /* advance to the next address. */ + tcg_gen_addi_i32(addr, addr, 4); + } + } + TCGV_UNUSED(tmp); + if (insn & (1 << 8)) { + if (insn & (1 << 11)) { + /* pop pc */ + tmp = gen_ld32(addr, IS_USER(s)); + /* don't set the pc until the rest of the instruction + has completed */ + } else { + /* push lr */ + tmp = load_reg(s, 14); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, 4); + } + if ((insn & (1 << 11)) == 0) { + tcg_gen_addi_i32(addr, addr, -offset); + } + /* write back the new stack pointer */ + store_reg(s, 13, addr); + /* set the new PC value */ + if ((insn & 0x0900) == 0x0900) + gen_bx(s, tmp); + break; + + case 1: case 3: case 9: case 11: /* czb */ + rm = insn & 7; + tmp = load_reg(s, rm); + s->condlabel = gen_new_label(); + s->condjmp = 1; + if (insn & (1 << 11)) + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, s->condlabel); + else + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, s->condlabel); + dead_tmp(tmp); + offset = ((insn & 0xf8) >> 2) | (insn & 0x200) >> 3; + val = (uint32_t)s->pc + 2; + val += offset; + gen_jmp(s, val); + break; + + case 15: /* IT, nop-hint. */ + if ((insn & 0xf) == 0) { + gen_nop_hint(s, (insn >> 4) & 0xf); + break; + } + /* If Then. */ + s->condexec_cond = (insn >> 4) & 0xe; + s->condexec_mask = insn & 0x1f; + /* No actual code generated for this insn, just setup state. */ + break; + + case 0xe: /* bkpt */ + gen_set_condexec(s); + gen_set_pc_im(s->pc - 2); + gen_exception(EXCP_BKPT); + s->is_jmp = DISAS_JUMP; + break; + + case 0xa: /* rev */ + ARCH(6); + rn = (insn >> 3) & 0x7; + rd = insn & 0x7; + tmp = load_reg(s, rn); + switch ((insn >> 6) & 3) { + case 0: tcg_gen_bswap32_i32(tmp, tmp); break; + case 1: gen_rev16(tmp); break; + case 3: gen_revsh(tmp); break; + default: goto illegal_op; + } + store_reg(s, rd, tmp); + break; + + case 6: /* cps */ + ARCH(6); + if (IS_USER(s)) + break; + if (IS_M(env)) { + tmp = tcg_const_i32((insn & (1 << 4)) != 0); + /* PRIMASK */ + if (insn & 1) { + addr = tcg_const_i32(16); + gen_helper_v7m_msr(cpu_env, addr, tmp); + tcg_temp_free_i32(addr); + } + /* FAULTMASK */ + if (insn & 2) { + addr = tcg_const_i32(17); + gen_helper_v7m_msr(cpu_env, addr, tmp); + tcg_temp_free_i32(addr); + } + tcg_temp_free_i32(tmp); + gen_lookup_tb(s); + } else { + if (insn & (1 << 4)) + shift = CPSR_A | CPSR_I | CPSR_F; + else + shift = 0; + gen_set_psr_im(s, shift, 0, ((insn & 7) << 6) & shift); + } + break; + + default: + goto undef; + } + break; + + case 12: + /* load/store multiple */ + rn = (insn >> 8) & 0x7; + addr = load_reg(s, rn); + for (i = 0; i < 8; i++) { + if (insn & (1 << i)) { + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, i, tmp); + } else { + /* store */ + tmp = load_reg(s, i); + gen_st32(tmp, addr, IS_USER(s)); + } + /* advance to the next address */ + tcg_gen_addi_i32(addr, addr, 4); + } + } + /* Base register writeback. */ + if ((insn & (1 << rn)) == 0) { + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + break; + + case 13: + /* conditional branch or swi */ + cond = (insn >> 8) & 0xf; + if (cond == 0xe) + goto undef; + + if (cond == 0xf) { + /* swi */ + gen_set_condexec(s); + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_SWI; + break; + } + /* generate a conditional jump to next instruction */ + s->condlabel = gen_new_label(); + gen_test_cc(cond ^ 1, s->condlabel); + s->condjmp = 1; + + /* jump to the offset */ + val = (uint32_t)s->pc + 2; + offset = ((int32_t)insn << 24) >> 24; + val += offset << 1; + gen_jmp(s, val); + break; + + case 14: + if (insn & (1 << 11)) { + if (disas_thumb2_insn(env, s, insn)) + goto undef32; + break; + } + /* unconditional branch */ + val = (uint32_t)s->pc; + offset = ((int32_t)insn << 21) >> 21; + val += (offset << 1) + 2; + gen_jmp(s, val); + break; + + case 15: + if (disas_thumb2_insn(env, s, insn)) + goto undef32; + break; + } + return; +undef32: + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_UDEF); + s->is_jmp = DISAS_JUMP; + return; +illegal_op: +undef: + gen_set_condexec(s); + gen_set_pc_im(s->pc - 2); + gen_exception(EXCP_UDEF); + s->is_jmp = DISAS_JUMP; +} + +/* generate intermediate code in gen_opc_buf and gen_opparam_buf for + basic block 'tb'. If search_pc is TRUE, also generate PC + information for each intermediate instruction. */ +static inline void gen_intermediate_code_internal(CPUState *env, + TranslationBlock *tb, + int search_pc) +{ + DisasContext dc1, *dc = &dc1; + CPUBreakpoint *bp; + uint16_t *gen_opc_end; + int j, lj; + target_ulong pc_start; + uint32_t next_page_start; + int num_insns; + int max_insns; + + /* generate intermediate code */ + num_temps = 0; + + pc_start = tb->pc; + + dc->tb = tb; + + gen_opc_end = gen_opc_buf + OPC_MAX_SIZE; + + dc->is_jmp = DISAS_NEXT; + dc->pc = pc_start; + dc->singlestep_enabled = env->singlestep_enabled; + dc->condjmp = 0; + dc->thumb = env->thumb; + dc->condexec_mask = (env->condexec_bits & 0xf) << 1; + dc->condexec_cond = env->condexec_bits >> 4; +#if !defined(CONFIG_USER_ONLY) + if (IS_M(env)) { + dc->user = ((env->v7m.exception == 0) && (env->v7m.control & 1)); + } else { + dc->user = (env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_USR; + } +#endif + cpu_F0s = tcg_temp_new_i32(); + cpu_F1s = tcg_temp_new_i32(); + cpu_F0d = tcg_temp_new_i64(); + cpu_F1d = tcg_temp_new_i64(); + cpu_V0 = cpu_F0d; + cpu_V1 = cpu_F1d; + /* FIXME: cpu_M0 can probably be the same as cpu_V0. */ + cpu_M0 = tcg_temp_new_i64(); + next_page_start = (pc_start & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE; + lj = -1; + num_insns = 0; + max_insns = tb->cflags & CF_COUNT_MASK; + if (max_insns == 0) + max_insns = CF_COUNT_MASK; + + gen_icount_start(); + /* Reset the conditional execution bits immediately. This avoids + complications trying to do it at the end of the block. */ + if (env->condexec_bits) + { + TCGv tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + store_cpu_field(tmp, condexec_bits); + } + do { +#ifdef CONFIG_USER_ONLY + /* Intercept jump to the magic kernel page. */ + if (dc->pc >= 0xffff0000) { + /* We always get here via a jump, so know we are not in a + conditional execution block. */ + gen_exception(EXCP_KERNEL_TRAP); + dc->is_jmp = DISAS_UPDATE; + break; + } +#else + if (dc->pc >= 0xfffffff0 && IS_M(env)) { + /* We always get here via a jump, so know we are not in a + conditional execution block. */ + gen_exception(EXCP_EXCEPTION_EXIT); + dc->is_jmp = DISAS_UPDATE; + break; + } +#endif + + if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { + QTAILQ_FOREACH(bp, &env->breakpoints, entry) { + if (bp->pc == dc->pc) { + gen_set_condexec(dc); + gen_set_pc_im(dc->pc); + gen_exception(EXCP_DEBUG); + dc->is_jmp = DISAS_JUMP; + /* Advance PC so that clearing the breakpoint will + invalidate this TB. */ + dc->pc += 2; + goto done_generating; + break; + } + } + } + if (search_pc) { + j = gen_opc_ptr - gen_opc_buf; + if (lj < j) { + lj++; + while (lj < j) + gen_opc_instr_start[lj++] = 0; + } + gen_opc_pc[lj] = dc->pc; + gen_opc_instr_start[lj] = 1; + gen_opc_icount[lj] = num_insns; + } + + if (num_insns + 1 == max_insns && (tb->cflags & CF_LAST_IO)) + gen_io_start(); + + if (env->thumb) { + disas_thumb_insn(env, dc); + if (dc->condexec_mask) { + dc->condexec_cond = (dc->condexec_cond & 0xe) + | ((dc->condexec_mask >> 4) & 1); + dc->condexec_mask = (dc->condexec_mask << 1) & 0x1f; + if (dc->condexec_mask == 0) { + dc->condexec_cond = 0; + } + } + } else { + disas_arm_insn(env, dc); + } + if (num_temps) { + fprintf(stderr, "Internal resource leak before %08x\n", dc->pc); + num_temps = 0; + } + + if (dc->condjmp && !dc->is_jmp) { + gen_set_label(dc->condlabel); + dc->condjmp = 0; + } + /* Translation stops when a conditional branch is encountered. + * Otherwise the subsequent code could get translated several times. + * Also stop translation when a page boundary is reached. This + * ensures prefetch aborts occur at the right place. */ + num_insns ++; + } while (!dc->is_jmp && gen_opc_ptr < gen_opc_end && + !env->singlestep_enabled && + !singlestep && + dc->pc < next_page_start && + num_insns < max_insns); + + if (tb->cflags & CF_LAST_IO) { + if (dc->condjmp) { + /* FIXME: This can theoretically happen with self-modifying + code. */ + cpu_abort(env, "IO on conditional branch instruction"); + } + gen_io_end(); + } + + /* At this stage dc->condjmp will only be set when the skipped + instruction was a conditional branch or trap, and the PC has + already been written. */ + if (unlikely(env->singlestep_enabled)) { + /* Make sure the pc is updated, and raise a debug exception. */ + if (dc->condjmp) { + gen_set_condexec(dc); + if (dc->is_jmp == DISAS_SWI) { + gen_exception(EXCP_SWI); + } else { + gen_exception(EXCP_DEBUG); + } + gen_set_label(dc->condlabel); + } + if (dc->condjmp || !dc->is_jmp) { + gen_set_pc_im(dc->pc); + dc->condjmp = 0; + } + gen_set_condexec(dc); + if (dc->is_jmp == DISAS_SWI && !dc->condjmp) { + gen_exception(EXCP_SWI); + } else { + /* FIXME: Single stepping a WFI insn will not halt + the CPU. */ + gen_exception(EXCP_DEBUG); + } + } else { + /* While branches must always occur at the end of an IT block, + there are a few other things that can cause us to terminate + the TB in the middel of an IT block: + - Exception generating instructions (bkpt, swi, undefined). + - Page boundaries. + - Hardware watchpoints. + Hardware breakpoints have already been handled and skip this code. + */ + gen_set_condexec(dc); + switch(dc->is_jmp) { + case DISAS_NEXT: + gen_goto_tb(dc, 1, dc->pc); + break; + default: + case DISAS_JUMP: + case DISAS_UPDATE: + /* indicate that the hash table must be used to find the next TB */ + tcg_gen_exit_tb(0); + break; + case DISAS_TB_JUMP: + /* nothing more to generate */ + break; + case DISAS_WFI: + gen_helper_wfi(); + break; + case DISAS_SWI: + gen_exception(EXCP_SWI); + break; + } + if (dc->condjmp) { + gen_set_label(dc->condlabel); + gen_set_condexec(dc); + gen_goto_tb(dc, 1, dc->pc); + dc->condjmp = 0; + } + } + +done_generating: + gen_icount_end(tb, num_insns); + *gen_opc_ptr = INDEX_op_end; + +#ifdef DEBUG_DISAS + if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { + qemu_log("----------------\n"); + qemu_log("IN: %s\n", lookup_symbol(pc_start)); + log_target_disas(pc_start, dc->pc - pc_start, env->thumb); + qemu_log("\n"); + } +#endif + if (search_pc) { + j = gen_opc_ptr - gen_opc_buf; + lj++; + while (lj <= j) + gen_opc_instr_start[lj++] = 0; + } else { + tb->size = dc->pc - pc_start; + tb->icount = num_insns; + } +} + +void gen_intermediate_code(CPUState *env, TranslationBlock *tb) +{ + gen_intermediate_code_internal(env, tb, 0); +} + +void gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb) +{ + gen_intermediate_code_internal(env, tb, 1); +} + +static const char *cpu_mode_names[16] = { + "usr", "fiq", "irq", "svc", "???", "???", "???", "abt", + "???", "???", "???", "und", "???", "???", "???", "sys" +}; + +void cpu_dump_state(CPUState *env, FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...), + int flags) +{ + int i; +#if 0 + union { + uint32_t i; + float s; + } s0, s1; + CPU_DoubleU d; + /* ??? This assumes float64 and double have the same layout. + Oh well, it's only debug dumps. */ + union { + float64 f64; + double d; + } d0; +#endif + uint32_t psr; + + for(i=0;i<16;i++) { + cpu_fprintf(f, "R%02d=%08x", i, env->regs[i]); + if ((i % 4) == 3) + cpu_fprintf(f, "\n"); + else + cpu_fprintf(f, " "); + } + psr = cpsr_read(env); + cpu_fprintf(f, "PSR=%08x %c%c%c%c %c %s%d\n", + psr, + psr & (1 << 31) ? 'N' : '-', + psr & (1 << 30) ? 'Z' : '-', + psr & (1 << 29) ? 'C' : '-', + psr & (1 << 28) ? 'V' : '-', + psr & CPSR_T ? 'T' : 'A', + cpu_mode_names[psr & 0xf], (psr & 0x10) ? 32 : 26); + +#if 0 + for (i = 0; i < 16; i++) { + d.d = env->vfp.regs[i]; + s0.i = d.l.lower; + s1.i = d.l.upper; + d0.f64 = d.d; + cpu_fprintf(f, "s%02d=%08x(%8g) s%02d=%08x(%8g) d%02d=%08x%08x(%8g)\n", + i * 2, (int)s0.i, s0.s, + i * 2 + 1, (int)s1.i, s1.s, + i, (int)(uint32_t)d.l.upper, (int)(uint32_t)d.l.lower, + d0.d); + } + cpu_fprintf(f, "FPSCR: %08x\n", (int)env->vfp.xregs[ARM_VFP_FPSCR]); +#endif +} + +void gen_pc_load(CPUState *env, TranslationBlock *tb, + unsigned long searched_pc, int pc_pos, void *puc) +{ + env->regs[15] = gen_opc_pc[pc_pos]; +} diff --git a/qemu/qemu-git/target-arm/cpu.h b/qemu/qemu-git/target-arm/cpu.h new file mode 100644 index 0000000..a75a5be --- /dev/null +++ b/qemu/qemu-git/target-arm/cpu.h @@ -0,0 +1,457 @@ +/* + * ARM virtual CPU header + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#ifndef CPU_ARM_H +#define CPU_ARM_H + +#define TARGET_LONG_BITS 32 + +#define ELF_MACHINE EM_ARM + +#define CPUState struct CPUARMState + +#include "cpu-defs.h" + +#include "softfloat.h" + +#define TARGET_HAS_ICE 1 + +#define EXCP_UDEF 1 /* undefined instruction */ +#define EXCP_SWI 2 /* software interrupt */ +#define EXCP_PREFETCH_ABORT 3 +#define EXCP_DATA_ABORT 4 +#define EXCP_IRQ 5 +#define EXCP_FIQ 6 +#define EXCP_BKPT 7 +#define EXCP_EXCEPTION_EXIT 8 /* Return from v7M exception. */ +#define EXCP_KERNEL_TRAP 9 /* Jumped to kernel code page. */ +#define EXCP_STREX 10 + +#define ARMV7M_EXCP_RESET 1 +#define ARMV7M_EXCP_NMI 2 +#define ARMV7M_EXCP_HARD 3 +#define ARMV7M_EXCP_MEM 4 +#define ARMV7M_EXCP_BUS 5 +#define ARMV7M_EXCP_USAGE 6 +#define ARMV7M_EXCP_SVC 11 +#define ARMV7M_EXCP_DEBUG 12 +#define ARMV7M_EXCP_PENDSV 14 +#define ARMV7M_EXCP_SYSTICK 15 + +typedef void ARMWriteCPFunc(void *opaque, int cp_info, + int srcreg, int operand, uint32_t value); +typedef uint32_t ARMReadCPFunc(void *opaque, int cp_info, + int dstreg, int operand); + +struct arm_boot_info; + +#define NB_MMU_MODES 2 + +/* We currently assume float and double are IEEE single and double + precision respectively. + Doing runtime conversions is tricky because VFP registers may contain + integer values (eg. as the result of a FTOSI instruction). + s<2n> maps to the least significant half of d + s<2n+1> maps to the most significant half of d + */ + +typedef struct CPUARMState { + /* Regs for current mode. */ + uint32_t regs[16]; + /* Frequently accessed CPSR bits are stored separately for efficiently. + This contains all the other bits. Use cpsr_{read,write} to access + the whole CPSR. */ + uint32_t uncached_cpsr; + uint32_t spsr; + + /* Banked registers. */ + uint32_t banked_spsr[6]; + uint32_t banked_r13[6]; + uint32_t banked_r14[6]; + + /* These hold r8-r12. */ + uint32_t usr_regs[5]; + uint32_t fiq_regs[5]; + + /* cpsr flag cache for faster execution */ + uint32_t CF; /* 0 or 1 */ + uint32_t VF; /* V is the bit 31. All other bits are undefined */ + uint32_t NF; /* N is bit 31. All other bits are undefined. */ + uint32_t ZF; /* Z set if zero. */ + uint32_t QF; /* 0 or 1 */ + uint32_t GE; /* cpsr[19:16] */ + uint32_t thumb; /* cpsr[5]. 0 = arm mode, 1 = thumb mode. */ + uint32_t condexec_bits; /* IT bits. cpsr[15:10,26:25]. */ + + /* System control coprocessor (cp15) */ + struct { + uint32_t c0_cpuid; + uint32_t c0_cachetype; + uint32_t c0_ccsid[16]; /* Cache size. */ + uint32_t c0_clid; /* Cache level. */ + uint32_t c0_cssel; /* Cache size selection. */ + uint32_t c0_c1[8]; /* Feature registers. */ + uint32_t c0_c2[8]; /* Instruction set registers. */ + uint32_t c1_sys; /* System control register. */ + uint32_t c1_coproc; /* Coprocessor access register. */ + uint32_t c1_xscaleauxcr; /* XScale auxiliary control register. */ + uint32_t c2_base0; /* MMU translation table base 0. */ + uint32_t c2_base1; /* MMU translation table base 1. */ + uint32_t c2_control; /* MMU translation table base control. */ + uint32_t c2_mask; /* MMU translation table base selection mask. */ + uint32_t c2_base_mask; /* MMU translation table base 0 mask. */ + uint32_t c2_data; /* MPU data cachable bits. */ + uint32_t c2_insn; /* MPU instruction cachable bits. */ + uint32_t c3; /* MMU domain access control register + MPU write buffer control. */ + uint32_t c5_insn; /* Fault status registers. */ + uint32_t c5_data; + uint32_t c6_region[8]; /* MPU base/size registers. */ + uint32_t c6_insn; /* Fault address registers. */ + uint32_t c6_data; + uint32_t c9_insn; /* Cache lockdown registers. */ + uint32_t c9_data; + uint32_t c13_fcse; /* FCSE PID. */ + uint32_t c13_context; /* Context ID. */ + uint32_t c13_tls1; /* User RW Thread register. */ + uint32_t c13_tls2; /* User RO Thread register. */ + uint32_t c13_tls3; /* Privileged Thread register. */ + uint32_t c15_cpar; /* XScale Coprocessor Access Register */ + uint32_t c15_ticonfig; /* TI925T configuration byte. */ + uint32_t c15_i_max; /* Maximum D-cache dirty line index. */ + uint32_t c15_i_min; /* Minimum D-cache dirty line index. */ + uint32_t c15_threadid; /* TI debugger thread-ID. */ + } cp15; + + struct { + uint32_t other_sp; + uint32_t vecbase; + uint32_t basepri; + uint32_t control; + int current_sp; + int exception; + int pending_exception; + void *nvic; + } v7m; + + /* Coprocessor IO used by peripherals */ + struct { + ARMReadCPFunc *cp_read; + ARMWriteCPFunc *cp_write; + void *opaque; + } cp[15]; + + /* Thumb-2 EE state. */ + uint32_t teecr; + uint32_t teehbr; + + /* Internal CPU feature flags. */ + uint32_t features; + + /* Callback for vectored interrupt controller. */ + int (*get_irq_vector)(struct CPUARMState *); + void *irq_opaque; + + /* VFP coprocessor state. */ + struct { + float64 regs[32]; + + uint32_t xregs[16]; + /* We store these fpcsr fields separately for convenience. */ + int vec_len; + int vec_stride; + + /* scratch space when Tn are not sufficient. */ + uint32_t scratch[8]; + + float_status fp_status; + } vfp; + uint32_t exclusive_addr; + uint32_t exclusive_val; + uint32_t exclusive_high; +#if defined(CONFIG_USER_ONLY) + uint32_t exclusive_test; + uint32_t exclusive_info; +#endif + + /* iwMMXt coprocessor state. */ + struct { + uint64_t regs[16]; + uint64_t val; + + uint32_t cregs[16]; + } iwmmxt; + +#if defined(CONFIG_USER_ONLY) + /* For usermode syscall translation. */ + int eabi; +#endif + + CPU_COMMON + + /* These fields after the common ones so they are preserved on reset. */ + struct arm_boot_info *boot_info; +} CPUARMState; + +CPUARMState *cpu_arm_init(const char *cpu_model); +void arm_translate_init(void); +int cpu_arm_exec(CPUARMState *s); +void cpu_arm_close(CPUARMState *s); +void do_interrupt(CPUARMState *); +void switch_mode(CPUARMState *, int); +uint32_t do_arm_semihosting(CPUARMState *env); + +/* you can call this signal handler from your SIGBUS and SIGSEGV + signal handlers to inform the virtual CPU of exceptions. non zero + is returned if the signal was handled by the virtual CPU. */ +int cpu_arm_signal_handler(int host_signum, void *pinfo, + void *puc); +int cpu_arm_handle_mmu_fault (CPUARMState *env, target_ulong address, int rw, + int mmu_idx, int is_softmuu); +#define cpu_handle_mmu_fault cpu_arm_handle_mmu_fault + +void cpu_lock(void); +void cpu_unlock(void); +static inline void cpu_set_tls(CPUARMState *env, target_ulong newtls) +{ + env->cp15.c13_tls2 = newtls; +} + +#define CPSR_M (0x1f) +#define CPSR_T (1 << 5) +#define CPSR_F (1 << 6) +#define CPSR_I (1 << 7) +#define CPSR_A (1 << 8) +#define CPSR_E (1 << 9) +#define CPSR_IT_2_7 (0xfc00) +#define CPSR_GE (0xf << 16) +#define CPSR_RESERVED (0xf << 20) +#define CPSR_J (1 << 24) +#define CPSR_IT_0_1 (3 << 25) +#define CPSR_Q (1 << 27) +#define CPSR_V (1 << 28) +#define CPSR_C (1 << 29) +#define CPSR_Z (1 << 30) +#define CPSR_N (1 << 31) +#define CPSR_NZCV (CPSR_N | CPSR_Z | CPSR_C | CPSR_V) + +#define CPSR_IT (CPSR_IT_0_1 | CPSR_IT_2_7) +#define CACHED_CPSR_BITS (CPSR_T | CPSR_GE | CPSR_IT | CPSR_Q | CPSR_NZCV) +/* Bits writable in user mode. */ +#define CPSR_USER (CPSR_NZCV | CPSR_Q | CPSR_GE) +/* Execution state bits. MRS read as zero, MSR writes ignored. */ +#define CPSR_EXEC (CPSR_T | CPSR_IT | CPSR_J) + +/* Return the current CPSR value. */ +uint32_t cpsr_read(CPUARMState *env); +/* Set the CPSR. Note that some bits of mask must be all-set or all-clear. */ +void cpsr_write(CPUARMState *env, uint32_t val, uint32_t mask); + +/* Return the current xPSR value. */ +static inline uint32_t xpsr_read(CPUARMState *env) +{ + int ZF; + ZF = (env->ZF == 0); + return (env->NF & 0x80000000) | (ZF << 30) + | (env->CF << 29) | ((env->VF & 0x80000000) >> 3) | (env->QF << 27) + | (env->thumb << 24) | ((env->condexec_bits & 3) << 25) + | ((env->condexec_bits & 0xfc) << 8) + | env->v7m.exception; +} + +/* Set the xPSR. Note that some bits of mask must be all-set or all-clear. */ +static inline void xpsr_write(CPUARMState *env, uint32_t val, uint32_t mask) +{ + if (mask & CPSR_NZCV) { + env->ZF = (~val) & CPSR_Z; + env->NF = val; + env->CF = (val >> 29) & 1; + env->VF = (val << 3) & 0x80000000; + } + if (mask & CPSR_Q) + env->QF = ((val & CPSR_Q) != 0); + if (mask & (1 << 24)) + env->thumb = ((val & (1 << 24)) != 0); + if (mask & CPSR_IT_0_1) { + env->condexec_bits &= ~3; + env->condexec_bits |= (val >> 25) & 3; + } + if (mask & CPSR_IT_2_7) { + env->condexec_bits &= 3; + env->condexec_bits |= (val >> 8) & 0xfc; + } + if (mask & 0x1ff) { + env->v7m.exception = val & 0x1ff; + } +} + +enum arm_cpu_mode { + ARM_CPU_MODE_USR = 0x10, + ARM_CPU_MODE_FIQ = 0x11, + ARM_CPU_MODE_IRQ = 0x12, + ARM_CPU_MODE_SVC = 0x13, + ARM_CPU_MODE_ABT = 0x17, + ARM_CPU_MODE_UND = 0x1b, + ARM_CPU_MODE_SYS = 0x1f +}; + +/* VFP system registers. */ +#define ARM_VFP_FPSID 0 +#define ARM_VFP_FPSCR 1 +#define ARM_VFP_MVFR1 6 +#define ARM_VFP_MVFR0 7 +#define ARM_VFP_FPEXC 8 +#define ARM_VFP_FPINST 9 +#define ARM_VFP_FPINST2 10 + +/* iwMMXt coprocessor control registers. */ +#define ARM_IWMMXT_wCID 0 +#define ARM_IWMMXT_wCon 1 +#define ARM_IWMMXT_wCSSF 2 +#define ARM_IWMMXT_wCASF 3 +#define ARM_IWMMXT_wCGR0 8 +#define ARM_IWMMXT_wCGR1 9 +#define ARM_IWMMXT_wCGR2 10 +#define ARM_IWMMXT_wCGR3 11 + +enum arm_features { + ARM_FEATURE_VFP, + ARM_FEATURE_AUXCR, /* ARM1026 Auxiliary control register. */ + ARM_FEATURE_XSCALE, /* Intel XScale extensions. */ + ARM_FEATURE_IWMMXT, /* Intel iwMMXt extension. */ + ARM_FEATURE_V6, + ARM_FEATURE_V6K, + ARM_FEATURE_V7, + ARM_FEATURE_THUMB2, + ARM_FEATURE_MPU, /* Only has Memory Protection Unit, not full MMU. */ + ARM_FEATURE_VFP3, + ARM_FEATURE_VFP_FP16, + ARM_FEATURE_NEON, + ARM_FEATURE_DIV, + ARM_FEATURE_M, /* Microcontroller profile. */ + ARM_FEATURE_OMAPCP, /* OMAP specific CP15 ops handling. */ + ARM_FEATURE_THUMB2EE +}; + +static inline int arm_feature(CPUARMState *env, int feature) +{ + return (env->features & (1u << feature)) != 0; +} + +void arm_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...)); + +/* Interface between CPU and Interrupt controller. */ +void armv7m_nvic_set_pending(void *opaque, int irq); +int armv7m_nvic_acknowledge_irq(void *opaque); +void armv7m_nvic_complete_irq(void *opaque, int irq); + +void cpu_arm_set_cp_io(CPUARMState *env, int cpnum, + ARMReadCPFunc *cp_read, ARMWriteCPFunc *cp_write, + void *opaque); + +/* Does the core conform to the the "MicroController" profile. e.g. Cortex-M3. + Note the M in older cores (eg. ARM7TDMI) stands for Multiply. These are + conventional cores (ie. Application or Realtime profile). */ + +#define IS_M(env) arm_feature(env, ARM_FEATURE_M) +#define ARM_CPUID(env) (env->cp15.c0_cpuid) + +#define ARM_CPUID_ARM1026 0x4106a262 +#define ARM_CPUID_ARM926 0x41069265 +#define ARM_CPUID_ARM946 0x41059461 +#define ARM_CPUID_TI915T 0x54029152 +#define ARM_CPUID_TI925T 0x54029252 +#define ARM_CPUID_PXA250 0x69052100 +#define ARM_CPUID_PXA255 0x69052d00 +#define ARM_CPUID_PXA260 0x69052903 +#define ARM_CPUID_PXA261 0x69052d05 +#define ARM_CPUID_PXA262 0x69052d06 +#define ARM_CPUID_PXA270 0x69054110 +#define ARM_CPUID_PXA270_A0 0x69054110 +#define ARM_CPUID_PXA270_A1 0x69054111 +#define ARM_CPUID_PXA270_B0 0x69054112 +#define ARM_CPUID_PXA270_B1 0x69054113 +#define ARM_CPUID_PXA270_C0 0x69054114 +#define ARM_CPUID_PXA270_C5 0x69054117 +#define ARM_CPUID_ARM1136 0x4117b363 +#define ARM_CPUID_ARM1136_R2 0x4107b362 +#define ARM_CPUID_ARM11MPCORE 0x410fb022 +#define ARM_CPUID_CORTEXA8 0x410fc080 +#define ARM_CPUID_CORTEXA9 0x410fc090 +#define ARM_CPUID_CORTEXM3 0x410fc231 +#define ARM_CPUID_ANY 0xffffffff + +#if defined(CONFIG_USER_ONLY) +#define TARGET_PAGE_BITS 12 +#else +/* The ARM MMU allows 1k pages. */ +/* ??? Linux doesn't actually use these, and they're deprecated in recent + architecture revisions. Maybe a configure option to disable them. */ +#define TARGET_PAGE_BITS 10 +#endif + +#define cpu_init cpu_arm_init +#define cpu_exec cpu_arm_exec +#define cpu_gen_code cpu_arm_gen_code +#define cpu_signal_handler cpu_arm_signal_handler +#define cpu_list arm_cpu_list + +#ifndef X49GP +#define CPU_SAVE_VERSION 2 +#endif + +/* MMU modes definitions */ +#define MMU_MODE0_SUFFIX _kernel +#define MMU_MODE1_SUFFIX _user +#define MMU_USER_IDX 1 +static inline int cpu_mmu_index (CPUState *env) +{ + return (env->uncached_cpsr & CPSR_M) == ARM_CPU_MODE_USR ? 1 : 0; +} + +#if defined(CONFIG_USER_ONLY) +static inline void cpu_clone_regs(CPUState *env, target_ulong newsp) +{ + if (newsp) + env->regs[13] = newsp; + env->regs[0] = 0; +} +#endif + +#include "cpu-all.h" +#include "exec-all.h" + +static inline void cpu_pc_from_tb(CPUState *env, TranslationBlock *tb) +{ + env->regs[15] = tb->pc; +} + +static inline void cpu_get_tb_cpu_state(CPUState *env, target_ulong *pc, + target_ulong *cs_base, int *flags) +{ + *pc = env->regs[15]; + *cs_base = 0; + *flags = env->thumb | (env->vfp.vec_len << 1) + | (env->vfp.vec_stride << 4) | (env->condexec_bits << 8); + if ((env->uncached_cpsr & CPSR_M) != ARM_CPU_MODE_USR) + *flags |= (1 << 6); + if (env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30)) + *flags |= (1 << 7); +} + +#endif diff --git a/qemu/qemu-git/target-arm/exec.h b/qemu/qemu-git/target-arm/exec.h new file mode 100644 index 0000000..e9848e1 --- /dev/null +++ b/qemu/qemu-git/target-arm/exec.h @@ -0,0 +1,60 @@ +/* + * ARM execution defines + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include "config.h" +#include "dyngen-exec.h" + +register struct CPUARMState *env asm(AREG0); + +#define M0 env->iwmmxt.val + +#include "cpu.h" +#include "exec-all.h" + +static inline void env_to_regs(void) +{ +} + +static inline void regs_to_env(void) +{ +} + +static inline int cpu_has_work(CPUState *env) +{ + return (env->interrupt_request & + (CPU_INTERRUPT_FIQ | CPU_INTERRUPT_HARD | CPU_INTERRUPT_EXITTB)); +} + +static inline int cpu_halted(CPUState *env) { + if (!env->halted) + return 0; + /* An interrupt wakes the CPU even if the I and F CPSR bits are + set. We use EXITTB to silently wake CPU without causing an + actual interrupt. */ + if (cpu_has_work(env)) { + env->halted = 0; + return 0; + } + return EXCP_HALTED; +} + +#if !defined(CONFIG_USER_ONLY) +#include "softmmu_exec.h" +#endif + +void raise_exception(int); diff --git a/qemu/qemu-git/target-arm/helper.c b/qemu/qemu-git/target-arm/helper.c new file mode 100644 index 0000000..b3aec99 --- /dev/null +++ b/qemu/qemu-git/target-arm/helper.c @@ -0,0 +1,2598 @@ +#include +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "gdbstub.h" +#include "helpers.h" +#include "qemu-common.h" +#include "host-utils.h" + +static uint32_t cortexa9_cp15_c0_c1[8] = +{ 0x1031, 0x11, 0x000, 0, 0x00100103, 0x20000000, 0x01230000, 0x00002111 }; + +static uint32_t cortexa9_cp15_c0_c2[8] = +{ 0x00101111, 0x13112111, 0x21232041, 0x11112131, 0x00111142, 0, 0, 0 }; + +static uint32_t cortexa8_cp15_c0_c1[8] = +{ 0x1031, 0x11, 0x400, 0, 0x31100003, 0x20000000, 0x01202000, 0x11 }; + +static uint32_t cortexa8_cp15_c0_c2[8] = +{ 0x00101111, 0x12112111, 0x21232031, 0x11112131, 0x00111142, 0, 0, 0 }; + +static uint32_t mpcore_cp15_c0_c1[8] = +{ 0x111, 0x1, 0, 0x2, 0x01100103, 0x10020302, 0x01222000, 0 }; + +static uint32_t mpcore_cp15_c0_c2[8] = +{ 0x00100011, 0x12002111, 0x11221011, 0x01102131, 0x141, 0, 0, 0 }; + +static uint32_t arm1136_cp15_c0_c1[8] = +{ 0x111, 0x1, 0x2, 0x3, 0x01130003, 0x10030302, 0x01222110, 0 }; + +static uint32_t arm1136_cp15_c0_c2[8] = +{ 0x00140011, 0x12002111, 0x11231111, 0x01102131, 0x141, 0, 0, 0 }; + +static uint32_t cpu_arm_find_by_name(const char *name); + +static inline void set_feature(CPUARMState *env, int feature) +{ + env->features |= 1u << feature; +} + +static void cpu_reset_model_id(CPUARMState *env, uint32_t id) +{ + env->cp15.c0_cpuid = id; + switch (id) { + case ARM_CPUID_ARM926: + set_feature(env, ARM_FEATURE_VFP); + env->vfp.xregs[ARM_VFP_FPSID] = 0x41011090; + env->cp15.c0_cachetype = 0x1dd20d2; + env->cp15.c1_sys = 0x00090078; + break; + case ARM_CPUID_ARM946: + set_feature(env, ARM_FEATURE_MPU); + env->cp15.c0_cachetype = 0x0f004006; + env->cp15.c1_sys = 0x00000078; + break; + case ARM_CPUID_ARM1026: + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_AUXCR); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410110a0; + env->cp15.c0_cachetype = 0x1dd20d2; + env->cp15.c1_sys = 0x00090078; + break; + case ARM_CPUID_ARM1136_R2: + case ARM_CPUID_ARM1136: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_AUXCR); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410120b4; + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11111111; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x00000000; + memcpy(env->cp15.c0_c1, arm1136_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, arm1136_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x1dd20d2; + break; + case ARM_CPUID_ARM11MPCORE: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_AUXCR); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410120b4; + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11111111; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x00000000; + memcpy(env->cp15.c0_c1, mpcore_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, mpcore_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x1dd20d2; + break; + case ARM_CPUID_CORTEXA8: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_AUXCR); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_VFP3); + set_feature(env, ARM_FEATURE_NEON); + set_feature(env, ARM_FEATURE_THUMB2EE); + env->vfp.xregs[ARM_VFP_FPSID] = 0x410330c0; + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11110222; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x00011100; + memcpy(env->cp15.c0_c1, cortexa8_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, cortexa8_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x82048004; + env->cp15.c0_clid = (1 << 27) | (2 << 24) | 3; + env->cp15.c0_ccsid[0] = 0xe007e01a; /* 16k L1 dcache. */ + env->cp15.c0_ccsid[1] = 0x2007e01a; /* 16k L1 icache. */ + env->cp15.c0_ccsid[2] = 0xf0000000; /* No L2 icache. */ + break; + case ARM_CPUID_CORTEXA9: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_AUXCR); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_VFP3); + set_feature(env, ARM_FEATURE_VFP_FP16); + set_feature(env, ARM_FEATURE_NEON); + set_feature(env, ARM_FEATURE_THUMB2EE); + env->vfp.xregs[ARM_VFP_FPSID] = 0x41034000; /* Guess */ + env->vfp.xregs[ARM_VFP_MVFR0] = 0x11110222; + env->vfp.xregs[ARM_VFP_MVFR1] = 0x01111111; + memcpy(env->cp15.c0_c1, cortexa9_cp15_c0_c1, 8 * sizeof(uint32_t)); + memcpy(env->cp15.c0_c2, cortexa9_cp15_c0_c2, 8 * sizeof(uint32_t)); + env->cp15.c0_cachetype = 0x80038003; + env->cp15.c0_clid = (1 << 27) | (1 << 24) | 3; + env->cp15.c0_ccsid[0] = 0xe00fe015; /* 16k L1 dcache. */ + env->cp15.c0_ccsid[1] = 0x200fe015; /* 16k L1 icache. */ + break; + case ARM_CPUID_CORTEXM3: + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_M); + set_feature(env, ARM_FEATURE_DIV); + break; + case ARM_CPUID_ANY: /* For userspace emulation. */ + set_feature(env, ARM_FEATURE_V6); + set_feature(env, ARM_FEATURE_V6K); + set_feature(env, ARM_FEATURE_V7); + set_feature(env, ARM_FEATURE_THUMB2); + set_feature(env, ARM_FEATURE_VFP); + set_feature(env, ARM_FEATURE_VFP3); + set_feature(env, ARM_FEATURE_VFP_FP16); + set_feature(env, ARM_FEATURE_NEON); + set_feature(env, ARM_FEATURE_THUMB2EE); + set_feature(env, ARM_FEATURE_DIV); + break; + case ARM_CPUID_TI915T: + case ARM_CPUID_TI925T: + set_feature(env, ARM_FEATURE_OMAPCP); + env->cp15.c0_cpuid = ARM_CPUID_TI925T; /* Depends on wiring. */ + env->cp15.c0_cachetype = 0x5109149; + env->cp15.c1_sys = 0x00000070; + env->cp15.c15_i_max = 0x000; + env->cp15.c15_i_min = 0xff0; + break; + case ARM_CPUID_PXA250: + case ARM_CPUID_PXA255: + case ARM_CPUID_PXA260: + case ARM_CPUID_PXA261: + case ARM_CPUID_PXA262: + set_feature(env, ARM_FEATURE_XSCALE); + /* JTAG_ID is ((id << 28) | 0x09265013) */ + env->cp15.c0_cachetype = 0xd172172; + env->cp15.c1_sys = 0x00000078; + break; + case ARM_CPUID_PXA270_A0: + case ARM_CPUID_PXA270_A1: + case ARM_CPUID_PXA270_B0: + case ARM_CPUID_PXA270_B1: + case ARM_CPUID_PXA270_C0: + case ARM_CPUID_PXA270_C5: + set_feature(env, ARM_FEATURE_XSCALE); + /* JTAG_ID is ((id << 28) | 0x09265013) */ + set_feature(env, ARM_FEATURE_IWMMXT); + env->iwmmxt.cregs[ARM_IWMMXT_wCID] = 0x69051000 | 'Q'; + env->cp15.c0_cachetype = 0xd172172; + env->cp15.c1_sys = 0x00000078; + break; + default: + cpu_abort(env, "Bad CPU ID: %x\n", id); + break; + } +} + +void cpu_reset(CPUARMState *env) +{ + uint32_t id; + + if (qemu_loglevel_mask(CPU_LOG_RESET)) { + qemu_log("CPU Reset (CPU %d)\n", env->cpu_index); + log_cpu_state(env, 0); + } + + id = env->cp15.c0_cpuid; + memset(env, 0, offsetof(CPUARMState, breakpoints)); + if (id) + cpu_reset_model_id(env, id); +#if defined (CONFIG_USER_ONLY) + env->uncached_cpsr = ARM_CPU_MODE_USR; + env->vfp.xregs[ARM_VFP_FPEXC] = 1 << 30; +#else + /* SVC mode with interrupts disabled. */ + env->uncached_cpsr = ARM_CPU_MODE_SVC | CPSR_A | CPSR_F | CPSR_I; + /* On ARMv7-M the CPSR_I is the value of the PRIMASK register, and is + clear at reset. */ + if (IS_M(env)) + env->uncached_cpsr &= ~CPSR_I; + env->vfp.xregs[ARM_VFP_FPEXC] = 0; + env->cp15.c2_base_mask = 0xffffc000u; +#endif + env->regs[15] = 0; + tlb_flush(env, 1); +} + +static int vfp_gdb_get_reg(CPUState *env, uint8_t *buf, int reg) +{ + int nregs; + + /* VFP data registers are always little-endian. */ + nregs = arm_feature(env, ARM_FEATURE_VFP3) ? 32 : 16; + if (reg < nregs) { + stfq_le_p(buf, env->vfp.regs[reg]); + return 8; + } + if (arm_feature(env, ARM_FEATURE_NEON)) { + /* Aliases for Q regs. */ + nregs += 16; + if (reg < nregs) { + stfq_le_p(buf, env->vfp.regs[(reg - 32) * 2]); + stfq_le_p(buf + 8, env->vfp.regs[(reg - 32) * 2 + 1]); + return 16; + } + } + switch (reg - nregs) { + case 0: stl_p(buf, env->vfp.xregs[ARM_VFP_FPSID]); return 4; + case 1: stl_p(buf, env->vfp.xregs[ARM_VFP_FPSCR]); return 4; + case 2: stl_p(buf, env->vfp.xregs[ARM_VFP_FPEXC]); return 4; + } + return 0; +} + +static int vfp_gdb_set_reg(CPUState *env, uint8_t *buf, int reg) +{ + int nregs; + + nregs = arm_feature(env, ARM_FEATURE_VFP3) ? 32 : 16; + if (reg < nregs) { + env->vfp.regs[reg] = ldfq_le_p(buf); + return 8; + } + if (arm_feature(env, ARM_FEATURE_NEON)) { + nregs += 16; + if (reg < nregs) { + env->vfp.regs[(reg - 32) * 2] = ldfq_le_p(buf); + env->vfp.regs[(reg - 32) * 2 + 1] = ldfq_le_p(buf + 8); + return 16; + } + } + switch (reg - nregs) { + case 0: env->vfp.xregs[ARM_VFP_FPSID] = ldl_p(buf); return 4; + case 1: env->vfp.xregs[ARM_VFP_FPSCR] = ldl_p(buf); return 4; + case 2: env->vfp.xregs[ARM_VFP_FPEXC] = ldl_p(buf) & (1 << 30); return 4; + } + return 0; +} + +CPUARMState *cpu_arm_init(const char *cpu_model) +{ + CPUARMState *env; + uint32_t id; + static int inited = 0; + + id = cpu_arm_find_by_name(cpu_model); + if (id == 0) + return NULL; + env = qemu_mallocz(sizeof(CPUARMState)); + cpu_exec_init(env); + if (!inited) { + inited = 1; + arm_translate_init(); + } + + env->cpu_model_str = cpu_model; + env->cp15.c0_cpuid = id; + cpu_reset(env); + if (arm_feature(env, ARM_FEATURE_NEON)) { + gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg, + 51, "arm-neon.xml", 0); + } else if (arm_feature(env, ARM_FEATURE_VFP3)) { + gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg, + 35, "arm-vfp3.xml", 0); + } else if (arm_feature(env, ARM_FEATURE_VFP)) { + gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg, + 19, "arm-vfp.xml", 0); + } + qemu_init_vcpu(env); + return env; +} + +struct arm_cpu_t { + uint32_t id; + const char *name; +}; + +static const struct arm_cpu_t arm_cpu_names[] = { + { ARM_CPUID_ARM926, "arm926"}, + { ARM_CPUID_ARM946, "arm946"}, + { ARM_CPUID_ARM1026, "arm1026"}, + { ARM_CPUID_ARM1136, "arm1136"}, + { ARM_CPUID_ARM1136_R2, "arm1136-r2"}, + { ARM_CPUID_ARM11MPCORE, "arm11mpcore"}, + { ARM_CPUID_CORTEXM3, "cortex-m3"}, + { ARM_CPUID_CORTEXA8, "cortex-a8"}, + { ARM_CPUID_CORTEXA9, "cortex-a9"}, + { ARM_CPUID_TI925T, "ti925t" }, + { ARM_CPUID_PXA250, "pxa250" }, + { ARM_CPUID_PXA255, "pxa255" }, + { ARM_CPUID_PXA260, "pxa260" }, + { ARM_CPUID_PXA261, "pxa261" }, + { ARM_CPUID_PXA262, "pxa262" }, + { ARM_CPUID_PXA270, "pxa270" }, + { ARM_CPUID_PXA270_A0, "pxa270-a0" }, + { ARM_CPUID_PXA270_A1, "pxa270-a1" }, + { ARM_CPUID_PXA270_B0, "pxa270-b0" }, + { ARM_CPUID_PXA270_B1, "pxa270-b1" }, + { ARM_CPUID_PXA270_C0, "pxa270-c0" }, + { ARM_CPUID_PXA270_C5, "pxa270-c5" }, + { ARM_CPUID_ANY, "any"}, + { 0, NULL} +}; + +void arm_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...)) +{ + int i; + + (*cpu_fprintf)(f, "Available CPUs:\n"); + for (i = 0; arm_cpu_names[i].name; i++) { + (*cpu_fprintf)(f, " %s\n", arm_cpu_names[i].name); + } +} + +/* return 0 if not found */ +static uint32_t cpu_arm_find_by_name(const char *name) +{ + int i; + uint32_t id; + + id = 0; + for (i = 0; arm_cpu_names[i].name; i++) { + if (strcmp(name, arm_cpu_names[i].name) == 0) { + id = arm_cpu_names[i].id; + break; + } + } + return id; +} + +void cpu_arm_close(CPUARMState *env) +{ + free(env); +} + +uint32_t cpsr_read(CPUARMState *env) +{ + int ZF; + ZF = (env->ZF == 0); + return env->uncached_cpsr | (env->NF & 0x80000000) | (ZF << 30) | + (env->CF << 29) | ((env->VF & 0x80000000) >> 3) | (env->QF << 27) + | (env->thumb << 5) | ((env->condexec_bits & 3) << 25) + | ((env->condexec_bits & 0xfc) << 8) + | (env->GE << 16); +} + +void cpsr_write(CPUARMState *env, uint32_t val, uint32_t mask) +{ + if (mask & CPSR_NZCV) { + env->ZF = (~val) & CPSR_Z; + env->NF = val; + env->CF = (val >> 29) & 1; + env->VF = (val << 3) & 0x80000000; + } + if (mask & CPSR_Q) + env->QF = ((val & CPSR_Q) != 0); + if (mask & CPSR_T) + env->thumb = ((val & CPSR_T) != 0); + if (mask & CPSR_IT_0_1) { + env->condexec_bits &= ~3; + env->condexec_bits |= (val >> 25) & 3; + } + if (mask & CPSR_IT_2_7) { + env->condexec_bits &= 3; + env->condexec_bits |= (val >> 8) & 0xfc; + } + if (mask & CPSR_GE) { + env->GE = (val >> 16) & 0xf; + } + + if ((env->uncached_cpsr ^ val) & mask & CPSR_M) { + switch_mode(env, val & CPSR_M); + } + mask &= ~CACHED_CPSR_BITS; + env->uncached_cpsr = (env->uncached_cpsr & ~mask) | (val & mask); +} + +/* Sign/zero extend */ +uint32_t HELPER(sxtb16)(uint32_t x) +{ + uint32_t res; + res = (uint16_t)(int8_t)x; + res |= (uint32_t)(int8_t)(x >> 16) << 16; + return res; +} + +uint32_t HELPER(uxtb16)(uint32_t x) +{ + uint32_t res; + res = (uint16_t)(uint8_t)x; + res |= (uint32_t)(uint8_t)(x >> 16) << 16; + return res; +} + +uint32_t HELPER(clz)(uint32_t x) +{ + return clz32(x); +} + +int32_t HELPER(sdiv)(int32_t num, int32_t den) +{ + if (den == 0) + return 0; + if (num == INT_MIN && den == -1) + return INT_MIN; + return num / den; +} + +uint32_t HELPER(udiv)(uint32_t num, uint32_t den) +{ + if (den == 0) + return 0; + return num / den; +} + +uint32_t HELPER(rbit)(uint32_t x) +{ + x = ((x & 0xff000000) >> 24) + | ((x & 0x00ff0000) >> 8) + | ((x & 0x0000ff00) << 8) + | ((x & 0x000000ff) << 24); + x = ((x & 0xf0f0f0f0) >> 4) + | ((x & 0x0f0f0f0f) << 4); + x = ((x & 0x88888888) >> 3) + | ((x & 0x44444444) >> 1) + | ((x & 0x22222222) << 1) + | ((x & 0x11111111) << 3); + return x; +} + +uint32_t HELPER(abs)(uint32_t x) +{ + return ((int32_t)x < 0) ? -x : x; +} + +#if defined(CONFIG_USER_ONLY) + +void do_interrupt (CPUState *env) +{ + env->exception_index = -1; +} + +int cpu_arm_handle_mmu_fault (CPUState *env, target_ulong address, int rw, + int mmu_idx, int is_softmmu) +{ + if (rw == 2) { + env->exception_index = EXCP_PREFETCH_ABORT; + env->cp15.c6_insn = address; + } else { + env->exception_index = EXCP_DATA_ABORT; + env->cp15.c6_data = address; + } + return 1; +} + +target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) +{ + return addr; +} + +/* These should probably raise undefined insn exceptions. */ +void HELPER(set_cp)(CPUState *env, uint32_t insn, uint32_t val) +{ + int op1 = (insn >> 8) & 0xf; + cpu_abort(env, "cp%i insn %08x\n", op1, insn); + return; +} + +uint32_t HELPER(get_cp)(CPUState *env, uint32_t insn) +{ + int op1 = (insn >> 8) & 0xf; + cpu_abort(env, "cp%i insn %08x\n", op1, insn); + return 0; +} + +void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val) +{ + cpu_abort(env, "cp15 insn %08x\n", insn); +} + +uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn) +{ + cpu_abort(env, "cp15 insn %08x\n", insn); + return 0; +} + +/* These should probably raise undefined insn exceptions. */ +void HELPER(v7m_msr)(CPUState *env, uint32_t reg, uint32_t val) +{ + cpu_abort(env, "v7m_mrs %d\n", reg); +} + +uint32_t HELPER(v7m_mrs)(CPUState *env, uint32_t reg) +{ + cpu_abort(env, "v7m_mrs %d\n", reg); + return 0; +} + +void switch_mode(CPUState *env, int mode) +{ + if (mode != ARM_CPU_MODE_USR) + cpu_abort(env, "Tried to switch out of user mode\n"); +} + +void HELPER(set_r13_banked)(CPUState *env, uint32_t mode, uint32_t val) +{ + cpu_abort(env, "banked r13 write\n"); +} + +uint32_t HELPER(get_r13_banked)(CPUState *env, uint32_t mode) +{ + cpu_abort(env, "banked r13 read\n"); + return 0; +} + +#else + +extern int semihosting_enabled; + +/* Map CPU modes onto saved register banks. */ +static inline int bank_number (int mode) +{ + switch (mode) { + case ARM_CPU_MODE_USR: + case ARM_CPU_MODE_SYS: + return 0; + case ARM_CPU_MODE_SVC: + return 1; + case ARM_CPU_MODE_ABT: + return 2; + case ARM_CPU_MODE_UND: + return 3; + case ARM_CPU_MODE_IRQ: + return 4; + case ARM_CPU_MODE_FIQ: + return 5; + } + cpu_abort(cpu_single_env, "Bad mode %x\n", mode); + return -1; +} + +void switch_mode(CPUState *env, int mode) +{ + int old_mode; + int i; + + old_mode = env->uncached_cpsr & CPSR_M; + if (mode == old_mode) + return; + + if (old_mode == ARM_CPU_MODE_FIQ) { + memcpy (env->fiq_regs, env->regs + 8, 5 * sizeof(uint32_t)); + memcpy (env->regs + 8, env->usr_regs, 5 * sizeof(uint32_t)); + } else if (mode == ARM_CPU_MODE_FIQ) { + memcpy (env->usr_regs, env->regs + 8, 5 * sizeof(uint32_t)); + memcpy (env->regs + 8, env->fiq_regs, 5 * sizeof(uint32_t)); + } + + i = bank_number(old_mode); + env->banked_r13[i] = env->regs[13]; + env->banked_r14[i] = env->regs[14]; + env->banked_spsr[i] = env->spsr; + + i = bank_number(mode); + env->regs[13] = env->banked_r13[i]; + env->regs[14] = env->banked_r14[i]; + env->spsr = env->banked_spsr[i]; +} + +static void v7m_push(CPUARMState *env, uint32_t val) +{ + env->regs[13] -= 4; + stl_phys(env->regs[13], val); +} + +static uint32_t v7m_pop(CPUARMState *env) +{ + uint32_t val; + val = ldl_phys(env->regs[13]); + env->regs[13] += 4; + return val; +} + +/* Switch to V7M main or process stack pointer. */ +static void switch_v7m_sp(CPUARMState *env, int process) +{ + uint32_t tmp; + if (env->v7m.current_sp != process) { + tmp = env->v7m.other_sp; + env->v7m.other_sp = env->regs[13]; + env->regs[13] = tmp; + env->v7m.current_sp = process; + } +} + +static void do_v7m_exception_exit(CPUARMState *env) +{ + uint32_t type; + uint32_t xpsr; + + type = env->regs[15]; + if (env->v7m.exception != 0) + armv7m_nvic_complete_irq(env->v7m.nvic, env->v7m.exception); + + /* Switch to the target stack. */ + switch_v7m_sp(env, (type & 4) != 0); + /* Pop registers. */ + env->regs[0] = v7m_pop(env); + env->regs[1] = v7m_pop(env); + env->regs[2] = v7m_pop(env); + env->regs[3] = v7m_pop(env); + env->regs[12] = v7m_pop(env); + env->regs[14] = v7m_pop(env); + env->regs[15] = v7m_pop(env); + xpsr = v7m_pop(env); + xpsr_write(env, xpsr, 0xfffffdff); + /* Undo stack alignment. */ + if (xpsr & 0x200) + env->regs[13] |= 4; + /* ??? The exception return type specifies Thread/Handler mode. However + this is also implied by the xPSR value. Not sure what to do + if there is a mismatch. */ + /* ??? Likewise for mismatches between the CONTROL register and the stack + pointer. */ +} + +static void do_interrupt_v7m(CPUARMState *env) +{ + uint32_t xpsr = xpsr_read(env); + uint32_t lr; + uint32_t addr; + + lr = 0xfffffff1; + if (env->v7m.current_sp) + lr |= 4; + if (env->v7m.exception == 0) + lr |= 8; + + /* For exceptions we just mark as pending on the NVIC, and let that + handle it. */ + /* TODO: Need to escalate if the current priority is higher than the + one we're raising. */ + switch (env->exception_index) { + case EXCP_UDEF: + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_USAGE); + return; + case EXCP_SWI: + env->regs[15] += 2; + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_SVC); + return; + case EXCP_PREFETCH_ABORT: + case EXCP_DATA_ABORT: + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_MEM); + return; + case EXCP_BKPT: + if (semihosting_enabled) { + int nr; + nr = lduw_code(env->regs[15]) & 0xff; + if (nr == 0xab) { + env->regs[15] += 2; + env->regs[0] = do_arm_semihosting(env); + return; + } + } + armv7m_nvic_set_pending(env->v7m.nvic, ARMV7M_EXCP_DEBUG); + return; + case EXCP_IRQ: + env->v7m.exception = armv7m_nvic_acknowledge_irq(env->v7m.nvic); + break; + case EXCP_EXCEPTION_EXIT: + do_v7m_exception_exit(env); + return; + default: + cpu_abort(env, "Unhandled exception 0x%x\n", env->exception_index); + return; /* Never happens. Keep compiler happy. */ + } + + /* Align stack pointer. */ + /* ??? Should only do this if Configuration Control Register + STACKALIGN bit is set. */ + if (env->regs[13] & 4) { + env->regs[13] -= 4; + xpsr |= 0x200; + } + /* Switch to the handler mode. */ + v7m_push(env, xpsr); + v7m_push(env, env->regs[15]); + v7m_push(env, env->regs[14]); + v7m_push(env, env->regs[12]); + v7m_push(env, env->regs[3]); + v7m_push(env, env->regs[2]); + v7m_push(env, env->regs[1]); + v7m_push(env, env->regs[0]); + switch_v7m_sp(env, 0); + env->uncached_cpsr &= ~CPSR_IT; + env->regs[14] = lr; + addr = ldl_phys(env->v7m.vecbase + env->v7m.exception * 4); + env->regs[15] = addr & 0xfffffffe; + env->thumb = addr & 1; +} + +/* Handle a CPU exception. */ +void do_interrupt(CPUARMState *env) +{ + uint32_t addr; + uint32_t mask; + int new_mode; + uint32_t offset; + + if (IS_M(env)) { + do_interrupt_v7m(env); + return; + } + /* TODO: Vectored interrupt controller. */ + switch (env->exception_index) { + case EXCP_UDEF: + new_mode = ARM_CPU_MODE_UND; + addr = 0x04; + mask = CPSR_I; + if (env->thumb) + offset = 2; + else + offset = 4; + break; + case EXCP_SWI: + if (semihosting_enabled) { + /* Check for semihosting interrupt. */ + if (env->thumb) { + mask = lduw_code(env->regs[15] - 2) & 0xff; + } else { + mask = ldl_code(env->regs[15] - 4) & 0xffffff; + } + /* Only intercept calls from privileged modes, to provide some + semblance of security. */ + if (((mask == 0x123456 && !env->thumb) + || (mask == 0xab && env->thumb)) + && (env->uncached_cpsr & CPSR_M) != ARM_CPU_MODE_USR) { + env->regs[0] = do_arm_semihosting(env); + return; + } + } + new_mode = ARM_CPU_MODE_SVC; + addr = 0x08; + mask = CPSR_I; + /* The PC already points to the next instruction. */ + offset = 0; + break; + case EXCP_BKPT: + /* See if this is a semihosting syscall. */ + if (env->thumb && semihosting_enabled) { + mask = lduw_code(env->regs[15]) & 0xff; + if (mask == 0xab + && (env->uncached_cpsr & CPSR_M) != ARM_CPU_MODE_USR) { + env->regs[15] += 2; + env->regs[0] = do_arm_semihosting(env); + return; + } + } + /* Fall through to prefetch abort. */ + case EXCP_PREFETCH_ABORT: + new_mode = ARM_CPU_MODE_ABT; + addr = 0x0c; + mask = CPSR_A | CPSR_I; + offset = 4; + break; + case EXCP_DATA_ABORT: + new_mode = ARM_CPU_MODE_ABT; + addr = 0x10; + mask = CPSR_A | CPSR_I; + offset = 8; + break; + case EXCP_IRQ: + new_mode = ARM_CPU_MODE_IRQ; + addr = 0x18; + /* Disable IRQ and imprecise data aborts. */ + mask = CPSR_A | CPSR_I; + offset = 4; + break; + case EXCP_FIQ: + new_mode = ARM_CPU_MODE_FIQ; + addr = 0x1c; + /* Disable FIQ, IRQ and imprecise data aborts. */ + mask = CPSR_A | CPSR_I | CPSR_F; + offset = 4; + break; + default: + cpu_abort(env, "Unhandled exception 0x%x\n", env->exception_index); + return; /* Never happens. Keep compiler happy. */ + } + /* High vectors. */ + if (env->cp15.c1_sys & (1 << 13)) { + addr += 0xffff0000; + } + switch_mode (env, new_mode); + env->spsr = cpsr_read(env); + /* Clear IT bits. */ + env->condexec_bits = 0; + /* Switch to the new mode, and switch to Arm mode. */ + /* ??? Thumb interrupt handlers not implemented. */ + env->uncached_cpsr = (env->uncached_cpsr & ~CPSR_M) | new_mode; + env->uncached_cpsr |= mask; + env->thumb = 0; + env->regs[14] = env->regs[15] + offset; + env->regs[15] = addr; + env->interrupt_request |= CPU_INTERRUPT_EXITTB; +} + +/* Check section/page access permissions. + Returns the page protection flags, or zero if the access is not + permitted. */ +static inline int check_ap(CPUState *env, int ap, int domain, int access_type, + int is_user) +{ + int prot_ro; + + if (domain == 3) + return PAGE_READ | PAGE_WRITE; + + if (access_type == 1) + prot_ro = 0; + else + prot_ro = PAGE_READ; + + switch (ap) { + case 0: + if (access_type == 1) + return 0; + switch ((env->cp15.c1_sys >> 8) & 3) { + case 1: + return is_user ? 0 : PAGE_READ; + case 2: + return PAGE_READ; + default: + return 0; + } + case 1: + return is_user ? 0 : PAGE_READ | PAGE_WRITE; + case 2: + if (is_user) + return prot_ro; + else + return PAGE_READ | PAGE_WRITE; + case 3: + return PAGE_READ | PAGE_WRITE; + case 4: /* Reserved. */ + return 0; + case 5: + return is_user ? 0 : prot_ro; + case 6: + return prot_ro; + case 7: + if (!arm_feature (env, ARM_FEATURE_V7)) + return 0; + return prot_ro; + default: + abort(); + } +} + +static uint32_t get_level1_table_address(CPUState *env, uint32_t address) +{ + uint32_t table; + + if (address & env->cp15.c2_mask) + table = env->cp15.c2_base1 & 0xffffc000; + else + table = env->cp15.c2_base0 & env->cp15.c2_base_mask; + + table |= (address >> 18) & 0x3ffc; + return table; +} + +static int get_phys_addr_v5(CPUState *env, uint32_t address, int access_type, + int is_user, uint32_t *phys_ptr, int *prot) +{ + int code; + uint32_t table; + uint32_t desc; + int type; + int ap; + int domain; + uint32_t phys_addr; + + /* Pagetable walk. */ + /* Lookup l1 descriptor. */ + table = get_level1_table_address(env, address); + desc = ldl_phys(table); + type = (desc & 3); + domain = (env->cp15.c3 >> ((desc >> 4) & 0x1e)) & 3; + if (type == 0) { + /* Section translation fault. */ + code = 5; + goto do_fault; + } + if (domain == 0 || domain == 2) { + if (type == 2) + code = 9; /* Section domain fault. */ + else + code = 11; /* Page domain fault. */ + goto do_fault; + } + if (type == 2) { + /* 1Mb section. */ + phys_addr = (desc & 0xfff00000) | (address & 0x000fffff); + ap = (desc >> 10) & 3; + code = 13; + } else { + /* Lookup l2 entry. */ + if (type == 1) { + /* Coarse pagetable. */ + table = (desc & 0xfffffc00) | ((address >> 10) & 0x3fc); + } else { + /* Fine pagetable. */ + table = (desc & 0xfffff000) | ((address >> 8) & 0xffc); + } + desc = ldl_phys(table); + switch (desc & 3) { + case 0: /* Page translation fault. */ + code = 7; + goto do_fault; + case 1: /* 64k page. */ + phys_addr = (desc & 0xffff0000) | (address & 0xffff); + ap = (desc >> (4 + ((address >> 13) & 6))) & 3; + break; + case 2: /* 4k page. */ + phys_addr = (desc & 0xfffff000) | (address & 0xfff); + ap = (desc >> (4 + ((address >> 13) & 6))) & 3; + break; + case 3: /* 1k page. */ + if (type == 1) { + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + phys_addr = (desc & 0xfffff000) | (address & 0xfff); + } else { + /* Page translation fault. */ + code = 7; + goto do_fault; + } + } else { + phys_addr = (desc & 0xfffffc00) | (address & 0x3ff); + } + ap = (desc >> 4) & 3; + break; + default: + /* Never happens, but compiler isn't smart enough to tell. */ + abort(); + } + code = 15; + } + *prot = check_ap(env, ap, domain, access_type, is_user); + if (!*prot) { + /* Access permission fault. */ + goto do_fault; + } + *phys_ptr = phys_addr; + return 0; +do_fault: + return code | (domain << 4); +} + +static int get_phys_addr_v6(CPUState *env, uint32_t address, int access_type, + int is_user, uint32_t *phys_ptr, int *prot) +{ + int code; + uint32_t table; + uint32_t desc; + uint32_t xn; + int type; + int ap; + int domain; + uint32_t phys_addr; + + /* Pagetable walk. */ + /* Lookup l1 descriptor. */ + table = get_level1_table_address(env, address); + desc = ldl_phys(table); + type = (desc & 3); + if (type == 0) { + /* Section translation fault. */ + code = 5; + domain = 0; + goto do_fault; + } else if (type == 2 && (desc & (1 << 18))) { + /* Supersection. */ + domain = 0; + } else { + /* Section or page. */ + domain = (desc >> 4) & 0x1e; + } + domain = (env->cp15.c3 >> domain) & 3; + if (domain == 0 || domain == 2) { + if (type == 2) + code = 9; /* Section domain fault. */ + else + code = 11; /* Page domain fault. */ + goto do_fault; + } + if (type == 2) { + if (desc & (1 << 18)) { + /* Supersection. */ + phys_addr = (desc & 0xff000000) | (address & 0x00ffffff); + } else { + /* Section. */ + phys_addr = (desc & 0xfff00000) | (address & 0x000fffff); + } + ap = ((desc >> 10) & 3) | ((desc >> 13) & 4); + xn = desc & (1 << 4); + code = 13; + } else { + /* Lookup l2 entry. */ + table = (desc & 0xfffffc00) | ((address >> 10) & 0x3fc); + desc = ldl_phys(table); + ap = ((desc >> 4) & 3) | ((desc >> 7) & 4); + switch (desc & 3) { + case 0: /* Page translation fault. */ + code = 7; + goto do_fault; + case 1: /* 64k page. */ + phys_addr = (desc & 0xffff0000) | (address & 0xffff); + xn = desc & (1 << 15); + break; + case 2: case 3: /* 4k page. */ + phys_addr = (desc & 0xfffff000) | (address & 0xfff); + xn = desc & 1; + break; + default: + /* Never happens, but compiler isn't smart enough to tell. */ + abort(); + } + code = 15; + } + if (xn && access_type == 2) + goto do_fault; + + /* The simplified model uses AP[0] as an access control bit. */ + if ((env->cp15.c1_sys & (1 << 29)) && (ap & 1) == 0) { + /* Access flag fault. */ + code = (code == 15) ? 6 : 3; + goto do_fault; + } + *prot = check_ap(env, ap, domain, access_type, is_user); + if (!*prot) { + /* Access permission fault. */ + goto do_fault; + } + *phys_ptr = phys_addr; + return 0; +do_fault: + return code | (domain << 4); +} + +static int get_phys_addr_mpu(CPUState *env, uint32_t address, int access_type, + int is_user, uint32_t *phys_ptr, int *prot) +{ + int n; + uint32_t mask; + uint32_t base; + + *phys_ptr = address; + for (n = 7; n >= 0; n--) { + base = env->cp15.c6_region[n]; + if ((base & 1) == 0) + continue; + mask = 1 << ((base >> 1) & 0x1f); + /* Keep this shift separate from the above to avoid an + (undefined) << 32. */ + mask = (mask << 1) - 1; + if (((base ^ address) & ~mask) == 0) + break; + } + if (n < 0) + return 2; + + if (access_type == 2) { + mask = env->cp15.c5_insn; + } else { + mask = env->cp15.c5_data; + } + mask = (mask >> (n * 4)) & 0xf; + switch (mask) { + case 0: + return 1; + case 1: + if (is_user) + return 1; + *prot = PAGE_READ | PAGE_WRITE; + break; + case 2: + *prot = PAGE_READ; + if (!is_user) + *prot |= PAGE_WRITE; + break; + case 3: + *prot = PAGE_READ | PAGE_WRITE; + break; + case 5: + if (is_user) + return 1; + *prot = PAGE_READ; + break; + case 6: + *prot = PAGE_READ; + break; + default: + /* Bad permission. */ + return 1; + } + return 0; +} + +static inline int get_phys_addr(CPUState *env, uint32_t address, + int access_type, int is_user, + uint32_t *phys_ptr, int *prot) +{ + /* Fast Context Switch Extension. */ + if (address < 0x02000000) + address += env->cp15.c13_fcse; + + if ((env->cp15.c1_sys & 1) == 0) { + /* MMU/MPU disabled. */ + *phys_ptr = address; + *prot = PAGE_READ | PAGE_WRITE; + return 0; + } else if (arm_feature(env, ARM_FEATURE_MPU)) { + return get_phys_addr_mpu(env, address, access_type, is_user, phys_ptr, + prot); + } else if (env->cp15.c1_sys & (1 << 23)) { + return get_phys_addr_v6(env, address, access_type, is_user, phys_ptr, + prot); + } else { + return get_phys_addr_v5(env, address, access_type, is_user, phys_ptr, + prot); + } +} + +int cpu_arm_handle_mmu_fault (CPUState *env, target_ulong address, + int access_type, int mmu_idx, int is_softmmu) +{ + uint32_t phys_addr; + int prot; + int ret, is_user; + + is_user = mmu_idx == MMU_USER_IDX; + ret = get_phys_addr(env, address, access_type, is_user, &phys_addr, &prot); + if (ret == 0) { + /* Map a single [sub]page. */ + phys_addr &= ~(uint32_t)0x3ff; + address &= ~(uint32_t)0x3ff; + return tlb_set_page (env, address, phys_addr, prot, mmu_idx, + is_softmmu); + } + + if (access_type == 2) { + env->cp15.c5_insn = ret; + env->cp15.c6_insn = address; + env->exception_index = EXCP_PREFETCH_ABORT; + } else { + env->cp15.c5_data = ret; + if (access_type == 1 && arm_feature(env, ARM_FEATURE_V6)) + env->cp15.c5_data |= (1 << 11); + env->cp15.c6_data = address; + env->exception_index = EXCP_DATA_ABORT; + } + return 1; +} + +target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) +{ + uint32_t phys_addr; + int prot; + int ret; + + ret = get_phys_addr(env, addr, 0, 0, &phys_addr, &prot); + + if (ret != 0) + return -1; + + return phys_addr; +} + +void HELPER(set_cp)(CPUState *env, uint32_t insn, uint32_t val) +{ + int cp_num = (insn >> 8) & 0xf; + int cp_info = (insn >> 5) & 7; + int src = (insn >> 16) & 0xf; + int operand = insn & 0xf; + + if (env->cp[cp_num].cp_write) + env->cp[cp_num].cp_write(env->cp[cp_num].opaque, + cp_info, src, operand, val); +} + +uint32_t HELPER(get_cp)(CPUState *env, uint32_t insn) +{ + int cp_num = (insn >> 8) & 0xf; + int cp_info = (insn >> 5) & 7; + int dest = (insn >> 16) & 0xf; + int operand = insn & 0xf; + + if (env->cp[cp_num].cp_read) + return env->cp[cp_num].cp_read(env->cp[cp_num].opaque, + cp_info, dest, operand); + return 0; +} + +/* Return basic MPU access permission bits. */ +static uint32_t simple_mpu_ap_bits(uint32_t val) +{ + uint32_t ret; + uint32_t mask; + int i; + ret = 0; + mask = 3; + for (i = 0; i < 16; i += 2) { + ret |= (val >> i) & mask; + mask <<= 2; + } + return ret; +} + +/* Pad basic MPU access permission bits to extended format. */ +static uint32_t extended_mpu_ap_bits(uint32_t val) +{ + uint32_t ret; + uint32_t mask; + int i; + ret = 0; + mask = 3; + for (i = 0; i < 16; i += 2) { + ret |= (val & mask) << i; + mask <<= 2; + } + return ret; +} + +void HELPER(set_cp15)(CPUState *env, uint32_t insn, uint32_t val) +{ + int op1; + int op2; + int crm; + + op1 = (insn >> 21) & 7; + op2 = (insn >> 5) & 7; + crm = insn & 0xf; + switch ((insn >> 16) & 0xf) { + case 0: + /* ID codes. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + break; + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + break; + if (arm_feature(env, ARM_FEATURE_V7) + && op1 == 2 && crm == 0 && op2 == 0) { + env->cp15.c0_cssel = val & 0xf; + break; + } + goto bad_reg; + case 1: /* System configuration. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + if (!arm_feature(env, ARM_FEATURE_XSCALE) || crm == 0) + env->cp15.c1_sys = val; + /* ??? Lots of these bits are not implemented. */ + /* This may enable/disable the MMU, so do a TLB flush. */ + tlb_flush(env, 1); + break; + case 1: /* Auxiliary cotrol register. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + env->cp15.c1_xscaleauxcr = val; + break; + } + /* Not implemented. */ + break; + case 2: + if (arm_feature(env, ARM_FEATURE_XSCALE)) + goto bad_reg; + if (env->cp15.c1_coproc != val) { + env->cp15.c1_coproc = val; + /* ??? Is this safe when called from within a TB? */ + tb_flush(env); + } + break; + default: + goto bad_reg; + } + break; + case 2: /* MMU Page table control / MPU cache control. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + switch (op2) { + case 0: + env->cp15.c2_data = val; + break; + case 1: + env->cp15.c2_insn = val; + break; + default: + goto bad_reg; + } + } else { + switch (op2) { + case 0: + env->cp15.c2_base0 = val; + break; + case 1: + env->cp15.c2_base1 = val; + break; + case 2: + val &= 7; + env->cp15.c2_control = val; + env->cp15.c2_mask = ~(((uint32_t)0xffffffffu) >> val); + env->cp15.c2_base_mask = ~((uint32_t)0x3fffu >> val); + break; + default: + goto bad_reg; + } + } + break; + case 3: /* MMU Domain access control / MPU write buffer control. */ + env->cp15.c3 = val; + tlb_flush(env, 1); /* Flush TLB as domain not tracked in TLB */ + break; + case 4: /* Reserved. */ + goto bad_reg; + case 5: /* MMU Fault status / MPU access permission. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + if (arm_feature(env, ARM_FEATURE_MPU)) + val = extended_mpu_ap_bits(val); + env->cp15.c5_data = val; + break; + case 1: + if (arm_feature(env, ARM_FEATURE_MPU)) + val = extended_mpu_ap_bits(val); + env->cp15.c5_insn = val; + break; + case 2: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + env->cp15.c5_data = val; + break; + case 3: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + env->cp15.c5_insn = val; + break; + default: + goto bad_reg; + } + break; + case 6: /* MMU Fault address / MPU base/size. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + if (crm >= 8) + goto bad_reg; + env->cp15.c6_region[crm] = val; + } else { + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + env->cp15.c6_data = val; + break; + case 1: /* ??? This is WFAR on armv6 */ + case 2: + env->cp15.c6_insn = val; + break; + default: + goto bad_reg; + } + } + break; + case 7: /* Cache control. */ + env->cp15.c15_i_max = 0x000; + env->cp15.c15_i_min = 0xff0; + /* No cache, so nothing to do. */ + /* ??? MPCore has VA to PA translation functions. */ + break; + case 8: /* MMU TLB control. */ + switch (op2) { + case 0: /* Invalidate all. */ + tlb_flush(env, 0); + break; + case 1: /* Invalidate single TLB entry. */ +#if 0 + /* ??? This is wrong for large pages and sections. */ + /* As an ugly hack to make linux work we always flush a 4K + pages. */ + val &= 0xfffff000; + tlb_flush_page(env, val); + tlb_flush_page(env, val + 0x400); + tlb_flush_page(env, val + 0x800); + tlb_flush_page(env, val + 0xc00); +#else + tlb_flush(env, 1); +#endif + break; + case 2: /* Invalidate on ASID. */ + tlb_flush(env, val == 0); + break; + case 3: /* Invalidate single entry on MVA. */ + /* ??? This is like case 1, but ignores ASID. */ + tlb_flush(env, 1); + break; + default: + goto bad_reg; + } + break; + case 9: + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + break; + switch (crm) { + case 0: /* Cache lockdown. */ + switch (op1) { + case 0: /* L1 cache. */ + switch (op2) { + case 0: + env->cp15.c9_data = val; + break; + case 1: + env->cp15.c9_insn = val; + break; + default: + goto bad_reg; + } + break; + case 1: /* L2 cache. */ + /* Ignore writes to L2 lockdown/auxiliary registers. */ + break; + default: + goto bad_reg; + } + break; + case 1: /* TCM memory region registers. */ + /* Not implemented. */ + goto bad_reg; + default: + goto bad_reg; + } + break; + case 10: /* MMU TLB lockdown. */ + /* ??? TLB lockdown not implemented. */ + break; + case 12: /* Reserved. */ + goto bad_reg; + case 13: /* Process ID. */ + switch (op2) { + case 0: + /* Unlike real hardware the qemu TLB uses virtual addresses, + not modified virtual addresses, so this causes a TLB flush. + */ + if (env->cp15.c13_fcse != val) + tlb_flush(env, 1); + env->cp15.c13_fcse = val; + break; + case 1: + /* This changes the ASID, so do a TLB flush. */ + if (env->cp15.c13_context != val + && !arm_feature(env, ARM_FEATURE_MPU)) + tlb_flush(env, 0); + env->cp15.c13_context = val; + break; + case 2: + env->cp15.c13_tls1 = val; + break; + case 3: + env->cp15.c13_tls2 = val; + break; + case 4: + env->cp15.c13_tls3 = val; + break; + default: + goto bad_reg; + } + break; + case 14: /* Reserved. */ + goto bad_reg; + case 15: /* Implementation specific. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + if (op2 == 0 && crm == 1) { + if (env->cp15.c15_cpar != (val & 0x3fff)) { + /* Changes cp0 to cp13 behavior, so needs a TB flush. */ + tb_flush(env); + env->cp15.c15_cpar = val & 0x3fff; + } + break; + } + goto bad_reg; + } + if (arm_feature(env, ARM_FEATURE_OMAPCP)) { + switch (crm) { + case 0: + break; + case 1: /* Set TI925T configuration. */ + env->cp15.c15_ticonfig = val & 0xe7; + env->cp15.c0_cpuid = (val & (1 << 5)) ? /* OS_TYPE bit */ + ARM_CPUID_TI915T : ARM_CPUID_TI925T; + break; + case 2: /* Set I_max. */ + env->cp15.c15_i_max = val; + break; + case 3: /* Set I_min. */ + env->cp15.c15_i_min = val; + break; + case 4: /* Set thread-ID. */ + env->cp15.c15_threadid = val & 0xffff; + break; + case 8: /* Wait-for-interrupt (deprecated). */ + cpu_interrupt(env, CPU_INTERRUPT_HALT); + break; + default: + goto bad_reg; + } + } + break; + } + return; +bad_reg: + /* ??? For debugging only. Should raise illegal instruction exception. */ + cpu_abort(env, "Unimplemented cp15 register write (c%d, c%d, {%d, %d})\n", + (insn >> 16) & 0xf, crm, op1, op2); +} + +uint32_t HELPER(get_cp15)(CPUState *env, uint32_t insn) +{ + int op1; + int op2; + int crm; + + op1 = (insn >> 21) & 7; + op2 = (insn >> 5) & 7; + crm = insn & 0xf; + switch ((insn >> 16) & 0xf) { + case 0: /* ID codes. */ + switch (op1) { + case 0: + switch (crm) { + case 0: + switch (op2) { + case 0: /* Device ID. */ + return env->cp15.c0_cpuid; + case 1: /* Cache Type. */ + return env->cp15.c0_cachetype; + case 2: /* TCM status. */ + return 0; + case 3: /* TLB type register. */ + return 0; /* No lockable TLB entries. */ + case 5: /* CPU ID */ + if (ARM_CPUID(env) == ARM_CPUID_CORTEXA9) { + return env->cpu_index | 0x80000900; + } else { + return env->cpu_index; + } + default: + goto bad_reg; + } + case 1: + if (!arm_feature(env, ARM_FEATURE_V6)) + goto bad_reg; + return env->cp15.c0_c1[op2]; + case 2: + if (!arm_feature(env, ARM_FEATURE_V6)) + goto bad_reg; + return env->cp15.c0_c2[op2]; + case 3: case 4: case 5: case 6: case 7: + return 0; + default: + goto bad_reg; + } + case 1: + /* These registers aren't documented on arm11 cores. However + Linux looks at them anyway. */ + if (!arm_feature(env, ARM_FEATURE_V6)) + goto bad_reg; + if (crm != 0) + goto bad_reg; + if (!arm_feature(env, ARM_FEATURE_V7)) + return 0; + + switch (op2) { + case 0: + return env->cp15.c0_ccsid[env->cp15.c0_cssel]; + case 1: + return env->cp15.c0_clid; + case 7: + return 0; + } + goto bad_reg; + case 2: + if (op2 != 0 || crm != 0) + goto bad_reg; + return env->cp15.c0_cssel; + default: + goto bad_reg; + } + case 1: /* System configuration. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: /* Control register. */ + return env->cp15.c1_sys; + case 1: /* Auxiliary control register. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + return env->cp15.c1_xscaleauxcr; + if (!arm_feature(env, ARM_FEATURE_AUXCR)) + goto bad_reg; + switch (ARM_CPUID(env)) { + case ARM_CPUID_ARM1026: + return 1; + case ARM_CPUID_ARM1136: + case ARM_CPUID_ARM1136_R2: + return 7; + case ARM_CPUID_ARM11MPCORE: + return 1; + case ARM_CPUID_CORTEXA8: + return 2; + case ARM_CPUID_CORTEXA9: + return 0; + default: + goto bad_reg; + } + case 2: /* Coprocessor access register. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + goto bad_reg; + return env->cp15.c1_coproc; + default: + goto bad_reg; + } + case 2: /* MMU Page table control / MPU cache control. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + switch (op2) { + case 0: + return env->cp15.c2_data; + break; + case 1: + return env->cp15.c2_insn; + break; + default: + goto bad_reg; + } + } else { + switch (op2) { + case 0: + return env->cp15.c2_base0; + case 1: + return env->cp15.c2_base1; + case 2: + return env->cp15.c2_control; + default: + goto bad_reg; + } + } + case 3: /* MMU Domain access control / MPU write buffer control. */ + return env->cp15.c3; + case 4: /* Reserved. */ + goto bad_reg; + case 5: /* MMU Fault status / MPU access permission. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + if (arm_feature(env, ARM_FEATURE_MPU)) + return simple_mpu_ap_bits(env->cp15.c5_data); + return env->cp15.c5_data; + case 1: + if (arm_feature(env, ARM_FEATURE_MPU)) + return simple_mpu_ap_bits(env->cp15.c5_data); + return env->cp15.c5_insn; + case 2: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + return env->cp15.c5_data; + case 3: + if (!arm_feature(env, ARM_FEATURE_MPU)) + goto bad_reg; + return env->cp15.c5_insn; + default: + goto bad_reg; + } + case 6: /* MMU Fault address. */ + if (arm_feature(env, ARM_FEATURE_MPU)) { + if (crm >= 8) + goto bad_reg; + return env->cp15.c6_region[crm]; + } else { + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + op2 = 0; + switch (op2) { + case 0: + return env->cp15.c6_data; + case 1: + if (arm_feature(env, ARM_FEATURE_V6)) { + /* Watchpoint Fault Adrress. */ + return 0; /* Not implemented. */ + } else { + /* Instruction Fault Adrress. */ + /* Arm9 doesn't have an IFAR, but implementing it anyway + shouldn't do any harm. */ + return env->cp15.c6_insn; + } + case 2: + if (arm_feature(env, ARM_FEATURE_V6)) { + /* Instruction Fault Adrress. */ + return env->cp15.c6_insn; + } else { + goto bad_reg; + } + default: + goto bad_reg; + } + } + case 7: /* Cache control. */ + /* FIXME: Should only clear Z flag if destination is r15. */ + env->ZF = 0; + return 0; + case 8: /* MMU TLB control. */ + goto bad_reg; + case 9: /* Cache lockdown. */ + switch (op1) { + case 0: /* L1 cache. */ + if (arm_feature(env, ARM_FEATURE_OMAPCP)) + return 0; + switch (op2) { + case 0: + return env->cp15.c9_data; + case 1: + return env->cp15.c9_insn; + default: + goto bad_reg; + } + case 1: /* L2 cache */ + if (crm != 0) + goto bad_reg; + /* L2 Lockdown and Auxiliary control. */ + return 0; + default: + goto bad_reg; + } + case 10: /* MMU TLB lockdown. */ + /* ??? TLB lockdown not implemented. */ + return 0; + case 11: /* TCM DMA control. */ + case 12: /* Reserved. */ + goto bad_reg; + case 13: /* Process ID. */ + switch (op2) { + case 0: + return env->cp15.c13_fcse; + case 1: + return env->cp15.c13_context; + case 2: + return env->cp15.c13_tls1; + case 3: + return env->cp15.c13_tls2; + case 4: + return env->cp15.c13_tls3; + default: + goto bad_reg; + } + case 14: /* Reserved. */ + goto bad_reg; + case 15: /* Implementation specific. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) { + if (op2 == 0 && crm == 1) + return env->cp15.c15_cpar; + + goto bad_reg; + } + if (arm_feature(env, ARM_FEATURE_OMAPCP)) { + switch (crm) { + case 0: + return 0; + case 1: /* Read TI925T configuration. */ + return env->cp15.c15_ticonfig; + case 2: /* Read I_max. */ + return env->cp15.c15_i_max; + case 3: /* Read I_min. */ + return env->cp15.c15_i_min; + case 4: /* Read thread-ID. */ + return env->cp15.c15_threadid; + case 8: /* TI925T_status */ + return 0; + } + /* TODO: Peripheral port remap register: + * On OMAP2 mcr p15, 0, rn, c15, c2, 4 sets up the interrupt + * controller base address at $rn & ~0xfff and map size of + * 0x200 << ($rn & 0xfff), when MMU is off. */ + goto bad_reg; + } + return 0; + } +bad_reg: + /* ??? For debugging only. Should raise illegal instruction exception. */ + cpu_abort(env, "Unimplemented cp15 register read (c%d, c%d, {%d, %d})\n", + (insn >> 16) & 0xf, crm, op1, op2); + return 0; +} + +void HELPER(set_r13_banked)(CPUState *env, uint32_t mode, uint32_t val) +{ + env->banked_r13[bank_number(mode)] = val; +} + +uint32_t HELPER(get_r13_banked)(CPUState *env, uint32_t mode) +{ + return env->banked_r13[bank_number(mode)]; +} + +uint32_t HELPER(v7m_mrs)(CPUState *env, uint32_t reg) +{ + switch (reg) { + case 0: /* APSR */ + return xpsr_read(env) & 0xf8000000; + case 1: /* IAPSR */ + return xpsr_read(env) & 0xf80001ff; + case 2: /* EAPSR */ + return xpsr_read(env) & 0xff00fc00; + case 3: /* xPSR */ + return xpsr_read(env) & 0xff00fdff; + case 5: /* IPSR */ + return xpsr_read(env) & 0x000001ff; + case 6: /* EPSR */ + return xpsr_read(env) & 0x0700fc00; + case 7: /* IEPSR */ + return xpsr_read(env) & 0x0700edff; + case 8: /* MSP */ + return env->v7m.current_sp ? env->v7m.other_sp : env->regs[13]; + case 9: /* PSP */ + return env->v7m.current_sp ? env->regs[13] : env->v7m.other_sp; + case 16: /* PRIMASK */ + return (env->uncached_cpsr & CPSR_I) != 0; + case 17: /* FAULTMASK */ + return (env->uncached_cpsr & CPSR_F) != 0; + case 18: /* BASEPRI */ + case 19: /* BASEPRI_MAX */ + return env->v7m.basepri; + case 20: /* CONTROL */ + return env->v7m.control; + default: + /* ??? For debugging only. */ + cpu_abort(env, "Unimplemented system register read (%d)\n", reg); + return 0; + } +} + +void HELPER(v7m_msr)(CPUState *env, uint32_t reg, uint32_t val) +{ + switch (reg) { + case 0: /* APSR */ + xpsr_write(env, val, 0xf8000000); + break; + case 1: /* IAPSR */ + xpsr_write(env, val, 0xf8000000); + break; + case 2: /* EAPSR */ + xpsr_write(env, val, 0xfe00fc00); + break; + case 3: /* xPSR */ + xpsr_write(env, val, 0xfe00fc00); + break; + case 5: /* IPSR */ + /* IPSR bits are readonly. */ + break; + case 6: /* EPSR */ + xpsr_write(env, val, 0x0600fc00); + break; + case 7: /* IEPSR */ + xpsr_write(env, val, 0x0600fc00); + break; + case 8: /* MSP */ + if (env->v7m.current_sp) + env->v7m.other_sp = val; + else + env->regs[13] = val; + break; + case 9: /* PSP */ + if (env->v7m.current_sp) + env->regs[13] = val; + else + env->v7m.other_sp = val; + break; + case 16: /* PRIMASK */ + if (val & 1) + env->uncached_cpsr |= CPSR_I; + else + env->uncached_cpsr &= ~CPSR_I; + break; + case 17: /* FAULTMASK */ + if (val & 1) + env->uncached_cpsr |= CPSR_F; + else + env->uncached_cpsr &= ~CPSR_F; + break; + case 18: /* BASEPRI */ + env->v7m.basepri = val & 0xff; + break; + case 19: /* BASEPRI_MAX */ + val &= 0xff; + if (val != 0 && (val < env->v7m.basepri || env->v7m.basepri == 0)) + env->v7m.basepri = val; + break; + case 20: /* CONTROL */ + env->v7m.control = val & 3; + switch_v7m_sp(env, (val & 2) != 0); + break; + default: + /* ??? For debugging only. */ + cpu_abort(env, "Unimplemented system register write (%d)\n", reg); + return; + } +} + +void cpu_arm_set_cp_io(CPUARMState *env, int cpnum, + ARMReadCPFunc *cp_read, ARMWriteCPFunc *cp_write, + void *opaque) +{ + if (cpnum < 0 || cpnum > 14) { + cpu_abort(env, "Bad coprocessor number: %i\n", cpnum); + return; + } + + env->cp[cpnum].cp_read = cp_read; + env->cp[cpnum].cp_write = cp_write; + env->cp[cpnum].opaque = opaque; +} + +#endif + +/* Note that signed overflow is undefined in C. The following routines are + careful to use unsigned types where modulo arithmetic is required. + Failure to do so _will_ break on newer gcc. */ + +/* Signed saturating arithmetic. */ + +/* Perform 16-bit signed saturating addition. */ +static inline uint16_t add16_sat(uint16_t a, uint16_t b) +{ + uint16_t res; + + res = a + b; + if (((res ^ a) & 0x8000) && !((a ^ b) & 0x8000)) { + if (a & 0x8000) + res = 0x8000; + else + res = 0x7fff; + } + return res; +} + +/* Perform 8-bit signed saturating addition. */ +static inline uint8_t add8_sat(uint8_t a, uint8_t b) +{ + uint8_t res; + + res = a + b; + if (((res ^ a) & 0x80) && !((a ^ b) & 0x80)) { + if (a & 0x80) + res = 0x80; + else + res = 0x7f; + } + return res; +} + +/* Perform 16-bit signed saturating subtraction. */ +static inline uint16_t sub16_sat(uint16_t a, uint16_t b) +{ + uint16_t res; + + res = a - b; + if (((res ^ a) & 0x8000) && ((a ^ b) & 0x8000)) { + if (a & 0x8000) + res = 0x8000; + else + res = 0x7fff; + } + return res; +} + +/* Perform 8-bit signed saturating subtraction. */ +static inline uint8_t sub8_sat(uint8_t a, uint8_t b) +{ + uint8_t res; + + res = a - b; + if (((res ^ a) & 0x80) && ((a ^ b) & 0x80)) { + if (a & 0x80) + res = 0x80; + else + res = 0x7f; + } + return res; +} + +#define ADD16(a, b, n) RESULT(add16_sat(a, b), n, 16); +#define SUB16(a, b, n) RESULT(sub16_sat(a, b), n, 16); +#define ADD8(a, b, n) RESULT(add8_sat(a, b), n, 8); +#define SUB8(a, b, n) RESULT(sub8_sat(a, b), n, 8); +#define PFX q + +#include "op_addsub.h" + +/* Unsigned saturating arithmetic. */ +static inline uint16_t add16_usat(uint16_t a, uint16_t b) +{ + uint16_t res; + res = a + b; + if (res < a) + res = 0xffff; + return res; +} + +static inline uint16_t sub16_usat(uint16_t a, uint16_t b) +{ + if (a < b) + return a - b; + else + return 0; +} + +static inline uint8_t add8_usat(uint8_t a, uint8_t b) +{ + uint8_t res; + res = a + b; + if (res < a) + res = 0xff; + return res; +} + +static inline uint8_t sub8_usat(uint8_t a, uint8_t b) +{ + if (a < b) + return a - b; + else + return 0; +} + +#define ADD16(a, b, n) RESULT(add16_usat(a, b), n, 16); +#define SUB16(a, b, n) RESULT(sub16_usat(a, b), n, 16); +#define ADD8(a, b, n) RESULT(add8_usat(a, b), n, 8); +#define SUB8(a, b, n) RESULT(sub8_usat(a, b), n, 8); +#define PFX uq + +#include "op_addsub.h" + +/* Signed modulo arithmetic. */ +#define SARITH16(a, b, n, op) do { \ + int32_t sum; \ + sum = (int16_t)((uint16_t)(a) op (uint16_t)(b)); \ + RESULT(sum, n, 16); \ + if (sum >= 0) \ + ge |= 3 << (n * 2); \ + } while(0) + +#define SARITH8(a, b, n, op) do { \ + int32_t sum; \ + sum = (int8_t)((uint8_t)(a) op (uint8_t)(b)); \ + RESULT(sum, n, 8); \ + if (sum >= 0) \ + ge |= 1 << n; \ + } while(0) + + +#define ADD16(a, b, n) SARITH16(a, b, n, +) +#define SUB16(a, b, n) SARITH16(a, b, n, -) +#define ADD8(a, b, n) SARITH8(a, b, n, +) +#define SUB8(a, b, n) SARITH8(a, b, n, -) +#define PFX s +#define ARITH_GE + +#include "op_addsub.h" + +/* Unsigned modulo arithmetic. */ +#define ADD16(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint16_t)(a) + (uint32_t)(uint16_t)(b); \ + RESULT(sum, n, 16); \ + if ((sum >> 16) == 1) \ + ge |= 3 << (n * 2); \ + } while(0) + +#define ADD8(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint8_t)(a) + (uint32_t)(uint8_t)(b); \ + RESULT(sum, n, 8); \ + if ((sum >> 8) == 1) \ + ge |= 1 << n; \ + } while(0) + +#define SUB16(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint16_t)(a) - (uint32_t)(uint16_t)(b); \ + RESULT(sum, n, 16); \ + if ((sum >> 16) == 0) \ + ge |= 3 << (n * 2); \ + } while(0) + +#define SUB8(a, b, n) do { \ + uint32_t sum; \ + sum = (uint32_t)(uint8_t)(a) - (uint32_t)(uint8_t)(b); \ + RESULT(sum, n, 8); \ + if ((sum >> 8) == 0) \ + ge |= 1 << n; \ + } while(0) + +#define PFX u +#define ARITH_GE + +#include "op_addsub.h" + +/* Halved signed arithmetic. */ +#define ADD16(a, b, n) \ + RESULT(((int32_t)(int16_t)(a) + (int32_t)(int16_t)(b)) >> 1, n, 16) +#define SUB16(a, b, n) \ + RESULT(((int32_t)(int16_t)(a) - (int32_t)(int16_t)(b)) >> 1, n, 16) +#define ADD8(a, b, n) \ + RESULT(((int32_t)(int8_t)(a) + (int32_t)(int8_t)(b)) >> 1, n, 8) +#define SUB8(a, b, n) \ + RESULT(((int32_t)(int8_t)(a) - (int32_t)(int8_t)(b)) >> 1, n, 8) +#define PFX sh + +#include "op_addsub.h" + +/* Halved unsigned arithmetic. */ +#define ADD16(a, b, n) \ + RESULT(((uint32_t)(uint16_t)(a) + (uint32_t)(uint16_t)(b)) >> 1, n, 16) +#define SUB16(a, b, n) \ + RESULT(((uint32_t)(uint16_t)(a) - (uint32_t)(uint16_t)(b)) >> 1, n, 16) +#define ADD8(a, b, n) \ + RESULT(((uint32_t)(uint8_t)(a) + (uint32_t)(uint8_t)(b)) >> 1, n, 8) +#define SUB8(a, b, n) \ + RESULT(((uint32_t)(uint8_t)(a) - (uint32_t)(uint8_t)(b)) >> 1, n, 8) +#define PFX uh + +#include "op_addsub.h" + +static inline uint8_t do_usad(uint8_t a, uint8_t b) +{ + if (a > b) + return a - b; + else + return b - a; +} + +/* Unsigned sum of absolute byte differences. */ +uint32_t HELPER(usad8)(uint32_t a, uint32_t b) +{ + uint32_t sum; + sum = do_usad(a, b); + sum += do_usad(a >> 8, b >> 8); + sum += do_usad(a >> 16, b >>16); + sum += do_usad(a >> 24, b >> 24); + return sum; +} + +/* For ARMv6 SEL instruction. */ +uint32_t HELPER(sel_flags)(uint32_t flags, uint32_t a, uint32_t b) +{ + uint32_t mask; + + mask = 0; + if (flags & 1) + mask |= 0xff; + if (flags & 2) + mask |= 0xff00; + if (flags & 4) + mask |= 0xff0000; + if (flags & 8) + mask |= 0xff000000; + return (a & mask) | (b & ~mask); +} + +uint32_t HELPER(logicq_cc)(uint64_t val) +{ + return (val >> 32) | (val != 0); +} + +/* VFP support. We follow the convention used for VFP instrunctions: + Single precition routines have a "s" suffix, double precision a + "d" suffix. */ + +/* Convert host exception flags to vfp form. */ +static inline int vfp_exceptbits_from_host(int host_bits) +{ + int target_bits = 0; + + if (host_bits & float_flag_invalid) + target_bits |= 1; + if (host_bits & float_flag_divbyzero) + target_bits |= 2; + if (host_bits & float_flag_overflow) + target_bits |= 4; + if (host_bits & float_flag_underflow) + target_bits |= 8; + if (host_bits & float_flag_inexact) + target_bits |= 0x10; + return target_bits; +} + +uint32_t HELPER(vfp_get_fpscr)(CPUState *env) +{ + int i; + uint32_t fpscr; + + fpscr = (env->vfp.xregs[ARM_VFP_FPSCR] & 0xffc8ffff) + | (env->vfp.vec_len << 16) + | (env->vfp.vec_stride << 20); + i = get_float_exception_flags(&env->vfp.fp_status); + fpscr |= vfp_exceptbits_from_host(i); + return fpscr; +} + +/* Convert vfp exception flags to target form. */ +static inline int vfp_exceptbits_to_host(int target_bits) +{ + int host_bits = 0; + + if (target_bits & 1) + host_bits |= float_flag_invalid; + if (target_bits & 2) + host_bits |= float_flag_divbyzero; + if (target_bits & 4) + host_bits |= float_flag_overflow; + if (target_bits & 8) + host_bits |= float_flag_underflow; + if (target_bits & 0x10) + host_bits |= float_flag_inexact; + return host_bits; +} + +void HELPER(vfp_set_fpscr)(CPUState *env, uint32_t val) +{ + int i; + uint32_t changed; + + changed = env->vfp.xregs[ARM_VFP_FPSCR]; + env->vfp.xregs[ARM_VFP_FPSCR] = (val & 0xffc8ffff); + env->vfp.vec_len = (val >> 16) & 7; + env->vfp.vec_stride = (val >> 20) & 3; + + changed ^= val; + if (changed & (3 << 22)) { + i = (val >> 22) & 3; + switch (i) { + case 0: + i = float_round_nearest_even; + break; + case 1: + i = float_round_up; + break; + case 2: + i = float_round_down; + break; + case 3: + i = float_round_to_zero; + break; + } + set_float_rounding_mode(i, &env->vfp.fp_status); + } + if (changed & (1 << 24)) + set_flush_to_zero((val & (1 << 24)) != 0, &env->vfp.fp_status); + if (changed & (1 << 25)) + set_default_nan_mode((val & (1 << 25)) != 0, &env->vfp.fp_status); + + i = vfp_exceptbits_to_host((val >> 8) & 0x1f); + set_float_exception_flags(i, &env->vfp.fp_status); +} + +#define VFP_HELPER(name, p) HELPER(glue(glue(vfp_,name),p)) + +#define VFP_BINOP(name) \ +float32 VFP_HELPER(name, s)(float32 a, float32 b, CPUState *env) \ +{ \ + return float32_ ## name (a, b, &env->vfp.fp_status); \ +} \ +float64 VFP_HELPER(name, d)(float64 a, float64 b, CPUState *env) \ +{ \ + return float64_ ## name (a, b, &env->vfp.fp_status); \ +} +VFP_BINOP(add) +VFP_BINOP(sub) +VFP_BINOP(mul) +VFP_BINOP(div) +#undef VFP_BINOP + +float32 VFP_HELPER(neg, s)(float32 a) +{ + return float32_chs(a); +} + +float64 VFP_HELPER(neg, d)(float64 a) +{ + return float64_chs(a); +} + +float32 VFP_HELPER(abs, s)(float32 a) +{ + return float32_abs(a); +} + +float64 VFP_HELPER(abs, d)(float64 a) +{ + return float64_abs(a); +} + +float32 VFP_HELPER(sqrt, s)(float32 a, CPUState *env) +{ + return float32_sqrt(a, &env->vfp.fp_status); +} + +float64 VFP_HELPER(sqrt, d)(float64 a, CPUState *env) +{ + return float64_sqrt(a, &env->vfp.fp_status); +} + +/* XXX: check quiet/signaling case */ +#define DO_VFP_cmp(p, type) \ +void VFP_HELPER(cmp, p)(type a, type b, CPUState *env) \ +{ \ + uint32_t flags; \ + switch(type ## _compare_quiet(a, b, &env->vfp.fp_status)) { \ + case 0: flags = 0x6; break; \ + case -1: flags = 0x8; break; \ + case 1: flags = 0x2; break; \ + default: case 2: flags = 0x3; break; \ + } \ + env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ + | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ +} \ +void VFP_HELPER(cmpe, p)(type a, type b, CPUState *env) \ +{ \ + uint32_t flags; \ + switch(type ## _compare(a, b, &env->vfp.fp_status)) { \ + case 0: flags = 0x6; break; \ + case -1: flags = 0x8; break; \ + case 1: flags = 0x2; break; \ + default: case 2: flags = 0x3; break; \ + } \ + env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ + | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ +} +DO_VFP_cmp(s, float32) +DO_VFP_cmp(d, float64) +#undef DO_VFP_cmp + +/* Helper routines to perform bitwise copies between float and int. */ +static inline float32 vfp_itos(uint32_t i) +{ + union { + uint32_t i; + float32 s; + } v; + + v.i = i; + return v.s; +} + +static inline uint32_t vfp_stoi(float32 s) +{ + union { + uint32_t i; + float32 s; + } v; + + v.s = s; + return v.i; +} + +static inline float64 vfp_itod(uint64_t i) +{ + union { + uint64_t i; + float64 d; + } v; + + v.i = i; + return v.d; +} + +static inline uint64_t vfp_dtoi(float64 d) +{ + union { + uint64_t i; + float64 d; + } v; + + v.d = d; + return v.i; +} + +/* Integer to float conversion. */ +float32 VFP_HELPER(uito, s)(float32 x, CPUState *env) +{ + return uint32_to_float32(vfp_stoi(x), &env->vfp.fp_status); +} + +float64 VFP_HELPER(uito, d)(float32 x, CPUState *env) +{ + return uint32_to_float64(vfp_stoi(x), &env->vfp.fp_status); +} + +float32 VFP_HELPER(sito, s)(float32 x, CPUState *env) +{ + return int32_to_float32(vfp_stoi(x), &env->vfp.fp_status); +} + +float64 VFP_HELPER(sito, d)(float32 x, CPUState *env) +{ + return int32_to_float64(vfp_stoi(x), &env->vfp.fp_status); +} + +/* Float to integer conversion. */ +float32 VFP_HELPER(toui, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_uint32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(toui, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_uint32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosi, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_int32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosi, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_int32(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(touiz, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_uint32_round_to_zero(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(touiz, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_uint32_round_to_zero(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosiz, s)(float32 x, CPUState *env) +{ + return vfp_itos(float32_to_int32_round_to_zero(x, &env->vfp.fp_status)); +} + +float32 VFP_HELPER(tosiz, d)(float64 x, CPUState *env) +{ + return vfp_itos(float64_to_int32_round_to_zero(x, &env->vfp.fp_status)); +} + +/* floating point conversion */ +float64 VFP_HELPER(fcvtd, s)(float32 x, CPUState *env) +{ + return float32_to_float64(x, &env->vfp.fp_status); +} + +float32 VFP_HELPER(fcvts, d)(float64 x, CPUState *env) +{ + return float64_to_float32(x, &env->vfp.fp_status); +} + +/* VFP3 fixed point conversion. */ +#define VFP_CONV_FIX(name, p, ftype, itype, sign) \ +ftype VFP_HELPER(name##to, p)(ftype x, uint32_t shift, CPUState *env) \ +{ \ + ftype tmp; \ + tmp = sign##int32_to_##ftype ((itype)vfp_##p##toi(x), \ + &env->vfp.fp_status); \ + return ftype##_scalbn(tmp, -(int)shift, &env->vfp.fp_status); \ +} \ +ftype VFP_HELPER(to##name, p)(ftype x, uint32_t shift, CPUState *env) \ +{ \ + ftype tmp; \ + tmp = ftype##_scalbn(x, shift, &env->vfp.fp_status); \ + return vfp_ito##p((itype)ftype##_to_##sign##int32_round_to_zero(tmp, \ + &env->vfp.fp_status)); \ +} + +VFP_CONV_FIX(sh, d, float64, int16, ) +VFP_CONV_FIX(sl, d, float64, int32, ) +VFP_CONV_FIX(uh, d, float64, uint16, u) +VFP_CONV_FIX(ul, d, float64, uint32, u) +VFP_CONV_FIX(sh, s, float32, int16, ) +VFP_CONV_FIX(sl, s, float32, int32, ) +VFP_CONV_FIX(uh, s, float32, uint16, u) +VFP_CONV_FIX(ul, s, float32, uint32, u) +#undef VFP_CONV_FIX + +/* Half precision conversions. */ +float32 HELPER(vfp_fcvt_f16_to_f32)(uint32_t a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + int ieee = (env->vfp.xregs[ARM_VFP_FPSCR] & (1 << 26)) == 0; + return float16_to_float32(a, ieee, s); +} + +uint32_t HELPER(vfp_fcvt_f32_to_f16)(float32 a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + int ieee = (env->vfp.xregs[ARM_VFP_FPSCR] & (1 << 26)) == 0; + return float32_to_float16(a, ieee, s); +} + +float32 HELPER(recps_f32)(float32 a, float32 b, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 two = int32_to_float32(2, s); + return float32_sub(two, float32_mul(a, b, s), s); +} + +float32 HELPER(rsqrts_f32)(float32 a, float32 b, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 three = int32_to_float32(3, s); + return float32_sub(three, float32_mul(a, b, s), s); +} + +/* NEON helpers. */ + +/* TODO: The architecture specifies the value that the estimate functions + should return. We return the exact reciprocal/root instead. */ +float32 HELPER(recpe_f32)(float32 a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 one = int32_to_float32(1, s); + return float32_div(one, a, s); +} + +float32 HELPER(rsqrte_f32)(float32 a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 one = int32_to_float32(1, s); + return float32_div(one, float32_sqrt(a, s), s); +} + +uint32_t HELPER(recpe_u32)(uint32_t a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 tmp; + tmp = int32_to_float32(a, s); + tmp = float32_scalbn(tmp, -32, s); + tmp = helper_recpe_f32(tmp, env); + tmp = float32_scalbn(tmp, 31, s); + return float32_to_int32(tmp, s); +} + +uint32_t HELPER(rsqrte_u32)(uint32_t a, CPUState *env) +{ + float_status *s = &env->vfp.fp_status; + float32 tmp; + tmp = int32_to_float32(a, s); + tmp = float32_scalbn(tmp, -32, s); + tmp = helper_rsqrte_f32(tmp, env); + tmp = float32_scalbn(tmp, 31, s); + return float32_to_int32(tmp, s); +} + +void HELPER(set_teecr)(CPUState *env, uint32_t val) +{ + val &= 1; + if (env->teecr != val) { + env->teecr = val; + tb_flush(env); + } +} diff --git a/qemu/qemu-git/target-arm/helpers.h b/qemu/qemu-git/target-arm/helpers.h new file mode 100644 index 0000000..0d1bc47 --- /dev/null +++ b/qemu/qemu-git/target-arm/helpers.h @@ -0,0 +1,450 @@ +#include "def-helper.h" + +DEF_HELPER_1(clz, i32, i32) +DEF_HELPER_1(sxtb16, i32, i32) +DEF_HELPER_1(uxtb16, i32, i32) + +DEF_HELPER_2(add_setq, i32, i32, i32) +DEF_HELPER_2(add_saturate, i32, i32, i32) +DEF_HELPER_2(sub_saturate, i32, i32, i32) +DEF_HELPER_2(add_usaturate, i32, i32, i32) +DEF_HELPER_2(sub_usaturate, i32, i32, i32) +DEF_HELPER_1(double_saturate, i32, s32) +DEF_HELPER_2(sdiv, s32, s32, s32) +DEF_HELPER_2(udiv, i32, i32, i32) +DEF_HELPER_1(rbit, i32, i32) +DEF_HELPER_1(abs, i32, i32) + +#define PAS_OP(pfx) \ + DEF_HELPER_3(pfx ## add8, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## sub8, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## sub16, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## add16, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## addsubx, i32, i32, i32, ptr) \ + DEF_HELPER_3(pfx ## subaddx, i32, i32, i32, ptr) + +PAS_OP(s) +PAS_OP(u) +#undef PAS_OP + +#define PAS_OP(pfx) \ + DEF_HELPER_2(pfx ## add8, i32, i32, i32) \ + DEF_HELPER_2(pfx ## sub8, i32, i32, i32) \ + DEF_HELPER_2(pfx ## sub16, i32, i32, i32) \ + DEF_HELPER_2(pfx ## add16, i32, i32, i32) \ + DEF_HELPER_2(pfx ## addsubx, i32, i32, i32) \ + DEF_HELPER_2(pfx ## subaddx, i32, i32, i32) +PAS_OP(q) +PAS_OP(sh) +PAS_OP(uq) +PAS_OP(uh) +#undef PAS_OP + +DEF_HELPER_2(ssat, i32, i32, i32) +DEF_HELPER_2(usat, i32, i32, i32) +DEF_HELPER_2(ssat16, i32, i32, i32) +DEF_HELPER_2(usat16, i32, i32, i32) + +DEF_HELPER_2(usad8, i32, i32, i32) + +DEF_HELPER_1(logicq_cc, i32, i64) + +DEF_HELPER_3(sel_flags, i32, i32, i32, i32) +DEF_HELPER_1(exception, void, i32) +DEF_HELPER_0(wfi, void) + +DEF_HELPER_2(cpsr_write, void, i32, i32) +DEF_HELPER_0(cpsr_read, i32) + +DEF_HELPER_3(v7m_msr, void, env, i32, i32) +DEF_HELPER_2(v7m_mrs, i32, env, i32) + +DEF_HELPER_3(set_cp15, void, env, i32, i32) +DEF_HELPER_2(get_cp15, i32, env, i32) + +DEF_HELPER_3(set_cp, void, env, i32, i32) +DEF_HELPER_2(get_cp, i32, env, i32) + +DEF_HELPER_2(get_r13_banked, i32, env, i32) +DEF_HELPER_3(set_r13_banked, void, env, i32, i32) + +DEF_HELPER_1(get_user_reg, i32, i32) +DEF_HELPER_2(set_user_reg, void, i32, i32) + +DEF_HELPER_1(vfp_get_fpscr, i32, env) +DEF_HELPER_2(vfp_set_fpscr, void, env, i32) + +DEF_HELPER_3(vfp_adds, f32, f32, f32, env) +DEF_HELPER_3(vfp_addd, f64, f64, f64, env) +DEF_HELPER_3(vfp_subs, f32, f32, f32, env) +DEF_HELPER_3(vfp_subd, f64, f64, f64, env) +DEF_HELPER_3(vfp_muls, f32, f32, f32, env) +DEF_HELPER_3(vfp_muld, f64, f64, f64, env) +DEF_HELPER_3(vfp_divs, f32, f32, f32, env) +DEF_HELPER_3(vfp_divd, f64, f64, f64, env) +DEF_HELPER_1(vfp_negs, f32, f32) +DEF_HELPER_1(vfp_negd, f64, f64) +DEF_HELPER_1(vfp_abss, f32, f32) +DEF_HELPER_1(vfp_absd, f64, f64) +DEF_HELPER_2(vfp_sqrts, f32, f32, env) +DEF_HELPER_2(vfp_sqrtd, f64, f64, env) +DEF_HELPER_3(vfp_cmps, void, f32, f32, env) +DEF_HELPER_3(vfp_cmpd, void, f64, f64, env) +DEF_HELPER_3(vfp_cmpes, void, f32, f32, env) +DEF_HELPER_3(vfp_cmped, void, f64, f64, env) + +DEF_HELPER_2(vfp_fcvtds, f64, f32, env) +DEF_HELPER_2(vfp_fcvtsd, f32, f64, env) + +DEF_HELPER_2(vfp_uitos, f32, f32, env) +DEF_HELPER_2(vfp_uitod, f64, f32, env) +DEF_HELPER_2(vfp_sitos, f32, f32, env) +DEF_HELPER_2(vfp_sitod, f64, f32, env) + +DEF_HELPER_2(vfp_touis, f32, f32, env) +DEF_HELPER_2(vfp_touid, f32, f64, env) +DEF_HELPER_2(vfp_touizs, f32, f32, env) +DEF_HELPER_2(vfp_touizd, f32, f64, env) +DEF_HELPER_2(vfp_tosis, f32, f32, env) +DEF_HELPER_2(vfp_tosid, f32, f64, env) +DEF_HELPER_2(vfp_tosizs, f32, f32, env) +DEF_HELPER_2(vfp_tosizd, f32, f64, env) + +DEF_HELPER_3(vfp_toshs, f32, f32, i32, env) +DEF_HELPER_3(vfp_tosls, f32, f32, i32, env) +DEF_HELPER_3(vfp_touhs, f32, f32, i32, env) +DEF_HELPER_3(vfp_touls, f32, f32, i32, env) +DEF_HELPER_3(vfp_toshd, f64, f64, i32, env) +DEF_HELPER_3(vfp_tosld, f64, f64, i32, env) +DEF_HELPER_3(vfp_touhd, f64, f64, i32, env) +DEF_HELPER_3(vfp_tould, f64, f64, i32, env) +DEF_HELPER_3(vfp_shtos, f32, f32, i32, env) +DEF_HELPER_3(vfp_sltos, f32, f32, i32, env) +DEF_HELPER_3(vfp_uhtos, f32, f32, i32, env) +DEF_HELPER_3(vfp_ultos, f32, f32, i32, env) +DEF_HELPER_3(vfp_shtod, f64, f64, i32, env) +DEF_HELPER_3(vfp_sltod, f64, f64, i32, env) +DEF_HELPER_3(vfp_uhtod, f64, f64, i32, env) +DEF_HELPER_3(vfp_ultod, f64, f64, i32, env) + +DEF_HELPER_2(vfp_fcvt_f16_to_f32, f32, i32, env) +DEF_HELPER_2(vfp_fcvt_f32_to_f16, i32, f32, env) + +DEF_HELPER_3(recps_f32, f32, f32, f32, env) +DEF_HELPER_3(rsqrts_f32, f32, f32, f32, env) +DEF_HELPER_2(recpe_f32, f32, f32, env) +DEF_HELPER_2(rsqrte_f32, f32, f32, env) +DEF_HELPER_2(recpe_u32, i32, i32, env) +DEF_HELPER_2(rsqrte_u32, i32, i32, env) +DEF_HELPER_4(neon_tbl, i32, i32, i32, i32, i32) +DEF_HELPER_2(neon_add_saturate_u64, i64, i64, i64) +DEF_HELPER_2(neon_add_saturate_s64, i64, i64, i64) +DEF_HELPER_2(neon_sub_saturate_u64, i64, i64, i64) +DEF_HELPER_2(neon_sub_saturate_s64, i64, i64, i64) + +DEF_HELPER_2(add_cc, i32, i32, i32) +DEF_HELPER_2(adc_cc, i32, i32, i32) +DEF_HELPER_2(sub_cc, i32, i32, i32) +DEF_HELPER_2(sbc_cc, i32, i32, i32) + +DEF_HELPER_2(shl, i32, i32, i32) +DEF_HELPER_2(shr, i32, i32, i32) +DEF_HELPER_2(sar, i32, i32, i32) +DEF_HELPER_2(shl_cc, i32, i32, i32) +DEF_HELPER_2(shr_cc, i32, i32, i32) +DEF_HELPER_2(sar_cc, i32, i32, i32) +DEF_HELPER_2(ror_cc, i32, i32, i32) + +/* neon_helper.c */ +DEF_HELPER_3(neon_qadd_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qadd_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qadd_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qadd_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qsub_s16, i32, env, i32, i32) + +DEF_HELPER_2(neon_hadd_s8, i32, i32, i32) +DEF_HELPER_2(neon_hadd_u8, i32, i32, i32) +DEF_HELPER_2(neon_hadd_s16, i32, i32, i32) +DEF_HELPER_2(neon_hadd_u16, i32, i32, i32) +DEF_HELPER_2(neon_hadd_s32, s32, s32, s32) +DEF_HELPER_2(neon_hadd_u32, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_s8, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_u8, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_s16, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_u16, i32, i32, i32) +DEF_HELPER_2(neon_rhadd_s32, s32, s32, s32) +DEF_HELPER_2(neon_rhadd_u32, i32, i32, i32) +DEF_HELPER_2(neon_hsub_s8, i32, i32, i32) +DEF_HELPER_2(neon_hsub_u8, i32, i32, i32) +DEF_HELPER_2(neon_hsub_s16, i32, i32, i32) +DEF_HELPER_2(neon_hsub_u16, i32, i32, i32) +DEF_HELPER_2(neon_hsub_s32, s32, s32, s32) +DEF_HELPER_2(neon_hsub_u32, i32, i32, i32) + +DEF_HELPER_2(neon_cgt_u8, i32, i32, i32) +DEF_HELPER_2(neon_cgt_s8, i32, i32, i32) +DEF_HELPER_2(neon_cgt_u16, i32, i32, i32) +DEF_HELPER_2(neon_cgt_s16, i32, i32, i32) +DEF_HELPER_2(neon_cgt_u32, i32, i32, i32) +DEF_HELPER_2(neon_cgt_s32, i32, i32, i32) +DEF_HELPER_2(neon_cge_u8, i32, i32, i32) +DEF_HELPER_2(neon_cge_s8, i32, i32, i32) +DEF_HELPER_2(neon_cge_u16, i32, i32, i32) +DEF_HELPER_2(neon_cge_s16, i32, i32, i32) +DEF_HELPER_2(neon_cge_u32, i32, i32, i32) +DEF_HELPER_2(neon_cge_s32, i32, i32, i32) + +DEF_HELPER_2(neon_min_u8, i32, i32, i32) +DEF_HELPER_2(neon_min_s8, i32, i32, i32) +DEF_HELPER_2(neon_min_u16, i32, i32, i32) +DEF_HELPER_2(neon_min_s16, i32, i32, i32) +DEF_HELPER_2(neon_min_u32, i32, i32, i32) +DEF_HELPER_2(neon_min_s32, i32, i32, i32) +DEF_HELPER_2(neon_max_u8, i32, i32, i32) +DEF_HELPER_2(neon_max_s8, i32, i32, i32) +DEF_HELPER_2(neon_max_u16, i32, i32, i32) +DEF_HELPER_2(neon_max_s16, i32, i32, i32) +DEF_HELPER_2(neon_max_u32, i32, i32, i32) +DEF_HELPER_2(neon_max_s32, i32, i32, i32) +DEF_HELPER_2(neon_pmin_u8, i32, i32, i32) +DEF_HELPER_2(neon_pmin_s8, i32, i32, i32) +DEF_HELPER_2(neon_pmin_u16, i32, i32, i32) +DEF_HELPER_2(neon_pmin_s16, i32, i32, i32) +DEF_HELPER_2(neon_pmax_u8, i32, i32, i32) +DEF_HELPER_2(neon_pmax_s8, i32, i32, i32) +DEF_HELPER_2(neon_pmax_u16, i32, i32, i32) +DEF_HELPER_2(neon_pmax_s16, i32, i32, i32) + +DEF_HELPER_2(neon_abd_u8, i32, i32, i32) +DEF_HELPER_2(neon_abd_s8, i32, i32, i32) +DEF_HELPER_2(neon_abd_u16, i32, i32, i32) +DEF_HELPER_2(neon_abd_s16, i32, i32, i32) +DEF_HELPER_2(neon_abd_u32, i32, i32, i32) +DEF_HELPER_2(neon_abd_s32, i32, i32, i32) + +DEF_HELPER_2(neon_shl_u8, i32, i32, i32) +DEF_HELPER_2(neon_shl_s8, i32, i32, i32) +DEF_HELPER_2(neon_shl_u16, i32, i32, i32) +DEF_HELPER_2(neon_shl_s16, i32, i32, i32) +DEF_HELPER_2(neon_shl_u32, i32, i32, i32) +DEF_HELPER_2(neon_shl_s32, i32, i32, i32) +DEF_HELPER_2(neon_shl_u64, i64, i64, i64) +DEF_HELPER_2(neon_shl_s64, i64, i64, i64) +DEF_HELPER_2(neon_rshl_u8, i32, i32, i32) +DEF_HELPER_2(neon_rshl_s8, i32, i32, i32) +DEF_HELPER_2(neon_rshl_u16, i32, i32, i32) +DEF_HELPER_2(neon_rshl_s16, i32, i32, i32) +DEF_HELPER_2(neon_rshl_u32, i32, i32, i32) +DEF_HELPER_2(neon_rshl_s32, i32, i32, i32) +DEF_HELPER_2(neon_rshl_u64, i64, i64, i64) +DEF_HELPER_2(neon_rshl_s64, i64, i64, i64) +DEF_HELPER_3(neon_qshl_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_u32, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_s32, i32, env, i32, i32) +DEF_HELPER_3(neon_qshl_u64, i64, env, i64, i64) +DEF_HELPER_3(neon_qshl_s64, i64, env, i64, i64) +DEF_HELPER_3(neon_qrshl_u8, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_s8, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_u16, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_u32, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_s32, i32, env, i32, i32) +DEF_HELPER_3(neon_qrshl_u64, i64, env, i64, i64) +DEF_HELPER_3(neon_qrshl_s64, i64, env, i64, i64) + +DEF_HELPER_2(neon_add_u8, i32, i32, i32) +DEF_HELPER_2(neon_add_u16, i32, i32, i32) +DEF_HELPER_2(neon_padd_u8, i32, i32, i32) +DEF_HELPER_2(neon_padd_u16, i32, i32, i32) +DEF_HELPER_2(neon_sub_u8, i32, i32, i32) +DEF_HELPER_2(neon_sub_u16, i32, i32, i32) +DEF_HELPER_2(neon_mul_u8, i32, i32, i32) +DEF_HELPER_2(neon_mul_u16, i32, i32, i32) +DEF_HELPER_2(neon_mul_p8, i32, i32, i32) + +DEF_HELPER_2(neon_tst_u8, i32, i32, i32) +DEF_HELPER_2(neon_tst_u16, i32, i32, i32) +DEF_HELPER_2(neon_tst_u32, i32, i32, i32) +DEF_HELPER_2(neon_ceq_u8, i32, i32, i32) +DEF_HELPER_2(neon_ceq_u16, i32, i32, i32) +DEF_HELPER_2(neon_ceq_u32, i32, i32, i32) + +DEF_HELPER_1(neon_abs_s8, i32, i32) +DEF_HELPER_1(neon_abs_s16, i32, i32) +DEF_HELPER_1(neon_clz_u8, i32, i32) +DEF_HELPER_1(neon_clz_u16, i32, i32) +DEF_HELPER_1(neon_cls_s8, i32, i32) +DEF_HELPER_1(neon_cls_s16, i32, i32) +DEF_HELPER_1(neon_cls_s32, i32, i32) +DEF_HELPER_1(neon_cnt_u8, i32, i32) + +DEF_HELPER_3(neon_qdmulh_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qrdmulh_s16, i32, env, i32, i32) +DEF_HELPER_3(neon_qdmulh_s32, i32, env, i32, i32) +DEF_HELPER_3(neon_qrdmulh_s32, i32, env, i32, i32) + +DEF_HELPER_1(neon_narrow_u8, i32, i64) +DEF_HELPER_1(neon_narrow_u16, i32, i64) +DEF_HELPER_2(neon_narrow_sat_u8, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_s8, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_u16, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_s16, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_u32, i32, env, i64) +DEF_HELPER_2(neon_narrow_sat_s32, i32, env, i64) +DEF_HELPER_1(neon_narrow_high_u8, i32, i64) +DEF_HELPER_1(neon_narrow_high_u16, i32, i64) +DEF_HELPER_1(neon_narrow_round_high_u8, i32, i64) +DEF_HELPER_1(neon_narrow_round_high_u16, i32, i64) +DEF_HELPER_1(neon_widen_u8, i64, i32) +DEF_HELPER_1(neon_widen_s8, i64, i32) +DEF_HELPER_1(neon_widen_u16, i64, i32) +DEF_HELPER_1(neon_widen_s16, i64, i32) + +DEF_HELPER_2(neon_addl_u16, i64, i64, i64) +DEF_HELPER_2(neon_addl_u32, i64, i64, i64) +DEF_HELPER_2(neon_paddl_u16, i64, i64, i64) +DEF_HELPER_2(neon_paddl_u32, i64, i64, i64) +DEF_HELPER_2(neon_subl_u16, i64, i64, i64) +DEF_HELPER_2(neon_subl_u32, i64, i64, i64) +DEF_HELPER_3(neon_addl_saturate_s32, i64, env, i64, i64) +DEF_HELPER_3(neon_addl_saturate_s64, i64, env, i64, i64) +DEF_HELPER_2(neon_abdl_u16, i64, i32, i32) +DEF_HELPER_2(neon_abdl_s16, i64, i32, i32) +DEF_HELPER_2(neon_abdl_u32, i64, i32, i32) +DEF_HELPER_2(neon_abdl_s32, i64, i32, i32) +DEF_HELPER_2(neon_abdl_u64, i64, i32, i32) +DEF_HELPER_2(neon_abdl_s64, i64, i32, i32) +DEF_HELPER_2(neon_mull_u8, i64, i32, i32) +DEF_HELPER_2(neon_mull_s8, i64, i32, i32) +DEF_HELPER_2(neon_mull_u16, i64, i32, i32) +DEF_HELPER_2(neon_mull_s16, i64, i32, i32) + +DEF_HELPER_1(neon_negl_u16, i64, i64) +DEF_HELPER_1(neon_negl_u32, i64, i64) +DEF_HELPER_1(neon_negl_u64, i64, i64) + +DEF_HELPER_2(neon_qabs_s8, i32, env, i32) +DEF_HELPER_2(neon_qabs_s16, i32, env, i32) +DEF_HELPER_2(neon_qabs_s32, i32, env, i32) +DEF_HELPER_2(neon_qneg_s8, i32, env, i32) +DEF_HELPER_2(neon_qneg_s16, i32, env, i32) +DEF_HELPER_2(neon_qneg_s32, i32, env, i32) + +DEF_HELPER_2(neon_min_f32, i32, i32, i32) +DEF_HELPER_2(neon_max_f32, i32, i32, i32) +DEF_HELPER_2(neon_abd_f32, i32, i32, i32) +DEF_HELPER_2(neon_add_f32, i32, i32, i32) +DEF_HELPER_2(neon_sub_f32, i32, i32, i32) +DEF_HELPER_2(neon_mul_f32, i32, i32, i32) +DEF_HELPER_2(neon_ceq_f32, i32, i32, i32) +DEF_HELPER_2(neon_cge_f32, i32, i32, i32) +DEF_HELPER_2(neon_cgt_f32, i32, i32, i32) +DEF_HELPER_2(neon_acge_f32, i32, i32, i32) +DEF_HELPER_2(neon_acgt_f32, i32, i32, i32) + +/* iwmmxt_helper.c */ +DEF_HELPER_2(iwmmxt_maddsq, i64, i64, i64) +DEF_HELPER_2(iwmmxt_madduq, i64, i64, i64) +DEF_HELPER_2(iwmmxt_sadb, i64, i64, i64) +DEF_HELPER_2(iwmmxt_sadw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_mulslw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_mulshw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_mululw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_muluhw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_macsw, i64, i64, i64) +DEF_HELPER_2(iwmmxt_macuw, i64, i64, i64) +DEF_HELPER_1(iwmmxt_setpsr_nz, i32, i64) + +#define DEF_IWMMXT_HELPER_SIZE_ENV(name) \ +DEF_HELPER_3(iwmmxt_##name##b, i64, env, i64, i64) \ +DEF_HELPER_3(iwmmxt_##name##w, i64, env, i64, i64) \ +DEF_HELPER_3(iwmmxt_##name##l, i64, env, i64, i64) \ + +DEF_IWMMXT_HELPER_SIZE_ENV(unpackl) +DEF_IWMMXT_HELPER_SIZE_ENV(unpackh) + +DEF_HELPER_2(iwmmxt_unpacklub, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackluw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklul, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhub, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhuw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhul, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklsb, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklsw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpacklsl, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhsb, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhsw, i64, env, i64) +DEF_HELPER_2(iwmmxt_unpackhsl, i64, env, i64) + +DEF_IWMMXT_HELPER_SIZE_ENV(cmpeq) +DEF_IWMMXT_HELPER_SIZE_ENV(cmpgtu) +DEF_IWMMXT_HELPER_SIZE_ENV(cmpgts) + +DEF_IWMMXT_HELPER_SIZE_ENV(mins) +DEF_IWMMXT_HELPER_SIZE_ENV(minu) +DEF_IWMMXT_HELPER_SIZE_ENV(maxs) +DEF_IWMMXT_HELPER_SIZE_ENV(maxu) + +DEF_IWMMXT_HELPER_SIZE_ENV(subn) +DEF_IWMMXT_HELPER_SIZE_ENV(addn) +DEF_IWMMXT_HELPER_SIZE_ENV(subu) +DEF_IWMMXT_HELPER_SIZE_ENV(addu) +DEF_IWMMXT_HELPER_SIZE_ENV(subs) +DEF_IWMMXT_HELPER_SIZE_ENV(adds) + +DEF_HELPER_3(iwmmxt_avgb0, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_avgb1, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_avgw0, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_avgw1, i64, env, i64, i64) + +DEF_HELPER_2(iwmmxt_msadb, i64, i64, i64) + +DEF_HELPER_3(iwmmxt_align, i64, i64, i64, i32) +DEF_HELPER_4(iwmmxt_insr, i64, i64, i32, i32, i32) + +DEF_HELPER_1(iwmmxt_bcstb, i64, i32) +DEF_HELPER_1(iwmmxt_bcstw, i64, i32) +DEF_HELPER_1(iwmmxt_bcstl, i64, i32) + +DEF_HELPER_1(iwmmxt_addcb, i64, i64) +DEF_HELPER_1(iwmmxt_addcw, i64, i64) +DEF_HELPER_1(iwmmxt_addcl, i64, i64) + +DEF_HELPER_1(iwmmxt_msbb, i32, i64) +DEF_HELPER_1(iwmmxt_msbw, i32, i64) +DEF_HELPER_1(iwmmxt_msbl, i32, i64) + +DEF_HELPER_3(iwmmxt_srlw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_srll, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_srlq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sllw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_slll, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sllq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sraw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sral, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_sraq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_rorw, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_rorl, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_rorq, i64, env, i64, i32) +DEF_HELPER_3(iwmmxt_shufh, i64, env, i64, i32) + +DEF_HELPER_3(iwmmxt_packuw, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packul, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packuq, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packsw, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packsl, i64, env, i64, i64) +DEF_HELPER_3(iwmmxt_packsq, i64, env, i64, i64) + +DEF_HELPER_3(iwmmxt_muladdsl, i64, i64, i32, i32) +DEF_HELPER_3(iwmmxt_muladdsw, i64, i64, i32, i32) +DEF_HELPER_3(iwmmxt_muladdswl, i64, i64, i32, i32) + +DEF_HELPER_2(set_teecr, void, env, i32) + +#include "def-helper.h" diff --git a/qemu/qemu-git/target-arm/iwmmxt_helper.c b/qemu/qemu-git/target-arm/iwmmxt_helper.c new file mode 100644 index 0000000..3332f70 --- /dev/null +++ b/qemu/qemu-git/target-arm/iwmmxt_helper.c @@ -0,0 +1,681 @@ +/* + * iwMMXt micro operations for XScale. + * + * Copyright (c) 2007 OpenedHand, Ltd. + * Written by Andrzej Zaborowski + * Copyright (c) 2008 CodeSourcery + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "helpers.h" + +/* iwMMXt macros extracted from GNU gdb. */ + +/* Set the SIMD wCASF flags for 8, 16, 32 or 64-bit operations. */ +#define SIMD8_SET( v, n, b) ((v != 0) << ((((b) + 1) * 4) + (n))) +#define SIMD16_SET(v, n, h) ((v != 0) << ((((h) + 1) * 8) + (n))) +#define SIMD32_SET(v, n, w) ((v != 0) << ((((w) + 1) * 16) + (n))) +#define SIMD64_SET(v, n) ((v != 0) << (32 + (n))) +/* Flags to pass as "n" above. */ +#define SIMD_NBIT -1 +#define SIMD_ZBIT -2 +#define SIMD_CBIT -3 +#define SIMD_VBIT -4 +/* Various status bit macros. */ +#define NBIT8(x) ((x) & 0x80) +#define NBIT16(x) ((x) & 0x8000) +#define NBIT32(x) ((x) & 0x80000000) +#define NBIT64(x) ((x) & 0x8000000000000000ULL) +#define ZBIT8(x) (((x) & 0xff) == 0) +#define ZBIT16(x) (((x) & 0xffff) == 0) +#define ZBIT32(x) (((x) & 0xffffffff) == 0) +#define ZBIT64(x) (x == 0) +/* Sign extension macros. */ +#define EXTEND8H(a) ((uint16_t) (int8_t) (a)) +#define EXTEND8(a) ((uint32_t) (int8_t) (a)) +#define EXTEND16(a) ((uint32_t) (int16_t) (a)) +#define EXTEND16S(a) ((int32_t) (int16_t) (a)) +#define EXTEND32(a) ((uint64_t) (int32_t) (a)) + +uint64_t HELPER(iwmmxt_maddsq)(uint64_t a, uint64_t b) +{ + a = (( + EXTEND16S((a >> 0) & 0xffff) * EXTEND16S((b >> 0) & 0xffff) + + EXTEND16S((a >> 16) & 0xffff) * EXTEND16S((b >> 16) & 0xffff) + ) & 0xffffffff) | ((uint64_t) ( + EXTEND16S((a >> 32) & 0xffff) * EXTEND16S((b >> 32) & 0xffff) + + EXTEND16S((a >> 48) & 0xffff) * EXTEND16S((b >> 48) & 0xffff) + ) << 32); + return a; +} + +uint64_t HELPER(iwmmxt_madduq)(uint64_t a, uint64_t b) +{ + a = (( + ((a >> 0) & 0xffff) * ((b >> 0) & 0xffff) + + ((a >> 16) & 0xffff) * ((b >> 16) & 0xffff) + ) & 0xffffffff) | (( + ((a >> 32) & 0xffff) * ((b >> 32) & 0xffff) + + ((a >> 48) & 0xffff) * ((b >> 48) & 0xffff) + ) << 32); + return a; +} + +uint64_t HELPER(iwmmxt_sadb)(uint64_t a, uint64_t b) +{ +#define abs(x) (((x) >= 0) ? x : -x) +#define SADB(SHR) abs((int) ((a >> SHR) & 0xff) - (int) ((b >> SHR) & 0xff)) + return + SADB(0) + SADB(8) + SADB(16) + SADB(24) + + SADB(32) + SADB(40) + SADB(48) + SADB(56); +#undef SADB +} + +uint64_t HELPER(iwmmxt_sadw)(uint64_t a, uint64_t b) +{ +#define SADW(SHR) \ + abs((int) ((a >> SHR) & 0xffff) - (int) ((b >> SHR) & 0xffff)) + return SADW(0) + SADW(16) + SADW(32) + SADW(48); +#undef SADW +} + +uint64_t HELPER(iwmmxt_mulslw)(uint64_t a, uint64_t b) +{ +#define MULS(SHR) ((uint64_t) ((( \ + EXTEND16S((a >> SHR) & 0xffff) * EXTEND16S((b >> SHR) & 0xffff) \ + ) >> 0) & 0xffff) << SHR) + return MULS(0) | MULS(16) | MULS(32) | MULS(48); +#undef MULS +} + +uint64_t HELPER(iwmmxt_mulshw)(uint64_t a, uint64_t b) +{ +#define MULS(SHR) ((uint64_t) ((( \ + EXTEND16S((a >> SHR) & 0xffff) * EXTEND16S((b >> SHR) & 0xffff) \ + ) >> 16) & 0xffff) << SHR) + return MULS(0) | MULS(16) | MULS(32) | MULS(48); +#undef MULS +} + +uint64_t HELPER(iwmmxt_mululw)(uint64_t a, uint64_t b) +{ +#define MULU(SHR) ((uint64_t) ((( \ + ((a >> SHR) & 0xffff) * ((b >> SHR) & 0xffff) \ + ) >> 0) & 0xffff) << SHR) + return MULU(0) | MULU(16) | MULU(32) | MULU(48); +#undef MULU +} + +uint64_t HELPER(iwmmxt_muluhw)(uint64_t a, uint64_t b) +{ +#define MULU(SHR) ((uint64_t) ((( \ + ((a >> SHR) & 0xffff) * ((b >> SHR) & 0xffff) \ + ) >> 16) & 0xffff) << SHR) + return MULU(0) | MULU(16) | MULU(32) | MULU(48); +#undef MULU +} + +uint64_t HELPER(iwmmxt_macsw)(uint64_t a, uint64_t b) +{ +#define MACS(SHR) ( \ + EXTEND16((a >> SHR) & 0xffff) * EXTEND16S((b >> SHR) & 0xffff)) + return (int64_t) (MACS(0) + MACS(16) + MACS(32) + MACS(48)); +#undef MACS +} + +uint64_t HELPER(iwmmxt_macuw)(uint64_t a, uint64_t b) +{ +#define MACU(SHR) ( \ + (uint32_t) ((a >> SHR) & 0xffff) * \ + (uint32_t) ((b >> SHR) & 0xffff)) + return MACU(0) + MACU(16) + MACU(32) + MACU(48); +#undef MACU +} + +#define NZBIT8(x, i) \ + SIMD8_SET(NBIT8((x) & 0xff), SIMD_NBIT, i) | \ + SIMD8_SET(ZBIT8((x) & 0xff), SIMD_ZBIT, i) +#define NZBIT16(x, i) \ + SIMD16_SET(NBIT16((x) & 0xffff), SIMD_NBIT, i) | \ + SIMD16_SET(ZBIT16((x) & 0xffff), SIMD_ZBIT, i) +#define NZBIT32(x, i) \ + SIMD32_SET(NBIT32((x) & 0xffffffff), SIMD_NBIT, i) | \ + SIMD32_SET(ZBIT32((x) & 0xffffffff), SIMD_ZBIT, i) +#define NZBIT64(x) \ + SIMD64_SET(NBIT64(x), SIMD_NBIT) | \ + SIMD64_SET(ZBIT64(x), SIMD_ZBIT) +#define IWMMXT_OP_UNPACK(S, SH0, SH1, SH2, SH3) \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, b)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + (((a >> SH0) & 0xff) << 0) | (((b >> SH0) & 0xff) << 8) | \ + (((a >> SH1) & 0xff) << 16) | (((b >> SH1) & 0xff) << 24) | \ + (((a >> SH2) & 0xff) << 32) | (((b >> SH2) & 0xff) << 40) | \ + (((a >> SH3) & 0xff) << 48) | (((b >> SH3) & 0xff) << 56); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | \ + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | \ + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | \ + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, w)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + (((a >> SH0) & 0xffff) << 0) | \ + (((b >> SH0) & 0xffff) << 16) | \ + (((a >> SH2) & 0xffff) << 32) | \ + (((b >> SH2) & 0xffff) << 48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT8(a >> 0, 0) | NZBIT8(a >> 16, 1) | \ + NZBIT8(a >> 32, 2) | NZBIT8(a >> 48, 3); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, l)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + (((a >> SH0) & 0xffffffff) << 0) | \ + (((b >> SH0) & 0xffffffff) << 32); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, ub)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + (((x >> SH0) & 0xff) << 0) | \ + (((x >> SH1) & 0xff) << 16) | \ + (((x >> SH2) & 0xff) << 32) | \ + (((x >> SH3) & 0xff) << 48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | \ + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, uw)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + (((x >> SH0) & 0xffff) << 0) | \ + (((x >> SH2) & 0xffff) << 32); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, ul)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = (((x >> SH0) & 0xffffffff) << 0); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x >> 0); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, sb)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + ((uint64_t) EXTEND8H((x >> SH0) & 0xff) << 0) | \ + ((uint64_t) EXTEND8H((x >> SH1) & 0xff) << 16) | \ + ((uint64_t) EXTEND8H((x >> SH2) & 0xff) << 32) | \ + ((uint64_t) EXTEND8H((x >> SH3) & 0xff) << 48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | \ + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, sw)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = \ + ((uint64_t) EXTEND16((x >> SH0) & 0xffff) << 0) | \ + ((uint64_t) EXTEND16((x >> SH2) & 0xffff) << 32); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); \ + return x; \ +} \ +uint64_t HELPER(glue(iwmmxt_unpack, glue(S, sl)))(CPUState *env, \ + uint64_t x) \ +{ \ + x = EXTEND32((x >> SH0) & 0xffffffff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x >> 0); \ + return x; \ +} +IWMMXT_OP_UNPACK(l, 0, 8, 16, 24) +IWMMXT_OP_UNPACK(h, 32, 40, 48, 56) + +#define IWMMXT_OP_CMP(SUFF, Tb, Tw, Tl, O) \ +uint64_t HELPER(glue(iwmmxt_, glue(SUFF, b)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = \ + CMP(0, Tb, O, 0xff) | CMP(8, Tb, O, 0xff) | \ + CMP(16, Tb, O, 0xff) | CMP(24, Tb, O, 0xff) | \ + CMP(32, Tb, O, 0xff) | CMP(40, Tb, O, 0xff) | \ + CMP(48, Tb, O, 0xff) | CMP(56, Tb, O, 0xff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | \ + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | \ + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | \ + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_, glue(SUFF, w)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = CMP(0, Tw, O, 0xffff) | CMP(16, Tw, O, 0xffff) | \ + CMP(32, Tw, O, 0xffff) | CMP(48, Tw, O, 0xffff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT16(a >> 0, 0) | NZBIT16(a >> 16, 1) | \ + NZBIT16(a >> 32, 2) | NZBIT16(a >> 48, 3); \ + return a; \ +} \ +uint64_t HELPER(glue(iwmmxt_, glue(SUFF, l)))(CPUState *env, \ + uint64_t a, uint64_t b) \ +{ \ + a = CMP(0, Tl, O, 0xffffffff) | \ + CMP(32, Tl, O, 0xffffffff); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); \ + return a; \ +} +#define CMP(SHR, TYPE, OPER, MASK) ((((TYPE) ((a >> SHR) & MASK) OPER \ + (TYPE) ((b >> SHR) & MASK)) ? (uint64_t) MASK : 0) << SHR) +IWMMXT_OP_CMP(cmpeq, uint8_t, uint16_t, uint32_t, ==) +IWMMXT_OP_CMP(cmpgts, int8_t, int16_t, int32_t, >) +IWMMXT_OP_CMP(cmpgtu, uint8_t, uint16_t, uint32_t, >) +#undef CMP +#define CMP(SHR, TYPE, OPER, MASK) ((((TYPE) ((a >> SHR) & MASK) OPER \ + (TYPE) ((b >> SHR) & MASK)) ? a : b) & ((uint64_t) MASK << SHR)) +IWMMXT_OP_CMP(mins, int8_t, int16_t, int32_t, <) +IWMMXT_OP_CMP(minu, uint8_t, uint16_t, uint32_t, <) +IWMMXT_OP_CMP(maxs, int8_t, int16_t, int32_t, >) +IWMMXT_OP_CMP(maxu, uint8_t, uint16_t, uint32_t, >) +#undef CMP +#define CMP(SHR, TYPE, OPER, MASK) ((uint64_t) (((TYPE) ((a >> SHR) & MASK) \ + OPER (TYPE) ((b >> SHR) & MASK)) & MASK) << SHR) +IWMMXT_OP_CMP(subn, uint8_t, uint16_t, uint32_t, -) +IWMMXT_OP_CMP(addn, uint8_t, uint16_t, uint32_t, +) +#undef CMP +/* TODO Signed- and Unsigned-Saturation */ +#define CMP(SHR, TYPE, OPER, MASK) ((uint64_t) (((TYPE) ((a >> SHR) & MASK) \ + OPER (TYPE) ((b >> SHR) & MASK)) & MASK) << SHR) +IWMMXT_OP_CMP(subu, uint8_t, uint16_t, uint32_t, -) +IWMMXT_OP_CMP(addu, uint8_t, uint16_t, uint32_t, +) +IWMMXT_OP_CMP(subs, int8_t, int16_t, int32_t, -) +IWMMXT_OP_CMP(adds, int8_t, int16_t, int32_t, +) +#undef CMP +#undef IWMMXT_OP_CMP + +#define AVGB(SHR) ((( \ + ((a >> SHR) & 0xff) + ((b >> SHR) & 0xff) + round) >> 1) << SHR) +#define IWMMXT_OP_AVGB(r) \ +uint64_t HELPER(iwmmxt_avgb##r)(CPUState *env, uint64_t a, uint64_t b) \ +{ \ + const int round = r; \ + a = AVGB(0) | AVGB(8) | AVGB(16) | AVGB(24) | \ + AVGB(32) | AVGB(40) | AVGB(48) | AVGB(56); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + SIMD8_SET(ZBIT8((a >> 0) & 0xff), SIMD_ZBIT, 0) | \ + SIMD8_SET(ZBIT8((a >> 8) & 0xff), SIMD_ZBIT, 1) | \ + SIMD8_SET(ZBIT8((a >> 16) & 0xff), SIMD_ZBIT, 2) | \ + SIMD8_SET(ZBIT8((a >> 24) & 0xff), SIMD_ZBIT, 3) | \ + SIMD8_SET(ZBIT8((a >> 32) & 0xff), SIMD_ZBIT, 4) | \ + SIMD8_SET(ZBIT8((a >> 40) & 0xff), SIMD_ZBIT, 5) | \ + SIMD8_SET(ZBIT8((a >> 48) & 0xff), SIMD_ZBIT, 6) | \ + SIMD8_SET(ZBIT8((a >> 56) & 0xff), SIMD_ZBIT, 7); \ + return a; \ +} +IWMMXT_OP_AVGB(0) +IWMMXT_OP_AVGB(1) +#undef IWMMXT_OP_AVGB +#undef AVGB + +#define AVGW(SHR) ((( \ + ((a >> SHR) & 0xffff) + ((b >> SHR) & 0xffff) + round) >> 1) << SHR) +#define IWMMXT_OP_AVGW(r) \ +uint64_t HELPER(iwmmxt_avgw##r)(CPUState *env, uint64_t a, uint64_t b) \ +{ \ + const int round = r; \ + a = AVGW(0) | AVGW(16) | AVGW(32) | AVGW(48); \ + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = \ + SIMD16_SET(ZBIT16((a >> 0) & 0xffff), SIMD_ZBIT, 0) | \ + SIMD16_SET(ZBIT16((a >> 16) & 0xffff), SIMD_ZBIT, 1) | \ + SIMD16_SET(ZBIT16((a >> 32) & 0xffff), SIMD_ZBIT, 2) | \ + SIMD16_SET(ZBIT16((a >> 48) & 0xffff), SIMD_ZBIT, 3); \ + return a; \ +} +IWMMXT_OP_AVGW(0) +IWMMXT_OP_AVGW(1) +#undef IWMMXT_OP_AVGW +#undef AVGW + +uint64_t HELPER(iwmmxt_msadb)(uint64_t a, uint64_t b) +{ + a = ((((a >> 0 ) & 0xffff) * ((b >> 0) & 0xffff) + + ((a >> 16) & 0xffff) * ((b >> 16) & 0xffff)) & 0xffffffff) | + ((((a >> 32) & 0xffff) * ((b >> 32) & 0xffff) + + ((a >> 48) & 0xffff) * ((b >> 48) & 0xffff)) << 32); + return a; +} + +uint64_t HELPER(iwmmxt_align)(uint64_t a, uint64_t b, uint32_t n) +{ + a >>= n << 3; + a |= b << (64 - (n << 3)); + return a; +} + +uint64_t HELPER(iwmmxt_insr)(uint64_t x, uint32_t a, uint32_t b, uint32_t n) +{ + x &= ~((uint64_t) b << n); + x |= (uint64_t) (a & b) << n; + return x; +} + +uint32_t HELPER(iwmmxt_setpsr_nz)(uint64_t x) +{ + return SIMD64_SET((x == 0), SIMD_ZBIT) | + SIMD64_SET((x & (1ULL << 63)), SIMD_NBIT); +} + +uint64_t HELPER(iwmmxt_bcstb)(uint32_t arg) +{ + arg &= 0xff; + return + ((uint64_t) arg << 0 ) | ((uint64_t) arg << 8 ) | + ((uint64_t) arg << 16) | ((uint64_t) arg << 24) | + ((uint64_t) arg << 32) | ((uint64_t) arg << 40) | + ((uint64_t) arg << 48) | ((uint64_t) arg << 56); +} + +uint64_t HELPER(iwmmxt_bcstw)(uint32_t arg) +{ + arg &= 0xffff; + return + ((uint64_t) arg << 0 ) | ((uint64_t) arg << 16) | + ((uint64_t) arg << 32) | ((uint64_t) arg << 48); +} + +uint64_t HELPER(iwmmxt_bcstl)(uint32_t arg) +{ + return arg | ((uint64_t) arg << 32); +} + +uint64_t HELPER(iwmmxt_addcb)(uint64_t x) +{ + return + ((x >> 0) & 0xff) + ((x >> 8) & 0xff) + + ((x >> 16) & 0xff) + ((x >> 24) & 0xff) + + ((x >> 32) & 0xff) + ((x >> 40) & 0xff) + + ((x >> 48) & 0xff) + ((x >> 56) & 0xff); +} + +uint64_t HELPER(iwmmxt_addcw)(uint64_t x) +{ + return + ((x >> 0) & 0xffff) + ((x >> 16) & 0xffff) + + ((x >> 32) & 0xffff) + ((x >> 48) & 0xffff); +} + +uint64_t HELPER(iwmmxt_addcl)(uint64_t x) +{ + return (x & 0xffffffff) + (x >> 32); +} + +uint32_t HELPER(iwmmxt_msbb)(uint64_t x) +{ + return + ((x >> 7) & 0x01) | ((x >> 14) & 0x02) | + ((x >> 21) & 0x04) | ((x >> 28) & 0x08) | + ((x >> 35) & 0x10) | ((x >> 42) & 0x20) | + ((x >> 49) & 0x40) | ((x >> 56) & 0x80); +} + +uint32_t HELPER(iwmmxt_msbw)(uint64_t x) +{ + return + ((x >> 15) & 0x01) | ((x >> 30) & 0x02) | + ((x >> 45) & 0x04) | ((x >> 52) & 0x08); +} + +uint32_t HELPER(iwmmxt_msbl)(uint64_t x) +{ + return ((x >> 31) & 0x01) | ((x >> 62) & 0x02); +} + +/* FIXME: Split wCASF setting into a separate op to avoid env use. */ +uint64_t HELPER(iwmmxt_srlw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((x & (0xffffll << 0)) >> n) & (0xffffll << 0)) | + (((x & (0xffffll << 16)) >> n) & (0xffffll << 16)) | + (((x & (0xffffll << 32)) >> n) & (0xffffll << 32)) | + (((x & (0xffffll << 48)) >> n) & (0xffffll << 48)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_srll)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((x & (0xffffffffll << 0)) >> n) | + ((x >> n) & (0xffffffffll << 32)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_srlq)(CPUState *env, uint64_t x, uint32_t n) +{ + x >>= n; + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_sllw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((x & (0xffffll << 0)) << n) & (0xffffll << 0)) | + (((x & (0xffffll << 16)) << n) & (0xffffll << 16)) | + (((x & (0xffffll << 32)) << n) & (0xffffll << 32)) | + (((x & (0xffffll << 48)) << n) & (0xffffll << 48)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_slll)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((x << n) & (0xffffffffll << 0)) | + ((x & (0xffffffffll << 32)) << n); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_sllq)(CPUState *env, uint64_t x, uint32_t n) +{ + x <<= n; + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_sraw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((uint64_t) ((EXTEND16(x >> 0) >> n) & 0xffff) << 0) | + ((uint64_t) ((EXTEND16(x >> 16) >> n) & 0xffff) << 16) | + ((uint64_t) ((EXTEND16(x >> 32) >> n) & 0xffff) << 32) | + ((uint64_t) ((EXTEND16(x >> 48) >> n) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_sral)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((EXTEND32(x >> 0) >> n) & 0xffffffff) << 0) | + (((EXTEND32(x >> 32) >> n) & 0xffffffff) << 32); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_sraq)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (int64_t) x >> n; + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_rorw)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((((x & (0xffffll << 0)) >> n) | + ((x & (0xffffll << 0)) << (16 - n))) & (0xffffll << 0)) | + ((((x & (0xffffll << 16)) >> n) | + ((x & (0xffffll << 16)) << (16 - n))) & (0xffffll << 16)) | + ((((x & (0xffffll << 32)) >> n) | + ((x & (0xffffll << 32)) << (16 - n))) & (0xffffll << 32)) | + ((((x & (0xffffll << 48)) >> n) | + ((x & (0xffffll << 48)) << (16 - n))) & (0xffffll << 48)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +uint64_t HELPER(iwmmxt_rorl)(CPUState *env, uint64_t x, uint32_t n) +{ + x = ((x & (0xffffffffll << 0)) >> n) | + ((x >> n) & (0xffffffffll << 32)) | + ((x << (32 - n)) & (0xffffffffll << 0)) | + ((x & (0xffffffffll << 32)) << (32 - n)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(x >> 0, 0) | NZBIT32(x >> 32, 1); + return x; +} + +uint64_t HELPER(iwmmxt_rorq)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (x >> n) | (x << (64 - n)); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = NZBIT64(x); + return x; +} + +uint64_t HELPER(iwmmxt_shufh)(CPUState *env, uint64_t x, uint32_t n) +{ + x = (((x >> ((n << 4) & 0x30)) & 0xffff) << 0) | + (((x >> ((n << 2) & 0x30)) & 0xffff) << 16) | + (((x >> ((n << 0) & 0x30)) & 0xffff) << 32) | + (((x >> ((n >> 2) & 0x30)) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(x >> 0, 0) | NZBIT16(x >> 16, 1) | + NZBIT16(x >> 32, 2) | NZBIT16(x >> 48, 3); + return x; +} + +/* TODO: Unsigned-Saturation */ +uint64_t HELPER(iwmmxt_packuw)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xff) << 0) | (((a >> 16) & 0xff) << 8) | + (((a >> 32) & 0xff) << 16) | (((a >> 48) & 0xff) << 24) | + (((b >> 0) & 0xff) << 32) | (((b >> 16) & 0xff) << 40) | + (((b >> 32) & 0xff) << 48) | (((b >> 48) & 0xff) << 56); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); + return a; +} + +uint64_t HELPER(iwmmxt_packul)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xffff) << 0) | (((a >> 32) & 0xffff) << 16) | + (((b >> 0) & 0xffff) << 32) | (((b >> 32) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(a >> 0, 0) | NZBIT16(a >> 16, 1) | + NZBIT16(a >> 32, 2) | NZBIT16(a >> 48, 3); + return a; +} + +uint64_t HELPER(iwmmxt_packuq)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (a & 0xffffffff) | ((b & 0xffffffff) << 32); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); + return a; +} + +/* TODO: Signed-Saturation */ +uint64_t HELPER(iwmmxt_packsw)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xff) << 0) | (((a >> 16) & 0xff) << 8) | + (((a >> 32) & 0xff) << 16) | (((a >> 48) & 0xff) << 24) | + (((b >> 0) & 0xff) << 32) | (((b >> 16) & 0xff) << 40) | + (((b >> 32) & 0xff) << 48) | (((b >> 48) & 0xff) << 56); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT8(a >> 0, 0) | NZBIT8(a >> 8, 1) | + NZBIT8(a >> 16, 2) | NZBIT8(a >> 24, 3) | + NZBIT8(a >> 32, 4) | NZBIT8(a >> 40, 5) | + NZBIT8(a >> 48, 6) | NZBIT8(a >> 56, 7); + return a; +} + +uint64_t HELPER(iwmmxt_packsl)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (((a >> 0) & 0xffff) << 0) | (((a >> 32) & 0xffff) << 16) | + (((b >> 0) & 0xffff) << 32) | (((b >> 32) & 0xffff) << 48); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT16(a >> 0, 0) | NZBIT16(a >> 16, 1) | + NZBIT16(a >> 32, 2) | NZBIT16(a >> 48, 3); + return a; +} + +uint64_t HELPER(iwmmxt_packsq)(CPUState *env, uint64_t a, uint64_t b) +{ + a = (a & 0xffffffff) | ((b & 0xffffffff) << 32); + env->iwmmxt.cregs[ARM_IWMMXT_wCASF] = + NZBIT32(a >> 0, 0) | NZBIT32(a >> 32, 1); + return a; +} + +uint64_t HELPER(iwmmxt_muladdsl)(uint64_t c, uint32_t a, uint32_t b) +{ + return c + ((int32_t) EXTEND32(a) * (int32_t) EXTEND32(b)); +} + +uint64_t HELPER(iwmmxt_muladdsw)(uint64_t c, uint32_t a, uint32_t b) +{ + c += EXTEND32(EXTEND16S((a >> 0) & 0xffff) * + EXTEND16S((b >> 0) & 0xffff)); + c += EXTEND32(EXTEND16S((a >> 16) & 0xffff) * + EXTEND16S((b >> 16) & 0xffff)); + return c; +} + +uint64_t HELPER(iwmmxt_muladdswl)(uint64_t c, uint32_t a, uint32_t b) +{ + return c + (EXTEND32(EXTEND16S(a & 0xffff) * + EXTEND16S(b & 0xffff))); +} diff --git a/qemu/qemu-git/target-arm/neon_helper.c b/qemu/qemu-git/target-arm/neon_helper.c new file mode 100644 index 0000000..5e6452b --- /dev/null +++ b/qemu/qemu-git/target-arm/neon_helper.c @@ -0,0 +1,1459 @@ +/* + * ARM NEON vector operations. + * + * Copyright (c) 2007, 2008 CodeSourcery. + * Written by Paul Brook + * + * This code is licenced under the GNU GPL v2. + */ +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "helpers.h" + +#define SIGNBIT (uint32_t)0x80000000 +#define SIGNBIT64 ((uint64_t)1 << 63) + +#define SET_QC() env->vfp.xregs[ARM_VFP_FPSCR] = CPSR_Q + +static float_status neon_float_status; +#define NFS &neon_float_status + +/* Helper routines to perform bitwise copies between float and int. */ +static inline float32 vfp_itos(uint32_t i) +{ + union { + uint32_t i; + float32 s; + } v; + + v.i = i; + return v.s; +} + +static inline uint32_t vfp_stoi(float32 s) +{ + union { + uint32_t i; + float32 s; + } v; + + v.s = s; + return v.i; +} + +#define NEON_TYPE1(name, type) \ +typedef struct \ +{ \ + type v1; \ +} neon_##name; +#ifdef HOST_WORDS_BIGENDIAN +#define NEON_TYPE2(name, type) \ +typedef struct \ +{ \ + type v2; \ + type v1; \ +} neon_##name; +#define NEON_TYPE4(name, type) \ +typedef struct \ +{ \ + type v4; \ + type v3; \ + type v2; \ + type v1; \ +} neon_##name; +#else +#define NEON_TYPE2(name, type) \ +typedef struct \ +{ \ + type v1; \ + type v2; \ +} neon_##name; +#define NEON_TYPE4(name, type) \ +typedef struct \ +{ \ + type v1; \ + type v2; \ + type v3; \ + type v4; \ +} neon_##name; +#endif + +NEON_TYPE4(s8, int8_t) +NEON_TYPE4(u8, uint8_t) +NEON_TYPE2(s16, int16_t) +NEON_TYPE2(u16, uint16_t) +NEON_TYPE1(s32, int32_t) +NEON_TYPE1(u32, uint32_t) +#undef NEON_TYPE4 +#undef NEON_TYPE2 +#undef NEON_TYPE1 + +/* Copy from a uint32_t to a vector structure type. */ +#define NEON_UNPACK(vtype, dest, val) do { \ + union { \ + vtype v; \ + uint32_t i; \ + } conv_u; \ + conv_u.i = (val); \ + dest = conv_u.v; \ + } while(0) + +/* Copy from a vector structure type to a uint32_t. */ +#define NEON_PACK(vtype, dest, val) do { \ + union { \ + vtype v; \ + uint32_t i; \ + } conv_u; \ + conv_u.v = (val); \ + dest = conv_u.i; \ + } while(0) + +#define NEON_DO1 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc2.v1); +#define NEON_DO2 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc2.v1); \ + NEON_FN(vdest.v2, vsrc1.v2, vsrc2.v2); +#define NEON_DO4 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc2.v1); \ + NEON_FN(vdest.v2, vsrc1.v2, vsrc2.v2); \ + NEON_FN(vdest.v3, vsrc1.v3, vsrc2.v3); \ + NEON_FN(vdest.v4, vsrc1.v4, vsrc2.v4); + +#define NEON_VOP_BODY(vtype, n) \ +{ \ + uint32_t res; \ + vtype vsrc1; \ + vtype vsrc2; \ + vtype vdest; \ + NEON_UNPACK(vtype, vsrc1, arg1); \ + NEON_UNPACK(vtype, vsrc2, arg2); \ + NEON_DO##n; \ + NEON_PACK(vtype, res, vdest); \ + return res; \ +} + +#define NEON_VOP(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(uint32_t arg1, uint32_t arg2) \ +NEON_VOP_BODY(vtype, n) + +#define NEON_VOP_ENV(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(CPUState *env, uint32_t arg1, uint32_t arg2) \ +NEON_VOP_BODY(vtype, n) + +/* Pairwise operations. */ +/* For 32-bit elements each segment only contains a single element, so + the elementwise and pairwise operations are the same. */ +#define NEON_PDO2 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc1.v2); \ + NEON_FN(vdest.v2, vsrc2.v1, vsrc2.v2); +#define NEON_PDO4 \ + NEON_FN(vdest.v1, vsrc1.v1, vsrc1.v2); \ + NEON_FN(vdest.v2, vsrc1.v3, vsrc1.v4); \ + NEON_FN(vdest.v3, vsrc2.v1, vsrc2.v2); \ + NEON_FN(vdest.v4, vsrc2.v3, vsrc2.v4); \ + +#define NEON_POP(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(uint32_t arg1, uint32_t arg2) \ +{ \ + uint32_t res; \ + vtype vsrc1; \ + vtype vsrc2; \ + vtype vdest; \ + NEON_UNPACK(vtype, vsrc1, arg1); \ + NEON_UNPACK(vtype, vsrc2, arg2); \ + NEON_PDO##n; \ + NEON_PACK(vtype, res, vdest); \ + return res; \ +} + +/* Unary operators. */ +#define NEON_VOP1(name, vtype, n) \ +uint32_t HELPER(glue(neon_,name))(uint32_t arg) \ +{ \ + vtype vsrc1; \ + vtype vdest; \ + NEON_UNPACK(vtype, vsrc1, arg); \ + NEON_DO##n; \ + NEON_PACK(vtype, arg, vdest); \ + return arg; \ +} + + +#define NEON_USAT(dest, src1, src2, type) do { \ + uint32_t tmp = (uint32_t)src1 + (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + dest = ~0; \ + } else { \ + dest = tmp; \ + }} while(0) +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint8_t) +NEON_VOP_ENV(qadd_u8, neon_u8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint16_t) +NEON_VOP_ENV(qadd_u16, neon_u16, 2) +#undef NEON_FN +#undef NEON_USAT + +#define NEON_SSAT(dest, src1, src2, type) do { \ + int32_t tmp = (uint32_t)src1 + (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + if (src2 > 0) { \ + tmp = (1 << (sizeof(type) * 8 - 1)) - 1; \ + } else { \ + tmp = 1 << (sizeof(type) * 8 - 1); \ + } \ + } \ + dest = tmp; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int8_t) +NEON_VOP_ENV(qadd_s8, neon_s8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int16_t) +NEON_VOP_ENV(qadd_s16, neon_s16, 2) +#undef NEON_FN +#undef NEON_SSAT + +#define NEON_USAT(dest, src1, src2, type) do { \ + uint32_t tmp = (uint32_t)src1 - (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + dest = 0; \ + } else { \ + dest = tmp; \ + }} while(0) +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint8_t) +NEON_VOP_ENV(qsub_u8, neon_u8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_USAT(dest, src1, src2, uint16_t) +NEON_VOP_ENV(qsub_u16, neon_u16, 2) +#undef NEON_FN +#undef NEON_USAT + +#define NEON_SSAT(dest, src1, src2, type) do { \ + int32_t tmp = (uint32_t)src1 - (uint32_t)src2; \ + if (tmp != (type)tmp) { \ + SET_QC(); \ + if (src2 < 0) { \ + tmp = (1 << (sizeof(type) * 8 - 1)) - 1; \ + } else { \ + tmp = 1 << (sizeof(type) * 8 - 1); \ + } \ + } \ + dest = tmp; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int8_t) +NEON_VOP_ENV(qsub_s8, neon_s8, 4) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_SSAT(dest, src1, src2, int16_t) +NEON_VOP_ENV(qsub_s16, neon_s16, 2) +#undef NEON_FN +#undef NEON_SSAT + +#define NEON_FN(dest, src1, src2) dest = (src1 + src2) >> 1 +NEON_VOP(hadd_s8, neon_s8, 4) +NEON_VOP(hadd_u8, neon_u8, 4) +NEON_VOP(hadd_s16, neon_s16, 2) +NEON_VOP(hadd_u16, neon_u16, 2) +#undef NEON_FN + +int32_t HELPER(neon_hadd_s32)(int32_t src1, int32_t src2) +{ + int32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if (src1 & src2 & 1) + dest++; + return dest; +} + +uint32_t HELPER(neon_hadd_u32)(uint32_t src1, uint32_t src2) +{ + uint32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if (src1 & src2 & 1) + dest++; + return dest; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 + src2 + 1) >> 1 +NEON_VOP(rhadd_s8, neon_s8, 4) +NEON_VOP(rhadd_u8, neon_u8, 4) +NEON_VOP(rhadd_s16, neon_s16, 2) +NEON_VOP(rhadd_u16, neon_u16, 2) +#undef NEON_FN + +int32_t HELPER(neon_rhadd_s32)(int32_t src1, int32_t src2) +{ + int32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if ((src1 | src2) & 1) + dest++; + return dest; +} + +uint32_t HELPER(neon_rhadd_u32)(uint32_t src1, uint32_t src2) +{ + uint32_t dest; + + dest = (src1 >> 1) + (src2 >> 1); + if ((src1 | src2) & 1) + dest++; + return dest; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 - src2) >> 1 +NEON_VOP(hsub_s8, neon_s8, 4) +NEON_VOP(hsub_u8, neon_u8, 4) +NEON_VOP(hsub_s16, neon_s16, 2) +NEON_VOP(hsub_u16, neon_u16, 2) +#undef NEON_FN + +int32_t HELPER(neon_hsub_s32)(int32_t src1, int32_t src2) +{ + int32_t dest; + + dest = (src1 >> 1) - (src2 >> 1); + if ((~src1) & src2 & 1) + dest--; + return dest; +} + +uint32_t HELPER(neon_hsub_u32)(uint32_t src1, uint32_t src2) +{ + uint32_t dest; + + dest = (src1 >> 1) - (src2 >> 1); + if ((~src1) & src2 & 1) + dest--; + return dest; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 > src2) ? ~0 : 0 +NEON_VOP(cgt_s8, neon_s8, 4) +NEON_VOP(cgt_u8, neon_u8, 4) +NEON_VOP(cgt_s16, neon_s16, 2) +NEON_VOP(cgt_u16, neon_u16, 2) +NEON_VOP(cgt_s32, neon_s32, 1) +NEON_VOP(cgt_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 >= src2) ? ~0 : 0 +NEON_VOP(cge_s8, neon_s8, 4) +NEON_VOP(cge_u8, neon_u8, 4) +NEON_VOP(cge_s16, neon_s16, 2) +NEON_VOP(cge_u16, neon_u16, 2) +NEON_VOP(cge_s32, neon_s32, 1) +NEON_VOP(cge_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 < src2) ? src1 : src2 +NEON_VOP(min_s8, neon_s8, 4) +NEON_VOP(min_u8, neon_u8, 4) +NEON_VOP(min_s16, neon_s16, 2) +NEON_VOP(min_u16, neon_u16, 2) +NEON_VOP(min_s32, neon_s32, 1) +NEON_VOP(min_u32, neon_u32, 1) +NEON_POP(pmin_s8, neon_s8, 4) +NEON_POP(pmin_u8, neon_u8, 4) +NEON_POP(pmin_s16, neon_s16, 2) +NEON_POP(pmin_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 > src2) ? src1 : src2 +NEON_VOP(max_s8, neon_s8, 4) +NEON_VOP(max_u8, neon_u8, 4) +NEON_VOP(max_s16, neon_s16, 2) +NEON_VOP(max_u16, neon_u16, 2) +NEON_VOP(max_s32, neon_s32, 1) +NEON_VOP(max_u32, neon_u32, 1) +NEON_POP(pmax_s8, neon_s8, 4) +NEON_POP(pmax_u8, neon_u8, 4) +NEON_POP(pmax_s16, neon_s16, 2) +NEON_POP(pmax_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) \ + dest = (src1 > src2) ? (src1 - src2) : (src2 - src1) +NEON_VOP(abd_s8, neon_s8, 4) +NEON_VOP(abd_u8, neon_u8, 4) +NEON_VOP(abd_s16, neon_s16, 2) +NEON_VOP(abd_u16, neon_u16, 2) +NEON_VOP(abd_s32, neon_s32, 1) +NEON_VOP(abd_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8 || \ + tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(shl_u8, neon_u8, 4) +NEON_VOP(shl_u16, neon_u16, 2) +NEON_VOP(shl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_shl_u64)(uint64_t val, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + if (shift >= 64 || shift <= -64) { + val = 0; + } else if (shift < 0) { + val >>= -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (sizeof(src1) * 8 - 1); \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(shl_s8, neon_s8, 4) +NEON_VOP(shl_s16, neon_s16, 2) +NEON_VOP(shl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_shl_s64)(uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + int64_t val = valop; + if (shift >= 64) { + val = 0; + } else if (shift <= -64) { + val >>= 63; + } else if (shift < 0) { + val >>= -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp < -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (sizeof(src1) * 8 - 1); \ + } else if (tmp == -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (tmp - 1); \ + dest++; \ + dest >>= 1; \ + } else if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(rshl_s8, neon_s8, 4) +NEON_VOP(rshl_s16, neon_s16, 2) +NEON_VOP(rshl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_rshl_s64)(uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + int64_t val = valop; + if (shift >= 64) { + val = 0; + } else if (shift < -64) { + val >>= 63; + } else if (shift == -63) { + val >>= 63; + val++; + val >>= 1; + } else if (shift < 0) { + val = (val + ((int64_t)1 << (-1 - shift))) >> -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8 || \ + tmp < -(ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp == -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> (tmp - 1); \ + } else if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + }} while (0) +NEON_VOP(rshl_u8, neon_u8, 4) +NEON_VOP(rshl_u16, neon_u16, 2) +NEON_VOP(rshl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_rshl_u64)(uint64_t val, uint64_t shiftop) +{ + int8_t shift = (uint8_t)shiftop; + if (shift >= 64 || shift < 64) { + val = 0; + } else if (shift == -64) { + /* Rounding a 1-bit result just preserves that bit. */ + val >>= 63; + } if (shift < 0) { + val = (val + ((uint64_t)1 << (-1 - shift))) >> -shift; + val >>= -shift; + } else { + val <<= shift; + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + if (src1) { \ + SET_QC(); \ + dest = ~0; \ + } else { \ + dest = 0; \ + } \ + } else if (tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = 0; \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = ~0; \ + } \ + }} while (0) +NEON_VOP_ENV(qshl_u8, neon_u8, 4) +NEON_VOP_ENV(qshl_u16, neon_u16, 2) +NEON_VOP_ENV(qshl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qshl_u64)(CPUState *env, uint64_t val, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + if (shift >= 64) { + if (val) { + val = ~(uint64_t)0; + SET_QC(); + } else { + val = 0; + } + } else if (shift <= -64) { + val = 0; + } else if (shift < 0) { + val >>= -shift; + } else { + uint64_t tmp = val; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = ~(uint64_t)0; + } + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp >= (ssize_t)sizeof(src1) * 8) { \ + if (src1) \ + SET_QC(); \ + dest = src1 >> 31; \ + } else if (tmp <= -(ssize_t)sizeof(src1) * 8) { \ + dest = src1 >> 31; \ + } else if (tmp < 0) { \ + dest = src1 >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = src2 >> 31; \ + } \ + }} while (0) +NEON_VOP_ENV(qshl_s8, neon_s8, 4) +NEON_VOP_ENV(qshl_s16, neon_s16, 2) +NEON_VOP_ENV(qshl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qshl_s64)(CPUState *env, uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (uint8_t)shiftop; + int64_t val = valop; + if (shift >= 64) { + if (val) { + SET_QC(); + val = (val >> 63) & ~SIGNBIT64; + } + } else if (shift <= 64) { + val >>= 63; + } else if (shift < 0) { + val >>= -shift; + } else { + int64_t tmp = val; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = (tmp >> 63) ^ ~SIGNBIT64; + } + } + return val; +} + + +/* FIXME: This is wrong. */ +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = ~0; \ + } \ + }} while (0) +NEON_VOP_ENV(qrshl_u8, neon_u8, 4) +NEON_VOP_ENV(qrshl_u16, neon_u16, 2) +NEON_VOP_ENV(qrshl_u32, neon_u32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qrshl_u64)(CPUState *env, uint64_t val, uint64_t shiftop) +{ + int8_t shift = (int8_t)shiftop; + if (shift < 0) { + val = (val + (1 << (-1 - shift))) >> -shift; + } else { \ + uint64_t tmp = val; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = ~0; + } + } + return val; +} + +#define NEON_FN(dest, src1, src2) do { \ + int8_t tmp; \ + tmp = (int8_t)src2; \ + if (tmp < 0) { \ + dest = (src1 + (1 << (-1 - tmp))) >> -tmp; \ + } else { \ + dest = src1 << tmp; \ + if ((dest >> tmp) != src1) { \ + SET_QC(); \ + dest = src1 >> 31; \ + } \ + }} while (0) +NEON_VOP_ENV(qrshl_s8, neon_s8, 4) +NEON_VOP_ENV(qrshl_s16, neon_s16, 2) +NEON_VOP_ENV(qrshl_s32, neon_s32, 1) +#undef NEON_FN + +uint64_t HELPER(neon_qrshl_s64)(CPUState *env, uint64_t valop, uint64_t shiftop) +{ + int8_t shift = (uint8_t)shiftop; + int64_t val = valop; + + if (shift < 0) { + val = (val + (1 << (-1 - shift))) >> -shift; + } else { + int64_t tmp = val;; + val <<= shift; + if ((val >> shift) != tmp) { + SET_QC(); + val = tmp >> 31; + } + } + return val; +} + +uint32_t HELPER(neon_add_u8)(uint32_t a, uint32_t b) +{ + uint32_t mask; + mask = (a ^ b) & 0x80808080u; + a &= ~0x80808080u; + b &= ~0x80808080u; + return (a + b) ^ mask; +} + +uint32_t HELPER(neon_add_u16)(uint32_t a, uint32_t b) +{ + uint32_t mask; + mask = (a ^ b) & 0x80008000u; + a &= ~0x80008000u; + b &= ~0x80008000u; + return (a + b) ^ mask; +} + +#define NEON_FN(dest, src1, src2) dest = src1 + src2 +NEON_POP(padd_u8, neon_u8, 4) +NEON_POP(padd_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = src1 - src2 +NEON_VOP(sub_u8, neon_u8, 4) +NEON_VOP(sub_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = src1 * src2 +NEON_VOP(mul_u8, neon_u8, 4) +NEON_VOP(mul_u16, neon_u16, 2) +#undef NEON_FN + +/* Polynomial multiplication is like integer multiplication except the + partial products are XORed, not added. */ +uint32_t HELPER(neon_mul_p8)(uint32_t op1, uint32_t op2) +{ + uint32_t mask; + uint32_t result; + result = 0; + while (op1) { + mask = 0; + if (op1 & 1) + mask |= 0xff; + if (op1 & (1 << 8)) + mask |= (0xff << 8); + if (op1 & (1 << 16)) + mask |= (0xff << 16); + if (op1 & (1 << 24)) + mask |= (0xff << 24); + result ^= op2 & mask; + op1 = (op1 >> 1) & 0x7f7f7f7f; + op2 = (op2 << 1) & 0xfefefefe; + } + return result; +} + +#define NEON_FN(dest, src1, src2) dest = (src1 & src2) ? -1 : 0 +NEON_VOP(tst_u8, neon_u8, 4) +NEON_VOP(tst_u16, neon_u16, 2) +NEON_VOP(tst_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src1, src2) dest = (src1 == src2) ? -1 : 0 +NEON_VOP(ceq_u8, neon_u8, 4) +NEON_VOP(ceq_u16, neon_u16, 2) +NEON_VOP(ceq_u32, neon_u32, 1) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = (src < 0) ? -src : src +NEON_VOP1(abs_s8, neon_s8, 4) +NEON_VOP1(abs_s16, neon_s16, 2) +#undef NEON_FN + +/* Count Leading Sign/Zero Bits. */ +static inline int do_clz8(uint8_t x) +{ + int n; + for (n = 8; x; n--) + x >>= 1; + return n; +} + +static inline int do_clz16(uint16_t x) +{ + int n; + for (n = 16; x; n--) + x >>= 1; + return n; +} + +#define NEON_FN(dest, src, dummy) dest = do_clz8(src) +NEON_VOP1(clz_u8, neon_u8, 4) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = do_clz16(src) +NEON_VOP1(clz_u16, neon_u16, 2) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = do_clz8((src < 0) ? ~src : src) - 1 +NEON_VOP1(cls_s8, neon_s8, 4) +#undef NEON_FN + +#define NEON_FN(dest, src, dummy) dest = do_clz16((src < 0) ? ~src : src) - 1 +NEON_VOP1(cls_s16, neon_s16, 2) +#undef NEON_FN + +uint32_t HELPER(neon_cls_s32)(uint32_t x) +{ + int count; + if ((int32_t)x < 0) + x = ~x; + for (count = 32; x; count--) + x = x >> 1; + return count - 1; +} + +/* Bit count. */ +uint32_t HELPER(neon_cnt_u8)(uint32_t x) +{ + x = (x & 0x55555555) + ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x & 0x0f0f0f0f) + ((x >> 4) & 0x0f0f0f0f); + return x; +} + +#define NEON_QDMULH16(dest, src1, src2, round) do { \ + uint32_t tmp = (int32_t)(int16_t) src1 * (int16_t) src2; \ + if ((tmp ^ (tmp << 1)) & SIGNBIT) { \ + SET_QC(); \ + tmp = (tmp >> 31) ^ ~SIGNBIT; \ + } \ + tmp <<= 1; \ + if (round) { \ + int32_t old = tmp; \ + tmp += 1 << 15; \ + if ((int32_t)tmp < old) { \ + SET_QC(); \ + tmp = SIGNBIT - 1; \ + } \ + } \ + dest = tmp >> 16; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_QDMULH16(dest, src1, src2, 0) +NEON_VOP_ENV(qdmulh_s16, neon_s16, 2) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_QDMULH16(dest, src1, src2, 1) +NEON_VOP_ENV(qrdmulh_s16, neon_s16, 2) +#undef NEON_FN +#undef NEON_QDMULH16 + +#define NEON_QDMULH32(dest, src1, src2, round) do { \ + uint64_t tmp = (int64_t)(int32_t) src1 * (int32_t) src2; \ + if ((tmp ^ (tmp << 1)) & SIGNBIT64) { \ + SET_QC(); \ + tmp = (tmp >> 63) ^ ~SIGNBIT64; \ + } else { \ + tmp <<= 1; \ + } \ + if (round) { \ + int64_t old = tmp; \ + tmp += (int64_t)1 << 31; \ + if ((int64_t)tmp < old) { \ + SET_QC(); \ + tmp = SIGNBIT64 - 1; \ + } \ + } \ + dest = tmp >> 32; \ + } while(0) +#define NEON_FN(dest, src1, src2) NEON_QDMULH32(dest, src1, src2, 0) +NEON_VOP_ENV(qdmulh_s32, neon_s32, 1) +#undef NEON_FN +#define NEON_FN(dest, src1, src2) NEON_QDMULH32(dest, src1, src2, 1) +NEON_VOP_ENV(qrdmulh_s32, neon_s32, 1) +#undef NEON_FN +#undef NEON_QDMULH32 + +uint32_t HELPER(neon_narrow_u8)(uint64_t x) +{ + return (x & 0xffu) | ((x >> 8) & 0xff00u) | ((x >> 16) & 0xff0000u) + | ((x >> 24) & 0xff000000u); +} + +uint32_t HELPER(neon_narrow_u16)(uint64_t x) +{ + return (x & 0xffffu) | ((x >> 16) & 0xffff0000u); +} + +uint32_t HELPER(neon_narrow_high_u8)(uint64_t x) +{ + return ((x >> 8) & 0xff) | ((x >> 16) & 0xff00) + | ((x >> 24) & 0xff0000) | ((x >> 32) & 0xff000000); +} + +uint32_t HELPER(neon_narrow_high_u16)(uint64_t x) +{ + return ((x >> 16) & 0xffff) | ((x >> 32) & 0xffff0000); +} + +uint32_t HELPER(neon_narrow_round_high_u8)(uint64_t x) +{ + x &= 0xff80ff80ff80ff80ull; + x += 0x0080008000800080ull; + return ((x >> 8) & 0xff) | ((x >> 16) & 0xff00) + | ((x >> 24) & 0xff0000) | ((x >> 32) & 0xff000000); +} + +uint32_t HELPER(neon_narrow_round_high_u16)(uint64_t x) +{ + x &= 0xffff8000ffff8000ull; + x += 0x0000800000008000ull; + return ((x >> 16) & 0xffff) | ((x >> 32) & 0xffff0000); +} + +uint32_t HELPER(neon_narrow_sat_u8)(CPUState *env, uint64_t x) +{ + uint16_t s; + uint8_t d; + uint32_t res = 0; +#define SAT8(n) \ + s = x >> n; \ + if (s > 0xff) { \ + d = 0xff; \ + SET_QC(); \ + } else { \ + d = s; \ + } \ + res |= (uint32_t)d << (n / 2); + + SAT8(0); + SAT8(16); + SAT8(32); + SAT8(48); +#undef SAT8 + return res; +} + +uint32_t HELPER(neon_narrow_sat_s8)(CPUState *env, uint64_t x) +{ + int16_t s; + uint8_t d; + uint32_t res = 0; +#define SAT8(n) \ + s = x >> n; \ + if (s != (int8_t)s) { \ + d = (s >> 15) ^ 0x7f; \ + SET_QC(); \ + } else { \ + d = s; \ + } \ + res |= (uint32_t)d << (n / 2); + + SAT8(0); + SAT8(16); + SAT8(32); + SAT8(48); +#undef SAT8 + return res; +} + +uint32_t HELPER(neon_narrow_sat_u16)(CPUState *env, uint64_t x) +{ + uint32_t high; + uint32_t low; + low = x; + if (low > 0xffff) { + low = 0xffff; + SET_QC(); + } + high = x >> 32; + if (high > 0xffff) { + high = 0xffff; + SET_QC(); + } + return low | (high << 16); +} + +uint32_t HELPER(neon_narrow_sat_s16)(CPUState *env, uint64_t x) +{ + int32_t low; + int32_t high; + low = x; + if (low != (int16_t)low) { + low = (low >> 31) ^ 0x7fff; + SET_QC(); + } + high = x >> 32; + if (high != (int16_t)high) { + high = (high >> 31) ^ 0x7fff; + SET_QC(); + } + return (uint16_t)low | (high << 16); +} + +uint32_t HELPER(neon_narrow_sat_u32)(CPUState *env, uint64_t x) +{ + if (x > 0xffffffffu) { + SET_QC(); + return 0xffffffffu; + } + return x; +} + +uint32_t HELPER(neon_narrow_sat_s32)(CPUState *env, uint64_t x) +{ + if ((int64_t)x != (int32_t)x) { + SET_QC(); + return (x >> 63) ^ 0x7fffffff; + } + return x; +} + +uint64_t HELPER(neon_widen_u8)(uint32_t x) +{ + uint64_t tmp; + uint64_t ret; + ret = (uint8_t)x; + tmp = (uint8_t)(x >> 8); + ret |= tmp << 16; + tmp = (uint8_t)(x >> 16); + ret |= tmp << 32; + tmp = (uint8_t)(x >> 24); + ret |= tmp << 48; + return ret; +} + +uint64_t HELPER(neon_widen_s8)(uint32_t x) +{ + uint64_t tmp; + uint64_t ret; + ret = (uint16_t)(int8_t)x; + tmp = (uint16_t)(int8_t)(x >> 8); + ret |= tmp << 16; + tmp = (uint16_t)(int8_t)(x >> 16); + ret |= tmp << 32; + tmp = (uint16_t)(int8_t)(x >> 24); + ret |= tmp << 48; + return ret; +} + +uint64_t HELPER(neon_widen_u16)(uint32_t x) +{ + uint64_t high = (uint16_t)(x >> 16); + return ((uint16_t)x) | (high << 32); +} + +uint64_t HELPER(neon_widen_s16)(uint32_t x) +{ + uint64_t high = (int16_t)(x >> 16); + return ((uint32_t)(int16_t)x) | (high << 32); +} + +uint64_t HELPER(neon_addl_u16)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ b) & 0x8000800080008000ull; + a &= ~0x8000800080008000ull; + b &= ~0x8000800080008000ull; + return (a + b) ^ mask; +} + +uint64_t HELPER(neon_addl_u32)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ b) & 0x8000000080000000ull; + a &= ~0x8000000080000000ull; + b &= ~0x8000000080000000ull; + return (a + b) ^ mask; +} + +uint64_t HELPER(neon_paddl_u16)(uint64_t a, uint64_t b) +{ + uint64_t tmp; + uint64_t tmp2; + + tmp = a & 0x0000ffff0000ffffull; + tmp += (a >> 16) & 0x0000ffff0000ffffull; + tmp2 = b & 0xffff0000ffff0000ull; + tmp2 += (b << 16) & 0xffff0000ffff0000ull; + return ( tmp & 0xffff) + | ((tmp >> 16) & 0xffff0000ull) + | ((tmp2 << 16) & 0xffff00000000ull) + | ( tmp2 & 0xffff000000000000ull); +} + +uint64_t HELPER(neon_paddl_u32)(uint64_t a, uint64_t b) +{ + uint32_t low = a + (a >> 32); + uint32_t high = b + (b >> 32); + return low + ((uint64_t)high << 32); +} + +uint64_t HELPER(neon_subl_u16)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ ~b) & 0x8000800080008000ull; + a |= 0x8000800080008000ull; + b &= ~0x8000800080008000ull; + return (a - b) ^ mask; +} + +uint64_t HELPER(neon_subl_u32)(uint64_t a, uint64_t b) +{ + uint64_t mask; + mask = (a ^ ~b) & 0x8000000080000000ull; + a |= 0x8000000080000000ull; + b &= ~0x8000000080000000ull; + return (a - b) ^ mask; +} + +uint64_t HELPER(neon_addl_saturate_s32)(CPUState *env, uint64_t a, uint64_t b) +{ + uint32_t x, y; + uint32_t low, high; + + x = a; + y = b; + low = x + y; + if (((low ^ x) & SIGNBIT) && !((x ^ y) & SIGNBIT)) { + SET_QC(); + low = ((int32_t)x >> 31) ^ ~SIGNBIT; + } + x = a >> 32; + y = b >> 32; + high = x + y; + if (((high ^ x) & SIGNBIT) && !((x ^ y) & SIGNBIT)) { + SET_QC(); + high = ((int32_t)x >> 31) ^ ~SIGNBIT; + } + return low | ((uint64_t)high << 32); +} + +uint64_t HELPER(neon_addl_saturate_s64)(CPUState *env, uint64_t a, uint64_t b) +{ + uint64_t result; + + result = a + b; + if (((result ^ a) & SIGNBIT64) && !((a ^ b) & SIGNBIT64)) { + SET_QC(); + result = ((int64_t)a >> 63) ^ ~SIGNBIT64; + } + return result; +} + +#define DO_ABD(dest, x, y, type) do { \ + type tmp_x = x; \ + type tmp_y = y; \ + dest = ((tmp_x > tmp_y) ? tmp_x - tmp_y : tmp_y - tmp_x); \ + } while(0) + +uint64_t HELPER(neon_abdl_u16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, uint8_t); + DO_ABD(tmp, a >> 8, b >> 8, uint8_t); + result |= tmp << 16; + DO_ABD(tmp, a >> 16, b >> 16, uint8_t); + result |= tmp << 32; + DO_ABD(tmp, a >> 24, b >> 24, uint8_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_abdl_s16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, int8_t); + DO_ABD(tmp, a >> 8, b >> 8, int8_t); + result |= tmp << 16; + DO_ABD(tmp, a >> 16, b >> 16, int8_t); + result |= tmp << 32; + DO_ABD(tmp, a >> 24, b >> 24, int8_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_abdl_u32)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, uint16_t); + DO_ABD(tmp, a >> 16, b >> 16, uint16_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_abdl_s32)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + DO_ABD(result, a, b, int16_t); + DO_ABD(tmp, a >> 16, b >> 16, int16_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_abdl_u64)(uint32_t a, uint32_t b) +{ + uint64_t result; + DO_ABD(result, a, b, uint32_t); + return result; +} + +uint64_t HELPER(neon_abdl_s64)(uint32_t a, uint32_t b) +{ + uint64_t result; + DO_ABD(result, a, b, int32_t); + return result; +} +#undef DO_ABD + +/* Widening multiply. Named type is the source type. */ +#define DO_MULL(dest, x, y, type1, type2) do { \ + type1 tmp_x = x; \ + type1 tmp_y = y; \ + dest = (type2)((type2)tmp_x * (type2)tmp_y); \ + } while(0) + +uint64_t HELPER(neon_mull_u8)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, uint8_t, uint16_t); + DO_MULL(tmp, a >> 8, b >> 8, uint8_t, uint16_t); + result |= tmp << 16; + DO_MULL(tmp, a >> 16, b >> 16, uint8_t, uint16_t); + result |= tmp << 32; + DO_MULL(tmp, a >> 24, b >> 24, uint8_t, uint16_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_mull_s8)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, int8_t, uint16_t); + DO_MULL(tmp, a >> 8, b >> 8, int8_t, uint16_t); + result |= tmp << 16; + DO_MULL(tmp, a >> 16, b >> 16, int8_t, uint16_t); + result |= tmp << 32; + DO_MULL(tmp, a >> 24, b >> 24, int8_t, uint16_t); + result |= tmp << 48; + return result; +} + +uint64_t HELPER(neon_mull_u16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, uint16_t, uint32_t); + DO_MULL(tmp, a >> 16, b >> 16, uint16_t, uint32_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_mull_s16)(uint32_t a, uint32_t b) +{ + uint64_t tmp; + uint64_t result; + + DO_MULL(result, a, b, int16_t, uint32_t); + DO_MULL(tmp, a >> 16, b >> 16, int16_t, uint32_t); + return result | (tmp << 32); +} + +uint64_t HELPER(neon_negl_u16)(uint64_t x) +{ + uint16_t tmp; + uint64_t result; + result = (uint16_t)-x; + tmp = -(x >> 16); + result |= (uint64_t)tmp << 16; + tmp = -(x >> 32); + result |= (uint64_t)tmp << 32; + tmp = -(x >> 48); + result |= (uint64_t)tmp << 48; + return result; +} + +#include +uint64_t HELPER(neon_negl_u32)(uint64_t x) +{ + uint32_t low = -x; + uint32_t high = -(x >> 32); + return low | ((uint64_t)high << 32); +} + +/* FIXME: There should be a native op for this. */ +uint64_t HELPER(neon_negl_u64)(uint64_t x) +{ + return -x; +} + +/* Saturnating sign manuipulation. */ +/* ??? Make these use NEON_VOP1 */ +#define DO_QABS8(x) do { \ + if (x == (int8_t)0x80) { \ + x = 0x7f; \ + SET_QC(); \ + } else if (x < 0) { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qabs_s8)(CPUState *env, uint32_t x) +{ + neon_s8 vec; + NEON_UNPACK(neon_s8, vec, x); + DO_QABS8(vec.v1); + DO_QABS8(vec.v2); + DO_QABS8(vec.v3); + DO_QABS8(vec.v4); + NEON_PACK(neon_s8, x, vec); + return x; +} +#undef DO_QABS8 + +#define DO_QNEG8(x) do { \ + if (x == (int8_t)0x80) { \ + x = 0x7f; \ + SET_QC(); \ + } else { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qneg_s8)(CPUState *env, uint32_t x) +{ + neon_s8 vec; + NEON_UNPACK(neon_s8, vec, x); + DO_QNEG8(vec.v1); + DO_QNEG8(vec.v2); + DO_QNEG8(vec.v3); + DO_QNEG8(vec.v4); + NEON_PACK(neon_s8, x, vec); + return x; +} +#undef DO_QNEG8 + +#define DO_QABS16(x) do { \ + if (x == (int16_t)0x8000) { \ + x = 0x7fff; \ + SET_QC(); \ + } else if (x < 0) { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qabs_s16)(CPUState *env, uint32_t x) +{ + neon_s16 vec; + NEON_UNPACK(neon_s16, vec, x); + DO_QABS16(vec.v1); + DO_QABS16(vec.v2); + NEON_PACK(neon_s16, x, vec); + return x; +} +#undef DO_QABS16 + +#define DO_QNEG16(x) do { \ + if (x == (int16_t)0x8000) { \ + x = 0x7fff; \ + SET_QC(); \ + } else { \ + x = -x; \ + }} while (0) +uint32_t HELPER(neon_qneg_s16)(CPUState *env, uint32_t x) +{ + neon_s16 vec; + NEON_UNPACK(neon_s16, vec, x); + DO_QNEG16(vec.v1); + DO_QNEG16(vec.v2); + NEON_PACK(neon_s16, x, vec); + return x; +} +#undef DO_QNEG16 + +uint32_t HELPER(neon_qabs_s32)(CPUState *env, uint32_t x) +{ + if (x == SIGNBIT) { + SET_QC(); + x = ~SIGNBIT; + } else if ((int32_t)x < 0) { + x = -x; + } + return x; +} + +uint32_t HELPER(neon_qneg_s32)(CPUState *env, uint32_t x) +{ + if (x == SIGNBIT) { + SET_QC(); + x = ~SIGNBIT; + } else { + x = -x; + } + return x; +} + +/* NEON Float helpers. */ +uint32_t HELPER(neon_min_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = vfp_itos(a); + float32 f1 = vfp_itos(b); + return (float32_compare_quiet(f0, f1, NFS) == -1) ? a : b; +} + +uint32_t HELPER(neon_max_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = vfp_itos(a); + float32 f1 = vfp_itos(b); + return (float32_compare_quiet(f0, f1, NFS) == 1) ? a : b; +} + +uint32_t HELPER(neon_abd_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = vfp_itos(a); + float32 f1 = vfp_itos(b); + return vfp_stoi((float32_compare_quiet(f0, f1, NFS) == 1) + ? float32_sub(f0, f1, NFS) + : float32_sub(f1, f0, NFS)); +} + +uint32_t HELPER(neon_add_f32)(uint32_t a, uint32_t b) +{ + return vfp_stoi(float32_add(vfp_itos(a), vfp_itos(b), NFS)); +} + +uint32_t HELPER(neon_sub_f32)(uint32_t a, uint32_t b) +{ + return vfp_stoi(float32_sub(vfp_itos(a), vfp_itos(b), NFS)); +} + +uint32_t HELPER(neon_mul_f32)(uint32_t a, uint32_t b) +{ + return vfp_stoi(float32_mul(vfp_itos(a), vfp_itos(b), NFS)); +} + +/* Floating point comparisons produce an integer result. */ +#define NEON_VOP_FCMP(name, cmp) \ +uint32_t HELPER(neon_##name)(uint32_t a, uint32_t b) \ +{ \ + if (float32_compare_quiet(vfp_itos(a), vfp_itos(b), NFS) cmp 0) \ + return ~0; \ + else \ + return 0; \ +} + +NEON_VOP_FCMP(ceq_f32, ==) +NEON_VOP_FCMP(cge_f32, >=) +NEON_VOP_FCMP(cgt_f32, >) + +uint32_t HELPER(neon_acge_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = float32_abs(vfp_itos(a)); + float32 f1 = float32_abs(vfp_itos(b)); + return (float32_compare_quiet(f0, f1,NFS) >= 0) ? ~0 : 0; +} + +uint32_t HELPER(neon_acgt_f32)(uint32_t a, uint32_t b) +{ + float32 f0 = float32_abs(vfp_itos(a)); + float32 f1 = float32_abs(vfp_itos(b)); + return (float32_compare_quiet(f0, f1, NFS) > 0) ? ~0 : 0; +} diff --git a/qemu/qemu-git/target-arm/op_addsub.h b/qemu/qemu-git/target-arm/op_addsub.h new file mode 100644 index 0000000..29f77ba --- /dev/null +++ b/qemu/qemu-git/target-arm/op_addsub.h @@ -0,0 +1,103 @@ +/* + * ARMv6 integer SIMD operations. + * + * Copyright (c) 2007 CodeSourcery. + * Written by Paul Brook + * + * This code is licenced under the GPL. + */ + +#ifdef ARITH_GE +#define GE_ARG , void *gep +#define DECLARE_GE uint32_t ge = 0 +#define SET_GE *(uint32_t *)gep = ge +#else +#define GE_ARG +#define DECLARE_GE do{}while(0) +#define SET_GE do{}while(0) +#endif + +#define RESULT(val, n, width) \ + res |= ((uint32_t)(glue(glue(uint,width),_t))(val)) << (n * width) + +uint32_t HELPER(glue(PFX,add16))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + ADD16(a, b, 0); + ADD16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,add8))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + ADD8(a, b, 0); + ADD8(a >> 8, b >> 8, 1); + ADD8(a >> 16, b >> 16, 2); + ADD8(a >> 24, b >> 24, 3); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,sub16))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + SUB16(a, b, 0); + SUB16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,sub8))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + SUB8(a, b, 0); + SUB8(a >> 8, b >> 8, 1); + SUB8(a >> 16, b >> 16, 2); + SUB8(a >> 24, b >> 24, 3); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,subaddx))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + ADD16(a, b, 0); + SUB16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +uint32_t HELPER(glue(PFX,addsubx))(uint32_t a, uint32_t b GE_ARG) +{ + uint32_t res = 0; + DECLARE_GE; + + SUB16(a, b, 0); + ADD16(a >> 16, b >> 16, 1); + SET_GE; + return res; +} + +#undef GE_ARG +#undef DECLARE_GE +#undef SET_GE +#undef RESULT + +#undef ARITH_GE +#undef PFX +#undef ADD16 +#undef SUB16 +#undef ADD8 +#undef SUB8 diff --git a/qemu/qemu-git/target-arm/op_helper.c b/qemu/qemu-git/target-arm/op_helper.c new file mode 100644 index 0000000..9b1a014 --- /dev/null +++ b/qemu/qemu-git/target-arm/op_helper.c @@ -0,0 +1,489 @@ +/* + * ARM helper routines + * + * Copyright (c) 2005-2007 CodeSourcery, LLC + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include "exec.h" +#include "helpers.h" + +#define SIGNBIT (uint32_t)0x80000000 +#define SIGNBIT64 ((uint64_t)1 << 63) + +void raise_exception(int tt) +{ + env->exception_index = tt; + cpu_loop_exit(); +} + +/* thread support */ + +static spinlock_t global_cpu_lock = SPIN_LOCK_UNLOCKED; + +void cpu_lock(void) +{ + spin_lock(&global_cpu_lock); +} + +void cpu_unlock(void) +{ + spin_unlock(&global_cpu_lock); +} + +uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def, + uint32_t rn, uint32_t maxindex) +{ + uint32_t val; + uint32_t tmp; + int index; + int shift; + uint64_t *table; + table = (uint64_t *)&env->vfp.regs[rn]; + val = 0; + for (shift = 0; shift < 32; shift += 8) { + index = (ireg >> shift) & 0xff; + if (index < maxindex) { + tmp = (table[index >> 3] >> ((index & 7) << 3)) & 0xff; + val |= tmp << shift; + } else { + val |= def & (0xff << shift); + } + } + return val; +} + +#if !defined(CONFIG_USER_ONLY) + +#define MMUSUFFIX _mmu + +#define SHIFT 0 +#include "softmmu_template.h" + +#define SHIFT 1 +#include "softmmu_template.h" + +#define SHIFT 2 +#include "softmmu_template.h" + +#define SHIFT 3 +#include "softmmu_template.h" + +/* try to fill the TLB and return an exception if error. If retaddr is + NULL, it means that the function was called in C code (i.e. not + from generated code or from helper.c) */ +/* XXX: fix it to restore all registers */ +void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr) +{ + TranslationBlock *tb; + CPUState *saved_env; + unsigned long pc; + int ret; + + /* XXX: hack to restore env in all cases, even if not called from + generated code */ + saved_env = env; + env = cpu_single_env; + ret = cpu_arm_handle_mmu_fault(env, addr, is_write, mmu_idx, 1); + if (unlikely(ret)) { + if (retaddr) { + /* now we have a real cpu fault */ + pc = (unsigned long)retaddr; + tb = tb_find_pc(pc); + if (tb) { + /* the PC is inside the translated code. It means that we have + a virtual CPU fault */ + cpu_restore_state(tb, env, pc, NULL); + } + } + raise_exception(env->exception_index); + } + env = saved_env; +} +#endif + +/* FIXME: Pass an axplicit pointer to QF to CPUState, and move saturating + instructions into helper.c */ +uint32_t HELPER(add_setq)(uint32_t a, uint32_t b) +{ + uint32_t res = a + b; + if (((res ^ a) & SIGNBIT) && !((a ^ b) & SIGNBIT)) + env->QF = 1; + return res; +} + +uint32_t HELPER(add_saturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a + b; + if (((res ^ a) & SIGNBIT) && !((a ^ b) & SIGNBIT)) { + env->QF = 1; + res = ~(((int32_t)a >> 31) ^ SIGNBIT); + } + return res; +} + +uint32_t HELPER(sub_saturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a - b; + if (((res ^ a) & SIGNBIT) && ((a ^ b) & SIGNBIT)) { + env->QF = 1; + res = ~(((int32_t)a >> 31) ^ SIGNBIT); + } + return res; +} + +uint32_t HELPER(double_saturate)(int32_t val) +{ + uint32_t res; + if (val >= 0x40000000) { + res = ~SIGNBIT; + env->QF = 1; + } else if (val <= (int32_t)0xc0000000) { + res = SIGNBIT; + env->QF = 1; + } else { + res = val << 1; + } + return res; +} + +uint32_t HELPER(add_usaturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a + b; + if (res < a) { + env->QF = 1; + res = ~0; + } + return res; +} + +uint32_t HELPER(sub_usaturate)(uint32_t a, uint32_t b) +{ + uint32_t res = a - b; + if (res > a) { + env->QF = 1; + res = 0; + } + return res; +} + +/* Signed saturation. */ +static inline uint32_t do_ssat(int32_t val, int shift) +{ + int32_t top; + uint32_t mask; + + top = val >> shift; + mask = (1u << shift) - 1; + if (top > 0) { + env->QF = 1; + return mask; + } else if (top < -1) { + env->QF = 1; + return ~mask; + } + return val; +} + +/* Unsigned saturation. */ +static inline uint32_t do_usat(int32_t val, int shift) +{ + uint32_t max; + + max = (1u << shift) - 1; + if (val < 0) { + env->QF = 1; + return 0; + } else if (val > max) { + env->QF = 1; + return max; + } + return val; +} + +/* Signed saturate. */ +uint32_t HELPER(ssat)(uint32_t x, uint32_t shift) +{ + return do_ssat(x, shift); +} + +/* Dual halfword signed saturate. */ +uint32_t HELPER(ssat16)(uint32_t x, uint32_t shift) +{ + uint32_t res; + + res = (uint16_t)do_ssat((int16_t)x, shift); + res |= do_ssat(((int32_t)x) >> 16, shift) << 16; + return res; +} + +/* Unsigned saturate. */ +uint32_t HELPER(usat)(uint32_t x, uint32_t shift) +{ + return do_usat(x, shift); +} + +/* Dual halfword unsigned saturate. */ +uint32_t HELPER(usat16)(uint32_t x, uint32_t shift) +{ + uint32_t res; + + res = (uint16_t)do_usat((int16_t)x, shift); + res |= do_usat(((int32_t)x) >> 16, shift) << 16; + return res; +} + +void HELPER(wfi)(void) +{ + env->exception_index = EXCP_HLT; + env->halted = 1; + cpu_loop_exit(); +} + +void HELPER(exception)(uint32_t excp) +{ + env->exception_index = excp; + cpu_loop_exit(); +} + +uint32_t HELPER(cpsr_read)(void) +{ + return cpsr_read(env) & ~CPSR_EXEC; +} + +void HELPER(cpsr_write)(uint32_t val, uint32_t mask) +{ + cpsr_write(env, val, mask); +} + +/* Access to user mode registers from privileged modes. */ +uint32_t HELPER(get_user_reg)(uint32_t regno) +{ + uint32_t val; + + if (regno == 13) { + val = env->banked_r13[0]; + } else if (regno == 14) { + val = env->banked_r14[0]; + } else if (regno >= 8 + && (env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_FIQ) { + val = env->usr_regs[regno - 8]; + } else { + val = env->regs[regno]; + } + return val; +} + +void HELPER(set_user_reg)(uint32_t regno, uint32_t val) +{ + if (regno == 13) { + env->banked_r13[0] = val; + } else if (regno == 14) { + env->banked_r14[0] = val; + } else if (regno >= 8 + && (env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_FIQ) { + env->usr_regs[regno - 8] = val; + } else { + env->regs[regno] = val; + } +} + +/* ??? Flag setting arithmetic is awkward because we need to do comparisons. + The only way to do that in TCG is a conditional branch, which clobbers + all our temporaries. For now implement these as helper functions. */ + +uint32_t HELPER (add_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + result = a + b; + env->NF = env->ZF = result; + env->CF = result < a; + env->VF = (a ^ b ^ -1) & (a ^ result); + return result; +} + +uint32_t HELPER(adc_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + if (!env->CF) { + result = a + b; + env->CF = result < a; + } else { + result = a + b + 1; + env->CF = result <= a; + } + env->VF = (a ^ b ^ -1) & (a ^ result); + env->NF = env->ZF = result; + return result; +} + +uint32_t HELPER(sub_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + result = a - b; + env->NF = env->ZF = result; + env->CF = a >= b; + env->VF = (a ^ b) & (a ^ result); + return result; +} + +uint32_t HELPER(sbc_cc)(uint32_t a, uint32_t b) +{ + uint32_t result; + if (!env->CF) { + result = a - b - 1; + env->CF = a > b; + } else { + result = a - b; + env->CF = a >= b; + } + env->VF = (a ^ b) & (a ^ result); + env->NF = env->ZF = result; + return result; +} + +/* Similarly for variable shift instructions. */ + +uint32_t HELPER(shl)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) + return 0; + return x << shift; +} + +uint32_t HELPER(shr)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) + return 0; + return (uint32_t)x >> shift; +} + +uint32_t HELPER(sar)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) + shift = 31; + return (int32_t)x >> shift; +} + +uint32_t HELPER(shl_cc)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) { + if (shift == 32) + env->CF = x & 1; + else + env->CF = 0; + return 0; + } else if (shift != 0) { + env->CF = (x >> (32 - shift)) & 1; + return x << shift; + } + return x; +} + +uint32_t HELPER(shr_cc)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) { + if (shift == 32) + env->CF = (x >> 31) & 1; + else + env->CF = 0; + return 0; + } else if (shift != 0) { + env->CF = (x >> (shift - 1)) & 1; + return x >> shift; + } + return x; +} + +uint32_t HELPER(sar_cc)(uint32_t x, uint32_t i) +{ + int shift = i & 0xff; + if (shift >= 32) { + env->CF = (x >> 31) & 1; + return (int32_t)x >> 31; + } else if (shift != 0) { + env->CF = (x >> (shift - 1)) & 1; + return (int32_t)x >> shift; + } + return x; +} + +uint32_t HELPER(ror_cc)(uint32_t x, uint32_t i) +{ + int shift1, shift; + shift1 = i & 0xff; + shift = shift1 & 0x1f; + if (shift == 0) { + if (shift1 != 0) + env->CF = (x >> 31) & 1; + return x; + } else { + env->CF = (x >> (shift - 1)) & 1; + return ((uint32_t)x >> shift) | (x << (32 - shift)); + } +} + +uint64_t HELPER(neon_add_saturate_s64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + res = src1 + src2; + if (((res ^ src1) & SIGNBIT64) && !((src1 ^ src2) & SIGNBIT64)) { + env->QF = 1; + res = ((int64_t)src1 >> 63) ^ ~SIGNBIT64; + } + return res; +} + +uint64_t HELPER(neon_add_saturate_u64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + res = src1 + src2; + if (res < src1) { + env->QF = 1; + res = ~(uint64_t)0; + } + return res; +} + +uint64_t HELPER(neon_sub_saturate_s64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + res = src1 - src2; + if (((res ^ src1) & SIGNBIT64) && ((src1 ^ src2) & SIGNBIT64)) { + env->QF = 1; + res = ((int64_t)src1 >> 63) ^ ~SIGNBIT64; + } + return res; +} + +uint64_t HELPER(neon_sub_saturate_u64)(uint64_t src1, uint64_t src2) +{ + uint64_t res; + + if (src1 < src2) { + env->QF = 1; + res = 0; + } else { + res = src1 - src2; + } + return res; +} diff --git a/qemu/qemu-git/target-arm/translate.c b/qemu/qemu-git/target-arm/translate.c new file mode 100644 index 0000000..5cf3e06 --- /dev/null +++ b/qemu/qemu-git/target-arm/translate.c @@ -0,0 +1,9254 @@ +/* + * ARM translation + * + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2005-2007 CodeSourcery + * Copyright (c) 2007 OpenedHand, Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include +#include +#include +#include +#include + +#include "cpu.h" +#include "exec-all.h" +#include "disas.h" +#include "tcg-op.h" +#include "qemu-log.h" + +#include "helpers.h" +#define GEN_HELPER 1 +#include "helpers.h" + +#define ENABLE_ARCH_5J 0 +#define ENABLE_ARCH_6 arm_feature(env, ARM_FEATURE_V6) +#define ENABLE_ARCH_6K arm_feature(env, ARM_FEATURE_V6K) +#define ENABLE_ARCH_6T2 arm_feature(env, ARM_FEATURE_THUMB2) +#define ENABLE_ARCH_7 arm_feature(env, ARM_FEATURE_V7) + +#define ARCH(x) do { if (!ENABLE_ARCH_##x) goto illegal_op; } while(0) + +/* internal defines */ +typedef struct DisasContext { + target_ulong pc; + int is_jmp; + /* Nonzero if this instruction has been conditionally skipped. */ + int condjmp; + /* The label that will be jumped to when the instruction is skipped. */ + int condlabel; + /* Thumb-2 condtional execution bits. */ + int condexec_mask; + int condexec_cond; + struct TranslationBlock *tb; + int singlestep_enabled; + int thumb; +#if !defined(CONFIG_USER_ONLY) + int user; +#endif +} DisasContext; + +#if defined(CONFIG_USER_ONLY) +#define IS_USER(s) 1 +#else +#define IS_USER(s) (s->user) +#endif + +/* These instructions trap after executing, so defer them until after the + conditional executions state has been updated. */ +#define DISAS_WFI 4 +#define DISAS_SWI 5 + +static TCGv_ptr cpu_env; +/* We reuse the same 64-bit temporaries for efficiency. */ +static TCGv_i64 cpu_V0, cpu_V1, cpu_M0; +static TCGv_i32 cpu_R[16]; +static TCGv_i32 cpu_exclusive_addr; +static TCGv_i32 cpu_exclusive_val; +static TCGv_i32 cpu_exclusive_high; +#ifdef CONFIG_USER_ONLY +static TCGv_i32 cpu_exclusive_test; +static TCGv_i32 cpu_exclusive_info; +#endif + +/* FIXME: These should be removed. */ +static TCGv cpu_F0s, cpu_F1s; +static TCGv_i64 cpu_F0d, cpu_F1d; + +#include "gen-icount.h" + +static const char *regnames[] = + { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "pc" }; + +/* initialize TCG globals. */ +void arm_translate_init(void) +{ + int i; + + cpu_env = tcg_global_reg_new_ptr(TCG_AREG0, "env"); + + for (i = 0; i < 16; i++) { + cpu_R[i] = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, regs[i]), + regnames[i]); + } + cpu_exclusive_addr = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_addr), "exclusive_addr"); + cpu_exclusive_val = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_val), "exclusive_val"); + cpu_exclusive_high = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_high), "exclusive_high"); +#ifdef CONFIG_USER_ONLY + cpu_exclusive_test = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_test), "exclusive_test"); + cpu_exclusive_info = tcg_global_mem_new_i32(TCG_AREG0, + offsetof(CPUState, exclusive_info), "exclusive_info"); +#endif + +#define GEN_HELPER 2 +#include "helpers.h" +} + +static int num_temps; + +/* Allocate a temporary variable. */ +static TCGv_i32 new_tmp(void) +{ + num_temps++; + return tcg_temp_new_i32(); +} + +/* Release a temporary variable. */ +static void dead_tmp(TCGv tmp) +{ + tcg_temp_free(tmp); + num_temps--; +} + +static inline TCGv load_cpu_offset(int offset) +{ + TCGv tmp = new_tmp(); + tcg_gen_ld_i32(tmp, cpu_env, offset); + return tmp; +} + +#define load_cpu_field(name) load_cpu_offset(offsetof(CPUState, name)) + +static inline void store_cpu_offset(TCGv var, int offset) +{ + tcg_gen_st_i32(var, cpu_env, offset); + dead_tmp(var); +} + +#define store_cpu_field(var, name) \ + store_cpu_offset(var, offsetof(CPUState, name)) + +/* Set a variable to the value of a CPU register. */ +static void load_reg_var(DisasContext *s, TCGv var, int reg) +{ + if (reg == 15) { + uint32_t addr; + /* normaly, since we updated PC, we need only to add one insn */ + if (s->thumb) + addr = (long)s->pc + 2; + else + addr = (long)s->pc + 4; + tcg_gen_movi_i32(var, addr); + } else { + tcg_gen_mov_i32(var, cpu_R[reg]); + } +} + +/* Create a new temporary and set it to the value of a CPU register. */ +static inline TCGv load_reg(DisasContext *s, int reg) +{ + TCGv tmp = new_tmp(); + load_reg_var(s, tmp, reg); + return tmp; +} + +/* Set a CPU register. The source must be a temporary and will be + marked as dead. */ +static void store_reg(DisasContext *s, int reg, TCGv var) +{ + if (reg == 15) { + tcg_gen_andi_i32(var, var, ~1); + s->is_jmp = DISAS_JUMP; + } + tcg_gen_mov_i32(cpu_R[reg], var); + dead_tmp(var); +} + +/* Value extensions. */ +#define gen_uxtb(var) tcg_gen_ext8u_i32(var, var) +#define gen_uxth(var) tcg_gen_ext16u_i32(var, var) +#define gen_sxtb(var) tcg_gen_ext8s_i32(var, var) +#define gen_sxth(var) tcg_gen_ext16s_i32(var, var) + +#define gen_sxtb16(var) gen_helper_sxtb16(var, var) +#define gen_uxtb16(var) gen_helper_uxtb16(var, var) + + +static inline void gen_set_cpsr(TCGv var, uint32_t mask) +{ + TCGv tmp_mask = tcg_const_i32(mask); + gen_helper_cpsr_write(var, tmp_mask); + tcg_temp_free_i32(tmp_mask); +} +/* Set NZCV flags from the high 4 bits of var. */ +#define gen_set_nzcv(var) gen_set_cpsr(var, CPSR_NZCV) + +static void gen_exception(int excp) +{ + TCGv tmp = new_tmp(); + tcg_gen_movi_i32(tmp, excp); + gen_helper_exception(tmp); + dead_tmp(tmp); +} + +static void gen_smul_dual(TCGv a, TCGv b) +{ + TCGv tmp1 = new_tmp(); + TCGv tmp2 = new_tmp(); + tcg_gen_ext16s_i32(tmp1, a); + tcg_gen_ext16s_i32(tmp2, b); + tcg_gen_mul_i32(tmp1, tmp1, tmp2); + dead_tmp(tmp2); + tcg_gen_sari_i32(a, a, 16); + tcg_gen_sari_i32(b, b, 16); + tcg_gen_mul_i32(b, b, a); + tcg_gen_mov_i32(a, tmp1); + dead_tmp(tmp1); +} + +/* Byteswap each halfword. */ +static void gen_rev16(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 8); + tcg_gen_andi_i32(tmp, tmp, 0x00ff00ff); + tcg_gen_shli_i32(var, var, 8); + tcg_gen_andi_i32(var, var, 0xff00ff00); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Byteswap low halfword and sign extend. */ +static void gen_revsh(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 8); + tcg_gen_andi_i32(tmp, tmp, 0x00ff); + tcg_gen_shli_i32(var, var, 8); + tcg_gen_ext8s_i32(var, var); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Unsigned bitfield extract. */ +static void gen_ubfx(TCGv var, int shift, uint32_t mask) +{ + if (shift) + tcg_gen_shri_i32(var, var, shift); + tcg_gen_andi_i32(var, var, mask); +} + +/* Signed bitfield extract. */ +static void gen_sbfx(TCGv var, int shift, int width) +{ + uint32_t signbit; + + if (shift) + tcg_gen_sari_i32(var, var, shift); + if (shift + width < 32) { + signbit = 1u << (width - 1); + tcg_gen_andi_i32(var, var, (1u << width) - 1); + tcg_gen_xori_i32(var, var, signbit); + tcg_gen_subi_i32(var, var, signbit); + } +} + +/* Bitfield insertion. Insert val into base. Clobbers base and val. */ +static void gen_bfi(TCGv dest, TCGv base, TCGv val, int shift, uint32_t mask) +{ + tcg_gen_andi_i32(val, val, mask); + tcg_gen_shli_i32(val, val, shift); + tcg_gen_andi_i32(base, base, ~(mask << shift)); + tcg_gen_or_i32(dest, base, val); +} + +/* Round the top 32 bits of a 64-bit value. */ +static void gen_roundqd(TCGv a, TCGv b) +{ + tcg_gen_shri_i32(a, a, 31); + tcg_gen_add_i32(a, a, b); +} + +/* FIXME: Most targets have native widening multiplication. + It would be good to use that instead of a full wide multiply. */ +/* 32x32->64 multiply. Marks inputs as dead. */ +static TCGv_i64 gen_mulu_i64_i32(TCGv a, TCGv b) +{ + TCGv_i64 tmp1 = tcg_temp_new_i64(); + TCGv_i64 tmp2 = tcg_temp_new_i64(); + + tcg_gen_extu_i32_i64(tmp1, a); + dead_tmp(a); + tcg_gen_extu_i32_i64(tmp2, b); + dead_tmp(b); + tcg_gen_mul_i64(tmp1, tmp1, tmp2); + tcg_temp_free_i64(tmp2); + return tmp1; +} + +static TCGv_i64 gen_muls_i64_i32(TCGv a, TCGv b) +{ + TCGv_i64 tmp1 = tcg_temp_new_i64(); + TCGv_i64 tmp2 = tcg_temp_new_i64(); + + tcg_gen_ext_i32_i64(tmp1, a); + dead_tmp(a); + tcg_gen_ext_i32_i64(tmp2, b); + dead_tmp(b); + tcg_gen_mul_i64(tmp1, tmp1, tmp2); + tcg_temp_free_i64(tmp2); + return tmp1; +} + +/* Signed 32x32->64 multiply. */ +static void gen_imull(TCGv a, TCGv b) +{ + TCGv_i64 tmp1 = tcg_temp_new_i64(); + TCGv_i64 tmp2 = tcg_temp_new_i64(); + + tcg_gen_ext_i32_i64(tmp1, a); + tcg_gen_ext_i32_i64(tmp2, b); + tcg_gen_mul_i64(tmp1, tmp1, tmp2); + tcg_temp_free_i64(tmp2); + tcg_gen_trunc_i64_i32(a, tmp1); + tcg_gen_shri_i64(tmp1, tmp1, 32); + tcg_gen_trunc_i64_i32(b, tmp1); + tcg_temp_free_i64(tmp1); +} + +/* Swap low and high halfwords. */ +static void gen_swap_half(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 16); + tcg_gen_shli_i32(var, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Dual 16-bit add. Result placed in t0 and t1 is marked as dead. + tmp = (t0 ^ t1) & 0x8000; + t0 &= ~0x8000; + t1 &= ~0x8000; + t0 = (t0 + t1) ^ tmp; + */ + +static void gen_add16(TCGv t0, TCGv t1) +{ + TCGv tmp = new_tmp(); + tcg_gen_xor_i32(tmp, t0, t1); + tcg_gen_andi_i32(tmp, tmp, 0x8000); + tcg_gen_andi_i32(t0, t0, ~0x8000); + tcg_gen_andi_i32(t1, t1, ~0x8000); + tcg_gen_add_i32(t0, t0, t1); + tcg_gen_xor_i32(t0, t0, tmp); + dead_tmp(tmp); + dead_tmp(t1); +} + +#define gen_set_CF(var) tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, CF)) + +/* Set CF to the top bit of var. */ +static void gen_set_CF_bit31(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_shri_i32(tmp, var, 31); + gen_set_CF(tmp); + dead_tmp(tmp); +} + +/* Set N and Z flags from var. */ +static inline void gen_logic_CC(TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, NF)); + tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, ZF)); +} + +/* T0 += T1 + CF. */ +static void gen_adc(TCGv t0, TCGv t1) +{ + TCGv tmp; + tcg_gen_add_i32(t0, t0, t1); + tmp = load_cpu_field(CF); + tcg_gen_add_i32(t0, t0, tmp); + dead_tmp(tmp); +} + +/* dest = T0 + T1 + CF. */ +static void gen_add_carry(TCGv dest, TCGv t0, TCGv t1) +{ + TCGv tmp; + tcg_gen_add_i32(dest, t0, t1); + tmp = load_cpu_field(CF); + tcg_gen_add_i32(dest, dest, tmp); + dead_tmp(tmp); +} + +/* dest = T0 - T1 + CF - 1. */ +static void gen_sub_carry(TCGv dest, TCGv t0, TCGv t1) +{ + TCGv tmp; + tcg_gen_sub_i32(dest, t0, t1); + tmp = load_cpu_field(CF); + tcg_gen_add_i32(dest, dest, tmp); + tcg_gen_subi_i32(dest, dest, 1); + dead_tmp(tmp); +} + +/* FIXME: Implement this natively. */ +#define tcg_gen_abs_i32(t0, t1) gen_helper_abs(t0, t1) + +static void shifter_out_im(TCGv var, int shift) +{ + TCGv tmp = new_tmp(); + if (shift == 0) { + tcg_gen_andi_i32(tmp, var, 1); + } else { + tcg_gen_shri_i32(tmp, var, shift); + if (shift != 31) + tcg_gen_andi_i32(tmp, tmp, 1); + } + gen_set_CF(tmp); + dead_tmp(tmp); +} + +/* Shift by immediate. Includes special handling for shift == 0. */ +static inline void gen_arm_shift_im(TCGv var, int shiftop, int shift, int flags) +{ + switch (shiftop) { + case 0: /* LSL */ + if (shift != 0) { + if (flags) + shifter_out_im(var, 32 - shift); + tcg_gen_shli_i32(var, var, shift); + } + break; + case 1: /* LSR */ + if (shift == 0) { + if (flags) { + tcg_gen_shri_i32(var, var, 31); + gen_set_CF(var); + } + tcg_gen_movi_i32(var, 0); + } else { + if (flags) + shifter_out_im(var, shift - 1); + tcg_gen_shri_i32(var, var, shift); + } + break; + case 2: /* ASR */ + if (shift == 0) + shift = 32; + if (flags) + shifter_out_im(var, shift - 1); + if (shift == 32) + shift = 31; + tcg_gen_sari_i32(var, var, shift); + break; + case 3: /* ROR/RRX */ + if (shift != 0) { + if (flags) + shifter_out_im(var, shift - 1); + tcg_gen_rotri_i32(var, var, shift); break; + } else { + TCGv tmp = load_cpu_field(CF); + if (flags) + shifter_out_im(var, 0); + tcg_gen_shri_i32(var, var, 1); + tcg_gen_shli_i32(tmp, tmp, 31); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); + } + } +}; + +static inline void gen_arm_shift_reg(TCGv var, int shiftop, + TCGv shift, int flags) +{ + if (flags) { + switch (shiftop) { + case 0: gen_helper_shl_cc(var, var, shift); break; + case 1: gen_helper_shr_cc(var, var, shift); break; + case 2: gen_helper_sar_cc(var, var, shift); break; + case 3: gen_helper_ror_cc(var, var, shift); break; + } + } else { + switch (shiftop) { + case 0: gen_helper_shl(var, var, shift); break; + case 1: gen_helper_shr(var, var, shift); break; + case 2: gen_helper_sar(var, var, shift); break; + case 3: tcg_gen_andi_i32(shift, shift, 0x1f); + tcg_gen_rotr_i32(var, var, shift); break; + } + } + dead_tmp(shift); +} + +#define PAS_OP(pfx) \ + switch (op2) { \ + case 0: gen_pas_helper(glue(pfx,add16)); break; \ + case 1: gen_pas_helper(glue(pfx,addsubx)); break; \ + case 2: gen_pas_helper(glue(pfx,subaddx)); break; \ + case 3: gen_pas_helper(glue(pfx,sub16)); break; \ + case 4: gen_pas_helper(glue(pfx,add8)); break; \ + case 7: gen_pas_helper(glue(pfx,sub8)); break; \ + } +static void gen_arm_parallel_addsub(int op1, int op2, TCGv a, TCGv b) +{ + TCGv_ptr tmp; + + switch (op1) { +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b, tmp) + case 1: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(s) + tcg_temp_free_ptr(tmp); + break; + case 5: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(u) + tcg_temp_free_ptr(tmp); + break; +#undef gen_pas_helper +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b) + case 2: + PAS_OP(q); + break; + case 3: + PAS_OP(sh); + break; + case 6: + PAS_OP(uq); + break; + case 7: + PAS_OP(uh); + break; +#undef gen_pas_helper + } +} +#undef PAS_OP + +/* For unknown reasons Arm and Thumb-2 use arbitrarily different encodings. */ +#define PAS_OP(pfx) \ + switch (op2) { \ + case 0: gen_pas_helper(glue(pfx,add8)); break; \ + case 1: gen_pas_helper(glue(pfx,add16)); break; \ + case 2: gen_pas_helper(glue(pfx,addsubx)); break; \ + case 4: gen_pas_helper(glue(pfx,sub8)); break; \ + case 5: gen_pas_helper(glue(pfx,sub16)); break; \ + case 6: gen_pas_helper(glue(pfx,subaddx)); break; \ + } +static void gen_thumb2_parallel_addsub(int op1, int op2, TCGv a, TCGv b) +{ + TCGv_ptr tmp; + + switch (op1) { +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b, tmp) + case 0: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(s) + tcg_temp_free_ptr(tmp); + break; + case 4: + tmp = tcg_temp_new_ptr(); + tcg_gen_addi_ptr(tmp, cpu_env, offsetof(CPUState, GE)); + PAS_OP(u) + tcg_temp_free_ptr(tmp); + break; +#undef gen_pas_helper +#define gen_pas_helper(name) glue(gen_helper_,name)(a, a, b) + case 1: + PAS_OP(q); + break; + case 2: + PAS_OP(sh); + break; + case 5: + PAS_OP(uq); + break; + case 6: + PAS_OP(uh); + break; +#undef gen_pas_helper + } +} +#undef PAS_OP + +static void gen_test_cc(int cc, int label) +{ + TCGv tmp; + TCGv tmp2; + int inv; + + switch (cc) { + case 0: /* eq: Z */ + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + break; + case 1: /* ne: !Z */ + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, label); + break; + case 2: /* cs: C */ + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, label); + break; + case 3: /* cc: !C */ + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + break; + case 4: /* mi: N */ + tmp = load_cpu_field(NF); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + case 5: /* pl: !N */ + tmp = load_cpu_field(NF); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + break; + case 6: /* vs: V */ + tmp = load_cpu_field(VF); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + case 7: /* vc: !V */ + tmp = load_cpu_field(VF); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + break; + case 8: /* hi: C && !Z */ + inv = gen_new_label(); + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, inv); + dead_tmp(tmp); + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, label); + gen_set_label(inv); + break; + case 9: /* ls: !C || Z */ + tmp = load_cpu_field(CF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + dead_tmp(tmp); + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + break; + case 10: /* ge: N == V -> N ^ V == 0 */ + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + break; + case 11: /* lt: N != V -> N ^ V != 0 */ + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + case 12: /* gt: !Z && N == V */ + inv = gen_new_label(); + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, inv); + dead_tmp(tmp); + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_GE, tmp, 0, label); + gen_set_label(inv); + break; + case 13: /* le: Z || N != V */ + tmp = load_cpu_field(ZF); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, label); + dead_tmp(tmp); + tmp = load_cpu_field(VF); + tmp2 = load_cpu_field(NF); + tcg_gen_xor_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label); + break; + default: + fprintf(stderr, "Bad condition code 0x%x\n", cc); + abort(); + } + dead_tmp(tmp); +} + +static const uint8_t table_logic_cc[16] = { + 1, /* and */ + 1, /* xor */ + 0, /* sub */ + 0, /* rsb */ + 0, /* add */ + 0, /* adc */ + 0, /* sbc */ + 0, /* rsc */ + 1, /* andl */ + 1, /* xorl */ + 0, /* cmp */ + 0, /* cmn */ + 1, /* orr */ + 1, /* mov */ + 1, /* bic */ + 1, /* mvn */ +}; + +/* Set PC and Thumb state from an immediate address. */ +static inline void gen_bx_im(DisasContext *s, uint32_t addr) +{ + TCGv tmp; + + s->is_jmp = DISAS_UPDATE; + if (s->thumb != (addr & 1)) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, addr & 1); + tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUState, thumb)); + dead_tmp(tmp); + } + tcg_gen_movi_i32(cpu_R[15], addr & ~1); +} + +/* Set PC and Thumb state from var. var is marked as dead. */ +static inline void gen_bx(DisasContext *s, TCGv var) +{ + s->is_jmp = DISAS_UPDATE; + tcg_gen_andi_i32(cpu_R[15], var, ~1); + tcg_gen_andi_i32(var, var, 1); + store_cpu_field(var, thumb); +} + +/* Variant of store_reg which uses branch&exchange logic when storing + to r15 in ARM architecture v7 and above. The source must be a temporary + and will be marked as dead. */ +static inline void store_reg_bx(CPUState *env, DisasContext *s, + int reg, TCGv var) +{ + if (reg == 15 && ENABLE_ARCH_7) { + gen_bx(s, var); + } else { + store_reg(s, reg, var); + } +} + +static inline TCGv gen_ld8s(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld8s(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld8u(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld8u(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld16s(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld16s(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld16u(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld16u(tmp, addr, index); + return tmp; +} +static inline TCGv gen_ld32(TCGv addr, int index) +{ + TCGv tmp = new_tmp(); + tcg_gen_qemu_ld32u(tmp, addr, index); + return tmp; +} +static inline TCGv_i64 gen_ld64(TCGv addr, int index) +{ + TCGv_i64 tmp = tcg_temp_new_i64(); + tcg_gen_qemu_ld64(tmp, addr, index); + return tmp; +} +static inline void gen_st8(TCGv val, TCGv addr, int index) +{ + tcg_gen_qemu_st8(val, addr, index); + dead_tmp(val); +} +static inline void gen_st16(TCGv val, TCGv addr, int index) +{ + tcg_gen_qemu_st16(val, addr, index); + dead_tmp(val); +} +static inline void gen_st32(TCGv val, TCGv addr, int index) +{ + tcg_gen_qemu_st32(val, addr, index); + dead_tmp(val); +} +static inline void gen_st64(TCGv_i64 val, TCGv addr, int index) +{ + tcg_gen_qemu_st64(val, addr, index); + tcg_temp_free_i64(val); +} + +static inline void gen_set_pc_im(uint32_t val) +{ + tcg_gen_movi_i32(cpu_R[15], val); +} + +/* Force a TB lookup after an instruction that changes the CPU state. */ +static inline void gen_lookup_tb(DisasContext *s) +{ + tcg_gen_movi_i32(cpu_R[15], s->pc & ~1); + s->is_jmp = DISAS_UPDATE; +} + +static inline void gen_add_data_offset(DisasContext *s, unsigned int insn, + TCGv var) +{ + int val, rm, shift, shiftop; + TCGv offset; + + if (!(insn & (1 << 25))) { + /* immediate */ + val = insn & 0xfff; + if (!(insn & (1 << 23))) + val = -val; + if (val != 0) + tcg_gen_addi_i32(var, var, val); + } else { + /* shift/register */ + rm = (insn) & 0xf; + shift = (insn >> 7) & 0x1f; + shiftop = (insn >> 5) & 3; + offset = load_reg(s, rm); + gen_arm_shift_im(offset, shiftop, shift, 0); + if (!(insn & (1 << 23))) + tcg_gen_sub_i32(var, var, offset); + else + tcg_gen_add_i32(var, var, offset); + dead_tmp(offset); + } +} + +static inline void gen_add_datah_offset(DisasContext *s, unsigned int insn, + int extra, TCGv var) +{ + int val, rm; + TCGv offset; + + if (insn & (1 << 22)) { + /* immediate */ + val = (insn & 0xf) | ((insn >> 4) & 0xf0); + if (!(insn & (1 << 23))) + val = -val; + val += extra; + if (val != 0) + tcg_gen_addi_i32(var, var, val); + } else { + /* register */ + if (extra) + tcg_gen_addi_i32(var, var, extra); + rm = (insn) & 0xf; + offset = load_reg(s, rm); + if (!(insn & (1 << 23))) + tcg_gen_sub_i32(var, var, offset); + else + tcg_gen_add_i32(var, var, offset); + dead_tmp(offset); + } +} + +#define VFP_OP2(name) \ +static inline void gen_vfp_##name(int dp) \ +{ \ + if (dp) \ + gen_helper_vfp_##name##d(cpu_F0d, cpu_F0d, cpu_F1d, cpu_env); \ + else \ + gen_helper_vfp_##name##s(cpu_F0s, cpu_F0s, cpu_F1s, cpu_env); \ +} + +VFP_OP2(add) +VFP_OP2(sub) +VFP_OP2(mul) +VFP_OP2(div) + +#undef VFP_OP2 + +static inline void gen_vfp_abs(int dp) +{ + if (dp) + gen_helper_vfp_absd(cpu_F0d, cpu_F0d); + else + gen_helper_vfp_abss(cpu_F0s, cpu_F0s); +} + +static inline void gen_vfp_neg(int dp) +{ + if (dp) + gen_helper_vfp_negd(cpu_F0d, cpu_F0d); + else + gen_helper_vfp_negs(cpu_F0s, cpu_F0s); +} + +static inline void gen_vfp_sqrt(int dp) +{ + if (dp) + gen_helper_vfp_sqrtd(cpu_F0d, cpu_F0d, cpu_env); + else + gen_helper_vfp_sqrts(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_cmp(int dp) +{ + if (dp) + gen_helper_vfp_cmpd(cpu_F0d, cpu_F1d, cpu_env); + else + gen_helper_vfp_cmps(cpu_F0s, cpu_F1s, cpu_env); +} + +static inline void gen_vfp_cmpe(int dp) +{ + if (dp) + gen_helper_vfp_cmped(cpu_F0d, cpu_F1d, cpu_env); + else + gen_helper_vfp_cmpes(cpu_F0s, cpu_F1s, cpu_env); +} + +static inline void gen_vfp_F1_ld0(int dp) +{ + if (dp) + tcg_gen_movi_i64(cpu_F1d, 0); + else + tcg_gen_movi_i32(cpu_F1s, 0); +} + +static inline void gen_vfp_uito(int dp) +{ + if (dp) + gen_helper_vfp_uitod(cpu_F0d, cpu_F0s, cpu_env); + else + gen_helper_vfp_uitos(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_sito(int dp) +{ + if (dp) + gen_helper_vfp_sitod(cpu_F0d, cpu_F0s, cpu_env); + else + gen_helper_vfp_sitos(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_toui(int dp) +{ + if (dp) + gen_helper_vfp_touid(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_touis(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_touiz(int dp) +{ + if (dp) + gen_helper_vfp_touizd(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_touizs(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_tosi(int dp) +{ + if (dp) + gen_helper_vfp_tosid(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_tosis(cpu_F0s, cpu_F0s, cpu_env); +} + +static inline void gen_vfp_tosiz(int dp) +{ + if (dp) + gen_helper_vfp_tosizd(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_tosizs(cpu_F0s, cpu_F0s, cpu_env); +} + +#define VFP_GEN_FIX(name) \ +static inline void gen_vfp_##name(int dp, int shift) \ +{ \ + TCGv tmp_shift = tcg_const_i32(shift); \ + if (dp) \ + gen_helper_vfp_##name##d(cpu_F0d, cpu_F0d, tmp_shift, cpu_env);\ + else \ + gen_helper_vfp_##name##s(cpu_F0s, cpu_F0s, tmp_shift, cpu_env);\ + tcg_temp_free_i32(tmp_shift); \ +} +VFP_GEN_FIX(tosh) +VFP_GEN_FIX(tosl) +VFP_GEN_FIX(touh) +VFP_GEN_FIX(toul) +VFP_GEN_FIX(shto) +VFP_GEN_FIX(slto) +VFP_GEN_FIX(uhto) +VFP_GEN_FIX(ulto) +#undef VFP_GEN_FIX + +static inline void gen_vfp_ld(DisasContext *s, int dp, TCGv addr) +{ + if (dp) + tcg_gen_qemu_ld64(cpu_F0d, addr, IS_USER(s)); + else + tcg_gen_qemu_ld32u(cpu_F0s, addr, IS_USER(s)); +} + +static inline void gen_vfp_st(DisasContext *s, int dp, TCGv addr) +{ + if (dp) + tcg_gen_qemu_st64(cpu_F0d, addr, IS_USER(s)); + else + tcg_gen_qemu_st32(cpu_F0s, addr, IS_USER(s)); +} + +static inline long +vfp_reg_offset (int dp, int reg) +{ + if (dp) + return offsetof(CPUARMState, vfp.regs[reg]); + else if (reg & 1) { + return offsetof(CPUARMState, vfp.regs[reg >> 1]) + + offsetof(CPU_DoubleU, l.upper); + } else { + return offsetof(CPUARMState, vfp.regs[reg >> 1]) + + offsetof(CPU_DoubleU, l.lower); + } +} + +/* Return the offset of a 32-bit piece of a NEON register. + zero is the least significant end of the register. */ +static inline long +neon_reg_offset (int reg, int n) +{ + int sreg; + sreg = reg * 2 + n; + return vfp_reg_offset(0, sreg); +} + +static TCGv neon_load_reg(int reg, int pass) +{ + TCGv tmp = new_tmp(); + tcg_gen_ld_i32(tmp, cpu_env, neon_reg_offset(reg, pass)); + return tmp; +} + +static void neon_store_reg(int reg, int pass, TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, neon_reg_offset(reg, pass)); + dead_tmp(var); +} + +static inline void neon_load_reg64(TCGv_i64 var, int reg) +{ + tcg_gen_ld_i64(var, cpu_env, vfp_reg_offset(1, reg)); +} + +static inline void neon_store_reg64(TCGv_i64 var, int reg) +{ + tcg_gen_st_i64(var, cpu_env, vfp_reg_offset(1, reg)); +} + +#define tcg_gen_ld_f32 tcg_gen_ld_i32 +#define tcg_gen_ld_f64 tcg_gen_ld_i64 +#define tcg_gen_st_f32 tcg_gen_st_i32 +#define tcg_gen_st_f64 tcg_gen_st_i64 + +static inline void gen_mov_F0_vreg(int dp, int reg) +{ + if (dp) + tcg_gen_ld_f64(cpu_F0d, cpu_env, vfp_reg_offset(dp, reg)); + else + tcg_gen_ld_f32(cpu_F0s, cpu_env, vfp_reg_offset(dp, reg)); +} + +static inline void gen_mov_F1_vreg(int dp, int reg) +{ + if (dp) + tcg_gen_ld_f64(cpu_F1d, cpu_env, vfp_reg_offset(dp, reg)); + else + tcg_gen_ld_f32(cpu_F1s, cpu_env, vfp_reg_offset(dp, reg)); +} + +static inline void gen_mov_vreg_F0(int dp, int reg) +{ + if (dp) + tcg_gen_st_f64(cpu_F0d, cpu_env, vfp_reg_offset(dp, reg)); + else + tcg_gen_st_f32(cpu_F0s, cpu_env, vfp_reg_offset(dp, reg)); +} + +#define ARM_CP_RW_BIT (1 << 20) + +static inline void iwmmxt_load_reg(TCGv_i64 var, int reg) +{ + tcg_gen_ld_i64(var, cpu_env, offsetof(CPUState, iwmmxt.regs[reg])); +} + +static inline void iwmmxt_store_reg(TCGv_i64 var, int reg) +{ + tcg_gen_st_i64(var, cpu_env, offsetof(CPUState, iwmmxt.regs[reg])); +} + +static inline TCGv iwmmxt_load_creg(int reg) +{ + TCGv var = new_tmp(); + tcg_gen_ld_i32(var, cpu_env, offsetof(CPUState, iwmmxt.cregs[reg])); + return var; +} + +static inline void iwmmxt_store_creg(int reg, TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, offsetof(CPUState, iwmmxt.cregs[reg])); +} + +static inline void gen_op_iwmmxt_movq_wRn_M0(int rn) +{ + iwmmxt_store_reg(cpu_M0, rn); +} + +static inline void gen_op_iwmmxt_movq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_M0, rn); +} + +static inline void gen_op_iwmmxt_orq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_or_i64(cpu_M0, cpu_M0, cpu_V1); +} + +static inline void gen_op_iwmmxt_andq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_and_i64(cpu_M0, cpu_M0, cpu_V1); +} + +static inline void gen_op_iwmmxt_xorq_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_xor_i64(cpu_M0, cpu_M0, cpu_V1); +} + +#define IWMMXT_OP(name) \ +static inline void gen_op_iwmmxt_##name##_M0_wRn(int rn) \ +{ \ + iwmmxt_load_reg(cpu_V1, rn); \ + gen_helper_iwmmxt_##name(cpu_M0, cpu_M0, cpu_V1); \ +} + +#define IWMMXT_OP_ENV(name) \ +static inline void gen_op_iwmmxt_##name##_M0_wRn(int rn) \ +{ \ + iwmmxt_load_reg(cpu_V1, rn); \ + gen_helper_iwmmxt_##name(cpu_M0, cpu_env, cpu_M0, cpu_V1); \ +} + +#define IWMMXT_OP_ENV_SIZE(name) \ +IWMMXT_OP_ENV(name##b) \ +IWMMXT_OP_ENV(name##w) \ +IWMMXT_OP_ENV(name##l) + +#define IWMMXT_OP_ENV1(name) \ +static inline void gen_op_iwmmxt_##name##_M0(void) \ +{ \ + gen_helper_iwmmxt_##name(cpu_M0, cpu_env, cpu_M0); \ +} + +IWMMXT_OP(maddsq) +IWMMXT_OP(madduq) +IWMMXT_OP(sadb) +IWMMXT_OP(sadw) +IWMMXT_OP(mulslw) +IWMMXT_OP(mulshw) +IWMMXT_OP(mululw) +IWMMXT_OP(muluhw) +IWMMXT_OP(macsw) +IWMMXT_OP(macuw) + +IWMMXT_OP_ENV_SIZE(unpackl) +IWMMXT_OP_ENV_SIZE(unpackh) + +IWMMXT_OP_ENV1(unpacklub) +IWMMXT_OP_ENV1(unpackluw) +IWMMXT_OP_ENV1(unpacklul) +IWMMXT_OP_ENV1(unpackhub) +IWMMXT_OP_ENV1(unpackhuw) +IWMMXT_OP_ENV1(unpackhul) +IWMMXT_OP_ENV1(unpacklsb) +IWMMXT_OP_ENV1(unpacklsw) +IWMMXT_OP_ENV1(unpacklsl) +IWMMXT_OP_ENV1(unpackhsb) +IWMMXT_OP_ENV1(unpackhsw) +IWMMXT_OP_ENV1(unpackhsl) + +IWMMXT_OP_ENV_SIZE(cmpeq) +IWMMXT_OP_ENV_SIZE(cmpgtu) +IWMMXT_OP_ENV_SIZE(cmpgts) + +IWMMXT_OP_ENV_SIZE(mins) +IWMMXT_OP_ENV_SIZE(minu) +IWMMXT_OP_ENV_SIZE(maxs) +IWMMXT_OP_ENV_SIZE(maxu) + +IWMMXT_OP_ENV_SIZE(subn) +IWMMXT_OP_ENV_SIZE(addn) +IWMMXT_OP_ENV_SIZE(subu) +IWMMXT_OP_ENV_SIZE(addu) +IWMMXT_OP_ENV_SIZE(subs) +IWMMXT_OP_ENV_SIZE(adds) + +IWMMXT_OP_ENV(avgb0) +IWMMXT_OP_ENV(avgb1) +IWMMXT_OP_ENV(avgw0) +IWMMXT_OP_ENV(avgw1) + +IWMMXT_OP(msadb) + +IWMMXT_OP_ENV(packuw) +IWMMXT_OP_ENV(packul) +IWMMXT_OP_ENV(packuq) +IWMMXT_OP_ENV(packsw) +IWMMXT_OP_ENV(packsl) +IWMMXT_OP_ENV(packsq) + +static void gen_op_iwmmxt_set_mup(void) +{ + TCGv tmp; + tmp = load_cpu_field(iwmmxt.cregs[ARM_IWMMXT_wCon]); + tcg_gen_ori_i32(tmp, tmp, 2); + store_cpu_field(tmp, iwmmxt.cregs[ARM_IWMMXT_wCon]); +} + +static void gen_op_iwmmxt_set_cup(void) +{ + TCGv tmp; + tmp = load_cpu_field(iwmmxt.cregs[ARM_IWMMXT_wCon]); + tcg_gen_ori_i32(tmp, tmp, 1); + store_cpu_field(tmp, iwmmxt.cregs[ARM_IWMMXT_wCon]); +} + +static void gen_op_iwmmxt_setpsr_nz(void) +{ + TCGv tmp = new_tmp(); + gen_helper_iwmmxt_setpsr_nz(tmp, cpu_M0); + store_cpu_field(tmp, iwmmxt.cregs[ARM_IWMMXT_wCASF]); +} + +static inline void gen_op_iwmmxt_addl_M0_wRn(int rn) +{ + iwmmxt_load_reg(cpu_V1, rn); + tcg_gen_ext32u_i64(cpu_V1, cpu_V1); + tcg_gen_add_i64(cpu_M0, cpu_M0, cpu_V1); +} + +static inline int gen_iwmmxt_address(DisasContext *s, uint32_t insn, TCGv dest) +{ + int rd; + uint32_t offset; + TCGv tmp; + + rd = (insn >> 16) & 0xf; + tmp = load_reg(s, rd); + + offset = (insn & 0xff) << ((insn >> 7) & 2); + if (insn & (1 << 24)) { + /* Pre indexed */ + if (insn & (1 << 23)) + tcg_gen_addi_i32(tmp, tmp, offset); + else + tcg_gen_addi_i32(tmp, tmp, -offset); + tcg_gen_mov_i32(dest, tmp); + if (insn & (1 << 21)) + store_reg(s, rd, tmp); + else + dead_tmp(tmp); + } else if (insn & (1 << 21)) { + /* Post indexed */ + tcg_gen_mov_i32(dest, tmp); + if (insn & (1 << 23)) + tcg_gen_addi_i32(tmp, tmp, offset); + else + tcg_gen_addi_i32(tmp, tmp, -offset); + store_reg(s, rd, tmp); + } else if (!(insn & (1 << 23))) + return 1; + return 0; +} + +static inline int gen_iwmmxt_shift(uint32_t insn, uint32_t mask, TCGv dest) +{ + int rd = (insn >> 0) & 0xf; + TCGv tmp; + + if (insn & (1 << 8)) { + if (rd < ARM_IWMMXT_wCGR0 || rd > ARM_IWMMXT_wCGR3) { + return 1; + } else { + tmp = iwmmxt_load_creg(rd); + } + } else { + tmp = new_tmp(); + iwmmxt_load_reg(cpu_V0, rd); + tcg_gen_trunc_i64_i32(tmp, cpu_V0); + } + tcg_gen_andi_i32(tmp, tmp, mask); + tcg_gen_mov_i32(dest, tmp); + dead_tmp(tmp); + return 0; +} + +/* Disassemble an iwMMXt instruction. Returns nonzero if an error occured + (ie. an undefined instruction). */ +static int disas_iwmmxt_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + int rd, wrd; + int rdhi, rdlo, rd0, rd1, i; + TCGv addr; + TCGv tmp, tmp2, tmp3; + + if ((insn & 0x0e000e00) == 0x0c000000) { + if ((insn & 0x0fe00ff0) == 0x0c400000) { + wrd = insn & 0xf; + rdlo = (insn >> 12) & 0xf; + rdhi = (insn >> 16) & 0xf; + if (insn & ARM_CP_RW_BIT) { /* TMRRC */ + iwmmxt_load_reg(cpu_V0, wrd); + tcg_gen_trunc_i64_i32(cpu_R[rdlo], cpu_V0); + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(cpu_R[rdhi], cpu_V0); + } else { /* TMCRR */ + tcg_gen_concat_i32_i64(cpu_V0, cpu_R[rdlo], cpu_R[rdhi]); + iwmmxt_store_reg(cpu_V0, wrd); + gen_op_iwmmxt_set_mup(); + } + return 0; + } + + wrd = (insn >> 12) & 0xf; + addr = new_tmp(); + if (gen_iwmmxt_address(s, insn, addr)) { + dead_tmp(addr); + return 1; + } + if (insn & ARM_CP_RW_BIT) { + if ((insn >> 28) == 0xf) { /* WLDRW wCx */ + tmp = new_tmp(); + tcg_gen_qemu_ld32u(tmp, addr, IS_USER(s)); + iwmmxt_store_creg(wrd, tmp); + } else { + i = 1; + if (insn & (1 << 8)) { + if (insn & (1 << 22)) { /* WLDRD */ + tcg_gen_qemu_ld64(cpu_M0, addr, IS_USER(s)); + i = 0; + } else { /* WLDRW wRd */ + tmp = gen_ld32(addr, IS_USER(s)); + } + } else { + if (insn & (1 << 22)) { /* WLDRH */ + tmp = gen_ld16u(addr, IS_USER(s)); + } else { /* WLDRB */ + tmp = gen_ld8u(addr, IS_USER(s)); + } + } + if (i) { + tcg_gen_extu_i32_i64(cpu_M0, tmp); + dead_tmp(tmp); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + } + } else { + if ((insn >> 28) == 0xf) { /* WSTRW wCx */ + tmp = iwmmxt_load_creg(wrd); + gen_st32(tmp, addr, IS_USER(s)); + } else { + gen_op_iwmmxt_movq_M0_wRn(wrd); + tmp = new_tmp(); + if (insn & (1 << 8)) { + if (insn & (1 << 22)) { /* WSTRD */ + dead_tmp(tmp); + tcg_gen_qemu_st64(cpu_M0, addr, IS_USER(s)); + } else { /* WSTRW wRd */ + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + gen_st32(tmp, addr, IS_USER(s)); + } + } else { + if (insn & (1 << 22)) { /* WSTRH */ + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + gen_st16(tmp, addr, IS_USER(s)); + } else { /* WSTRB */ + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + gen_st8(tmp, addr, IS_USER(s)); + } + } + } + } + return 0; + } + + if ((insn & 0x0f000000) != 0x0e000000) + return 1; + + switch (((insn >> 12) & 0xf00) | ((insn >> 4) & 0xff)) { + case 0x000: /* WOR */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + gen_op_iwmmxt_orq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x011: /* TMCR */ + if (insn & 0xf) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + switch (wrd) { + case ARM_IWMMXT_wCID: + case ARM_IWMMXT_wCASF: + break; + case ARM_IWMMXT_wCon: + gen_op_iwmmxt_set_cup(); + /* Fall through. */ + case ARM_IWMMXT_wCSSF: + tmp = iwmmxt_load_creg(wrd); + tmp2 = load_reg(s, rd); + tcg_gen_andc_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + iwmmxt_store_creg(wrd, tmp); + break; + case ARM_IWMMXT_wCGR0: + case ARM_IWMMXT_wCGR1: + case ARM_IWMMXT_wCGR2: + case ARM_IWMMXT_wCGR3: + gen_op_iwmmxt_set_cup(); + tmp = load_reg(s, rd); + iwmmxt_store_creg(wrd, tmp); + break; + default: + return 1; + } + break; + case 0x100: /* WXOR */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + gen_op_iwmmxt_xorq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x111: /* TMRC */ + if (insn & 0xf) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + tmp = iwmmxt_load_creg(wrd); + store_reg(s, rd, tmp); + break; + case 0x300: /* WANDN */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tcg_gen_neg_i64(cpu_M0, cpu_M0); + gen_op_iwmmxt_andq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x200: /* WAND */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + gen_op_iwmmxt_andq_M0_wRn(rd1); + gen_op_iwmmxt_setpsr_nz(); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x810: case 0xa10: /* WMADD */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 0) & 0xf; + rd1 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 21)) + gen_op_iwmmxt_maddsq_M0_wRn(rd1); + else + gen_op_iwmmxt_madduq_M0_wRn(rd1); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x10e: case 0x50e: case 0x90e: case 0xd0e: /* WUNPCKIL */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_op_iwmmxt_unpacklb_M0_wRn(rd1); + break; + case 1: + gen_op_iwmmxt_unpacklw_M0_wRn(rd1); + break; + case 2: + gen_op_iwmmxt_unpackll_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x10c: case 0x50c: case 0x90c: case 0xd0c: /* WUNPCKIH */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_op_iwmmxt_unpackhb_M0_wRn(rd1); + break; + case 1: + gen_op_iwmmxt_unpackhw_M0_wRn(rd1); + break; + case 2: + gen_op_iwmmxt_unpackhl_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x012: case 0x112: case 0x412: case 0x512: /* WSAD */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 22)) + gen_op_iwmmxt_sadw_M0_wRn(rd1); + else + gen_op_iwmmxt_sadb_M0_wRn(rd1); + if (!(insn & (1 << 20))) + gen_op_iwmmxt_addl_M0_wRn(wrd); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x010: case 0x110: case 0x210: case 0x310: /* WMUL */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 21)) { + if (insn & (1 << 20)) + gen_op_iwmmxt_mulshw_M0_wRn(rd1); + else + gen_op_iwmmxt_mulslw_M0_wRn(rd1); + } else { + if (insn & (1 << 20)) + gen_op_iwmmxt_muluhw_M0_wRn(rd1); + else + gen_op_iwmmxt_mululw_M0_wRn(rd1); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x410: case 0x510: case 0x610: case 0x710: /* WMAC */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 21)) + gen_op_iwmmxt_macsw_M0_wRn(rd1); + else + gen_op_iwmmxt_macuw_M0_wRn(rd1); + if (!(insn & (1 << 20))) { + iwmmxt_load_reg(cpu_V1, wrd); + tcg_gen_add_i64(cpu_M0, cpu_M0, cpu_V1); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x006: case 0x406: case 0x806: case 0xc06: /* WCMPEQ */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_op_iwmmxt_cmpeqb_M0_wRn(rd1); + break; + case 1: + gen_op_iwmmxt_cmpeqw_M0_wRn(rd1); + break; + case 2: + gen_op_iwmmxt_cmpeql_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x800: case 0x900: case 0xc00: case 0xd00: /* WAVG2 */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + if (insn & (1 << 22)) { + if (insn & (1 << 20)) + gen_op_iwmmxt_avgw1_M0_wRn(rd1); + else + gen_op_iwmmxt_avgw0_M0_wRn(rd1); + } else { + if (insn & (1 << 20)) + gen_op_iwmmxt_avgb1_M0_wRn(rd1); + else + gen_op_iwmmxt_avgb0_M0_wRn(rd1); + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x802: case 0x902: case 0xa02: case 0xb02: /* WALIGNR */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCGR0 + ((insn >> 20) & 3)); + tcg_gen_andi_i32(tmp, tmp, 7); + iwmmxt_load_reg(cpu_V1, rd1); + gen_helper_iwmmxt_align(cpu_M0, cpu_M0, cpu_V1, tmp); + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x601: case 0x605: case 0x609: case 0x60d: /* TINSR */ + if (((insn >> 6) & 3) == 3) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + tmp = load_reg(s, rd); + gen_op_iwmmxt_movq_M0_wRn(wrd); + switch ((insn >> 6) & 3) { + case 0: + tmp2 = tcg_const_i32(0xff); + tmp3 = tcg_const_i32((insn & 7) << 3); + break; + case 1: + tmp2 = tcg_const_i32(0xffff); + tmp3 = tcg_const_i32((insn & 3) << 4); + break; + case 2: + tmp2 = tcg_const_i32(0xffffffff); + tmp3 = tcg_const_i32((insn & 1) << 5); + break; + default: + TCGV_UNUSED(tmp2); + TCGV_UNUSED(tmp3); + } + gen_helper_iwmmxt_insr(cpu_M0, cpu_M0, tmp, tmp2, tmp3); + tcg_temp_free(tmp3); + tcg_temp_free(tmp2); + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x107: case 0x507: case 0x907: case 0xd07: /* TEXTRM */ + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + if (rd == 15 || ((insn >> 22) & 3) == 3) + return 1; + gen_op_iwmmxt_movq_M0_wRn(wrd); + tmp = new_tmp(); + switch ((insn >> 22) & 3) { + case 0: + tcg_gen_shri_i64(cpu_M0, cpu_M0, (insn & 7) << 3); + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + if (insn & 8) { + tcg_gen_ext8s_i32(tmp, tmp); + } else { + tcg_gen_andi_i32(tmp, tmp, 0xff); + } + break; + case 1: + tcg_gen_shri_i64(cpu_M0, cpu_M0, (insn & 3) << 4); + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + if (insn & 8) { + tcg_gen_ext16s_i32(tmp, tmp); + } else { + tcg_gen_andi_i32(tmp, tmp, 0xffff); + } + break; + case 2: + tcg_gen_shri_i64(cpu_M0, cpu_M0, (insn & 1) << 5); + tcg_gen_trunc_i64_i32(tmp, cpu_M0); + break; + } + store_reg(s, rd, tmp); + break; + case 0x117: case 0x517: case 0x917: case 0xd17: /* TEXTRC */ + if ((insn & 0x000ff008) != 0x0003f000 || ((insn >> 22) & 3) == 3) + return 1; + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCASF); + switch ((insn >> 22) & 3) { + case 0: + tcg_gen_shri_i32(tmp, tmp, ((insn & 7) << 2) + 0); + break; + case 1: + tcg_gen_shri_i32(tmp, tmp, ((insn & 3) << 3) + 4); + break; + case 2: + tcg_gen_shri_i32(tmp, tmp, ((insn & 1) << 4) + 12); + break; + } + tcg_gen_shli_i32(tmp, tmp, 28); + gen_set_nzcv(tmp); + dead_tmp(tmp); + break; + case 0x401: case 0x405: case 0x409: case 0x40d: /* TBCST */ + if (((insn >> 6) & 3) == 3) + return 1; + rd = (insn >> 12) & 0xf; + wrd = (insn >> 16) & 0xf; + tmp = load_reg(s, rd); + switch ((insn >> 6) & 3) { + case 0: + gen_helper_iwmmxt_bcstb(cpu_M0, tmp); + break; + case 1: + gen_helper_iwmmxt_bcstw(cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_bcstl(cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x113: case 0x513: case 0x913: case 0xd13: /* TANDC */ + if ((insn & 0x000ff00f) != 0x0003f000 || ((insn >> 22) & 3) == 3) + return 1; + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCASF); + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + switch ((insn >> 22) & 3) { + case 0: + for (i = 0; i < 7; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 4); + tcg_gen_and_i32(tmp, tmp, tmp2); + } + break; + case 1: + for (i = 0; i < 3; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 8); + tcg_gen_and_i32(tmp, tmp, tmp2); + } + break; + case 2: + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_and_i32(tmp, tmp, tmp2); + break; + } + gen_set_nzcv(tmp); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 0x01c: case 0x41c: case 0x81c: case 0xc1c: /* WACC */ + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + gen_helper_iwmmxt_addcb(cpu_M0, cpu_M0); + break; + case 1: + gen_helper_iwmmxt_addcw(cpu_M0, cpu_M0); + break; + case 2: + gen_helper_iwmmxt_addcl(cpu_M0, cpu_M0); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x115: case 0x515: case 0x915: case 0xd15: /* TORC */ + if ((insn & 0x000ff00f) != 0x0003f000 || ((insn >> 22) & 3) == 3) + return 1; + tmp = iwmmxt_load_creg(ARM_IWMMXT_wCASF); + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + switch ((insn >> 22) & 3) { + case 0: + for (i = 0; i < 7; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 4); + tcg_gen_or_i32(tmp, tmp, tmp2); + } + break; + case 1: + for (i = 0; i < 3; i ++) { + tcg_gen_shli_i32(tmp2, tmp2, 8); + tcg_gen_or_i32(tmp, tmp, tmp2); + } + break; + case 2: + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_or_i32(tmp, tmp, tmp2); + break; + } + gen_set_nzcv(tmp); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 0x103: case 0x503: case 0x903: case 0xd03: /* TMOVMSK */ + rd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + if ((insn & 0xf) != 0 || ((insn >> 22) & 3) == 3) + return 1; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + switch ((insn >> 22) & 3) { + case 0: + gen_helper_iwmmxt_msbb(tmp, cpu_M0); + break; + case 1: + gen_helper_iwmmxt_msbw(tmp, cpu_M0); + break; + case 2: + gen_helper_iwmmxt_msbl(tmp, cpu_M0); + break; + } + store_reg(s, rd, tmp); + break; + case 0x106: case 0x306: case 0x506: case 0x706: /* WCMPGT */ + case 0x906: case 0xb06: case 0xd06: case 0xf06: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_cmpgtsb_M0_wRn(rd1); + else + gen_op_iwmmxt_cmpgtub_M0_wRn(rd1); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_cmpgtsw_M0_wRn(rd1); + else + gen_op_iwmmxt_cmpgtuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_cmpgtsl_M0_wRn(rd1); + else + gen_op_iwmmxt_cmpgtul_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x00e: case 0x20e: case 0x40e: case 0x60e: /* WUNPCKEL */ + case 0x80e: case 0xa0e: case 0xc0e: case 0xe0e: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpacklsb_M0(); + else + gen_op_iwmmxt_unpacklub_M0(); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpacklsw_M0(); + else + gen_op_iwmmxt_unpackluw_M0(); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpacklsl_M0(); + else + gen_op_iwmmxt_unpacklul_M0(); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x00c: case 0x20c: case 0x40c: case 0x60c: /* WUNPCKEH */ + case 0x80c: case 0xa0c: case 0xc0c: case 0xe0c: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpackhsb_M0(); + else + gen_op_iwmmxt_unpackhub_M0(); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpackhsw_M0(); + else + gen_op_iwmmxt_unpackhuw_M0(); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_unpackhsl_M0(); + else + gen_op_iwmmxt_unpackhul_M0(); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x204: case 0x604: case 0xa04: case 0xe04: /* WSRL */ + case 0x214: case 0x614: case 0xa14: case 0xe14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + if (gen_iwmmxt_shift(insn, 0xff, tmp)) { + dead_tmp(tmp); + return 1; + } + switch ((insn >> 22) & 3) { + case 1: + gen_helper_iwmmxt_srlw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_srll(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + gen_helper_iwmmxt_srlq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x004: case 0x404: case 0x804: case 0xc04: /* WSRA */ + case 0x014: case 0x414: case 0x814: case 0xc14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + if (gen_iwmmxt_shift(insn, 0xff, tmp)) { + dead_tmp(tmp); + return 1; + } + switch ((insn >> 22) & 3) { + case 1: + gen_helper_iwmmxt_sraw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_sral(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + gen_helper_iwmmxt_sraq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x104: case 0x504: case 0x904: case 0xd04: /* WSLL */ + case 0x114: case 0x514: case 0x914: case 0xd14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + if (gen_iwmmxt_shift(insn, 0xff, tmp)) { + dead_tmp(tmp); + return 1; + } + switch ((insn >> 22) & 3) { + case 1: + gen_helper_iwmmxt_sllw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + gen_helper_iwmmxt_slll(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + gen_helper_iwmmxt_sllq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x304: case 0x704: case 0xb04: case 0xf04: /* WROR */ + case 0x314: case 0x714: case 0xb14: case 0xf14: + if (((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = new_tmp(); + switch ((insn >> 22) & 3) { + case 1: + if (gen_iwmmxt_shift(insn, 0xf, tmp)) { + dead_tmp(tmp); + return 1; + } + gen_helper_iwmmxt_rorw(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 2: + if (gen_iwmmxt_shift(insn, 0x1f, tmp)) { + dead_tmp(tmp); + return 1; + } + gen_helper_iwmmxt_rorl(cpu_M0, cpu_env, cpu_M0, tmp); + break; + case 3: + if (gen_iwmmxt_shift(insn, 0x3f, tmp)) { + dead_tmp(tmp); + return 1; + } + gen_helper_iwmmxt_rorq(cpu_M0, cpu_env, cpu_M0, tmp); + break; + } + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x116: case 0x316: case 0x516: case 0x716: /* WMIN */ + case 0x916: case 0xb16: case 0xd16: case 0xf16: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_minsb_M0_wRn(rd1); + else + gen_op_iwmmxt_minub_M0_wRn(rd1); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_minsw_M0_wRn(rd1); + else + gen_op_iwmmxt_minuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_minsl_M0_wRn(rd1); + else + gen_op_iwmmxt_minul_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x016: case 0x216: case 0x416: case 0x616: /* WMAX */ + case 0x816: case 0xa16: case 0xc16: case 0xe16: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 0: + if (insn & (1 << 21)) + gen_op_iwmmxt_maxsb_M0_wRn(rd1); + else + gen_op_iwmmxt_maxub_M0_wRn(rd1); + break; + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_maxsw_M0_wRn(rd1); + else + gen_op_iwmmxt_maxuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_maxsl_M0_wRn(rd1); + else + gen_op_iwmmxt_maxul_M0_wRn(rd1); + break; + case 3: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x002: case 0x102: case 0x202: case 0x302: /* WALIGNI */ + case 0x402: case 0x502: case 0x602: case 0x702: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = tcg_const_i32((insn >> 20) & 3); + iwmmxt_load_reg(cpu_V1, rd1); + gen_helper_iwmmxt_align(cpu_M0, cpu_M0, cpu_V1, tmp); + tcg_temp_free(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + case 0x01a: case 0x11a: case 0x21a: case 0x31a: /* WSUB */ + case 0x41a: case 0x51a: case 0x61a: case 0x71a: + case 0x81a: case 0x91a: case 0xa1a: case 0xb1a: + case 0xc1a: case 0xd1a: case 0xe1a: case 0xf1a: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 20) & 0xf) { + case 0x0: + gen_op_iwmmxt_subnb_M0_wRn(rd1); + break; + case 0x1: + gen_op_iwmmxt_subub_M0_wRn(rd1); + break; + case 0x3: + gen_op_iwmmxt_subsb_M0_wRn(rd1); + break; + case 0x4: + gen_op_iwmmxt_subnw_M0_wRn(rd1); + break; + case 0x5: + gen_op_iwmmxt_subuw_M0_wRn(rd1); + break; + case 0x7: + gen_op_iwmmxt_subsw_M0_wRn(rd1); + break; + case 0x8: + gen_op_iwmmxt_subnl_M0_wRn(rd1); + break; + case 0x9: + gen_op_iwmmxt_subul_M0_wRn(rd1); + break; + case 0xb: + gen_op_iwmmxt_subsl_M0_wRn(rd1); + break; + default: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x01e: case 0x11e: case 0x21e: case 0x31e: /* WSHUFH */ + case 0x41e: case 0x51e: case 0x61e: case 0x71e: + case 0x81e: case 0x91e: case 0xa1e: case 0xb1e: + case 0xc1e: case 0xd1e: case 0xe1e: case 0xf1e: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + tmp = tcg_const_i32(((insn >> 16) & 0xf0) | (insn & 0x0f)); + gen_helper_iwmmxt_shufh(cpu_M0, cpu_env, cpu_M0, tmp); + tcg_temp_free(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x018: case 0x118: case 0x218: case 0x318: /* WADD */ + case 0x418: case 0x518: case 0x618: case 0x718: + case 0x818: case 0x918: case 0xa18: case 0xb18: + case 0xc18: case 0xd18: case 0xe18: case 0xf18: + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 20) & 0xf) { + case 0x0: + gen_op_iwmmxt_addnb_M0_wRn(rd1); + break; + case 0x1: + gen_op_iwmmxt_addub_M0_wRn(rd1); + break; + case 0x3: + gen_op_iwmmxt_addsb_M0_wRn(rd1); + break; + case 0x4: + gen_op_iwmmxt_addnw_M0_wRn(rd1); + break; + case 0x5: + gen_op_iwmmxt_adduw_M0_wRn(rd1); + break; + case 0x7: + gen_op_iwmmxt_addsw_M0_wRn(rd1); + break; + case 0x8: + gen_op_iwmmxt_addnl_M0_wRn(rd1); + break; + case 0x9: + gen_op_iwmmxt_addul_M0_wRn(rd1); + break; + case 0xb: + gen_op_iwmmxt_addsl_M0_wRn(rd1); + break; + default: + return 1; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x008: case 0x108: case 0x208: case 0x308: /* WPACK */ + case 0x408: case 0x508: case 0x608: case 0x708: + case 0x808: case 0x908: case 0xa08: case 0xb08: + case 0xc08: case 0xd08: case 0xe08: case 0xf08: + if (!(insn & (1 << 20)) || ((insn >> 22) & 3) == 0) + return 1; + wrd = (insn >> 12) & 0xf; + rd0 = (insn >> 16) & 0xf; + rd1 = (insn >> 0) & 0xf; + gen_op_iwmmxt_movq_M0_wRn(rd0); + switch ((insn >> 22) & 3) { + case 1: + if (insn & (1 << 21)) + gen_op_iwmmxt_packsw_M0_wRn(rd1); + else + gen_op_iwmmxt_packuw_M0_wRn(rd1); + break; + case 2: + if (insn & (1 << 21)) + gen_op_iwmmxt_packsl_M0_wRn(rd1); + else + gen_op_iwmmxt_packul_M0_wRn(rd1); + break; + case 3: + if (insn & (1 << 21)) + gen_op_iwmmxt_packsq_M0_wRn(rd1); + else + gen_op_iwmmxt_packuq_M0_wRn(rd1); + break; + } + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + gen_op_iwmmxt_set_cup(); + break; + case 0x201: case 0x203: case 0x205: case 0x207: + case 0x209: case 0x20b: case 0x20d: case 0x20f: + case 0x211: case 0x213: case 0x215: case 0x217: + case 0x219: case 0x21b: case 0x21d: case 0x21f: + wrd = (insn >> 5) & 0xf; + rd0 = (insn >> 12) & 0xf; + rd1 = (insn >> 0) & 0xf; + if (rd0 == 0xf || rd1 == 0xf) + return 1; + gen_op_iwmmxt_movq_M0_wRn(wrd); + tmp = load_reg(s, rd0); + tmp2 = load_reg(s, rd1); + switch ((insn >> 16) & 0xf) { + case 0x0: /* TMIA */ + gen_helper_iwmmxt_muladdsl(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0x8: /* TMIAPH */ + gen_helper_iwmmxt_muladdsw(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0xc: case 0xd: case 0xe: case 0xf: /* TMIAxy */ + if (insn & (1 << 16)) + tcg_gen_shri_i32(tmp, tmp, 16); + if (insn & (1 << 17)) + tcg_gen_shri_i32(tmp2, tmp2, 16); + gen_helper_iwmmxt_muladdswl(cpu_M0, cpu_M0, tmp, tmp2); + break; + default: + dead_tmp(tmp2); + dead_tmp(tmp); + return 1; + } + dead_tmp(tmp2); + dead_tmp(tmp); + gen_op_iwmmxt_movq_wRn_M0(wrd); + gen_op_iwmmxt_set_mup(); + break; + default: + return 1; + } + + return 0; +} + +/* Disassemble an XScale DSP instruction. Returns nonzero if an error occured + (ie. an undefined instruction). */ +static int disas_dsp_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + int acc, rd0, rd1, rdhi, rdlo; + TCGv tmp, tmp2; + + if ((insn & 0x0ff00f10) == 0x0e200010) { + /* Multiply with Internal Accumulate Format */ + rd0 = (insn >> 12) & 0xf; + rd1 = insn & 0xf; + acc = (insn >> 5) & 7; + + if (acc != 0) + return 1; + + tmp = load_reg(s, rd0); + tmp2 = load_reg(s, rd1); + switch ((insn >> 16) & 0xf) { + case 0x0: /* MIA */ + gen_helper_iwmmxt_muladdsl(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0x8: /* MIAPH */ + gen_helper_iwmmxt_muladdsw(cpu_M0, cpu_M0, tmp, tmp2); + break; + case 0xc: /* MIABB */ + case 0xd: /* MIABT */ + case 0xe: /* MIATB */ + case 0xf: /* MIATT */ + if (insn & (1 << 16)) + tcg_gen_shri_i32(tmp, tmp, 16); + if (insn & (1 << 17)) + tcg_gen_shri_i32(tmp2, tmp2, 16); + gen_helper_iwmmxt_muladdswl(cpu_M0, cpu_M0, tmp, tmp2); + break; + default: + return 1; + } + dead_tmp(tmp2); + dead_tmp(tmp); + + gen_op_iwmmxt_movq_wRn_M0(acc); + return 0; + } + + if ((insn & 0x0fe00ff8) == 0x0c400000) { + /* Internal Accumulator Access Format */ + rdhi = (insn >> 16) & 0xf; + rdlo = (insn >> 12) & 0xf; + acc = insn & 7; + + if (acc != 0) + return 1; + + if (insn & ARM_CP_RW_BIT) { /* MRA */ + iwmmxt_load_reg(cpu_V0, acc); + tcg_gen_trunc_i64_i32(cpu_R[rdlo], cpu_V0); + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(cpu_R[rdhi], cpu_V0); + tcg_gen_andi_i32(cpu_R[rdhi], cpu_R[rdhi], (1 << (40 - 32)) - 1); + } else { /* MAR */ + tcg_gen_concat_i32_i64(cpu_V0, cpu_R[rdlo], cpu_R[rdhi]); + iwmmxt_store_reg(cpu_V0, acc); + } + return 0; + } + + return 1; +} + +/* Disassemble system coprocessor instruction. Return nonzero if + instruction is not defined. */ +static int disas_cp_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + TCGv tmp, tmp2; + uint32_t rd = (insn >> 12) & 0xf; + uint32_t cp = (insn >> 8) & 0xf; + if (IS_USER(s)) { + return 1; + } + + if (insn & ARM_CP_RW_BIT) { + if (!env->cp[cp].cp_read) + return 1; + gen_set_pc_im(s->pc); + tmp = new_tmp(); + tmp2 = tcg_const_i32(insn); + gen_helper_get_cp(tmp, cpu_env, tmp2); + tcg_temp_free(tmp2); + store_reg(s, rd, tmp); + } else { + if (!env->cp[cp].cp_write) + return 1; + gen_set_pc_im(s->pc); + tmp = load_reg(s, rd); + tmp2 = tcg_const_i32(insn); + gen_helper_set_cp(cpu_env, tmp2, tmp); + tcg_temp_free(tmp2); + dead_tmp(tmp); + } + return 0; +} + +static int cp15_user_ok(uint32_t insn) +{ + int cpn = (insn >> 16) & 0xf; + int cpm = insn & 0xf; + int op = ((insn >> 5) & 7) | ((insn >> 18) & 0x38); + + if (cpn == 13 && cpm == 0) { + /* TLS register. */ + if (op == 2 || (op == 3 && (insn & ARM_CP_RW_BIT))) + return 1; + } + if (cpn == 7) { + /* ISB, DSB, DMB. */ + if ((cpm == 5 && op == 4) + || (cpm == 10 && (op == 4 || op == 5))) + return 1; + } + return 0; +} + +/* Disassemble system coprocessor (cp15) instruction. Return nonzero if + instruction is not defined. */ +static int disas_cp15_insn(CPUState *env, DisasContext *s, uint32_t insn) +{ + uint32_t rd; + TCGv tmp, tmp2; + + /* M profile cores use memory mapped registers instead of cp15. */ + if (arm_feature(env, ARM_FEATURE_M)) + return 1; + + if ((insn & (1 << 25)) == 0) { + if (insn & (1 << 20)) { + /* mrrc */ + return 1; + } + /* mcrr. Used for block cache operations, so implement as no-op. */ + return 0; + } + if ((insn & (1 << 4)) == 0) { + /* cdp */ + return 1; + } + if (IS_USER(s) && !cp15_user_ok(insn)) { + return 1; + } + if ((insn & 0x0fff0fff) == 0x0e070f90 + || (insn & 0x0fff0fff) == 0x0e070f58) { + /* Wait for interrupt. */ + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_WFI; + return 0; + } + rd = (insn >> 12) & 0xf; + tmp2 = tcg_const_i32(insn); + if (insn & ARM_CP_RW_BIT) { + tmp = new_tmp(); + gen_helper_get_cp15(tmp, cpu_env, tmp2); + /* If the destination register is r15 then sets condition codes. */ + if (rd != 15) + store_reg(s, rd, tmp); + else + dead_tmp(tmp); + } else { + tmp = load_reg(s, rd); + gen_helper_set_cp15(cpu_env, tmp2, tmp); + dead_tmp(tmp); + /* Normally we would always end the TB here, but Linux + * arch/arm/mach-pxa/sleep.S expects two instructions following + * an MMU enable to execute from cache. Imitate this behaviour. */ + if (!arm_feature(env, ARM_FEATURE_XSCALE) || + (insn & 0x0fff0fff) != 0x0e010f10) + gen_lookup_tb(s); + } + tcg_temp_free_i32(tmp2); + return 0; +} + +#define VFP_REG_SHR(x, n) (((n) > 0) ? (x) >> (n) : (x) << -(n)) +#define VFP_SREG(insn, bigbit, smallbit) \ + ((VFP_REG_SHR(insn, bigbit - 1) & 0x1e) | (((insn) >> (smallbit)) & 1)) +#define VFP_DREG(reg, insn, bigbit, smallbit) do { \ + if (arm_feature(env, ARM_FEATURE_VFP3)) { \ + reg = (((insn) >> (bigbit)) & 0x0f) \ + | (((insn) >> ((smallbit) - 4)) & 0x10); \ + } else { \ + if (insn & (1 << (smallbit))) \ + return 1; \ + reg = ((insn) >> (bigbit)) & 0x0f; \ + }} while (0) + +#define VFP_SREG_D(insn) VFP_SREG(insn, 12, 22) +#define VFP_DREG_D(reg, insn) VFP_DREG(reg, insn, 12, 22) +#define VFP_SREG_N(insn) VFP_SREG(insn, 16, 7) +#define VFP_DREG_N(reg, insn) VFP_DREG(reg, insn, 16, 7) +#define VFP_SREG_M(insn) VFP_SREG(insn, 0, 5) +#define VFP_DREG_M(reg, insn) VFP_DREG(reg, insn, 0, 5) + +/* Move between integer and VFP cores. */ +static TCGv gen_vfp_mrs(void) +{ + TCGv tmp = new_tmp(); + tcg_gen_mov_i32(tmp, cpu_F0s); + return tmp; +} + +static void gen_vfp_msr(TCGv tmp) +{ + tcg_gen_mov_i32(cpu_F0s, tmp); + dead_tmp(tmp); +} + +static inline int +vfp_enabled(CPUState * env) +{ + return ((env->vfp.xregs[ARM_VFP_FPEXC] & (1 << 30)) != 0); +} + +static void gen_neon_dup_u8(TCGv var, int shift) +{ + TCGv tmp = new_tmp(); + if (shift) + tcg_gen_shri_i32(var, var, shift); + tcg_gen_ext8u_i32(var, var); + tcg_gen_shli_i32(tmp, var, 8); + tcg_gen_or_i32(var, var, tmp); + tcg_gen_shli_i32(tmp, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +static void gen_neon_dup_low16(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_ext16u_i32(var, var); + tcg_gen_shli_i32(tmp, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +static void gen_neon_dup_high16(TCGv var) +{ + TCGv tmp = new_tmp(); + tcg_gen_andi_i32(var, var, 0xffff0000); + tcg_gen_shri_i32(tmp, var, 16); + tcg_gen_or_i32(var, var, tmp); + dead_tmp(tmp); +} + +/* Disassemble a VFP instruction. Returns nonzero if an error occured + (ie. an undefined instruction). */ +static int disas_vfp_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + uint32_t rd, rn, rm, op, i, n, offset, delta_d, delta_m, bank_mask; + int dp, veclen; + TCGv addr; + TCGv tmp; + TCGv tmp2; + + if (!arm_feature(env, ARM_FEATURE_VFP)) + return 1; + + if (!vfp_enabled(env)) { + /* VFP disabled. Only allow fmxr/fmrx to/from some control regs. */ + if ((insn & 0x0fe00fff) != 0x0ee00a10) + return 1; + rn = (insn >> 16) & 0xf; + if (rn != ARM_VFP_FPSID && rn != ARM_VFP_FPEXC + && rn != ARM_VFP_MVFR1 && rn != ARM_VFP_MVFR0) + return 1; + } + dp = ((insn & 0xf00) == 0xb00); + switch ((insn >> 24) & 0xf) { + case 0xe: + if (insn & (1 << 4)) { + /* single register transfer */ + rd = (insn >> 12) & 0xf; + if (dp) { + int size; + int pass; + + VFP_DREG_N(rn, insn); + if (insn & 0xf) + return 1; + if (insn & 0x00c00060 + && !arm_feature(env, ARM_FEATURE_NEON)) + return 1; + + pass = (insn >> 21) & 1; + if (insn & (1 << 22)) { + size = 0; + offset = ((insn >> 5) & 3) * 8; + } else if (insn & (1 << 5)) { + size = 1; + offset = (insn & (1 << 6)) ? 16 : 0; + } else { + size = 2; + offset = 0; + } + if (insn & ARM_CP_RW_BIT) { + /* vfp->arm */ + tmp = neon_load_reg(rn, pass); + switch (size) { + case 0: + if (offset) + tcg_gen_shri_i32(tmp, tmp, offset); + if (insn & (1 << 23)) + gen_uxtb(tmp); + else + gen_sxtb(tmp); + break; + case 1: + if (insn & (1 << 23)) { + if (offset) { + tcg_gen_shri_i32(tmp, tmp, 16); + } else { + gen_uxth(tmp); + } + } else { + if (offset) { + tcg_gen_sari_i32(tmp, tmp, 16); + } else { + gen_sxth(tmp); + } + } + break; + case 2: + break; + } + store_reg(s, rd, tmp); + } else { + /* arm->vfp */ + tmp = load_reg(s, rd); + if (insn & (1 << 23)) { + /* VDUP */ + if (size == 0) { + gen_neon_dup_u8(tmp, 0); + } else if (size == 1) { + gen_neon_dup_low16(tmp); + } + for (n = 0; n <= pass * 2; n++) { + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + neon_store_reg(rn, n, tmp2); + } + neon_store_reg(rn, n, tmp); + } else { + /* VMOV */ + switch (size) { + case 0: + tmp2 = neon_load_reg(rn, pass); + gen_bfi(tmp, tmp2, tmp, offset, 0xff); + dead_tmp(tmp2); + break; + case 1: + tmp2 = neon_load_reg(rn, pass); + gen_bfi(tmp, tmp2, tmp, offset, 0xffff); + dead_tmp(tmp2); + break; + case 2: + break; + } + neon_store_reg(rn, pass, tmp); + } + } + } else { /* !dp */ + if ((insn & 0x6f) != 0x00) + return 1; + rn = VFP_SREG_N(insn); + if (insn & ARM_CP_RW_BIT) { + /* vfp->arm */ + if (insn & (1 << 21)) { + /* system register */ + rn >>= 1; + + switch (rn) { + case ARM_VFP_FPSID: + /* VFP2 allows access to FSID from userspace. + VFP3 restricts all id registers to privileged + accesses. */ + if (IS_USER(s) + && arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + case ARM_VFP_FPEXC: + if (IS_USER(s)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + case ARM_VFP_FPINST: + case ARM_VFP_FPINST2: + /* Not present in VFP3. */ + if (IS_USER(s) + || arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + case ARM_VFP_FPSCR: + if (rd == 15) { + tmp = load_cpu_field(vfp.xregs[ARM_VFP_FPSCR]); + tcg_gen_andi_i32(tmp, tmp, 0xf0000000); + } else { + tmp = new_tmp(); + gen_helper_vfp_get_fpscr(tmp, cpu_env); + } + break; + case ARM_VFP_MVFR0: + case ARM_VFP_MVFR1: + if (IS_USER(s) + || !arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + tmp = load_cpu_field(vfp.xregs[rn]); + break; + default: + return 1; + } + } else { + gen_mov_F0_vreg(0, rn); + tmp = gen_vfp_mrs(); + } + if (rd == 15) { + /* Set the 4 flag bits in the CPSR. */ + gen_set_nzcv(tmp); + dead_tmp(tmp); + } else { + store_reg(s, rd, tmp); + } + } else { + /* arm->vfp */ + tmp = load_reg(s, rd); + if (insn & (1 << 21)) { + rn >>= 1; + /* system register */ + switch (rn) { + case ARM_VFP_FPSID: + case ARM_VFP_MVFR0: + case ARM_VFP_MVFR1: + /* Writes are ignored. */ + break; + case ARM_VFP_FPSCR: + gen_helper_vfp_set_fpscr(cpu_env, tmp); + dead_tmp(tmp); + gen_lookup_tb(s); + break; + case ARM_VFP_FPEXC: + if (IS_USER(s)) + return 1; + /* TODO: VFP subarchitecture support. + * For now, keep the EN bit only */ + tcg_gen_andi_i32(tmp, tmp, 1 << 30); + store_cpu_field(tmp, vfp.xregs[rn]); + gen_lookup_tb(s); + break; + case ARM_VFP_FPINST: + case ARM_VFP_FPINST2: + store_cpu_field(tmp, vfp.xregs[rn]); + break; + default: + return 1; + } + } else { + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rn); + } + } + } + } else { + /* data processing */ + /* The opcode is in bits 23, 21, 20 and 6. */ + op = ((insn >> 20) & 8) | ((insn >> 19) & 6) | ((insn >> 6) & 1); + if (dp) { + if (op == 15) { + /* rn is opcode */ + rn = ((insn >> 15) & 0x1e) | ((insn >> 7) & 1); + } else { + /* rn is register number */ + VFP_DREG_N(rn, insn); + } + + if (op == 15 && (rn == 15 || rn > 17)) { + /* Integer or single precision destination. */ + rd = VFP_SREG_D(insn); + } else { + VFP_DREG_D(rd, insn); + } + + if (op == 15 && (rn == 16 || rn == 17)) { + /* Integer source. */ + rm = ((insn << 1) & 0x1e) | ((insn >> 5) & 1); + } else { + VFP_DREG_M(rm, insn); + } + } else { + rn = VFP_SREG_N(insn); + if (op == 15 && rn == 15) { + /* Double precision destination. */ + VFP_DREG_D(rd, insn); + } else { + rd = VFP_SREG_D(insn); + } + rm = VFP_SREG_M(insn); + } + + veclen = env->vfp.vec_len; + if (op == 15 && rn > 3) + veclen = 0; + + /* Shut up compiler warnings. */ + delta_m = 0; + delta_d = 0; + bank_mask = 0; + + if (veclen > 0) { + if (dp) + bank_mask = 0xc; + else + bank_mask = 0x18; + + /* Figure out what type of vector operation this is. */ + if ((rd & bank_mask) == 0) { + /* scalar */ + veclen = 0; + } else { + if (dp) + delta_d = (env->vfp.vec_stride >> 1) + 1; + else + delta_d = env->vfp.vec_stride + 1; + + if ((rm & bank_mask) == 0) { + /* mixed scalar/vector */ + delta_m = 0; + } else { + /* vector */ + delta_m = delta_d; + } + } + } + + /* Load the initial operands. */ + if (op == 15) { + switch (rn) { + case 16: + case 17: + /* Integer source */ + gen_mov_F0_vreg(0, rm); + break; + case 8: + case 9: + /* Compare */ + gen_mov_F0_vreg(dp, rd); + gen_mov_F1_vreg(dp, rm); + break; + case 10: + case 11: + /* Compare with zero */ + gen_mov_F0_vreg(dp, rd); + gen_vfp_F1_ld0(dp); + break; + case 20: + case 21: + case 22: + case 23: + case 28: + case 29: + case 30: + case 31: + /* Source and destination the same. */ + gen_mov_F0_vreg(dp, rd); + break; + default: + /* One source operand. */ + gen_mov_F0_vreg(dp, rm); + break; + } + } else { + /* Two source operands. */ + gen_mov_F0_vreg(dp, rn); + gen_mov_F1_vreg(dp, rm); + } + + for (;;) { + /* Perform the calculation. */ + switch (op) { + case 0: /* mac: fd + (fn * fm) */ + gen_vfp_mul(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_add(dp); + break; + case 1: /* nmac: fd - (fn * fm) */ + gen_vfp_mul(dp); + gen_vfp_neg(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_add(dp); + break; + case 2: /* msc: -fd + (fn * fm) */ + gen_vfp_mul(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_sub(dp); + break; + case 3: /* nmsc: -fd - (fn * fm) */ + gen_vfp_mul(dp); + gen_vfp_neg(dp); + gen_mov_F1_vreg(dp, rd); + gen_vfp_sub(dp); + break; + case 4: /* mul: fn * fm */ + gen_vfp_mul(dp); + break; + case 5: /* nmul: -(fn * fm) */ + gen_vfp_mul(dp); + gen_vfp_neg(dp); + break; + case 6: /* add: fn + fm */ + gen_vfp_add(dp); + break; + case 7: /* sub: fn - fm */ + gen_vfp_sub(dp); + break; + case 8: /* div: fn / fm */ + gen_vfp_div(dp); + break; + case 14: /* fconst */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + + n = (insn << 12) & 0x80000000; + i = ((insn >> 12) & 0x70) | (insn & 0xf); + if (dp) { + if (i & 0x40) + i |= 0x3f80; + else + i |= 0x4000; + n |= i << 16; + tcg_gen_movi_i64(cpu_F0d, ((uint64_t)n) << 32); + } else { + if (i & 0x40) + i |= 0x780; + else + i |= 0x800; + n |= i << 19; + tcg_gen_movi_i32(cpu_F0s, n); + } + break; + case 15: /* extension space */ + switch (rn) { + case 0: /* cpy */ + /* no-op */ + break; + case 1: /* abs */ + gen_vfp_abs(dp); + break; + case 2: /* neg */ + gen_vfp_neg(dp); + break; + case 3: /* sqrt */ + gen_vfp_sqrt(dp); + break; + case 4: /* vcvtb.f32.f16 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = gen_vfp_mrs(); + tcg_gen_ext16u_i32(tmp, tmp); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp, cpu_env); + dead_tmp(tmp); + break; + case 5: /* vcvtt.f32.f16 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = gen_vfp_mrs(); + tcg_gen_shri_i32(tmp, tmp, 16); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp, cpu_env); + dead_tmp(tmp); + break; + case 6: /* vcvtb.f16.f32 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = new_tmp(); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + gen_mov_F0_vreg(0, rd); + tmp2 = gen_vfp_mrs(); + tcg_gen_andi_i32(tmp2, tmp2, 0xffff0000); + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + gen_vfp_msr(tmp); + break; + case 7: /* vcvtt.f16.f32 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = new_tmp(); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + tcg_gen_shli_i32(tmp, tmp, 16); + gen_mov_F0_vreg(0, rd); + tmp2 = gen_vfp_mrs(); + tcg_gen_ext16u_i32(tmp2, tmp2); + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + gen_vfp_msr(tmp); + break; + case 8: /* cmp */ + gen_vfp_cmp(dp); + break; + case 9: /* cmpe */ + gen_vfp_cmpe(dp); + break; + case 10: /* cmpz */ + gen_vfp_cmp(dp); + break; + case 11: /* cmpez */ + gen_vfp_F1_ld0(dp); + gen_vfp_cmpe(dp); + break; + case 15: /* single<->double conversion */ + if (dp) + gen_helper_vfp_fcvtsd(cpu_F0s, cpu_F0d, cpu_env); + else + gen_helper_vfp_fcvtds(cpu_F0d, cpu_F0s, cpu_env); + break; + case 16: /* fuito */ + gen_vfp_uito(dp); + break; + case 17: /* fsito */ + gen_vfp_sito(dp); + break; + case 20: /* fshto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_shto(dp, 16 - rm); + break; + case 21: /* fslto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_slto(dp, 32 - rm); + break; + case 22: /* fuhto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_uhto(dp, 16 - rm); + break; + case 23: /* fulto */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_ulto(dp, 32 - rm); + break; + case 24: /* ftoui */ + gen_vfp_toui(dp); + break; + case 25: /* ftouiz */ + gen_vfp_touiz(dp); + break; + case 26: /* ftosi */ + gen_vfp_tosi(dp); + break; + case 27: /* ftosiz */ + gen_vfp_tosiz(dp); + break; + case 28: /* ftosh */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_tosh(dp, 16 - rm); + break; + case 29: /* ftosl */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_tosl(dp, 32 - rm); + break; + case 30: /* ftouh */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_touh(dp, 16 - rm); + break; + case 31: /* ftoul */ + if (!arm_feature(env, ARM_FEATURE_VFP3)) + return 1; + gen_vfp_toul(dp, 32 - rm); + break; + default: /* undefined */ + printf ("rn:%d\n", rn); + return 1; + } + break; + default: /* undefined */ + printf ("op:%d\n", op); + return 1; + } + + /* Write back the result. */ + if (op == 15 && (rn >= 8 && rn <= 11)) + ; /* Comparison, do nothing. */ + else if (op == 15 && rn > 17) + /* Integer result. */ + gen_mov_vreg_F0(0, rd); + else if (op == 15 && rn == 15) + /* conversion */ + gen_mov_vreg_F0(!dp, rd); + else + gen_mov_vreg_F0(dp, rd); + + /* break out of the loop if we have finished */ + if (veclen == 0) + break; + + if (op == 15 && delta_m == 0) { + /* single source one-many */ + while (veclen--) { + rd = ((rd + delta_d) & (bank_mask - 1)) + | (rd & bank_mask); + gen_mov_vreg_F0(dp, rd); + } + break; + } + /* Setup the next operands. */ + veclen--; + rd = ((rd + delta_d) & (bank_mask - 1)) + | (rd & bank_mask); + + if (op == 15) { + /* One source operand. */ + rm = ((rm + delta_m) & (bank_mask - 1)) + | (rm & bank_mask); + gen_mov_F0_vreg(dp, rm); + } else { + /* Two source operands. */ + rn = ((rn + delta_d) & (bank_mask - 1)) + | (rn & bank_mask); + gen_mov_F0_vreg(dp, rn); + if (delta_m) { + rm = ((rm + delta_m) & (bank_mask - 1)) + | (rm & bank_mask); + gen_mov_F1_vreg(dp, rm); + } + } + } + } + break; + case 0xc: + case 0xd: + if (dp && (insn & 0x03e00000) == 0x00400000) { + /* two-register transfer */ + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + if (dp) { + VFP_DREG_M(rm, insn); + } else { + rm = VFP_SREG_M(insn); + } + + if (insn & ARM_CP_RW_BIT) { + /* vfp->arm */ + if (dp) { + gen_mov_F0_vreg(0, rm * 2); + tmp = gen_vfp_mrs(); + store_reg(s, rd, tmp); + gen_mov_F0_vreg(0, rm * 2 + 1); + tmp = gen_vfp_mrs(); + store_reg(s, rn, tmp); + } else { + gen_mov_F0_vreg(0, rm); + tmp = gen_vfp_mrs(); + store_reg(s, rn, tmp); + gen_mov_F0_vreg(0, rm + 1); + tmp = gen_vfp_mrs(); + store_reg(s, rd, tmp); + } + } else { + /* arm->vfp */ + if (dp) { + tmp = load_reg(s, rd); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm * 2); + tmp = load_reg(s, rn); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm * 2 + 1); + } else { + tmp = load_reg(s, rn); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm); + tmp = load_reg(s, rd); + gen_vfp_msr(tmp); + gen_mov_vreg_F0(0, rm + 1); + } + } + } else { + /* Load/store */ + rn = (insn >> 16) & 0xf; + if (dp) + VFP_DREG_D(rd, insn); + else + rd = VFP_SREG_D(insn); + if (s->thumb && rn == 15) { + addr = new_tmp(); + tcg_gen_movi_i32(addr, s->pc & ~2); + } else { + addr = load_reg(s, rn); + } + if ((insn & 0x01200000) == 0x01000000) { + /* Single load/store */ + offset = (insn & 0xff) << 2; + if ((insn & (1 << 23)) == 0) + offset = -offset; + tcg_gen_addi_i32(addr, addr, offset); + if (insn & (1 << 20)) { + gen_vfp_ld(s, dp, addr); + gen_mov_vreg_F0(dp, rd); + } else { + gen_mov_F0_vreg(dp, rd); + gen_vfp_st(s, dp, addr); + } + dead_tmp(addr); + } else { + /* load/store multiple */ + if (dp) + n = (insn >> 1) & 0x7f; + else + n = insn & 0xff; + + if (insn & (1 << 24)) /* pre-decrement */ + tcg_gen_addi_i32(addr, addr, -((insn & 0xff) << 2)); + + if (dp) + offset = 8; + else + offset = 4; + for (i = 0; i < n; i++) { + if (insn & ARM_CP_RW_BIT) { + /* load */ + gen_vfp_ld(s, dp, addr); + gen_mov_vreg_F0(dp, rd + i); + } else { + /* store */ + gen_mov_F0_vreg(dp, rd + i); + gen_vfp_st(s, dp, addr); + } + tcg_gen_addi_i32(addr, addr, offset); + } + if (insn & (1 << 21)) { + /* writeback */ + if (insn & (1 << 24)) + offset = -offset * n; + else if (dp && (insn & 1)) + offset = 4; + else + offset = 0; + + if (offset != 0) + tcg_gen_addi_i32(addr, addr, offset); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } + } + break; + default: + /* Should never happen. */ + return 1; + } + return 0; +} + +static inline void gen_goto_tb(DisasContext *s, int n, uint32_t dest) +{ + TranslationBlock *tb; + + tb = s->tb; + if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) { + tcg_gen_goto_tb(n); + gen_set_pc_im(dest); + tcg_gen_exit_tb((long)tb + n); + } else { + gen_set_pc_im(dest); + tcg_gen_exit_tb(0); + } +} + +static inline void gen_jmp (DisasContext *s, uint32_t dest) +{ + if (unlikely(s->singlestep_enabled)) { + /* An indirect jump so that we still trigger the debug exception. */ + if (s->thumb) + dest |= 1; + gen_bx_im(s, dest); + } else { + gen_goto_tb(s, 0, dest); + s->is_jmp = DISAS_TB_JUMP; + } +} + +static inline void gen_mulxy(TCGv t0, TCGv t1, int x, int y) +{ + if (x) + tcg_gen_sari_i32(t0, t0, 16); + else + gen_sxth(t0); + if (y) + tcg_gen_sari_i32(t1, t1, 16); + else + gen_sxth(t1); + tcg_gen_mul_i32(t0, t0, t1); +} + +/* Return the mask of PSR bits set by a MSR instruction. */ +static uint32_t msr_mask(CPUState *env, DisasContext *s, int flags, int spsr) { + uint32_t mask; + + mask = 0; + if (flags & (1 << 0)) + mask |= 0xff; + if (flags & (1 << 1)) + mask |= 0xff00; + if (flags & (1 << 2)) + mask |= 0xff0000; + if (flags & (1 << 3)) + mask |= 0xff000000; + + /* Mask out undefined bits. */ + mask &= ~CPSR_RESERVED; + if (!arm_feature(env, ARM_FEATURE_V6)) + mask &= ~(CPSR_E | CPSR_GE); + if (!arm_feature(env, ARM_FEATURE_THUMB2)) + mask &= ~CPSR_IT; + /* Mask out execution state bits. */ + if (!spsr) + mask &= ~CPSR_EXEC; + /* Mask out privileged bits. */ + if (IS_USER(s)) + mask &= CPSR_USER; + return mask; +} + +/* Returns nonzero if access to the PSR is not permitted. Marks t0 as dead. */ +static int gen_set_psr(DisasContext *s, uint32_t mask, int spsr, TCGv t0) +{ + TCGv tmp; + if (spsr) { + /* ??? This is also undefined in system mode. */ + if (IS_USER(s)) + return 1; + + tmp = load_cpu_field(spsr); + tcg_gen_andi_i32(tmp, tmp, ~mask); + tcg_gen_andi_i32(t0, t0, mask); + tcg_gen_or_i32(tmp, tmp, t0); + store_cpu_field(tmp, spsr); + } else { + gen_set_cpsr(t0, mask); + } + dead_tmp(t0); + gen_lookup_tb(s); + return 0; +} + +/* Returns nonzero if access to the PSR is not permitted. */ +static int gen_set_psr_im(DisasContext *s, uint32_t mask, int spsr, uint32_t val) +{ + TCGv tmp; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + return gen_set_psr(s, mask, spsr, tmp); +} + +/* Generate an old-style exception return. Marks pc as dead. */ +static void gen_exception_return(DisasContext *s, TCGv pc) +{ + TCGv tmp; + store_reg(s, 15, pc); + tmp = load_cpu_field(spsr); + gen_set_cpsr(tmp, 0xffffffff); + dead_tmp(tmp); + s->is_jmp = DISAS_UPDATE; +} + +/* Generate a v6 exception return. Marks both values as dead. */ +static void gen_rfe(DisasContext *s, TCGv pc, TCGv cpsr) +{ + gen_set_cpsr(cpsr, 0xffffffff); + dead_tmp(cpsr); + store_reg(s, 15, pc); + s->is_jmp = DISAS_UPDATE; +} + +static inline void +gen_set_condexec (DisasContext *s) +{ + if (s->condexec_mask) { + uint32_t val = (s->condexec_cond << 4) | (s->condexec_mask >> 1); + TCGv tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + store_cpu_field(tmp, condexec_bits); + } +} + +static void gen_nop_hint(DisasContext *s, int val) +{ + switch (val) { + case 3: /* wfi */ + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_WFI; + break; + case 2: /* wfe */ + case 4: /* sev */ + /* TODO: Implement SEV and WFE. May help SMP performance. */ + default: /* nop */ + break; + } +} + +#define CPU_V001 cpu_V0, cpu_V0, cpu_V1 + +static inline int gen_neon_add(int size, TCGv t0, TCGv t1) +{ + switch (size) { + case 0: gen_helper_neon_add_u8(t0, t0, t1); break; + case 1: gen_helper_neon_add_u16(t0, t0, t1); break; + case 2: tcg_gen_add_i32(t0, t0, t1); break; + default: return 1; + } + return 0; +} + +static inline void gen_neon_rsb(int size, TCGv t0, TCGv t1) +{ + switch (size) { + case 0: gen_helper_neon_sub_u8(t0, t1, t0); break; + case 1: gen_helper_neon_sub_u16(t0, t1, t0); break; + case 2: tcg_gen_sub_i32(t0, t1, t0); break; + default: return; + } +} + +/* 32-bit pairwise ops end up the same as the elementwise versions. */ +#define gen_helper_neon_pmax_s32 gen_helper_neon_max_s32 +#define gen_helper_neon_pmax_u32 gen_helper_neon_max_u32 +#define gen_helper_neon_pmin_s32 gen_helper_neon_min_s32 +#define gen_helper_neon_pmin_u32 gen_helper_neon_min_u32 + +/* FIXME: This is wrong. They set the wrong overflow bit. */ +#define gen_helper_neon_qadd_s32(a, e, b, c) gen_helper_add_saturate(a, b, c) +#define gen_helper_neon_qadd_u32(a, e, b, c) gen_helper_add_usaturate(a, b, c) +#define gen_helper_neon_qsub_s32(a, e, b, c) gen_helper_sub_saturate(a, b, c) +#define gen_helper_neon_qsub_u32(a, e, b, c) gen_helper_sub_usaturate(a, b, c) + +#define GEN_NEON_INTEGER_OP_ENV(name) do { \ + switch ((size << 1) | u) { \ + case 0: \ + gen_helper_neon_##name##_s8(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 1: \ + gen_helper_neon_##name##_u8(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 2: \ + gen_helper_neon_##name##_s16(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 3: \ + gen_helper_neon_##name##_u16(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 4: \ + gen_helper_neon_##name##_s32(tmp, cpu_env, tmp, tmp2); \ + break; \ + case 5: \ + gen_helper_neon_##name##_u32(tmp, cpu_env, tmp, tmp2); \ + break; \ + default: return 1; \ + }} while (0) + +#define GEN_NEON_INTEGER_OP(name) do { \ + switch ((size << 1) | u) { \ + case 0: \ + gen_helper_neon_##name##_s8(tmp, tmp, tmp2); \ + break; \ + case 1: \ + gen_helper_neon_##name##_u8(tmp, tmp, tmp2); \ + break; \ + case 2: \ + gen_helper_neon_##name##_s16(tmp, tmp, tmp2); \ + break; \ + case 3: \ + gen_helper_neon_##name##_u16(tmp, tmp, tmp2); \ + break; \ + case 4: \ + gen_helper_neon_##name##_s32(tmp, tmp, tmp2); \ + break; \ + case 5: \ + gen_helper_neon_##name##_u32(tmp, tmp, tmp2); \ + break; \ + default: return 1; \ + }} while (0) + +static TCGv neon_load_scratch(int scratch) +{ + TCGv tmp = new_tmp(); + tcg_gen_ld_i32(tmp, cpu_env, offsetof(CPUARMState, vfp.scratch[scratch])); + return tmp; +} + +static void neon_store_scratch(int scratch, TCGv var) +{ + tcg_gen_st_i32(var, cpu_env, offsetof(CPUARMState, vfp.scratch[scratch])); + dead_tmp(var); +} + +static inline TCGv neon_get_scalar(int size, int reg) +{ + TCGv tmp; + if (size == 1) { + tmp = neon_load_reg(reg >> 1, reg & 1); + } else { + tmp = neon_load_reg(reg >> 2, (reg >> 1) & 1); + if (reg & 1) { + gen_neon_dup_low16(tmp); + } else { + gen_neon_dup_high16(tmp); + } + } + return tmp; +} + +static void gen_neon_unzip_u8(TCGv t0, TCGv t1) +{ + TCGv rd, rm, tmp; + + rd = new_tmp(); + rm = new_tmp(); + tmp = new_tmp(); + + tcg_gen_andi_i32(rd, t0, 0xff); + tcg_gen_shri_i32(tmp, t0, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t1, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff000000); + tcg_gen_or_i32(rd, rd, tmp); + + tcg_gen_shri_i32(rm, t0, 8); + tcg_gen_andi_i32(rm, rm, 0xff); + tcg_gen_shri_i32(tmp, t0, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_shli_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_andi_i32(tmp, t1, 0xff000000); + tcg_gen_or_i32(t1, rm, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rm); + dead_tmp(rd); +} + +static void gen_neon_zip_u8(TCGv t0, TCGv t1) +{ + TCGv rd, rm, tmp; + + rd = new_tmp(); + rm = new_tmp(); + tmp = new_tmp(); + + tcg_gen_andi_i32(rd, t0, 0xff); + tcg_gen_shli_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t0, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shli_i32(tmp, t1, 24); + tcg_gen_andi_i32(tmp, tmp, 0xff000000); + tcg_gen_or_i32(rd, rd, tmp); + + tcg_gen_andi_i32(rm, t1, 0xff000000); + tcg_gen_shri_i32(tmp, t0, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff0000); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_shri_i32(tmp, t1, 8); + tcg_gen_andi_i32(tmp, tmp, 0xff00); + tcg_gen_or_i32(rm, rm, tmp); + tcg_gen_shri_i32(tmp, t0, 16); + tcg_gen_andi_i32(tmp, tmp, 0xff); + tcg_gen_or_i32(t1, rm, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rm); + dead_tmp(rd); +} + +static void gen_neon_zip_u16(TCGv t0, TCGv t1) +{ + TCGv tmp, tmp2; + + tmp = new_tmp(); + tmp2 = new_tmp(); + + tcg_gen_andi_i32(tmp, t0, 0xffff); + tcg_gen_shli_i32(tmp2, t1, 16); + tcg_gen_or_i32(tmp, tmp, tmp2); + tcg_gen_andi_i32(t1, t1, 0xffff0000); + tcg_gen_shri_i32(tmp2, t0, 16); + tcg_gen_or_i32(t1, t1, tmp2); + tcg_gen_mov_i32(t0, tmp); + + dead_tmp(tmp2); + dead_tmp(tmp); +} + +static void gen_neon_unzip(int reg, int q, int tmp, int size) +{ + int n; + TCGv t0, t1; + + for (n = 0; n < q + 1; n += 2) { + t0 = neon_load_reg(reg, n); + t1 = neon_load_reg(reg, n + 1); + switch (size) { + case 0: gen_neon_unzip_u8(t0, t1); break; + case 1: gen_neon_zip_u16(t0, t1); break; /* zip and unzip are the same. */ + case 2: /* no-op */; break; + default: abort(); + } + neon_store_scratch(tmp + n, t0); + neon_store_scratch(tmp + n + 1, t1); + } +} + +static void gen_neon_trn_u8(TCGv t0, TCGv t1) +{ + TCGv rd, tmp; + + rd = new_tmp(); + tmp = new_tmp(); + + tcg_gen_shli_i32(rd, t0, 8); + tcg_gen_andi_i32(rd, rd, 0xff00ff00); + tcg_gen_andi_i32(tmp, t1, 0x00ff00ff); + tcg_gen_or_i32(rd, rd, tmp); + + tcg_gen_shri_i32(t1, t1, 8); + tcg_gen_andi_i32(t1, t1, 0x00ff00ff); + tcg_gen_andi_i32(tmp, t0, 0xff00ff00); + tcg_gen_or_i32(t1, t1, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rd); +} + +static void gen_neon_trn_u16(TCGv t0, TCGv t1) +{ + TCGv rd, tmp; + + rd = new_tmp(); + tmp = new_tmp(); + + tcg_gen_shli_i32(rd, t0, 16); + tcg_gen_andi_i32(tmp, t1, 0xffff); + tcg_gen_or_i32(rd, rd, tmp); + tcg_gen_shri_i32(t1, t1, 16); + tcg_gen_andi_i32(tmp, t0, 0xffff0000); + tcg_gen_or_i32(t1, t1, tmp); + tcg_gen_mov_i32(t0, rd); + + dead_tmp(tmp); + dead_tmp(rd); +} + + +static struct { + int nregs; + int interleave; + int spacing; +} neon_ls_element_type[11] = { + {4, 4, 1}, + {4, 4, 2}, + {4, 1, 1}, + {4, 2, 1}, + {3, 3, 1}, + {3, 3, 2}, + {3, 1, 1}, + {1, 1, 1}, + {2, 2, 1}, + {2, 2, 2}, + {2, 1, 1} +}; + +/* Translate a NEON load/store element instruction. Return nonzero if the + instruction is invalid. */ +static int disas_neon_ls_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + int rd, rn, rm; + int op; + int nregs; + int interleave; + int spacing; + int stride; + int size; + int reg; + int pass; + int load; + int shift; + int n; + TCGv addr; + TCGv tmp; + TCGv tmp2; + TCGv_i64 tmp64; + + if (!vfp_enabled(env)) + return 1; + VFP_DREG_D(rd, insn); + rn = (insn >> 16) & 0xf; + rm = insn & 0xf; + load = (insn & (1 << 21)) != 0; + addr = new_tmp(); + if ((insn & (1 << 23)) == 0) { + /* Load store all elements. */ + op = (insn >> 8) & 0xf; + size = (insn >> 6) & 3; + if (op > 10) + return 1; + nregs = neon_ls_element_type[op].nregs; + interleave = neon_ls_element_type[op].interleave; + spacing = neon_ls_element_type[op].spacing; + if (size == 3 && (interleave | spacing) != 1) + return 1; + load_reg_var(s, addr, rn); + stride = (1 << size) * interleave; + for (reg = 0; reg < nregs; reg++) { + if (interleave > 2 || (interleave == 2 && nregs == 2)) { + load_reg_var(s, addr, rn); + tcg_gen_addi_i32(addr, addr, (1 << size) * reg); + } else if (interleave == 2 && nregs == 4 && reg == 2) { + load_reg_var(s, addr, rn); + tcg_gen_addi_i32(addr, addr, 1 << size); + } + if (size == 3) { + if (load) { + tmp64 = gen_ld64(addr, IS_USER(s)); + neon_store_reg64(tmp64, rd); + tcg_temp_free_i64(tmp64); + } else { + tmp64 = tcg_temp_new_i64(); + neon_load_reg64(tmp64, rd); + gen_st64(tmp64, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, stride); + } else { + for (pass = 0; pass < 2; pass++) { + if (size == 2) { + if (load) { + tmp = gen_ld32(addr, IS_USER(s)); + neon_store_reg(rd, pass, tmp); + } else { + tmp = neon_load_reg(rd, pass); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, stride); + } else if (size == 1) { + if (load) { + tmp = gen_ld16u(addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + tmp2 = gen_ld16u(addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + gen_bfi(tmp, tmp, tmp2, 16, 0xffff); + dead_tmp(tmp2); + neon_store_reg(rd, pass, tmp); + } else { + tmp = neon_load_reg(rd, pass); + tmp2 = new_tmp(); + tcg_gen_shri_i32(tmp2, tmp, 16); + gen_st16(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + gen_st16(tmp2, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + } + } else /* size == 0 */ { + if (load) { + TCGV_UNUSED(tmp2); + for (n = 0; n < 4; n++) { + tmp = gen_ld8u(addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + if (n == 0) { + tmp2 = tmp; + } else { + gen_bfi(tmp2, tmp2, tmp, n * 8, 0xff); + dead_tmp(tmp); + } + } + neon_store_reg(rd, pass, tmp2); + } else { + tmp2 = neon_load_reg(rd, pass); + for (n = 0; n < 4; n++) { + tmp = new_tmp(); + if (n == 0) { + tcg_gen_mov_i32(tmp, tmp2); + } else { + tcg_gen_shri_i32(tmp, tmp2, n * 8); + } + gen_st8(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, stride); + } + dead_tmp(tmp2); + } + } + } + } + rd += spacing; + } + stride = nregs * 8; + } else { + size = (insn >> 10) & 3; + if (size == 3) { + /* Load single element to all lanes. */ + if (!load) + return 1; + size = (insn >> 6) & 3; + nregs = ((insn >> 8) & 3) + 1; + stride = (insn & (1 << 5)) ? 2 : 1; + load_reg_var(s, addr, rn); + for (reg = 0; reg < nregs; reg++) { + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + gen_neon_dup_u8(tmp, 0); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + gen_neon_dup_low16(tmp); + break; + case 2: + tmp = gen_ld32(addr, IS_USER(s)); + break; + case 3: + return 1; + default: /* Avoid compiler warnings. */ + abort(); + } + tcg_gen_addi_i32(addr, addr, 1 << size); + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + neon_store_reg(rd, 0, tmp2); + neon_store_reg(rd, 1, tmp); + rd += stride; + } + stride = (1 << size) * nregs; + } else { + /* Single element. */ + pass = (insn >> 7) & 1; + switch (size) { + case 0: + shift = ((insn >> 5) & 3) * 8; + stride = 1; + break; + case 1: + shift = ((insn >> 6) & 1) * 16; + stride = (insn & (1 << 5)) ? 2 : 1; + break; + case 2: + shift = 0; + stride = (insn & (1 << 6)) ? 2 : 1; + break; + default: + abort(); + } + nregs = ((insn >> 8) & 3) + 1; + load_reg_var(s, addr, rn); + for (reg = 0; reg < nregs; reg++) { + if (load) { + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + tmp = gen_ld32(addr, IS_USER(s)); + break; + default: /* Avoid compiler warnings. */ + abort(); + } + if (size != 2) { + tmp2 = neon_load_reg(rd, pass); + gen_bfi(tmp, tmp2, tmp, shift, size ? 0xffff : 0xff); + dead_tmp(tmp2); + } + neon_store_reg(rd, pass, tmp); + } else { /* Store */ + tmp = neon_load_reg(rd, pass); + if (shift) + tcg_gen_shri_i32(tmp, tmp, shift); + switch (size) { + case 0: + gen_st8(tmp, addr, IS_USER(s)); + break; + case 1: + gen_st16(tmp, addr, IS_USER(s)); + break; + case 2: + gen_st32(tmp, addr, IS_USER(s)); + break; + } + } + rd += stride; + tcg_gen_addi_i32(addr, addr, 1 << size); + } + stride = nregs * (1 << size); + } + } + dead_tmp(addr); + if (rm != 15) { + TCGv base; + + base = load_reg(s, rn); + if (rm == 13) { + tcg_gen_addi_i32(base, base, stride); + } else { + TCGv index; + index = load_reg(s, rm); + tcg_gen_add_i32(base, base, index); + dead_tmp(index); + } + store_reg(s, rn, base); + } + return 0; +} + +/* Bitwise select. dest = c ? t : f. Clobbers T and F. */ +static void gen_neon_bsl(TCGv dest, TCGv t, TCGv f, TCGv c) +{ + tcg_gen_and_i32(t, t, c); + tcg_gen_andc_i32(f, f, c); + tcg_gen_or_i32(dest, t, f); +} + +static inline void gen_neon_narrow(int size, TCGv dest, TCGv_i64 src) +{ + switch (size) { + case 0: gen_helper_neon_narrow_u8(dest, src); break; + case 1: gen_helper_neon_narrow_u16(dest, src); break; + case 2: tcg_gen_trunc_i64_i32(dest, src); break; + default: abort(); + } +} + +static inline void gen_neon_narrow_sats(int size, TCGv dest, TCGv_i64 src) +{ + switch (size) { + case 0: gen_helper_neon_narrow_sat_s8(dest, cpu_env, src); break; + case 1: gen_helper_neon_narrow_sat_s16(dest, cpu_env, src); break; + case 2: gen_helper_neon_narrow_sat_s32(dest, cpu_env, src); break; + default: abort(); + } +} + +static inline void gen_neon_narrow_satu(int size, TCGv dest, TCGv_i64 src) +{ + switch (size) { + case 0: gen_helper_neon_narrow_sat_u8(dest, cpu_env, src); break; + case 1: gen_helper_neon_narrow_sat_u16(dest, cpu_env, src); break; + case 2: gen_helper_neon_narrow_sat_u32(dest, cpu_env, src); break; + default: abort(); + } +} + +static inline void gen_neon_shift_narrow(int size, TCGv var, TCGv shift, + int q, int u) +{ + if (q) { + if (u) { + switch (size) { + case 1: gen_helper_neon_rshl_u16(var, var, shift); break; + case 2: gen_helper_neon_rshl_u32(var, var, shift); break; + default: abort(); + } + } else { + switch (size) { + case 1: gen_helper_neon_rshl_s16(var, var, shift); break; + case 2: gen_helper_neon_rshl_s32(var, var, shift); break; + default: abort(); + } + } + } else { + if (u) { + switch (size) { + case 1: gen_helper_neon_rshl_u16(var, var, shift); break; + case 2: gen_helper_neon_rshl_u32(var, var, shift); break; + default: abort(); + } + } else { + switch (size) { + case 1: gen_helper_neon_shl_s16(var, var, shift); break; + case 2: gen_helper_neon_shl_s32(var, var, shift); break; + default: abort(); + } + } + } +} + +static inline void gen_neon_widen(TCGv_i64 dest, TCGv src, int size, int u) +{ + if (u) { + switch (size) { + case 0: gen_helper_neon_widen_u8(dest, src); break; + case 1: gen_helper_neon_widen_u16(dest, src); break; + case 2: tcg_gen_extu_i32_i64(dest, src); break; + default: abort(); + } + } else { + switch (size) { + case 0: gen_helper_neon_widen_s8(dest, src); break; + case 1: gen_helper_neon_widen_s16(dest, src); break; + case 2: tcg_gen_ext_i32_i64(dest, src); break; + default: abort(); + } + } + dead_tmp(src); +} + +static inline void gen_neon_addl(int size) +{ + switch (size) { + case 0: gen_helper_neon_addl_u16(CPU_V001); break; + case 1: gen_helper_neon_addl_u32(CPU_V001); break; + case 2: tcg_gen_add_i64(CPU_V001); break; + default: abort(); + } +} + +static inline void gen_neon_subl(int size) +{ + switch (size) { + case 0: gen_helper_neon_subl_u16(CPU_V001); break; + case 1: gen_helper_neon_subl_u32(CPU_V001); break; + case 2: tcg_gen_sub_i64(CPU_V001); break; + default: abort(); + } +} + +static inline void gen_neon_negl(TCGv_i64 var, int size) +{ + switch (size) { + case 0: gen_helper_neon_negl_u16(var, var); break; + case 1: gen_helper_neon_negl_u32(var, var); break; + case 2: gen_helper_neon_negl_u64(var, var); break; + default: abort(); + } +} + +static inline void gen_neon_addl_saturate(TCGv_i64 op0, TCGv_i64 op1, int size) +{ + switch (size) { + case 1: gen_helper_neon_addl_saturate_s32(op0, cpu_env, op0, op1); break; + case 2: gen_helper_neon_addl_saturate_s64(op0, cpu_env, op0, op1); break; + default: abort(); + } +} + +static inline void gen_neon_mull(TCGv_i64 dest, TCGv a, TCGv b, int size, int u) +{ + TCGv_i64 tmp; + + switch ((size << 1) | u) { + case 0: gen_helper_neon_mull_s8(dest, a, b); break; + case 1: gen_helper_neon_mull_u8(dest, a, b); break; + case 2: gen_helper_neon_mull_s16(dest, a, b); break; + case 3: gen_helper_neon_mull_u16(dest, a, b); break; + case 4: + tmp = gen_muls_i64_i32(a, b); + tcg_gen_mov_i64(dest, tmp); + break; + case 5: + tmp = gen_mulu_i64_i32(a, b); + tcg_gen_mov_i64(dest, tmp); + break; + default: abort(); + } +} + +/* Translate a NEON data processing instruction. Return nonzero if the + instruction is invalid. + We process data in a mixture of 32-bit and 64-bit chunks. + Mostly we use 32-bit chunks so we can use normal scalar instructions. */ + +static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + int op; + int q; + int rd, rn, rm; + int size; + int shift; + int pass; + int count; + int pairwise; + int u; + int n; + uint32_t imm, mask; + TCGv tmp, tmp2, tmp3, tmp4, tmp5; + TCGv_i64 tmp64; + + if (!vfp_enabled(env)) + return 1; + q = (insn & (1 << 6)) != 0; + u = (insn >> 24) & 1; + VFP_DREG_D(rd, insn); + VFP_DREG_N(rn, insn); + VFP_DREG_M(rm, insn); + size = (insn >> 20) & 3; + if ((insn & (1 << 23)) == 0) { + /* Three register same length. */ + op = ((insn >> 7) & 0x1e) | ((insn >> 4) & 1); + if (size == 3 && (op == 1 || op == 5 || op == 8 || op == 9 + || op == 10 || op == 11 || op == 16)) { + /* 64-bit element instructions. */ + for (pass = 0; pass < (q ? 2 : 1); pass++) { + neon_load_reg64(cpu_V0, rn + pass); + neon_load_reg64(cpu_V1, rm + pass); + switch (op) { + case 1: /* VQADD */ + if (u) { + gen_helper_neon_add_saturate_u64(CPU_V001); + } else { + gen_helper_neon_add_saturate_s64(CPU_V001); + } + break; + case 5: /* VQSUB */ + if (u) { + gen_helper_neon_sub_saturate_u64(CPU_V001); + } else { + gen_helper_neon_sub_saturate_s64(CPU_V001); + } + break; + case 8: /* VSHL */ + if (u) { + gen_helper_neon_shl_u64(cpu_V0, cpu_V1, cpu_V0); + } else { + gen_helper_neon_shl_s64(cpu_V0, cpu_V1, cpu_V0); + } + break; + case 9: /* VQSHL */ + if (u) { + gen_helper_neon_qshl_u64(cpu_V0, cpu_env, + cpu_V0, cpu_V0); + } else { + gen_helper_neon_qshl_s64(cpu_V1, cpu_env, + cpu_V1, cpu_V0); + } + break; + case 10: /* VRSHL */ + if (u) { + gen_helper_neon_rshl_u64(cpu_V0, cpu_V1, cpu_V0); + } else { + gen_helper_neon_rshl_s64(cpu_V0, cpu_V1, cpu_V0); + } + break; + case 11: /* VQRSHL */ + if (u) { + gen_helper_neon_qrshl_u64(cpu_V0, cpu_env, + cpu_V1, cpu_V0); + } else { + gen_helper_neon_qrshl_s64(cpu_V0, cpu_env, + cpu_V1, cpu_V0); + } + break; + case 16: + if (u) { + tcg_gen_sub_i64(CPU_V001); + } else { + tcg_gen_add_i64(CPU_V001); + } + break; + default: + abort(); + } + neon_store_reg64(cpu_V0, rd + pass); + } + return 0; + } + switch (op) { + case 8: /* VSHL */ + case 9: /* VQSHL */ + case 10: /* VRSHL */ + case 11: /* VQRSHL */ + { + int rtmp; + /* Shift instruction operands are reversed. */ + rtmp = rn; + rn = rm; + rm = rtmp; + pairwise = 0; + } + break; + case 20: /* VPMAX */ + case 21: /* VPMIN */ + case 23: /* VPADD */ + pairwise = 1; + break; + case 26: /* VPADD (float) */ + pairwise = (u && size < 2); + break; + case 30: /* VPMIN/VPMAX (float) */ + pairwise = u; + break; + default: + pairwise = 0; + break; + } + + for (pass = 0; pass < (q ? 4 : 2); pass++) { + + if (pairwise) { + /* Pairwise. */ + if (q) + n = (pass & 1) * 2; + else + n = 0; + if (pass < q + 1) { + tmp = neon_load_reg(rn, n); + tmp2 = neon_load_reg(rn, n + 1); + } else { + tmp = neon_load_reg(rm, n); + tmp2 = neon_load_reg(rm, n + 1); + } + } else { + /* Elementwise. */ + tmp = neon_load_reg(rn, pass); + tmp2 = neon_load_reg(rm, pass); + } + switch (op) { + case 0: /* VHADD */ + GEN_NEON_INTEGER_OP(hadd); + break; + case 1: /* VQADD */ + GEN_NEON_INTEGER_OP_ENV(qadd); + break; + case 2: /* VRHADD */ + GEN_NEON_INTEGER_OP(rhadd); + break; + case 3: /* Logic ops. */ + switch ((u << 2) | size) { + case 0: /* VAND */ + tcg_gen_and_i32(tmp, tmp, tmp2); + break; + case 1: /* BIC */ + tcg_gen_andc_i32(tmp, tmp, tmp2); + break; + case 2: /* VORR */ + tcg_gen_or_i32(tmp, tmp, tmp2); + break; + case 3: /* VORN */ + tcg_gen_orc_i32(tmp, tmp, tmp2); + break; + case 4: /* VEOR */ + tcg_gen_xor_i32(tmp, tmp, tmp2); + break; + case 5: /* VBSL */ + tmp3 = neon_load_reg(rd, pass); + gen_neon_bsl(tmp, tmp, tmp2, tmp3); + dead_tmp(tmp3); + break; + case 6: /* VBIT */ + tmp3 = neon_load_reg(rd, pass); + gen_neon_bsl(tmp, tmp, tmp3, tmp2); + dead_tmp(tmp3); + break; + case 7: /* VBIF */ + tmp3 = neon_load_reg(rd, pass); + gen_neon_bsl(tmp, tmp3, tmp, tmp2); + dead_tmp(tmp3); + break; + } + break; + case 4: /* VHSUB */ + GEN_NEON_INTEGER_OP(hsub); + break; + case 5: /* VQSUB */ + GEN_NEON_INTEGER_OP_ENV(qsub); + break; + case 6: /* VCGT */ + GEN_NEON_INTEGER_OP(cgt); + break; + case 7: /* VCGE */ + GEN_NEON_INTEGER_OP(cge); + break; + case 8: /* VSHL */ + GEN_NEON_INTEGER_OP(shl); + break; + case 9: /* VQSHL */ + GEN_NEON_INTEGER_OP_ENV(qshl); + break; + case 10: /* VRSHL */ + GEN_NEON_INTEGER_OP(rshl); + break; + case 11: /* VQRSHL */ + GEN_NEON_INTEGER_OP_ENV(qrshl); + break; + case 12: /* VMAX */ + GEN_NEON_INTEGER_OP(max); + break; + case 13: /* VMIN */ + GEN_NEON_INTEGER_OP(min); + break; + case 14: /* VABD */ + GEN_NEON_INTEGER_OP(abd); + break; + case 15: /* VABA */ + GEN_NEON_INTEGER_OP(abd); + dead_tmp(tmp2); + tmp2 = neon_load_reg(rd, pass); + gen_neon_add(size, tmp, tmp2); + break; + case 16: + if (!u) { /* VADD */ + if (gen_neon_add(size, tmp, tmp2)) + return 1; + } else { /* VSUB */ + switch (size) { + case 0: gen_helper_neon_sub_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_sub_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_sub_i32(tmp, tmp, tmp2); break; + default: return 1; + } + } + break; + case 17: + if (!u) { /* VTST */ + switch (size) { + case 0: gen_helper_neon_tst_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_tst_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_tst_u32(tmp, tmp, tmp2); break; + default: return 1; + } + } else { /* VCEQ */ + switch (size) { + case 0: gen_helper_neon_ceq_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_ceq_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_ceq_u32(tmp, tmp, tmp2); break; + default: return 1; + } + } + break; + case 18: /* Multiply. */ + switch (size) { + case 0: gen_helper_neon_mul_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_mul_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_mul_i32(tmp, tmp, tmp2); break; + default: return 1; + } + dead_tmp(tmp2); + tmp2 = neon_load_reg(rd, pass); + if (u) { /* VMLS */ + gen_neon_rsb(size, tmp, tmp2); + } else { /* VMLA */ + gen_neon_add(size, tmp, tmp2); + } + break; + case 19: /* VMUL */ + if (u) { /* polynomial */ + gen_helper_neon_mul_p8(tmp, tmp, tmp2); + } else { /* Integer */ + switch (size) { + case 0: gen_helper_neon_mul_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_mul_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_mul_i32(tmp, tmp, tmp2); break; + default: return 1; + } + } + break; + case 20: /* VPMAX */ + GEN_NEON_INTEGER_OP(pmax); + break; + case 21: /* VPMIN */ + GEN_NEON_INTEGER_OP(pmin); + break; + case 22: /* Hultiply high. */ + if (!u) { /* VQDMULH */ + switch (size) { + case 1: gen_helper_neon_qdmulh_s16(tmp, cpu_env, tmp, tmp2); break; + case 2: gen_helper_neon_qdmulh_s32(tmp, cpu_env, tmp, tmp2); break; + default: return 1; + } + } else { /* VQRDHMUL */ + switch (size) { + case 1: gen_helper_neon_qrdmulh_s16(tmp, cpu_env, tmp, tmp2); break; + case 2: gen_helper_neon_qrdmulh_s32(tmp, cpu_env, tmp, tmp2); break; + default: return 1; + } + } + break; + case 23: /* VPADD */ + if (u) + return 1; + switch (size) { + case 0: gen_helper_neon_padd_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_padd_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_add_i32(tmp, tmp, tmp2); break; + default: return 1; + } + break; + case 26: /* Floating point arithnetic. */ + switch ((u << 2) | size) { + case 0: /* VADD */ + gen_helper_neon_add_f32(tmp, tmp, tmp2); + break; + case 2: /* VSUB */ + gen_helper_neon_sub_f32(tmp, tmp, tmp2); + break; + case 4: /* VPADD */ + gen_helper_neon_add_f32(tmp, tmp, tmp2); + break; + case 6: /* VABD */ + gen_helper_neon_abd_f32(tmp, tmp, tmp2); + break; + default: + return 1; + } + break; + case 27: /* Float multiply. */ + gen_helper_neon_mul_f32(tmp, tmp, tmp2); + if (!u) { + dead_tmp(tmp2); + tmp2 = neon_load_reg(rd, pass); + if (size == 0) { + gen_helper_neon_add_f32(tmp, tmp, tmp2); + } else { + gen_helper_neon_sub_f32(tmp, tmp2, tmp); + } + } + break; + case 28: /* Float compare. */ + if (!u) { + gen_helper_neon_ceq_f32(tmp, tmp, tmp2); + } else { + if (size == 0) + gen_helper_neon_cge_f32(tmp, tmp, tmp2); + else + gen_helper_neon_cgt_f32(tmp, tmp, tmp2); + } + break; + case 29: /* Float compare absolute. */ + if (!u) + return 1; + if (size == 0) + gen_helper_neon_acge_f32(tmp, tmp, tmp2); + else + gen_helper_neon_acgt_f32(tmp, tmp, tmp2); + break; + case 30: /* Float min/max. */ + if (size == 0) + gen_helper_neon_max_f32(tmp, tmp, tmp2); + else + gen_helper_neon_min_f32(tmp, tmp, tmp2); + break; + case 31: + if (size == 0) + gen_helper_recps_f32(tmp, tmp, tmp2, cpu_env); + else + gen_helper_rsqrts_f32(tmp, tmp, tmp2, cpu_env); + break; + default: + abort(); + } + dead_tmp(tmp2); + + /* Save the result. For elementwise operations we can put it + straight into the destination register. For pairwise operations + we have to be careful to avoid clobbering the source operands. */ + if (pairwise && rd == rm) { + neon_store_scratch(pass, tmp); + } else { + neon_store_reg(rd, pass, tmp); + } + + } /* for pass */ + if (pairwise && rd == rm) { + for (pass = 0; pass < (q ? 4 : 2); pass++) { + tmp = neon_load_scratch(pass); + neon_store_reg(rd, pass, tmp); + } + } + /* End of 3 register same size operations. */ + } else if (insn & (1 << 4)) { + if ((insn & 0x00380080) != 0) { + /* Two registers and shift. */ + op = (insn >> 8) & 0xf; + if (insn & (1 << 7)) { + /* 64-bit shift. */ + size = 3; + } else { + size = 2; + while ((insn & (1 << (size + 19))) == 0) + size--; + } + shift = (insn >> 16) & ((1 << (3 + size)) - 1); + /* To avoid excessive dumplication of ops we implement shift + by immediate using the variable shift operations. */ + if (op < 8) { + /* Shift by immediate: + VSHR, VSRA, VRSHR, VRSRA, VSRI, VSHL, VQSHL, VQSHLU. */ + /* Right shifts are encoded as N - shift, where N is the + element size in bits. */ + if (op <= 4) + shift = shift - (1 << (size + 3)); + if (size == 3) { + count = q + 1; + } else { + count = q ? 4: 2; + } + switch (size) { + case 0: + imm = (uint8_t) shift; + imm |= imm << 8; + imm |= imm << 16; + break; + case 1: + imm = (uint16_t) shift; + imm |= imm << 16; + break; + case 2: + case 3: + imm = shift; + break; + default: + abort(); + } + + for (pass = 0; pass < count; pass++) { + if (size == 3) { + neon_load_reg64(cpu_V0, rm + pass); + tcg_gen_movi_i64(cpu_V1, imm); + switch (op) { + case 0: /* VSHR */ + case 1: /* VSRA */ + if (u) + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, cpu_V1); + else + gen_helper_neon_shl_s64(cpu_V0, cpu_V0, cpu_V1); + break; + case 2: /* VRSHR */ + case 3: /* VRSRA */ + if (u) + gen_helper_neon_rshl_u64(cpu_V0, cpu_V0, cpu_V1); + else + gen_helper_neon_rshl_s64(cpu_V0, cpu_V0, cpu_V1); + break; + case 4: /* VSRI */ + if (!u) + return 1; + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, cpu_V1); + break; + case 5: /* VSHL, VSLI */ + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, cpu_V1); + break; + case 6: /* VQSHL */ + if (u) + gen_helper_neon_qshl_u64(cpu_V0, cpu_env, cpu_V0, cpu_V1); + else + gen_helper_neon_qshl_s64(cpu_V0, cpu_env, cpu_V0, cpu_V1); + break; + case 7: /* VQSHLU */ + gen_helper_neon_qshl_u64(cpu_V0, cpu_env, cpu_V0, cpu_V1); + break; + } + if (op == 1 || op == 3) { + /* Accumulate. */ + neon_load_reg64(cpu_V0, rd + pass); + tcg_gen_add_i64(cpu_V0, cpu_V0, cpu_V1); + } else if (op == 4 || (op == 5 && u)) { + /* Insert */ + cpu_abort(env, "VS[LR]I.64 not implemented"); + } + neon_store_reg64(cpu_V0, rd + pass); + } else { /* size < 3 */ + /* Operands in T0 and T1. */ + tmp = neon_load_reg(rm, pass); + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, imm); + switch (op) { + case 0: /* VSHR */ + case 1: /* VSRA */ + GEN_NEON_INTEGER_OP(shl); + break; + case 2: /* VRSHR */ + case 3: /* VRSRA */ + GEN_NEON_INTEGER_OP(rshl); + break; + case 4: /* VSRI */ + if (!u) + return 1; + GEN_NEON_INTEGER_OP(shl); + break; + case 5: /* VSHL, VSLI */ + switch (size) { + case 0: gen_helper_neon_shl_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_shl_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_shl_u32(tmp, tmp, tmp2); break; + default: return 1; + } + break; + case 6: /* VQSHL */ + GEN_NEON_INTEGER_OP_ENV(qshl); + break; + case 7: /* VQSHLU */ + switch (size) { + case 0: gen_helper_neon_qshl_u8(tmp, cpu_env, tmp, tmp2); break; + case 1: gen_helper_neon_qshl_u16(tmp, cpu_env, tmp, tmp2); break; + case 2: gen_helper_neon_qshl_u32(tmp, cpu_env, tmp, tmp2); break; + default: return 1; + } + break; + } + dead_tmp(tmp2); + + if (op == 1 || op == 3) { + /* Accumulate. */ + tmp2 = neon_load_reg(rd, pass); + gen_neon_add(size, tmp2, tmp); + dead_tmp(tmp2); + } else if (op == 4 || (op == 5 && u)) { + /* Insert */ + switch (size) { + case 0: + if (op == 4) + mask = 0xff >> -shift; + else + mask = (uint8_t)(0xff << shift); + mask |= mask << 8; + mask |= mask << 16; + break; + case 1: + if (op == 4) + mask = 0xffff >> -shift; + else + mask = (uint16_t)(0xffff << shift); + mask |= mask << 16; + break; + case 2: + if (shift < -31 || shift > 31) { + mask = 0; + } else { + if (op == 4) + mask = 0xffffffffu >> -shift; + else + mask = 0xffffffffu << shift; + } + break; + default: + abort(); + } + tmp2 = neon_load_reg(rd, pass); + tcg_gen_andi_i32(tmp, tmp, mask); + tcg_gen_andi_i32(tmp2, tmp2, ~mask); + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + neon_store_reg(rd, pass, tmp); + } + } /* for pass */ + } else if (op < 10) { + /* Shift by immediate and narrow: + VSHRN, VRSHRN, VQSHRN, VQRSHRN. */ + shift = shift - (1 << (size + 3)); + size++; + switch (size) { + case 1: + imm = (uint16_t)shift; + imm |= imm << 16; + tmp2 = tcg_const_i32(imm); + TCGV_UNUSED_I64(tmp64); + break; + case 2: + imm = (uint32_t)shift; + tmp2 = tcg_const_i32(imm); + TCGV_UNUSED_I64(tmp64); + break; + case 3: + tmp64 = tcg_const_i64(shift); + TCGV_UNUSED(tmp2); + break; + default: + abort(); + } + + for (pass = 0; pass < 2; pass++) { + if (size == 3) { + neon_load_reg64(cpu_V0, rm + pass); + if (q) { + if (u) + gen_helper_neon_rshl_u64(cpu_V0, cpu_V0, tmp64); + else + gen_helper_neon_rshl_s64(cpu_V0, cpu_V0, tmp64); + } else { + if (u) + gen_helper_neon_shl_u64(cpu_V0, cpu_V0, tmp64); + else + gen_helper_neon_shl_s64(cpu_V0, cpu_V0, tmp64); + } + } else { + tmp = neon_load_reg(rm + pass, 0); + gen_neon_shift_narrow(size, tmp, tmp2, q, u); + tmp3 = neon_load_reg(rm + pass, 1); + gen_neon_shift_narrow(size, tmp3, tmp2, q, u); + tcg_gen_concat_i32_i64(cpu_V0, tmp, tmp3); + dead_tmp(tmp); + dead_tmp(tmp3); + } + tmp = new_tmp(); + if (op == 8 && !u) { + gen_neon_narrow(size - 1, tmp, cpu_V0); + } else { + if (op == 8) + gen_neon_narrow_sats(size - 1, tmp, cpu_V0); + else + gen_neon_narrow_satu(size - 1, tmp, cpu_V0); + } + neon_store_reg(rd, pass, tmp); + } /* for pass */ + if (size == 3) { + tcg_temp_free_i64(tmp64); + } else { + dead_tmp(tmp2); + } + } else if (op == 10) { + /* VSHLL */ + if (q || size == 3) + return 1; + tmp = neon_load_reg(rm, 0); + tmp2 = neon_load_reg(rm, 1); + for (pass = 0; pass < 2; pass++) { + if (pass == 1) + tmp = tmp2; + + gen_neon_widen(cpu_V0, tmp, size, u); + + if (shift != 0) { + /* The shift is less than the width of the source + type, so we can just shift the whole register. */ + tcg_gen_shli_i64(cpu_V0, cpu_V0, shift); + if (size < 2 || !u) { + uint64_t imm64; + if (size == 0) { + imm = (0xffu >> (8 - shift)); + imm |= imm << 16; + } else { + imm = 0xffff >> (16 - shift); + } + imm64 = imm | (((uint64_t)imm) << 32); + tcg_gen_andi_i64(cpu_V0, cpu_V0, imm64); + } + } + neon_store_reg64(cpu_V0, rd + pass); + } + } else if (op == 15 || op == 16) { + /* VCVT fixed-point. */ + for (pass = 0; pass < (q ? 4 : 2); pass++) { + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, pass)); + if (op & 1) { + if (u) + gen_vfp_ulto(0, shift); + else + gen_vfp_slto(0, shift); + } else { + if (u) + gen_vfp_toul(0, shift); + else + gen_vfp_tosl(0, shift); + } + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, pass)); + } + } else { + return 1; + } + } else { /* (insn & 0x00380080) == 0 */ + int invert; + + op = (insn >> 8) & 0xf; + /* One register and immediate. */ + imm = (u << 7) | ((insn >> 12) & 0x70) | (insn & 0xf); + invert = (insn & (1 << 5)) != 0; + switch (op) { + case 0: case 1: + /* no-op */ + break; + case 2: case 3: + imm <<= 8; + break; + case 4: case 5: + imm <<= 16; + break; + case 6: case 7: + imm <<= 24; + break; + case 8: case 9: + imm |= imm << 16; + break; + case 10: case 11: + imm = (imm << 8) | (imm << 24); + break; + case 12: + imm = (imm < 8) | 0xff; + break; + case 13: + imm = (imm << 16) | 0xffff; + break; + case 14: + imm |= (imm << 8) | (imm << 16) | (imm << 24); + if (invert) + imm = ~imm; + break; + case 15: + imm = ((imm & 0x80) << 24) | ((imm & 0x3f) << 19) + | ((imm & 0x40) ? (0x1f << 25) : (1 << 30)); + break; + } + if (invert) + imm = ~imm; + + for (pass = 0; pass < (q ? 4 : 2); pass++) { + if (op & 1 && op < 12) { + tmp = neon_load_reg(rd, pass); + if (invert) { + /* The immediate value has already been inverted, so + BIC becomes AND. */ + tcg_gen_andi_i32(tmp, tmp, imm); + } else { + tcg_gen_ori_i32(tmp, tmp, imm); + } + } else { + /* VMOV, VMVN. */ + tmp = new_tmp(); + if (op == 14 && invert) { + uint32_t val; + val = 0; + for (n = 0; n < 4; n++) { + if (imm & (1 << (n + (pass & 1) * 4))) + val |= 0xff << (n * 8); + } + tcg_gen_movi_i32(tmp, val); + } else { + tcg_gen_movi_i32(tmp, imm); + } + } + neon_store_reg(rd, pass, tmp); + } + } + } else { /* (insn & 0x00800010 == 0x00800000) */ + if (size != 3) { + op = (insn >> 8) & 0xf; + if ((insn & (1 << 6)) == 0) { + /* Three registers of different lengths. */ + int src1_wide; + int src2_wide; + int prewiden; + /* prewiden, src1_wide, src2_wide */ + static const int neon_3reg_wide[16][3] = { + {1, 0, 0}, /* VADDL */ + {1, 1, 0}, /* VADDW */ + {1, 0, 0}, /* VSUBL */ + {1, 1, 0}, /* VSUBW */ + {0, 1, 1}, /* VADDHN */ + {0, 0, 0}, /* VABAL */ + {0, 1, 1}, /* VSUBHN */ + {0, 0, 0}, /* VABDL */ + {0, 0, 0}, /* VMLAL */ + {0, 0, 0}, /* VQDMLAL */ + {0, 0, 0}, /* VMLSL */ + {0, 0, 0}, /* VQDMLSL */ + {0, 0, 0}, /* Integer VMULL */ + {0, 0, 0}, /* VQDMULL */ + {0, 0, 0} /* Polynomial VMULL */ + }; + + prewiden = neon_3reg_wide[op][0]; + src1_wide = neon_3reg_wide[op][1]; + src2_wide = neon_3reg_wide[op][2]; + + if (size == 0 && (op == 9 || op == 11 || op == 13)) + return 1; + + /* Avoid overlapping operands. Wide source operands are + always aligned so will never overlap with wide + destinations in problematic ways. */ + if (rd == rm && !src2_wide) { + tmp = neon_load_reg(rm, 1); + neon_store_scratch(2, tmp); + } else if (rd == rn && !src1_wide) { + tmp = neon_load_reg(rn, 1); + neon_store_scratch(2, tmp); + } + TCGV_UNUSED(tmp3); + for (pass = 0; pass < 2; pass++) { + if (src1_wide) { + neon_load_reg64(cpu_V0, rn + pass); + TCGV_UNUSED(tmp); + } else { + if (pass == 1 && rd == rn) { + tmp = neon_load_scratch(2); + } else { + tmp = neon_load_reg(rn, pass); + } + if (prewiden) { + gen_neon_widen(cpu_V0, tmp, size, u); + } + } + if (src2_wide) { + neon_load_reg64(cpu_V1, rm + pass); + TCGV_UNUSED(tmp2); + } else { + if (pass == 1 && rd == rm) { + tmp2 = neon_load_scratch(2); + } else { + tmp2 = neon_load_reg(rm, pass); + } + if (prewiden) { + gen_neon_widen(cpu_V1, tmp2, size, u); + } + } + switch (op) { + case 0: case 1: case 4: /* VADDL, VADDW, VADDHN, VRADDHN */ + gen_neon_addl(size); + break; + case 2: case 3: case 6: /* VSUBL, VSUBW, VSUBHL, VRSUBHL */ + gen_neon_subl(size); + break; + case 5: case 7: /* VABAL, VABDL */ + switch ((size << 1) | u) { + case 0: + gen_helper_neon_abdl_s16(cpu_V0, tmp, tmp2); + break; + case 1: + gen_helper_neon_abdl_u16(cpu_V0, tmp, tmp2); + break; + case 2: + gen_helper_neon_abdl_s32(cpu_V0, tmp, tmp2); + break; + case 3: + gen_helper_neon_abdl_u32(cpu_V0, tmp, tmp2); + break; + case 4: + gen_helper_neon_abdl_s64(cpu_V0, tmp, tmp2); + break; + case 5: + gen_helper_neon_abdl_u64(cpu_V0, tmp, tmp2); + break; + default: abort(); + } + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 8: case 9: case 10: case 11: case 12: case 13: + /* VMLAL, VQDMLAL, VMLSL, VQDMLSL, VMULL, VQDMULL */ + gen_neon_mull(cpu_V0, tmp, tmp2, size, u); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 14: /* Polynomial VMULL */ + cpu_abort(env, "Polynomial VMULL not implemented"); + + default: /* 15 is RESERVED. */ + return 1; + } + if (op == 5 || op == 13 || (op >= 8 && op <= 11)) { + /* Accumulate. */ + if (op == 10 || op == 11) { + gen_neon_negl(cpu_V0, size); + } + + if (op != 13) { + neon_load_reg64(cpu_V1, rd + pass); + } + + switch (op) { + case 5: case 8: case 10: /* VABAL, VMLAL, VMLSL */ + gen_neon_addl(size); + break; + case 9: case 11: /* VQDMLAL, VQDMLSL */ + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + gen_neon_addl_saturate(cpu_V0, cpu_V1, size); + break; + /* Fall through. */ + case 13: /* VQDMULL */ + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + break; + default: + abort(); + } + neon_store_reg64(cpu_V0, rd + pass); + } else if (op == 4 || op == 6) { + /* Narrowing operation. */ + tmp = new_tmp(); + if (u) { + switch (size) { + case 0: + gen_helper_neon_narrow_high_u8(tmp, cpu_V0); + break; + case 1: + gen_helper_neon_narrow_high_u16(tmp, cpu_V0); + break; + case 2: + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(tmp, cpu_V0); + break; + default: abort(); + } + } else { + switch (size) { + case 0: + gen_helper_neon_narrow_round_high_u8(tmp, cpu_V0); + break; + case 1: + gen_helper_neon_narrow_round_high_u16(tmp, cpu_V0); + break; + case 2: + tcg_gen_addi_i64(cpu_V0, cpu_V0, 1u << 31); + tcg_gen_shri_i64(cpu_V0, cpu_V0, 32); + tcg_gen_trunc_i64_i32(tmp, cpu_V0); + break; + default: abort(); + } + } + if (pass == 0) { + tmp3 = tmp; + } else { + neon_store_reg(rd, 0, tmp3); + neon_store_reg(rd, 1, tmp); + } + } else { + /* Write back the result. */ + neon_store_reg64(cpu_V0, rd + pass); + } + } + } else { + /* Two registers and a scalar. */ + switch (op) { + case 0: /* Integer VMLA scalar */ + case 1: /* Float VMLA scalar */ + case 4: /* Integer VMLS scalar */ + case 5: /* Floating point VMLS scalar */ + case 8: /* Integer VMUL scalar */ + case 9: /* Floating point VMUL scalar */ + case 12: /* VQDMULH scalar */ + case 13: /* VQRDMULH scalar */ + tmp = neon_get_scalar(size, rm); + neon_store_scratch(0, tmp); + for (pass = 0; pass < (u ? 4 : 2); pass++) { + tmp = neon_load_scratch(0); + tmp2 = neon_load_reg(rn, pass); + if (op == 12) { + if (size == 1) { + gen_helper_neon_qdmulh_s16(tmp, cpu_env, tmp, tmp2); + } else { + gen_helper_neon_qdmulh_s32(tmp, cpu_env, tmp, tmp2); + } + } else if (op == 13) { + if (size == 1) { + gen_helper_neon_qrdmulh_s16(tmp, cpu_env, tmp, tmp2); + } else { + gen_helper_neon_qrdmulh_s32(tmp, cpu_env, tmp, tmp2); + } + } else if (op & 1) { + gen_helper_neon_mul_f32(tmp, tmp, tmp2); + } else { + switch (size) { + case 0: gen_helper_neon_mul_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_mul_u16(tmp, tmp, tmp2); break; + case 2: tcg_gen_mul_i32(tmp, tmp, tmp2); break; + default: return 1; + } + } + dead_tmp(tmp2); + if (op < 8) { + /* Accumulate. */ + tmp2 = neon_load_reg(rd, pass); + switch (op) { + case 0: + gen_neon_add(size, tmp, tmp2); + break; + case 1: + gen_helper_neon_add_f32(tmp, tmp, tmp2); + break; + case 4: + gen_neon_rsb(size, tmp, tmp2); + break; + case 5: + gen_helper_neon_sub_f32(tmp, tmp2, tmp); + break; + default: + abort(); + } + dead_tmp(tmp2); + } + neon_store_reg(rd, pass, tmp); + } + break; + case 2: /* VMLAL sclar */ + case 3: /* VQDMLAL scalar */ + case 6: /* VMLSL scalar */ + case 7: /* VQDMLSL scalar */ + case 10: /* VMULL scalar */ + case 11: /* VQDMULL scalar */ + if (size == 0 && (op == 3 || op == 7 || op == 11)) + return 1; + + tmp2 = neon_get_scalar(size, rm); + tmp3 = neon_load_reg(rn, 1); + + for (pass = 0; pass < 2; pass++) { + if (pass == 0) { + tmp = neon_load_reg(rn, 0); + } else { + tmp = tmp3; + } + gen_neon_mull(cpu_V0, tmp, tmp2, size, u); + dead_tmp(tmp); + if (op == 6 || op == 7) { + gen_neon_negl(cpu_V0, size); + } + if (op != 11) { + neon_load_reg64(cpu_V1, rd + pass); + } + switch (op) { + case 2: case 6: + gen_neon_addl(size); + break; + case 3: case 7: + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + gen_neon_addl_saturate(cpu_V0, cpu_V1, size); + break; + case 10: + /* no-op */ + break; + case 11: + gen_neon_addl_saturate(cpu_V0, cpu_V0, size); + break; + default: + abort(); + } + neon_store_reg64(cpu_V0, rd + pass); + } + + dead_tmp(tmp2); + + break; + default: /* 14 and 15 are RESERVED */ + return 1; + } + } + } else { /* size == 3 */ + if (!u) { + /* Extract. */ + imm = (insn >> 8) & 0xf; + count = q + 1; + + if (imm > 7 && !q) + return 1; + + if (imm == 0) { + neon_load_reg64(cpu_V0, rn); + if (q) { + neon_load_reg64(cpu_V1, rn + 1); + } + } else if (imm == 8) { + neon_load_reg64(cpu_V0, rn + 1); + if (q) { + neon_load_reg64(cpu_V1, rm); + } + } else if (q) { + tmp64 = tcg_temp_new_i64(); + if (imm < 8) { + neon_load_reg64(cpu_V0, rn); + neon_load_reg64(tmp64, rn + 1); + } else { + neon_load_reg64(cpu_V0, rn + 1); + neon_load_reg64(tmp64, rm); + } + tcg_gen_shri_i64(cpu_V0, cpu_V0, (imm & 7) * 8); + tcg_gen_shli_i64(cpu_V1, tmp64, 64 - ((imm & 7) * 8)); + tcg_gen_or_i64(cpu_V0, cpu_V0, cpu_V1); + if (imm < 8) { + neon_load_reg64(cpu_V1, rm); + } else { + neon_load_reg64(cpu_V1, rm + 1); + imm -= 8; + } + tcg_gen_shli_i64(cpu_V1, cpu_V1, 64 - (imm * 8)); + tcg_gen_shri_i64(tmp64, tmp64, imm * 8); + tcg_gen_or_i64(cpu_V1, cpu_V1, tmp64); + tcg_temp_free_i64(tmp64); + } else { + /* BUGFIX */ + neon_load_reg64(cpu_V0, rn); + tcg_gen_shri_i64(cpu_V0, cpu_V0, imm * 8); + neon_load_reg64(cpu_V1, rm); + tcg_gen_shli_i64(cpu_V1, cpu_V1, 64 - (imm * 8)); + tcg_gen_or_i64(cpu_V0, cpu_V0, cpu_V1); + } + neon_store_reg64(cpu_V0, rd); + if (q) { + neon_store_reg64(cpu_V1, rd + 1); + } + } else if ((insn & (1 << 11)) == 0) { + /* Two register misc. */ + op = ((insn >> 12) & 0x30) | ((insn >> 7) & 0xf); + size = (insn >> 18) & 3; + switch (op) { + case 0: /* VREV64 */ + if (size == 3) + return 1; + for (pass = 0; pass < (q ? 2 : 1); pass++) { + tmp = neon_load_reg(rm, pass * 2); + tmp2 = neon_load_reg(rm, pass * 2 + 1); + switch (size) { + case 0: tcg_gen_bswap32_i32(tmp, tmp); break; + case 1: gen_swap_half(tmp); break; + case 2: /* no-op */ break; + default: abort(); + } + neon_store_reg(rd, pass * 2 + 1, tmp); + if (size == 2) { + neon_store_reg(rd, pass * 2, tmp2); + } else { + switch (size) { + case 0: tcg_gen_bswap32_i32(tmp2, tmp2); break; + case 1: gen_swap_half(tmp2); break; + default: abort(); + } + neon_store_reg(rd, pass * 2, tmp2); + } + } + break; + case 4: case 5: /* VPADDL */ + case 12: case 13: /* VPADAL */ + if (size == 3) + return 1; + for (pass = 0; pass < q + 1; pass++) { + tmp = neon_load_reg(rm, pass * 2); + gen_neon_widen(cpu_V0, tmp, size, op & 1); + tmp = neon_load_reg(rm, pass * 2 + 1); + gen_neon_widen(cpu_V1, tmp, size, op & 1); + switch (size) { + case 0: gen_helper_neon_paddl_u16(CPU_V001); break; + case 1: gen_helper_neon_paddl_u32(CPU_V001); break; + case 2: tcg_gen_add_i64(CPU_V001); break; + default: abort(); + } + if (op >= 12) { + /* Accumulate. */ + neon_load_reg64(cpu_V1, rd + pass); + gen_neon_addl(size); + } + neon_store_reg64(cpu_V0, rd + pass); + } + break; + case 33: /* VTRN */ + if (size == 2) { + for (n = 0; n < (q ? 4 : 2); n += 2) { + tmp = neon_load_reg(rm, n); + tmp2 = neon_load_reg(rd, n + 1); + neon_store_reg(rm, n, tmp2); + neon_store_reg(rd, n + 1, tmp); + } + } else { + goto elementwise; + } + break; + case 34: /* VUZP */ + /* Reg Before After + Rd A3 A2 A1 A0 B2 B0 A2 A0 + Rm B3 B2 B1 B0 B3 B1 A3 A1 + */ + if (size == 3) + return 1; + gen_neon_unzip(rd, q, 0, size); + gen_neon_unzip(rm, q, 4, size); + if (q) { + static int unzip_order_q[8] = + {0, 2, 4, 6, 1, 3, 5, 7}; + for (n = 0; n < 8; n++) { + int reg = (n < 4) ? rd : rm; + tmp = neon_load_scratch(unzip_order_q[n]); + neon_store_reg(reg, n % 4, tmp); + } + } else { + static int unzip_order[4] = + {0, 4, 1, 5}; + for (n = 0; n < 4; n++) { + int reg = (n < 2) ? rd : rm; + tmp = neon_load_scratch(unzip_order[n]); + neon_store_reg(reg, n % 2, tmp); + } + } + break; + case 35: /* VZIP */ + /* Reg Before After + Rd A3 A2 A1 A0 B1 A1 B0 A0 + Rm B3 B2 B1 B0 B3 A3 B2 A2 + */ + if (size == 3) + return 1; + count = (q ? 4 : 2); + for (n = 0; n < count; n++) { + tmp = neon_load_reg(rd, n); + tmp2 = neon_load_reg(rd, n); + switch (size) { + case 0: gen_neon_zip_u8(tmp, tmp2); break; + case 1: gen_neon_zip_u16(tmp, tmp2); break; + case 2: /* no-op */; break; + default: abort(); + } + neon_store_scratch(n * 2, tmp); + neon_store_scratch(n * 2 + 1, tmp2); + } + for (n = 0; n < count * 2; n++) { + int reg = (n < count) ? rd : rm; + tmp = neon_load_scratch(n); + neon_store_reg(reg, n % count, tmp); + } + break; + case 36: case 37: /* VMOVN, VQMOVUN, VQMOVN */ + if (size == 3) + return 1; + TCGV_UNUSED(tmp2); + for (pass = 0; pass < 2; pass++) { + neon_load_reg64(cpu_V0, rm + pass); + tmp = new_tmp(); + if (op == 36 && q == 0) { + gen_neon_narrow(size, tmp, cpu_V0); + } else if (q) { + gen_neon_narrow_satu(size, tmp, cpu_V0); + } else { + gen_neon_narrow_sats(size, tmp, cpu_V0); + } + if (pass == 0) { + tmp2 = tmp; + } else { + neon_store_reg(rd, 0, tmp2); + neon_store_reg(rd, 1, tmp); + } + } + break; + case 38: /* VSHLL */ + if (q || size == 3) + return 1; + tmp = neon_load_reg(rm, 0); + tmp2 = neon_load_reg(rm, 1); + for (pass = 0; pass < 2; pass++) { + if (pass == 1) + tmp = tmp2; + gen_neon_widen(cpu_V0, tmp, size, 1); + neon_store_reg64(cpu_V0, rd + pass); + } + break; + case 44: /* VCVT.F16.F32 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp = new_tmp(); + tmp2 = new_tmp(); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 0)); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 1)); + gen_helper_vfp_fcvt_f32_to_f16(tmp2, cpu_F0s, cpu_env); + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_or_i32(tmp2, tmp2, tmp); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 2)); + gen_helper_vfp_fcvt_f32_to_f16(tmp, cpu_F0s, cpu_env); + tcg_gen_ld_f32(cpu_F0s, cpu_env, neon_reg_offset(rm, 3)); + neon_store_reg(rd, 0, tmp2); + tmp2 = new_tmp(); + gen_helper_vfp_fcvt_f32_to_f16(tmp2, cpu_F0s, cpu_env); + tcg_gen_shli_i32(tmp2, tmp2, 16); + tcg_gen_or_i32(tmp2, tmp2, tmp); + neon_store_reg(rd, 1, tmp2); + dead_tmp(tmp); + break; + case 46: /* VCVT.F32.F16 */ + if (!arm_feature(env, ARM_FEATURE_VFP_FP16)) + return 1; + tmp3 = new_tmp(); + tmp = neon_load_reg(rm, 0); + tmp2 = neon_load_reg(rm, 1); + tcg_gen_ext16u_i32(tmp3, tmp); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 0)); + tcg_gen_shri_i32(tmp3, tmp, 16); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 1)); + dead_tmp(tmp); + tcg_gen_ext16u_i32(tmp3, tmp2); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 2)); + tcg_gen_shri_i32(tmp3, tmp2, 16); + gen_helper_vfp_fcvt_f16_to_f32(cpu_F0s, tmp3, cpu_env); + tcg_gen_st_f32(cpu_F0s, cpu_env, neon_reg_offset(rd, 3)); + dead_tmp(tmp2); + dead_tmp(tmp3); + break; + default: + elementwise: + for (pass = 0; pass < (q ? 4 : 2); pass++) { + if (op == 30 || op == 31 || op >= 58) { + tcg_gen_ld_f32(cpu_F0s, cpu_env, + neon_reg_offset(rm, pass)); + TCGV_UNUSED(tmp); + } else { + tmp = neon_load_reg(rm, pass); + } + switch (op) { + case 1: /* VREV32 */ + switch (size) { + case 0: tcg_gen_bswap32_i32(tmp, tmp); break; + case 1: gen_swap_half(tmp); break; + default: return 1; + } + break; + case 2: /* VREV16 */ + if (size != 0) + return 1; + gen_rev16(tmp); + break; + case 8: /* CLS */ + switch (size) { + case 0: gen_helper_neon_cls_s8(tmp, tmp); break; + case 1: gen_helper_neon_cls_s16(tmp, tmp); break; + case 2: gen_helper_neon_cls_s32(tmp, tmp); break; + default: return 1; + } + break; + case 9: /* CLZ */ + switch (size) { + case 0: gen_helper_neon_clz_u8(tmp, tmp); break; + case 1: gen_helper_neon_clz_u16(tmp, tmp); break; + case 2: gen_helper_clz(tmp, tmp); break; + default: return 1; + } + break; + case 10: /* CNT */ + if (size != 0) + return 1; + gen_helper_neon_cnt_u8(tmp, tmp); + break; + case 11: /* VNOT */ + if (size != 0) + return 1; + tcg_gen_not_i32(tmp, tmp); + break; + case 14: /* VQABS */ + switch (size) { + case 0: gen_helper_neon_qabs_s8(tmp, cpu_env, tmp); break; + case 1: gen_helper_neon_qabs_s16(tmp, cpu_env, tmp); break; + case 2: gen_helper_neon_qabs_s32(tmp, cpu_env, tmp); break; + default: return 1; + } + break; + case 15: /* VQNEG */ + switch (size) { + case 0: gen_helper_neon_qneg_s8(tmp, cpu_env, tmp); break; + case 1: gen_helper_neon_qneg_s16(tmp, cpu_env, tmp); break; + case 2: gen_helper_neon_qneg_s32(tmp, cpu_env, tmp); break; + default: return 1; + } + break; + case 16: case 19: /* VCGT #0, VCLE #0 */ + tmp2 = tcg_const_i32(0); + switch(size) { + case 0: gen_helper_neon_cgt_s8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_cgt_s16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_cgt_s32(tmp, tmp, tmp2); break; + default: return 1; + } + tcg_temp_free(tmp2); + if (op == 19) + tcg_gen_not_i32(tmp, tmp); + break; + case 17: case 20: /* VCGE #0, VCLT #0 */ + tmp2 = tcg_const_i32(0); + switch(size) { + case 0: gen_helper_neon_cge_s8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_cge_s16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_cge_s32(tmp, tmp, tmp2); break; + default: return 1; + } + tcg_temp_free(tmp2); + if (op == 20) + tcg_gen_not_i32(tmp, tmp); + break; + case 18: /* VCEQ #0 */ + tmp2 = tcg_const_i32(0); + switch(size) { + case 0: gen_helper_neon_ceq_u8(tmp, tmp, tmp2); break; + case 1: gen_helper_neon_ceq_u16(tmp, tmp, tmp2); break; + case 2: gen_helper_neon_ceq_u32(tmp, tmp, tmp2); break; + default: return 1; + } + tcg_temp_free(tmp2); + break; + case 22: /* VABS */ + switch(size) { + case 0: gen_helper_neon_abs_s8(tmp, tmp); break; + case 1: gen_helper_neon_abs_s16(tmp, tmp); break; + case 2: tcg_gen_abs_i32(tmp, tmp); break; + default: return 1; + } + break; + case 23: /* VNEG */ + if (size == 3) + return 1; + tmp2 = tcg_const_i32(0); + gen_neon_rsb(size, tmp, tmp2); + tcg_temp_free(tmp2); + break; + case 24: case 27: /* Float VCGT #0, Float VCLE #0 */ + tmp2 = tcg_const_i32(0); + gen_helper_neon_cgt_f32(tmp, tmp, tmp2); + tcg_temp_free(tmp2); + if (op == 27) + tcg_gen_not_i32(tmp, tmp); + break; + case 25: case 28: /* Float VCGE #0, Float VCLT #0 */ + tmp2 = tcg_const_i32(0); + gen_helper_neon_cge_f32(tmp, tmp, tmp2); + tcg_temp_free(tmp2); + if (op == 28) + tcg_gen_not_i32(tmp, tmp); + break; + case 26: /* Float VCEQ #0 */ + tmp2 = tcg_const_i32(0); + gen_helper_neon_ceq_f32(tmp, tmp, tmp2); + tcg_temp_free(tmp2); + break; + case 30: /* Float VABS */ + gen_vfp_abs(0); + break; + case 31: /* Float VNEG */ + gen_vfp_neg(0); + break; + case 32: /* VSWP */ + tmp2 = neon_load_reg(rd, pass); + neon_store_reg(rm, pass, tmp2); + break; + case 33: /* VTRN */ + tmp2 = neon_load_reg(rd, pass); + switch (size) { + case 0: gen_neon_trn_u8(tmp, tmp2); break; + case 1: gen_neon_trn_u16(tmp, tmp2); break; + case 2: abort(); + default: return 1; + } + neon_store_reg(rm, pass, tmp2); + break; + case 56: /* Integer VRECPE */ + gen_helper_recpe_u32(tmp, tmp, cpu_env); + break; + case 57: /* Integer VRSQRTE */ + gen_helper_rsqrte_u32(tmp, tmp, cpu_env); + break; + case 58: /* Float VRECPE */ + gen_helper_recpe_f32(cpu_F0s, cpu_F0s, cpu_env); + break; + case 59: /* Float VRSQRTE */ + gen_helper_rsqrte_f32(cpu_F0s, cpu_F0s, cpu_env); + break; + case 60: /* VCVT.F32.S32 */ + gen_vfp_tosiz(0); + break; + case 61: /* VCVT.F32.U32 */ + gen_vfp_touiz(0); + break; + case 62: /* VCVT.S32.F32 */ + gen_vfp_sito(0); + break; + case 63: /* VCVT.U32.F32 */ + gen_vfp_uito(0); + break; + default: + /* Reserved: 21, 29, 39-56 */ + return 1; + } + if (op == 30 || op == 31 || op >= 58) { + tcg_gen_st_f32(cpu_F0s, cpu_env, + neon_reg_offset(rd, pass)); + } else { + neon_store_reg(rd, pass, tmp); + } + } + break; + } + } else if ((insn & (1 << 10)) == 0) { + /* VTBL, VTBX. */ + n = ((insn >> 5) & 0x18) + 8; + if (insn & (1 << 6)) { + tmp = neon_load_reg(rd, 0); + } else { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } + tmp2 = neon_load_reg(rm, 0); + tmp4 = tcg_const_i32(rn); + tmp5 = tcg_const_i32(n); + gen_helper_neon_tbl(tmp2, tmp2, tmp, tmp4, tmp5); + dead_tmp(tmp); + if (insn & (1 << 6)) { + tmp = neon_load_reg(rd, 1); + } else { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } + tmp3 = neon_load_reg(rm, 1); + gen_helper_neon_tbl(tmp3, tmp3, tmp, tmp4, tmp5); + tcg_temp_free_i32(tmp5); + tcg_temp_free_i32(tmp4); + neon_store_reg(rd, 0, tmp2); + neon_store_reg(rd, 1, tmp3); + dead_tmp(tmp); + } else if ((insn & 0x380) == 0) { + /* VDUP */ + if (insn & (1 << 19)) { + tmp = neon_load_reg(rm, 1); + } else { + tmp = neon_load_reg(rm, 0); + } + if (insn & (1 << 16)) { + gen_neon_dup_u8(tmp, ((insn >> 17) & 3) * 8); + } else if (insn & (1 << 17)) { + if ((insn >> 18) & 1) + gen_neon_dup_high16(tmp); + else + gen_neon_dup_low16(tmp); + } + for (pass = 0; pass < (q ? 4 : 2); pass++) { + tmp2 = new_tmp(); + tcg_gen_mov_i32(tmp2, tmp); + neon_store_reg(rd, pass, tmp2); + } + dead_tmp(tmp); + } else { + return 1; + } + } + } + return 0; +} + +static int disas_cp14_read(CPUState * env, DisasContext *s, uint32_t insn) +{ + int crn = (insn >> 16) & 0xf; + int crm = insn & 0xf; + int op1 = (insn >> 21) & 7; + int op2 = (insn >> 5) & 7; + int rt = (insn >> 12) & 0xf; + TCGv tmp; + + if (arm_feature(env, ARM_FEATURE_THUMB2EE)) { + if (op1 == 6 && crn == 0 && crm == 0 && op2 == 0) { + /* TEECR */ + if (IS_USER(s)) + return 1; + tmp = load_cpu_field(teecr); + store_reg(s, rt, tmp); + return 0; + } + if (op1 == 6 && crn == 1 && crm == 0 && op2 == 0) { + /* TEEHBR */ + if (IS_USER(s) && (env->teecr & 1)) + return 1; + tmp = load_cpu_field(teehbr); + store_reg(s, rt, tmp); + return 0; + } + } + fprintf(stderr, "Unknown cp14 read op1:%d crn:%d crm:%d op2:%d\n", + op1, crn, crm, op2); + return 1; +} + +static int disas_cp14_write(CPUState * env, DisasContext *s, uint32_t insn) +{ + int crn = (insn >> 16) & 0xf; + int crm = insn & 0xf; + int op1 = (insn >> 21) & 7; + int op2 = (insn >> 5) & 7; + int rt = (insn >> 12) & 0xf; + TCGv tmp; + + if (arm_feature(env, ARM_FEATURE_THUMB2EE)) { + if (op1 == 6 && crn == 0 && crm == 0 && op2 == 0) { + /* TEECR */ + if (IS_USER(s)) + return 1; + tmp = load_reg(s, rt); + gen_helper_set_teecr(cpu_env, tmp); + dead_tmp(tmp); + return 0; + } + if (op1 == 6 && crn == 1 && crm == 0 && op2 == 0) { + /* TEEHBR */ + if (IS_USER(s) && (env->teecr & 1)) + return 1; + tmp = load_reg(s, rt); + store_cpu_field(tmp, teehbr); + return 0; + } + } + fprintf(stderr, "Unknown cp14 write op1:%d crn:%d crm:%d op2:%d\n", + op1, crn, crm, op2); + return 1; +} + +static int disas_coproc_insn(CPUState * env, DisasContext *s, uint32_t insn) +{ + int cpnum; + + cpnum = (insn >> 8) & 0xf; + if (arm_feature(env, ARM_FEATURE_XSCALE) + && ((env->cp15.c15_cpar ^ 0x3fff) & (1 << cpnum))) + return 1; + + switch (cpnum) { + case 0: + case 1: + if (arm_feature(env, ARM_FEATURE_IWMMXT)) { + return disas_iwmmxt_insn(env, s, insn); + } else if (arm_feature(env, ARM_FEATURE_XSCALE)) { + return disas_dsp_insn(env, s, insn); + } + return 1; + case 10: + case 11: + return disas_vfp_insn (env, s, insn); + case 14: + /* Coprocessors 7-15 are architecturally reserved by ARM. + Unfortunately Intel decided to ignore this. */ + if (arm_feature(env, ARM_FEATURE_XSCALE)) + goto board; + if (insn & (1 << 20)) + return disas_cp14_read(env, s, insn); + else + return disas_cp14_write(env, s, insn); + case 15: + return disas_cp15_insn (env, s, insn); + default: + board: + /* Unknown coprocessor. See if the board has hooked it. */ + return disas_cp_insn (env, s, insn); + } +} + + +/* Store a 64-bit value to a register pair. Clobbers val. */ +static void gen_storeq_reg(DisasContext *s, int rlow, int rhigh, TCGv_i64 val) +{ + TCGv tmp; + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, val); + store_reg(s, rlow, tmp); + tmp = new_tmp(); + tcg_gen_shri_i64(val, val, 32); + tcg_gen_trunc_i64_i32(tmp, val); + store_reg(s, rhigh, tmp); +} + +/* load a 32-bit value from a register and perform a 64-bit accumulate. */ +static void gen_addq_lo(DisasContext *s, TCGv_i64 val, int rlow) +{ + TCGv_i64 tmp; + TCGv tmp2; + + /* Load value and extend to 64 bits. */ + tmp = tcg_temp_new_i64(); + tmp2 = load_reg(s, rlow); + tcg_gen_extu_i32_i64(tmp, tmp2); + dead_tmp(tmp2); + tcg_gen_add_i64(val, val, tmp); + tcg_temp_free_i64(tmp); +} + +/* load and add a 64-bit value from a register pair. */ +static void gen_addq(DisasContext *s, TCGv_i64 val, int rlow, int rhigh) +{ + TCGv_i64 tmp; + TCGv tmpl; + TCGv tmph; + + /* Load 64-bit value rd:rn. */ + tmpl = load_reg(s, rlow); + tmph = load_reg(s, rhigh); + tmp = tcg_temp_new_i64(); + tcg_gen_concat_i32_i64(tmp, tmpl, tmph); + dead_tmp(tmpl); + dead_tmp(tmph); + tcg_gen_add_i64(val, val, tmp); + tcg_temp_free_i64(tmp); +} + +/* Set N and Z flags from a 64-bit value. */ +static void gen_logicq_cc(TCGv_i64 val) +{ + TCGv tmp = new_tmp(); + gen_helper_logicq_cc(tmp, val); + gen_logic_CC(tmp); + dead_tmp(tmp); +} + +/* Load/Store exclusive instructions are implemented by remembering + the value/address loaded, and seeing if these are the same + when the store is performed. This should be is sufficient to implement + the architecturally mandated semantics, and avoids having to monitor + regular stores. + + In system emulation mode only one CPU will be running at once, so + this sequence is effectively atomic. In user emulation mode we + throw an exception and handle the atomic operation elsewhere. */ +static void gen_load_exclusive(DisasContext *s, int rt, int rt2, + TCGv addr, int size) +{ + TCGv tmp; + + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + case 3: + tmp = gen_ld32(addr, IS_USER(s)); + break; + default: + abort(); + } + tcg_gen_mov_i32(cpu_exclusive_val, tmp); + store_reg(s, rt, tmp); + if (size == 3) { + tcg_gen_addi_i32(addr, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + tcg_gen_mov_i32(cpu_exclusive_high, tmp); + store_reg(s, rt2, tmp); + } + tcg_gen_mov_i32(cpu_exclusive_addr, addr); +} + +static void gen_clrex(DisasContext *s) +{ + tcg_gen_movi_i32(cpu_exclusive_addr, -1); +} + +#ifdef CONFIG_USER_ONLY +static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2, + TCGv addr, int size) +{ + tcg_gen_mov_i32(cpu_exclusive_test, addr); + tcg_gen_movi_i32(cpu_exclusive_info, + size | (rd << 4) | (rt << 8) | (rt2 << 12)); + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_STREX); + s->is_jmp = DISAS_JUMP; +} +#else +static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2, + TCGv addr, int size) +{ + TCGv tmp; + int done_label; + int fail_label; + + /* if (env->exclusive_addr == addr && env->exclusive_val == [addr]) { + [addr] = {Rt}; + {Rd} = 0; + } else { + {Rd} = 1; + } */ + fail_label = gen_new_label(); + done_label = gen_new_label(); + tcg_gen_brcond_i32(TCG_COND_NE, addr, cpu_exclusive_addr, fail_label); + switch (size) { + case 0: + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + case 3: + tmp = gen_ld32(addr, IS_USER(s)); + break; + default: + abort(); + } + tcg_gen_brcond_i32(TCG_COND_NE, tmp, cpu_exclusive_val, fail_label); + dead_tmp(tmp); + if (size == 3) { + TCGv tmp2 = new_tmp(); + tcg_gen_addi_i32(tmp2, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + dead_tmp(tmp2); + tcg_gen_brcond_i32(TCG_COND_NE, tmp, cpu_exclusive_high, fail_label); + dead_tmp(tmp); + } + tmp = load_reg(s, rt); + switch (size) { + case 0: + gen_st8(tmp, addr, IS_USER(s)); + break; + case 1: + gen_st16(tmp, addr, IS_USER(s)); + break; + case 2: + case 3: + gen_st32(tmp, addr, IS_USER(s)); + break; + default: + abort(); + } + if (size == 3) { + tcg_gen_addi_i32(addr, addr, 4); + tmp = load_reg(s, rt2); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_movi_i32(cpu_R[rd], 0); + tcg_gen_br(done_label); + gen_set_label(fail_label); + tcg_gen_movi_i32(cpu_R[rd], 1); + gen_set_label(done_label); + tcg_gen_movi_i32(cpu_exclusive_addr, -1); +} +#endif + +static void disas_arm_insn(CPUState * env, DisasContext *s) +{ + unsigned int cond, insn, val, op1, i, shift, rm, rs, rn, rd, sh; + TCGv tmp; + TCGv tmp2; + TCGv tmp3; + TCGv addr; + TCGv_i64 tmp64; + + insn = ldl_code(s->pc); + s->pc += 4; + + /* M variants do not implement ARM mode. */ + if (IS_M(env)) + goto illegal_op; + cond = insn >> 28; + if (cond == 0xf){ + /* Unconditional instructions. */ + if (((insn >> 25) & 7) == 1) { + /* NEON Data processing. */ + if (!arm_feature(env, ARM_FEATURE_NEON)) + goto illegal_op; + + if (disas_neon_data_insn(env, s, insn)) + goto illegal_op; + return; + } + if ((insn & 0x0f100000) == 0x04000000) { + /* NEON load/store. */ + if (!arm_feature(env, ARM_FEATURE_NEON)) + goto illegal_op; + + if (disas_neon_ls_insn(env, s, insn)) + goto illegal_op; + return; + } + if ((insn & 0x0d70f000) == 0x0550f000) + return; /* PLD */ + else if ((insn & 0x0ffffdff) == 0x01010000) { + ARCH(6); + /* setend */ + if (insn & (1 << 9)) { + /* BE8 mode not implemented. */ + goto illegal_op; + } + return; + } else if ((insn & 0x0fffff00) == 0x057ff000) { + switch ((insn >> 4) & 0xf) { + case 1: /* clrex */ + ARCH(6K); + gen_clrex(s); + return; + case 4: /* dsb */ + case 5: /* dmb */ + case 6: /* isb */ + ARCH(7); + /* We don't emulate caches so these are a no-op. */ + return; + default: + goto illegal_op; + } + } else if ((insn & 0x0e5fffe0) == 0x084d0500) { + /* srs */ + int32_t offset; + if (IS_USER(s)) + goto illegal_op; + ARCH(6); + op1 = (insn & 0x1f); + if (op1 == (env->uncached_cpsr & CPSR_M)) { + addr = load_reg(s, 13); + } else { + addr = new_tmp(); + tmp = tcg_const_i32(op1); + gen_helper_get_r13_banked(addr, cpu_env, tmp); + tcg_temp_free_i32(tmp); + } + i = (insn >> 23) & 3; + switch (i) { + case 0: offset = -4; break; /* DA */ + case 1: offset = 0; break; /* IA */ + case 2: offset = -8; break; /* DB */ + case 3: offset = 4; break; /* IB */ + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + tmp = load_reg(s, 14); + gen_st32(tmp, addr, 0); + tmp = load_cpu_field(spsr); + tcg_gen_addi_i32(addr, addr, 4); + gen_st32(tmp, addr, 0); + if (insn & (1 << 21)) { + /* Base writeback. */ + switch (i) { + case 0: offset = -8; break; + case 1: offset = 4; break; + case 2: offset = -4; break; + case 3: offset = 0; break; + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + if (op1 == (env->uncached_cpsr & CPSR_M)) { + store_reg(s, 13, addr); + } else { + tmp = tcg_const_i32(op1); + gen_helper_set_r13_banked(cpu_env, tmp, addr); + tcg_temp_free_i32(tmp); + dead_tmp(addr); + } + } else { + dead_tmp(addr); + } + } else if ((insn & 0x0e5fffe0) == 0x081d0a00) { + /* rfe */ + int32_t offset; + if (IS_USER(s)) + goto illegal_op; + ARCH(6); + rn = (insn >> 16) & 0xf; + addr = load_reg(s, rn); + i = (insn >> 23) & 3; + switch (i) { + case 0: offset = -4; break; /* DA */ + case 1: offset = 0; break; /* IA */ + case 2: offset = -8; break; /* DB */ + case 3: offset = 4; break; /* IB */ + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + /* Load PC into tmp and CPSR into tmp2. */ + tmp = gen_ld32(addr, 0); + tcg_gen_addi_i32(addr, addr, 4); + tmp2 = gen_ld32(addr, 0); + if (insn & (1 << 21)) { + /* Base writeback. */ + switch (i) { + case 0: offset = -8; break; + case 1: offset = 4; break; + case 2: offset = -4; break; + case 3: offset = 0; break; + default: abort(); + } + if (offset) + tcg_gen_addi_i32(addr, addr, offset); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + gen_rfe(s, tmp, tmp2); + return; + } else if ((insn & 0x0e000000) == 0x0a000000) { + /* branch link and change to thumb (blx ) */ + int32_t offset; + + val = (uint32_t)s->pc; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + store_reg(s, 14, tmp); + /* Sign-extend the 24-bit offset */ + offset = (((int32_t)insn) << 8) >> 8; + /* offset * 4 + bit24 * 2 + (thumb bit) */ + val += (offset << 2) | ((insn >> 23) & 2) | 1; + /* pipeline offset */ + val += 4; + gen_bx_im(s, val); + return; + } else if ((insn & 0x0e000f00) == 0x0c000100) { + if (arm_feature(env, ARM_FEATURE_IWMMXT)) { + /* iWMMXt register transfer. */ + if (env->cp15.c15_cpar & (1 << 1)) + if (!disas_iwmmxt_insn(env, s, insn)) + return; + } + } else if ((insn & 0x0fe00000) == 0x0c400000) { + /* Coprocessor double register transfer. */ + } else if ((insn & 0x0f000010) == 0x0e000010) { + /* Additional coprocessor register transfer. */ + } else if ((insn & 0x0ff10020) == 0x01000000) { + uint32_t mask; + uint32_t val; + /* cps (privileged) */ + if (IS_USER(s)) + return; + mask = val = 0; + if (insn & (1 << 19)) { + if (insn & (1 << 8)) + mask |= CPSR_A; + if (insn & (1 << 7)) + mask |= CPSR_I; + if (insn & (1 << 6)) + mask |= CPSR_F; + if (insn & (1 << 18)) + val |= mask; + } + if (insn & (1 << 17)) { + mask |= CPSR_M; + val |= (insn & 0x1f); + } + if (mask) { + gen_set_psr_im(s, mask, 0, val); + } + return; + } + goto illegal_op; + } + if (cond != 0xe) { + /* if not always execute, we generate a conditional jump to + next instruction */ + s->condlabel = gen_new_label(); + gen_test_cc(cond ^ 1, s->condlabel); + s->condjmp = 1; + } + if ((insn & 0x0f900000) == 0x03000000) { + if ((insn & (1 << 21)) == 0) { + ARCH(6T2); + rd = (insn >> 12) & 0xf; + val = ((insn >> 4) & 0xf000) | (insn & 0xfff); + if ((insn & (1 << 22)) == 0) { + /* MOVW */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + } else { + /* MOVT */ + tmp = load_reg(s, rd); + tcg_gen_ext16u_i32(tmp, tmp); + tcg_gen_ori_i32(tmp, tmp, val << 16); + } + store_reg(s, rd, tmp); + } else { + if (((insn >> 12) & 0xf) != 0xf) + goto illegal_op; + if (((insn >> 16) & 0xf) == 0) { + gen_nop_hint(s, insn & 0xff); + } else { + /* CPSR = immediate */ + val = insn & 0xff; + shift = ((insn >> 8) & 0xf) * 2; + if (shift) + val = (val >> shift) | (val << (32 - shift)); + i = ((insn & (1 << 22)) != 0); + if (gen_set_psr_im(s, msr_mask(env, s, (insn >> 16) & 0xf, i), i, val)) + goto illegal_op; + } + } + } else if ((insn & 0x0f900000) == 0x01000000 + && (insn & 0x00000090) != 0x00000090) { + /* miscellaneous instructions */ + op1 = (insn >> 21) & 3; + sh = (insn >> 4) & 0xf; + rm = insn & 0xf; + switch (sh) { + case 0x0: /* move program status register */ + if (op1 & 1) { + /* PSR = reg */ + tmp = load_reg(s, rm); + i = ((op1 & 2) != 0); + if (gen_set_psr(s, msr_mask(env, s, (insn >> 16) & 0xf, i), i, tmp)) + goto illegal_op; + } else { + /* reg = PSR */ + rd = (insn >> 12) & 0xf; + if (op1 & 2) { + if (IS_USER(s)) + goto illegal_op; + tmp = load_cpu_field(spsr); + } else { + tmp = new_tmp(); + gen_helper_cpsr_read(tmp); + } + store_reg(s, rd, tmp); + } + break; + case 0x1: + if (op1 == 1) { + /* branch/exchange thumb (bx). */ + tmp = load_reg(s, rm); + gen_bx(s, tmp); + } else if (op1 == 3) { + /* clz */ + rd = (insn >> 12) & 0xf; + tmp = load_reg(s, rm); + gen_helper_clz(tmp, tmp); + store_reg(s, rd, tmp); + } else { + goto illegal_op; + } + break; + case 0x2: + if (op1 == 1) { + ARCH(5J); /* bxj */ + /* Trivial implementation equivalent to bx. */ + tmp = load_reg(s, rm); + gen_bx(s, tmp); + } else { + goto illegal_op; + } + break; + case 0x3: + if (op1 != 1) + goto illegal_op; + + /* branch link/exchange thumb (blx) */ + tmp = load_reg(s, rm); + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, s->pc); + store_reg(s, 14, tmp2); + gen_bx(s, tmp); + break; + case 0x5: /* saturating add/subtract */ + rd = (insn >> 12) & 0xf; + rn = (insn >> 16) & 0xf; + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rn); + if (op1 & 2) + gen_helper_double_saturate(tmp2, tmp2); + if (op1 & 1) + gen_helper_sub_saturate(tmp, tmp, tmp2); + else + gen_helper_add_saturate(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 7: /* bkpt */ + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_BKPT); + s->is_jmp = DISAS_JUMP; + break; + case 0x8: /* signed multiply */ + case 0xa: + case 0xc: + case 0xe: + rs = (insn >> 8) & 0xf; + rn = (insn >> 12) & 0xf; + rd = (insn >> 16) & 0xf; + if (op1 == 1) { + /* (32 * 16) >> 16 */ + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + if (sh & 4) + tcg_gen_sari_i32(tmp2, tmp2, 16); + else + gen_sxth(tmp2); + tmp64 = gen_muls_i64_i32(tmp, tmp2); + tcg_gen_shri_i64(tmp64, tmp64, 16); + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, tmp64); + tcg_temp_free_i64(tmp64); + if ((sh & 2) == 0) { + tmp2 = load_reg(s, rn); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rd, tmp); + } else { + /* 16 * 16 */ + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + gen_mulxy(tmp, tmp2, sh & 2, sh & 4); + dead_tmp(tmp2); + if (op1 == 2) { + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + gen_addq(s, tmp64, rn, rd); + gen_storeq_reg(s, rn, rd, tmp64); + tcg_temp_free_i64(tmp64); + } else { + if (op1 == 0) { + tmp2 = load_reg(s, rn); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rd, tmp); + } + } + break; + default: + goto illegal_op; + } + } else if (((insn & 0x0e000000) == 0 && + (insn & 0x00000090) != 0x90) || + ((insn & 0x0e000000) == (1 << 25))) { + int set_cc, logic_cc, shiftop; + + op1 = (insn >> 21) & 0xf; + set_cc = (insn >> 20) & 1; + logic_cc = table_logic_cc[op1] & set_cc; + + /* data processing instruction */ + if (insn & (1 << 25)) { + /* immediate operand */ + val = insn & 0xff; + shift = ((insn >> 8) & 0xf) * 2; + if (shift) { + val = (val >> shift) | (val << (32 - shift)); + } + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, val); + if (logic_cc && shift) { + gen_set_CF_bit31(tmp2); + } + } else { + /* register */ + rm = (insn) & 0xf; + tmp2 = load_reg(s, rm); + shiftop = (insn >> 5) & 3; + if (!(insn & (1 << 4))) { + shift = (insn >> 7) & 0x1f; + gen_arm_shift_im(tmp2, shiftop, shift, logic_cc); + } else { + rs = (insn >> 8) & 0xf; + tmp = load_reg(s, rs); + gen_arm_shift_reg(tmp2, shiftop, tmp, logic_cc); + } + } + if (op1 != 0x0f && op1 != 0x0d) { + rn = (insn >> 16) & 0xf; + tmp = load_reg(s, rn); + } else { + TCGV_UNUSED(tmp); + } + rd = (insn >> 12) & 0xf; + switch(op1) { + case 0x00: + tcg_gen_and_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x01: + tcg_gen_xor_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x02: + if (set_cc && rd == 15) { + /* SUBS r15, ... is used for exception return. */ + if (IS_USER(s)) { + goto illegal_op; + } + gen_helper_sub_cc(tmp, tmp, tmp2); + gen_exception_return(s, tmp); + } else { + if (set_cc) { + gen_helper_sub_cc(tmp, tmp, tmp2); + } else { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + } + break; + case 0x03: + if (set_cc) { + gen_helper_sub_cc(tmp, tmp2, tmp); + } else { + tcg_gen_sub_i32(tmp, tmp2, tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x04: + if (set_cc) { + gen_helper_add_cc(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x05: + if (set_cc) { + gen_helper_adc_cc(tmp, tmp, tmp2); + } else { + gen_add_carry(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x06: + if (set_cc) { + gen_helper_sbc_cc(tmp, tmp, tmp2); + } else { + gen_sub_carry(tmp, tmp, tmp2); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x07: + if (set_cc) { + gen_helper_sbc_cc(tmp, tmp2, tmp); + } else { + gen_sub_carry(tmp, tmp2, tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x08: + if (set_cc) { + tcg_gen_and_i32(tmp, tmp, tmp2); + gen_logic_CC(tmp); + } + dead_tmp(tmp); + break; + case 0x09: + if (set_cc) { + tcg_gen_xor_i32(tmp, tmp, tmp2); + gen_logic_CC(tmp); + } + dead_tmp(tmp); + break; + case 0x0a: + if (set_cc) { + gen_helper_sub_cc(tmp, tmp, tmp2); + } + dead_tmp(tmp); + break; + case 0x0b: + if (set_cc) { + gen_helper_add_cc(tmp, tmp, tmp2); + } + dead_tmp(tmp); + break; + case 0x0c: + tcg_gen_or_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + case 0x0d: + if (logic_cc && rd == 15) { + /* MOVS r15, ... is used for exception return. */ + if (IS_USER(s)) { + goto illegal_op; + } + gen_exception_return(s, tmp2); + } else { + if (logic_cc) { + gen_logic_CC(tmp2); + } + store_reg_bx(env, s, rd, tmp2); + } + break; + case 0x0e: + tcg_gen_andc_i32(tmp, tmp, tmp2); + if (logic_cc) { + gen_logic_CC(tmp); + } + store_reg_bx(env, s, rd, tmp); + break; + default: + case 0x0f: + tcg_gen_not_i32(tmp2, tmp2); + if (logic_cc) { + gen_logic_CC(tmp2); + } + store_reg_bx(env, s, rd, tmp2); + break; + } + if (op1 != 0x0f && op1 != 0x0d) { + dead_tmp(tmp2); + } + } else { + /* other instructions */ + op1 = (insn >> 24) & 0xf; + switch(op1) { + case 0x0: + case 0x1: + /* multiplies, extra load/stores */ + sh = (insn >> 5) & 3; + if (sh == 0) { + if (op1 == 0x0) { + rd = (insn >> 16) & 0xf; + rn = (insn >> 12) & 0xf; + rs = (insn >> 8) & 0xf; + rm = (insn) & 0xf; + op1 = (insn >> 20) & 0xf; + switch (op1) { + case 0: case 1: case 2: case 3: case 6: + /* 32 bit mul */ + tmp = load_reg(s, rs); + tmp2 = load_reg(s, rm); + tcg_gen_mul_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (insn & (1 << 22)) { + /* Subtract (mls) */ + ARCH(6T2); + tmp2 = load_reg(s, rn); + tcg_gen_sub_i32(tmp, tmp2, tmp); + dead_tmp(tmp2); + } else if (insn & (1 << 21)) { + /* Add */ + tmp2 = load_reg(s, rn); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + if (insn & (1 << 20)) + gen_logic_CC(tmp); + store_reg(s, rd, tmp); + break; + default: + /* 64 bit mul */ + tmp = load_reg(s, rs); + tmp2 = load_reg(s, rm); + if (insn & (1 << 22)) + tmp64 = gen_muls_i64_i32(tmp, tmp2); + else + tmp64 = gen_mulu_i64_i32(tmp, tmp2); + if (insn & (1 << 21)) /* mult accumulate */ + gen_addq(s, tmp64, rn, rd); + if (!(insn & (1 << 23))) { /* double accumulate */ + ARCH(6); + gen_addq_lo(s, tmp64, rn); + gen_addq_lo(s, tmp64, rd); + } + if (insn & (1 << 20)) + gen_logicq_cc(tmp64); + gen_storeq_reg(s, rn, rd, tmp64); + tcg_temp_free_i64(tmp64); + break; + } + } else { + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + if (insn & (1 << 23)) { + /* load/store exclusive */ + op1 = (insn >> 21) & 0x3; + if (op1) + ARCH(6K); + else + ARCH(6); + addr = tcg_temp_local_new_i32(); + load_reg_var(s, addr, rn); + if (insn & (1 << 20)) { + switch (op1) { + case 0: /* ldrex */ + gen_load_exclusive(s, rd, 15, addr, 2); + break; + case 1: /* ldrexd */ + gen_load_exclusive(s, rd, rd + 1, addr, 3); + break; + case 2: /* ldrexb */ + gen_load_exclusive(s, rd, 15, addr, 0); + break; + case 3: /* ldrexh */ + gen_load_exclusive(s, rd, 15, addr, 1); + break; + default: + abort(); + } + } else { + rm = insn & 0xf; + switch (op1) { + case 0: /* strex */ + gen_store_exclusive(s, rd, rm, 15, addr, 2); + break; + case 1: /* strexd */ + gen_store_exclusive(s, rd, rm, rm + 1, addr, 3); + break; + case 2: /* strexb */ + gen_store_exclusive(s, rd, rm, 15, addr, 0); + break; + case 3: /* strexh */ + gen_store_exclusive(s, rd, rm, 15, addr, 1); + break; + default: + abort(); + } + } + tcg_temp_free(addr); + } else { + /* SWP instruction */ + rm = (insn) & 0xf; + + /* ??? This is not really atomic. However we know + we never have multiple CPUs running in parallel, + so it is good enough. */ + addr = load_reg(s, rn); + tmp = load_reg(s, rm); + if (insn & (1 << 22)) { + tmp2 = gen_ld8u(addr, IS_USER(s)); + gen_st8(tmp, addr, IS_USER(s)); + } else { + tmp2 = gen_ld32(addr, IS_USER(s)); + gen_st32(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + store_reg(s, rd, tmp2); + } + } + } else { + int address_offset; + int load; + /* Misc load/store */ + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + addr = load_reg(s, rn); + if (insn & (1 << 24)) + gen_add_datah_offset(s, insn, 0, addr); + address_offset = 0; + if (insn & (1 << 20)) { + /* load */ + switch(sh) { + case 1: + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 2: + tmp = gen_ld8s(addr, IS_USER(s)); + break; + default: + case 3: + tmp = gen_ld16s(addr, IS_USER(s)); + break; + } + load = 1; + } else if (sh & 2) { + /* doubleword */ + if (sh & 1) { + /* store */ + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, 4); + tmp = load_reg(s, rd + 1); + gen_st32(tmp, addr, IS_USER(s)); + load = 0; + } else { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + tcg_gen_addi_i32(addr, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + rd++; + load = 1; + } + address_offset = -4; + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st16(tmp, addr, IS_USER(s)); + load = 0; + } + /* Perform base writeback before the loaded value to + ensure correct behavior with overlapping index registers. + ldrd with base writeback is is undefined if the + destination and index registers overlap. */ + if (!(insn & (1 << 24))) { + gen_add_datah_offset(s, insn, address_offset, addr); + store_reg(s, rn, addr); + } else if (insn & (1 << 21)) { + if (address_offset) + tcg_gen_addi_i32(addr, addr, address_offset); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + if (load) { + /* Complete the load. */ + store_reg(s, rd, tmp); + } + } + break; + case 0x4: + case 0x5: + goto do_ldst; + case 0x6: + case 0x7: + if (insn & (1 << 4)) { + ARCH(6); + /* Armv6 Media instructions. */ + rm = insn & 0xf; + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + rs = (insn >> 8) & 0xf; + switch ((insn >> 23) & 3) { + case 0: /* Parallel add/subtract. */ + op1 = (insn >> 20) & 7; + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + sh = (insn >> 5) & 7; + if ((op1 & 3) == 0 || sh == 5 || sh == 6) + goto illegal_op; + gen_arm_parallel_addsub(op1, sh, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 1: + if ((insn & 0x00700020) == 0) { + /* Halfword pack. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + shift = (insn >> 7) & 0x1f; + if (insn & (1 << 6)) { + /* pkhtb */ + if (shift == 0) + shift = 31; + tcg_gen_sari_i32(tmp2, tmp2, shift); + tcg_gen_andi_i32(tmp, tmp, 0xffff0000); + tcg_gen_ext16u_i32(tmp2, tmp2); + } else { + /* pkhbt */ + if (shift) + tcg_gen_shli_i32(tmp2, tmp2, shift); + tcg_gen_ext16u_i32(tmp, tmp); + tcg_gen_andi_i32(tmp2, tmp2, 0xffff0000); + } + tcg_gen_or_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else if ((insn & 0x00200020) == 0x00200000) { + /* [us]sat */ + tmp = load_reg(s, rm); + shift = (insn >> 7) & 0x1f; + if (insn & (1 << 6)) { + if (shift == 0) + shift = 31; + tcg_gen_sari_i32(tmp, tmp, shift); + } else { + tcg_gen_shli_i32(tmp, tmp, shift); + } + sh = (insn >> 16) & 0x1f; + if (sh != 0) { + tmp2 = tcg_const_i32(sh); + if (insn & (1 << 22)) + gen_helper_usat(tmp, tmp, tmp2); + else + gen_helper_ssat(tmp, tmp, tmp2); + tcg_temp_free_i32(tmp2); + } + store_reg(s, rd, tmp); + } else if ((insn & 0x00300fe0) == 0x00200f20) { + /* [us]sat16 */ + tmp = load_reg(s, rm); + sh = (insn >> 16) & 0x1f; + if (sh != 0) { + tmp2 = tcg_const_i32(sh); + if (insn & (1 << 22)) + gen_helper_usat16(tmp, tmp, tmp2); + else + gen_helper_ssat16(tmp, tmp, tmp2); + tcg_temp_free_i32(tmp2); + } + store_reg(s, rd, tmp); + } else if ((insn & 0x00700fe0) == 0x00000fa0) { + /* Select bytes. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + tmp3 = new_tmp(); + tcg_gen_ld_i32(tmp3, cpu_env, offsetof(CPUState, GE)); + gen_helper_sel_flags(tmp, tmp3, tmp, tmp2); + dead_tmp(tmp3); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else if ((insn & 0x000003e0) == 0x00000060) { + tmp = load_reg(s, rm); + shift = (insn >> 10) & 3; + /* ??? In many cases it's not neccessary to do a + rotate, a shift is sufficient. */ + if (shift != 0) + tcg_gen_rotri_i32(tmp, tmp, shift * 8); + op1 = (insn >> 20) & 7; + switch (op1) { + case 0: gen_sxtb16(tmp); break; + case 2: gen_sxtb(tmp); break; + case 3: gen_sxth(tmp); break; + case 4: gen_uxtb16(tmp); break; + case 6: gen_uxtb(tmp); break; + case 7: gen_uxth(tmp); break; + default: goto illegal_op; + } + if (rn != 15) { + tmp2 = load_reg(s, rn); + if ((op1 & 3) == 0) { + gen_add16(tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + } + store_reg(s, rd, tmp); + } else if ((insn & 0x003f0f60) == 0x003f0f20) { + /* rev */ + tmp = load_reg(s, rm); + if (insn & (1 << 22)) { + if (insn & (1 << 7)) { + gen_revsh(tmp); + } else { + ARCH(6T2); + gen_helper_rbit(tmp, tmp); + } + } else { + if (insn & (1 << 7)) + gen_rev16(tmp); + else + tcg_gen_bswap32_i32(tmp, tmp); + } + store_reg(s, rd, tmp); + } else { + goto illegal_op; + } + break; + case 2: /* Multiplies (Type 3). */ + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + if (insn & (1 << 20)) { + /* Signed multiply most significant [accumulate]. */ + tmp64 = gen_muls_i64_i32(tmp, tmp2); + if (insn & (1 << 5)) + tcg_gen_addi_i64(tmp64, tmp64, 0x80000000u); + tcg_gen_shri_i64(tmp64, tmp64, 32); + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, tmp64); + tcg_temp_free_i64(tmp64); + if (rd != 15) { + tmp2 = load_reg(s, rd); + if (insn & (1 << 6)) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + } + store_reg(s, rn, tmp); + } else { + if (insn & (1 << 5)) + gen_swap_half(tmp2); + gen_smul_dual(tmp, tmp2); + /* This addition cannot overflow. */ + if (insn & (1 << 6)) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + if (insn & (1 << 22)) { + /* smlald, smlsld */ + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + gen_addq(s, tmp64, rd, rn); + gen_storeq_reg(s, rd, rn, tmp64); + tcg_temp_free_i64(tmp64); + } else { + /* smuad, smusd, smlad, smlsd */ + if (rd != 15) + { + tmp2 = load_reg(s, rd); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rn, tmp); + } + } + break; + case 3: + op1 = ((insn >> 17) & 0x38) | ((insn >> 5) & 7); + switch (op1) { + case 0: /* Unsigned sum of absolute differences. */ + ARCH(6); + tmp = load_reg(s, rm); + tmp2 = load_reg(s, rs); + gen_helper_usad8(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (rd != 15) { + tmp2 = load_reg(s, rd); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + store_reg(s, rn, tmp); + break; + case 0x20: case 0x24: case 0x28: case 0x2c: + /* Bitfield insert/clear. */ + ARCH(6T2); + shift = (insn >> 7) & 0x1f; + i = (insn >> 16) & 0x1f; + i = i + 1 - shift; + if (rm == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rm); + } + if (i != 32) { + tmp2 = load_reg(s, rd); + gen_bfi(tmp, tmp2, tmp, shift, (1u << i) - 1); + dead_tmp(tmp2); + } + store_reg(s, rd, tmp); + break; + case 0x12: case 0x16: case 0x1a: case 0x1e: /* sbfx */ + case 0x32: case 0x36: case 0x3a: case 0x3e: /* ubfx */ + ARCH(6T2); + tmp = load_reg(s, rm); + shift = (insn >> 7) & 0x1f; + i = ((insn >> 16) & 0x1f) + 1; + if (shift + i > 32) + goto illegal_op; + if (i < 32) { + if (op1 & 0x20) { + gen_ubfx(tmp, shift, (1u << i) - 1); + } else { + gen_sbfx(tmp, shift, i); + } + } + store_reg(s, rd, tmp); + break; + default: + goto illegal_op; + } + break; + } + break; + } + do_ldst: + /* Check for undefined extension instructions + * per the ARM Bible IE: + * xxxx 0111 1111 xxxx xxxx xxxx 1111 xxxx + */ + sh = (0xf << 20) | (0xf << 4); + if (op1 == 0x7 && ((insn & sh) == sh)) + { + goto illegal_op; + } + /* load/store byte/word */ + rn = (insn >> 16) & 0xf; + rd = (insn >> 12) & 0xf; + tmp2 = load_reg(s, rn); + i = (IS_USER(s) || (insn & 0x01200000) == 0x00200000); + if (insn & (1 << 24)) + gen_add_data_offset(s, insn, tmp2); + if (insn & (1 << 20)) { + /* load */ + if (insn & (1 << 22)) { + tmp = gen_ld8u(tmp2, i); + } else { + tmp = gen_ld32(tmp2, i); + } + } else { + /* store */ + tmp = load_reg(s, rd); + if (insn & (1 << 22)) + gen_st8(tmp, tmp2, i); + else + gen_st32(tmp, tmp2, i); + } + if (!(insn & (1 << 24))) { + gen_add_data_offset(s, insn, tmp2); + store_reg(s, rn, tmp2); + } else if (insn & (1 << 21)) { + store_reg(s, rn, tmp2); + } else { + dead_tmp(tmp2); + } + if (insn & (1 << 20)) { + /* Complete the load. */ + if (rd == 15) + gen_bx(s, tmp); + else + store_reg(s, rd, tmp); + } + break; + case 0x08: + case 0x09: + { + int j, n, user, loaded_base; + TCGv loaded_var; + /* load/store multiple words */ + /* XXX: store correct base if write back */ + user = 0; + if (insn & (1 << 22)) { + if (IS_USER(s)) + goto illegal_op; /* only usable in supervisor mode */ + + if ((insn & (1 << 15)) == 0) + user = 1; + } + rn = (insn >> 16) & 0xf; + addr = load_reg(s, rn); + + /* compute total size */ + loaded_base = 0; + TCGV_UNUSED(loaded_var); + n = 0; + for(i=0;i<16;i++) { + if (insn & (1 << i)) + n++; + } + /* XXX: test invalid n == 0 case ? */ + if (insn & (1 << 23)) { + if (insn & (1 << 24)) { + /* pre increment */ + tcg_gen_addi_i32(addr, addr, 4); + } else { + /* post increment */ + } + } else { + if (insn & (1 << 24)) { + /* pre decrement */ + tcg_gen_addi_i32(addr, addr, -(n * 4)); + } else { + /* post decrement */ + if (n != 1) + tcg_gen_addi_i32(addr, addr, -((n - 1) * 4)); + } + } + j = 0; + for(i=0;i<16;i++) { + if (insn & (1 << i)) { + if (insn & (1 << 20)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + if (i == 15) { + gen_bx(s, tmp); + } else if (user) { + tmp2 = tcg_const_i32(i); + gen_helper_set_user_reg(tmp2, tmp); + tcg_temp_free_i32(tmp2); + dead_tmp(tmp); + } else if (i == rn) { + loaded_var = tmp; + loaded_base = 1; + } else { + store_reg(s, i, tmp); + } + } else { + /* store */ + if (i == 15) { + /* special case: r15 = PC + 8 */ + val = (long)s->pc + 4; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + } else if (user) { + tmp = new_tmp(); + tmp2 = tcg_const_i32(i); + gen_helper_get_user_reg(tmp, tmp2); + tcg_temp_free_i32(tmp2); + } else { + tmp = load_reg(s, i); + } + gen_st32(tmp, addr, IS_USER(s)); + } + j++; + /* no need to add after the last transfer */ + if (j != n) + tcg_gen_addi_i32(addr, addr, 4); + } + } + if (insn & (1 << 21)) { + /* write back */ + if (insn & (1 << 23)) { + if (insn & (1 << 24)) { + /* pre increment */ + } else { + /* post increment */ + tcg_gen_addi_i32(addr, addr, 4); + } + } else { + if (insn & (1 << 24)) { + /* pre decrement */ + if (n != 1) + tcg_gen_addi_i32(addr, addr, -((n - 1) * 4)); + } else { + /* post decrement */ + tcg_gen_addi_i32(addr, addr, -(n * 4)); + } + } + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + if (loaded_base) { + store_reg(s, rn, loaded_var); + } + if ((insn & (1 << 22)) && !user) { + /* Restore CPSR from SPSR. */ + tmp = load_cpu_field(spsr); + gen_set_cpsr(tmp, 0xffffffff); + dead_tmp(tmp); + s->is_jmp = DISAS_UPDATE; + } + } + break; + case 0xa: + case 0xb: + { + int32_t offset; + + /* branch (and link) */ + val = (int32_t)s->pc; + if (insn & (1 << 24)) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, val); + store_reg(s, 14, tmp); + } + offset = (((int32_t)insn << 8) >> 8); + val += (offset << 2) + 4; + gen_jmp(s, val); + } + break; + case 0xc: + case 0xd: + case 0xe: + /* Coprocessor. */ + if (disas_coproc_insn(env, s, insn)) + goto illegal_op; + break; + case 0xf: + /* swi */ + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_SWI; + break; + default: + illegal_op: + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_UDEF); + s->is_jmp = DISAS_JUMP; + break; + } + } +} + +/* Return true if this is a Thumb-2 logical op. */ +static int +thumb2_logic_op(int op) +{ + return (op < 8); +} + +/* Generate code for a Thumb-2 data processing operation. If CONDS is nonzero + then set condition code flags based on the result of the operation. + If SHIFTER_OUT is nonzero then set the carry flag for logical operations + to the high bit of T1. + Returns zero if the opcode is valid. */ + +static int +gen_thumb2_data_op(DisasContext *s, int op, int conds, uint32_t shifter_out, TCGv t0, TCGv t1) +{ + int logic_cc; + + logic_cc = 0; + switch (op) { + case 0: /* and */ + tcg_gen_and_i32(t0, t0, t1); + logic_cc = conds; + break; + case 1: /* bic */ + tcg_gen_andc_i32(t0, t0, t1); + logic_cc = conds; + break; + case 2: /* orr */ + tcg_gen_or_i32(t0, t0, t1); + logic_cc = conds; + break; + case 3: /* orn */ + tcg_gen_not_i32(t1, t1); + tcg_gen_or_i32(t0, t0, t1); + logic_cc = conds; + break; + case 4: /* eor */ + tcg_gen_xor_i32(t0, t0, t1); + logic_cc = conds; + break; + case 8: /* add */ + if (conds) + gen_helper_add_cc(t0, t0, t1); + else + tcg_gen_add_i32(t0, t0, t1); + break; + case 10: /* adc */ + if (conds) + gen_helper_adc_cc(t0, t0, t1); + else + gen_adc(t0, t1); + break; + case 11: /* sbc */ + if (conds) + gen_helper_sbc_cc(t0, t0, t1); + else + gen_sub_carry(t0, t0, t1); + break; + case 13: /* sub */ + if (conds) + gen_helper_sub_cc(t0, t0, t1); + else + tcg_gen_sub_i32(t0, t0, t1); + break; + case 14: /* rsb */ + if (conds) + gen_helper_sub_cc(t0, t1, t0); + else + tcg_gen_sub_i32(t0, t1, t0); + break; + default: /* 5, 6, 7, 9, 12, 15. */ + return 1; + } + if (logic_cc) { + gen_logic_CC(t0); + if (shifter_out) + gen_set_CF_bit31(t1); + } + return 0; +} + +/* Translate a 32-bit thumb instruction. Returns nonzero if the instruction + is not legal. */ +static int disas_thumb2_insn(CPUState *env, DisasContext *s, uint16_t insn_hw1) +{ + uint32_t insn, imm, shift, offset; + uint32_t rd, rn, rm, rs; + TCGv tmp; + TCGv tmp2; + TCGv tmp3; + TCGv addr; + TCGv_i64 tmp64; + int op; + int shiftop; + int conds; + int logic_cc; + + if (!(arm_feature(env, ARM_FEATURE_THUMB2) + || arm_feature (env, ARM_FEATURE_M))) { + /* Thumb-1 cores may need to treat bl and blx as a pair of + 16-bit instructions to get correct prefetch abort behavior. */ + insn = insn_hw1; + if ((insn & (1 << 12)) == 0) { + /* Second half of blx. */ + offset = ((insn & 0x7ff) << 1); + tmp = load_reg(s, 14); + tcg_gen_addi_i32(tmp, tmp, offset); + tcg_gen_andi_i32(tmp, tmp, 0xfffffffc); + + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, s->pc | 1); + store_reg(s, 14, tmp2); + gen_bx(s, tmp); + return 0; + } + if (insn & (1 << 11)) { + /* Second half of bl. */ + offset = ((insn & 0x7ff) << 1) | 1; + tmp = load_reg(s, 14); + tcg_gen_addi_i32(tmp, tmp, offset); + + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, s->pc | 1); + store_reg(s, 14, tmp2); + gen_bx(s, tmp); + return 0; + } + if ((s->pc & ~TARGET_PAGE_MASK) == 0) { + /* Instruction spans a page boundary. Implement it as two + 16-bit instructions in case the second half causes an + prefetch abort. */ + offset = ((int32_t)insn << 21) >> 9; + tcg_gen_movi_i32(cpu_R[14], s->pc + 2 + offset); + return 0; + } + /* Fall through to 32-bit decode. */ + } + + insn = lduw_code(s->pc); + s->pc += 2; + insn |= (uint32_t)insn_hw1 << 16; + + if ((insn & 0xf800e800) != 0xf000e800) { + ARCH(6T2); + } + + rn = (insn >> 16) & 0xf; + rs = (insn >> 12) & 0xf; + rd = (insn >> 8) & 0xf; + rm = insn & 0xf; + switch ((insn >> 25) & 0xf) { + case 0: case 1: case 2: case 3: + /* 16-bit instructions. Should never happen. */ + abort(); + case 4: + if (insn & (1 << 22)) { + /* Other load/store, table branch. */ + if (insn & 0x01200000) { + /* Load/store doubleword. */ + if (rn == 15) { + addr = new_tmp(); + tcg_gen_movi_i32(addr, s->pc & ~3); + } else { + addr = load_reg(s, rn); + } + offset = (insn & 0xff) * 4; + if ((insn & (1 << 23)) == 0) + offset = -offset; + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, offset); + offset = 0; + } + if (insn & (1 << 20)) { + /* ldrd */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rs, tmp); + tcg_gen_addi_i32(addr, addr, 4); + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* strd */ + tmp = load_reg(s, rs); + gen_st32(tmp, addr, IS_USER(s)); + tcg_gen_addi_i32(addr, addr, 4); + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + } + if (insn & (1 << 21)) { + /* Base writeback. */ + if (rn == 15) + goto illegal_op; + tcg_gen_addi_i32(addr, addr, offset - 4); + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } else if ((insn & (1 << 23)) == 0) { + /* Load/store exclusive word. */ + addr = tcg_temp_local_new(); + load_reg_var(s, addr, rn); + tcg_gen_addi_i32(addr, addr, (insn & 0xff) << 2); + if (insn & (1 << 20)) { + gen_load_exclusive(s, rs, 15, addr, 2); + } else { + gen_store_exclusive(s, rd, rs, 15, addr, 2); + } + tcg_temp_free(addr); + } else if ((insn & (1 << 6)) == 0) { + /* Table Branch. */ + if (rn == 15) { + addr = new_tmp(); + tcg_gen_movi_i32(addr, s->pc); + } else { + addr = load_reg(s, rn); + } + tmp = load_reg(s, rm); + tcg_gen_add_i32(addr, addr, tmp); + if (insn & (1 << 4)) { + /* tbh */ + tcg_gen_add_i32(addr, addr, tmp); + dead_tmp(tmp); + tmp = gen_ld16u(addr, IS_USER(s)); + } else { /* tbb */ + dead_tmp(tmp); + tmp = gen_ld8u(addr, IS_USER(s)); + } + dead_tmp(addr); + tcg_gen_shli_i32(tmp, tmp, 1); + tcg_gen_addi_i32(tmp, tmp, s->pc); + store_reg(s, 15, tmp); + } else { + /* Load/store exclusive byte/halfword/doubleword. */ + ARCH(7); + op = (insn >> 4) & 0x3; + if (op == 2) { + goto illegal_op; + } + addr = tcg_temp_local_new(); + load_reg_var(s, addr, rn); + if (insn & (1 << 20)) { + gen_load_exclusive(s, rs, rd, addr, op); + } else { + gen_store_exclusive(s, rm, rs, rd, addr, op); + } + tcg_temp_free(addr); + } + } else { + /* Load/store multiple, RFE, SRS. */ + if (((insn >> 23) & 1) == ((insn >> 24) & 1)) { + /* Not available in user mode. */ + if (IS_USER(s)) + goto illegal_op; + if (insn & (1 << 20)) { + /* rfe */ + addr = load_reg(s, rn); + if ((insn & (1 << 24)) == 0) + tcg_gen_addi_i32(addr, addr, -8); + /* Load PC into tmp and CPSR into tmp2. */ + tmp = gen_ld32(addr, 0); + tcg_gen_addi_i32(addr, addr, 4); + tmp2 = gen_ld32(addr, 0); + if (insn & (1 << 21)) { + /* Base writeback. */ + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, 4); + } else { + tcg_gen_addi_i32(addr, addr, -4); + } + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + gen_rfe(s, tmp, tmp2); + } else { + /* srs */ + op = (insn & 0x1f); + if (op == (env->uncached_cpsr & CPSR_M)) { + addr = load_reg(s, 13); + } else { + addr = new_tmp(); + tmp = tcg_const_i32(op); + gen_helper_get_r13_banked(addr, cpu_env, tmp); + tcg_temp_free_i32(tmp); + } + if ((insn & (1 << 24)) == 0) { + tcg_gen_addi_i32(addr, addr, -8); + } + tmp = load_reg(s, 14); + gen_st32(tmp, addr, 0); + tcg_gen_addi_i32(addr, addr, 4); + tmp = new_tmp(); + gen_helper_cpsr_read(tmp); + gen_st32(tmp, addr, 0); + if (insn & (1 << 21)) { + if ((insn & (1 << 24)) == 0) { + tcg_gen_addi_i32(addr, addr, -4); + } else { + tcg_gen_addi_i32(addr, addr, 4); + } + if (op == (env->uncached_cpsr & CPSR_M)) { + store_reg(s, 13, addr); + } else { + tmp = tcg_const_i32(op); + gen_helper_set_r13_banked(cpu_env, tmp, addr); + tcg_temp_free_i32(tmp); + } + } else { + dead_tmp(addr); + } + } + } else { + int i; + /* Load/store multiple. */ + addr = load_reg(s, rn); + offset = 0; + for (i = 0; i < 16; i++) { + if (insn & (1 << i)) + offset += 4; + } + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, -offset); + } + + for (i = 0; i < 16; i++) { + if ((insn & (1 << i)) == 0) + continue; + if (insn & (1 << 20)) { + /* Load. */ + tmp = gen_ld32(addr, IS_USER(s)); + if (i == 15) { + gen_bx(s, tmp); + } else { + store_reg(s, i, tmp); + } + } else { + /* Store. */ + tmp = load_reg(s, i); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, 4); + } + if (insn & (1 << 21)) { + /* Base register writeback. */ + if (insn & (1 << 24)) { + tcg_gen_addi_i32(addr, addr, -offset); + } + /* Fault if writeback register is in register list. */ + if (insn & (1 << rn)) + goto illegal_op; + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } + } + break; + case 5: /* Data processing register constant shift. */ + if (rn == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rn); + } + tmp2 = load_reg(s, rm); + op = (insn >> 21) & 0xf; + shiftop = (insn >> 4) & 3; + shift = ((insn >> 6) & 3) | ((insn >> 10) & 0x1c); + conds = (insn & (1 << 20)) != 0; + logic_cc = (conds && thumb2_logic_op(op)); + gen_arm_shift_im(tmp2, shiftop, shift, logic_cc); + if (gen_thumb2_data_op(s, op, conds, 0, tmp, tmp2)) + goto illegal_op; + dead_tmp(tmp2); + if (rd != 15) { + store_reg(s, rd, tmp); + } else { + dead_tmp(tmp); + } + break; + case 13: /* Misc data processing. */ + op = ((insn >> 22) & 6) | ((insn >> 7) & 1); + if (op < 4 && (insn & 0xf000) != 0xf000) + goto illegal_op; + switch (op) { + case 0: /* Register controlled shift. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + if ((insn & 0x70) != 0) + goto illegal_op; + op = (insn >> 21) & 3; + logic_cc = (insn & (1 << 20)) != 0; + gen_arm_shift_reg(tmp, op, tmp2, logic_cc); + if (logic_cc) + gen_logic_CC(tmp); + store_reg_bx(env, s, rd, tmp); + break; + case 1: /* Sign/zero extend. */ + tmp = load_reg(s, rm); + shift = (insn >> 4) & 3; + /* ??? In many cases it's not neccessary to do a + rotate, a shift is sufficient. */ + if (shift != 0) + tcg_gen_rotri_i32(tmp, tmp, shift * 8); + op = (insn >> 20) & 7; + switch (op) { + case 0: gen_sxth(tmp); break; + case 1: gen_uxth(tmp); break; + case 2: gen_sxtb16(tmp); break; + case 3: gen_uxtb16(tmp); break; + case 4: gen_sxtb(tmp); break; + case 5: gen_uxtb(tmp); break; + default: goto illegal_op; + } + if (rn != 15) { + tmp2 = load_reg(s, rn); + if ((op >> 1) == 1) { + gen_add16(tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + } + store_reg(s, rd, tmp); + break; + case 2: /* SIMD add/subtract. */ + op = (insn >> 20) & 7; + shift = (insn >> 4) & 7; + if ((op & 3) == 3 || (shift & 3) == 3) + goto illegal_op; + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + gen_thumb2_parallel_addsub(op, shift, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 3: /* Other data processing. */ + op = ((insn >> 17) & 0x38) | ((insn >> 4) & 7); + if (op < 4) { + /* Saturating add/subtract. */ + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + if (op & 2) + gen_helper_double_saturate(tmp, tmp); + if (op & 1) + gen_helper_sub_saturate(tmp, tmp2, tmp); + else + gen_helper_add_saturate(tmp, tmp, tmp2); + dead_tmp(tmp2); + } else { + tmp = load_reg(s, rn); + switch (op) { + case 0x0a: /* rbit */ + gen_helper_rbit(tmp, tmp); + break; + case 0x08: /* rev */ + tcg_gen_bswap32_i32(tmp, tmp); + break; + case 0x09: /* rev16 */ + gen_rev16(tmp); + break; + case 0x0b: /* revsh */ + gen_revsh(tmp); + break; + case 0x10: /* sel */ + tmp2 = load_reg(s, rm); + tmp3 = new_tmp(); + tcg_gen_ld_i32(tmp3, cpu_env, offsetof(CPUState, GE)); + gen_helper_sel_flags(tmp, tmp3, tmp, tmp2); + dead_tmp(tmp3); + dead_tmp(tmp2); + break; + case 0x18: /* clz */ + gen_helper_clz(tmp, tmp); + break; + default: + goto illegal_op; + } + } + store_reg(s, rd, tmp); + break; + case 4: case 5: /* 32-bit multiply. Sum of absolute differences. */ + op = (insn >> 4) & 0xf; + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + switch ((insn >> 20) & 7) { + case 0: /* 32 x 32 -> 32 */ + tcg_gen_mul_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (rs != 15) { + tmp2 = load_reg(s, rs); + if (op) + tcg_gen_sub_i32(tmp, tmp2, tmp); + else + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 1: /* 16 x 16 -> 32 */ + gen_mulxy(tmp, tmp2, op & 2, op & 1); + dead_tmp(tmp2); + if (rs != 15) { + tmp2 = load_reg(s, rs); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 2: /* Dual multiply add. */ + case 4: /* Dual multiply subtract. */ + if (op) + gen_swap_half(tmp2); + gen_smul_dual(tmp, tmp2); + /* This addition cannot overflow. */ + if (insn & (1 << 22)) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + if (rs != 15) + { + tmp2 = load_reg(s, rs); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 3: /* 32 * 16 -> 32msb */ + if (op) + tcg_gen_sari_i32(tmp2, tmp2, 16); + else + gen_sxth(tmp2); + tmp64 = gen_muls_i64_i32(tmp, tmp2); + tcg_gen_shri_i64(tmp64, tmp64, 16); + tmp = new_tmp(); + tcg_gen_trunc_i64_i32(tmp, tmp64); + tcg_temp_free_i64(tmp64); + if (rs != 15) + { + tmp2 = load_reg(s, rs); + gen_helper_add_setq(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + case 5: case 6: /* 32 * 32 -> 32msb */ + gen_imull(tmp, tmp2); + if (insn & (1 << 5)) { + gen_roundqd(tmp, tmp2); + dead_tmp(tmp2); + } else { + dead_tmp(tmp); + tmp = tmp2; + } + if (rs != 15) { + tmp2 = load_reg(s, rs); + if (insn & (1 << 21)) { + tcg_gen_add_i32(tmp, tmp, tmp2); + } else { + tcg_gen_sub_i32(tmp, tmp2, tmp); + } + dead_tmp(tmp2); + } + break; + case 7: /* Unsigned sum of absolute differences. */ + gen_helper_usad8(tmp, tmp, tmp2); + dead_tmp(tmp2); + if (rs != 15) { + tmp2 = load_reg(s, rs); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + } + break; + } + store_reg(s, rd, tmp); + break; + case 6: case 7: /* 64-bit multiply, Divide. */ + op = ((insn >> 4) & 0xf) | ((insn >> 16) & 0x70); + tmp = load_reg(s, rn); + tmp2 = load_reg(s, rm); + if ((op & 0x50) == 0x10) { + /* sdiv, udiv */ + if (!arm_feature(env, ARM_FEATURE_DIV)) + goto illegal_op; + if (op & 0x20) + gen_helper_udiv(tmp, tmp, tmp2); + else + gen_helper_sdiv(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else if ((op & 0xe) == 0xc) { + /* Dual multiply accumulate long. */ + if (op & 1) + gen_swap_half(tmp2); + gen_smul_dual(tmp, tmp2); + if (op & 0x10) { + tcg_gen_sub_i32(tmp, tmp, tmp2); + } else { + tcg_gen_add_i32(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + /* BUGFIX */ + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + gen_addq(s, tmp64, rs, rd); + gen_storeq_reg(s, rs, rd, tmp64); + tcg_temp_free_i64(tmp64); + } else { + if (op & 0x20) { + /* Unsigned 64-bit multiply */ + tmp64 = gen_mulu_i64_i32(tmp, tmp2); + } else { + if (op & 8) { + /* smlalxy */ + gen_mulxy(tmp, tmp2, op & 2, op & 1); + dead_tmp(tmp2); + tmp64 = tcg_temp_new_i64(); + tcg_gen_ext_i32_i64(tmp64, tmp); + dead_tmp(tmp); + } else { + /* Signed 64-bit multiply */ + tmp64 = gen_muls_i64_i32(tmp, tmp2); + } + } + if (op & 4) { + /* umaal */ + gen_addq_lo(s, tmp64, rs); + gen_addq_lo(s, tmp64, rd); + } else if (op & 0x40) { + /* 64-bit accumulate. */ + gen_addq(s, tmp64, rs, rd); + } + gen_storeq_reg(s, rs, rd, tmp64); + tcg_temp_free_i64(tmp64); + } + break; + } + break; + case 6: case 7: case 14: case 15: + /* Coprocessor. */ + if (((insn >> 24) & 3) == 3) { + /* Translate into the equivalent ARM encoding. */ + insn = (insn & 0xe2ffffff) | ((insn & (1 << 28)) >> 4); + if (disas_neon_data_insn(env, s, insn)) + goto illegal_op; + } else { + if (insn & (1 << 28)) + goto illegal_op; + if (disas_coproc_insn (env, s, insn)) + goto illegal_op; + } + break; + case 8: case 9: case 10: case 11: + if (insn & (1 << 15)) { + /* Branches, misc control. */ + if (insn & 0x5000) { + /* Unconditional branch. */ + /* signextend(hw1[10:0]) -> offset[:12]. */ + offset = ((int32_t)insn << 5) >> 9 & ~(int32_t)0xfff; + /* hw1[10:0] -> offset[11:1]. */ + offset |= (insn & 0x7ff) << 1; + /* (~hw2[13, 11] ^ offset[24]) -> offset[23,22] + offset[24:22] already have the same value because of the + sign extension above. */ + offset ^= ((~insn) & (1 << 13)) << 10; + offset ^= ((~insn) & (1 << 11)) << 11; + + if (insn & (1 << 14)) { + /* Branch and link. */ + tcg_gen_movi_i32(cpu_R[14], s->pc | 1); + } + + offset += s->pc; + if (insn & (1 << 12)) { + /* b/bl */ + gen_jmp(s, offset); + } else { + /* blx */ + offset &= ~(uint32_t)2; + gen_bx_im(s, offset); + } + } else if (((insn >> 23) & 7) == 7) { + /* Misc control */ + if (insn & (1 << 13)) + goto illegal_op; + + if (insn & (1 << 26)) { + /* Secure monitor call (v6Z) */ + goto illegal_op; /* not implemented. */ + } else { + op = (insn >> 20) & 7; + switch (op) { + case 0: /* msr cpsr. */ + if (IS_M(env)) { + tmp = load_reg(s, rn); + addr = tcg_const_i32(insn & 0xff); + gen_helper_v7m_msr(cpu_env, addr, tmp); + tcg_temp_free_i32(addr); + dead_tmp(tmp); + gen_lookup_tb(s); + break; + } + /* fall through */ + case 1: /* msr spsr. */ + if (IS_M(env)) + goto illegal_op; + tmp = load_reg(s, rn); + if (gen_set_psr(s, + msr_mask(env, s, (insn >> 8) & 0xf, op == 1), + op == 1, tmp)) + goto illegal_op; + break; + case 2: /* cps, nop-hint. */ + if (((insn >> 8) & 7) == 0) { + gen_nop_hint(s, insn & 0xff); + } + /* Implemented as NOP in user mode. */ + if (IS_USER(s)) + break; + offset = 0; + imm = 0; + if (insn & (1 << 10)) { + if (insn & (1 << 7)) + offset |= CPSR_A; + if (insn & (1 << 6)) + offset |= CPSR_I; + if (insn & (1 << 5)) + offset |= CPSR_F; + if (insn & (1 << 9)) + imm = CPSR_A | CPSR_I | CPSR_F; + } + if (insn & (1 << 8)) { + offset |= 0x1f; + imm |= (insn & 0x1f); + } + if (offset) { + gen_set_psr_im(s, offset, 0, imm); + } + break; + case 3: /* Special control operations. */ + ARCH(7); + op = (insn >> 4) & 0xf; + switch (op) { + case 2: /* clrex */ + gen_clrex(s); + break; + case 4: /* dsb */ + case 5: /* dmb */ + case 6: /* isb */ + /* These execute as NOPs. */ + break; + default: + goto illegal_op; + } + break; + case 4: /* bxj */ + /* Trivial implementation equivalent to bx. */ + tmp = load_reg(s, rn); + gen_bx(s, tmp); + break; + case 5: /* Exception return. */ + /* Unpredictable in user mode. */ + goto illegal_op; + case 6: /* mrs cpsr. */ + tmp = new_tmp(); + if (IS_M(env)) { + addr = tcg_const_i32(insn & 0xff); + gen_helper_v7m_mrs(tmp, cpu_env, addr); + tcg_temp_free_i32(addr); + } else { + gen_helper_cpsr_read(tmp); + } + store_reg(s, rd, tmp); + break; + case 7: /* mrs spsr. */ + /* Not accessible in user mode. */ + if (IS_USER(s) || IS_M(env)) + goto illegal_op; + tmp = load_cpu_field(spsr); + store_reg(s, rd, tmp); + break; + } + } + } else { + /* Conditional branch. */ + op = (insn >> 22) & 0xf; + /* Generate a conditional jump to next instruction. */ + s->condlabel = gen_new_label(); + gen_test_cc(op ^ 1, s->condlabel); + s->condjmp = 1; + + /* offset[11:1] = insn[10:0] */ + offset = (insn & 0x7ff) << 1; + /* offset[17:12] = insn[21:16]. */ + offset |= (insn & 0x003f0000) >> 4; + /* offset[31:20] = insn[26]. */ + offset |= ((int32_t)((insn << 5) & 0x80000000)) >> 11; + /* offset[18] = insn[13]. */ + offset |= (insn & (1 << 13)) << 5; + /* offset[19] = insn[11]. */ + offset |= (insn & (1 << 11)) << 8; + + /* jump to the offset */ + gen_jmp(s, s->pc + offset); + } + } else { + /* Data processing immediate. */ + if (insn & (1 << 25)) { + if (insn & (1 << 24)) { + if (insn & (1 << 20)) + goto illegal_op; + /* Bitfield/Saturate. */ + op = (insn >> 21) & 7; + imm = insn & 0x1f; + shift = ((insn >> 6) & 3) | ((insn >> 10) & 0x1c); + if (rn == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rn); + } + switch (op) { + case 2: /* Signed bitfield extract. */ + imm++; + if (shift + imm > 32) + goto illegal_op; + if (imm < 32) + gen_sbfx(tmp, shift, imm); + break; + case 6: /* Unsigned bitfield extract. */ + imm++; + if (shift + imm > 32) + goto illegal_op; + if (imm < 32) + gen_ubfx(tmp, shift, (1u << imm) - 1); + break; + case 3: /* Bitfield insert/clear. */ + if (imm < shift) + goto illegal_op; + imm = imm + 1 - shift; + if (imm != 32) { + tmp2 = load_reg(s, rd); + gen_bfi(tmp, tmp2, tmp, shift, (1u << imm) - 1); + dead_tmp(tmp2); + } + break; + case 7: + goto illegal_op; + default: /* Saturate. */ + if (shift) { + if (op & 1) + tcg_gen_sari_i32(tmp, tmp, shift); + else + tcg_gen_shli_i32(tmp, tmp, shift); + } + tmp2 = tcg_const_i32(imm); + if (op & 4) { + /* Unsigned. */ + if ((op & 1) && shift == 0) + gen_helper_usat16(tmp, tmp, tmp2); + else + gen_helper_usat(tmp, tmp, tmp2); + } else { + /* Signed. */ + if ((op & 1) && shift == 0) + gen_helper_ssat16(tmp, tmp, tmp2); + else + gen_helper_ssat(tmp, tmp, tmp2); + } + tcg_temp_free_i32(tmp2); + break; + } + store_reg(s, rd, tmp); + } else { + imm = ((insn & 0x04000000) >> 15) + | ((insn & 0x7000) >> 4) | (insn & 0xff); + if (insn & (1 << 22)) { + /* 16-bit immediate. */ + imm |= (insn >> 4) & 0xf000; + if (insn & (1 << 23)) { + /* movt */ + tmp = load_reg(s, rd); + tcg_gen_ext16u_i32(tmp, tmp); + tcg_gen_ori_i32(tmp, tmp, imm << 16); + } else { + /* movw */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, imm); + } + } else { + /* Add/sub 12-bit immediate. */ + if (rn == 15) { + offset = s->pc & ~(uint32_t)3; + if (insn & (1 << 23)) + offset -= imm; + else + offset += imm; + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, offset); + } else { + tmp = load_reg(s, rn); + if (insn & (1 << 23)) + tcg_gen_subi_i32(tmp, tmp, imm); + else + tcg_gen_addi_i32(tmp, tmp, imm); + } + } + store_reg(s, rd, tmp); + } + } else { + int shifter_out = 0; + /* modified 12-bit immediate. */ + shift = ((insn & 0x04000000) >> 23) | ((insn & 0x7000) >> 12); + imm = (insn & 0xff); + switch (shift) { + case 0: /* XY */ + /* Nothing to do. */ + break; + case 1: /* 00XY00XY */ + imm |= imm << 16; + break; + case 2: /* XY00XY00 */ + imm |= imm << 16; + imm <<= 8; + break; + case 3: /* XYXYXYXY */ + imm |= imm << 16; + imm |= imm << 8; + break; + default: /* Rotated constant. */ + shift = (shift << 1) | (imm >> 7); + imm |= 0x80; + imm = imm << (32 - shift); + shifter_out = 1; + break; + } + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, imm); + rn = (insn >> 16) & 0xf; + if (rn == 15) { + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else { + tmp = load_reg(s, rn); + } + op = (insn >> 21) & 0xf; + if (gen_thumb2_data_op(s, op, (insn & (1 << 20)) != 0, + shifter_out, tmp, tmp2)) + goto illegal_op; + dead_tmp(tmp2); + rd = (insn >> 8) & 0xf; + if (rd != 15) { + store_reg(s, rd, tmp); + } else { + dead_tmp(tmp); + } + } + } + break; + case 12: /* Load/store single data item. */ + { + int postinc = 0; + int writeback = 0; + int user; + if ((insn & 0x01100000) == 0x01000000) { + if (disas_neon_ls_insn(env, s, insn)) + goto illegal_op; + break; + } + user = IS_USER(s); + if (rn == 15) { + addr = new_tmp(); + /* PC relative. */ + /* s->pc has already been incremented by 4. */ + imm = s->pc & 0xfffffffc; + if (insn & (1 << 23)) + imm += insn & 0xfff; + else + imm -= insn & 0xfff; + tcg_gen_movi_i32(addr, imm); + } else { + addr = load_reg(s, rn); + if (insn & (1 << 23)) { + /* Positive offset. */ + imm = insn & 0xfff; + tcg_gen_addi_i32(addr, addr, imm); + } else { + op = (insn >> 8) & 7; + imm = insn & 0xff; + switch (op) { + case 0: case 8: /* Shifted Register. */ + shift = (insn >> 4) & 0xf; + if (shift > 3) + goto illegal_op; + tmp = load_reg(s, rm); + if (shift) + tcg_gen_shli_i32(tmp, tmp, shift); + tcg_gen_add_i32(addr, addr, tmp); + dead_tmp(tmp); + break; + case 4: /* Negative offset. */ + tcg_gen_addi_i32(addr, addr, -imm); + break; + case 6: /* User privilege. */ + tcg_gen_addi_i32(addr, addr, imm); + user = 1; + break; + case 1: /* Post-decrement. */ + imm = -imm; + /* Fall through. */ + case 3: /* Post-increment. */ + postinc = 1; + writeback = 1; + break; + case 5: /* Pre-decrement. */ + imm = -imm; + /* Fall through. */ + case 7: /* Pre-increment. */ + tcg_gen_addi_i32(addr, addr, imm); + writeback = 1; + break; + default: + goto illegal_op; + } + } + } + op = ((insn >> 21) & 3) | ((insn >> 22) & 4); + if (insn & (1 << 20)) { + /* Load. */ + if (rs == 15 && op != 2) { + if (op & 2) + goto illegal_op; + /* Memory hint. Implemented as NOP. */ + } else { + switch (op) { + case 0: tmp = gen_ld8u(addr, user); break; + case 4: tmp = gen_ld8s(addr, user); break; + case 1: tmp = gen_ld16u(addr, user); break; + case 5: tmp = gen_ld16s(addr, user); break; + case 2: tmp = gen_ld32(addr, user); break; + default: goto illegal_op; + } + if (rs == 15) { + gen_bx(s, tmp); + } else { + store_reg(s, rs, tmp); + } + } + } else { + /* Store. */ + if (rs == 15) + goto illegal_op; + tmp = load_reg(s, rs); + switch (op) { + case 0: gen_st8(tmp, addr, user); break; + case 1: gen_st16(tmp, addr, user); break; + case 2: gen_st32(tmp, addr, user); break; + default: goto illegal_op; + } + } + if (postinc) + tcg_gen_addi_i32(addr, addr, imm); + if (writeback) { + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + } + break; + default: + goto illegal_op; + } + return 0; +illegal_op: + return 1; +} + +static void disas_thumb_insn(CPUState *env, DisasContext *s) +{ + uint32_t val, insn, op, rm, rn, rd, shift, cond; + int32_t offset; + int i; + TCGv tmp; + TCGv tmp2; + TCGv addr; + + if (s->condexec_mask) { + cond = s->condexec_cond; + s->condlabel = gen_new_label(); + gen_test_cc(cond ^ 1, s->condlabel); + s->condjmp = 1; + } + + insn = lduw_code(s->pc); + s->pc += 2; + + switch (insn >> 12) { + case 0: case 1: + + rd = insn & 7; + op = (insn >> 11) & 3; + if (op == 3) { + /* add/subtract */ + rn = (insn >> 3) & 7; + tmp = load_reg(s, rn); + if (insn & (1 << 10)) { + /* immediate */ + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, (insn >> 6) & 7); + } else { + /* reg */ + rm = (insn >> 6) & 7; + tmp2 = load_reg(s, rm); + } + if (insn & (1 << 9)) { + if (s->condexec_mask) + tcg_gen_sub_i32(tmp, tmp, tmp2); + else + gen_helper_sub_cc(tmp, tmp, tmp2); + } else { + if (s->condexec_mask) + tcg_gen_add_i32(tmp, tmp, tmp2); + else + gen_helper_add_cc(tmp, tmp, tmp2); + } + dead_tmp(tmp2); + store_reg(s, rd, tmp); + } else { + /* shift immediate */ + rm = (insn >> 3) & 7; + shift = (insn >> 6) & 0x1f; + tmp = load_reg(s, rm); + gen_arm_shift_im(tmp, op, shift, s->condexec_mask == 0); + if (!s->condexec_mask) + gen_logic_CC(tmp); + store_reg(s, rd, tmp); + } + break; + case 2: case 3: + /* arithmetic large immediate */ + op = (insn >> 11) & 3; + rd = (insn >> 8) & 0x7; + if (op == 0) { /* mov */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, insn & 0xff); + if (!s->condexec_mask) + gen_logic_CC(tmp); + store_reg(s, rd, tmp); + } else { + tmp = load_reg(s, rd); + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, insn & 0xff); + switch (op) { + case 1: /* cmp */ + gen_helper_sub_cc(tmp, tmp, tmp2); + dead_tmp(tmp); + dead_tmp(tmp2); + break; + case 2: /* add */ + if (s->condexec_mask) + tcg_gen_add_i32(tmp, tmp, tmp2); + else + gen_helper_add_cc(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 3: /* sub */ + if (s->condexec_mask) + tcg_gen_sub_i32(tmp, tmp, tmp2); + else + gen_helper_sub_cc(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + } + } + break; + case 4: + if (insn & (1 << 11)) { + rd = (insn >> 8) & 7; + /* load pc-relative. Bit 1 of PC is ignored. */ + val = s->pc + 2 + ((insn & 0xff) * 4); + val &= ~(uint32_t)2; + addr = new_tmp(); + tcg_gen_movi_i32(addr, val); + tmp = gen_ld32(addr, IS_USER(s)); + dead_tmp(addr); + store_reg(s, rd, tmp); + break; + } + if (insn & (1 << 10)) { + /* data processing extended or blx */ + rd = (insn & 7) | ((insn >> 4) & 8); + rm = (insn >> 3) & 0xf; + op = (insn >> 8) & 3; + switch (op) { + case 0: /* add */ + tmp = load_reg(s, rd); + tmp2 = load_reg(s, rm); + tcg_gen_add_i32(tmp, tmp, tmp2); + dead_tmp(tmp2); + store_reg(s, rd, tmp); + break; + case 1: /* cmp */ + tmp = load_reg(s, rd); + tmp2 = load_reg(s, rm); + gen_helper_sub_cc(tmp, tmp, tmp2); + dead_tmp(tmp2); + dead_tmp(tmp); + break; + case 2: /* mov/cpy */ + tmp = load_reg(s, rm); + store_reg(s, rd, tmp); + break; + case 3:/* branch [and link] exchange thumb register */ + tmp = load_reg(s, rm); + if (insn & (1 << 7)) { + val = (uint32_t)s->pc | 1; + tmp2 = new_tmp(); + tcg_gen_movi_i32(tmp2, val); + store_reg(s, 14, tmp2); + } + gen_bx(s, tmp); + break; + } + break; + } + + /* data processing register */ + rd = insn & 7; + rm = (insn >> 3) & 7; + op = (insn >> 6) & 0xf; + if (op == 2 || op == 3 || op == 4 || op == 7) { + /* the shift/rotate ops want the operands backwards */ + val = rm; + rm = rd; + rd = val; + val = 1; + } else { + val = 0; + } + + if (op == 9) { /* neg */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + } else if (op != 0xf) { /* mvn doesn't read its first operand */ + tmp = load_reg(s, rd); + } else { + TCGV_UNUSED(tmp); + } + + tmp2 = load_reg(s, rm); + switch (op) { + case 0x0: /* and */ + tcg_gen_and_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0x1: /* eor */ + tcg_gen_xor_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0x2: /* lsl */ + if (s->condexec_mask) { + gen_helper_shl(tmp2, tmp2, tmp); + } else { + gen_helper_shl_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x3: /* lsr */ + if (s->condexec_mask) { + gen_helper_shr(tmp2, tmp2, tmp); + } else { + gen_helper_shr_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x4: /* asr */ + if (s->condexec_mask) { + gen_helper_sar(tmp2, tmp2, tmp); + } else { + gen_helper_sar_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x5: /* adc */ + if (s->condexec_mask) + gen_adc(tmp, tmp2); + else + gen_helper_adc_cc(tmp, tmp, tmp2); + break; + case 0x6: /* sbc */ + if (s->condexec_mask) + gen_sub_carry(tmp, tmp, tmp2); + else + gen_helper_sbc_cc(tmp, tmp, tmp2); + break; + case 0x7: /* ror */ + if (s->condexec_mask) { + tcg_gen_andi_i32(tmp, tmp, 0x1f); + tcg_gen_rotr_i32(tmp2, tmp2, tmp); + } else { + gen_helper_ror_cc(tmp2, tmp2, tmp); + gen_logic_CC(tmp2); + } + break; + case 0x8: /* tst */ + tcg_gen_and_i32(tmp, tmp, tmp2); + gen_logic_CC(tmp); + rd = 16; + break; + case 0x9: /* neg */ + if (s->condexec_mask) + tcg_gen_neg_i32(tmp, tmp2); + else + gen_helper_sub_cc(tmp, tmp, tmp2); + break; + case 0xa: /* cmp */ + gen_helper_sub_cc(tmp, tmp, tmp2); + rd = 16; + break; + case 0xb: /* cmn */ + gen_helper_add_cc(tmp, tmp, tmp2); + rd = 16; + break; + case 0xc: /* orr */ + tcg_gen_or_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0xd: /* mul */ + tcg_gen_mul_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0xe: /* bic */ + tcg_gen_andc_i32(tmp, tmp, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp); + break; + case 0xf: /* mvn */ + tcg_gen_not_i32(tmp2, tmp2); + if (!s->condexec_mask) + gen_logic_CC(tmp2); + val = 1; + rm = rd; + break; + } + if (rd != 16) { + if (val) { + store_reg(s, rm, tmp2); + if (op != 0xf) + dead_tmp(tmp); + } else { + store_reg(s, rd, tmp); + dead_tmp(tmp2); + } + } else { + dead_tmp(tmp); + dead_tmp(tmp2); + } + break; + + case 5: + /* load/store register offset. */ + rd = insn & 7; + rn = (insn >> 3) & 7; + rm = (insn >> 6) & 7; + op = (insn >> 9) & 7; + addr = load_reg(s, rn); + tmp = load_reg(s, rm); + tcg_gen_add_i32(addr, addr, tmp); + dead_tmp(tmp); + + if (op < 3) /* store */ + tmp = load_reg(s, rd); + + switch (op) { + case 0: /* str */ + gen_st32(tmp, addr, IS_USER(s)); + break; + case 1: /* strh */ + gen_st16(tmp, addr, IS_USER(s)); + break; + case 2: /* strb */ + gen_st8(tmp, addr, IS_USER(s)); + break; + case 3: /* ldrsb */ + tmp = gen_ld8s(addr, IS_USER(s)); + break; + case 4: /* ldr */ + tmp = gen_ld32(addr, IS_USER(s)); + break; + case 5: /* ldrh */ + tmp = gen_ld16u(addr, IS_USER(s)); + break; + case 6: /* ldrb */ + tmp = gen_ld8u(addr, IS_USER(s)); + break; + case 7: /* ldrsh */ + tmp = gen_ld16s(addr, IS_USER(s)); + break; + } + if (op >= 3) /* load */ + store_reg(s, rd, tmp); + dead_tmp(addr); + break; + + case 6: + /* load/store word immediate offset */ + rd = insn & 7; + rn = (insn >> 3) & 7; + addr = load_reg(s, rn); + val = (insn >> 4) & 0x7c; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 7: + /* load/store byte immediate offset */ + rd = insn & 7; + rn = (insn >> 3) & 7; + addr = load_reg(s, rn); + val = (insn >> 6) & 0x1f; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld8u(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st8(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 8: + /* load/store halfword immediate offset */ + rd = insn & 7; + rn = (insn >> 3) & 7; + addr = load_reg(s, rn); + val = (insn >> 5) & 0x3e; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld16u(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st16(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 9: + /* load/store from stack */ + rd = (insn >> 8) & 7; + addr = load_reg(s, 13); + val = (insn & 0xff) * 4; + tcg_gen_addi_i32(addr, addr, val); + + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, rd, tmp); + } else { + /* store */ + tmp = load_reg(s, rd); + gen_st32(tmp, addr, IS_USER(s)); + } + dead_tmp(addr); + break; + + case 10: + /* add to high reg */ + rd = (insn >> 8) & 7; + if (insn & (1 << 11)) { + /* SP */ + tmp = load_reg(s, 13); + } else { + /* PC. bit 1 is ignored. */ + tmp = new_tmp(); + tcg_gen_movi_i32(tmp, (s->pc + 2) & ~(uint32_t)2); + } + val = (insn & 0xff) * 4; + tcg_gen_addi_i32(tmp, tmp, val); + store_reg(s, rd, tmp); + break; + + case 11: + /* misc */ + op = (insn >> 8) & 0xf; + switch (op) { + case 0: + /* adjust stack pointer */ + tmp = load_reg(s, 13); + val = (insn & 0x7f) * 4; + if (insn & (1 << 7)) + val = -(int32_t)val; + tcg_gen_addi_i32(tmp, tmp, val); + store_reg(s, 13, tmp); + break; + + case 2: /* sign/zero extend. */ + ARCH(6); + rd = insn & 7; + rm = (insn >> 3) & 7; + tmp = load_reg(s, rm); + switch ((insn >> 6) & 3) { + case 0: gen_sxth(tmp); break; + case 1: gen_sxtb(tmp); break; + case 2: gen_uxth(tmp); break; + case 3: gen_uxtb(tmp); break; + } + store_reg(s, rd, tmp); + break; + case 4: case 5: case 0xc: case 0xd: + /* push/pop */ + addr = load_reg(s, 13); + if (insn & (1 << 8)) + offset = 4; + else + offset = 0; + for (i = 0; i < 8; i++) { + if (insn & (1 << i)) + offset += 4; + } + if ((insn & (1 << 11)) == 0) { + tcg_gen_addi_i32(addr, addr, -offset); + } + for (i = 0; i < 8; i++) { + if (insn & (1 << i)) { + if (insn & (1 << 11)) { + /* pop */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, i, tmp); + } else { + /* push */ + tmp = load_reg(s, i); + gen_st32(tmp, addr, IS_USER(s)); + } + /* advance to the next address. */ + tcg_gen_addi_i32(addr, addr, 4); + } + } + TCGV_UNUSED(tmp); + if (insn & (1 << 8)) { + if (insn & (1 << 11)) { + /* pop pc */ + tmp = gen_ld32(addr, IS_USER(s)); + /* don't set the pc until the rest of the instruction + has completed */ + } else { + /* push lr */ + tmp = load_reg(s, 14); + gen_st32(tmp, addr, IS_USER(s)); + } + tcg_gen_addi_i32(addr, addr, 4); + } + if ((insn & (1 << 11)) == 0) { + tcg_gen_addi_i32(addr, addr, -offset); + } + /* write back the new stack pointer */ + store_reg(s, 13, addr); + /* set the new PC value */ + if ((insn & 0x0900) == 0x0900) + gen_bx(s, tmp); + break; + + case 1: case 3: case 9: case 11: /* czb */ + rm = insn & 7; + tmp = load_reg(s, rm); + s->condlabel = gen_new_label(); + s->condjmp = 1; + if (insn & (1 << 11)) + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, 0, s->condlabel); + else + tcg_gen_brcondi_i32(TCG_COND_NE, tmp, 0, s->condlabel); + dead_tmp(tmp); + offset = ((insn & 0xf8) >> 2) | (insn & 0x200) >> 3; + val = (uint32_t)s->pc + 2; + val += offset; + gen_jmp(s, val); + break; + + case 15: /* IT, nop-hint. */ + if ((insn & 0xf) == 0) { + gen_nop_hint(s, (insn >> 4) & 0xf); + break; + } + /* If Then. */ + s->condexec_cond = (insn >> 4) & 0xe; + s->condexec_mask = insn & 0x1f; + /* No actual code generated for this insn, just setup state. */ + break; + + case 0xe: /* bkpt */ + gen_set_condexec(s); + gen_set_pc_im(s->pc - 2); + gen_exception(EXCP_BKPT); + s->is_jmp = DISAS_JUMP; + break; + + case 0xa: /* rev */ + ARCH(6); + rn = (insn >> 3) & 0x7; + rd = insn & 0x7; + tmp = load_reg(s, rn); + switch ((insn >> 6) & 3) { + case 0: tcg_gen_bswap32_i32(tmp, tmp); break; + case 1: gen_rev16(tmp); break; + case 3: gen_revsh(tmp); break; + default: goto illegal_op; + } + store_reg(s, rd, tmp); + break; + + case 6: /* cps */ + ARCH(6); + if (IS_USER(s)) + break; + if (IS_M(env)) { + tmp = tcg_const_i32((insn & (1 << 4)) != 0); + /* PRIMASK */ + if (insn & 1) { + addr = tcg_const_i32(16); + gen_helper_v7m_msr(cpu_env, addr, tmp); + tcg_temp_free_i32(addr); + } + /* FAULTMASK */ + if (insn & 2) { + addr = tcg_const_i32(17); + gen_helper_v7m_msr(cpu_env, addr, tmp); + tcg_temp_free_i32(addr); + } + tcg_temp_free_i32(tmp); + gen_lookup_tb(s); + } else { + if (insn & (1 << 4)) + shift = CPSR_A | CPSR_I | CPSR_F; + else + shift = 0; + gen_set_psr_im(s, shift, 0, ((insn & 7) << 6) & shift); + } + break; + + default: + goto undef; + } + break; + + case 12: + /* load/store multiple */ + rn = (insn >> 8) & 0x7; + addr = load_reg(s, rn); + for (i = 0; i < 8; i++) { + if (insn & (1 << i)) { + if (insn & (1 << 11)) { + /* load */ + tmp = gen_ld32(addr, IS_USER(s)); + store_reg(s, i, tmp); + } else { + /* store */ + tmp = load_reg(s, i); + gen_st32(tmp, addr, IS_USER(s)); + } + /* advance to the next address */ + tcg_gen_addi_i32(addr, addr, 4); + } + } + /* Base register writeback. */ + if ((insn & (1 << rn)) == 0) { + store_reg(s, rn, addr); + } else { + dead_tmp(addr); + } + break; + + case 13: + /* conditional branch or swi */ + cond = (insn >> 8) & 0xf; + if (cond == 0xe) + goto undef; + + if (cond == 0xf) { + /* swi */ + gen_set_condexec(s); + gen_set_pc_im(s->pc); + s->is_jmp = DISAS_SWI; + break; + } + /* generate a conditional jump to next instruction */ + s->condlabel = gen_new_label(); + gen_test_cc(cond ^ 1, s->condlabel); + s->condjmp = 1; + + /* jump to the offset */ + val = (uint32_t)s->pc + 2; + offset = ((int32_t)insn << 24) >> 24; + val += offset << 1; + gen_jmp(s, val); + break; + + case 14: + if (insn & (1 << 11)) { + if (disas_thumb2_insn(env, s, insn)) + goto undef32; + break; + } + /* unconditional branch */ + val = (uint32_t)s->pc; + offset = ((int32_t)insn << 21) >> 21; + val += (offset << 1) + 2; + gen_jmp(s, val); + break; + + case 15: + if (disas_thumb2_insn(env, s, insn)) + goto undef32; + break; + } + return; +undef32: + gen_set_condexec(s); + gen_set_pc_im(s->pc - 4); + gen_exception(EXCP_UDEF); + s->is_jmp = DISAS_JUMP; + return; +illegal_op: +undef: + gen_set_condexec(s); + gen_set_pc_im(s->pc - 2); + gen_exception(EXCP_UDEF); + s->is_jmp = DISAS_JUMP; +} + +/* generate intermediate code in gen_opc_buf and gen_opparam_buf for + basic block 'tb'. If search_pc is TRUE, also generate PC + information for each intermediate instruction. */ +static inline void gen_intermediate_code_internal(CPUState *env, + TranslationBlock *tb, + int search_pc) +{ + DisasContext dc1, *dc = &dc1; + CPUBreakpoint *bp; + uint16_t *gen_opc_end; + int j, lj; + target_ulong pc_start; + uint32_t next_page_start; + int num_insns; + int max_insns; + + /* generate intermediate code */ + num_temps = 0; + + pc_start = tb->pc; + + dc->tb = tb; + + gen_opc_end = gen_opc_buf + OPC_MAX_SIZE; + + dc->is_jmp = DISAS_NEXT; + dc->pc = pc_start; + dc->singlestep_enabled = env->singlestep_enabled; + dc->condjmp = 0; + dc->thumb = env->thumb; + dc->condexec_mask = (env->condexec_bits & 0xf) << 1; + dc->condexec_cond = env->condexec_bits >> 4; +#if !defined(CONFIG_USER_ONLY) + if (IS_M(env)) { + dc->user = ((env->v7m.exception == 0) && (env->v7m.control & 1)); + } else { + dc->user = (env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_USR; + } +#endif + cpu_F0s = tcg_temp_new_i32(); + cpu_F1s = tcg_temp_new_i32(); + cpu_F0d = tcg_temp_new_i64(); + cpu_F1d = tcg_temp_new_i64(); + cpu_V0 = cpu_F0d; + cpu_V1 = cpu_F1d; + /* FIXME: cpu_M0 can probably be the same as cpu_V0. */ + cpu_M0 = tcg_temp_new_i64(); + next_page_start = (pc_start & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE; + lj = -1; + num_insns = 0; + max_insns = tb->cflags & CF_COUNT_MASK; + if (max_insns == 0) + max_insns = CF_COUNT_MASK; + + gen_icount_start(); + /* Reset the conditional execution bits immediately. This avoids + complications trying to do it at the end of the block. */ + if (env->condexec_bits) + { + TCGv tmp = new_tmp(); + tcg_gen_movi_i32(tmp, 0); + store_cpu_field(tmp, condexec_bits); + } + do { +#ifdef CONFIG_USER_ONLY + /* Intercept jump to the magic kernel page. */ + if (dc->pc >= 0xffff0000) { + /* We always get here via a jump, so know we are not in a + conditional execution block. */ + gen_exception(EXCP_KERNEL_TRAP); + dc->is_jmp = DISAS_UPDATE; + break; + } +#else + if (dc->pc >= 0xfffffff0 && IS_M(env)) { + /* We always get here via a jump, so know we are not in a + conditional execution block. */ + gen_exception(EXCP_EXCEPTION_EXIT); + dc->is_jmp = DISAS_UPDATE; + break; + } +#endif + + if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { + QTAILQ_FOREACH(bp, &env->breakpoints, entry) { + if (bp->pc == dc->pc) { + gen_set_condexec(dc); + gen_set_pc_im(dc->pc); + gen_exception(EXCP_DEBUG); + dc->is_jmp = DISAS_JUMP; + /* Advance PC so that clearing the breakpoint will + invalidate this TB. */ + dc->pc += 2; + goto done_generating; + break; + } + } + } + if (search_pc) { + j = gen_opc_ptr - gen_opc_buf; + if (lj < j) { + lj++; + while (lj < j) + gen_opc_instr_start[lj++] = 0; + } + gen_opc_pc[lj] = dc->pc; + gen_opc_instr_start[lj] = 1; + gen_opc_icount[lj] = num_insns; + } + + if (num_insns + 1 == max_insns && (tb->cflags & CF_LAST_IO)) + gen_io_start(); + + if (env->thumb) { + disas_thumb_insn(env, dc); + if (dc->condexec_mask) { + dc->condexec_cond = (dc->condexec_cond & 0xe) + | ((dc->condexec_mask >> 4) & 1); + dc->condexec_mask = (dc->condexec_mask << 1) & 0x1f; + if (dc->condexec_mask == 0) { + dc->condexec_cond = 0; + } + } + } else { + disas_arm_insn(env, dc); + } + if (num_temps) { + fprintf(stderr, "Internal resource leak before %08x\n", dc->pc); + num_temps = 0; + } + + if (dc->condjmp && !dc->is_jmp) { + gen_set_label(dc->condlabel); + dc->condjmp = 0; + } + /* Translation stops when a conditional branch is encountered. + * Otherwise the subsequent code could get translated several times. + * Also stop translation when a page boundary is reached. This + * ensures prefetch aborts occur at the right place. */ + num_insns ++; + } while (!dc->is_jmp && gen_opc_ptr < gen_opc_end && + !env->singlestep_enabled && + !singlestep && + dc->pc < next_page_start && + num_insns < max_insns); + + if (tb->cflags & CF_LAST_IO) { + if (dc->condjmp) { + /* FIXME: This can theoretically happen with self-modifying + code. */ + cpu_abort(env, "IO on conditional branch instruction"); + } + gen_io_end(); + } + + /* At this stage dc->condjmp will only be set when the skipped + instruction was a conditional branch or trap, and the PC has + already been written. */ + if (unlikely(env->singlestep_enabled)) { + /* Make sure the pc is updated, and raise a debug exception. */ + if (dc->condjmp) { + gen_set_condexec(dc); + if (dc->is_jmp == DISAS_SWI) { + gen_exception(EXCP_SWI); + } else { + gen_exception(EXCP_DEBUG); + } + gen_set_label(dc->condlabel); + } + if (dc->condjmp || !dc->is_jmp) { + gen_set_pc_im(dc->pc); + dc->condjmp = 0; + } + gen_set_condexec(dc); + if (dc->is_jmp == DISAS_SWI && !dc->condjmp) { + gen_exception(EXCP_SWI); + } else { + /* FIXME: Single stepping a WFI insn will not halt + the CPU. */ + gen_exception(EXCP_DEBUG); + } + } else { + /* While branches must always occur at the end of an IT block, + there are a few other things that can cause us to terminate + the TB in the middel of an IT block: + - Exception generating instructions (bkpt, swi, undefined). + - Page boundaries. + - Hardware watchpoints. + Hardware breakpoints have already been handled and skip this code. + */ + gen_set_condexec(dc); + switch(dc->is_jmp) { + case DISAS_NEXT: + gen_goto_tb(dc, 1, dc->pc); + break; + default: + case DISAS_JUMP: + case DISAS_UPDATE: + /* indicate that the hash table must be used to find the next TB */ + tcg_gen_exit_tb(0); + break; + case DISAS_TB_JUMP: + /* nothing more to generate */ + break; + case DISAS_WFI: + gen_helper_wfi(); + break; + case DISAS_SWI: + gen_exception(EXCP_SWI); + break; + } + if (dc->condjmp) { + gen_set_label(dc->condlabel); + gen_set_condexec(dc); + gen_goto_tb(dc, 1, dc->pc); + dc->condjmp = 0; + } + } + +done_generating: + gen_icount_end(tb, num_insns); + *gen_opc_ptr = INDEX_op_end; + +#ifdef DEBUG_DISAS + if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { + qemu_log("----------------\n"); + qemu_log("IN: %s\n", lookup_symbol(pc_start)); + log_target_disas(pc_start, dc->pc - pc_start, env->thumb); + qemu_log("\n"); + } +#endif + if (search_pc) { + j = gen_opc_ptr - gen_opc_buf; + lj++; + while (lj <= j) + gen_opc_instr_start[lj++] = 0; + } else { + tb->size = dc->pc - pc_start; + tb->icount = num_insns; + } +} + +void gen_intermediate_code(CPUState *env, TranslationBlock *tb) +{ + gen_intermediate_code_internal(env, tb, 0); +} + +void gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb) +{ + gen_intermediate_code_internal(env, tb, 1); +} + +static const char *cpu_mode_names[16] = { + "usr", "fiq", "irq", "svc", "???", "???", "???", "abt", + "???", "???", "???", "und", "???", "???", "???", "sys" +}; + +void cpu_dump_state(CPUState *env, FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...), + int flags) +{ + int i; +#if 0 + union { + uint32_t i; + float s; + } s0, s1; + CPU_DoubleU d; + /* ??? This assumes float64 and double have the same layout. + Oh well, it's only debug dumps. */ + union { + float64 f64; + double d; + } d0; +#endif + uint32_t psr; + + for(i=0;i<16;i++) { + cpu_fprintf(f, "R%02d=%08x", i, env->regs[i]); + if ((i % 4) == 3) + cpu_fprintf(f, "\n"); + else + cpu_fprintf(f, " "); + } + psr = cpsr_read(env); + cpu_fprintf(f, "PSR=%08x %c%c%c%c %c %s%d\n", + psr, + psr & (1 << 31) ? 'N' : '-', + psr & (1 << 30) ? 'Z' : '-', + psr & (1 << 29) ? 'C' : '-', + psr & (1 << 28) ? 'V' : '-', + psr & CPSR_T ? 'T' : 'A', + cpu_mode_names[psr & 0xf], (psr & 0x10) ? 32 : 26); + +#if 0 + for (i = 0; i < 16; i++) { + d.d = env->vfp.regs[i]; + s0.i = d.l.lower; + s1.i = d.l.upper; + d0.f64 = d.d; + cpu_fprintf(f, "s%02d=%08x(%8g) s%02d=%08x(%8g) d%02d=%08x%08x(%8g)\n", + i * 2, (int)s0.i, s0.s, + i * 2 + 1, (int)s1.i, s1.s, + i, (int)(uint32_t)d.l.upper, (int)(uint32_t)d.l.lower, + d0.d); + } + cpu_fprintf(f, "FPSCR: %08x\n", (int)env->vfp.xregs[ARM_VFP_FPSCR]); +#endif +} + +void gen_pc_load(CPUState *env, TranslationBlock *tb, + unsigned long searched_pc, int pc_pos, void *puc) +{ + env->regs[15] = gen_opc_pc[pc_pos]; +} diff --git a/qemu/qemu-git/targphys.h b/qemu/qemu-git/targphys.h new file mode 100644 index 0000000..99ab23c --- /dev/null +++ b/qemu/qemu-git/targphys.h @@ -0,0 +1,24 @@ +/* Define target_phys_addr_t if it exists. */ + +#ifndef TARGPHYS_H +#define TARGPHYS_H + +#ifdef TARGET_PHYS_ADDR_BITS +/* target_phys_addr_t is the type of a physical address (its size can + be different from 'target_ulong'). We have sizeof(target_phys_addr) + = max(sizeof(unsigned long), + sizeof(size_of_target_physical_address)) because we must pass a + host pointer to memory operations in some cases */ + +#if TARGET_PHYS_ADDR_BITS == 32 +typedef uint32_t target_phys_addr_t; +#define TARGET_PHYS_ADDR_MAX UINT32_MAX +#define TARGET_FMT_plx "%08x" +#elif TARGET_PHYS_ADDR_BITS == 64 +typedef uint64_t target_phys_addr_t; +#define TARGET_PHYS_ADDR_MAX UINT64_MAX +#define TARGET_FMT_plx "%016" PRIx64 +#endif +#endif + +#endif diff --git a/qemu/qemu-git/tcg-runtime.c b/qemu/qemu-git/tcg-runtime.c new file mode 100644 index 0000000..219cade --- /dev/null +++ b/qemu/qemu-git/tcg-runtime.c @@ -0,0 +1,61 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include + +#include "tcg/tcg-runtime.h" + +int64_t tcg_helper_shl_i64(int64_t arg1, int64_t arg2) +{ + return arg1 << arg2; +} + +int64_t tcg_helper_shr_i64(int64_t arg1, int64_t arg2) +{ + return (uint64_t)arg1 >> arg2; +} + +int64_t tcg_helper_sar_i64(int64_t arg1, int64_t arg2) +{ + return arg1 >> arg2; +} + +int64_t tcg_helper_div_i64(int64_t arg1, int64_t arg2) +{ + return arg1 / arg2; +} + +int64_t tcg_helper_rem_i64(int64_t arg1, int64_t arg2) +{ + return arg1 % arg2; +} + +uint64_t tcg_helper_divu_i64(uint64_t arg1, uint64_t arg2) +{ + return arg1 / arg2; +} + +uint64_t tcg_helper_remu_i64(uint64_t arg1, uint64_t arg2) +{ + return arg1 % arg2; +} diff --git a/qemu/qemu-git/tcg/.svn/all-wcprops b/qemu/qemu-git/tcg/.svn/all-wcprops new file mode 100644 index 0000000..630ca68 --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/all-wcprops @@ -0,0 +1,53 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg +END +tcg-op.h +K 25 +svn:wc:ra_dav:version-url +V 52 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/tcg-op.h +END +LICENSE +K 25 +svn:wc:ra_dav:version-url +V 51 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/LICENSE +END +tcg-opc.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/tcg-opc.h +END +tcg.h +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/tcg.h +END +tcg-runtime.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/tcg-runtime.h +END +TODO +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/TODO +END +README +K 25 +svn:wc:ra_dav:version-url +V 50 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/README +END +tcg.c +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/tcg.c +END diff --git a/qemu/qemu-git/tcg/.svn/entries b/qemu/qemu-git/tcg/.svn/entries new file mode 100644 index 0000000..a14c7b9 --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/entries @@ -0,0 +1,327 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-op.h +file + + + + +2013-08-23T00:54:47.000000Z +751d2dc7d578e005034d93bc0801afc9 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +65136 + +arm +dir + +tcg-opc.h +file + + + + +2013-08-23T00:54:47.000000Z +4a07134a8350e09a6eb1085a8e1a8590 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +8525 + +LICENSE +file + + + + +2013-08-23T00:54:47.000000Z +d11ae3b9d7c6d64e64f06995ce28562d +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +146 + +ppc +dir + +tcg-runtime.h +file + + + + +2013-08-23T00:54:47.000000Z +0e7974b77cf2837825d42e5b779e02f9 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +473 + +hppa +dir + +i386 +dir + +ppc64 +dir + +README +file + + + + +2013-08-23T00:54:47.000000Z +dd8f60487ad8672620cad0409eca48bc +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +12734 + +tcg.c +file + + + + +2013-08-23T00:54:47.000000Z +b5d3f59022049ce9ae244bcc8b5afca4 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +63169 + +s390 +dir + +x86_64 +dir + +tcg.h +file + + + + +2013-08-23T00:54:47.000000Z +17474dfcc15b2bcef749275db5f8ec97 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +14312 + +TODO +file + + + + +2013-08-23T00:54:47.000000Z +bf07003b0e637aa264b95f358e1da643 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +403 + +mips +dir + +sparc +dir + diff --git a/qemu/qemu-git/tcg/.svn/text-base/LICENSE.svn-base b/qemu/qemu-git/tcg/.svn/text-base/LICENSE.svn-base new file mode 100644 index 0000000..be817fa --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/LICENSE.svn-base @@ -0,0 +1,3 @@ +All the files in this directory and subdirectories are released under +a BSD like license (see header in each file). No other license is +accepted. diff --git a/qemu/qemu-git/tcg/.svn/text-base/README.svn-base b/qemu/qemu-git/tcg/.svn/text-base/README.svn-base new file mode 100644 index 0000000..e672258 --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/README.svn-base @@ -0,0 +1,454 @@ +Tiny Code Generator - Fabrice Bellard. + +1) Introduction + +TCG (Tiny Code Generator) began as a generic backend for a C +compiler. It was simplified to be used in QEMU. It also has its roots +in the QOP code generator written by Paul Brook. + +2) Definitions + +The TCG "target" is the architecture for which we generate the +code. It is of course not the same as the "target" of QEMU which is +the emulated architecture. As TCG started as a generic C backend used +for cross compiling, it is assumed that the TCG target is different +from the host, although it is never the case for QEMU. + +A TCG "function" corresponds to a QEMU Translated Block (TB). + +A TCG "temporary" is a variable only live in a basic +block. Temporaries are allocated explicitly in each function. + +A TCG "local temporary" is a variable only live in a function. Local +temporaries are allocated explicitly in each function. + +A TCG "global" is a variable which is live in all the functions +(equivalent of a C global variable). They are defined before the +functions defined. A TCG global can be a memory location (e.g. a QEMU +CPU register), a fixed host register (e.g. the QEMU CPU state pointer) +or a memory location which is stored in a register outside QEMU TBs +(not implemented yet). + +A TCG "basic block" corresponds to a list of instructions terminated +by a branch instruction. + +3) Intermediate representation + +3.1) Introduction + +TCG instructions operate on variables which are temporaries, local +temporaries or globals. TCG instructions and variables are strongly +typed. Two types are supported: 32 bit integers and 64 bit +integers. Pointers are defined as an alias to 32 bit or 64 bit +integers depending on the TCG target word size. + +Each instruction has a fixed number of output variable operands, input +variable operands and always constant operands. + +The notable exception is the call instruction which has a variable +number of outputs and inputs. + +In the textual form, output operands usually come first, followed by +input operands, followed by constant operands. The output type is +included in the instruction name. Constants are prefixed with a '$'. + +add_i32 t0, t1, t2 (t0 <- t1 + t2) + +3.2) Assumptions + +* Basic blocks + +- Basic blocks end after branches (e.g. brcond_i32 instruction), + goto_tb and exit_tb instructions. +- Basic blocks start after the end of a previous basic block, or at a + set_label instruction. + +After the end of a basic block, the content of temporaries is +destroyed, but local temporaries and globals are preserved. + +* Floating point types are not supported yet + +* Pointers: depending on the TCG target, pointer size is 32 bit or 64 + bit. The type TCG_TYPE_PTR is an alias to TCG_TYPE_I32 or + TCG_TYPE_I64. + +* Helpers: + +Using the tcg_gen_helper_x_y it is possible to call any function +taking i32, i64 or pointer types. Before calling an helper, all +globals are stored at their canonical location and it is assumed that +the function can modify them. In the future, function modifiers will +be allowed to tell that the helper does not read or write some globals. + +On some TCG targets (e.g. x86), several calling conventions are +supported. + +* Branches: + +Use the instruction 'br' to jump to a label. Use 'jmp' to jump to an +explicit address. Conditional branches can only jump to labels. + +3.3) Code Optimizations + +When generating instructions, you can count on at least the following +optimizations: + +- Single instructions are simplified, e.g. + + and_i32 t0, t0, $0xffffffff + + is suppressed. + +- A liveness analysis is done at the basic block level. The + information is used to suppress moves from a dead variable to + another one. It is also used to remove instructions which compute + dead results. The later is especially useful for condition code + optimization in QEMU. + + In the following example: + + add_i32 t0, t1, t2 + add_i32 t0, t0, $1 + mov_i32 t0, $1 + + only the last instruction is kept. + +3.4) Instruction Reference + +********* Function call + +* call ptr + +call function 'ptr' (pointer type) + + optional 32 bit or 64 bit return value + optional 32 bit or 64 bit parameters + +********* Jumps/Labels + +* jmp t0 + +Absolute jump to address t0 (pointer type). + +* set_label $label + +Define label 'label' at the current program point. + +* br $label + +Jump to label. + +* brcond_i32/i64 cond, t0, t1, label + +Conditional jump if t0 cond t1 is true. cond can be: + TCG_COND_EQ + TCG_COND_NE + TCG_COND_LT /* signed */ + TCG_COND_GE /* signed */ + TCG_COND_LE /* signed */ + TCG_COND_GT /* signed */ + TCG_COND_LTU /* unsigned */ + TCG_COND_GEU /* unsigned */ + TCG_COND_LEU /* unsigned */ + TCG_COND_GTU /* unsigned */ + +********* Arithmetic + +* add_i32/i64 t0, t1, t2 + +t0=t1+t2 + +* sub_i32/i64 t0, t1, t2 + +t0=t1-t2 + +* neg_i32/i64 t0, t1 + +t0=-t1 (two's complement) + +* mul_i32/i64 t0, t1, t2 + +t0=t1*t2 + +* div_i32/i64 t0, t1, t2 + +t0=t1/t2 (signed). Undefined behavior if division by zero or overflow. + +* divu_i32/i64 t0, t1, t2 + +t0=t1/t2 (unsigned). Undefined behavior if division by zero. + +* rem_i32/i64 t0, t1, t2 + +t0=t1%t2 (signed). Undefined behavior if division by zero or overflow. + +* remu_i32/i64 t0, t1, t2 + +t0=t1%t2 (unsigned). Undefined behavior if division by zero. + +********* Logical + +* and_i32/i64 t0, t1, t2 + +t0=t1&t2 + +* or_i32/i64 t0, t1, t2 + +t0=t1|t2 + +* xor_i32/i64 t0, t1, t2 + +t0=t1^t2 + +* not_i32/i64 t0, t1 + +t0=~t1 + +* andc_i32/i64 t0, t1, t2 + +t0=t1&~t2 + +* eqv_i32/i64 t0, t1, t2 + +t0=~(t1^t2) + +* nand_i32/i64 t0, t1, t2 + +t0=~(t1&t2) + +* nor_i32/i64 t0, t1, t2 + +t0=~(t1|t2) + +* orc_i32/i64 t0, t1, t2 + +t0=t1|~t2 + +********* Shifts/Rotates + +* shl_i32/i64 t0, t1, t2 + +t0=t1 << t2. Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* shr_i32/i64 t0, t1, t2 + +t0=t1 >> t2 (unsigned). Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* sar_i32/i64 t0, t1, t2 + +t0=t1 >> t2 (signed). Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* rotl_i32/i64 t0, t1, t2 + +Rotation of t2 bits to the left. Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* rotr_i32/i64 t0, t1, t2 + +Rotation of t2 bits to the right. Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +********* Misc + +* mov_i32/i64 t0, t1 + +t0 = t1 + +Move t1 to t0 (both operands must have the same type). + +* ext8s_i32/i64 t0, t1 +ext8u_i32/i64 t0, t1 +ext16s_i32/i64 t0, t1 +ext16u_i32/i64 t0, t1 +ext32s_i64 t0, t1 +ext32u_i64 t0, t1 + +8, 16 or 32 bit sign/zero extension (both operands must have the same type) + +* bswap16_i32/i64 t0, t1 + +16 bit byte swap on a 32/64 bit value. The two/six high order bytes must be +set to zero. + +* bswap32_i32/i64 t0, t1 + +32 bit byte swap on a 32/64 bit value. With a 64 bit value, the four high +order bytes must be set to zero. + +* bswap64_i64 t0, t1 + +64 bit byte swap + +* discard_i32/i64 t0 + +Indicate that the value of t0 won't be used later. It is useful to +force dead code elimination. + +********* Type conversions + +* ext_i32_i64 t0, t1 +Convert t1 (32 bit) to t0 (64 bit) and does sign extension + +* extu_i32_i64 t0, t1 +Convert t1 (32 bit) to t0 (64 bit) and does zero extension + +* trunc_i64_i32 t0, t1 +Truncate t1 (64 bit) to t0 (32 bit) + +* concat_i32_i64 t0, t1, t2 +Construct t0 (64-bit) taking the low half from t1 (32 bit) and the high half +from t2 (32 bit). + +* concat32_i64 t0, t1, t2 +Construct t0 (64-bit) taking the low half from t1 (64 bit) and the high half +from t2 (64 bit). + +********* Load/Store + +* ld_i32/i64 t0, t1, offset +ld8s_i32/i64 t0, t1, offset +ld8u_i32/i64 t0, t1, offset +ld16s_i32/i64 t0, t1, offset +ld16u_i32/i64 t0, t1, offset +ld32s_i64 t0, t1, offset +ld32u_i64 t0, t1, offset + +t0 = read(t1 + offset) +Load 8, 16, 32 or 64 bits with or without sign extension from host memory. +offset must be a constant. + +* st_i32/i64 t0, t1, offset +st8_i32/i64 t0, t1, offset +st16_i32/i64 t0, t1, offset +st32_i64 t0, t1, offset + +write(t0, t1 + offset) +Write 8, 16, 32 or 64 bits to host memory. + +********* QEMU specific operations + +* tb_exit t0 + +Exit the current TB and return the value t0 (word type). + +* goto_tb index + +Exit the current TB and jump to the TB index 'index' (constant) if the +current TB was linked to this TB. Otherwise execute the next +instructions. + +* qemu_ld8u t0, t1, flags +qemu_ld8s t0, t1, flags +qemu_ld16u t0, t1, flags +qemu_ld16s t0, t1, flags +qemu_ld32u t0, t1, flags +qemu_ld32s t0, t1, flags +qemu_ld64 t0, t1, flags + +Load data at the QEMU CPU address t1 into t0. t1 has the QEMU CPU +address type. 'flags' contains the QEMU memory index (selects user or +kernel access) for example. + +* qemu_st8 t0, t1, flags +qemu_st16 t0, t1, flags +qemu_st32 t0, t1, flags +qemu_st64 t0, t1, flags + +Store the data t0 at the QEMU CPU Address t1. t1 has the QEMU CPU +address type. 'flags' contains the QEMU memory index (selects user or +kernel access) for example. + +Note 1: Some shortcuts are defined when the last operand is known to be +a constant (e.g. addi for add, movi for mov). + +Note 2: When using TCG, the opcodes must never be generated directly +as some of them may not be available as "real" opcodes. Always use the +function tcg_gen_xxx(args). + +4) Backend + +tcg-target.h contains the target specific definitions. tcg-target.c +contains the target specific code. + +4.1) Assumptions + +The target word size (TCG_TARGET_REG_BITS) is expected to be 32 bit or +64 bit. It is expected that the pointer has the same size as the word. + +On a 32 bit target, all 64 bit operations are converted to 32 bits. A +few specific operations must be implemented to allow it (see add2_i32, +sub2_i32, brcond2_i32). + +Floating point operations are not supported in this version. A +previous incarnation of the code generator had full support of them, +but it is better to concentrate on integer operations first. + +On a 64 bit target, no assumption is made in TCG about the storage of +the 32 bit values in 64 bit registers. + +4.2) Constraints + +GCC like constraints are used to define the constraints of every +instruction. Memory constraints are not supported in this +version. Aliases are specified in the input operands as for GCC. + +The same register may be used for both an input and an output, even when +they are not explicitly aliased. If an op expands to multiple target +instructions then care must be taken to avoid clobbering input values. +GCC style "early clobber" outputs are not currently supported. + +A target can define specific register or constant constraints. If an +operation uses a constant input constraint which does not allow all +constants, it must also accept registers in order to have a fallback. + +The movi_i32 and movi_i64 operations must accept any constants. + +The mov_i32 and mov_i64 operations must accept any registers of the +same type. + +The ld/st instructions must accept signed 32 bit constant offsets. It +can be implemented by reserving a specific register to compute the +address if the offset is too big. + +The ld/st instructions must accept any destination (ld) or source (st) +register. + +4.3) Function call assumptions + +- The only supported types for parameters and return value are: 32 and + 64 bit integers and pointer. +- The stack grows downwards. +- The first N parameters are passed in registers. +- The next parameters are passed on the stack by storing them as words. +- Some registers are clobbered during the call. +- The function can return 0 or 1 value in registers. On a 32 bit + target, functions must be able to return 2 values in registers for + 64 bit return type. + +5) Recommended coding rules for best performance + +- Use globals to represent the parts of the QEMU CPU state which are + often modified, e.g. the integer registers and the condition + codes. TCG will be able to use host registers to store them. + +- Avoid globals stored in fixed registers. They must be used only to + store the pointer to the CPU state and possibly to store a pointer + to a register window. + +- Use temporaries. Use local temporaries only when really needed, + e.g. when you need to use a value after a jump. Local temporaries + introduce a performance hit in the current TCG implementation: their + content is saved to memory at end of each basic block. + +- Free temporaries and local temporaries when they are no longer used + (tcg_temp_free). Since tcg_const_x() also creates a temporary, you + should free it after it is used. Freeing temporaries does not yield + a better generated code, but it reduces the memory usage of TCG and + the speed of the translation. + +- Don't hesitate to use helpers for complicated or seldom used target + intructions. There is little performance advantage in using TCG to + implement target instructions taking more than about twenty TCG + instructions. + +- Use the 'discard' instruction if you know that TCG won't be able to + prove that a given global is "dead" at a given program point. The + x86 target uses it to improve the condition codes optimisation. diff --git a/qemu/qemu-git/tcg/.svn/text-base/TODO.svn-base b/qemu/qemu-git/tcg/.svn/text-base/TODO.svn-base new file mode 100644 index 0000000..f30cb75 --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/TODO.svn-base @@ -0,0 +1,14 @@ +- Add new instructions such as: setcond, clz, ctz, popcnt. + +- See if it is worth exporting mul2, mulu2, div2, divu2. + +- Support of globals saved in fixed registers between TBs. + +Ideas: + +- Move the slow part of the qemu_ld/st ops after the end of the TB. + +- Change exception syntax to get closer to QOP system (exception + parameters given with a specific instruction). + +- Add float and vector support. diff --git a/qemu/qemu-git/tcg/.svn/text-base/tcg-op.h.svn-base b/qemu/qemu-git/tcg/.svn/text-base/tcg-op.h.svn-base new file mode 100644 index 0000000..faf2e8b --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/tcg-op.h.svn-base @@ -0,0 +1,2183 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "tcg.h" + +int gen_new_label(void); + +static inline void tcg_gen_op1_i32(int opc, TCGv_i32 arg1) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); +} + +static inline void tcg_gen_op1_i64(int opc, TCGv_i64 arg1) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); +} + +static inline void tcg_gen_op1i(int opc, TCGArg arg1) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = arg1; +} + +static inline void tcg_gen_op2_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); +} + +static inline void tcg_gen_op2_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); +} + +static inline void tcg_gen_op2i_i32(int opc, TCGv_i32 arg1, TCGArg arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = arg2; +} + +static inline void tcg_gen_op2i_i64(int opc, TCGv_i64 arg1, TCGArg arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = arg2; +} + +static inline void tcg_gen_op2ii(int opc, TCGArg arg1, TCGArg arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = arg1; + *gen_opparam_ptr++ = arg2; +} + +static inline void tcg_gen_op3_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); +} + +static inline void tcg_gen_op3_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); +} + +static inline void tcg_gen_op3i_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGArg arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = arg3; +} + +static inline void tcg_gen_op3i_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGArg arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = arg3; +} + +static inline void tcg_gen_ldst_op_i32(int opc, TCGv_i32 val, TCGv_ptr base, + TCGArg offset) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(val); + *gen_opparam_ptr++ = GET_TCGV_PTR(base); + *gen_opparam_ptr++ = offset; +} + +static inline void tcg_gen_ldst_op_i64(int opc, TCGv_i64 val, TCGv_ptr base, + TCGArg offset) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(val); + *gen_opparam_ptr++ = GET_TCGV_PTR(base); + *gen_opparam_ptr++ = offset; +} + +static inline void tcg_gen_qemu_ldst_op_i64_i32(int opc, TCGv_i64 val, TCGv_i32 addr, + TCGArg mem_index) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(val); + *gen_opparam_ptr++ = GET_TCGV_I32(addr); + *gen_opparam_ptr++ = mem_index; +} + +static inline void tcg_gen_qemu_ldst_op_i64_i64(int opc, TCGv_i64 val, TCGv_i64 addr, + TCGArg mem_index) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(val); + *gen_opparam_ptr++ = GET_TCGV_I64(addr); + *gen_opparam_ptr++ = mem_index; +} + +static inline void tcg_gen_op4_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); +} + +static inline void tcg_gen_op4_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); +} + +static inline void tcg_gen_op4i_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op4i_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op4ii_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGArg arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = arg3; + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op4ii_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGArg arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = arg3; + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op5_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = GET_TCGV_I32(arg5); +} + +static inline void tcg_gen_op5_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = GET_TCGV_I64(arg5); +} + +static inline void tcg_gen_op5i_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGArg arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = arg5; +} + +static inline void tcg_gen_op5i_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGArg arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = arg5; +} + +static inline void tcg_gen_op6_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5, + TCGv_i32 arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = GET_TCGV_I32(arg5); + *gen_opparam_ptr++ = GET_TCGV_I32(arg6); +} + +static inline void tcg_gen_op6_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5, + TCGv_i64 arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = GET_TCGV_I64(arg5); + *gen_opparam_ptr++ = GET_TCGV_I64(arg6); +} + +static inline void tcg_gen_op6ii_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGArg arg5, + TCGArg arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = arg5; + *gen_opparam_ptr++ = arg6; +} + +static inline void tcg_gen_op6ii_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGArg arg5, + TCGArg arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = arg5; + *gen_opparam_ptr++ = arg6; +} + +static inline void gen_set_label(int n) +{ + tcg_gen_op1i(INDEX_op_set_label, n); +} + +static inline void tcg_gen_br(int label) +{ + tcg_gen_op1i(INDEX_op_br, label); +} + +static inline void tcg_gen_mov_i32(TCGv_i32 ret, TCGv_i32 arg) +{ + if (!TCGV_EQUAL_I32(ret, arg)) + tcg_gen_op2_i32(INDEX_op_mov_i32, ret, arg); +} + +static inline void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg) +{ + tcg_gen_op2i_i32(INDEX_op_movi_i32, ret, arg); +} + +/* helper calls */ +static inline void tcg_gen_helperN(void *func, int flags, int sizemask, + TCGArg ret, int nargs, TCGArg *args) +{ + TCGv_ptr fn; + fn = tcg_const_ptr((tcg_target_long)func); + tcg_gen_callN(&tcg_ctx, fn, flags, sizemask, ret, + nargs, args); + tcg_temp_free_ptr(fn); +} + +/* FIXME: Should this be pure? */ +static inline void tcg_gen_helper64(void *func, TCGv_i64 ret, + TCGv_i64 a, TCGv_i64 b) +{ + TCGv_ptr fn; + TCGArg args[2]; + fn = tcg_const_ptr((tcg_target_long)func); + args[0] = GET_TCGV_I64(a); + args[1] = GET_TCGV_I64(b); + tcg_gen_callN(&tcg_ctx, fn, 0, 7, GET_TCGV_I64(ret), 2, args); + tcg_temp_free_ptr(fn); +} + +/* 32 bit ops */ + +static inline void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld8u_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld8s_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld16u_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld16s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld16s_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld_i32, ret, arg2, offset); +} + +static inline void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_st8_i32, arg1, arg2, offset); +} + +static inline void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_st16_i32, arg1, arg2, offset); +} + +static inline void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_st_i32, arg1, arg2, offset); +} + +static inline void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_add_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_add_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_sub_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0 = tcg_const_i32(arg1); + tcg_gen_sub_i32(ret, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_sub_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + if (TCGV_EQUAL_I32(arg1, arg2)) { + tcg_gen_mov_i32(ret, arg1); + } else { + tcg_gen_op3_i32(INDEX_op_and_i32, ret, arg1, arg2); + } +} + +static inline void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_movi_i32(ret, 0); + } else if (arg2 == 0xffffffff) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_and_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + if (TCGV_EQUAL_I32(arg1, arg2)) { + tcg_gen_mov_i32(ret, arg1); + } else { + tcg_gen_op3_i32(INDEX_op_or_i32, ret, arg1, arg2); + } +} + +static inline void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0xffffffff) { + tcg_gen_movi_i32(ret, 0xffffffff); + } else if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_or_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + if (TCGV_EQUAL_I32(arg1, arg2)) { + tcg_gen_movi_i32(ret, 0); + } else { + tcg_gen_op3_i32(INDEX_op_xor_i32, ret, arg1, arg2); + } +} + +static inline void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_xor_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_shl_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_shl_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_shr_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_shr_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_sar_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_sar_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_brcond_i32(int cond, TCGv_i32 arg1, TCGv_i32 arg2, + int label_index) +{ + tcg_gen_op4ii_i32(INDEX_op_brcond_i32, arg1, arg2, cond, label_index); +} + +static inline void tcg_gen_brcondi_i32(int cond, TCGv_i32 arg1, int32_t arg2, + int label_index) +{ + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_brcond_i32(cond, arg1, t0, label_index); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_mul_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_mul_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +} + +#ifdef TCG_TARGET_HAS_div_i32 +static inline void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_div_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_rem_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_divu_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_remu_i32, ret, arg1, arg2); +} +#else +static inline void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_sari_i32(t0, arg1, 31); + tcg_gen_op5_i32(INDEX_op_div2_i32, ret, t0, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_sari_i32(t0, arg1, 31); + tcg_gen_op5_i32(INDEX_op_div2_i32, t0, ret, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_movi_i32(t0, 0); + tcg_gen_op5_i32(INDEX_op_divu2_i32, ret, t0, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_movi_i32(t0, 0); + tcg_gen_op5_i32(INDEX_op_divu2_i32, t0, ret, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} +#endif + +#if TCG_TARGET_REG_BITS == 32 + +static inline void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + if (!TCGV_EQUAL_I64(ret, arg)) { + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); + } +} + +static inline void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) +{ + tcg_gen_movi_i32(TCGV_LOW(ret), arg); + tcg_gen_movi_i32(TCGV_HIGH(ret), arg >> 32); +} + +static inline void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld8u_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld8s_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(ret), 31); +} + +static inline void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld16u_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ld16s_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld16s_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + /* since arg2 and ret have different types, they cannot be the + same temporary */ +#ifdef TCG_TARGET_WORDS_BIGENDIAN + tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset); + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset + 4); +#else + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset + 4); +#endif +} + +static inline void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_st8_i32(TCGV_LOW(arg1), arg2, offset); +} + +static inline void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_st16_i32(TCGV_LOW(arg1), arg2, offset); +} + +static inline void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset); +} + +static inline void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ +#ifdef TCG_TARGET_WORDS_BIGENDIAN + tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset); + tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset + 4); +#else + tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset); + tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset + 4); +#endif +} + +static inline void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op6_i32(INDEX_op_add2_i32, TCGV_LOW(ret), TCGV_HIGH(ret), + TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2), + TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op6_i32(INDEX_op_sub2_i32, TCGV_LOW(ret), TCGV_HIGH(ret), + TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2), + TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_and_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); + tcg_gen_and_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_andi_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); + tcg_gen_andi_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); +} + +static inline void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_or_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); + tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_ori_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); + tcg_gen_ori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); +} + +static inline void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_xor_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); + tcg_gen_xor_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_xori_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); + tcg_gen_xori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); +} + +/* XXX: use generic code when basic block handling is OK or CPU + specific code (x86) */ +static inline void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_shl_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_shifti_i64(ret, arg1, arg2, 0, 0); +} + +static inline void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_shr_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_shifti_i64(ret, arg1, arg2, 1, 0); +} + +static inline void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_sar_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1); +} + +static inline void tcg_gen_brcond_i64(int cond, TCGv_i64 arg1, TCGv_i64 arg2, + int label_index) +{ + tcg_gen_op6ii_i32(INDEX_op_brcond2_i32, + TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2), + TCGV_HIGH(arg2), cond, label_index); +} + +static inline void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + TCGv_i32 t1; + + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i32(); + + tcg_gen_op4_i32(INDEX_op_mulu2_i32, TCGV_LOW(t0), TCGV_HIGH(t0), + TCGV_LOW(arg1), TCGV_LOW(arg2)); + + tcg_gen_mul_i32(t1, TCGV_LOW(arg1), TCGV_HIGH(arg2)); + tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); + tcg_gen_mul_i32(t1, TCGV_HIGH(arg1), TCGV_LOW(arg2)); + tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); + + tcg_gen_mov_i64(ret, t0); + tcg_temp_free_i64(t0); + tcg_temp_free_i32(t1); +} + +static inline void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_div_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_rem_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_divu_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_remu_i64, ret, arg1, arg2); +} + +#else + +static inline void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + if (!TCGV_EQUAL_I64(ret, arg)) + tcg_gen_op2_i64(INDEX_op_mov_i64, ret, arg); +} + +static inline void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) +{ + tcg_gen_op2i_i64(INDEX_op_movi_i64, ret, arg); +} + +static inline void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld8u_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld8s_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld16u_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld16s_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld16s_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld32u_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld32s_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_i64 arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld_i64, ret, arg2, offset); +} + +static inline void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st8_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st16_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st32_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_i64 arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_add_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_sub_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + if (TCGV_EQUAL_I64(arg1, arg2)) { + tcg_gen_mov_i64(ret, arg1); + } else { + tcg_gen_op3_i64(INDEX_op_and_i64, ret, arg1, arg2); + } +} + +static inline void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_and_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + if (TCGV_EQUAL_I64(arg1, arg2)) { + tcg_gen_mov_i64(ret, arg1); + } else { + tcg_gen_op3_i64(INDEX_op_or_i64, ret, arg1, arg2); + } +} + +static inline void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_or_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + if (TCGV_EQUAL_I64(arg1, arg2)) { + tcg_gen_movi_i64(ret, 0); + } else { + tcg_gen_op3_i64(INDEX_op_xor_i64, ret, arg1, arg2); + } +} + +static inline void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_xor_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_shl_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_shl_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_shr_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_shr_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_sar_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_sar_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_brcond_i64(int cond, TCGv_i64 arg1, TCGv_i64 arg2, + int label_index) +{ + tcg_gen_op4ii_i64(INDEX_op_brcond_i64, arg1, arg2, cond, label_index); +} + +static inline void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_mul_i64, ret, arg1, arg2); +} + +#ifdef TCG_TARGET_HAS_div_i64 +static inline void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_div_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_rem_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_divu_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_remu_i64, ret, arg1, arg2); +} +#else +static inline void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_sari_i64(t0, arg1, 63); + tcg_gen_op5_i64(INDEX_op_div2_i64, ret, t0, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_sari_i64(t0, arg1, 63); + tcg_gen_op5_i64(INDEX_op_div2_i64, t0, ret, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_movi_i64(t0, 0); + tcg_gen_op5_i64(INDEX_op_divu2_i64, ret, t0, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_movi_i64(t0, 0); + tcg_gen_op5_i64(INDEX_op_divu2_i64, t0, ret, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} +#endif + +#endif + +static inline void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_add_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg1); + tcg_gen_sub_i64(ret, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_sub_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} +static inline void tcg_gen_brcondi_i64(int cond, TCGv_i64 arg1, int64_t arg2, + int label_index) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_brcond_i64(cond, arg1, t0, label_index); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_mul_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + + +/***************************************/ +/* optional operations */ + +static inline void tcg_gen_ext8s_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext8s_i32 + tcg_gen_op2_i32(INDEX_op_ext8s_i32, ret, arg); +#else + tcg_gen_shli_i32(ret, arg, 24); + tcg_gen_sari_i32(ret, ret, 24); +#endif +} + +static inline void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext16s_i32 + tcg_gen_op2_i32(INDEX_op_ext16s_i32, ret, arg); +#else + tcg_gen_shli_i32(ret, arg, 16); + tcg_gen_sari_i32(ret, ret, 16); +#endif +} + +static inline void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext8u_i32 + tcg_gen_op2_i32(INDEX_op_ext8u_i32, ret, arg); +#else + tcg_gen_andi_i32(ret, arg, 0xffu); +#endif +} + +static inline void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext16u_i32 + tcg_gen_op2_i32(INDEX_op_ext16u_i32, ret, arg); +#else + tcg_gen_andi_i32(ret, arg, 0xffffu); +#endif +} + +/* Note: we assume the two high bytes are set to zero */ +static inline void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_bswap16_i32 + tcg_gen_op2_i32(INDEX_op_bswap16_i32, ret, arg); +#else + TCGv_i32 t0 = tcg_temp_new_i32(); + + tcg_gen_ext8u_i32(t0, arg); + tcg_gen_shli_i32(t0, t0, 8); + tcg_gen_shri_i32(ret, arg, 8); + tcg_gen_or_i32(ret, ret, t0); + tcg_temp_free_i32(t0); +#endif +} + +static inline void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_bswap32_i32 + tcg_gen_op2_i32(INDEX_op_bswap32_i32, ret, arg); +#else + TCGv_i32 t0, t1; + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + + tcg_gen_shli_i32(t0, arg, 24); + + tcg_gen_andi_i32(t1, arg, 0x0000ff00); + tcg_gen_shli_i32(t1, t1, 8); + tcg_gen_or_i32(t0, t0, t1); + + tcg_gen_shri_i32(t1, arg, 8); + tcg_gen_andi_i32(t1, t1, 0x0000ff00); + tcg_gen_or_i32(t0, t0, t1); + + tcg_gen_shri_i32(t1, arg, 24); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif +} + +#if TCG_TARGET_REG_BITS == 32 +static inline void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext8s_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext16s_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext8u_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext16u_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_trunc_i64_i32(TCGv_i32 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(ret, TCGV_LOW(arg)); +} + +static inline void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), arg); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), arg); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +/* Note: we assume the six high bytes are set to zero */ +static inline void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); + tcg_gen_bswap16_i32(TCGV_LOW(ret), TCGV_LOW(arg)); +} + +/* Note: we assume the four high bytes are set to zero */ +static inline void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); + tcg_gen_bswap32_i32(TCGV_LOW(ret), TCGV_LOW(arg)); +} + +static inline void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + TCGv_i32 t0, t1; + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + + tcg_gen_bswap32_i32(t0, TCGV_LOW(arg)); + tcg_gen_bswap32_i32(t1, TCGV_HIGH(arg)); + tcg_gen_mov_i32(TCGV_LOW(ret), t1); + tcg_gen_mov_i32(TCGV_HIGH(ret), t0); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +} +#else + +static inline void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext8s_i64 + tcg_gen_op2_i64(INDEX_op_ext8s_i64, ret, arg); +#else + tcg_gen_shli_i64(ret, arg, 56); + tcg_gen_sari_i64(ret, ret, 56); +#endif +} + +static inline void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext16s_i64 + tcg_gen_op2_i64(INDEX_op_ext16s_i64, ret, arg); +#else + tcg_gen_shli_i64(ret, arg, 48); + tcg_gen_sari_i64(ret, ret, 48); +#endif +} + +static inline void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext32s_i64 + tcg_gen_op2_i64(INDEX_op_ext32s_i64, ret, arg); +#else + tcg_gen_shli_i64(ret, arg, 32); + tcg_gen_sari_i64(ret, ret, 32); +#endif +} + +static inline void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext8u_i64 + tcg_gen_op2_i64(INDEX_op_ext8u_i64, ret, arg); +#else + tcg_gen_andi_i64(ret, arg, 0xffu); +#endif +} + +static inline void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext16u_i64 + tcg_gen_op2_i64(INDEX_op_ext16u_i64, ret, arg); +#else + tcg_gen_andi_i64(ret, arg, 0xffffu); +#endif +} + +static inline void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext32u_i64 + tcg_gen_op2_i64(INDEX_op_ext32u_i64, ret, arg); +#else + tcg_gen_andi_i64(ret, arg, 0xffffffffu); +#endif +} + +/* Note: we assume the target supports move between 32 and 64 bit + registers. This will probably break MIPS64 targets. */ +static inline void tcg_gen_trunc_i64_i32(TCGv_i32 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(ret, MAKE_TCGV_I32(GET_TCGV_I64(arg))); +} + +/* Note: we assume the target supports move between 32 and 64 bit + registers */ +static inline void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_ext32u_i64(ret, MAKE_TCGV_I64(GET_TCGV_I32(arg))); +} + +/* Note: we assume the target supports move between 32 and 64 bit + registers */ +static inline void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_ext32s_i64(ret, MAKE_TCGV_I64(GET_TCGV_I32(arg))); +} + +/* Note: we assume the six high bytes are set to zero */ +static inline void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_bswap16_i64 + tcg_gen_op2_i64(INDEX_op_bswap16_i64, ret, arg); +#else + TCGv_i64 t0 = tcg_temp_new_i64(); + + tcg_gen_ext8u_i64(t0, arg); + tcg_gen_shli_i64(t0, t0, 8); + tcg_gen_shri_i64(ret, arg, 8); + tcg_gen_or_i64(ret, ret, t0); + tcg_temp_free_i64(t0); +#endif +} + +/* Note: we assume the four high bytes are set to zero */ +static inline void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_bswap32_i64 + tcg_gen_op2_i64(INDEX_op_bswap32_i64, ret, arg); +#else + TCGv_i64 t0, t1; + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + + tcg_gen_shli_i64(t0, arg, 24); + tcg_gen_ext32u_i64(t0, t0); + + tcg_gen_andi_i64(t1, arg, 0x0000ff00); + tcg_gen_shli_i64(t1, t1, 8); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 8); + tcg_gen_andi_i64(t1, t1, 0x0000ff00); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 24); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +static inline void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_bswap64_i64 + tcg_gen_op2_i64(INDEX_op_bswap64_i64, ret, arg); +#else + TCGv_i64 t0 = tcg_temp_new_i64(); + TCGv_i64 t1 = tcg_temp_new_i64(); + + tcg_gen_shli_i64(t0, arg, 56); + + tcg_gen_andi_i64(t1, arg, 0x0000ff00); + tcg_gen_shli_i64(t1, t1, 40); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_andi_i64(t1, arg, 0x00ff0000); + tcg_gen_shli_i64(t1, t1, 24); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_andi_i64(t1, arg, 0xff000000); + tcg_gen_shli_i64(t1, t1, 8); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 8); + tcg_gen_andi_i64(t1, t1, 0xff000000); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 24); + tcg_gen_andi_i64(t1, t1, 0x00ff0000); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 40); + tcg_gen_andi_i64(t1, t1, 0x0000ff00); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 56); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +#endif + +static inline void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_neg_i32 + tcg_gen_op2_i32(INDEX_op_neg_i32, ret, arg); +#else + TCGv_i32 t0 = tcg_const_i32(0); + tcg_gen_sub_i32(ret, t0, arg); + tcg_temp_free_i32(t0); +#endif +} + +static inline void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_neg_i64 + tcg_gen_op2_i64(INDEX_op_neg_i64, ret, arg); +#else + TCGv_i64 t0 = tcg_const_i64(0); + tcg_gen_sub_i64(ret, t0, arg); + tcg_temp_free_i64(t0); +#endif +} + +static inline void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_not_i32 + tcg_gen_op2_i32(INDEX_op_not_i32, ret, arg); +#else + tcg_gen_xori_i32(ret, arg, -1); +#endif +} + +static inline void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_not_i64 + tcg_gen_op2_i64(INDEX_op_not_i64, ret, arg); +#else + tcg_gen_xori_i64(ret, arg, -1); +#endif +} + +static inline void tcg_gen_discard_i32(TCGv_i32 arg) +{ + tcg_gen_op1_i32(INDEX_op_discard, arg); +} + +#if TCG_TARGET_REG_BITS == 32 +static inline void tcg_gen_discard_i64(TCGv_i64 arg) +{ + tcg_gen_discard_i32(TCGV_LOW(arg)); + tcg_gen_discard_i32(TCGV_HIGH(arg)); +} +#else +static inline void tcg_gen_discard_i64(TCGv_i64 arg) +{ + tcg_gen_op1_i64(INDEX_op_discard, arg); +} +#endif + +static inline void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high) +{ +#if TCG_TARGET_REG_BITS == 32 + tcg_gen_mov_i32(TCGV_LOW(dest), low); + tcg_gen_mov_i32(TCGV_HIGH(dest), high); +#else + TCGv_i64 tmp = tcg_temp_new_i64(); + /* This extension is only needed for type correctness. + We may be able to do better given target specific information. */ + tcg_gen_extu_i32_i64(tmp, high); + tcg_gen_shli_i64(tmp, tmp, 32); + tcg_gen_extu_i32_i64(dest, low); + tcg_gen_or_i64(dest, dest, tmp); + tcg_temp_free_i64(tmp); +#endif +} + +static inline void tcg_gen_concat32_i64(TCGv_i64 dest, TCGv_i64 low, TCGv_i64 high) +{ +#if TCG_TARGET_REG_BITS == 32 + tcg_gen_concat_i32_i64(dest, TCGV_LOW(low), TCGV_LOW(high)); +#else + TCGv_i64 tmp = tcg_temp_new_i64(); + tcg_gen_ext32u_i64(dest, low); + tcg_gen_shli_i64(tmp, high, 32); + tcg_gen_or_i64(dest, dest, tmp); + tcg_temp_free_i64(tmp); +#endif +} + +static inline void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_not_i32(t0, arg2); + tcg_gen_and_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_not_i64(t0, arg2); + tcg_gen_and_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_xor_i32(ret, arg1, arg2); + tcg_gen_not_i32(ret, ret); +} + +static inline void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_xor_i64(ret, arg1, arg2); + tcg_gen_not_i64(ret, ret); +} + +static inline void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_and_i32(ret, arg1, arg2); + tcg_gen_not_i32(ret, ret); +} + +static inline void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_and_i64(ret, arg1, arg2); + tcg_gen_not_i64(ret, ret); +} + +static inline void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_or_i32(ret, arg1, arg2); + tcg_gen_not_i32(ret, ret); +} + +static inline void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_or_i64(ret, arg1, arg2); + tcg_gen_not_i64(ret, ret); +} + +static inline void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_not_i32(t0, arg2); + tcg_gen_or_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_not_i64(t0, arg2); + tcg_gen_or_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i32 + tcg_gen_op3_i32(INDEX_op_rotl_i32, ret, arg1, arg2); +#else + TCGv_i32 t0, t1; + + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + tcg_gen_shl_i32(t0, arg1, arg2); + tcg_gen_subfi_i32(t1, 32, arg2); + tcg_gen_shr_i32(t1, arg1, t1); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif +} + +static inline void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i64 + tcg_gen_op3_i64(INDEX_op_rotl_i64, ret, arg1, arg2); +#else + TCGv_i64 t0, t1; + + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + tcg_gen_shl_i64(t0, arg1, arg2); + tcg_gen_subfi_i64(t1, 64, arg2); + tcg_gen_shr_i64(t1, arg1, t1); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +static inline void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { +#ifdef TCG_TARGET_HAS_rot_i32 + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_rotl_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +#else + TCGv_i32 t0, t1; + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + tcg_gen_shli_i32(t0, arg1, arg2); + tcg_gen_shri_i32(t1, arg1, 32 - arg2); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif + } +} + +static inline void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { +#ifdef TCG_TARGET_HAS_rot_i64 + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_rotl_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +#else + TCGv_i64 t0, t1; + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + tcg_gen_shli_i64(t0, arg1, arg2); + tcg_gen_shri_i64(t1, arg1, 64 - arg2); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif + } +} + +static inline void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i32 + tcg_gen_op3_i32(INDEX_op_rotr_i32, ret, arg1, arg2); +#else + TCGv_i32 t0, t1; + + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + tcg_gen_shr_i32(t0, arg1, arg2); + tcg_gen_subfi_i32(t1, 32, arg2); + tcg_gen_shl_i32(t1, arg1, t1); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif +} + +static inline void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i64 + tcg_gen_op3_i64(INDEX_op_rotr_i64, ret, arg1, arg2); +#else + TCGv_i64 t0, t1; + + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + tcg_gen_shr_i64(t0, arg1, arg2); + tcg_gen_subfi_i64(t1, 64, arg2); + tcg_gen_shl_i64(t1, arg1, t1); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +static inline void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + tcg_gen_rotli_i32(ret, arg1, 32 - arg2); + } +} + +static inline void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + tcg_gen_rotli_i64(ret, arg1, 64 - arg2); + } +} + +/***************************************/ +/* QEMU specific operations. Their type depend on the QEMU CPU + type. */ +#ifndef TARGET_LONG_BITS +#error must include QEMU headers +#endif + +#if TARGET_LONG_BITS == 32 +#define TCGv TCGv_i32 +#define tcg_temp_new() tcg_temp_new_i32() +#define tcg_global_reg_new tcg_global_reg_new_i32 +#define tcg_global_mem_new tcg_global_mem_new_i32 +#define tcg_temp_local_new() tcg_temp_local_new_i32() +#define tcg_temp_free tcg_temp_free_i32 +#define tcg_gen_qemu_ldst_op tcg_gen_op3i_i32 +#define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i32 +#define TCGV_UNUSED(x) TCGV_UNUSED_I32(x) +#define TCGV_EQUAL(a, b) TCGV_EQUAL_I32(a, b) +#else +#define TCGv TCGv_i64 +#define tcg_temp_new() tcg_temp_new_i64() +#define tcg_global_reg_new tcg_global_reg_new_i64 +#define tcg_global_mem_new tcg_global_mem_new_i64 +#define tcg_temp_local_new() tcg_temp_local_new_i64() +#define tcg_temp_free tcg_temp_free_i64 +#define tcg_gen_qemu_ldst_op tcg_gen_op3i_i64 +#define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i64 +#define TCGV_UNUSED(x) TCGV_UNUSED_I64(x) +#define TCGV_EQUAL(a, b) TCGV_EQUAL_I64(a, b) +#endif + +/* debug info: write the PC of the corresponding QEMU CPU instruction */ +static inline void tcg_gen_debug_insn_start(uint64_t pc) +{ + /* XXX: must really use a 32 bit size for TCGArg in all cases */ +#if TARGET_LONG_BITS > TCG_TARGET_REG_BITS + tcg_gen_op2ii(INDEX_op_debug_insn_start, + (uint32_t)(pc), (uint32_t)(pc >> 32)); +#else + tcg_gen_op1i(INDEX_op_debug_insn_start, pc); +#endif +} + +static inline void tcg_gen_exit_tb(tcg_target_long val) +{ + tcg_gen_op1i(INDEX_op_exit_tb, val); +} + +static inline void tcg_gen_goto_tb(int idx) +{ + tcg_gen_op1i(INDEX_op_goto_tb, idx); +} + +#if TCG_TARGET_REG_BITS == 32 +static inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld8u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld8u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +#endif +} + +static inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld8s, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld8s, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +#endif +} + +static inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld16u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld16u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +#endif +} + +static inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld16s, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld16s, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +#endif +} + +static inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld32u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld32u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +#endif +} + +static inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld32u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld32u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +#endif +} + +static inline void tcg_gen_qemu_ld64(TCGv_i64 ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op4i_i32(INDEX_op_qemu_ld64, TCGV_LOW(ret), TCGV_HIGH(ret), addr, mem_index); +#else + tcg_gen_op5i_i32(INDEX_op_qemu_ld64, TCGV_LOW(ret), TCGV_HIGH(ret), + TCGV_LOW(addr), TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_st8, arg, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_st8, TCGV_LOW(arg), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_st16, arg, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_st16, TCGV_LOW(arg), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_st32, arg, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_st32, TCGV_LOW(arg), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st64(TCGv_i64 arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op4i_i32(INDEX_op_qemu_st64, TCGV_LOW(arg), TCGV_HIGH(arg), addr, + mem_index); +#else + tcg_gen_op5i_i32(INDEX_op_qemu_st64, TCGV_LOW(arg), TCGV_HIGH(arg), + TCGV_LOW(addr), TCGV_HIGH(addr), mem_index); +#endif +} + +#define tcg_gen_ld_ptr tcg_gen_ld_i32 +#define tcg_gen_discard_ptr tcg_gen_discard_i32 + +#else /* TCG_TARGET_REG_BITS == 32 */ + +static inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld8u, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld8s, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld16u, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld16s, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld32u, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld32s, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld64(TCGv_i64 ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op_i64(INDEX_op_qemu_ld64, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_st8, arg, addr, mem_index); +} + +static inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_st16, arg, addr, mem_index); +} + +static inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_st32, arg, addr, mem_index); +} + +static inline void tcg_gen_qemu_st64(TCGv_i64 arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op_i64(INDEX_op_qemu_st64, arg, addr, mem_index); +} + +#define tcg_gen_ld_ptr tcg_gen_ld_i64 +#define tcg_gen_discard_ptr tcg_gen_discard_i64 + +#endif /* TCG_TARGET_REG_BITS != 32 */ + +#if TARGET_LONG_BITS == 64 +#define TCG_TYPE_TL TCG_TYPE_I64 +#define tcg_gen_movi_tl tcg_gen_movi_i64 +#define tcg_gen_mov_tl tcg_gen_mov_i64 +#define tcg_gen_ld8u_tl tcg_gen_ld8u_i64 +#define tcg_gen_ld8s_tl tcg_gen_ld8s_i64 +#define tcg_gen_ld16u_tl tcg_gen_ld16u_i64 +#define tcg_gen_ld16s_tl tcg_gen_ld16s_i64 +#define tcg_gen_ld32u_tl tcg_gen_ld32u_i64 +#define tcg_gen_ld32s_tl tcg_gen_ld32s_i64 +#define tcg_gen_ld_tl tcg_gen_ld_i64 +#define tcg_gen_st8_tl tcg_gen_st8_i64 +#define tcg_gen_st16_tl tcg_gen_st16_i64 +#define tcg_gen_st32_tl tcg_gen_st32_i64 +#define tcg_gen_st_tl tcg_gen_st_i64 +#define tcg_gen_add_tl tcg_gen_add_i64 +#define tcg_gen_addi_tl tcg_gen_addi_i64 +#define tcg_gen_sub_tl tcg_gen_sub_i64 +#define tcg_gen_neg_tl tcg_gen_neg_i64 +#define tcg_gen_subfi_tl tcg_gen_subfi_i64 +#define tcg_gen_subi_tl tcg_gen_subi_i64 +#define tcg_gen_and_tl tcg_gen_and_i64 +#define tcg_gen_andi_tl tcg_gen_andi_i64 +#define tcg_gen_or_tl tcg_gen_or_i64 +#define tcg_gen_ori_tl tcg_gen_ori_i64 +#define tcg_gen_xor_tl tcg_gen_xor_i64 +#define tcg_gen_xori_tl tcg_gen_xori_i64 +#define tcg_gen_not_tl tcg_gen_not_i64 +#define tcg_gen_shl_tl tcg_gen_shl_i64 +#define tcg_gen_shli_tl tcg_gen_shli_i64 +#define tcg_gen_shr_tl tcg_gen_shr_i64 +#define tcg_gen_shri_tl tcg_gen_shri_i64 +#define tcg_gen_sar_tl tcg_gen_sar_i64 +#define tcg_gen_sari_tl tcg_gen_sari_i64 +#define tcg_gen_brcond_tl tcg_gen_brcond_i64 +#define tcg_gen_brcondi_tl tcg_gen_brcondi_i64 +#define tcg_gen_mul_tl tcg_gen_mul_i64 +#define tcg_gen_muli_tl tcg_gen_muli_i64 +#define tcg_gen_div_tl tcg_gen_div_i64 +#define tcg_gen_rem_tl tcg_gen_rem_i64 +#define tcg_gen_divu_tl tcg_gen_divu_i64 +#define tcg_gen_remu_tl tcg_gen_remu_i64 +#define tcg_gen_discard_tl tcg_gen_discard_i64 +#define tcg_gen_trunc_tl_i32 tcg_gen_trunc_i64_i32 +#define tcg_gen_trunc_i64_tl tcg_gen_mov_i64 +#define tcg_gen_extu_i32_tl tcg_gen_extu_i32_i64 +#define tcg_gen_ext_i32_tl tcg_gen_ext_i32_i64 +#define tcg_gen_extu_tl_i64 tcg_gen_mov_i64 +#define tcg_gen_ext_tl_i64 tcg_gen_mov_i64 +#define tcg_gen_ext8u_tl tcg_gen_ext8u_i64 +#define tcg_gen_ext8s_tl tcg_gen_ext8s_i64 +#define tcg_gen_ext16u_tl tcg_gen_ext16u_i64 +#define tcg_gen_ext16s_tl tcg_gen_ext16s_i64 +#define tcg_gen_ext32u_tl tcg_gen_ext32u_i64 +#define tcg_gen_ext32s_tl tcg_gen_ext32s_i64 +#define tcg_gen_bswap16_tl tcg_gen_bswap16_i64 +#define tcg_gen_bswap32_tl tcg_gen_bswap32_i64 +#define tcg_gen_bswap64_tl tcg_gen_bswap64_i64 +#define tcg_gen_concat_tl_i64 tcg_gen_concat32_i64 +#define tcg_gen_andc_tl tcg_gen_andc_i64 +#define tcg_gen_eqv_tl tcg_gen_eqv_i64 +#define tcg_gen_nand_tl tcg_gen_nand_i64 +#define tcg_gen_nor_tl tcg_gen_nor_i64 +#define tcg_gen_orc_tl tcg_gen_orc_i64 +#define tcg_gen_rotl_tl tcg_gen_rotl_i64 +#define tcg_gen_rotli_tl tcg_gen_rotli_i64 +#define tcg_gen_rotr_tl tcg_gen_rotr_i64 +#define tcg_gen_rotri_tl tcg_gen_rotri_i64 +#define tcg_const_tl tcg_const_i64 +#define tcg_const_local_tl tcg_const_local_i64 +#else +#define TCG_TYPE_TL TCG_TYPE_I32 +#define tcg_gen_movi_tl tcg_gen_movi_i32 +#define tcg_gen_mov_tl tcg_gen_mov_i32 +#define tcg_gen_ld8u_tl tcg_gen_ld8u_i32 +#define tcg_gen_ld8s_tl tcg_gen_ld8s_i32 +#define tcg_gen_ld16u_tl tcg_gen_ld16u_i32 +#define tcg_gen_ld16s_tl tcg_gen_ld16s_i32 +#define tcg_gen_ld32u_tl tcg_gen_ld_i32 +#define tcg_gen_ld32s_tl tcg_gen_ld_i32 +#define tcg_gen_ld_tl tcg_gen_ld_i32 +#define tcg_gen_st8_tl tcg_gen_st8_i32 +#define tcg_gen_st16_tl tcg_gen_st16_i32 +#define tcg_gen_st32_tl tcg_gen_st_i32 +#define tcg_gen_st_tl tcg_gen_st_i32 +#define tcg_gen_add_tl tcg_gen_add_i32 +#define tcg_gen_addi_tl tcg_gen_addi_i32 +#define tcg_gen_sub_tl tcg_gen_sub_i32 +#define tcg_gen_neg_tl tcg_gen_neg_i32 +#define tcg_gen_subfi_tl tcg_gen_subfi_i32 +#define tcg_gen_subi_tl tcg_gen_subi_i32 +#define tcg_gen_and_tl tcg_gen_and_i32 +#define tcg_gen_andi_tl tcg_gen_andi_i32 +#define tcg_gen_or_tl tcg_gen_or_i32 +#define tcg_gen_ori_tl tcg_gen_ori_i32 +#define tcg_gen_xor_tl tcg_gen_xor_i32 +#define tcg_gen_xori_tl tcg_gen_xori_i32 +#define tcg_gen_not_tl tcg_gen_not_i32 +#define tcg_gen_shl_tl tcg_gen_shl_i32 +#define tcg_gen_shli_tl tcg_gen_shli_i32 +#define tcg_gen_shr_tl tcg_gen_shr_i32 +#define tcg_gen_shri_tl tcg_gen_shri_i32 +#define tcg_gen_sar_tl tcg_gen_sar_i32 +#define tcg_gen_sari_tl tcg_gen_sari_i32 +#define tcg_gen_brcond_tl tcg_gen_brcond_i32 +#define tcg_gen_brcondi_tl tcg_gen_brcondi_i32 +#define tcg_gen_mul_tl tcg_gen_mul_i32 +#define tcg_gen_muli_tl tcg_gen_muli_i32 +#define tcg_gen_div_tl tcg_gen_div_i32 +#define tcg_gen_rem_tl tcg_gen_rem_i32 +#define tcg_gen_divu_tl tcg_gen_divu_i32 +#define tcg_gen_remu_tl tcg_gen_remu_i32 +#define tcg_gen_discard_tl tcg_gen_discard_i32 +#define tcg_gen_trunc_tl_i32 tcg_gen_mov_i32 +#define tcg_gen_trunc_i64_tl tcg_gen_trunc_i64_i32 +#define tcg_gen_extu_i32_tl tcg_gen_mov_i32 +#define tcg_gen_ext_i32_tl tcg_gen_mov_i32 +#define tcg_gen_extu_tl_i64 tcg_gen_extu_i32_i64 +#define tcg_gen_ext_tl_i64 tcg_gen_ext_i32_i64 +#define tcg_gen_ext8u_tl tcg_gen_ext8u_i32 +#define tcg_gen_ext8s_tl tcg_gen_ext8s_i32 +#define tcg_gen_ext16u_tl tcg_gen_ext16u_i32 +#define tcg_gen_ext16s_tl tcg_gen_ext16s_i32 +#define tcg_gen_ext32u_tl tcg_gen_mov_i32 +#define tcg_gen_ext32s_tl tcg_gen_mov_i32 +#define tcg_gen_bswap16_tl tcg_gen_bswap16_i32 +#define tcg_gen_bswap32_tl tcg_gen_bswap32_i32 +#define tcg_gen_concat_tl_i64 tcg_gen_concat_i32_i64 +#define tcg_gen_andc_tl tcg_gen_andc_i32 +#define tcg_gen_eqv_tl tcg_gen_eqv_i32 +#define tcg_gen_nand_tl tcg_gen_nand_i32 +#define tcg_gen_nor_tl tcg_gen_nor_i32 +#define tcg_gen_orc_tl tcg_gen_orc_i32 +#define tcg_gen_rotl_tl tcg_gen_rotl_i32 +#define tcg_gen_rotli_tl tcg_gen_rotli_i32 +#define tcg_gen_rotr_tl tcg_gen_rotr_i32 +#define tcg_gen_rotri_tl tcg_gen_rotri_i32 +#define tcg_const_tl tcg_const_i32 +#define tcg_const_local_tl tcg_const_local_i32 +#endif + +#if TCG_TARGET_REG_BITS == 32 +#define tcg_gen_add_ptr tcg_gen_add_i32 +#define tcg_gen_addi_ptr tcg_gen_addi_i32 +#define tcg_gen_ext_i32_ptr tcg_gen_mov_i32 +#else /* TCG_TARGET_REG_BITS == 32 */ +#define tcg_gen_add_ptr tcg_gen_add_i64 +#define tcg_gen_addi_ptr tcg_gen_addi_i64 +#define tcg_gen_ext_i32_ptr tcg_gen_ext_i32_i64 +#endif /* TCG_TARGET_REG_BITS != 32 */ diff --git a/qemu/qemu-git/tcg/.svn/text-base/tcg-opc.h.svn-base b/qemu/qemu-git/tcg/.svn/text-base/tcg-opc.h.svn-base new file mode 100644 index 0000000..b7f3fd7 --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/tcg-opc.h.svn-base @@ -0,0 +1,272 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifndef DEF2 +#define DEF2(name, oargs, iargs, cargs, flags) DEF(name, oargs + iargs + cargs, 0) +#endif + +/* predefined ops */ +DEF2(end, 0, 0, 0, 0) /* must be kept first */ +DEF2(nop, 0, 0, 0, 0) +DEF2(nop1, 0, 0, 1, 0) +DEF2(nop2, 0, 0, 2, 0) +DEF2(nop3, 0, 0, 3, 0) +DEF2(nopn, 0, 0, 1, 0) /* variable number of parameters */ + +DEF2(discard, 1, 0, 0, 0) + +DEF2(set_label, 0, 0, 1, 0) +DEF2(call, 0, 1, 2, TCG_OPF_SIDE_EFFECTS) /* variable number of parameters */ +DEF2(jmp, 0, 1, 0, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +DEF2(br, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) + +DEF2(mov_i32, 1, 1, 0, 0) +DEF2(movi_i32, 1, 0, 1, 0) +/* load/store */ +DEF2(ld8u_i32, 1, 1, 1, 0) +DEF2(ld8s_i32, 1, 1, 1, 0) +DEF2(ld16u_i32, 1, 1, 1, 0) +DEF2(ld16s_i32, 1, 1, 1, 0) +DEF2(ld_i32, 1, 1, 1, 0) +DEF2(st8_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st16_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +/* arith */ +DEF2(add_i32, 1, 2, 0, 0) +DEF2(sub_i32, 1, 2, 0, 0) +DEF2(mul_i32, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_div_i32 +DEF2(div_i32, 1, 2, 0, 0) +DEF2(divu_i32, 1, 2, 0, 0) +DEF2(rem_i32, 1, 2, 0, 0) +DEF2(remu_i32, 1, 2, 0, 0) +#else +DEF2(div2_i32, 2, 3, 0, 0) +DEF2(divu2_i32, 2, 3, 0, 0) +#endif +DEF2(and_i32, 1, 2, 0, 0) +DEF2(or_i32, 1, 2, 0, 0) +DEF2(xor_i32, 1, 2, 0, 0) +/* shifts/rotates */ +DEF2(shl_i32, 1, 2, 0, 0) +DEF2(shr_i32, 1, 2, 0, 0) +DEF2(sar_i32, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_rot_i32 +DEF2(rotl_i32, 1, 2, 0, 0) +DEF2(rotr_i32, 1, 2, 0, 0) +#endif + +DEF2(brcond_i32, 0, 2, 2, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +#if TCG_TARGET_REG_BITS == 32 +DEF2(add2_i32, 2, 4, 0, 0) +DEF2(sub2_i32, 2, 4, 0, 0) +DEF2(brcond2_i32, 0, 4, 2, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +DEF2(mulu2_i32, 2, 2, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext8s_i32 +DEF2(ext8s_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16s_i32 +DEF2(ext16s_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext8u_i32 +DEF2(ext8u_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16u_i32 +DEF2(ext16u_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap16_i32 +DEF2(bswap16_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap32_i32 +DEF2(bswap32_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_not_i32 +DEF2(not_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_neg_i32 +DEF2(neg_i32, 1, 1, 0, 0) +#endif + +#if TCG_TARGET_REG_BITS == 64 +DEF2(mov_i64, 1, 1, 0, 0) +DEF2(movi_i64, 1, 0, 1, 0) +/* load/store */ +DEF2(ld8u_i64, 1, 1, 1, 0) +DEF2(ld8s_i64, 1, 1, 1, 0) +DEF2(ld16u_i64, 1, 1, 1, 0) +DEF2(ld16s_i64, 1, 1, 1, 0) +DEF2(ld32u_i64, 1, 1, 1, 0) +DEF2(ld32s_i64, 1, 1, 1, 0) +DEF2(ld_i64, 1, 1, 1, 0) +DEF2(st8_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st16_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st32_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +/* arith */ +DEF2(add_i64, 1, 2, 0, 0) +DEF2(sub_i64, 1, 2, 0, 0) +DEF2(mul_i64, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_div_i64 +DEF2(div_i64, 1, 2, 0, 0) +DEF2(divu_i64, 1, 2, 0, 0) +DEF2(rem_i64, 1, 2, 0, 0) +DEF2(remu_i64, 1, 2, 0, 0) +#else +DEF2(div2_i64, 2, 3, 0, 0) +DEF2(divu2_i64, 2, 3, 0, 0) +#endif +DEF2(and_i64, 1, 2, 0, 0) +DEF2(or_i64, 1, 2, 0, 0) +DEF2(xor_i64, 1, 2, 0, 0) +/* shifts/rotates */ +DEF2(shl_i64, 1, 2, 0, 0) +DEF2(shr_i64, 1, 2, 0, 0) +DEF2(sar_i64, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_rot_i64 +DEF2(rotl_i64, 1, 2, 0, 0) +DEF2(rotr_i64, 1, 2, 0, 0) +#endif + +DEF2(brcond_i64, 0, 2, 2, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +#ifdef TCG_TARGET_HAS_ext8s_i64 +DEF2(ext8s_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16s_i64 +DEF2(ext16s_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext32s_i64 +DEF2(ext32s_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext8u_i64 +DEF2(ext8u_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16u_i64 +DEF2(ext16u_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext32u_i64 +DEF2(ext32u_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap16_i64 +DEF2(bswap16_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap32_i64 +DEF2(bswap32_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap64_i64 +DEF2(bswap64_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_not_i64 +DEF2(not_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_neg_i64 +DEF2(neg_i64, 1, 1, 0, 0) +#endif +#endif + +/* QEMU specific */ +#if TARGET_LONG_BITS > TCG_TARGET_REG_BITS +DEF2(debug_insn_start, 0, 0, 2, 0) +#else +DEF2(debug_insn_start, 0, 0, 1, 0) +#endif +DEF2(exit_tb, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +DEF2(goto_tb, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +/* Note: even if TARGET_LONG_BITS is not defined, the INDEX_op + constants must be defined */ +#if TCG_TARGET_REG_BITS == 32 +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld8u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld8u, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld8s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld8s, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld16u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld16u, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld16s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld16s, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld32u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld32u, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld32s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld32s, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld64, 2, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld64, 2, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif + +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st8, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st8, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st16, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st16, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st32, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st32, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st64, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st64, 0, 4, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif + +#else /* TCG_TARGET_REG_BITS == 32 */ + +DEF2(qemu_ld8u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld8s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld16u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld16s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld32u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld32s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld64, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) + +DEF2(qemu_st8, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_st16, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_st32, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_st64, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) + +#endif /* TCG_TARGET_REG_BITS != 32 */ + +#undef DEF2 diff --git a/qemu/qemu-git/tcg/.svn/text-base/tcg-runtime.h.svn-base b/qemu/qemu-git/tcg/.svn/text-base/tcg-runtime.h.svn-base new file mode 100644 index 0000000..e750cc1 --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/tcg-runtime.h.svn-base @@ -0,0 +1,13 @@ +#ifndef TCG_RUNTIME_H +#define TCG_RUNTIME_H + +/* tcg-runtime.c */ +int64_t tcg_helper_shl_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_shr_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_sar_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_div_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_rem_i64(int64_t arg1, int64_t arg2); +uint64_t tcg_helper_divu_i64(uint64_t arg1, uint64_t arg2); +uint64_t tcg_helper_remu_i64(uint64_t arg1, uint64_t arg2); + +#endif diff --git a/qemu/qemu-git/tcg/.svn/text-base/tcg.c.svn-base b/qemu/qemu-git/tcg/.svn/text-base/tcg.c.svn-base new file mode 100644 index 0000000..3c0e296 --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/tcg.c.svn-base @@ -0,0 +1,2085 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* define it to use liveness analysis (better code) */ +#define USE_LIVENESS_ANALYSIS + +#include "config.h" + +#ifndef CONFIG_DEBUG_TCG +/* define it to suppress various consistency checks (faster) */ +#define NDEBUG +#endif + +#include +#include +#include +#include +#include +#ifdef _WIN32 +#include +#endif +#ifdef _AIX +#include +#endif + +#include "qemu-common.h" +#include "cache-utils.h" +#include "host-utils.h" + +/* Note: the long term plan is to reduce the dependancies on the QEMU + CPU definitions. Currently they are used for qemu_ld/st + instructions */ +#define NO_CPU_IO_DEFS +#include "cpu.h" +#include "exec-all.h" + +#include "tcg-op.h" +#include "elf.h" + +#if defined(CONFIG_USE_GUEST_BASE) && !defined(TCG_TARGET_HAS_GUEST_BASE) +#error GUEST_BASE not supported on this host. +#endif + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend); + +static TCGOpDef tcg_op_defs[] = { +#define DEF(s, n, copy_size) { #s, 0, 0, n, n, 0, copy_size }, +#define DEF2(s, oargs, iargs, cargs, flags) { #s, oargs, iargs, cargs, iargs + oargs + cargs, flags, 0 }, +#include "tcg-opc.h" +#undef DEF +#undef DEF2 +}; + +static TCGRegSet tcg_target_available_regs[2]; +static TCGRegSet tcg_target_call_clobber_regs; + +/* XXX: move that inside the context */ +uint16_t *gen_opc_ptr; +TCGArg *gen_opparam_ptr; + +static inline void tcg_out8(TCGContext *s, uint8_t v) +{ + *s->code_ptr++ = v; +} + +static inline void tcg_out16(TCGContext *s, uint16_t v) +{ + *(uint16_t *)s->code_ptr = v; + s->code_ptr += 2; +} + +static inline void tcg_out32(TCGContext *s, uint32_t v) +{ + *(uint32_t *)s->code_ptr = v; + s->code_ptr += 4; +} + +/* label relocation processing */ + +void tcg_out_reloc(TCGContext *s, uint8_t *code_ptr, int type, + int label_index, long addend) +{ + TCGLabel *l; + TCGRelocation *r; + + l = &s->labels[label_index]; + if (l->has_value) { + /* FIXME: This may break relocations on RISC targets that + modify instruction fields in place. The caller may not have + written the initial value. */ + patch_reloc(code_ptr, type, l->u.value, addend); + } else { + /* add a new relocation entry */ + r = tcg_malloc(sizeof(TCGRelocation)); + r->type = type; + r->ptr = code_ptr; + r->addend = addend; + r->next = l->u.first_reloc; + l->u.first_reloc = r; + } +} + +static void tcg_out_label(TCGContext *s, int label_index, + tcg_target_long value) +{ + TCGLabel *l; + TCGRelocation *r; + + l = &s->labels[label_index]; + if (l->has_value) + tcg_abort(); + r = l->u.first_reloc; + while (r != NULL) { + patch_reloc(r->ptr, r->type, value, r->addend); + r = r->next; + } + l->has_value = 1; + l->u.value = value; +} + +int gen_new_label(void) +{ + TCGContext *s = &tcg_ctx; + int idx; + TCGLabel *l; + + if (s->nb_labels >= TCG_MAX_LABELS) + tcg_abort(); + idx = s->nb_labels++; + l = &s->labels[idx]; + l->has_value = 0; + l->u.first_reloc = NULL; + return idx; +} + +#include "tcg-target.c" + +/* pool based memory allocation */ +void *tcg_malloc_internal(TCGContext *s, int size) +{ + TCGPool *p; + int pool_size; + + if (size > TCG_POOL_CHUNK_SIZE) { + /* big malloc: insert a new pool (XXX: could optimize) */ + p = qemu_malloc(sizeof(TCGPool) + size); + p->size = size; + if (s->pool_current) + s->pool_current->next = p; + else + s->pool_first = p; + p->next = s->pool_current; + } else { + p = s->pool_current; + if (!p) { + p = s->pool_first; + if (!p) + goto new_pool; + } else { + if (!p->next) { + new_pool: + pool_size = TCG_POOL_CHUNK_SIZE; + p = qemu_malloc(sizeof(TCGPool) + pool_size); + p->size = pool_size; + p->next = NULL; + if (s->pool_current) + s->pool_current->next = p; + else + s->pool_first = p; + } else { + p = p->next; + } + } + } + s->pool_current = p; + s->pool_cur = p->data + size; + s->pool_end = p->data + p->size; + return p->data; +} + +void tcg_pool_reset(TCGContext *s) +{ + s->pool_cur = s->pool_end = NULL; + s->pool_current = NULL; +} + +void tcg_context_init(TCGContext *s) +{ + int op, total_args, n; + TCGOpDef *def; + TCGArgConstraint *args_ct; + int *sorted_args; + + memset(s, 0, sizeof(*s)); + s->temps = s->static_temps; + s->nb_globals = 0; + + /* Count total number of arguments and allocate the corresponding + space */ + total_args = 0; + for(op = 0; op < NB_OPS; op++) { + def = &tcg_op_defs[op]; + n = def->nb_iargs + def->nb_oargs; + total_args += n; + } + + args_ct = qemu_malloc(sizeof(TCGArgConstraint) * total_args); + sorted_args = qemu_malloc(sizeof(int) * total_args); + + for(op = 0; op < NB_OPS; op++) { + def = &tcg_op_defs[op]; + def->args_ct = args_ct; + def->sorted_args = sorted_args; + n = def->nb_iargs + def->nb_oargs; + sorted_args += n; + args_ct += n; + } + + tcg_target_init(s); + + /* init global prologue and epilogue */ + s->code_buf = code_gen_prologue; + s->code_ptr = s->code_buf; + tcg_target_qemu_prologue(s); + flush_icache_range((unsigned long)s->code_buf, + (unsigned long)s->code_ptr); +} + +void tcg_set_frame(TCGContext *s, int reg, + tcg_target_long start, tcg_target_long size) +{ + s->frame_start = start; + s->frame_end = start + size; + s->frame_reg = reg; +} + +void tcg_func_start(TCGContext *s) +{ + int i; + tcg_pool_reset(s); + s->nb_temps = s->nb_globals; + for(i = 0; i < (TCG_TYPE_COUNT * 2); i++) + s->first_free_temp[i] = -1; + s->labels = tcg_malloc(sizeof(TCGLabel) * TCG_MAX_LABELS); + s->nb_labels = 0; + s->current_frame_offset = s->frame_start; + + gen_opc_ptr = gen_opc_buf; + gen_opparam_ptr = gen_opparam_buf; +} + +static inline void tcg_temp_alloc(TCGContext *s, int n) +{ + if (n > TCG_MAX_TEMPS) + tcg_abort(); +} + +static inline int tcg_global_reg_new_internal(TCGType type, int reg, + const char *name) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int idx; + +#if TCG_TARGET_REG_BITS == 32 + if (type != TCG_TYPE_I32) + tcg_abort(); +#endif + if (tcg_regset_test_reg(s->reserved_regs, reg)) + tcg_abort(); + idx = s->nb_globals; + tcg_temp_alloc(s, s->nb_globals + 1); + ts = &s->temps[s->nb_globals]; + ts->base_type = type; + ts->type = type; + ts->fixed_reg = 1; + ts->reg = reg; + ts->name = name; + s->nb_globals++; + tcg_regset_set_reg(s->reserved_regs, reg); + return idx; +} + +TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name) +{ + int idx; + + idx = tcg_global_reg_new_internal(TCG_TYPE_I32, reg, name); + return MAKE_TCGV_I32(idx); +} + +TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name) +{ + int idx; + + idx = tcg_global_reg_new_internal(TCG_TYPE_I64, reg, name); + return MAKE_TCGV_I64(idx); +} + +static inline int tcg_global_mem_new_internal(TCGType type, int reg, + tcg_target_long offset, + const char *name) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int idx; + + idx = s->nb_globals; +#if TCG_TARGET_REG_BITS == 32 + if (type == TCG_TYPE_I64) { + char buf[64]; + tcg_temp_alloc(s, s->nb_globals + 2); + ts = &s->temps[s->nb_globals]; + ts->base_type = type; + ts->type = TCG_TYPE_I32; + ts->fixed_reg = 0; + ts->mem_allocated = 1; + ts->mem_reg = reg; +#ifdef TCG_TARGET_WORDS_BIGENDIAN + ts->mem_offset = offset + 4; +#else + ts->mem_offset = offset; +#endif + pstrcpy(buf, sizeof(buf), name); + pstrcat(buf, sizeof(buf), "_0"); + ts->name = strdup(buf); + ts++; + + ts->base_type = type; + ts->type = TCG_TYPE_I32; + ts->fixed_reg = 0; + ts->mem_allocated = 1; + ts->mem_reg = reg; +#ifdef TCG_TARGET_WORDS_BIGENDIAN + ts->mem_offset = offset; +#else + ts->mem_offset = offset + 4; +#endif + pstrcpy(buf, sizeof(buf), name); + pstrcat(buf, sizeof(buf), "_1"); + ts->name = strdup(buf); + + s->nb_globals += 2; + } else +#endif + { + tcg_temp_alloc(s, s->nb_globals + 1); + ts = &s->temps[s->nb_globals]; + ts->base_type = type; + ts->type = type; + ts->fixed_reg = 0; + ts->mem_allocated = 1; + ts->mem_reg = reg; + ts->mem_offset = offset; + ts->name = name; + s->nb_globals++; + } + return idx; +} + +TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset, + const char *name) +{ + int idx; + + idx = tcg_global_mem_new_internal(TCG_TYPE_I32, reg, offset, name); + return MAKE_TCGV_I32(idx); +} + +TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset, + const char *name) +{ + int idx; + + idx = tcg_global_mem_new_internal(TCG_TYPE_I64, reg, offset, name); + return MAKE_TCGV_I64(idx); +} + +static inline int tcg_temp_new_internal(TCGType type, int temp_local) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int idx, k; + + k = type; + if (temp_local) + k += TCG_TYPE_COUNT; + idx = s->first_free_temp[k]; + if (idx != -1) { + /* There is already an available temp with the + right type */ + ts = &s->temps[idx]; + s->first_free_temp[k] = ts->next_free_temp; + ts->temp_allocated = 1; + assert(ts->temp_local == temp_local); + } else { + idx = s->nb_temps; +#if TCG_TARGET_REG_BITS == 32 + if (type == TCG_TYPE_I64) { + tcg_temp_alloc(s, s->nb_temps + 2); + ts = &s->temps[s->nb_temps]; + ts->base_type = type; + ts->type = TCG_TYPE_I32; + ts->temp_allocated = 1; + ts->temp_local = temp_local; + ts->name = NULL; + ts++; + ts->base_type = TCG_TYPE_I32; + ts->type = TCG_TYPE_I32; + ts->temp_allocated = 1; + ts->temp_local = temp_local; + ts->name = NULL; + s->nb_temps += 2; + } else +#endif + { + tcg_temp_alloc(s, s->nb_temps + 1); + ts = &s->temps[s->nb_temps]; + ts->base_type = type; + ts->type = type; + ts->temp_allocated = 1; + ts->temp_local = temp_local; + ts->name = NULL; + s->nb_temps++; + } + } + return idx; +} + +TCGv_i32 tcg_temp_new_internal_i32(int temp_local) +{ + int idx; + + idx = tcg_temp_new_internal(TCG_TYPE_I32, temp_local); + return MAKE_TCGV_I32(idx); +} + +TCGv_i64 tcg_temp_new_internal_i64(int temp_local) +{ + int idx; + + idx = tcg_temp_new_internal(TCG_TYPE_I64, temp_local); + return MAKE_TCGV_I64(idx); +} + +static inline void tcg_temp_free_internal(int idx) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int k; + + assert(idx >= s->nb_globals && idx < s->nb_temps); + ts = &s->temps[idx]; + assert(ts->temp_allocated != 0); + ts->temp_allocated = 0; + k = ts->base_type; + if (ts->temp_local) + k += TCG_TYPE_COUNT; + ts->next_free_temp = s->first_free_temp[k]; + s->first_free_temp[k] = idx; +} + +void tcg_temp_free_i32(TCGv_i32 arg) +{ + tcg_temp_free_internal(GET_TCGV_I32(arg)); +} + +void tcg_temp_free_i64(TCGv_i64 arg) +{ + tcg_temp_free_internal(GET_TCGV_I64(arg)); +} + +TCGv_i32 tcg_const_i32(int32_t val) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_movi_i32(t0, val); + return t0; +} + +TCGv_i64 tcg_const_i64(int64_t val) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_movi_i64(t0, val); + return t0; +} + +TCGv_i32 tcg_const_local_i32(int32_t val) +{ + TCGv_i32 t0; + t0 = tcg_temp_local_new_i32(); + tcg_gen_movi_i32(t0, val); + return t0; +} + +TCGv_i64 tcg_const_local_i64(int64_t val) +{ + TCGv_i64 t0; + t0 = tcg_temp_local_new_i64(); + tcg_gen_movi_i64(t0, val); + return t0; +} + +void tcg_register_helper(void *func, const char *name) +{ + TCGContext *s = &tcg_ctx; + int n; + if ((s->nb_helpers + 1) > s->allocated_helpers) { + n = s->allocated_helpers; + if (n == 0) { + n = 4; + } else { + n *= 2; + } + s->helpers = realloc(s->helpers, n * sizeof(TCGHelperInfo)); + s->allocated_helpers = n; + } + s->helpers[s->nb_helpers].func = (tcg_target_ulong)func; + s->helpers[s->nb_helpers].name = name; + s->nb_helpers++; +} + +/* Note: we convert the 64 bit args to 32 bit and do some alignment + and endian swap. Maybe it would be better to do the alignment + and endian swap in tcg_reg_alloc_call(). */ +void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags, + int sizemask, TCGArg ret, int nargs, TCGArg *args) +{ + int call_type; + int i; + int real_args; + int nb_rets; + TCGArg *nparam; + *gen_opc_ptr++ = INDEX_op_call; + nparam = gen_opparam_ptr++; + call_type = (flags & TCG_CALL_TYPE_MASK); + if (ret != TCG_CALL_DUMMY_ARG) { +#if TCG_TARGET_REG_BITS < 64 + if (sizemask & 1) { +#ifdef TCG_TARGET_WORDS_BIGENDIAN + *gen_opparam_ptr++ = ret + 1; + *gen_opparam_ptr++ = ret; +#else + *gen_opparam_ptr++ = ret; + *gen_opparam_ptr++ = ret + 1; +#endif + nb_rets = 2; + } else +#endif + { + *gen_opparam_ptr++ = ret; + nb_rets = 1; + } + } else { + nb_rets = 0; + } + real_args = 0; + for (i = 0; i < nargs; i++) { +#if TCG_TARGET_REG_BITS < 64 + if (sizemask & (2 << i)) { +#ifdef TCG_TARGET_I386 + /* REGPARM case: if the third parameter is 64 bit, it is + allocated on the stack */ + if (i == 2 && call_type == TCG_CALL_TYPE_REGPARM) { + call_type = TCG_CALL_TYPE_REGPARM_2; + flags = (flags & ~TCG_CALL_TYPE_MASK) | call_type; + } +#endif +#ifdef TCG_TARGET_CALL_ALIGN_ARGS + /* some targets want aligned 64 bit args */ + if (real_args & 1) { + *gen_opparam_ptr++ = TCG_CALL_DUMMY_ARG; + real_args++; + } +#endif +#ifdef TCG_TARGET_WORDS_BIGENDIAN + *gen_opparam_ptr++ = args[i] + 1; + *gen_opparam_ptr++ = args[i]; +#else + *gen_opparam_ptr++ = args[i]; + *gen_opparam_ptr++ = args[i] + 1; +#endif + real_args += 2; + } else +#endif + { + *gen_opparam_ptr++ = args[i]; + real_args++; + } + } + *gen_opparam_ptr++ = GET_TCGV_PTR(func); + + *gen_opparam_ptr++ = flags; + + *nparam = (nb_rets << 16) | (real_args + 1); + + /* total parameters, needed to go backward in the instruction stream */ + *gen_opparam_ptr++ = 1 + nb_rets + real_args + 3; +} + +#if TCG_TARGET_REG_BITS == 32 +void tcg_gen_shifti_i64(TCGv_i64 ret, TCGv_i64 arg1, + int c, int right, int arith) +{ + if (c == 0) { + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg1)); + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1)); + } else if (c >= 32) { + c -= 32; + if (right) { + if (arith) { + tcg_gen_sari_i32(TCGV_LOW(ret), TCGV_HIGH(arg1), c); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), 31); + } else { + tcg_gen_shri_i32(TCGV_LOW(ret), TCGV_HIGH(arg1), c); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); + } + } else { + tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_LOW(arg1), c); + tcg_gen_movi_i32(TCGV_LOW(ret), 0); + } + } else { + TCGv_i32 t0, t1; + + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + if (right) { + tcg_gen_shli_i32(t0, TCGV_HIGH(arg1), 32 - c); + if (arith) + tcg_gen_sari_i32(t1, TCGV_HIGH(arg1), c); + else + tcg_gen_shri_i32(t1, TCGV_HIGH(arg1), c); + tcg_gen_shri_i32(TCGV_LOW(ret), TCGV_LOW(arg1), c); + tcg_gen_or_i32(TCGV_LOW(ret), TCGV_LOW(ret), t0); + tcg_gen_mov_i32(TCGV_HIGH(ret), t1); + } else { + tcg_gen_shri_i32(t0, TCGV_LOW(arg1), 32 - c); + /* Note: ret can be the same as arg1, so we use t1 */ + tcg_gen_shli_i32(t1, TCGV_LOW(arg1), c); + tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c); + tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(ret), t0); + tcg_gen_mov_i32(TCGV_LOW(ret), t1); + } + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); + } +} +#endif + +static void tcg_reg_alloc_start(TCGContext *s) +{ + int i; + TCGTemp *ts; + for(i = 0; i < s->nb_globals; i++) { + ts = &s->temps[i]; + if (ts->fixed_reg) { + ts->val_type = TEMP_VAL_REG; + } else { + ts->val_type = TEMP_VAL_MEM; + } + } + for(i = s->nb_globals; i < s->nb_temps; i++) { + ts = &s->temps[i]; + ts->val_type = TEMP_VAL_DEAD; + ts->mem_allocated = 0; + ts->fixed_reg = 0; + } + for(i = 0; i < TCG_TARGET_NB_REGS; i++) { + s->reg_to_temp[i] = -1; + } +} + +static char *tcg_get_arg_str_idx(TCGContext *s, char *buf, int buf_size, + int idx) +{ + TCGTemp *ts; + + ts = &s->temps[idx]; + if (idx < s->nb_globals) { + pstrcpy(buf, buf_size, ts->name); + } else { + if (ts->temp_local) + snprintf(buf, buf_size, "loc%d", idx - s->nb_globals); + else + snprintf(buf, buf_size, "tmp%d", idx - s->nb_globals); + } + return buf; +} + +char *tcg_get_arg_str_i32(TCGContext *s, char *buf, int buf_size, TCGv_i32 arg) +{ + return tcg_get_arg_str_idx(s, buf, buf_size, GET_TCGV_I32(arg)); +} + +char *tcg_get_arg_str_i64(TCGContext *s, char *buf, int buf_size, TCGv_i64 arg) +{ + return tcg_get_arg_str_idx(s, buf, buf_size, GET_TCGV_I64(arg)); +} + +static int helper_cmp(const void *p1, const void *p2) +{ + const TCGHelperInfo *th1 = p1; + const TCGHelperInfo *th2 = p2; + if (th1->func < th2->func) + return -1; + else if (th1->func == th2->func) + return 0; + else + return 1; +} + +/* find helper definition (Note: A hash table would be better) */ +static TCGHelperInfo *tcg_find_helper(TCGContext *s, tcg_target_ulong val) +{ + int m, m_min, m_max; + TCGHelperInfo *th; + tcg_target_ulong v; + + if (unlikely(!s->helpers_sorted)) { + qsort(s->helpers, s->nb_helpers, sizeof(TCGHelperInfo), + helper_cmp); + s->helpers_sorted = 1; + } + + /* binary search */ + m_min = 0; + m_max = s->nb_helpers - 1; + while (m_min <= m_max) { + m = (m_min + m_max) >> 1; + th = &s->helpers[m]; + v = th->func; + if (v == val) + return th; + else if (val < v) { + m_max = m - 1; + } else { + m_min = m + 1; + } + } + return NULL; +} + +static const char * const cond_name[] = +{ + [TCG_COND_EQ] = "eq", + [TCG_COND_NE] = "ne", + [TCG_COND_LT] = "lt", + [TCG_COND_GE] = "ge", + [TCG_COND_LE] = "le", + [TCG_COND_GT] = "gt", + [TCG_COND_LTU] = "ltu", + [TCG_COND_GEU] = "geu", + [TCG_COND_LEU] = "leu", + [TCG_COND_GTU] = "gtu" +}; + +void tcg_dump_ops(TCGContext *s, FILE *outfile) +{ + const uint16_t *opc_ptr; + const TCGArg *args; + TCGArg arg; + int c, i, k, nb_oargs, nb_iargs, nb_cargs, first_insn; + const TCGOpDef *def; + char buf[128]; + + first_insn = 1; + opc_ptr = gen_opc_buf; + args = gen_opparam_buf; + while (opc_ptr < gen_opc_ptr) { + c = *opc_ptr++; + def = &tcg_op_defs[c]; + if (c == INDEX_op_debug_insn_start) { + uint64_t pc; +#if TARGET_LONG_BITS > TCG_TARGET_REG_BITS + pc = ((uint64_t)args[1] << 32) | args[0]; +#else + pc = args[0]; +#endif + if (!first_insn) + fprintf(outfile, "\n"); + fprintf(outfile, " ---- 0x%" PRIx64, pc); + first_insn = 0; + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + nb_cargs = def->nb_cargs; + } else if (c == INDEX_op_call) { + TCGArg arg; + + /* variable number of arguments */ + arg = *args++; + nb_oargs = arg >> 16; + nb_iargs = arg & 0xffff; + nb_cargs = def->nb_cargs; + + fprintf(outfile, " %s ", def->name); + + /* function name */ + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[nb_oargs + nb_iargs - 1])); + /* flags */ + fprintf(outfile, ",$0x%" TCG_PRIlx, + args[nb_oargs + nb_iargs]); + /* nb out args */ + fprintf(outfile, ",$%d", nb_oargs); + for(i = 0; i < nb_oargs; i++) { + fprintf(outfile, ","); + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[i])); + } + for(i = 0; i < (nb_iargs - 1); i++) { + fprintf(outfile, ","); + if (args[nb_oargs + i] == TCG_CALL_DUMMY_ARG) { + fprintf(outfile, ""); + } else { + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[nb_oargs + i])); + } + } + } else if (c == INDEX_op_movi_i32 +#if TCG_TARGET_REG_BITS == 64 + || c == INDEX_op_movi_i64 +#endif + ) { + tcg_target_ulong val; + TCGHelperInfo *th; + + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + nb_cargs = def->nb_cargs; + fprintf(outfile, " %s %s,$", def->name, + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[0])); + val = args[1]; + th = tcg_find_helper(s, val); + if (th) { + fprintf(outfile, "%s", th->name); + } else { + if (c == INDEX_op_movi_i32) + fprintf(outfile, "0x%x", (uint32_t)val); + else + fprintf(outfile, "0x%" PRIx64 , (uint64_t)val); + } + } else { + fprintf(outfile, " %s ", def->name); + if (c == INDEX_op_nopn) { + /* variable number of arguments */ + nb_cargs = *args; + nb_oargs = 0; + nb_iargs = 0; + } else { + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + nb_cargs = def->nb_cargs; + } + + k = 0; + for(i = 0; i < nb_oargs; i++) { + if (k != 0) + fprintf(outfile, ","); + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[k++])); + } + for(i = 0; i < nb_iargs; i++) { + if (k != 0) + fprintf(outfile, ","); + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[k++])); + } + if (c == INDEX_op_brcond_i32 +#if TCG_TARGET_REG_BITS == 32 + || c == INDEX_op_brcond2_i32 +#elif TCG_TARGET_REG_BITS == 64 + || c == INDEX_op_brcond_i64 +#endif + ) { + if (args[k] < ARRAY_SIZE(cond_name) && cond_name[args[k]]) + fprintf(outfile, ",%s", cond_name[args[k++]]); + else + fprintf(outfile, ",$0x%" TCG_PRIlx, args[k++]); + i = 1; + } + else + i = 0; + for(; i < nb_cargs; i++) { + if (k != 0) + fprintf(outfile, ","); + arg = args[k++]; + fprintf(outfile, "$0x%" TCG_PRIlx, arg); + } + } + fprintf(outfile, "\n"); + args += nb_iargs + nb_oargs + nb_cargs; + } +} + +/* we give more priority to constraints with less registers */ +static int get_constraint_priority(const TCGOpDef *def, int k) +{ + const TCGArgConstraint *arg_ct; + + int i, n; + arg_ct = &def->args_ct[k]; + if (arg_ct->ct & TCG_CT_ALIAS) { + /* an alias is equivalent to a single register */ + n = 1; + } else { + if (!(arg_ct->ct & TCG_CT_REG)) + return 0; + n = 0; + for(i = 0; i < TCG_TARGET_NB_REGS; i++) { + if (tcg_regset_test_reg(arg_ct->u.regs, i)) + n++; + } + } + return TCG_TARGET_NB_REGS - n + 1; +} + +/* sort from highest priority to lowest */ +static void sort_constraints(TCGOpDef *def, int start, int n) +{ + int i, j, p1, p2, tmp; + + for(i = 0; i < n; i++) + def->sorted_args[start + i] = start + i; + if (n <= 1) + return; + for(i = 0; i < n - 1; i++) { + for(j = i + 1; j < n; j++) { + p1 = get_constraint_priority(def, def->sorted_args[start + i]); + p2 = get_constraint_priority(def, def->sorted_args[start + j]); + if (p1 < p2) { + tmp = def->sorted_args[start + i]; + def->sorted_args[start + i] = def->sorted_args[start + j]; + def->sorted_args[start + j] = tmp; + } + } + } +} + +void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs) +{ + int op; + TCGOpDef *def; + const char *ct_str; + int i, nb_args; + + for(;;) { + if (tdefs->op < 0) + break; + op = tdefs->op; + assert(op >= 0 && op < NB_OPS); + def = &tcg_op_defs[op]; + nb_args = def->nb_iargs + def->nb_oargs; + for(i = 0; i < nb_args; i++) { + ct_str = tdefs->args_ct_str[i]; + tcg_regset_clear(def->args_ct[i].u.regs); + def->args_ct[i].ct = 0; + if (ct_str[0] >= '0' && ct_str[0] <= '9') { + int oarg; + oarg = ct_str[0] - '0'; + assert(oarg < def->nb_oargs); + assert(def->args_ct[oarg].ct & TCG_CT_REG); + /* TCG_CT_ALIAS is for the output arguments. The input + argument is tagged with TCG_CT_IALIAS. */ + def->args_ct[i] = def->args_ct[oarg]; + def->args_ct[oarg].ct = TCG_CT_ALIAS; + def->args_ct[oarg].alias_index = i; + def->args_ct[i].ct |= TCG_CT_IALIAS; + def->args_ct[i].alias_index = oarg; + } else { + for(;;) { + if (*ct_str == '\0') + break; + switch(*ct_str) { + case 'i': + def->args_ct[i].ct |= TCG_CT_CONST; + ct_str++; + break; + default: + if (target_parse_constraint(&def->args_ct[i], &ct_str) < 0) { + fprintf(stderr, "Invalid constraint '%s' for arg %d of operation '%s'\n", + ct_str, i, def->name); + exit(1); + } + } + } + } + } + + /* sort the constraints (XXX: this is just an heuristic) */ + sort_constraints(def, 0, def->nb_oargs); + sort_constraints(def, def->nb_oargs, def->nb_iargs); + +#if 0 + { + int i; + + printf("%s: sorted=", def->name); + for(i = 0; i < def->nb_oargs + def->nb_iargs; i++) + printf(" %d", def->sorted_args[i]); + printf("\n"); + } +#endif + tdefs++; + } + +} + +#ifdef USE_LIVENESS_ANALYSIS + +/* set a nop for an operation using 'nb_args' */ +static inline void tcg_set_nop(TCGContext *s, uint16_t *opc_ptr, + TCGArg *args, int nb_args) +{ + if (nb_args == 0) { + *opc_ptr = INDEX_op_nop; + } else { + *opc_ptr = INDEX_op_nopn; + args[0] = nb_args; + args[nb_args - 1] = nb_args; + } +} + +/* liveness analysis: end of function: globals are live, temps are + dead. */ +/* XXX: at this stage, not used as there would be little gains because + most TBs end with a conditional jump. */ +static inline void tcg_la_func_end(TCGContext *s, uint8_t *dead_temps) +{ + memset(dead_temps, 0, s->nb_globals); + memset(dead_temps + s->nb_globals, 1, s->nb_temps - s->nb_globals); +} + +/* liveness analysis: end of basic block: globals are live, temps are + dead, local temps are live. */ +static inline void tcg_la_bb_end(TCGContext *s, uint8_t *dead_temps) +{ + int i; + TCGTemp *ts; + + memset(dead_temps, 0, s->nb_globals); + ts = &s->temps[s->nb_globals]; + for(i = s->nb_globals; i < s->nb_temps; i++) { + if (ts->temp_local) + dead_temps[i] = 0; + else + dead_temps[i] = 1; + ts++; + } +} + +/* Liveness analysis : update the opc_dead_iargs array to tell if a + given input arguments is dead. Instructions updating dead + temporaries are removed. */ +static void tcg_liveness_analysis(TCGContext *s) +{ + int i, op_index, op, nb_args, nb_iargs, nb_oargs, arg, nb_ops; + TCGArg *args; + const TCGOpDef *def; + uint8_t *dead_temps; + unsigned int dead_iargs; + + gen_opc_ptr++; /* skip end */ + + nb_ops = gen_opc_ptr - gen_opc_buf; + + s->op_dead_iargs = tcg_malloc(nb_ops * sizeof(uint16_t)); + + dead_temps = tcg_malloc(s->nb_temps); + memset(dead_temps, 1, s->nb_temps); + + args = gen_opparam_ptr; + op_index = nb_ops - 1; + while (op_index >= 0) { + op = gen_opc_buf[op_index]; + def = &tcg_op_defs[op]; + switch(op) { + case INDEX_op_call: + { + int call_flags; + + nb_args = args[-1]; + args -= nb_args; + nb_iargs = args[0] & 0xffff; + nb_oargs = args[0] >> 16; + args++; + call_flags = args[nb_oargs + nb_iargs]; + + /* pure functions can be removed if their result is not + used */ + if (call_flags & TCG_CALL_PURE) { + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + if (!dead_temps[arg]) + goto do_not_remove_call; + } + tcg_set_nop(s, gen_opc_buf + op_index, + args - 1, nb_args); + } else { + do_not_remove_call: + + /* output args are dead */ + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + dead_temps[arg] = 1; + } + + if (!(call_flags & TCG_CALL_CONST)) { + /* globals are live (they may be used by the call) */ + memset(dead_temps, 0, s->nb_globals); + } + + /* input args are live */ + dead_iargs = 0; + for(i = 0; i < nb_iargs; i++) { + arg = args[i + nb_oargs]; + if (arg != TCG_CALL_DUMMY_ARG) { + if (dead_temps[arg]) { + dead_iargs |= (1 << i); + } + dead_temps[arg] = 0; + } + } + s->op_dead_iargs[op_index] = dead_iargs; + } + args--; + } + break; + case INDEX_op_set_label: + args--; + /* mark end of basic block */ + tcg_la_bb_end(s, dead_temps); + break; + case INDEX_op_debug_insn_start: + args -= def->nb_args; + break; + case INDEX_op_nopn: + nb_args = args[-1]; + args -= nb_args; + break; + case INDEX_op_discard: + args--; + /* mark the temporary as dead */ + dead_temps[args[0]] = 1; + break; + case INDEX_op_end: + break; + /* XXX: optimize by hardcoding common cases (e.g. triadic ops) */ + default: + args -= def->nb_args; + nb_iargs = def->nb_iargs; + nb_oargs = def->nb_oargs; + + /* Test if the operation can be removed because all + its outputs are dead. We assume that nb_oargs == 0 + implies side effects */ + if (!(def->flags & TCG_OPF_SIDE_EFFECTS) && nb_oargs != 0) { + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + if (!dead_temps[arg]) + goto do_not_remove; + } + tcg_set_nop(s, gen_opc_buf + op_index, args, def->nb_args); +#ifdef CONFIG_PROFILER + s->del_op_count++; +#endif + } else { + do_not_remove: + + /* output args are dead */ + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + dead_temps[arg] = 1; + } + + /* if end of basic block, update */ + if (def->flags & TCG_OPF_BB_END) { + tcg_la_bb_end(s, dead_temps); + } else if (def->flags & TCG_OPF_CALL_CLOBBER) { + /* globals are live */ + memset(dead_temps, 0, s->nb_globals); + } + + /* input args are live */ + dead_iargs = 0; + for(i = 0; i < nb_iargs; i++) { + arg = args[i + nb_oargs]; + if (dead_temps[arg]) { + dead_iargs |= (1 << i); + } + dead_temps[arg] = 0; + } + s->op_dead_iargs[op_index] = dead_iargs; + } + break; + } + op_index--; + } + + if (args != gen_opparam_buf) + tcg_abort(); +} +#else +/* dummy liveness analysis */ +void tcg_liveness_analysis(TCGContext *s) +{ + int nb_ops; + nb_ops = gen_opc_ptr - gen_opc_buf; + + s->op_dead_iargs = tcg_malloc(nb_ops * sizeof(uint16_t)); + memset(s->op_dead_iargs, 0, nb_ops * sizeof(uint16_t)); +} +#endif + +#ifndef NDEBUG +static void dump_regs(TCGContext *s) +{ + TCGTemp *ts; + int i; + char buf[64]; + + for(i = 0; i < s->nb_temps; i++) { + ts = &s->temps[i]; + printf(" %10s: ", tcg_get_arg_str_idx(s, buf, sizeof(buf), i)); + switch(ts->val_type) { + case TEMP_VAL_REG: + printf("%s", tcg_target_reg_names[ts->reg]); + break; + case TEMP_VAL_MEM: + printf("%d(%s)", (int)ts->mem_offset, tcg_target_reg_names[ts->mem_reg]); + break; + case TEMP_VAL_CONST: + printf("$0x%" TCG_PRIlx, ts->val); + break; + case TEMP_VAL_DEAD: + printf("D"); + break; + default: + printf("???"); + break; + } + printf("\n"); + } + + for(i = 0; i < TCG_TARGET_NB_REGS; i++) { + if (s->reg_to_temp[i] >= 0) { + printf("%s: %s\n", + tcg_target_reg_names[i], + tcg_get_arg_str_idx(s, buf, sizeof(buf), s->reg_to_temp[i])); + } + } +} + +static void check_regs(TCGContext *s) +{ + int reg, k; + TCGTemp *ts; + char buf[64]; + + for(reg = 0; reg < TCG_TARGET_NB_REGS; reg++) { + k = s->reg_to_temp[reg]; + if (k >= 0) { + ts = &s->temps[k]; + if (ts->val_type != TEMP_VAL_REG || + ts->reg != reg) { + printf("Inconsistency for register %s:\n", + tcg_target_reg_names[reg]); + goto fail; + } + } + } + for(k = 0; k < s->nb_temps; k++) { + ts = &s->temps[k]; + if (ts->val_type == TEMP_VAL_REG && + !ts->fixed_reg && + s->reg_to_temp[ts->reg] != k) { + printf("Inconsistency for temp %s:\n", + tcg_get_arg_str_idx(s, buf, sizeof(buf), k)); + fail: + printf("reg state:\n"); + dump_regs(s); + tcg_abort(); + } + } +} +#endif + +static void temp_allocate_frame(TCGContext *s, int temp) +{ + TCGTemp *ts; + ts = &s->temps[temp]; + s->current_frame_offset = (s->current_frame_offset + sizeof(tcg_target_long) - 1) & ~(sizeof(tcg_target_long) - 1); + if (s->current_frame_offset + sizeof(tcg_target_long) > s->frame_end) + tcg_abort(); + ts->mem_offset = s->current_frame_offset; + ts->mem_reg = s->frame_reg; + ts->mem_allocated = 1; + s->current_frame_offset += sizeof(tcg_target_long); +} + +/* free register 'reg' by spilling the corresponding temporary if necessary */ +static void tcg_reg_free(TCGContext *s, int reg) +{ + TCGTemp *ts; + int temp; + + temp = s->reg_to_temp[reg]; + if (temp != -1) { + ts = &s->temps[temp]; + assert(ts->val_type == TEMP_VAL_REG); + if (!ts->mem_coherent) { + if (!ts->mem_allocated) + temp_allocate_frame(s, temp); + tcg_out_st(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + } + ts->val_type = TEMP_VAL_MEM; + s->reg_to_temp[reg] = -1; + } +} + +/* Allocate a register belonging to reg1 & ~reg2 */ +static int tcg_reg_alloc(TCGContext *s, TCGRegSet reg1, TCGRegSet reg2) +{ + int i, reg; + TCGRegSet reg_ct; + + tcg_regset_andnot(reg_ct, reg1, reg2); + + /* first try free registers */ + for(i = 0; i < ARRAY_SIZE(tcg_target_reg_alloc_order); i++) { + reg = tcg_target_reg_alloc_order[i]; + if (tcg_regset_test_reg(reg_ct, reg) && s->reg_to_temp[reg] == -1) + return reg; + } + + /* XXX: do better spill choice */ + for(i = 0; i < ARRAY_SIZE(tcg_target_reg_alloc_order); i++) { + reg = tcg_target_reg_alloc_order[i]; + if (tcg_regset_test_reg(reg_ct, reg)) { + tcg_reg_free(s, reg); + return reg; + } + } + + tcg_abort(); +} + +/* save a temporary to memory. 'allocated_regs' is used in case a + temporary registers needs to be allocated to store a constant. */ +static void temp_save(TCGContext *s, int temp, TCGRegSet allocated_regs) +{ + TCGTemp *ts; + int reg; + + ts = &s->temps[temp]; + if (!ts->fixed_reg) { + switch(ts->val_type) { + case TEMP_VAL_REG: + tcg_reg_free(s, ts->reg); + break; + case TEMP_VAL_DEAD: + ts->val_type = TEMP_VAL_MEM; + break; + case TEMP_VAL_CONST: + reg = tcg_reg_alloc(s, tcg_target_available_regs[ts->type], + allocated_regs); + if (!ts->mem_allocated) + temp_allocate_frame(s, temp); + tcg_out_movi(s, ts->type, reg, ts->val); + tcg_out_st(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + ts->val_type = TEMP_VAL_MEM; + break; + case TEMP_VAL_MEM: + break; + default: + tcg_abort(); + } + } +} + +/* save globals to their cannonical location and assume they can be + modified be the following code. 'allocated_regs' is used in case a + temporary registers needs to be allocated to store a constant. */ +static void save_globals(TCGContext *s, TCGRegSet allocated_regs) +{ + int i; + + for(i = 0; i < s->nb_globals; i++) { + temp_save(s, i, allocated_regs); + } +} + +/* at the end of a basic block, we assume all temporaries are dead and + all globals are stored at their canonical location. */ +static void tcg_reg_alloc_bb_end(TCGContext *s, TCGRegSet allocated_regs) +{ + TCGTemp *ts; + int i; + + for(i = s->nb_globals; i < s->nb_temps; i++) { + ts = &s->temps[i]; + if (ts->temp_local) { + temp_save(s, i, allocated_regs); + } else { + if (ts->val_type == TEMP_VAL_REG) { + s->reg_to_temp[ts->reg] = -1; + } + ts->val_type = TEMP_VAL_DEAD; + } + } + + save_globals(s, allocated_regs); +} + +#define IS_DEAD_IARG(n) ((dead_iargs >> (n)) & 1) + +static void tcg_reg_alloc_movi(TCGContext *s, const TCGArg *args) +{ + TCGTemp *ots; + tcg_target_ulong val; + + ots = &s->temps[args[0]]; + val = args[1]; + + if (ots->fixed_reg) { + /* for fixed registers, we do not do any constant + propagation */ + tcg_out_movi(s, ots->type, ots->reg, val); + } else { + /* The movi is not explicitly generated here */ + if (ots->val_type == TEMP_VAL_REG) + s->reg_to_temp[ots->reg] = -1; + ots->val_type = TEMP_VAL_CONST; + ots->val = val; + } +} + +static void tcg_reg_alloc_mov(TCGContext *s, const TCGOpDef *def, + const TCGArg *args, + unsigned int dead_iargs) +{ + TCGTemp *ts, *ots; + int reg; + const TCGArgConstraint *arg_ct; + + ots = &s->temps[args[0]]; + ts = &s->temps[args[1]]; + arg_ct = &def->args_ct[0]; + + /* XXX: always mark arg dead if IS_DEAD_IARG(0) */ + if (ts->val_type == TEMP_VAL_REG) { + if (IS_DEAD_IARG(0) && !ts->fixed_reg && !ots->fixed_reg) { + /* the mov can be suppressed */ + if (ots->val_type == TEMP_VAL_REG) + s->reg_to_temp[ots->reg] = -1; + reg = ts->reg; + s->reg_to_temp[reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } else { + if (ots->val_type == TEMP_VAL_REG) { + reg = ots->reg; + } else { + reg = tcg_reg_alloc(s, arg_ct->u.regs, s->reserved_regs); + } + if (ts->reg != reg) { + tcg_out_mov(s, reg, ts->reg); + } + } + } else if (ts->val_type == TEMP_VAL_MEM) { + if (ots->val_type == TEMP_VAL_REG) { + reg = ots->reg; + } else { + reg = tcg_reg_alloc(s, arg_ct->u.regs, s->reserved_regs); + } + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + } else if (ts->val_type == TEMP_VAL_CONST) { + if (ots->fixed_reg) { + reg = ots->reg; + tcg_out_movi(s, ots->type, reg, ts->val); + } else { + /* propagate constant */ + if (ots->val_type == TEMP_VAL_REG) + s->reg_to_temp[ots->reg] = -1; + ots->val_type = TEMP_VAL_CONST; + ots->val = ts->val; + return; + } + } else { + tcg_abort(); + } + s->reg_to_temp[reg] = args[0]; + ots->reg = reg; + ots->val_type = TEMP_VAL_REG; + ots->mem_coherent = 0; +} + +static void tcg_reg_alloc_op(TCGContext *s, + const TCGOpDef *def, int opc, + const TCGArg *args, + unsigned int dead_iargs) +{ + TCGRegSet allocated_regs; + int i, k, nb_iargs, nb_oargs, reg; + TCGArg arg; + const TCGArgConstraint *arg_ct; + TCGTemp *ts; + TCGArg new_args[TCG_MAX_OP_ARGS]; + int const_args[TCG_MAX_OP_ARGS]; + + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + + /* copy constants */ + memcpy(new_args + nb_oargs + nb_iargs, + args + nb_oargs + nb_iargs, + sizeof(TCGArg) * def->nb_cargs); + + /* satisfy input constraints */ + tcg_regset_set(allocated_regs, s->reserved_regs); + for(k = 0; k < nb_iargs; k++) { + i = def->sorted_args[nb_oargs + k]; + arg = args[i]; + arg_ct = &def->args_ct[i]; + ts = &s->temps[arg]; + if (ts->val_type == TEMP_VAL_MEM) { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + ts->mem_coherent = 1; + s->reg_to_temp[reg] = arg; + } else if (ts->val_type == TEMP_VAL_CONST) { + if (tcg_target_const_match(ts->val, arg_ct)) { + /* constant is OK for instruction */ + const_args[i] = 1; + new_args[i] = ts->val; + goto iarg_end; + } else { + /* need to move to a register */ + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_movi(s, ts->type, reg, ts->val); + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + ts->mem_coherent = 0; + s->reg_to_temp[reg] = arg; + } + } + assert(ts->val_type == TEMP_VAL_REG); + if (arg_ct->ct & TCG_CT_IALIAS) { + if (ts->fixed_reg) { + /* if fixed register, we must allocate a new register + if the alias is not the same register */ + if (arg != args[arg_ct->alias_index]) + goto allocate_in_reg; + } else { + /* if the input is aliased to an output and if it is + not dead after the instruction, we must allocate + a new register and move it */ + if (!IS_DEAD_IARG(i - nb_oargs)) + goto allocate_in_reg; + } + } + reg = ts->reg; + if (tcg_regset_test_reg(arg_ct->u.regs, reg)) { + /* nothing to do : the constraint is satisfied */ + } else { + allocate_in_reg: + /* allocate a new register matching the constraint + and move the temporary register into it */ + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_mov(s, reg, ts->reg); + } + new_args[i] = reg; + const_args[i] = 0; + tcg_regset_set_reg(allocated_regs, reg); + iarg_end: ; + } + + if (def->flags & TCG_OPF_BB_END) { + tcg_reg_alloc_bb_end(s, allocated_regs); + } else { + /* mark dead temporaries and free the associated registers */ + for(i = 0; i < nb_iargs; i++) { + arg = args[nb_oargs + i]; + if (IS_DEAD_IARG(i)) { + ts = &s->temps[arg]; + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } + } + } + + if (def->flags & TCG_OPF_CALL_CLOBBER) { + /* XXX: permit generic clobber register list ? */ + for(reg = 0; reg < TCG_TARGET_NB_REGS; reg++) { + if (tcg_regset_test_reg(tcg_target_call_clobber_regs, reg)) { + tcg_reg_free(s, reg); + } + } + /* XXX: for load/store we could do that only for the slow path + (i.e. when a memory callback is called) */ + + /* store globals and free associated registers (we assume the insn + can modify any global. */ + save_globals(s, allocated_regs); + } + + /* satisfy the output constraints */ + tcg_regset_set(allocated_regs, s->reserved_regs); + for(k = 0; k < nb_oargs; k++) { + i = def->sorted_args[k]; + arg = args[i]; + arg_ct = &def->args_ct[i]; + ts = &s->temps[arg]; + if (arg_ct->ct & TCG_CT_ALIAS) { + reg = new_args[arg_ct->alias_index]; + } else { + /* if fixed register, we try to use it */ + reg = ts->reg; + if (ts->fixed_reg && + tcg_regset_test_reg(arg_ct->u.regs, reg)) { + goto oarg_end; + } + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + } + tcg_regset_set_reg(allocated_regs, reg); + /* if a fixed register is used, then a move will be done afterwards */ + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + /* temp value is modified, so the value kept in memory is + potentially not the same */ + ts->mem_coherent = 0; + s->reg_to_temp[reg] = arg; + } + oarg_end: + new_args[i] = reg; + } + } + + /* emit instruction */ + tcg_out_op(s, opc, new_args, const_args); + + /* move the outputs in the correct register if needed */ + for(i = 0; i < nb_oargs; i++) { + ts = &s->temps[args[i]]; + reg = new_args[i]; + if (ts->fixed_reg && ts->reg != reg) { + tcg_out_mov(s, ts->reg, reg); + } + } +} + +#ifdef TCG_TARGET_STACK_GROWSUP +#define STACK_DIR(x) (-(x)) +#else +#define STACK_DIR(x) (x) +#endif + +static int tcg_reg_alloc_call(TCGContext *s, const TCGOpDef *def, + int opc, const TCGArg *args, + unsigned int dead_iargs) +{ + int nb_iargs, nb_oargs, flags, nb_regs, i, reg, nb_params; + TCGArg arg, func_arg; + TCGTemp *ts; + tcg_target_long stack_offset, call_stack_size, func_addr; + int const_func_arg, allocate_args; + TCGRegSet allocated_regs; + const TCGArgConstraint *arg_ct; + + arg = *args++; + + nb_oargs = arg >> 16; + nb_iargs = arg & 0xffff; + nb_params = nb_iargs - 1; + + flags = args[nb_oargs + nb_iargs]; + + nb_regs = tcg_target_get_call_iarg_regs_count(flags); + if (nb_regs > nb_params) + nb_regs = nb_params; + + /* assign stack slots first */ + /* XXX: preallocate call stack */ + call_stack_size = (nb_params - nb_regs) * sizeof(tcg_target_long); + call_stack_size = (call_stack_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + allocate_args = (call_stack_size > TCG_STATIC_CALL_ARGS_SIZE); + if (allocate_args) { + tcg_out_addi(s, TCG_REG_CALL_STACK, -STACK_DIR(call_stack_size)); + } + + stack_offset = TCG_TARGET_CALL_STACK_OFFSET; + for(i = nb_regs; i < nb_params; i++) { + arg = args[nb_oargs + i]; +#ifdef TCG_TARGET_STACK_GROWSUP + stack_offset -= sizeof(tcg_target_long); +#endif + if (arg != TCG_CALL_DUMMY_ARG) { + ts = &s->temps[arg]; + if (ts->val_type == TEMP_VAL_REG) { + tcg_out_st(s, ts->type, ts->reg, TCG_REG_CALL_STACK, stack_offset); + } else if (ts->val_type == TEMP_VAL_MEM) { + reg = tcg_reg_alloc(s, tcg_target_available_regs[ts->type], + s->reserved_regs); + /* XXX: not correct if reading values from the stack */ + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + tcg_out_st(s, ts->type, reg, TCG_REG_CALL_STACK, stack_offset); + } else if (ts->val_type == TEMP_VAL_CONST) { + reg = tcg_reg_alloc(s, tcg_target_available_regs[ts->type], + s->reserved_regs); + /* XXX: sign extend may be needed on some targets */ + tcg_out_movi(s, ts->type, reg, ts->val); + tcg_out_st(s, ts->type, reg, TCG_REG_CALL_STACK, stack_offset); + } else { + tcg_abort(); + } + } +#ifndef TCG_TARGET_STACK_GROWSUP + stack_offset += sizeof(tcg_target_long); +#endif + } + + /* assign input registers */ + tcg_regset_set(allocated_regs, s->reserved_regs); + for(i = 0; i < nb_regs; i++) { + arg = args[nb_oargs + i]; + if (arg != TCG_CALL_DUMMY_ARG) { + ts = &s->temps[arg]; + reg = tcg_target_call_iarg_regs[i]; + tcg_reg_free(s, reg); + if (ts->val_type == TEMP_VAL_REG) { + if (ts->reg != reg) { + tcg_out_mov(s, reg, ts->reg); + } + } else if (ts->val_type == TEMP_VAL_MEM) { + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + } else if (ts->val_type == TEMP_VAL_CONST) { + /* XXX: sign extend ? */ + tcg_out_movi(s, ts->type, reg, ts->val); + } else { + tcg_abort(); + } + tcg_regset_set_reg(allocated_regs, reg); + } + } + + /* assign function address */ + func_arg = args[nb_oargs + nb_iargs - 1]; + arg_ct = &def->args_ct[0]; + ts = &s->temps[func_arg]; + func_addr = ts->val; + const_func_arg = 0; + if (ts->val_type == TEMP_VAL_MEM) { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + func_arg = reg; + tcg_regset_set_reg(allocated_regs, reg); + } else if (ts->val_type == TEMP_VAL_REG) { + reg = ts->reg; + if (!tcg_regset_test_reg(arg_ct->u.regs, reg)) { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_mov(s, reg, ts->reg); + } + func_arg = reg; + tcg_regset_set_reg(allocated_regs, reg); + } else if (ts->val_type == TEMP_VAL_CONST) { + if (tcg_target_const_match(func_addr, arg_ct)) { + const_func_arg = 1; + func_arg = func_addr; + } else { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_movi(s, ts->type, reg, func_addr); + func_arg = reg; + tcg_regset_set_reg(allocated_regs, reg); + } + } else { + tcg_abort(); + } + + + /* mark dead temporaries and free the associated registers */ + for(i = 0; i < nb_iargs; i++) { + arg = args[nb_oargs + i]; + if (IS_DEAD_IARG(i)) { + ts = &s->temps[arg]; + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } + } + } + + /* clobber call registers */ + for(reg = 0; reg < TCG_TARGET_NB_REGS; reg++) { + if (tcg_regset_test_reg(tcg_target_call_clobber_regs, reg)) { + tcg_reg_free(s, reg); + } + } + + /* store globals and free associated registers (we assume the call + can modify any global. */ + if (!(flags & TCG_CALL_CONST)) { + save_globals(s, allocated_regs); + } + + tcg_out_op(s, opc, &func_arg, &const_func_arg); + + if (allocate_args) { + tcg_out_addi(s, TCG_REG_CALL_STACK, STACK_DIR(call_stack_size)); + } + + /* assign output registers and emit moves if needed */ + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + ts = &s->temps[arg]; + reg = tcg_target_call_oarg_regs[i]; + assert(s->reg_to_temp[reg] == -1); + if (ts->fixed_reg) { + if (ts->reg != reg) { + tcg_out_mov(s, ts->reg, reg); + } + } else { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + ts->mem_coherent = 0; + s->reg_to_temp[reg] = arg; + } + } + + return nb_iargs + nb_oargs + def->nb_cargs + 1; +} + +#ifdef CONFIG_PROFILER + +static int64_t tcg_table_op_count[NB_OPS]; + +static void dump_op_count(void) +{ + int i; + FILE *f; + f = fopen("/tmp/op.log", "w"); + for(i = INDEX_op_end; i < NB_OPS; i++) { + fprintf(f, "%s %" PRId64 "\n", tcg_op_defs[i].name, tcg_table_op_count[i]); + } + fclose(f); +} +#endif + + +static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, + long search_pc) +{ + int opc, op_index; + const TCGOpDef *def; + unsigned int dead_iargs; + const TCGArg *args; + +#ifdef DEBUG_DISAS + if (unlikely(qemu_loglevel_mask(CPU_LOG_TB_OP))) { + qemu_log("OP:\n"); + tcg_dump_ops(s, logfile); + qemu_log("\n"); + } +#endif + +#ifdef CONFIG_PROFILER + s->la_time -= profile_getclock(); +#endif + tcg_liveness_analysis(s); +#ifdef CONFIG_PROFILER + s->la_time += profile_getclock(); +#endif + +#ifdef DEBUG_DISAS + if (unlikely(qemu_loglevel_mask(CPU_LOG_TB_OP_OPT))) { + qemu_log("OP after liveness analysis:\n"); + tcg_dump_ops(s, logfile); + qemu_log("\n"); + } +#endif + + tcg_reg_alloc_start(s); + + s->code_buf = gen_code_buf; + s->code_ptr = gen_code_buf; + + args = gen_opparam_buf; + op_index = 0; + + for(;;) { + opc = gen_opc_buf[op_index]; +#ifdef CONFIG_PROFILER + tcg_table_op_count[opc]++; +#endif + def = &tcg_op_defs[opc]; +#if 0 + printf("%s: %d %d %d\n", def->name, + def->nb_oargs, def->nb_iargs, def->nb_cargs); + // dump_regs(s); +#endif + switch(opc) { + case INDEX_op_mov_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_mov_i64: +#endif + dead_iargs = s->op_dead_iargs[op_index]; + tcg_reg_alloc_mov(s, def, args, dead_iargs); + break; + case INDEX_op_movi_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_movi_i64: +#endif + tcg_reg_alloc_movi(s, args); + break; + case INDEX_op_debug_insn_start: + /* debug instruction */ + break; + case INDEX_op_nop: + case INDEX_op_nop1: + case INDEX_op_nop2: + case INDEX_op_nop3: + break; + case INDEX_op_nopn: + args += args[0]; + goto next; + case INDEX_op_discard: + { + TCGTemp *ts; + ts = &s->temps[args[0]]; + /* mark the temporary as dead */ + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } + } + break; + case INDEX_op_set_label: + tcg_reg_alloc_bb_end(s, s->reserved_regs); + tcg_out_label(s, args[0], (long)s->code_ptr); + break; + case INDEX_op_call: + dead_iargs = s->op_dead_iargs[op_index]; + args += tcg_reg_alloc_call(s, def, opc, args, dead_iargs); + goto next; + case INDEX_op_end: + goto the_end; + default: + /* Note: in order to speed up the code, it would be much + faster to have specialized register allocator functions for + some common argument patterns */ + dead_iargs = s->op_dead_iargs[op_index]; + tcg_reg_alloc_op(s, def, opc, args, dead_iargs); + break; + } + args += def->nb_args; + next: + if (search_pc >= 0 && search_pc < s->code_ptr - gen_code_buf) { + return op_index; + } + op_index++; +#ifndef NDEBUG + check_regs(s); +#endif + } + the_end: + return -1; +} + +int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf) +{ +#ifdef CONFIG_PROFILER + { + int n; + n = (gen_opc_ptr - gen_opc_buf); + s->op_count += n; + if (n > s->op_count_max) + s->op_count_max = n; + + s->temp_count += s->nb_temps; + if (s->nb_temps > s->temp_count_max) + s->temp_count_max = s->nb_temps; + } +#endif + + tcg_gen_code_common(s, gen_code_buf, -1); + + /* flush instruction cache */ + flush_icache_range((unsigned long)gen_code_buf, + (unsigned long)s->code_ptr); + return s->code_ptr - gen_code_buf; +} + +/* Return the index of the micro operation such as the pc after is < + offset bytes from the start of the TB. The contents of gen_code_buf must + not be changed, though writing the same values is ok. + Return -1 if not found. */ +int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset) +{ + return tcg_gen_code_common(s, gen_code_buf, offset); +} + +#ifdef CONFIG_PROFILER +void tcg_dump_info(FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...)) +{ + TCGContext *s = &tcg_ctx; + int64_t tot; + + tot = s->interm_time + s->code_time; + cpu_fprintf(f, "JIT cycles %" PRId64 " (%0.3f s at 2.4 GHz)\n", + tot, tot / 2.4e9); + cpu_fprintf(f, "translated TBs %" PRId64 " (aborted=%" PRId64 " %0.1f%%)\n", + s->tb_count, + s->tb_count1 - s->tb_count, + s->tb_count1 ? (double)(s->tb_count1 - s->tb_count) / s->tb_count1 * 100.0 : 0); + cpu_fprintf(f, "avg ops/TB %0.1f max=%d\n", + s->tb_count ? (double)s->op_count / s->tb_count : 0, s->op_count_max); + cpu_fprintf(f, "deleted ops/TB %0.2f\n", + s->tb_count ? + (double)s->del_op_count / s->tb_count : 0); + cpu_fprintf(f, "avg temps/TB %0.2f max=%d\n", + s->tb_count ? + (double)s->temp_count / s->tb_count : 0, + s->temp_count_max); + + cpu_fprintf(f, "cycles/op %0.1f\n", + s->op_count ? (double)tot / s->op_count : 0); + cpu_fprintf(f, "cycles/in byte %0.1f\n", + s->code_in_len ? (double)tot / s->code_in_len : 0); + cpu_fprintf(f, "cycles/out byte %0.1f\n", + s->code_out_len ? (double)tot / s->code_out_len : 0); + if (tot == 0) + tot = 1; + cpu_fprintf(f, " gen_interm time %0.1f%%\n", + (double)s->interm_time / tot * 100.0); + cpu_fprintf(f, " gen_code time %0.1f%%\n", + (double)s->code_time / tot * 100.0); + cpu_fprintf(f, "liveness/code time %0.1f%%\n", + (double)s->la_time / (s->code_time ? s->code_time : 1) * 100.0); + cpu_fprintf(f, "cpu_restore count %" PRId64 "\n", + s->restore_count); + cpu_fprintf(f, " avg cycles %0.1f\n", + s->restore_count ? (double)s->restore_time / s->restore_count : 0); + + dump_op_count(); +} +#else +void tcg_dump_info(FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...)) +{ + cpu_fprintf(f, "[TCG profiler not compiled]\n"); +} +#endif diff --git a/qemu/qemu-git/tcg/.svn/text-base/tcg.h.svn-base b/qemu/qemu-git/tcg/.svn/text-base/tcg.h.svn-base new file mode 100644 index 0000000..121b17c --- /dev/null +++ b/qemu/qemu-git/tcg/.svn/text-base/tcg.h.svn-base @@ -0,0 +1,468 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "qemu-common.h" +#include "tcg-target.h" +#include "tcg-runtime.h" + +#if TCG_TARGET_REG_BITS == 32 +typedef int32_t tcg_target_long; +typedef uint32_t tcg_target_ulong; +#define TCG_PRIlx PRIx32 +#define TCG_PRIld PRId32 +#elif TCG_TARGET_REG_BITS == 64 +typedef int64_t tcg_target_long; +typedef uint64_t tcg_target_ulong; +#define TCG_PRIlx PRIx64 +#define TCG_PRIld PRId64 +#else +#error unsupported +#endif + +#if TCG_TARGET_NB_REGS <= 32 +typedef uint32_t TCGRegSet; +#elif TCG_TARGET_NB_REGS <= 64 +typedef uint64_t TCGRegSet; +#else +#error unsupported +#endif + +enum { +#define DEF(s, n, copy_size) INDEX_op_ ## s, +#include "tcg-opc.h" +#undef DEF + NB_OPS, +}; + +#define tcg_regset_clear(d) (d) = 0 +#define tcg_regset_set(d, s) (d) = (s) +#define tcg_regset_set32(d, reg, val32) (d) |= (val32) << (reg) +#define tcg_regset_set_reg(d, r) (d) |= 1L << (r) +#define tcg_regset_reset_reg(d, r) (d) &= ~(1L << (r)) +#define tcg_regset_test_reg(d, r) (((d) >> (r)) & 1) +#define tcg_regset_or(d, a, b) (d) = (a) | (b) +#define tcg_regset_and(d, a, b) (d) = (a) & (b) +#define tcg_regset_andnot(d, a, b) (d) = (a) & ~(b) +#define tcg_regset_not(d, a) (d) = ~(a) + +typedef struct TCGRelocation { + struct TCGRelocation *next; + int type; + uint8_t *ptr; + tcg_target_long addend; +} TCGRelocation; + +typedef struct TCGLabel { + int has_value; + union { + tcg_target_ulong value; + TCGRelocation *first_reloc; + } u; +} TCGLabel; + +typedef struct TCGPool { + struct TCGPool *next; + int size; + uint8_t data[0] __attribute__ ((aligned)); +} TCGPool; + +#define TCG_POOL_CHUNK_SIZE 32768 + +#define TCG_MAX_LABELS 512 + +#define TCG_MAX_TEMPS 512 + +/* when the size of the arguments of a called function is smaller than + this value, they are statically allocated in the TB stack frame */ +#define TCG_STATIC_CALL_ARGS_SIZE 128 + +typedef int TCGType; + +#define TCG_TYPE_I32 0 +#define TCG_TYPE_I64 1 +#define TCG_TYPE_COUNT 2 /* number of different types */ + +#if TCG_TARGET_REG_BITS == 32 +#define TCG_TYPE_PTR TCG_TYPE_I32 +#else +#define TCG_TYPE_PTR TCG_TYPE_I64 +#endif + +typedef tcg_target_ulong TCGArg; + +/* Define a type and accessor macros for varables. Using a struct is + nice because it gives some level of type safely. Ideally the compiler + be able to see through all this. However in practice this is not true, + expecially on targets with braindamaged ABIs (e.g. i386). + We use plain int by default to avoid this runtime overhead. + Users of tcg_gen_* don't need to know about any of this, and should + treat TCGv as an opaque type. + In additon we do typechecking for different types of variables. TCGv_i32 + and TCGv_i64 are 32/64-bit variables respectively. TCGv and TCGv_ptr + are aliases for target_ulong and host pointer sized values respectively. + */ + +#ifdef CONFIG_DEBUG_TCG +#define DEBUG_TCGV 1 +#endif + +#ifdef DEBUG_TCGV + +typedef struct +{ + int i32; +} TCGv_i32; + +typedef struct +{ + int i64; +} TCGv_i64; + +#define MAKE_TCGV_I32(i) __extension__ \ + ({ TCGv_i32 make_tcgv_tmp = {i}; make_tcgv_tmp;}) +#define MAKE_TCGV_I64(i) __extension__ \ + ({ TCGv_i64 make_tcgv_tmp = {i}; make_tcgv_tmp;}) +#define GET_TCGV_I32(t) ((t).i32) +#define GET_TCGV_I64(t) ((t).i64) +#if TCG_TARGET_REG_BITS == 32 +#define TCGV_LOW(t) MAKE_TCGV_I32(GET_TCGV_I64(t)) +#define TCGV_HIGH(t) MAKE_TCGV_I32(GET_TCGV_I64(t) + 1) +#endif + +#else /* !DEBUG_TCGV */ + +typedef int TCGv_i32; +typedef int TCGv_i64; +#define MAKE_TCGV_I32(x) (x) +#define MAKE_TCGV_I64(x) (x) +#define GET_TCGV_I32(t) (t) +#define GET_TCGV_I64(t) (t) + +#if TCG_TARGET_REG_BITS == 32 +#define TCGV_LOW(t) (t) +#define TCGV_HIGH(t) ((t) + 1) +#endif + +#endif /* DEBUG_TCGV */ + +#define TCGV_EQUAL_I32(a, b) (GET_TCGV_I32(a) == GET_TCGV_I32(b)) +#define TCGV_EQUAL_I64(a, b) (GET_TCGV_I64(a) == GET_TCGV_I64(b)) + +/* Dummy definition to avoid compiler warnings. */ +#define TCGV_UNUSED_I32(x) x = MAKE_TCGV_I32(-1) +#define TCGV_UNUSED_I64(x) x = MAKE_TCGV_I64(-1) + +/* call flags */ +#define TCG_CALL_TYPE_MASK 0x000f +#define TCG_CALL_TYPE_STD 0x0000 /* standard C call */ +#define TCG_CALL_TYPE_REGPARM_1 0x0001 /* i386 style regparm call (1 reg) */ +#define TCG_CALL_TYPE_REGPARM_2 0x0002 /* i386 style regparm call (2 regs) */ +#define TCG_CALL_TYPE_REGPARM 0x0003 /* i386 style regparm call (3 regs) */ +/* A pure function only reads its arguments and TCG global variables + and cannot raise exceptions. Hence a call to a pure function can be + safely suppressed if the return value is not used. */ +#define TCG_CALL_PURE 0x0010 +/* A const function only reads its arguments and does not use TCG + global variables. Hence a call to such a function does not + save TCG global variables back to their canonical location. */ +#define TCG_CALL_CONST 0x0020 + +/* used to align parameters */ +#define TCG_CALL_DUMMY_TCGV MAKE_TCGV_I32(-1) +#define TCG_CALL_DUMMY_ARG ((TCGArg)(-1)) + +typedef enum { + TCG_COND_EQ, + TCG_COND_NE, + TCG_COND_LT, + TCG_COND_GE, + TCG_COND_LE, + TCG_COND_GT, + /* unsigned */ + TCG_COND_LTU, + TCG_COND_GEU, + TCG_COND_LEU, + TCG_COND_GTU, +} TCGCond; + +static inline TCGCond tcg_unsigned_cond(TCGCond c) +{ + return (c >= TCG_COND_LT && c <= TCG_COND_GT ? c + 4 : c); +} + +#define TEMP_VAL_DEAD 0 +#define TEMP_VAL_REG 1 +#define TEMP_VAL_MEM 2 +#define TEMP_VAL_CONST 3 + +/* XXX: optimize memory layout */ +typedef struct TCGTemp { + TCGType base_type; + TCGType type; + int val_type; + int reg; + tcg_target_long val; + int mem_reg; + tcg_target_long mem_offset; + unsigned int fixed_reg:1; + unsigned int mem_coherent:1; + unsigned int mem_allocated:1; + unsigned int temp_local:1; /* If true, the temp is saved accross + basic blocks. Otherwise, it is not + preserved accross basic blocks. */ + unsigned int temp_allocated:1; /* never used for code gen */ + /* index of next free temp of same base type, -1 if end */ + int next_free_temp; + const char *name; +} TCGTemp; + +typedef struct TCGHelperInfo { + tcg_target_ulong func; + const char *name; +} TCGHelperInfo; + +typedef struct TCGContext TCGContext; + +struct TCGContext { + uint8_t *pool_cur, *pool_end; + TCGPool *pool_first, *pool_current; + TCGLabel *labels; + int nb_labels; + TCGTemp *temps; /* globals first, temps after */ + int nb_globals; + int nb_temps; + /* index of free temps, -1 if none */ + int first_free_temp[TCG_TYPE_COUNT * 2]; + + /* goto_tb support */ + uint8_t *code_buf; + unsigned long *tb_next; + uint16_t *tb_next_offset; + uint16_t *tb_jmp_offset; /* != NULL if USE_DIRECT_JUMP */ + + /* liveness analysis */ + uint16_t *op_dead_iargs; /* for each operation, each bit tells if the + corresponding input argument is dead */ + + /* tells in which temporary a given register is. It does not take + into account fixed registers */ + int reg_to_temp[TCG_TARGET_NB_REGS]; + TCGRegSet reserved_regs; + tcg_target_long current_frame_offset; + tcg_target_long frame_start; + tcg_target_long frame_end; + int frame_reg; + + uint8_t *code_ptr; + TCGTemp static_temps[TCG_MAX_TEMPS]; + + TCGHelperInfo *helpers; + int nb_helpers; + int allocated_helpers; + int helpers_sorted; + +#ifdef CONFIG_PROFILER + /* profiling info */ + int64_t tb_count1; + int64_t tb_count; + int64_t op_count; /* total insn count */ + int op_count_max; /* max insn per TB */ + int64_t temp_count; + int temp_count_max; + int64_t del_op_count; + int64_t code_in_len; + int64_t code_out_len; + int64_t interm_time; + int64_t code_time; + int64_t la_time; + int64_t restore_count; + int64_t restore_time; +#endif +}; + +extern TCGContext tcg_ctx; +extern uint16_t *gen_opc_ptr; +extern TCGArg *gen_opparam_ptr; +extern uint16_t gen_opc_buf[]; +extern TCGArg gen_opparam_buf[]; + +/* pool based memory allocation */ + +void *tcg_malloc_internal(TCGContext *s, int size); +void tcg_pool_reset(TCGContext *s); +void tcg_pool_delete(TCGContext *s); + +static inline void *tcg_malloc(int size) +{ + TCGContext *s = &tcg_ctx; + uint8_t *ptr, *ptr_end; + size = (size + sizeof(long) - 1) & ~(sizeof(long) - 1); + ptr = s->pool_cur; + ptr_end = ptr + size; + if (unlikely(ptr_end > s->pool_end)) { + return tcg_malloc_internal(&tcg_ctx, size); + } else { + s->pool_cur = ptr_end; + return ptr; + } +} + +void tcg_context_init(TCGContext *s); +void tcg_func_start(TCGContext *s); + +int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf); +int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset); + +void tcg_set_frame(TCGContext *s, int reg, + tcg_target_long start, tcg_target_long size); + +TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name); +TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset, + const char *name); +TCGv_i32 tcg_temp_new_internal_i32(int temp_local); +static inline TCGv_i32 tcg_temp_new_i32(void) +{ + return tcg_temp_new_internal_i32(0); +} +static inline TCGv_i32 tcg_temp_local_new_i32(void) +{ + return tcg_temp_new_internal_i32(1); +} +void tcg_temp_free_i32(TCGv_i32 arg); +char *tcg_get_arg_str_i32(TCGContext *s, char *buf, int buf_size, TCGv_i32 arg); + +TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name); +TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset, + const char *name); +TCGv_i64 tcg_temp_new_internal_i64(int temp_local); +static inline TCGv_i64 tcg_temp_new_i64(void) +{ + return tcg_temp_new_internal_i64(0); +} +static inline TCGv_i64 tcg_temp_local_new_i64(void) +{ + return tcg_temp_new_internal_i64(1); +} +void tcg_temp_free_i64(TCGv_i64 arg); +char *tcg_get_arg_str_i64(TCGContext *s, char *buf, int buf_size, TCGv_i64 arg); + +void tcg_dump_info(FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...)); + +#define TCG_CT_ALIAS 0x80 +#define TCG_CT_IALIAS 0x40 +#define TCG_CT_REG 0x01 +#define TCG_CT_CONST 0x02 /* any constant of register size */ + +typedef struct TCGArgConstraint { + uint16_t ct; + uint8_t alias_index; + union { + TCGRegSet regs; + } u; +} TCGArgConstraint; + +#define TCG_MAX_OP_ARGS 16 + +#define TCG_OPF_BB_END 0x01 /* instruction defines the end of a basic + block */ +#define TCG_OPF_CALL_CLOBBER 0x02 /* instruction clobbers call registers + and potentially update globals. */ +#define TCG_OPF_SIDE_EFFECTS 0x04 /* instruction has side effects : it + cannot be removed if its output + are not used */ + +typedef struct TCGOpDef { + const char *name; + uint8_t nb_oargs, nb_iargs, nb_cargs, nb_args; + uint8_t flags; + uint16_t copy_size; + TCGArgConstraint *args_ct; + int *sorted_args; +} TCGOpDef; + +typedef struct TCGTargetOpDef { + int op; + const char *args_ct_str[TCG_MAX_OP_ARGS]; +} TCGTargetOpDef; + +void tcg_target_init(TCGContext *s); +void tcg_target_qemu_prologue(TCGContext *s); + +#define tcg_abort() \ +do {\ + fprintf(stderr, "%s:%d: tcg fatal error\n", __FILE__, __LINE__);\ + abort();\ +} while (0) + +void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs); + +#if TCG_TARGET_REG_BITS == 32 +#define tcg_const_ptr tcg_const_i32 +#define tcg_add_ptr tcg_add_i32 +#define tcg_sub_ptr tcg_sub_i32 +#define TCGv_ptr TCGv_i32 +#define GET_TCGV_PTR GET_TCGV_I32 +#define tcg_global_reg_new_ptr tcg_global_reg_new_i32 +#define tcg_global_mem_new_ptr tcg_global_mem_new_i32 +#define tcg_temp_new_ptr tcg_temp_new_i32 +#define tcg_temp_free_ptr tcg_temp_free_i32 +#else +#define tcg_const_ptr tcg_const_i64 +#define tcg_add_ptr tcg_add_i64 +#define tcg_sub_ptr tcg_sub_i64 +#define TCGv_ptr TCGv_i64 +#define GET_TCGV_PTR GET_TCGV_I64 +#define tcg_global_reg_new_ptr tcg_global_reg_new_i64 +#define tcg_global_mem_new_ptr tcg_global_mem_new_i64 +#define tcg_temp_new_ptr tcg_temp_new_i64 +#define tcg_temp_free_ptr tcg_temp_free_i64 +#endif + +void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags, + int sizemask, TCGArg ret, int nargs, TCGArg *args); + +void tcg_gen_shifti_i64(TCGv_i64 ret, TCGv_i64 arg1, + int c, int right, int arith); + +/* only used for debugging purposes */ +void tcg_register_helper(void *func, const char *name); +const char *tcg_helper_get_name(TCGContext *s, void *func); +void tcg_dump_ops(TCGContext *s, FILE *outfile); + +void dump_ops(const uint16_t *opc_buf, const TCGArg *opparam_buf); +TCGv_i32 tcg_const_i32(int32_t val); +TCGv_i64 tcg_const_i64(int64_t val); +TCGv_i32 tcg_const_local_i32(int32_t val); +TCGv_i64 tcg_const_local_i64(int64_t val); + +void tcg_out_reloc(TCGContext *s, uint8_t *code_ptr, int type, + int label_index, long addend); + +extern uint8_t code_gen_prologue[]; +#if defined(_ARCH_PPC) && !defined(_ARCH_PPC64) +#define tcg_qemu_tb_exec(tb_ptr) \ + ((long REGPARM __attribute__ ((longcall)) (*)(void *))code_gen_prologue)(tb_ptr) +#else +#define tcg_qemu_tb_exec(tb_ptr) ((long REGPARM (*)(void *))code_gen_prologue)(tb_ptr) +#endif diff --git a/qemu/qemu-git/tcg/LICENSE b/qemu/qemu-git/tcg/LICENSE new file mode 100644 index 0000000..be817fa --- /dev/null +++ b/qemu/qemu-git/tcg/LICENSE @@ -0,0 +1,3 @@ +All the files in this directory and subdirectories are released under +a BSD like license (see header in each file). No other license is +accepted. diff --git a/qemu/qemu-git/tcg/README b/qemu/qemu-git/tcg/README new file mode 100644 index 0000000..e672258 --- /dev/null +++ b/qemu/qemu-git/tcg/README @@ -0,0 +1,454 @@ +Tiny Code Generator - Fabrice Bellard. + +1) Introduction + +TCG (Tiny Code Generator) began as a generic backend for a C +compiler. It was simplified to be used in QEMU. It also has its roots +in the QOP code generator written by Paul Brook. + +2) Definitions + +The TCG "target" is the architecture for which we generate the +code. It is of course not the same as the "target" of QEMU which is +the emulated architecture. As TCG started as a generic C backend used +for cross compiling, it is assumed that the TCG target is different +from the host, although it is never the case for QEMU. + +A TCG "function" corresponds to a QEMU Translated Block (TB). + +A TCG "temporary" is a variable only live in a basic +block. Temporaries are allocated explicitly in each function. + +A TCG "local temporary" is a variable only live in a function. Local +temporaries are allocated explicitly in each function. + +A TCG "global" is a variable which is live in all the functions +(equivalent of a C global variable). They are defined before the +functions defined. A TCG global can be a memory location (e.g. a QEMU +CPU register), a fixed host register (e.g. the QEMU CPU state pointer) +or a memory location which is stored in a register outside QEMU TBs +(not implemented yet). + +A TCG "basic block" corresponds to a list of instructions terminated +by a branch instruction. + +3) Intermediate representation + +3.1) Introduction + +TCG instructions operate on variables which are temporaries, local +temporaries or globals. TCG instructions and variables are strongly +typed. Two types are supported: 32 bit integers and 64 bit +integers. Pointers are defined as an alias to 32 bit or 64 bit +integers depending on the TCG target word size. + +Each instruction has a fixed number of output variable operands, input +variable operands and always constant operands. + +The notable exception is the call instruction which has a variable +number of outputs and inputs. + +In the textual form, output operands usually come first, followed by +input operands, followed by constant operands. The output type is +included in the instruction name. Constants are prefixed with a '$'. + +add_i32 t0, t1, t2 (t0 <- t1 + t2) + +3.2) Assumptions + +* Basic blocks + +- Basic blocks end after branches (e.g. brcond_i32 instruction), + goto_tb and exit_tb instructions. +- Basic blocks start after the end of a previous basic block, or at a + set_label instruction. + +After the end of a basic block, the content of temporaries is +destroyed, but local temporaries and globals are preserved. + +* Floating point types are not supported yet + +* Pointers: depending on the TCG target, pointer size is 32 bit or 64 + bit. The type TCG_TYPE_PTR is an alias to TCG_TYPE_I32 or + TCG_TYPE_I64. + +* Helpers: + +Using the tcg_gen_helper_x_y it is possible to call any function +taking i32, i64 or pointer types. Before calling an helper, all +globals are stored at their canonical location and it is assumed that +the function can modify them. In the future, function modifiers will +be allowed to tell that the helper does not read or write some globals. + +On some TCG targets (e.g. x86), several calling conventions are +supported. + +* Branches: + +Use the instruction 'br' to jump to a label. Use 'jmp' to jump to an +explicit address. Conditional branches can only jump to labels. + +3.3) Code Optimizations + +When generating instructions, you can count on at least the following +optimizations: + +- Single instructions are simplified, e.g. + + and_i32 t0, t0, $0xffffffff + + is suppressed. + +- A liveness analysis is done at the basic block level. The + information is used to suppress moves from a dead variable to + another one. It is also used to remove instructions which compute + dead results. The later is especially useful for condition code + optimization in QEMU. + + In the following example: + + add_i32 t0, t1, t2 + add_i32 t0, t0, $1 + mov_i32 t0, $1 + + only the last instruction is kept. + +3.4) Instruction Reference + +********* Function call + +* call ptr + +call function 'ptr' (pointer type) + + optional 32 bit or 64 bit return value + optional 32 bit or 64 bit parameters + +********* Jumps/Labels + +* jmp t0 + +Absolute jump to address t0 (pointer type). + +* set_label $label + +Define label 'label' at the current program point. + +* br $label + +Jump to label. + +* brcond_i32/i64 cond, t0, t1, label + +Conditional jump if t0 cond t1 is true. cond can be: + TCG_COND_EQ + TCG_COND_NE + TCG_COND_LT /* signed */ + TCG_COND_GE /* signed */ + TCG_COND_LE /* signed */ + TCG_COND_GT /* signed */ + TCG_COND_LTU /* unsigned */ + TCG_COND_GEU /* unsigned */ + TCG_COND_LEU /* unsigned */ + TCG_COND_GTU /* unsigned */ + +********* Arithmetic + +* add_i32/i64 t0, t1, t2 + +t0=t1+t2 + +* sub_i32/i64 t0, t1, t2 + +t0=t1-t2 + +* neg_i32/i64 t0, t1 + +t0=-t1 (two's complement) + +* mul_i32/i64 t0, t1, t2 + +t0=t1*t2 + +* div_i32/i64 t0, t1, t2 + +t0=t1/t2 (signed). Undefined behavior if division by zero or overflow. + +* divu_i32/i64 t0, t1, t2 + +t0=t1/t2 (unsigned). Undefined behavior if division by zero. + +* rem_i32/i64 t0, t1, t2 + +t0=t1%t2 (signed). Undefined behavior if division by zero or overflow. + +* remu_i32/i64 t0, t1, t2 + +t0=t1%t2 (unsigned). Undefined behavior if division by zero. + +********* Logical + +* and_i32/i64 t0, t1, t2 + +t0=t1&t2 + +* or_i32/i64 t0, t1, t2 + +t0=t1|t2 + +* xor_i32/i64 t0, t1, t2 + +t0=t1^t2 + +* not_i32/i64 t0, t1 + +t0=~t1 + +* andc_i32/i64 t0, t1, t2 + +t0=t1&~t2 + +* eqv_i32/i64 t0, t1, t2 + +t0=~(t1^t2) + +* nand_i32/i64 t0, t1, t2 + +t0=~(t1&t2) + +* nor_i32/i64 t0, t1, t2 + +t0=~(t1|t2) + +* orc_i32/i64 t0, t1, t2 + +t0=t1|~t2 + +********* Shifts/Rotates + +* shl_i32/i64 t0, t1, t2 + +t0=t1 << t2. Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* shr_i32/i64 t0, t1, t2 + +t0=t1 >> t2 (unsigned). Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* sar_i32/i64 t0, t1, t2 + +t0=t1 >> t2 (signed). Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* rotl_i32/i64 t0, t1, t2 + +Rotation of t2 bits to the left. Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +* rotr_i32/i64 t0, t1, t2 + +Rotation of t2 bits to the right. Undefined behavior if t2 < 0 or t2 >= 32 (resp 64) + +********* Misc + +* mov_i32/i64 t0, t1 + +t0 = t1 + +Move t1 to t0 (both operands must have the same type). + +* ext8s_i32/i64 t0, t1 +ext8u_i32/i64 t0, t1 +ext16s_i32/i64 t0, t1 +ext16u_i32/i64 t0, t1 +ext32s_i64 t0, t1 +ext32u_i64 t0, t1 + +8, 16 or 32 bit sign/zero extension (both operands must have the same type) + +* bswap16_i32/i64 t0, t1 + +16 bit byte swap on a 32/64 bit value. The two/six high order bytes must be +set to zero. + +* bswap32_i32/i64 t0, t1 + +32 bit byte swap on a 32/64 bit value. With a 64 bit value, the four high +order bytes must be set to zero. + +* bswap64_i64 t0, t1 + +64 bit byte swap + +* discard_i32/i64 t0 + +Indicate that the value of t0 won't be used later. It is useful to +force dead code elimination. + +********* Type conversions + +* ext_i32_i64 t0, t1 +Convert t1 (32 bit) to t0 (64 bit) and does sign extension + +* extu_i32_i64 t0, t1 +Convert t1 (32 bit) to t0 (64 bit) and does zero extension + +* trunc_i64_i32 t0, t1 +Truncate t1 (64 bit) to t0 (32 bit) + +* concat_i32_i64 t0, t1, t2 +Construct t0 (64-bit) taking the low half from t1 (32 bit) and the high half +from t2 (32 bit). + +* concat32_i64 t0, t1, t2 +Construct t0 (64-bit) taking the low half from t1 (64 bit) and the high half +from t2 (64 bit). + +********* Load/Store + +* ld_i32/i64 t0, t1, offset +ld8s_i32/i64 t0, t1, offset +ld8u_i32/i64 t0, t1, offset +ld16s_i32/i64 t0, t1, offset +ld16u_i32/i64 t0, t1, offset +ld32s_i64 t0, t1, offset +ld32u_i64 t0, t1, offset + +t0 = read(t1 + offset) +Load 8, 16, 32 or 64 bits with or without sign extension from host memory. +offset must be a constant. + +* st_i32/i64 t0, t1, offset +st8_i32/i64 t0, t1, offset +st16_i32/i64 t0, t1, offset +st32_i64 t0, t1, offset + +write(t0, t1 + offset) +Write 8, 16, 32 or 64 bits to host memory. + +********* QEMU specific operations + +* tb_exit t0 + +Exit the current TB and return the value t0 (word type). + +* goto_tb index + +Exit the current TB and jump to the TB index 'index' (constant) if the +current TB was linked to this TB. Otherwise execute the next +instructions. + +* qemu_ld8u t0, t1, flags +qemu_ld8s t0, t1, flags +qemu_ld16u t0, t1, flags +qemu_ld16s t0, t1, flags +qemu_ld32u t0, t1, flags +qemu_ld32s t0, t1, flags +qemu_ld64 t0, t1, flags + +Load data at the QEMU CPU address t1 into t0. t1 has the QEMU CPU +address type. 'flags' contains the QEMU memory index (selects user or +kernel access) for example. + +* qemu_st8 t0, t1, flags +qemu_st16 t0, t1, flags +qemu_st32 t0, t1, flags +qemu_st64 t0, t1, flags + +Store the data t0 at the QEMU CPU Address t1. t1 has the QEMU CPU +address type. 'flags' contains the QEMU memory index (selects user or +kernel access) for example. + +Note 1: Some shortcuts are defined when the last operand is known to be +a constant (e.g. addi for add, movi for mov). + +Note 2: When using TCG, the opcodes must never be generated directly +as some of them may not be available as "real" opcodes. Always use the +function tcg_gen_xxx(args). + +4) Backend + +tcg-target.h contains the target specific definitions. tcg-target.c +contains the target specific code. + +4.1) Assumptions + +The target word size (TCG_TARGET_REG_BITS) is expected to be 32 bit or +64 bit. It is expected that the pointer has the same size as the word. + +On a 32 bit target, all 64 bit operations are converted to 32 bits. A +few specific operations must be implemented to allow it (see add2_i32, +sub2_i32, brcond2_i32). + +Floating point operations are not supported in this version. A +previous incarnation of the code generator had full support of them, +but it is better to concentrate on integer operations first. + +On a 64 bit target, no assumption is made in TCG about the storage of +the 32 bit values in 64 bit registers. + +4.2) Constraints + +GCC like constraints are used to define the constraints of every +instruction. Memory constraints are not supported in this +version. Aliases are specified in the input operands as for GCC. + +The same register may be used for both an input and an output, even when +they are not explicitly aliased. If an op expands to multiple target +instructions then care must be taken to avoid clobbering input values. +GCC style "early clobber" outputs are not currently supported. + +A target can define specific register or constant constraints. If an +operation uses a constant input constraint which does not allow all +constants, it must also accept registers in order to have a fallback. + +The movi_i32 and movi_i64 operations must accept any constants. + +The mov_i32 and mov_i64 operations must accept any registers of the +same type. + +The ld/st instructions must accept signed 32 bit constant offsets. It +can be implemented by reserving a specific register to compute the +address if the offset is too big. + +The ld/st instructions must accept any destination (ld) or source (st) +register. + +4.3) Function call assumptions + +- The only supported types for parameters and return value are: 32 and + 64 bit integers and pointer. +- The stack grows downwards. +- The first N parameters are passed in registers. +- The next parameters are passed on the stack by storing them as words. +- Some registers are clobbered during the call. +- The function can return 0 or 1 value in registers. On a 32 bit + target, functions must be able to return 2 values in registers for + 64 bit return type. + +5) Recommended coding rules for best performance + +- Use globals to represent the parts of the QEMU CPU state which are + often modified, e.g. the integer registers and the condition + codes. TCG will be able to use host registers to store them. + +- Avoid globals stored in fixed registers. They must be used only to + store the pointer to the CPU state and possibly to store a pointer + to a register window. + +- Use temporaries. Use local temporaries only when really needed, + e.g. when you need to use a value after a jump. Local temporaries + introduce a performance hit in the current TCG implementation: their + content is saved to memory at end of each basic block. + +- Free temporaries and local temporaries when they are no longer used + (tcg_temp_free). Since tcg_const_x() also creates a temporary, you + should free it after it is used. Freeing temporaries does not yield + a better generated code, but it reduces the memory usage of TCG and + the speed of the translation. + +- Don't hesitate to use helpers for complicated or seldom used target + intructions. There is little performance advantage in using TCG to + implement target instructions taking more than about twenty TCG + instructions. + +- Use the 'discard' instruction if you know that TCG won't be able to + prove that a given global is "dead" at a given program point. The + x86 target uses it to improve the condition codes optimisation. diff --git a/qemu/qemu-git/tcg/TODO b/qemu/qemu-git/tcg/TODO new file mode 100644 index 0000000..f30cb75 --- /dev/null +++ b/qemu/qemu-git/tcg/TODO @@ -0,0 +1,14 @@ +- Add new instructions such as: setcond, clz, ctz, popcnt. + +- See if it is worth exporting mul2, mulu2, div2, divu2. + +- Support of globals saved in fixed registers between TBs. + +Ideas: + +- Move the slow part of the qemu_ld/st ops after the end of the TB. + +- Change exception syntax to get closer to QOP system (exception + parameters given with a specific instruction). + +- Add float and vector support. diff --git a/qemu/qemu-git/tcg/arm/.svn/all-wcprops b/qemu/qemu-git/tcg/arm/.svn/all-wcprops new file mode 100644 index 0000000..69b717b --- /dev/null +++ b/qemu/qemu-git/tcg/arm/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/arm +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 60 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/arm/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/arm/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/arm/.svn/entries b/qemu/qemu-git/tcg/arm/.svn/entries new file mode 100644 index 0000000..b18fb29 --- /dev/null +++ b/qemu/qemu-git/tcg/arm/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/arm +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +98deb0581c939945cb5a0611f98a6a5e +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +54714 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +2f84ffc289d4ac8d17ea1350d0dcbc0e +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +2650 + diff --git a/qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..f8d626d --- /dev/null +++ b/qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,1708 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Andrzej Zaborowski + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%r0", + "%r1", + "%r2", + "%r3", + "%r4", + "%r5", + "%r6", + "%r7", + "%r8", + "%r9", + "%r10", + "%r11", + "%r12", + "%r13", + "%r14", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, +}; + +static const int tcg_target_call_iarg_regs[4] = { + TCG_REG_R0, TCG_REG_R1, TCG_REG_R2, TCG_REG_R3 +}; +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_R0, TCG_REG_R1 +}; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + switch (type) { + case R_ARM_ABS32: + *(uint32_t *) code_ptr = value; + break; + + case R_ARM_CALL: + case R_ARM_JUMP24: + default: + tcg_abort(); + + case R_ARM_PC24: + *(uint32_t *) code_ptr = ((*(uint32_t *) code_ptr) & 0xff000000) | + (((value - ((tcg_target_long) code_ptr + 8)) >> 2) & 0xffffff); + break; + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 4; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'I': + ct->ct |= TCG_CT_CONST_ARM; + break; + + case 'r': +#ifndef CONFIG_SOFTMMU + case 'd': + case 'D': + case 'x': + case 'X': +#endif + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + break; + +#ifdef CONFIG_SOFTMMU + /* qemu_ld/st inputs (unless 'X', 'd' or 'D') */ + case 'x': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; + + /* qemu_ld64 data_reg */ + case 'd': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + /* r1 is still needed to load data_reg2, so don't use it. */ + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; + + /* qemu_ld/st64 data_reg2 */ + case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + /* r0, r1 and optionally r2 will be overwritten by the address + * and the low word of data, so don't use these. */ + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); +# if TARGET_LONG_BITS == 64 + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2); +# endif + break; + +# if TARGET_LONG_BITS == 64 + /* qemu_ld/st addr_reg2 */ + case 'X': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + /* r0 will be overwritten by the low word of base, so don't use it. */ + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; +# endif +#endif + + case '1': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + break; + + case '2': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; + + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + + return 0; +} + +static inline uint32_t rotl(uint32_t val, int n) +{ + return (val << n) | (val >> (32 - n)); +} + +/* ARM immediates for ALU instructions are made of an unsigned 8-bit + right-rotated by an even amount between 0 and 30. */ +static inline int encode_imm(uint32_t imm) +{ + int shift; + + /* simple case, only lower bits */ + if ((imm & ~0xff) == 0) + return 0; + /* then try a simple even shift */ + shift = ctz32(imm) & ~1; + if (((imm >> shift) & ~0xff) == 0) + return 32 - shift; + /* now try harder with rotations */ + if ((rotl(imm, 2) & ~0xff) == 0) + return 2; + if ((rotl(imm, 4) & ~0xff) == 0) + return 4; + if ((rotl(imm, 6) & ~0xff) == 0) + return 6; + /* imm can't be encoded */ + return -1; +} + +static inline int check_fit_imm(uint32_t imm) +{ + return encode_imm(imm) >= 0; +} + +/* Test if a constant matches the constraint. + * TODO: define constraints for: + * + * ldr/str offset: between -0xfff and 0xfff + * ldrh/strh offset: between -0xff and 0xff + * mov operand2: values represented with x << (2 * y), x < 0x100 + * add, sub, eor...: ditto + */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_ARM) && check_fit_imm(val)) + return 1; + else + return 0; +} + +enum arm_data_opc_e { + ARITH_AND = 0x0, + ARITH_EOR = 0x1, + ARITH_SUB = 0x2, + ARITH_RSB = 0x3, + ARITH_ADD = 0x4, + ARITH_ADC = 0x5, + ARITH_SBC = 0x6, + ARITH_RSC = 0x7, + ARITH_TST = 0x8, + ARITH_CMP = 0xa, + ARITH_CMN = 0xb, + ARITH_ORR = 0xc, + ARITH_MOV = 0xd, + ARITH_BIC = 0xe, + ARITH_MVN = 0xf, +}; + +#define TO_CPSR(opc) \ + ((opc == ARITH_CMP || opc == ARITH_CMN || opc == ARITH_TST) << 20) + +#define SHIFT_IMM_LSL(im) (((im) << 7) | 0x00) +#define SHIFT_IMM_LSR(im) (((im) << 7) | 0x20) +#define SHIFT_IMM_ASR(im) (((im) << 7) | 0x40) +#define SHIFT_IMM_ROR(im) (((im) << 7) | 0x60) +#define SHIFT_REG_LSL(rs) (((rs) << 8) | 0x10) +#define SHIFT_REG_LSR(rs) (((rs) << 8) | 0x30) +#define SHIFT_REG_ASR(rs) (((rs) << 8) | 0x50) +#define SHIFT_REG_ROR(rs) (((rs) << 8) | 0x70) + +enum arm_cond_code_e { + COND_EQ = 0x0, + COND_NE = 0x1, + COND_CS = 0x2, /* Unsigned greater or equal */ + COND_CC = 0x3, /* Unsigned less than */ + COND_MI = 0x4, /* Negative */ + COND_PL = 0x5, /* Zero or greater */ + COND_VS = 0x6, /* Overflow */ + COND_VC = 0x7, /* No overflow */ + COND_HI = 0x8, /* Unsigned greater than */ + COND_LS = 0x9, /* Unsigned less or equal */ + COND_GE = 0xa, + COND_LT = 0xb, + COND_GT = 0xc, + COND_LE = 0xd, + COND_AL = 0xe, +}; + +static const uint8_t tcg_cond_to_arm_cond[10] = { + [TCG_COND_EQ] = COND_EQ, + [TCG_COND_NE] = COND_NE, + [TCG_COND_LT] = COND_LT, + [TCG_COND_GE] = COND_GE, + [TCG_COND_LE] = COND_LE, + [TCG_COND_GT] = COND_GT, + /* unsigned */ + [TCG_COND_LTU] = COND_CC, + [TCG_COND_GEU] = COND_CS, + [TCG_COND_LEU] = COND_LS, + [TCG_COND_GTU] = COND_HI, +}; + +static inline void tcg_out_bx(TCGContext *s, int cond, int rn) +{ + tcg_out32(s, (cond << 28) | 0x012fff10 | rn); +} + +static inline void tcg_out_b(TCGContext *s, int cond, int32_t offset) +{ + tcg_out32(s, (cond << 28) | 0x0a000000 | + (((offset - 8) >> 2) & 0x00ffffff)); +} + +static inline void tcg_out_b_noaddr(TCGContext *s, int cond) +{ +#ifdef HOST_WORDS_BIGENDIAN + tcg_out8(s, (cond << 4) | 0x0a); + s->code_ptr += 3; +#else + s->code_ptr += 3; + tcg_out8(s, (cond << 4) | 0x0a); +#endif +} + +static inline void tcg_out_bl(TCGContext *s, int cond, int32_t offset) +{ + tcg_out32(s, (cond << 28) | 0x0b000000 | + (((offset - 8) >> 2) & 0x00ffffff)); +} + +static inline void tcg_out_dat_reg(TCGContext *s, + int cond, int opc, int rd, int rn, int rm, int shift) +{ + tcg_out32(s, (cond << 28) | (0 << 25) | (opc << 21) | TO_CPSR(opc) | + (rn << 16) | (rd << 12) | shift | rm); +} + +static inline void tcg_out_dat_reg2(TCGContext *s, + int cond, int opc0, int opc1, int rd0, int rd1, + int rn0, int rn1, int rm0, int rm1, int shift) +{ + if (rd0 == rn1 || rd0 == rm1) { + tcg_out32(s, (cond << 28) | (0 << 25) | (opc0 << 21) | (1 << 20) | + (rn0 << 16) | (8 << 12) | shift | rm0); + tcg_out32(s, (cond << 28) | (0 << 25) | (opc1 << 21) | + (rn1 << 16) | (rd1 << 12) | shift | rm1); + tcg_out_dat_reg(s, cond, ARITH_MOV, + rd0, 0, TCG_REG_R8, SHIFT_IMM_LSL(0)); + } else { + tcg_out32(s, (cond << 28) | (0 << 25) | (opc0 << 21) | (1 << 20) | + (rn0 << 16) | (rd0 << 12) | shift | rm0); + tcg_out32(s, (cond << 28) | (0 << 25) | (opc1 << 21) | + (rn1 << 16) | (rd1 << 12) | shift | rm1); + } +} + +static inline void tcg_out_dat_imm(TCGContext *s, + int cond, int opc, int rd, int rn, int im) +{ + tcg_out32(s, (cond << 28) | (1 << 25) | (opc << 21) | TO_CPSR(opc) | + (rn << 16) | (rd << 12) | im); +} + +static inline void tcg_out_movi32(TCGContext *s, + int cond, int rd, int32_t arg) +{ + int offset = (uint32_t) arg - ((uint32_t) s->code_ptr + 8); + + /* TODO: This is very suboptimal, we can easily have a constant + * pool somewhere after all the instructions. */ + + if (arg < 0 && arg > -0x100) + return tcg_out_dat_imm(s, cond, ARITH_MVN, rd, 0, (~arg) & 0xff); + + if (offset < 0x100 && offset > -0x100) + return offset >= 0 ? + tcg_out_dat_imm(s, cond, ARITH_ADD, rd, 15, offset) : + tcg_out_dat_imm(s, cond, ARITH_SUB, rd, 15, -offset); + +#ifdef __ARM_ARCH_7A__ + /* use movw/movt */ + /* movw */ + tcg_out32(s, (cond << 28) | 0x03000000 | (rd << 12) + | ((arg << 4) & 0x000f0000) | (arg & 0xfff)); + if (arg & 0xffff0000) + /* movt */ + tcg_out32(s, (cond << 28) | 0x03400000 | (rd << 12) + | ((arg >> 12) & 0x000f0000) | ((arg >> 16) & 0xfff)); +#else + tcg_out_dat_imm(s, cond, ARITH_MOV, rd, 0, arg & 0xff); + if (arg & 0x0000ff00) + tcg_out_dat_imm(s, cond, ARITH_ORR, rd, rd, + ((arg >> 8) & 0xff) | 0xc00); + if (arg & 0x00ff0000) + tcg_out_dat_imm(s, cond, ARITH_ORR, rd, rd, + ((arg >> 16) & 0xff) | 0x800); + if (arg & 0xff000000) + tcg_out_dat_imm(s, cond, ARITH_ORR, rd, rd, + ((arg >> 24) & 0xff) | 0x400); +#endif +} + +static inline void tcg_out_mul32(TCGContext *s, + int cond, int rd, int rs, int rm) +{ + if (rd != rm) + tcg_out32(s, (cond << 28) | (rd << 16) | (0 << 12) | + (rs << 8) | 0x90 | rm); + else if (rd != rs) + tcg_out32(s, (cond << 28) | (rd << 16) | (0 << 12) | + (rm << 8) | 0x90 | rs); + else { + tcg_out32(s, (cond << 28) | ( 8 << 16) | (0 << 12) | + (rs << 8) | 0x90 | rm); + tcg_out_dat_reg(s, cond, ARITH_MOV, + rd, 0, 8, SHIFT_IMM_LSL(0)); + } +} + +static inline void tcg_out_umull32(TCGContext *s, + int cond, int rd0, int rd1, int rs, int rm) +{ + if (rd0 != rm && rd1 != rm) + tcg_out32(s, (cond << 28) | 0x800090 | + (rd1 << 16) | (rd0 << 12) | (rs << 8) | rm); + else if (rd0 != rs && rd1 != rs) + tcg_out32(s, (cond << 28) | 0x800090 | + (rd1 << 16) | (rd0 << 12) | (rm << 8) | rs); + else { + tcg_out_dat_reg(s, cond, ARITH_MOV, + TCG_REG_R8, 0, rm, SHIFT_IMM_LSL(0)); + tcg_out32(s, (cond << 28) | 0x800098 | + (rd1 << 16) | (rd0 << 12) | (rs << 8)); + } +} + +static inline void tcg_out_smull32(TCGContext *s, + int cond, int rd0, int rd1, int rs, int rm) +{ + if (rd0 != rm && rd1 != rm) + tcg_out32(s, (cond << 28) | 0xc00090 | + (rd1 << 16) | (rd0 << 12) | (rs << 8) | rm); + else if (rd0 != rs && rd1 != rs) + tcg_out32(s, (cond << 28) | 0xc00090 | + (rd1 << 16) | (rd0 << 12) | (rm << 8) | rs); + else { + tcg_out_dat_reg(s, cond, ARITH_MOV, + TCG_REG_R8, 0, rm, SHIFT_IMM_LSL(0)); + tcg_out32(s, (cond << 28) | 0xc00098 | + (rd1 << 16) | (rd0 << 12) | (rs << 8)); + } +} + +static inline void tcg_out_ld32_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05900000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05100000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_st32_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05800000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05000000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_ld32_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07900000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st32_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07800000 | + (rn << 16) | (rd << 12) | rm); +} + +/* Register pre-increment with base writeback. */ +static inline void tcg_out_ld32_rwb(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07b00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st32_rwb(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07a00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld16u_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01d000b0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x015000b0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_st16u_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01c000b0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x014000b0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_ld16u_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x019000b0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st16u_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x018000b0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld16s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01d000f0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x015000f0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_st16s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01c000f0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x014000f0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_ld16s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x019000f0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st16s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x018000f0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld8_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05d00000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05500000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_st8_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05c00000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05400000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_ld8_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07d00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st8_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07c00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld8s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01d000d0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x015000d0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_st8s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01c000d0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x014000d0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_ld8s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x019000d0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st8s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x018000d0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld32u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld32_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld32_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_st32(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_st32_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_st32_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld16u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld16u_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld16u_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld16s(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld16s_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld16s_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_st16u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_st16u_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_st16u_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld8u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld8_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld8_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld8s(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld8s_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld8s_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_st8u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_st8_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_st8_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_goto(TCGContext *s, int cond, uint32_t addr) +{ + int32_t val; + + val = addr - (tcg_target_long) s->code_ptr; + if (val - 8 < 0x01fffffd && val - 8 > -0x01fffffd) + tcg_out_b(s, cond, val); + else { +#if 1 + tcg_abort(); +#else + if (cond == COND_AL) { + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + tcg_out32(s, addr); /* XXX: This is l->u.value, can we use it? */ + } else { + tcg_out_movi32(s, cond, TCG_REG_R8, val - 8); + tcg_out_dat_reg(s, cond, ARITH_ADD, + 15, 15, TCG_REG_R8, SHIFT_IMM_LSL(0)); + } +#endif + } +} + +static inline void tcg_out_call(TCGContext *s, int cond, uint32_t addr) +{ + int32_t val; + +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, TCG_REG_R8, 0, 14, SHIFT_IMM_LSL(0)); +#endif + + val = addr - (tcg_target_long) s->code_ptr; + if (val < 0x01fffffd && val > -0x01fffffd) + tcg_out_bl(s, cond, val); + else { +#if 1 + tcg_abort(); +#else + if (cond == COND_AL) { + tcg_out_dat_imm(s, cond, ARITH_ADD, 14, 15, 4); + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + tcg_out32(s, addr); /* XXX: This is l->u.value, can we use it? */ + } else { + tcg_out_movi32(s, cond, TCG_REG_R9, addr); + tcg_out_dat_imm(s, cond, ARITH_MOV, 14, 0, 15); + tcg_out_bx(s, cond, TCG_REG_R9); + } +#endif + } + +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, TCG_REG_R8, SHIFT_IMM_LSL(0)); +#endif +} + +static inline void tcg_out_callr(TCGContext *s, int cond, int arg) +{ +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, TCG_REG_R8, 0, 14, SHIFT_IMM_LSL(0)); +#endif + /* TODO: on ARMv5 and ARMv6 replace with tcg_out_blx(s, cond, arg); */ + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, 15, SHIFT_IMM_LSL(0)); + tcg_out_bx(s, cond, arg); +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, TCG_REG_R8, SHIFT_IMM_LSL(0)); +#endif +} + +static inline void tcg_out_goto_label(TCGContext *s, int cond, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) + tcg_out_goto(s, cond, l->u.value); + else if (cond == COND_AL) { + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + tcg_out_reloc(s, s->code_ptr, R_ARM_ABS32, label_index, 31337); + s->code_ptr += 4; + } else { + /* Probably this should be preferred even for COND_AL... */ + tcg_out_reloc(s, s->code_ptr, R_ARM_PC24, label_index, 31337); + tcg_out_b_noaddr(s, cond); + } +} + +static void tcg_out_div_helper(TCGContext *s, int cond, const TCGArg *args, + void *helper_div, void *helper_rem, int shift) +{ + int div_reg = args[0]; + int rem_reg = args[1]; + + /* stmdb sp!, { r0 - r3, ip, lr } */ + /* (Note that we need an even number of registers as per EABI) */ + tcg_out32(s, (cond << 28) | 0x092d500f); + + tcg_out_dat_reg(s, cond, ARITH_MOV, 0, 0, args[2], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 1, 0, args[3], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 2, 0, args[4], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 3, 0, 2, shift); + + tcg_out_call(s, cond, (uint32_t) helper_div); + tcg_out_dat_reg(s, cond, ARITH_MOV, 8, 0, 0, SHIFT_IMM_LSL(0)); + + /* ldmia sp, { r0 - r3, fp, lr } */ + tcg_out32(s, (cond << 28) | 0x089d500f); + + tcg_out_dat_reg(s, cond, ARITH_MOV, 0, 0, args[2], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 1, 0, args[3], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 2, 0, args[4], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 3, 0, 2, shift); + + tcg_out_call(s, cond, (uint32_t) helper_rem); + + tcg_out_dat_reg(s, cond, ARITH_MOV, rem_reg, 0, 0, SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, div_reg, 0, 8, SHIFT_IMM_LSL(0)); + + /* ldr r0, [sp], #4 */ + if (rem_reg != 0 && div_reg != 0) + tcg_out32(s, (cond << 28) | 0x04bd0004); + /* ldr r1, [sp], #4 */ + if (rem_reg != 1 && div_reg != 1) + tcg_out32(s, (cond << 28) | 0x04bd1004); + /* ldr r2, [sp], #4 */ + if (rem_reg != 2 && div_reg != 2) + tcg_out32(s, (cond << 28) | 0x04bd2004); + /* ldr r3, [sp], #4 */ + if (rem_reg != 3 && div_reg != 3) + tcg_out32(s, (cond << 28) | 0x04bd3004); + /* ldr ip, [sp], #4 */ + if (rem_reg != 12 && div_reg != 12) + tcg_out32(s, (cond << 28) | 0x04bdc004); + /* ldr lr, [sp], #4 */ + if (rem_reg != 14 && div_reg != 14) + tcg_out32(s, (cond << 28) | 0x04bde004); +} + +#ifdef CONFIG_SOFTMMU + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +#define TLB_SHIFT (CPU_TLB_ENTRY_BITS + CPU_TLB_BITS) + +static inline void tcg_out_qemu_ld(TCGContext *s, int cond, + const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2; +#ifdef CONFIG_SOFTMMU + int mem_index, s_bits; +# if TARGET_LONG_BITS == 64 + int addr_reg2; +# endif + uint32_t *label_ptr; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#ifdef CONFIG_SOFTMMU +# if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +# endif + mem_index = *args; + s_bits = opc & 3; + + /* Should generate something like the following: + * shr r8, addr_reg, #TARGET_PAGE_BITS + * and r0, r8, #(CPU_TLB_SIZE - 1) @ Assumption: CPU_TLB_BITS <= 8 + * add r0, env, r0 lsl #CPU_TLB_ENTRY_BITS + */ +# if CPU_TLB_BITS > 8 +# error +# endif + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + 8, 0, addr_reg, SHIFT_IMM_LSR(TARGET_PAGE_BITS)); + tcg_out_dat_imm(s, COND_AL, ARITH_AND, + 0, 8, CPU_TLB_SIZE - 1); + tcg_out_dat_reg(s, COND_AL, ARITH_ADD, + 0, TCG_AREG0, 0, SHIFT_IMM_LSL(CPU_TLB_ENTRY_BITS)); + /* In the + * ldr r1 [r0, #(offsetof(CPUState, tlb_table[mem_index][0].addr_read))] + * below, the offset is likely to exceed 12 bits if mem_index != 0 and + * not exceed otherwise, so use an + * add r0, r0, #(mem_index * sizeof *CPUState.tlb_table) + * before. + */ + if (mem_index) + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 0, 0, + (mem_index << (TLB_SHIFT & 1)) | + ((16 - (TLB_SHIFT >> 1)) << 8)); + tcg_out_ld32_12(s, COND_AL, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_read)); + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, + 0, 1, 8, SHIFT_IMM_LSL(TARGET_PAGE_BITS)); + /* Check alignment. */ + if (s_bits) + tcg_out_dat_imm(s, COND_EQ, ARITH_TST, + 0, addr_reg, (1 << s_bits) - 1); +# if TARGET_LONG_BITS == 64 + /* XXX: possibly we could use a block data load or writeback in + * the first access. */ + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_read) + 4); + tcg_out_dat_reg(s, COND_EQ, ARITH_CMP, + 0, 1, addr_reg2, SHIFT_IMM_LSL(0)); +# endif + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addend)); + + switch (opc) { + case 0: + tcg_out_ld8_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 0 | 4: + tcg_out_ld8s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1: + tcg_out_ld16u_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1 | 4: + tcg_out_ld16s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 2: + default: + tcg_out_ld32_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 3: + tcg_out_ld32_rwb(s, COND_EQ, data_reg, 1, addr_reg); + tcg_out_ld32_12(s, COND_EQ, data_reg2, 1, 4); + break; + } + + label_ptr = (void *) s->code_ptr; + tcg_out_b(s, COND_EQ, 8); + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 8, 0, 14, SHIFT_IMM_LSL(0)); +# endif + + /* TODO: move this code to where the constants pool will be */ + if (addr_reg) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, addr_reg, SHIFT_IMM_LSL(0)); +# if TARGET_LONG_BITS == 32 + tcg_out_dat_imm(s, cond, ARITH_MOV, 1, 0, mem_index); +# else + if (addr_reg2 != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, addr_reg2, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); +# endif + tcg_out_bl(s, cond, (tcg_target_long) qemu_ld_helpers[s_bits] - + (tcg_target_long) s->code_ptr); + + switch (opc) { + case 0 | 4: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, 0, SHIFT_IMM_LSL(24)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_ASR(24)); + break; + case 1 | 4: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, 0, SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_ASR(16)); + break; + case 0: + case 1: + case 2: + default: + if (data_reg) + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_LSL(0)); + break; + case 3: + if (data_reg != 0) + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_LSL(0)); + if (data_reg2 != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg2, 0, 1, SHIFT_IMM_LSL(0)); + break; + } + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, 8, SHIFT_IMM_LSL(0)); +# endif + + *label_ptr += ((void *) s->code_ptr - (void *) label_ptr - 8) >> 2; +#else /* !CONFIG_SOFTMMU */ + if (GUEST_BASE) { + uint32_t offset = GUEST_BASE; + int i; + int rot; + + while (offset) { + i = ctz32(offset) & ~1; + rot = ((32 - i) << 7) & 0xf00; + + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 8, addr_reg, + ((offset >> i) & 0xff) | rot); + addr_reg = 8; + offset &= ~(0xff << i); + } + } + switch (opc) { + case 0: + tcg_out_ld8_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 0 | 4: + tcg_out_ld8s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1: + tcg_out_ld16u_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1 | 4: + tcg_out_ld16s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 2: + default: + tcg_out_ld32_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 3: + /* TODO: use block load - + * check that data_reg2 > data_reg or the other way */ + if (data_reg == addr_reg) { + tcg_out_ld32_12(s, COND_AL, data_reg2, addr_reg, 4); + tcg_out_ld32_12(s, COND_AL, data_reg, addr_reg, 0); + } else { + tcg_out_ld32_12(s, COND_AL, data_reg, addr_reg, 0); + tcg_out_ld32_12(s, COND_AL, data_reg2, addr_reg, 4); + } + break; + } +#endif +} + +static inline void tcg_out_qemu_st(TCGContext *s, int cond, + const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2; +#ifdef CONFIG_SOFTMMU + int mem_index, s_bits; +# if TARGET_LONG_BITS == 64 + int addr_reg2; +# endif + uint32_t *label_ptr; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#ifdef CONFIG_SOFTMMU +# if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +# endif + mem_index = *args; + s_bits = opc & 3; + + /* Should generate something like the following: + * shr r8, addr_reg, #TARGET_PAGE_BITS + * and r0, r8, #(CPU_TLB_SIZE - 1) @ Assumption: CPU_TLB_BITS <= 8 + * add r0, env, r0 lsl #CPU_TLB_ENTRY_BITS + */ + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + 8, 0, addr_reg, SHIFT_IMM_LSR(TARGET_PAGE_BITS)); + tcg_out_dat_imm(s, COND_AL, ARITH_AND, + 0, 8, CPU_TLB_SIZE - 1); + tcg_out_dat_reg(s, COND_AL, ARITH_ADD, + 0, TCG_AREG0, 0, SHIFT_IMM_LSL(CPU_TLB_ENTRY_BITS)); + /* In the + * ldr r1 [r0, #(offsetof(CPUState, tlb_table[mem_index][0].addr_write))] + * below, the offset is likely to exceed 12 bits if mem_index != 0 and + * not exceed otherwise, so use an + * add r0, r0, #(mem_index * sizeof *CPUState.tlb_table) + * before. + */ + if (mem_index) + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 0, 0, + (mem_index << (TLB_SHIFT & 1)) | + ((16 - (TLB_SHIFT >> 1)) << 8)); + tcg_out_ld32_12(s, COND_AL, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_write)); + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, + 0, 1, 8, SHIFT_IMM_LSL(TARGET_PAGE_BITS)); + /* Check alignment. */ + if (s_bits) + tcg_out_dat_imm(s, COND_EQ, ARITH_TST, + 0, addr_reg, (1 << s_bits) - 1); +# if TARGET_LONG_BITS == 64 + /* XXX: possibly we could use a block data load or writeback in + * the first access. */ + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_write) + + 4); + tcg_out_dat_reg(s, COND_EQ, ARITH_CMP, + 0, 1, addr_reg2, SHIFT_IMM_LSL(0)); +# endif + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addend)); + + switch (opc) { + case 0: + tcg_out_st8_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 0 | 4: + tcg_out_st8s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1: + tcg_out_st16u_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1 | 4: + tcg_out_st16s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 2: + default: + tcg_out_st32_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 3: + tcg_out_st32_rwb(s, COND_EQ, data_reg, 1, addr_reg); + tcg_out_st32_12(s, COND_EQ, data_reg2, 1, 4); + break; + } + + label_ptr = (void *) s->code_ptr; + tcg_out_b(s, COND_EQ, 8); + + /* TODO: move this code to where the constants pool will be */ + if (addr_reg) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, addr_reg, SHIFT_IMM_LSL(0)); +# if TARGET_LONG_BITS == 32 + switch (opc) { + case 0: + tcg_out_dat_imm(s, cond, ARITH_AND, 1, data_reg, 0xff); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); + break; + case 1: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, data_reg, SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, 1, SHIFT_IMM_LSR(16)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); + break; + case 2: + if (data_reg != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, data_reg, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); + break; + case 3: + if (data_reg != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, data_reg, SHIFT_IMM_LSL(0)); + if (data_reg2 != 2) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg2, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + } +# else + if (addr_reg2 != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, addr_reg2, SHIFT_IMM_LSL(0)); + switch (opc) { + case 0: + tcg_out_dat_imm(s, cond, ARITH_AND, 2, data_reg, 0xff); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + case 1: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg, SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, 2, SHIFT_IMM_LSR(16)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + case 2: + if (data_reg != 2) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + case 3: + tcg_out_dat_imm(s, cond, ARITH_MOV, 8, 0, mem_index); + tcg_out32(s, (cond << 28) | 0x052d8010); /* str r8, [sp, #-0x10]! */ + if (data_reg != 2) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg, SHIFT_IMM_LSL(0)); + if (data_reg2 != 3) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 3, 0, data_reg2, SHIFT_IMM_LSL(0)); + break; + } +# endif + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 8, 0, 14, SHIFT_IMM_LSL(0)); +# endif + + tcg_out_bl(s, cond, (tcg_target_long) qemu_st_helpers[s_bits] - + (tcg_target_long) s->code_ptr); +# if TARGET_LONG_BITS == 64 + if (opc == 3) + tcg_out_dat_imm(s, cond, ARITH_ADD, 13, 13, 0x10); +# endif + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, 8, SHIFT_IMM_LSL(0)); +# endif + + *label_ptr += ((void *) s->code_ptr - (void *) label_ptr - 8) >> 2; +#else /* !CONFIG_SOFTMMU */ + if (GUEST_BASE) { + uint32_t offset = GUEST_BASE; + int i; + int rot; + + while (offset) { + i = ctz32(offset) & ~1; + rot = ((32 - i) << 7) & 0xf00; + + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 8, addr_reg, + ((offset >> i) & 0xff) | rot); + addr_reg = 8; + offset &= ~(0xff << i); + } + } + switch (opc) { + case 0: + tcg_out_st8_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 0 | 4: + tcg_out_st8s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1: + tcg_out_st16u_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1 | 4: + tcg_out_st16s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 2: + default: + tcg_out_st32_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 3: + /* TODO: use block store - + * check that data_reg2 > data_reg or the other way */ + tcg_out_st32_12(s, COND_AL, data_reg, addr_reg, 0); + tcg_out_st32_12(s, COND_AL, data_reg2, addr_reg, 4); + break; + } +#endif +} + +static uint8_t *tb_ret_addr; + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: +#ifdef SAVE_LR + if (args[0] >> 8) + tcg_out_ld32_12(s, COND_AL, TCG_REG_R0, 15, 0); + else + tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R0, 0, args[0]); + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, 15, 0, 14, SHIFT_IMM_LSL(0)); + if (args[0] >> 8) + tcg_out32(s, args[0]); +#else + { + uint8_t *ld_ptr = s->code_ptr; + if (args[0] >> 8) + tcg_out_ld32_12(s, COND_AL, 0, 15, 0); + else + tcg_out_dat_imm(s, COND_AL, ARITH_MOV, 0, 0, args[0]); + tcg_out_goto(s, COND_AL, (tcg_target_ulong) tb_ret_addr); + if (args[0] >> 8) { + *ld_ptr = (uint8_t) (s->code_ptr - ld_ptr) - 8; + tcg_out32(s, args[0]); + } + } +#endif + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* Direct jump method */ +#if defined(USE_DIRECT_JUMP) + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out_b(s, COND_AL, 8); +#else + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out32(s, 0); +#endif + } else { + /* Indirect jump method */ +#if 1 + c = (int) (s->tb_next + args[0]) - ((int) s->code_ptr + 8); + if (c > 0xfff || c < -0xfff) { + tcg_out_movi32(s, COND_AL, TCG_REG_R0, + (tcg_target_long) (s->tb_next + args[0])); + tcg_out_ld32_12(s, COND_AL, 15, TCG_REG_R0, 0); + } else + tcg_out_ld32_12(s, COND_AL, 15, 15, c); +#else + tcg_out_ld32_12(s, COND_AL, TCG_REG_R0, 15, 0); + tcg_out_ld32_12(s, COND_AL, 15, TCG_REG_R0, 0); + tcg_out32(s, (tcg_target_long) (s->tb_next + args[0])); +#endif + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) + tcg_out_call(s, COND_AL, args[0]); + else + tcg_out_callr(s, COND_AL, args[0]); + break; + case INDEX_op_jmp: + if (const_args[0]) + tcg_out_goto(s, COND_AL, args[0]); + else + tcg_out_bx(s, COND_AL, args[0]); + break; + case INDEX_op_br: + tcg_out_goto_label(s, COND_AL, args[0]); + break; + + case INDEX_op_ld8u_i32: + tcg_out_ld8u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + tcg_out_ld8s(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + tcg_out_ld16u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + tcg_out_ld16s(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + tcg_out_ld32u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_st8_i32: + tcg_out_st8u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + tcg_out_st16u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + tcg_out_st32(s, COND_AL, args[0], args[1], args[2]); + break; + + case INDEX_op_mov_i32: + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[1], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_movi_i32: + tcg_out_movi32(s, COND_AL, args[0], args[1]); + break; + case INDEX_op_add_i32: + c = ARITH_ADD; + goto gen_arith; + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith; + case INDEX_op_or_i32: + c = ARITH_ORR; + goto gen_arith; + case INDEX_op_xor_i32: + c = ARITH_EOR; + /* Fall through. */ + gen_arith: + if (const_args[2]) { + int rot; + rot = encode_imm(args[2]); + tcg_out_dat_imm(s, COND_AL, c, + args[0], args[1], rotl(args[2], rot) | (rot << 7)); + } else + tcg_out_dat_reg(s, COND_AL, c, + args[0], args[1], args[2], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_add2_i32: + tcg_out_dat_reg2(s, COND_AL, ARITH_ADD, ARITH_ADC, + args[0], args[1], args[2], args[3], + args[4], args[5], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_sub2_i32: + tcg_out_dat_reg2(s, COND_AL, ARITH_SUB, ARITH_SBC, + args[0], args[1], args[2], args[3], + args[4], args[5], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_neg_i32: + tcg_out_dat_imm(s, COND_AL, ARITH_RSB, args[0], args[1], 0); + break; + case INDEX_op_not_i32: + tcg_out_dat_reg(s, COND_AL, + ARITH_MVN, args[0], 0, args[1], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_mul_i32: + tcg_out_mul32(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_mulu2_i32: + tcg_out_umull32(s, COND_AL, args[0], args[1], args[2], args[3]); + break; + case INDEX_op_div2_i32: + tcg_out_div_helper(s, COND_AL, args, + tcg_helper_div_i64, tcg_helper_rem_i64, + SHIFT_IMM_ASR(31)); + break; + case INDEX_op_divu2_i32: + tcg_out_div_helper(s, COND_AL, args, + tcg_helper_divu_i64, tcg_helper_remu_i64, + SHIFT_IMM_LSR(31)); + break; + /* XXX: Perhaps args[2] & 0x1f is wrong */ + case INDEX_op_shl_i32: + c = const_args[2] ? + SHIFT_IMM_LSL(args[2] & 0x1f) : SHIFT_REG_LSL(args[2]); + goto gen_shift32; + case INDEX_op_shr_i32: + c = const_args[2] ? (args[2] & 0x1f) ? SHIFT_IMM_LSR(args[2] & 0x1f) : + SHIFT_IMM_LSL(0) : SHIFT_REG_LSR(args[2]); + goto gen_shift32; + case INDEX_op_sar_i32: + c = const_args[2] ? (args[2] & 0x1f) ? SHIFT_IMM_ASR(args[2] & 0x1f) : + SHIFT_IMM_LSL(0) : SHIFT_REG_ASR(args[2]); + /* Fall through. */ + gen_shift32: + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, args[0], 0, args[1], c); + break; + + case INDEX_op_brcond_i32: + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0, + args[0], args[1], SHIFT_IMM_LSL(0)); + tcg_out_goto_label(s, tcg_cond_to_arm_cond[args[2]], args[3]); + break; + case INDEX_op_brcond2_i32: + /* The resulting conditions are: + * TCG_COND_EQ --> a0 == a2 && a1 == a3, + * TCG_COND_NE --> (a0 != a2 && a1 == a3) || a1 != a3, + * TCG_COND_LT(U) --> (a0 < a2 && a1 == a3) || a1 < a3, + * TCG_COND_GE(U) --> (a0 >= a2 && a1 == a3) || (a1 >= a3 && a1 != a3), + * TCG_COND_LE(U) --> (a0 <= a2 && a1 == a3) || (a1 <= a3 && a1 != a3), + * TCG_COND_GT(U) --> (a0 > a2 && a1 == a3) || a1 > a3, + */ + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0, + args[1], args[3], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, COND_EQ, ARITH_CMP, 0, + args[0], args[2], SHIFT_IMM_LSL(0)); + tcg_out_goto_label(s, tcg_cond_to_arm_cond[args[4]], args[5]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, COND_AL, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, COND_AL, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, COND_AL, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, COND_AL, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, COND_AL, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, COND_AL, args, 3); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, COND_AL, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, COND_AL, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, COND_AL, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, COND_AL, args, 3); + break; + + case INDEX_op_ext8s_i32: +#ifdef __ARM_ARCH_7A__ + /* sxtb */ + tcg_out32(s, 0xe6af0070 | (args[0] << 12) | args[1]); +#else + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[1], SHIFT_IMM_LSL(24)); + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[0], SHIFT_IMM_ASR(24)); +#endif + break; + case INDEX_op_ext16s_i32: +#ifdef __ARM_ARCH_7A__ + /* sxth */ + tcg_out32(s, 0xe6bf0070 | (args[0] << 12) | args[1]); +#else + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[1], SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[0], SHIFT_IMM_ASR(16)); +#endif + break; + + default: + tcg_abort(); + } +} + +static const TCGTargetOpDef arm_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + /* TODO: "r", "r", "ri" */ + { INDEX_op_add_i32, { "r", "r", "rI" } }, + { INDEX_op_sub_i32, { "r", "r", "rI" } }, + { INDEX_op_mul_i32, { "r", "r", "r" } }, + { INDEX_op_mulu2_i32, { "r", "r", "r", "r" } }, + { INDEX_op_div2_i32, { "r", "r", "r", "1", "2" } }, + { INDEX_op_divu2_i32, { "r", "r", "r", "1", "2" } }, + { INDEX_op_and_i32, { "r", "r", "rI" } }, + { INDEX_op_or_i32, { "r", "r", "rI" } }, + { INDEX_op_xor_i32, { "r", "r", "rI" } }, + { INDEX_op_neg_i32, { "r", "r" } }, + { INDEX_op_not_i32, { "r", "r" } }, + + { INDEX_op_shl_i32, { "r", "r", "ri" } }, + { INDEX_op_shr_i32, { "r", "r", "ri" } }, + { INDEX_op_sar_i32, { "r", "r", "ri" } }, + + { INDEX_op_brcond_i32, { "r", "r" } }, + + /* TODO: "r", "r", "r", "r", "ri", "ri" */ + { INDEX_op_add2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_sub2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_brcond2_i32, { "r", "r", "r", "r" } }, + + { INDEX_op_qemu_ld8u, { "r", "x", "X" } }, + { INDEX_op_qemu_ld8s, { "r", "x", "X" } }, + { INDEX_op_qemu_ld16u, { "r", "x", "X" } }, + { INDEX_op_qemu_ld16s, { "r", "x", "X" } }, + { INDEX_op_qemu_ld32u, { "r", "x", "X" } }, + { INDEX_op_qemu_ld64, { "d", "r", "x", "X" } }, + + { INDEX_op_qemu_st8, { "x", "x", "X" } }, + { INDEX_op_qemu_st16, { "x", "x", "X" } }, + { INDEX_op_qemu_st32, { "x", "x", "X" } }, + { INDEX_op_qemu_st64, { "x", "D", "x", "X" } }, + + { INDEX_op_ext8s_i32, { "r", "r" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + /* fail safe */ + if ((1 << CPU_TLB_ENTRY_BITS) != sizeof(CPUTLBEntry)) + tcg_abort(); + + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, + ((2 << TCG_REG_R14) - 1) & ~(1 << TCG_REG_R8)); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + ((2 << TCG_REG_R3) - 1) | + (1 << TCG_REG_R12) | (1 << TCG_REG_R14)); + + tcg_regset_clear(s->reserved_regs); +#ifdef SAVE_LR + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R14); +#endif + tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R8); + + tcg_add_target_add_op_defs(arm_op_defs); +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_ld32u(s, COND_AL, arg, arg1, arg2); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_st32(s, COND_AL, arg, arg1, arg2); +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val > 0) + if (val < 0x100) + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, reg, reg, val); + else + tcg_abort(); + else if (val < 0) { + if (val > -0x100) + tcg_out_dat_imm(s, COND_AL, ARITH_SUB, reg, reg, -val); + else + tcg_abort(); + } +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, ret, 0, arg, SHIFT_IMM_LSL(0)); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + tcg_out_movi32(s, COND_AL, ret, arg); +} + +void tcg_target_qemu_prologue(TCGContext *s) +{ + /* stmdb sp!, { r9 - r11, lr } */ + tcg_out32(s, (COND_AL << 28) | 0x092d4e00); + + tcg_out_bx(s, COND_AL, TCG_REG_R0); + tb_ret_addr = s->code_ptr; + + /* ldmia sp!, { r9 - r11, pc } */ + tcg_out32(s, (COND_AL << 28) | 0x08bd8e00); +} diff --git a/qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..71e1ec5 --- /dev/null +++ b/qemu/qemu-git/tcg/arm/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,85 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * Copyright (c) 2008 Andrzej Zaborowski + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_ARM 1 + +#define TCG_TARGET_REG_BITS 32 +#undef TCG_TARGET_WORDS_BIGENDIAN +#undef TCG_TARGET_HAS_div_i32 +#undef TCG_TARGET_HAS_div_i64 +#undef TCG_TARGET_HAS_bswap32_i32 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_neg_i32 +#undef TCG_TARGET_HAS_neg_i64 +#define TCG_TARGET_HAS_not_i32 +#undef TCG_TARGET_STACK_GROWSUP + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, +}; + +#define TCG_TARGET_NB_REGS 15 + +#define TCG_CT_CONST_ARM 0x100 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R13 +#define TCG_TARGET_STACK_ALIGN 8 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +#define TCG_TARGET_HAS_GUEST_BASE + +enum { + /* Note: must be synced with dyngen-exec.h */ + TCG_AREG0 = TCG_REG_R7, + TCG_AREG1 = TCG_REG_R4, + TCG_AREG2 = TCG_REG_R5, +}; + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +#if QEMU_GNUC_PREREQ(4, 1) + __builtin___clear_cache((char *) start, (char *) stop); +#else + register unsigned long _beg __asm ("a1") = start; + register unsigned long _end __asm ("a2") = stop; + register unsigned long _flg __asm ("a3") = 0; + __asm __volatile__ ("swi 0x9f0002" : : "r" (_beg), "r" (_end), "r" (_flg)); +#endif +} diff --git a/qemu/qemu-git/tcg/arm/tcg-target.c b/qemu/qemu-git/tcg/arm/tcg-target.c new file mode 100644 index 0000000..f8d626d --- /dev/null +++ b/qemu/qemu-git/tcg/arm/tcg-target.c @@ -0,0 +1,1708 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Andrzej Zaborowski + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%r0", + "%r1", + "%r2", + "%r3", + "%r4", + "%r5", + "%r6", + "%r7", + "%r8", + "%r9", + "%r10", + "%r11", + "%r12", + "%r13", + "%r14", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, +}; + +static const int tcg_target_call_iarg_regs[4] = { + TCG_REG_R0, TCG_REG_R1, TCG_REG_R2, TCG_REG_R3 +}; +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_R0, TCG_REG_R1 +}; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + switch (type) { + case R_ARM_ABS32: + *(uint32_t *) code_ptr = value; + break; + + case R_ARM_CALL: + case R_ARM_JUMP24: + default: + tcg_abort(); + + case R_ARM_PC24: + *(uint32_t *) code_ptr = ((*(uint32_t *) code_ptr) & 0xff000000) | + (((value - ((tcg_target_long) code_ptr + 8)) >> 2) & 0xffffff); + break; + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 4; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'I': + ct->ct |= TCG_CT_CONST_ARM; + break; + + case 'r': +#ifndef CONFIG_SOFTMMU + case 'd': + case 'D': + case 'x': + case 'X': +#endif + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + break; + +#ifdef CONFIG_SOFTMMU + /* qemu_ld/st inputs (unless 'X', 'd' or 'D') */ + case 'x': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; + + /* qemu_ld64 data_reg */ + case 'd': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + /* r1 is still needed to load data_reg2, so don't use it. */ + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; + + /* qemu_ld/st64 data_reg2 */ + case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + /* r0, r1 and optionally r2 will be overwritten by the address + * and the low word of data, so don't use these. */ + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); +# if TARGET_LONG_BITS == 64 + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2); +# endif + break; + +# if TARGET_LONG_BITS == 64 + /* qemu_ld/st addr_reg2 */ + case 'X': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + /* r0 will be overwritten by the low word of base, so don't use it. */ + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; +# endif +#endif + + case '1': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + break; + + case '2': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, (1 << TCG_TARGET_NB_REGS) - 1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1); + break; + + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + + return 0; +} + +static inline uint32_t rotl(uint32_t val, int n) +{ + return (val << n) | (val >> (32 - n)); +} + +/* ARM immediates for ALU instructions are made of an unsigned 8-bit + right-rotated by an even amount between 0 and 30. */ +static inline int encode_imm(uint32_t imm) +{ + int shift; + + /* simple case, only lower bits */ + if ((imm & ~0xff) == 0) + return 0; + /* then try a simple even shift */ + shift = ctz32(imm) & ~1; + if (((imm >> shift) & ~0xff) == 0) + return 32 - shift; + /* now try harder with rotations */ + if ((rotl(imm, 2) & ~0xff) == 0) + return 2; + if ((rotl(imm, 4) & ~0xff) == 0) + return 4; + if ((rotl(imm, 6) & ~0xff) == 0) + return 6; + /* imm can't be encoded */ + return -1; +} + +static inline int check_fit_imm(uint32_t imm) +{ + return encode_imm(imm) >= 0; +} + +/* Test if a constant matches the constraint. + * TODO: define constraints for: + * + * ldr/str offset: between -0xfff and 0xfff + * ldrh/strh offset: between -0xff and 0xff + * mov operand2: values represented with x << (2 * y), x < 0x100 + * add, sub, eor...: ditto + */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_ARM) && check_fit_imm(val)) + return 1; + else + return 0; +} + +enum arm_data_opc_e { + ARITH_AND = 0x0, + ARITH_EOR = 0x1, + ARITH_SUB = 0x2, + ARITH_RSB = 0x3, + ARITH_ADD = 0x4, + ARITH_ADC = 0x5, + ARITH_SBC = 0x6, + ARITH_RSC = 0x7, + ARITH_TST = 0x8, + ARITH_CMP = 0xa, + ARITH_CMN = 0xb, + ARITH_ORR = 0xc, + ARITH_MOV = 0xd, + ARITH_BIC = 0xe, + ARITH_MVN = 0xf, +}; + +#define TO_CPSR(opc) \ + ((opc == ARITH_CMP || opc == ARITH_CMN || opc == ARITH_TST) << 20) + +#define SHIFT_IMM_LSL(im) (((im) << 7) | 0x00) +#define SHIFT_IMM_LSR(im) (((im) << 7) | 0x20) +#define SHIFT_IMM_ASR(im) (((im) << 7) | 0x40) +#define SHIFT_IMM_ROR(im) (((im) << 7) | 0x60) +#define SHIFT_REG_LSL(rs) (((rs) << 8) | 0x10) +#define SHIFT_REG_LSR(rs) (((rs) << 8) | 0x30) +#define SHIFT_REG_ASR(rs) (((rs) << 8) | 0x50) +#define SHIFT_REG_ROR(rs) (((rs) << 8) | 0x70) + +enum arm_cond_code_e { + COND_EQ = 0x0, + COND_NE = 0x1, + COND_CS = 0x2, /* Unsigned greater or equal */ + COND_CC = 0x3, /* Unsigned less than */ + COND_MI = 0x4, /* Negative */ + COND_PL = 0x5, /* Zero or greater */ + COND_VS = 0x6, /* Overflow */ + COND_VC = 0x7, /* No overflow */ + COND_HI = 0x8, /* Unsigned greater than */ + COND_LS = 0x9, /* Unsigned less or equal */ + COND_GE = 0xa, + COND_LT = 0xb, + COND_GT = 0xc, + COND_LE = 0xd, + COND_AL = 0xe, +}; + +static const uint8_t tcg_cond_to_arm_cond[10] = { + [TCG_COND_EQ] = COND_EQ, + [TCG_COND_NE] = COND_NE, + [TCG_COND_LT] = COND_LT, + [TCG_COND_GE] = COND_GE, + [TCG_COND_LE] = COND_LE, + [TCG_COND_GT] = COND_GT, + /* unsigned */ + [TCG_COND_LTU] = COND_CC, + [TCG_COND_GEU] = COND_CS, + [TCG_COND_LEU] = COND_LS, + [TCG_COND_GTU] = COND_HI, +}; + +static inline void tcg_out_bx(TCGContext *s, int cond, int rn) +{ + tcg_out32(s, (cond << 28) | 0x012fff10 | rn); +} + +static inline void tcg_out_b(TCGContext *s, int cond, int32_t offset) +{ + tcg_out32(s, (cond << 28) | 0x0a000000 | + (((offset - 8) >> 2) & 0x00ffffff)); +} + +static inline void tcg_out_b_noaddr(TCGContext *s, int cond) +{ +#ifdef HOST_WORDS_BIGENDIAN + tcg_out8(s, (cond << 4) | 0x0a); + s->code_ptr += 3; +#else + s->code_ptr += 3; + tcg_out8(s, (cond << 4) | 0x0a); +#endif +} + +static inline void tcg_out_bl(TCGContext *s, int cond, int32_t offset) +{ + tcg_out32(s, (cond << 28) | 0x0b000000 | + (((offset - 8) >> 2) & 0x00ffffff)); +} + +static inline void tcg_out_dat_reg(TCGContext *s, + int cond, int opc, int rd, int rn, int rm, int shift) +{ + tcg_out32(s, (cond << 28) | (0 << 25) | (opc << 21) | TO_CPSR(opc) | + (rn << 16) | (rd << 12) | shift | rm); +} + +static inline void tcg_out_dat_reg2(TCGContext *s, + int cond, int opc0, int opc1, int rd0, int rd1, + int rn0, int rn1, int rm0, int rm1, int shift) +{ + if (rd0 == rn1 || rd0 == rm1) { + tcg_out32(s, (cond << 28) | (0 << 25) | (opc0 << 21) | (1 << 20) | + (rn0 << 16) | (8 << 12) | shift | rm0); + tcg_out32(s, (cond << 28) | (0 << 25) | (opc1 << 21) | + (rn1 << 16) | (rd1 << 12) | shift | rm1); + tcg_out_dat_reg(s, cond, ARITH_MOV, + rd0, 0, TCG_REG_R8, SHIFT_IMM_LSL(0)); + } else { + tcg_out32(s, (cond << 28) | (0 << 25) | (opc0 << 21) | (1 << 20) | + (rn0 << 16) | (rd0 << 12) | shift | rm0); + tcg_out32(s, (cond << 28) | (0 << 25) | (opc1 << 21) | + (rn1 << 16) | (rd1 << 12) | shift | rm1); + } +} + +static inline void tcg_out_dat_imm(TCGContext *s, + int cond, int opc, int rd, int rn, int im) +{ + tcg_out32(s, (cond << 28) | (1 << 25) | (opc << 21) | TO_CPSR(opc) | + (rn << 16) | (rd << 12) | im); +} + +static inline void tcg_out_movi32(TCGContext *s, + int cond, int rd, int32_t arg) +{ + int offset = (uint32_t) arg - ((uint32_t) s->code_ptr + 8); + + /* TODO: This is very suboptimal, we can easily have a constant + * pool somewhere after all the instructions. */ + + if (arg < 0 && arg > -0x100) + return tcg_out_dat_imm(s, cond, ARITH_MVN, rd, 0, (~arg) & 0xff); + + if (offset < 0x100 && offset > -0x100) + return offset >= 0 ? + tcg_out_dat_imm(s, cond, ARITH_ADD, rd, 15, offset) : + tcg_out_dat_imm(s, cond, ARITH_SUB, rd, 15, -offset); + +#ifdef __ARM_ARCH_7A__ + /* use movw/movt */ + /* movw */ + tcg_out32(s, (cond << 28) | 0x03000000 | (rd << 12) + | ((arg << 4) & 0x000f0000) | (arg & 0xfff)); + if (arg & 0xffff0000) + /* movt */ + tcg_out32(s, (cond << 28) | 0x03400000 | (rd << 12) + | ((arg >> 12) & 0x000f0000) | ((arg >> 16) & 0xfff)); +#else + tcg_out_dat_imm(s, cond, ARITH_MOV, rd, 0, arg & 0xff); + if (arg & 0x0000ff00) + tcg_out_dat_imm(s, cond, ARITH_ORR, rd, rd, + ((arg >> 8) & 0xff) | 0xc00); + if (arg & 0x00ff0000) + tcg_out_dat_imm(s, cond, ARITH_ORR, rd, rd, + ((arg >> 16) & 0xff) | 0x800); + if (arg & 0xff000000) + tcg_out_dat_imm(s, cond, ARITH_ORR, rd, rd, + ((arg >> 24) & 0xff) | 0x400); +#endif +} + +static inline void tcg_out_mul32(TCGContext *s, + int cond, int rd, int rs, int rm) +{ + if (rd != rm) + tcg_out32(s, (cond << 28) | (rd << 16) | (0 << 12) | + (rs << 8) | 0x90 | rm); + else if (rd != rs) + tcg_out32(s, (cond << 28) | (rd << 16) | (0 << 12) | + (rm << 8) | 0x90 | rs); + else { + tcg_out32(s, (cond << 28) | ( 8 << 16) | (0 << 12) | + (rs << 8) | 0x90 | rm); + tcg_out_dat_reg(s, cond, ARITH_MOV, + rd, 0, 8, SHIFT_IMM_LSL(0)); + } +} + +static inline void tcg_out_umull32(TCGContext *s, + int cond, int rd0, int rd1, int rs, int rm) +{ + if (rd0 != rm && rd1 != rm) + tcg_out32(s, (cond << 28) | 0x800090 | + (rd1 << 16) | (rd0 << 12) | (rs << 8) | rm); + else if (rd0 != rs && rd1 != rs) + tcg_out32(s, (cond << 28) | 0x800090 | + (rd1 << 16) | (rd0 << 12) | (rm << 8) | rs); + else { + tcg_out_dat_reg(s, cond, ARITH_MOV, + TCG_REG_R8, 0, rm, SHIFT_IMM_LSL(0)); + tcg_out32(s, (cond << 28) | 0x800098 | + (rd1 << 16) | (rd0 << 12) | (rs << 8)); + } +} + +static inline void tcg_out_smull32(TCGContext *s, + int cond, int rd0, int rd1, int rs, int rm) +{ + if (rd0 != rm && rd1 != rm) + tcg_out32(s, (cond << 28) | 0xc00090 | + (rd1 << 16) | (rd0 << 12) | (rs << 8) | rm); + else if (rd0 != rs && rd1 != rs) + tcg_out32(s, (cond << 28) | 0xc00090 | + (rd1 << 16) | (rd0 << 12) | (rm << 8) | rs); + else { + tcg_out_dat_reg(s, cond, ARITH_MOV, + TCG_REG_R8, 0, rm, SHIFT_IMM_LSL(0)); + tcg_out32(s, (cond << 28) | 0xc00098 | + (rd1 << 16) | (rd0 << 12) | (rs << 8)); + } +} + +static inline void tcg_out_ld32_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05900000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05100000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_st32_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05800000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05000000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_ld32_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07900000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st32_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07800000 | + (rn << 16) | (rd << 12) | rm); +} + +/* Register pre-increment with base writeback. */ +static inline void tcg_out_ld32_rwb(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07b00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st32_rwb(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07a00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld16u_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01d000b0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x015000b0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_st16u_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01c000b0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x014000b0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_ld16u_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x019000b0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st16u_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x018000b0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld16s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01d000f0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x015000f0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_st16s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01c000f0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x014000f0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_ld16s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x019000f0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st16s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x018000f0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld8_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05d00000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05500000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_st8_12(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x05c00000 | + (rn << 16) | (rd << 12) | (im & 0xfff)); + else + tcg_out32(s, (cond << 28) | 0x05400000 | + (rn << 16) | (rd << 12) | ((-im) & 0xfff)); +} + +static inline void tcg_out_ld8_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07d00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st8_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x07c00000 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld8s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01d000d0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x015000d0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_st8s_8(TCGContext *s, int cond, + int rd, int rn, tcg_target_long im) +{ + if (im >= 0) + tcg_out32(s, (cond << 28) | 0x01c000d0 | + (rn << 16) | (rd << 12) | + ((im & 0xf0) << 4) | (im & 0xf)); + else + tcg_out32(s, (cond << 28) | 0x014000d0 | + (rn << 16) | (rd << 12) | + (((-im) & 0xf0) << 4) | ((-im) & 0xf)); +} + +static inline void tcg_out_ld8s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x019000d0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_st8s_r(TCGContext *s, int cond, + int rd, int rn, int rm) +{ + tcg_out32(s, (cond << 28) | 0x018000d0 | + (rn << 16) | (rd << 12) | rm); +} + +static inline void tcg_out_ld32u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld32_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld32_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_st32(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_st32_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_st32_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld16u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld16u_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld16u_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld16s(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld16s_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld16s_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_st16u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_st16u_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_st16u_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld8u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld8_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld8_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_ld8s(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xff || offset < -0xff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_ld8s_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_ld8s_8(s, cond, rd, rn, offset); +} + +static inline void tcg_out_st8u(TCGContext *s, int cond, + int rd, int rn, int32_t offset) +{ + if (offset > 0xfff || offset < -0xfff) { + tcg_out_movi32(s, cond, TCG_REG_R8, offset); + tcg_out_st8_r(s, cond, rd, rn, TCG_REG_R8); + } else + tcg_out_st8_12(s, cond, rd, rn, offset); +} + +static inline void tcg_out_goto(TCGContext *s, int cond, uint32_t addr) +{ + int32_t val; + + val = addr - (tcg_target_long) s->code_ptr; + if (val - 8 < 0x01fffffd && val - 8 > -0x01fffffd) + tcg_out_b(s, cond, val); + else { +#if 1 + tcg_abort(); +#else + if (cond == COND_AL) { + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + tcg_out32(s, addr); /* XXX: This is l->u.value, can we use it? */ + } else { + tcg_out_movi32(s, cond, TCG_REG_R8, val - 8); + tcg_out_dat_reg(s, cond, ARITH_ADD, + 15, 15, TCG_REG_R8, SHIFT_IMM_LSL(0)); + } +#endif + } +} + +static inline void tcg_out_call(TCGContext *s, int cond, uint32_t addr) +{ + int32_t val; + +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, TCG_REG_R8, 0, 14, SHIFT_IMM_LSL(0)); +#endif + + val = addr - (tcg_target_long) s->code_ptr; + if (val < 0x01fffffd && val > -0x01fffffd) + tcg_out_bl(s, cond, val); + else { +#if 1 + tcg_abort(); +#else + if (cond == COND_AL) { + tcg_out_dat_imm(s, cond, ARITH_ADD, 14, 15, 4); + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + tcg_out32(s, addr); /* XXX: This is l->u.value, can we use it? */ + } else { + tcg_out_movi32(s, cond, TCG_REG_R9, addr); + tcg_out_dat_imm(s, cond, ARITH_MOV, 14, 0, 15); + tcg_out_bx(s, cond, TCG_REG_R9); + } +#endif + } + +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, TCG_REG_R8, SHIFT_IMM_LSL(0)); +#endif +} + +static inline void tcg_out_callr(TCGContext *s, int cond, int arg) +{ +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, TCG_REG_R8, 0, 14, SHIFT_IMM_LSL(0)); +#endif + /* TODO: on ARMv5 and ARMv6 replace with tcg_out_blx(s, cond, arg); */ + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, 15, SHIFT_IMM_LSL(0)); + tcg_out_bx(s, cond, arg); +#ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, TCG_REG_R8, SHIFT_IMM_LSL(0)); +#endif +} + +static inline void tcg_out_goto_label(TCGContext *s, int cond, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) + tcg_out_goto(s, cond, l->u.value); + else if (cond == COND_AL) { + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + tcg_out_reloc(s, s->code_ptr, R_ARM_ABS32, label_index, 31337); + s->code_ptr += 4; + } else { + /* Probably this should be preferred even for COND_AL... */ + tcg_out_reloc(s, s->code_ptr, R_ARM_PC24, label_index, 31337); + tcg_out_b_noaddr(s, cond); + } +} + +static void tcg_out_div_helper(TCGContext *s, int cond, const TCGArg *args, + void *helper_div, void *helper_rem, int shift) +{ + int div_reg = args[0]; + int rem_reg = args[1]; + + /* stmdb sp!, { r0 - r3, ip, lr } */ + /* (Note that we need an even number of registers as per EABI) */ + tcg_out32(s, (cond << 28) | 0x092d500f); + + tcg_out_dat_reg(s, cond, ARITH_MOV, 0, 0, args[2], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 1, 0, args[3], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 2, 0, args[4], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 3, 0, 2, shift); + + tcg_out_call(s, cond, (uint32_t) helper_div); + tcg_out_dat_reg(s, cond, ARITH_MOV, 8, 0, 0, SHIFT_IMM_LSL(0)); + + /* ldmia sp, { r0 - r3, fp, lr } */ + tcg_out32(s, (cond << 28) | 0x089d500f); + + tcg_out_dat_reg(s, cond, ARITH_MOV, 0, 0, args[2], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 1, 0, args[3], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 2, 0, args[4], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, 3, 0, 2, shift); + + tcg_out_call(s, cond, (uint32_t) helper_rem); + + tcg_out_dat_reg(s, cond, ARITH_MOV, rem_reg, 0, 0, SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, cond, ARITH_MOV, div_reg, 0, 8, SHIFT_IMM_LSL(0)); + + /* ldr r0, [sp], #4 */ + if (rem_reg != 0 && div_reg != 0) + tcg_out32(s, (cond << 28) | 0x04bd0004); + /* ldr r1, [sp], #4 */ + if (rem_reg != 1 && div_reg != 1) + tcg_out32(s, (cond << 28) | 0x04bd1004); + /* ldr r2, [sp], #4 */ + if (rem_reg != 2 && div_reg != 2) + tcg_out32(s, (cond << 28) | 0x04bd2004); + /* ldr r3, [sp], #4 */ + if (rem_reg != 3 && div_reg != 3) + tcg_out32(s, (cond << 28) | 0x04bd3004); + /* ldr ip, [sp], #4 */ + if (rem_reg != 12 && div_reg != 12) + tcg_out32(s, (cond << 28) | 0x04bdc004); + /* ldr lr, [sp], #4 */ + if (rem_reg != 14 && div_reg != 14) + tcg_out32(s, (cond << 28) | 0x04bde004); +} + +#ifdef CONFIG_SOFTMMU + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +#define TLB_SHIFT (CPU_TLB_ENTRY_BITS + CPU_TLB_BITS) + +static inline void tcg_out_qemu_ld(TCGContext *s, int cond, + const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2; +#ifdef CONFIG_SOFTMMU + int mem_index, s_bits; +# if TARGET_LONG_BITS == 64 + int addr_reg2; +# endif + uint32_t *label_ptr; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#ifdef CONFIG_SOFTMMU +# if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +# endif + mem_index = *args; + s_bits = opc & 3; + + /* Should generate something like the following: + * shr r8, addr_reg, #TARGET_PAGE_BITS + * and r0, r8, #(CPU_TLB_SIZE - 1) @ Assumption: CPU_TLB_BITS <= 8 + * add r0, env, r0 lsl #CPU_TLB_ENTRY_BITS + */ +# if CPU_TLB_BITS > 8 +# error +# endif + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + 8, 0, addr_reg, SHIFT_IMM_LSR(TARGET_PAGE_BITS)); + tcg_out_dat_imm(s, COND_AL, ARITH_AND, + 0, 8, CPU_TLB_SIZE - 1); + tcg_out_dat_reg(s, COND_AL, ARITH_ADD, + 0, TCG_AREG0, 0, SHIFT_IMM_LSL(CPU_TLB_ENTRY_BITS)); + /* In the + * ldr r1 [r0, #(offsetof(CPUState, tlb_table[mem_index][0].addr_read))] + * below, the offset is likely to exceed 12 bits if mem_index != 0 and + * not exceed otherwise, so use an + * add r0, r0, #(mem_index * sizeof *CPUState.tlb_table) + * before. + */ + if (mem_index) + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 0, 0, + (mem_index << (TLB_SHIFT & 1)) | + ((16 - (TLB_SHIFT >> 1)) << 8)); + tcg_out_ld32_12(s, COND_AL, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_read)); + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, + 0, 1, 8, SHIFT_IMM_LSL(TARGET_PAGE_BITS)); + /* Check alignment. */ + if (s_bits) + tcg_out_dat_imm(s, COND_EQ, ARITH_TST, + 0, addr_reg, (1 << s_bits) - 1); +# if TARGET_LONG_BITS == 64 + /* XXX: possibly we could use a block data load or writeback in + * the first access. */ + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_read) + 4); + tcg_out_dat_reg(s, COND_EQ, ARITH_CMP, + 0, 1, addr_reg2, SHIFT_IMM_LSL(0)); +# endif + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addend)); + + switch (opc) { + case 0: + tcg_out_ld8_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 0 | 4: + tcg_out_ld8s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1: + tcg_out_ld16u_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1 | 4: + tcg_out_ld16s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 2: + default: + tcg_out_ld32_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 3: + tcg_out_ld32_rwb(s, COND_EQ, data_reg, 1, addr_reg); + tcg_out_ld32_12(s, COND_EQ, data_reg2, 1, 4); + break; + } + + label_ptr = (void *) s->code_ptr; + tcg_out_b(s, COND_EQ, 8); + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 8, 0, 14, SHIFT_IMM_LSL(0)); +# endif + + /* TODO: move this code to where the constants pool will be */ + if (addr_reg) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, addr_reg, SHIFT_IMM_LSL(0)); +# if TARGET_LONG_BITS == 32 + tcg_out_dat_imm(s, cond, ARITH_MOV, 1, 0, mem_index); +# else + if (addr_reg2 != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, addr_reg2, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); +# endif + tcg_out_bl(s, cond, (tcg_target_long) qemu_ld_helpers[s_bits] - + (tcg_target_long) s->code_ptr); + + switch (opc) { + case 0 | 4: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, 0, SHIFT_IMM_LSL(24)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_ASR(24)); + break; + case 1 | 4: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, 0, SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_ASR(16)); + break; + case 0: + case 1: + case 2: + default: + if (data_reg) + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_LSL(0)); + break; + case 3: + if (data_reg != 0) + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg, 0, 0, SHIFT_IMM_LSL(0)); + if (data_reg2 != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + data_reg2, 0, 1, SHIFT_IMM_LSL(0)); + break; + } + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, 8, SHIFT_IMM_LSL(0)); +# endif + + *label_ptr += ((void *) s->code_ptr - (void *) label_ptr - 8) >> 2; +#else /* !CONFIG_SOFTMMU */ + if (GUEST_BASE) { + uint32_t offset = GUEST_BASE; + int i; + int rot; + + while (offset) { + i = ctz32(offset) & ~1; + rot = ((32 - i) << 7) & 0xf00; + + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 8, addr_reg, + ((offset >> i) & 0xff) | rot); + addr_reg = 8; + offset &= ~(0xff << i); + } + } + switch (opc) { + case 0: + tcg_out_ld8_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 0 | 4: + tcg_out_ld8s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1: + tcg_out_ld16u_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1 | 4: + tcg_out_ld16s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 2: + default: + tcg_out_ld32_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 3: + /* TODO: use block load - + * check that data_reg2 > data_reg or the other way */ + if (data_reg == addr_reg) { + tcg_out_ld32_12(s, COND_AL, data_reg2, addr_reg, 4); + tcg_out_ld32_12(s, COND_AL, data_reg, addr_reg, 0); + } else { + tcg_out_ld32_12(s, COND_AL, data_reg, addr_reg, 0); + tcg_out_ld32_12(s, COND_AL, data_reg2, addr_reg, 4); + } + break; + } +#endif +} + +static inline void tcg_out_qemu_st(TCGContext *s, int cond, + const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2; +#ifdef CONFIG_SOFTMMU + int mem_index, s_bits; +# if TARGET_LONG_BITS == 64 + int addr_reg2; +# endif + uint32_t *label_ptr; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#ifdef CONFIG_SOFTMMU +# if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +# endif + mem_index = *args; + s_bits = opc & 3; + + /* Should generate something like the following: + * shr r8, addr_reg, #TARGET_PAGE_BITS + * and r0, r8, #(CPU_TLB_SIZE - 1) @ Assumption: CPU_TLB_BITS <= 8 + * add r0, env, r0 lsl #CPU_TLB_ENTRY_BITS + */ + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + 8, 0, addr_reg, SHIFT_IMM_LSR(TARGET_PAGE_BITS)); + tcg_out_dat_imm(s, COND_AL, ARITH_AND, + 0, 8, CPU_TLB_SIZE - 1); + tcg_out_dat_reg(s, COND_AL, ARITH_ADD, + 0, TCG_AREG0, 0, SHIFT_IMM_LSL(CPU_TLB_ENTRY_BITS)); + /* In the + * ldr r1 [r0, #(offsetof(CPUState, tlb_table[mem_index][0].addr_write))] + * below, the offset is likely to exceed 12 bits if mem_index != 0 and + * not exceed otherwise, so use an + * add r0, r0, #(mem_index * sizeof *CPUState.tlb_table) + * before. + */ + if (mem_index) + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 0, 0, + (mem_index << (TLB_SHIFT & 1)) | + ((16 - (TLB_SHIFT >> 1)) << 8)); + tcg_out_ld32_12(s, COND_AL, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_write)); + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, + 0, 1, 8, SHIFT_IMM_LSL(TARGET_PAGE_BITS)); + /* Check alignment. */ + if (s_bits) + tcg_out_dat_imm(s, COND_EQ, ARITH_TST, + 0, addr_reg, (1 << s_bits) - 1); +# if TARGET_LONG_BITS == 64 + /* XXX: possibly we could use a block data load or writeback in + * the first access. */ + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addr_write) + + 4); + tcg_out_dat_reg(s, COND_EQ, ARITH_CMP, + 0, 1, addr_reg2, SHIFT_IMM_LSL(0)); +# endif + tcg_out_ld32_12(s, COND_EQ, 1, 0, + offsetof(CPUState, tlb_table[0][0].addend)); + + switch (opc) { + case 0: + tcg_out_st8_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 0 | 4: + tcg_out_st8s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1: + tcg_out_st16u_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 1 | 4: + tcg_out_st16s_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 2: + default: + tcg_out_st32_r(s, COND_EQ, data_reg, addr_reg, 1); + break; + case 3: + tcg_out_st32_rwb(s, COND_EQ, data_reg, 1, addr_reg); + tcg_out_st32_12(s, COND_EQ, data_reg2, 1, 4); + break; + } + + label_ptr = (void *) s->code_ptr; + tcg_out_b(s, COND_EQ, 8); + + /* TODO: move this code to where the constants pool will be */ + if (addr_reg) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 0, 0, addr_reg, SHIFT_IMM_LSL(0)); +# if TARGET_LONG_BITS == 32 + switch (opc) { + case 0: + tcg_out_dat_imm(s, cond, ARITH_AND, 1, data_reg, 0xff); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); + break; + case 1: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, data_reg, SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, 1, SHIFT_IMM_LSR(16)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); + break; + case 2: + if (data_reg != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, data_reg, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 2, 0, mem_index); + break; + case 3: + if (data_reg != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, data_reg, SHIFT_IMM_LSL(0)); + if (data_reg2 != 2) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg2, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + } +# else + if (addr_reg2 != 1) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 1, 0, addr_reg2, SHIFT_IMM_LSL(0)); + switch (opc) { + case 0: + tcg_out_dat_imm(s, cond, ARITH_AND, 2, data_reg, 0xff); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + case 1: + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg, SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, 2, SHIFT_IMM_LSR(16)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + case 2: + if (data_reg != 2) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg, SHIFT_IMM_LSL(0)); + tcg_out_dat_imm(s, cond, ARITH_MOV, 3, 0, mem_index); + break; + case 3: + tcg_out_dat_imm(s, cond, ARITH_MOV, 8, 0, mem_index); + tcg_out32(s, (cond << 28) | 0x052d8010); /* str r8, [sp, #-0x10]! */ + if (data_reg != 2) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 2, 0, data_reg, SHIFT_IMM_LSL(0)); + if (data_reg2 != 3) + tcg_out_dat_reg(s, cond, ARITH_MOV, + 3, 0, data_reg2, SHIFT_IMM_LSL(0)); + break; + } +# endif + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 8, 0, 14, SHIFT_IMM_LSL(0)); +# endif + + tcg_out_bl(s, cond, (tcg_target_long) qemu_st_helpers[s_bits] - + (tcg_target_long) s->code_ptr); +# if TARGET_LONG_BITS == 64 + if (opc == 3) + tcg_out_dat_imm(s, cond, ARITH_ADD, 13, 13, 0x10); +# endif + +# ifdef SAVE_LR + tcg_out_dat_reg(s, cond, ARITH_MOV, 14, 0, 8, SHIFT_IMM_LSL(0)); +# endif + + *label_ptr += ((void *) s->code_ptr - (void *) label_ptr - 8) >> 2; +#else /* !CONFIG_SOFTMMU */ + if (GUEST_BASE) { + uint32_t offset = GUEST_BASE; + int i; + int rot; + + while (offset) { + i = ctz32(offset) & ~1; + rot = ((32 - i) << 7) & 0xf00; + + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 8, addr_reg, + ((offset >> i) & 0xff) | rot); + addr_reg = 8; + offset &= ~(0xff << i); + } + } + switch (opc) { + case 0: + tcg_out_st8_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 0 | 4: + tcg_out_st8s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1: + tcg_out_st16u_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 1 | 4: + tcg_out_st16s_8(s, COND_AL, data_reg, addr_reg, 0); + break; + case 2: + default: + tcg_out_st32_12(s, COND_AL, data_reg, addr_reg, 0); + break; + case 3: + /* TODO: use block store - + * check that data_reg2 > data_reg or the other way */ + tcg_out_st32_12(s, COND_AL, data_reg, addr_reg, 0); + tcg_out_st32_12(s, COND_AL, data_reg2, addr_reg, 4); + break; + } +#endif +} + +static uint8_t *tb_ret_addr; + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: +#ifdef SAVE_LR + if (args[0] >> 8) + tcg_out_ld32_12(s, COND_AL, TCG_REG_R0, 15, 0); + else + tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R0, 0, args[0]); + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, 15, 0, 14, SHIFT_IMM_LSL(0)); + if (args[0] >> 8) + tcg_out32(s, args[0]); +#else + { + uint8_t *ld_ptr = s->code_ptr; + if (args[0] >> 8) + tcg_out_ld32_12(s, COND_AL, 0, 15, 0); + else + tcg_out_dat_imm(s, COND_AL, ARITH_MOV, 0, 0, args[0]); + tcg_out_goto(s, COND_AL, (tcg_target_ulong) tb_ret_addr); + if (args[0] >> 8) { + *ld_ptr = (uint8_t) (s->code_ptr - ld_ptr) - 8; + tcg_out32(s, args[0]); + } + } +#endif + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* Direct jump method */ +#if defined(USE_DIRECT_JUMP) + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out_b(s, COND_AL, 8); +#else + tcg_out_ld32_12(s, COND_AL, 15, 15, -4); + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out32(s, 0); +#endif + } else { + /* Indirect jump method */ +#if 1 + c = (int) (s->tb_next + args[0]) - ((int) s->code_ptr + 8); + if (c > 0xfff || c < -0xfff) { + tcg_out_movi32(s, COND_AL, TCG_REG_R0, + (tcg_target_long) (s->tb_next + args[0])); + tcg_out_ld32_12(s, COND_AL, 15, TCG_REG_R0, 0); + } else + tcg_out_ld32_12(s, COND_AL, 15, 15, c); +#else + tcg_out_ld32_12(s, COND_AL, TCG_REG_R0, 15, 0); + tcg_out_ld32_12(s, COND_AL, 15, TCG_REG_R0, 0); + tcg_out32(s, (tcg_target_long) (s->tb_next + args[0])); +#endif + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) + tcg_out_call(s, COND_AL, args[0]); + else + tcg_out_callr(s, COND_AL, args[0]); + break; + case INDEX_op_jmp: + if (const_args[0]) + tcg_out_goto(s, COND_AL, args[0]); + else + tcg_out_bx(s, COND_AL, args[0]); + break; + case INDEX_op_br: + tcg_out_goto_label(s, COND_AL, args[0]); + break; + + case INDEX_op_ld8u_i32: + tcg_out_ld8u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + tcg_out_ld8s(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + tcg_out_ld16u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + tcg_out_ld16s(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + tcg_out_ld32u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_st8_i32: + tcg_out_st8u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + tcg_out_st16u(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + tcg_out_st32(s, COND_AL, args[0], args[1], args[2]); + break; + + case INDEX_op_mov_i32: + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[1], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_movi_i32: + tcg_out_movi32(s, COND_AL, args[0], args[1]); + break; + case INDEX_op_add_i32: + c = ARITH_ADD; + goto gen_arith; + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith; + case INDEX_op_or_i32: + c = ARITH_ORR; + goto gen_arith; + case INDEX_op_xor_i32: + c = ARITH_EOR; + /* Fall through. */ + gen_arith: + if (const_args[2]) { + int rot; + rot = encode_imm(args[2]); + tcg_out_dat_imm(s, COND_AL, c, + args[0], args[1], rotl(args[2], rot) | (rot << 7)); + } else + tcg_out_dat_reg(s, COND_AL, c, + args[0], args[1], args[2], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_add2_i32: + tcg_out_dat_reg2(s, COND_AL, ARITH_ADD, ARITH_ADC, + args[0], args[1], args[2], args[3], + args[4], args[5], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_sub2_i32: + tcg_out_dat_reg2(s, COND_AL, ARITH_SUB, ARITH_SBC, + args[0], args[1], args[2], args[3], + args[4], args[5], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_neg_i32: + tcg_out_dat_imm(s, COND_AL, ARITH_RSB, args[0], args[1], 0); + break; + case INDEX_op_not_i32: + tcg_out_dat_reg(s, COND_AL, + ARITH_MVN, args[0], 0, args[1], SHIFT_IMM_LSL(0)); + break; + case INDEX_op_mul_i32: + tcg_out_mul32(s, COND_AL, args[0], args[1], args[2]); + break; + case INDEX_op_mulu2_i32: + tcg_out_umull32(s, COND_AL, args[0], args[1], args[2], args[3]); + break; + case INDEX_op_div2_i32: + tcg_out_div_helper(s, COND_AL, args, + tcg_helper_div_i64, tcg_helper_rem_i64, + SHIFT_IMM_ASR(31)); + break; + case INDEX_op_divu2_i32: + tcg_out_div_helper(s, COND_AL, args, + tcg_helper_divu_i64, tcg_helper_remu_i64, + SHIFT_IMM_LSR(31)); + break; + /* XXX: Perhaps args[2] & 0x1f is wrong */ + case INDEX_op_shl_i32: + c = const_args[2] ? + SHIFT_IMM_LSL(args[2] & 0x1f) : SHIFT_REG_LSL(args[2]); + goto gen_shift32; + case INDEX_op_shr_i32: + c = const_args[2] ? (args[2] & 0x1f) ? SHIFT_IMM_LSR(args[2] & 0x1f) : + SHIFT_IMM_LSL(0) : SHIFT_REG_LSR(args[2]); + goto gen_shift32; + case INDEX_op_sar_i32: + c = const_args[2] ? (args[2] & 0x1f) ? SHIFT_IMM_ASR(args[2] & 0x1f) : + SHIFT_IMM_LSL(0) : SHIFT_REG_ASR(args[2]); + /* Fall through. */ + gen_shift32: + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, args[0], 0, args[1], c); + break; + + case INDEX_op_brcond_i32: + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0, + args[0], args[1], SHIFT_IMM_LSL(0)); + tcg_out_goto_label(s, tcg_cond_to_arm_cond[args[2]], args[3]); + break; + case INDEX_op_brcond2_i32: + /* The resulting conditions are: + * TCG_COND_EQ --> a0 == a2 && a1 == a3, + * TCG_COND_NE --> (a0 != a2 && a1 == a3) || a1 != a3, + * TCG_COND_LT(U) --> (a0 < a2 && a1 == a3) || a1 < a3, + * TCG_COND_GE(U) --> (a0 >= a2 && a1 == a3) || (a1 >= a3 && a1 != a3), + * TCG_COND_LE(U) --> (a0 <= a2 && a1 == a3) || (a1 <= a3 && a1 != a3), + * TCG_COND_GT(U) --> (a0 > a2 && a1 == a3) || a1 > a3, + */ + tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0, + args[1], args[3], SHIFT_IMM_LSL(0)); + tcg_out_dat_reg(s, COND_EQ, ARITH_CMP, 0, + args[0], args[2], SHIFT_IMM_LSL(0)); + tcg_out_goto_label(s, tcg_cond_to_arm_cond[args[4]], args[5]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, COND_AL, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, COND_AL, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, COND_AL, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, COND_AL, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, COND_AL, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, COND_AL, args, 3); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, COND_AL, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, COND_AL, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, COND_AL, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, COND_AL, args, 3); + break; + + case INDEX_op_ext8s_i32: +#ifdef __ARM_ARCH_7A__ + /* sxtb */ + tcg_out32(s, 0xe6af0070 | (args[0] << 12) | args[1]); +#else + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[1], SHIFT_IMM_LSL(24)); + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[0], SHIFT_IMM_ASR(24)); +#endif + break; + case INDEX_op_ext16s_i32: +#ifdef __ARM_ARCH_7A__ + /* sxth */ + tcg_out32(s, 0xe6bf0070 | (args[0] << 12) | args[1]); +#else + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[1], SHIFT_IMM_LSL(16)); + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, + args[0], 0, args[0], SHIFT_IMM_ASR(16)); +#endif + break; + + default: + tcg_abort(); + } +} + +static const TCGTargetOpDef arm_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + /* TODO: "r", "r", "ri" */ + { INDEX_op_add_i32, { "r", "r", "rI" } }, + { INDEX_op_sub_i32, { "r", "r", "rI" } }, + { INDEX_op_mul_i32, { "r", "r", "r" } }, + { INDEX_op_mulu2_i32, { "r", "r", "r", "r" } }, + { INDEX_op_div2_i32, { "r", "r", "r", "1", "2" } }, + { INDEX_op_divu2_i32, { "r", "r", "r", "1", "2" } }, + { INDEX_op_and_i32, { "r", "r", "rI" } }, + { INDEX_op_or_i32, { "r", "r", "rI" } }, + { INDEX_op_xor_i32, { "r", "r", "rI" } }, + { INDEX_op_neg_i32, { "r", "r" } }, + { INDEX_op_not_i32, { "r", "r" } }, + + { INDEX_op_shl_i32, { "r", "r", "ri" } }, + { INDEX_op_shr_i32, { "r", "r", "ri" } }, + { INDEX_op_sar_i32, { "r", "r", "ri" } }, + + { INDEX_op_brcond_i32, { "r", "r" } }, + + /* TODO: "r", "r", "r", "r", "ri", "ri" */ + { INDEX_op_add2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_sub2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_brcond2_i32, { "r", "r", "r", "r" } }, + + { INDEX_op_qemu_ld8u, { "r", "x", "X" } }, + { INDEX_op_qemu_ld8s, { "r", "x", "X" } }, + { INDEX_op_qemu_ld16u, { "r", "x", "X" } }, + { INDEX_op_qemu_ld16s, { "r", "x", "X" } }, + { INDEX_op_qemu_ld32u, { "r", "x", "X" } }, + { INDEX_op_qemu_ld64, { "d", "r", "x", "X" } }, + + { INDEX_op_qemu_st8, { "x", "x", "X" } }, + { INDEX_op_qemu_st16, { "x", "x", "X" } }, + { INDEX_op_qemu_st32, { "x", "x", "X" } }, + { INDEX_op_qemu_st64, { "x", "D", "x", "X" } }, + + { INDEX_op_ext8s_i32, { "r", "r" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + /* fail safe */ + if ((1 << CPU_TLB_ENTRY_BITS) != sizeof(CPUTLBEntry)) + tcg_abort(); + + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, + ((2 << TCG_REG_R14) - 1) & ~(1 << TCG_REG_R8)); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + ((2 << TCG_REG_R3) - 1) | + (1 << TCG_REG_R12) | (1 << TCG_REG_R14)); + + tcg_regset_clear(s->reserved_regs); +#ifdef SAVE_LR + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R14); +#endif + tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R8); + + tcg_add_target_add_op_defs(arm_op_defs); +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_ld32u(s, COND_AL, arg, arg1, arg2); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_st32(s, COND_AL, arg, arg1, arg2); +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val > 0) + if (val < 0x100) + tcg_out_dat_imm(s, COND_AL, ARITH_ADD, reg, reg, val); + else + tcg_abort(); + else if (val < 0) { + if (val > -0x100) + tcg_out_dat_imm(s, COND_AL, ARITH_SUB, reg, reg, -val); + else + tcg_abort(); + } +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_dat_reg(s, COND_AL, ARITH_MOV, ret, 0, arg, SHIFT_IMM_LSL(0)); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + tcg_out_movi32(s, COND_AL, ret, arg); +} + +void tcg_target_qemu_prologue(TCGContext *s) +{ + /* stmdb sp!, { r9 - r11, lr } */ + tcg_out32(s, (COND_AL << 28) | 0x092d4e00); + + tcg_out_bx(s, COND_AL, TCG_REG_R0); + tb_ret_addr = s->code_ptr; + + /* ldmia sp!, { r9 - r11, pc } */ + tcg_out32(s, (COND_AL << 28) | 0x08bd8e00); +} diff --git a/qemu/qemu-git/tcg/arm/tcg-target.h b/qemu/qemu-git/tcg/arm/tcg-target.h new file mode 100644 index 0000000..71e1ec5 --- /dev/null +++ b/qemu/qemu-git/tcg/arm/tcg-target.h @@ -0,0 +1,85 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * Copyright (c) 2008 Andrzej Zaborowski + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_ARM 1 + +#define TCG_TARGET_REG_BITS 32 +#undef TCG_TARGET_WORDS_BIGENDIAN +#undef TCG_TARGET_HAS_div_i32 +#undef TCG_TARGET_HAS_div_i64 +#undef TCG_TARGET_HAS_bswap32_i32 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_neg_i32 +#undef TCG_TARGET_HAS_neg_i64 +#define TCG_TARGET_HAS_not_i32 +#undef TCG_TARGET_STACK_GROWSUP + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, +}; + +#define TCG_TARGET_NB_REGS 15 + +#define TCG_CT_CONST_ARM 0x100 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R13 +#define TCG_TARGET_STACK_ALIGN 8 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +#define TCG_TARGET_HAS_GUEST_BASE + +enum { + /* Note: must be synced with dyngen-exec.h */ + TCG_AREG0 = TCG_REG_R7, + TCG_AREG1 = TCG_REG_R4, + TCG_AREG2 = TCG_REG_R5, +}; + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +#if QEMU_GNUC_PREREQ(4, 1) + __builtin___clear_cache((char *) start, (char *) stop); +#else + register unsigned long _beg __asm ("a1") = start; + register unsigned long _end __asm ("a2") = stop; + register unsigned long _flg __asm ("a3") = 0; + __asm __volatile__ ("swi 0x9f0002" : : "r" (_beg), "r" (_end), "r" (_flg)); +#endif +} diff --git a/qemu/qemu-git/tcg/hppa/.svn/all-wcprops b/qemu/qemu-git/tcg/hppa/.svn/all-wcprops new file mode 100644 index 0000000..5273562 --- /dev/null +++ b/qemu/qemu-git/tcg/hppa/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/hppa +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/hppa/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/hppa/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/hppa/.svn/entries b/qemu/qemu-git/tcg/hppa/.svn/entries new file mode 100644 index 0000000..f6255b0 --- /dev/null +++ b/qemu/qemu-git/tcg/hppa/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/hppa +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +3648cf4b85c8da40b9d2ae3c8a3f86ee +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +29464 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +7094eee931532fab56eb908158df4484 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +5645 + diff --git a/qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..ddce60c --- /dev/null +++ b/qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,975 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%r0", + "%r1", + "%rp", + "%r3", + "%r4", + "%r5", + "%r6", + "%r7", + "%r8", + "%r9", + "%r10", + "%r11", + "%r12", + "%r13", + "%r14", + "%r15", + "%r16", + "%r17", + "%r18", + "%r19", + "%r20", + "%r21", + "%r22", + "%r23", + "%r24", + "%r25", + "%r26", + "%dp", + "%ret0", + "%ret1", + "%sp", + "%r31", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + + TCG_REG_R17, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, +}; + +static const int tcg_target_call_iarg_regs[4] = { + TCG_REG_R26, + TCG_REG_R25, + TCG_REG_R24, + TCG_REG_R23, +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_RET0, + TCG_REG_RET1, +}; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + switch (type) { + case R_PARISC_PCREL17F: + hppa_patch17f((uint32_t *)code_ptr, value, addend); + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 4; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; + case 'L': /* qemu_ld/st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R26); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R25); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R24); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R23); + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + + /* TODO */ + + return 0; +} + +#define INSN_OP(x) ((x) << 26) +#define INSN_EXT3BR(x) ((x) << 13) +#define INSN_EXT3SH(x) ((x) << 10) +#define INSN_EXT4(x) ((x) << 6) +#define INSN_EXT5(x) (x) +#define INSN_EXT6(x) ((x) << 6) +#define INSN_EXT7(x) ((x) << 6) +#define INSN_EXT8A(x) ((x) << 6) +#define INSN_EXT8B(x) ((x) << 5) +#define INSN_T(x) (x) +#define INSN_R1(x) ((x) << 16) +#define INSN_R2(x) ((x) << 21) +#define INSN_DEP_LEN(x) (32 - (x)) +#define INSN_SHDEP_CP(x) ((31 - (x)) << 5) +#define INSN_SHDEP_P(x) ((x) << 5) +#define INSN_COND(x) ((x) << 13) + +#define COND_NEVER 0 +#define COND_EQUAL 1 +#define COND_LT 2 +#define COND_LTEQ 3 +#define COND_LTU 4 +#define COND_LTUEQ 5 +#define COND_SV 6 +#define COND_OD 7 + + +/* Logical ADD */ +#define ARITH_ADD (INSN_OP(0x02) | INSN_EXT6(0x28)) +#define ARITH_AND (INSN_OP(0x02) | INSN_EXT6(0x08)) +#define ARITH_OR (INSN_OP(0x02) | INSN_EXT6(0x09)) +#define ARITH_XOR (INSN_OP(0x02) | INSN_EXT6(0x0a)) +#define ARITH_SUB (INSN_OP(0x02) | INSN_EXT6(0x10)) + +#define SHD (INSN_OP(0x34) | INSN_EXT3SH(2)) +#define VSHD (INSN_OP(0x34) | INSN_EXT3SH(0)) +#define DEP (INSN_OP(0x35) | INSN_EXT3SH(3)) +#define ZDEP (INSN_OP(0x35) | INSN_EXT3SH(2)) +#define ZVDEP (INSN_OP(0x35) | INSN_EXT3SH(0)) +#define EXTRU (INSN_OP(0x34) | INSN_EXT3SH(6)) +#define EXTRS (INSN_OP(0x34) | INSN_EXT3SH(7)) +#define VEXTRS (INSN_OP(0x34) | INSN_EXT3SH(5)) + +#define SUBI (INSN_OP(0x25)) +#define MTCTL (INSN_OP(0x00) | INSN_EXT8B(0xc2)) + +#define BL (INSN_OP(0x3a) | INSN_EXT3BR(0)) +#define BLE_SR4 (INSN_OP(0x39) | (1 << 13)) +#define BV (INSN_OP(0x3a) | INSN_EXT3BR(6)) +#define BV_N (INSN_OP(0x3a) | INSN_EXT3BR(6) | 2) +#define LDIL (INSN_OP(0x08)) +#define LDO (INSN_OP(0x0d)) + +#define LDB (INSN_OP(0x10)) +#define LDH (INSN_OP(0x11)) +#define LDW (INSN_OP(0x12)) +#define LDWM (INSN_OP(0x13)) + +#define STB (INSN_OP(0x18)) +#define STH (INSN_OP(0x19)) +#define STW (INSN_OP(0x1a)) +#define STWM (INSN_OP(0x1b)) + +#define COMBT (INSN_OP(0x20)) +#define COMBF (INSN_OP(0x22)) + +static int lowsignext(uint32_t val, int start, int length) +{ + return (((val << 1) & ~(~0 << length)) | + ((val >> (length - 1)) & 1)) << start; +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + /* PA1.1 defines COPY as OR r,0,t */ + tcg_out32(s, ARITH_OR | INSN_T(ret) | INSN_R1(arg) | INSN_R2(TCG_REG_R0)); + + /* PA2.0 defines COPY as LDO 0(r),t + * but hppa-dis.c is unaware of this definition */ + /* tcg_out32(s, LDO | INSN_R1(ret) | INSN_R2(arg) | reassemble_14(0)); */ +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + if (arg == (arg & 0x1fff)) { + tcg_out32(s, LDO | INSN_R1(ret) | INSN_R2(TCG_REG_R0) | + reassemble_14(arg)); + } else { + tcg_out32(s, LDIL | INSN_R2(ret) | + reassemble_21(lrsel((uint32_t)arg, 0))); + if (arg & 0x7ff) + tcg_out32(s, LDO | INSN_R1(ret) | INSN_R2(ret) | + reassemble_14(rrsel((uint32_t)arg, 0))); + } +} + +static inline void tcg_out_ld_raw(TCGContext *s, int ret, + tcg_target_long arg) +{ + tcg_out32(s, LDIL | INSN_R2(ret) | + reassemble_21(lrsel((uint32_t)arg, 0))); + tcg_out32(s, LDW | INSN_R1(ret) | INSN_R2(ret) | + reassemble_14(rrsel((uint32_t)arg, 0))); +} + +static inline void tcg_out_ld_ptr(TCGContext *s, int ret, + tcg_target_long arg) +{ + tcg_out_ld_raw(s, ret, arg); +} + +static inline void tcg_out_ldst(TCGContext *s, int ret, int addr, int offset, + int op) +{ + if (offset == (offset & 0xfff)) + tcg_out32(s, op | INSN_R1(ret) | INSN_R2(addr) | + reassemble_14(offset)); + else { + fprintf(stderr, "unimplemented %s with offset %d\n", __func__, offset); + tcg_abort(); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + fprintf(stderr, "unimplemented %s\n", __func__); + tcg_abort(); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + fprintf(stderr, "unimplemented %s\n", __func__); + tcg_abort(); +} + +static inline void tcg_out_arith(TCGContext *s, int t, int r1, int r2, int op) +{ + tcg_out32(s, op | INSN_T(t) | INSN_R1(r1) | INSN_R2(r2)); +} + +static inline void tcg_out_arithi(TCGContext *s, int t, int r1, + tcg_target_long val, int op) +{ + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R20, val); + tcg_out_arith(s, t, r1, TCG_REG_R20, op); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + tcg_out_arithi(s, reg, reg, val, ARITH_ADD); +} + +static inline void tcg_out_nop(TCGContext *s) +{ + tcg_out32(s, ARITH_OR | INSN_T(TCG_REG_R0) | INSN_R1(TCG_REG_R0) | + INSN_R2(TCG_REG_R0)); +} + +static inline void tcg_out_ext8s(TCGContext *s, int ret, int arg) { + tcg_out32(s, EXTRS | INSN_R1(ret) | INSN_R2(arg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(8)); +} + +static inline void tcg_out_ext16s(TCGContext *s, int ret, int arg) { + tcg_out32(s, EXTRS | INSN_R1(ret) | INSN_R2(arg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(16)); +} + +static inline void tcg_out_bswap16(TCGContext *s, int ret, int arg) { + if(ret != arg) + tcg_out_mov(s, ret, arg); + tcg_out32(s, DEP | INSN_R2(ret) | INSN_R1(ret) | + INSN_SHDEP_CP(15) | INSN_DEP_LEN(8)); + tcg_out32(s, SHD | INSN_T(ret) | INSN_R1(TCG_REG_R0) | + INSN_R2(ret) | INSN_SHDEP_CP(8)); +} + +static inline void tcg_out_bswap32(TCGContext *s, int ret, int arg, int temp) { + tcg_out32(s, SHD | INSN_T(temp) | INSN_R1(arg) | + INSN_R2(arg) | INSN_SHDEP_CP(16)); + tcg_out32(s, DEP | INSN_R2(temp) | INSN_R1(temp) | + INSN_SHDEP_CP(15) | INSN_DEP_LEN(8)); + tcg_out32(s, SHD | INSN_T(ret) | INSN_R1(arg) | + INSN_R2(temp) | INSN_SHDEP_CP(8)); +} + +static inline void tcg_out_call(TCGContext *s, void *func) +{ + uint32_t val = (uint32_t)__canonicalize_funcptr_for_compare(func); + tcg_out32(s, LDIL | INSN_R2(TCG_REG_R20) | + reassemble_21(lrsel(val, 0))); + tcg_out32(s, BLE_SR4 | INSN_R2(TCG_REG_R20) | + reassemble_17(rrsel(val, 0) >> 2)); + tcg_out_mov(s, TCG_REG_RP, TCG_REG_R31); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint32_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + + r0 = TCG_REG_R26; + r1 = TCG_REG_R25; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out32(s, SHD | INSN_T(r1) | INSN_R1(TCG_REG_R0) | INSN_R2(r1) | + INSN_SHDEP_CP(TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)); + + tcg_out_arithi(s, r0, r0, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + tcg_out_arithi(s, r1, r1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS, + ARITH_AND); + + tcg_out_arith(s, r1, r1, TCG_AREG0, ARITH_ADD); + tcg_out_arithi(s, r1, r1, + offsetof(CPUState, tlb_table[mem_index][0].addr_read), + ARITH_ADD); + + tcg_out_ldst(s, TCG_REG_R20, r1, 0, LDW); + +#if TARGET_LONG_BITS == 32 + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ +#else + /* if not equal, jump to label3 */ + label3_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBF | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ + + tcg_out_ldst(s, TCG_REG_R20, r1, 4, LDW); + + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(addr_reg2) | + INSN_COND(COND_EQUAL)); + tcg_out_nop(s); /* delay slot */ + + /* label3: */ + *label3_ptr |= reassemble_12((uint32_t *)s->code_ptr - label3_ptr - 2); +#endif + +#if TARGET_LONG_BITS == 32 + tcg_out_mov(s, TCG_REG_R26, addr_reg); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R25, mem_index); +#else + tcg_out_mov(s, TCG_REG_R26, addr_reg); + tcg_out_mov(s, TCG_REG_R25, addr_reg2); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R24, mem_index); +#endif + + tcg_out_call(s, qemu_ld_helpers[s_bits]); + + switch(opc) { + case 0 | 4: + tcg_out_ext8s(s, data_reg, TCG_REG_RET0); + break; + case 1 | 4: + tcg_out_ext16s(s, data_reg, TCG_REG_RET0); + break; + case 0: + case 1: + case 2: + default: + tcg_out_mov(s, data_reg, TCG_REG_RET0); + break; + case 3: + tcg_abort(); + tcg_out_mov(s, data_reg, TCG_REG_RET0); + tcg_out_mov(s, data_reg2, TCG_REG_RET1); + break; + } + + /* jump to label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, BL | INSN_R2(TCG_REG_R0) | 2); + + /* label1: */ + *label1_ptr |= reassemble_12((uint32_t *)s->code_ptr - label1_ptr - 2); + + tcg_out_arithi(s, TCG_REG_R20, r1, + offsetof(CPUTLBEntry, addend) - offsetof(CPUTLBEntry, addr_read), + ARITH_ADD); + tcg_out_ldst(s, TCG_REG_R20, TCG_REG_R20, 0, LDW); + tcg_out_arith(s, r0, r0, TCG_REG_R20, ARITH_ADD); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out_ldst(s, data_reg, r0, 0, LDB); + break; + case 0 | 4: + tcg_out_ldst(s, data_reg, r0, 0, LDB); + tcg_out_ext8s(s, data_reg, data_reg); + break; + case 1: + tcg_out_ldst(s, data_reg, r0, 0, LDH); + if (bswap) + tcg_out_bswap16(s, data_reg, data_reg); + break; + case 1 | 4: + tcg_out_ldst(s, data_reg, r0, 0, LDH); + if (bswap) + tcg_out_bswap16(s, data_reg, data_reg); + tcg_out_ext16s(s, data_reg, data_reg); + break; + case 2: + tcg_out_ldst(s, data_reg, r0, 0, LDW); + if (bswap) + tcg_out_bswap32(s, data_reg, data_reg, TCG_REG_R20); + break; + case 3: + tcg_abort(); + if (!bswap) { + tcg_out_ldst(s, data_reg, r0, 0, LDW); + tcg_out_ldst(s, data_reg2, r0, 4, LDW); + } else { + tcg_out_ldst(s, data_reg, r0, 4, LDW); + tcg_out_bswap32(s, data_reg, data_reg, TCG_REG_R20); + tcg_out_ldst(s, data_reg2, r0, 0, LDW); + tcg_out_bswap32(s, data_reg2, data_reg2, TCG_REG_R20); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr |= reassemble_17((uint32_t *)s->code_ptr - label2_ptr - 2); +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint32_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + + s_bits = opc; + + r0 = TCG_REG_R26; + r1 = TCG_REG_R25; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out32(s, SHD | INSN_T(r1) | INSN_R1(TCG_REG_R0) | INSN_R2(r1) | + INSN_SHDEP_CP(TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)); + + tcg_out_arithi(s, r0, r0, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + tcg_out_arithi(s, r1, r1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS, + ARITH_AND); + + tcg_out_arith(s, r1, r1, TCG_AREG0, ARITH_ADD); + tcg_out_arithi(s, r1, r1, + offsetof(CPUState, tlb_table[mem_index][0].addr_write), + ARITH_ADD); + + tcg_out_ldst(s, TCG_REG_R20, r1, 0, LDW); + +#if TARGET_LONG_BITS == 32 + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ +#else + /* if not equal, jump to label3 */ + label3_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBF | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ + + tcg_out_ldst(s, TCG_REG_R20, r1, 4, LDW); + + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(addr_reg2) | + INSN_COND(COND_EQUAL)); + tcg_out_nop(s); /* delay slot */ + + /* label3: */ + *label3_ptr |= reassemble_12((uint32_t *)s->code_ptr - label3_ptr - 2); +#endif + + tcg_out_mov(s, TCG_REG_R26, addr_reg); +#if TARGET_LONG_BITS == 64 + tcg_out_mov(s, TCG_REG_R25, addr_reg2); + if (opc == 3) { + tcg_abort(); + tcg_out_mov(s, TCG_REG_R24, data_reg); + tcg_out_mov(s, TCG_REG_R23, data_reg2); + /* TODO: push mem_index */ + tcg_abort(); + } else { + switch(opc) { + case 0: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R24) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(8)); + break; + case 1: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R24) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(16)); + break; + case 2: + tcg_out_mov(s, TCG_REG_R24, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R23, mem_index); + } +#else + if (opc == 3) { + tcg_abort(); + tcg_out_mov(s, TCG_REG_R25, data_reg); + tcg_out_mov(s, TCG_REG_R24, data_reg2); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R23, mem_index); + } else { + switch(opc) { + case 0: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R25) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(8)); + break; + case 1: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R25) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(16)); + break; + case 2: + tcg_out_mov(s, TCG_REG_R25, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R24, mem_index); + } +#endif + tcg_out_call(s, qemu_st_helpers[s_bits]); + + /* jump to label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, BL | INSN_R2(TCG_REG_R0) | 2); + + /* label1: */ + *label1_ptr |= reassemble_12((uint32_t *)s->code_ptr - label1_ptr - 2); + + tcg_out_arithi(s, TCG_REG_R20, r1, + offsetof(CPUTLBEntry, addend) - offsetof(CPUTLBEntry, addr_write), + ARITH_ADD); + tcg_out_ldst(s, TCG_REG_R20, TCG_REG_R20, 0, LDW); + tcg_out_arith(s, r0, r0, TCG_REG_R20, ARITH_ADD); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out_ldst(s, data_reg, r0, 0, STB); + break; + case 1: + if (bswap) { + tcg_out_bswap16(s, TCG_REG_R20, data_reg); + data_reg = TCG_REG_R20; + } + tcg_out_ldst(s, data_reg, r0, 0, STH); + break; + case 2: + if (bswap) { + tcg_out_bswap32(s, TCG_REG_R20, data_reg, TCG_REG_R20); + data_reg = TCG_REG_R20; + } + tcg_out_ldst(s, data_reg, r0, 0, STW); + break; + case 3: + tcg_abort(); + if (!bswap) { + tcg_out_ldst(s, data_reg, r0, 0, STW); + tcg_out_ldst(s, data_reg2, r0, 4, STW); + } else { + tcg_out_bswap32(s, TCG_REG_R20, data_reg, TCG_REG_R20); + tcg_out_ldst(s, TCG_REG_R20, r0, 4, STW); + tcg_out_bswap32(s, TCG_REG_R20, data_reg2, TCG_REG_R20); + tcg_out_ldst(s, TCG_REG_R20, r0, 0, STW); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr |= reassemble_17((uint32_t *)s->code_ptr - label2_ptr - 2); +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_RET0, args[0]); + tcg_out32(s, BV_N | INSN_R2(TCG_REG_R18)); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + fprintf(stderr, "goto_tb direct\n"); + tcg_abort(); + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R20, args[0]); + tcg_out32(s, BV_N | INSN_R2(TCG_REG_R20)); + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + } else { + /* indirect jump method */ + tcg_out_ld_ptr(s, TCG_REG_R20, + (tcg_target_long)(s->tb_next + args[0])); + tcg_out32(s, BV_N | INSN_R2(TCG_REG_R20)); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + tcg_out32(s, BLE_SR4 | INSN_R2(args[0])); + tcg_out_mov(s, TCG_REG_RP, TCG_REG_R31); + break; + case INDEX_op_jmp: + fprintf(stderr, "unimplemented jmp\n"); + tcg_abort(); + break; + case INDEX_op_br: + fprintf(stderr, "unimplemented br\n"); + tcg_abort(); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], (uint32_t)args[1]); + break; + + case INDEX_op_ld8u_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDB); + break; + case INDEX_op_ld8s_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDB); + tcg_out_ext8s(s, args[0], args[0]); + break; + case INDEX_op_ld16u_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDH); + break; + case INDEX_op_ld16s_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDH); + tcg_out_ext16s(s, args[0], args[0]); + break; + case INDEX_op_ld_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDW); + break; + + case INDEX_op_st8_i32: + tcg_out_ldst(s, args[0], args[1], args[2], STB); + break; + case INDEX_op_st16_i32: + tcg_out_ldst(s, args[0], args[1], args[2], STH); + break; + case INDEX_op_st_i32: + tcg_out_ldst(s, args[0], args[1], args[2], STW); + break; + + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith; + case INDEX_op_or_i32: + c = ARITH_OR; + goto gen_arith; + case INDEX_op_xor_i32: + c = ARITH_XOR; + goto gen_arith; + case INDEX_op_add_i32: + c = ARITH_ADD; + goto gen_arith; + + case INDEX_op_shl_i32: + tcg_out32(s, SUBI | INSN_R1(TCG_REG_R20) | INSN_R2(args[2]) | + lowsignext(0x1f, 0, 11)); + tcg_out32(s, MTCTL | INSN_R2(11) | INSN_R1(TCG_REG_R20)); + tcg_out32(s, ZVDEP | INSN_R2(args[0]) | INSN_R1(args[1]) | + INSN_DEP_LEN(32)); + break; + case INDEX_op_shr_i32: + tcg_out32(s, MTCTL | INSN_R2(11) | INSN_R1(args[2])); + tcg_out32(s, VSHD | INSN_T(args[0]) | INSN_R1(TCG_REG_R0) | + INSN_R2(args[1])); + break; + case INDEX_op_sar_i32: + tcg_out32(s, SUBI | INSN_R1(TCG_REG_R20) | INSN_R2(args[2]) | + lowsignext(0x1f, 0, 11)); + tcg_out32(s, MTCTL | INSN_R2(11) | INSN_R1(TCG_REG_R20)); + tcg_out32(s, VEXTRS | INSN_R1(args[0]) | INSN_R2(args[1]) | + INSN_DEP_LEN(32)); + break; + + case INDEX_op_mul_i32: + fprintf(stderr, "unimplemented mul\n"); + tcg_abort(); + break; + case INDEX_op_mulu2_i32: + fprintf(stderr, "unimplemented mulu2\n"); + tcg_abort(); + break; + case INDEX_op_div2_i32: + fprintf(stderr, "unimplemented div2\n"); + tcg_abort(); + break; + case INDEX_op_divu2_i32: + fprintf(stderr, "unimplemented divu2\n"); + tcg_abort(); + break; + + case INDEX_op_brcond_i32: + fprintf(stderr, "unimplemented brcond\n"); + tcg_abort(); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + + default: + fprintf(stderr, "unknown opcode 0x%x\n", opc); + tcg_abort(); + } + return; + +gen_arith: + tcg_out_arith(s, args[0], args[1], args[2], c); +} + +static const TCGTargetOpDef hppa_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + + { INDEX_op_call, { "r" } }, + { INDEX_op_jmp, { "r" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "r" } }, + { INDEX_op_sub_i32, { "r", "r", "r" } }, + { INDEX_op_and_i32, { "r", "r", "r" } }, + { INDEX_op_or_i32, { "r", "r", "r" } }, + { INDEX_op_xor_i32, { "r", "r", "r" } }, + + { INDEX_op_shl_i32, { "r", "r", "r" } }, + { INDEX_op_shr_i32, { "r", "r", "r" } }, + { INDEX_op_sar_i32, { "r", "r", "r" } }, + + { INDEX_op_brcond_i32, { "r", "r" } }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L" } }, +#else + { INDEX_op_qemu_ld8u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L", "L" } }, +#endif + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_R20) | + (1 << TCG_REG_R21) | + (1 << TCG_REG_R22) | + (1 << TCG_REG_R23) | + (1 << TCG_REG_R24) | + (1 << TCG_REG_R25) | + (1 << TCG_REG_R26)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R0); /* hardwired to zero */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R1); /* addil target */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_RP); /* link register */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R3); /* frame pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R18); /* return pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R19); /* clobbered w/o pic */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R20); /* reserved */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_DP); /* data pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_SP); /* stack pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R31); /* ble link reg */ + + tcg_add_target_add_op_defs(hppa_op_defs); +} diff --git a/qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..7ab6f0c --- /dev/null +++ b/qemu/qemu-git/tcg/hppa/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,203 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define TCG_TARGET_HPPA 1 + +#if defined(_PA_RISC1_1) +#define TCG_TARGET_REG_BITS 32 +#else +#error unsupported +#endif + +#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_RP, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_DP, + TCG_REG_RET0, + TCG_REG_RET1, + TCG_REG_SP, + TCG_REG_R31, +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_SP +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_STACK_GROWSUP + +/* optional instructions */ +//#define TCG_TARGET_HAS_ext8s_i32 +//#define TCG_TARGET_HAS_ext16s_i32 +//#define TCG_TARGET_HAS_bswap16_i32 +//#define TCG_TARGET_HAS_bswap32_i32 + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_R17 +#define TCG_AREG1 TCG_REG_R14 +#define TCG_AREG2 TCG_REG_R15 + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ + start &= ~31; + while (start <= stop) + { + asm volatile ("fdc 0(%0)\n" + "sync\n" + "fic 0(%%sr4, %0)\n" + "sync\n" + : : "r"(start) : "memory"); + start += 32; + } +} + +/* supplied by libgcc */ +extern void *__canonicalize_funcptr_for_compare(void *); + +/* Field selection types defined by hppa */ +#define rnd(x) (((x)+0x1000)&~0x1fff) +/* lsel: select left 21 bits */ +#define lsel(v,a) (((v)+(a))>>11) +/* rsel: select right 11 bits */ +#define rsel(v,a) (((v)+(a))&0x7ff) +/* lrsel with rounding of addend to nearest 8k */ +#define lrsel(v,a) (((v)+rnd(a))>>11) +/* rrsel with rounding of addend to nearest 8k */ +#define rrsel(v,a) ((((v)+rnd(a))&0x7ff)+((a)-rnd(a))) + +#define mask(x,sz) ((x) & ~((1<<(sz))-1)) + +static inline int reassemble_12(int as12) +{ + return (((as12 & 0x800) >> 11) | + ((as12 & 0x400) >> 8) | + ((as12 & 0x3ff) << 3)); +} + +static inline int reassemble_14(int as14) +{ + return (((as14 & 0x1fff) << 1) | + ((as14 & 0x2000) >> 13)); +} + +static inline int reassemble_17(int as17) +{ + return (((as17 & 0x10000) >> 16) | + ((as17 & 0x0f800) << 5) | + ((as17 & 0x00400) >> 8) | + ((as17 & 0x003ff) << 3)); +} + +static inline int reassemble_21(int as21) +{ + return (((as21 & 0x100000) >> 20) | + ((as21 & 0x0ffe00) >> 8) | + ((as21 & 0x000180) << 7) | + ((as21 & 0x00007c) << 14) | + ((as21 & 0x000003) << 12)); +} + +static inline void hppa_patch21l(uint32_t *insn, int val, int addend) +{ + val = lrsel(val, addend); + *insn = mask(*insn, 21) | reassemble_21(val); +} + +static inline void hppa_patch14r(uint32_t *insn, int val, int addend) +{ + val = rrsel(val, addend); + *insn = mask(*insn, 14) | reassemble_14(val); +} + +static inline void hppa_patch17r(uint32_t *insn, int val, int addend) +{ + val = rrsel(val, addend); + *insn = (*insn & ~0x1f1ffd) | reassemble_17(val); +} + + +static inline void hppa_patch21l_dprel(uint32_t *insn, int val, int addend) +{ + register unsigned int dp asm("r27"); + hppa_patch21l(insn, val - dp, addend); +} + +static inline void hppa_patch14r_dprel(uint32_t *insn, int val, int addend) +{ + register unsigned int dp asm("r27"); + hppa_patch14r(insn, val - dp, addend); +} + +static inline void hppa_patch17f(uint32_t *insn, int val, int addend) +{ + int dot = (int)insn & ~0x3; + int v = ((val + addend) - dot - 8) / 4; + if (v > (1 << 16) || v < -(1 << 16)) { + printf("cannot fit branch to offset %d [%08x->%08x]\n", v, dot, val); + abort(); + } + *insn = (*insn & ~0x1f1ffd) | reassemble_17(v); +} + +static inline void hppa_load_imm21l(uint32_t *insn, int val, int addend) +{ + /* Transform addil L'sym(%dp) to ldil L'val, %r1 */ + *insn = 0x20200000 | reassemble_21(lrsel(val, 0)); +} + +static inline void hppa_load_imm14r(uint32_t *insn, int val, int addend) +{ + /* Transform ldw R'sym(%r1), %rN to ldo R'sym(%r1), %rN */ + hppa_patch14r(insn, val, addend); + /* HACK */ + if (addend == 0) + *insn = (*insn & ~0xfc000000) | (0x0d << 26); +} diff --git a/qemu/qemu-git/tcg/hppa/tcg-target.c b/qemu/qemu-git/tcg/hppa/tcg-target.c new file mode 100644 index 0000000..ddce60c --- /dev/null +++ b/qemu/qemu-git/tcg/hppa/tcg-target.c @@ -0,0 +1,975 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%r0", + "%r1", + "%rp", + "%r3", + "%r4", + "%r5", + "%r6", + "%r7", + "%r8", + "%r9", + "%r10", + "%r11", + "%r12", + "%r13", + "%r14", + "%r15", + "%r16", + "%r17", + "%r18", + "%r19", + "%r20", + "%r21", + "%r22", + "%r23", + "%r24", + "%r25", + "%r26", + "%dp", + "%ret0", + "%ret1", + "%sp", + "%r31", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + + TCG_REG_R17, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, +}; + +static const int tcg_target_call_iarg_regs[4] = { + TCG_REG_R26, + TCG_REG_R25, + TCG_REG_R24, + TCG_REG_R23, +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_RET0, + TCG_REG_RET1, +}; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + switch (type) { + case R_PARISC_PCREL17F: + hppa_patch17f((uint32_t *)code_ptr, value, addend); + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 4; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; + case 'L': /* qemu_ld/st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R26); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R25); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R24); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R23); + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + + /* TODO */ + + return 0; +} + +#define INSN_OP(x) ((x) << 26) +#define INSN_EXT3BR(x) ((x) << 13) +#define INSN_EXT3SH(x) ((x) << 10) +#define INSN_EXT4(x) ((x) << 6) +#define INSN_EXT5(x) (x) +#define INSN_EXT6(x) ((x) << 6) +#define INSN_EXT7(x) ((x) << 6) +#define INSN_EXT8A(x) ((x) << 6) +#define INSN_EXT8B(x) ((x) << 5) +#define INSN_T(x) (x) +#define INSN_R1(x) ((x) << 16) +#define INSN_R2(x) ((x) << 21) +#define INSN_DEP_LEN(x) (32 - (x)) +#define INSN_SHDEP_CP(x) ((31 - (x)) << 5) +#define INSN_SHDEP_P(x) ((x) << 5) +#define INSN_COND(x) ((x) << 13) + +#define COND_NEVER 0 +#define COND_EQUAL 1 +#define COND_LT 2 +#define COND_LTEQ 3 +#define COND_LTU 4 +#define COND_LTUEQ 5 +#define COND_SV 6 +#define COND_OD 7 + + +/* Logical ADD */ +#define ARITH_ADD (INSN_OP(0x02) | INSN_EXT6(0x28)) +#define ARITH_AND (INSN_OP(0x02) | INSN_EXT6(0x08)) +#define ARITH_OR (INSN_OP(0x02) | INSN_EXT6(0x09)) +#define ARITH_XOR (INSN_OP(0x02) | INSN_EXT6(0x0a)) +#define ARITH_SUB (INSN_OP(0x02) | INSN_EXT6(0x10)) + +#define SHD (INSN_OP(0x34) | INSN_EXT3SH(2)) +#define VSHD (INSN_OP(0x34) | INSN_EXT3SH(0)) +#define DEP (INSN_OP(0x35) | INSN_EXT3SH(3)) +#define ZDEP (INSN_OP(0x35) | INSN_EXT3SH(2)) +#define ZVDEP (INSN_OP(0x35) | INSN_EXT3SH(0)) +#define EXTRU (INSN_OP(0x34) | INSN_EXT3SH(6)) +#define EXTRS (INSN_OP(0x34) | INSN_EXT3SH(7)) +#define VEXTRS (INSN_OP(0x34) | INSN_EXT3SH(5)) + +#define SUBI (INSN_OP(0x25)) +#define MTCTL (INSN_OP(0x00) | INSN_EXT8B(0xc2)) + +#define BL (INSN_OP(0x3a) | INSN_EXT3BR(0)) +#define BLE_SR4 (INSN_OP(0x39) | (1 << 13)) +#define BV (INSN_OP(0x3a) | INSN_EXT3BR(6)) +#define BV_N (INSN_OP(0x3a) | INSN_EXT3BR(6) | 2) +#define LDIL (INSN_OP(0x08)) +#define LDO (INSN_OP(0x0d)) + +#define LDB (INSN_OP(0x10)) +#define LDH (INSN_OP(0x11)) +#define LDW (INSN_OP(0x12)) +#define LDWM (INSN_OP(0x13)) + +#define STB (INSN_OP(0x18)) +#define STH (INSN_OP(0x19)) +#define STW (INSN_OP(0x1a)) +#define STWM (INSN_OP(0x1b)) + +#define COMBT (INSN_OP(0x20)) +#define COMBF (INSN_OP(0x22)) + +static int lowsignext(uint32_t val, int start, int length) +{ + return (((val << 1) & ~(~0 << length)) | + ((val >> (length - 1)) & 1)) << start; +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + /* PA1.1 defines COPY as OR r,0,t */ + tcg_out32(s, ARITH_OR | INSN_T(ret) | INSN_R1(arg) | INSN_R2(TCG_REG_R0)); + + /* PA2.0 defines COPY as LDO 0(r),t + * but hppa-dis.c is unaware of this definition */ + /* tcg_out32(s, LDO | INSN_R1(ret) | INSN_R2(arg) | reassemble_14(0)); */ +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + if (arg == (arg & 0x1fff)) { + tcg_out32(s, LDO | INSN_R1(ret) | INSN_R2(TCG_REG_R0) | + reassemble_14(arg)); + } else { + tcg_out32(s, LDIL | INSN_R2(ret) | + reassemble_21(lrsel((uint32_t)arg, 0))); + if (arg & 0x7ff) + tcg_out32(s, LDO | INSN_R1(ret) | INSN_R2(ret) | + reassemble_14(rrsel((uint32_t)arg, 0))); + } +} + +static inline void tcg_out_ld_raw(TCGContext *s, int ret, + tcg_target_long arg) +{ + tcg_out32(s, LDIL | INSN_R2(ret) | + reassemble_21(lrsel((uint32_t)arg, 0))); + tcg_out32(s, LDW | INSN_R1(ret) | INSN_R2(ret) | + reassemble_14(rrsel((uint32_t)arg, 0))); +} + +static inline void tcg_out_ld_ptr(TCGContext *s, int ret, + tcg_target_long arg) +{ + tcg_out_ld_raw(s, ret, arg); +} + +static inline void tcg_out_ldst(TCGContext *s, int ret, int addr, int offset, + int op) +{ + if (offset == (offset & 0xfff)) + tcg_out32(s, op | INSN_R1(ret) | INSN_R2(addr) | + reassemble_14(offset)); + else { + fprintf(stderr, "unimplemented %s with offset %d\n", __func__, offset); + tcg_abort(); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + fprintf(stderr, "unimplemented %s\n", __func__); + tcg_abort(); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + fprintf(stderr, "unimplemented %s\n", __func__); + tcg_abort(); +} + +static inline void tcg_out_arith(TCGContext *s, int t, int r1, int r2, int op) +{ + tcg_out32(s, op | INSN_T(t) | INSN_R1(r1) | INSN_R2(r2)); +} + +static inline void tcg_out_arithi(TCGContext *s, int t, int r1, + tcg_target_long val, int op) +{ + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R20, val); + tcg_out_arith(s, t, r1, TCG_REG_R20, op); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + tcg_out_arithi(s, reg, reg, val, ARITH_ADD); +} + +static inline void tcg_out_nop(TCGContext *s) +{ + tcg_out32(s, ARITH_OR | INSN_T(TCG_REG_R0) | INSN_R1(TCG_REG_R0) | + INSN_R2(TCG_REG_R0)); +} + +static inline void tcg_out_ext8s(TCGContext *s, int ret, int arg) { + tcg_out32(s, EXTRS | INSN_R1(ret) | INSN_R2(arg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(8)); +} + +static inline void tcg_out_ext16s(TCGContext *s, int ret, int arg) { + tcg_out32(s, EXTRS | INSN_R1(ret) | INSN_R2(arg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(16)); +} + +static inline void tcg_out_bswap16(TCGContext *s, int ret, int arg) { + if(ret != arg) + tcg_out_mov(s, ret, arg); + tcg_out32(s, DEP | INSN_R2(ret) | INSN_R1(ret) | + INSN_SHDEP_CP(15) | INSN_DEP_LEN(8)); + tcg_out32(s, SHD | INSN_T(ret) | INSN_R1(TCG_REG_R0) | + INSN_R2(ret) | INSN_SHDEP_CP(8)); +} + +static inline void tcg_out_bswap32(TCGContext *s, int ret, int arg, int temp) { + tcg_out32(s, SHD | INSN_T(temp) | INSN_R1(arg) | + INSN_R2(arg) | INSN_SHDEP_CP(16)); + tcg_out32(s, DEP | INSN_R2(temp) | INSN_R1(temp) | + INSN_SHDEP_CP(15) | INSN_DEP_LEN(8)); + tcg_out32(s, SHD | INSN_T(ret) | INSN_R1(arg) | + INSN_R2(temp) | INSN_SHDEP_CP(8)); +} + +static inline void tcg_out_call(TCGContext *s, void *func) +{ + uint32_t val = (uint32_t)__canonicalize_funcptr_for_compare(func); + tcg_out32(s, LDIL | INSN_R2(TCG_REG_R20) | + reassemble_21(lrsel(val, 0))); + tcg_out32(s, BLE_SR4 | INSN_R2(TCG_REG_R20) | + reassemble_17(rrsel(val, 0) >> 2)); + tcg_out_mov(s, TCG_REG_RP, TCG_REG_R31); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint32_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + + r0 = TCG_REG_R26; + r1 = TCG_REG_R25; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out32(s, SHD | INSN_T(r1) | INSN_R1(TCG_REG_R0) | INSN_R2(r1) | + INSN_SHDEP_CP(TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)); + + tcg_out_arithi(s, r0, r0, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + tcg_out_arithi(s, r1, r1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS, + ARITH_AND); + + tcg_out_arith(s, r1, r1, TCG_AREG0, ARITH_ADD); + tcg_out_arithi(s, r1, r1, + offsetof(CPUState, tlb_table[mem_index][0].addr_read), + ARITH_ADD); + + tcg_out_ldst(s, TCG_REG_R20, r1, 0, LDW); + +#if TARGET_LONG_BITS == 32 + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ +#else + /* if not equal, jump to label3 */ + label3_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBF | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ + + tcg_out_ldst(s, TCG_REG_R20, r1, 4, LDW); + + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(addr_reg2) | + INSN_COND(COND_EQUAL)); + tcg_out_nop(s); /* delay slot */ + + /* label3: */ + *label3_ptr |= reassemble_12((uint32_t *)s->code_ptr - label3_ptr - 2); +#endif + +#if TARGET_LONG_BITS == 32 + tcg_out_mov(s, TCG_REG_R26, addr_reg); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R25, mem_index); +#else + tcg_out_mov(s, TCG_REG_R26, addr_reg); + tcg_out_mov(s, TCG_REG_R25, addr_reg2); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R24, mem_index); +#endif + + tcg_out_call(s, qemu_ld_helpers[s_bits]); + + switch(opc) { + case 0 | 4: + tcg_out_ext8s(s, data_reg, TCG_REG_RET0); + break; + case 1 | 4: + tcg_out_ext16s(s, data_reg, TCG_REG_RET0); + break; + case 0: + case 1: + case 2: + default: + tcg_out_mov(s, data_reg, TCG_REG_RET0); + break; + case 3: + tcg_abort(); + tcg_out_mov(s, data_reg, TCG_REG_RET0); + tcg_out_mov(s, data_reg2, TCG_REG_RET1); + break; + } + + /* jump to label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, BL | INSN_R2(TCG_REG_R0) | 2); + + /* label1: */ + *label1_ptr |= reassemble_12((uint32_t *)s->code_ptr - label1_ptr - 2); + + tcg_out_arithi(s, TCG_REG_R20, r1, + offsetof(CPUTLBEntry, addend) - offsetof(CPUTLBEntry, addr_read), + ARITH_ADD); + tcg_out_ldst(s, TCG_REG_R20, TCG_REG_R20, 0, LDW); + tcg_out_arith(s, r0, r0, TCG_REG_R20, ARITH_ADD); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out_ldst(s, data_reg, r0, 0, LDB); + break; + case 0 | 4: + tcg_out_ldst(s, data_reg, r0, 0, LDB); + tcg_out_ext8s(s, data_reg, data_reg); + break; + case 1: + tcg_out_ldst(s, data_reg, r0, 0, LDH); + if (bswap) + tcg_out_bswap16(s, data_reg, data_reg); + break; + case 1 | 4: + tcg_out_ldst(s, data_reg, r0, 0, LDH); + if (bswap) + tcg_out_bswap16(s, data_reg, data_reg); + tcg_out_ext16s(s, data_reg, data_reg); + break; + case 2: + tcg_out_ldst(s, data_reg, r0, 0, LDW); + if (bswap) + tcg_out_bswap32(s, data_reg, data_reg, TCG_REG_R20); + break; + case 3: + tcg_abort(); + if (!bswap) { + tcg_out_ldst(s, data_reg, r0, 0, LDW); + tcg_out_ldst(s, data_reg2, r0, 4, LDW); + } else { + tcg_out_ldst(s, data_reg, r0, 4, LDW); + tcg_out_bswap32(s, data_reg, data_reg, TCG_REG_R20); + tcg_out_ldst(s, data_reg2, r0, 0, LDW); + tcg_out_bswap32(s, data_reg2, data_reg2, TCG_REG_R20); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr |= reassemble_17((uint32_t *)s->code_ptr - label2_ptr - 2); +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint32_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; /* suppress warning */ + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + + s_bits = opc; + + r0 = TCG_REG_R26; + r1 = TCG_REG_R25; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out32(s, SHD | INSN_T(r1) | INSN_R1(TCG_REG_R0) | INSN_R2(r1) | + INSN_SHDEP_CP(TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)); + + tcg_out_arithi(s, r0, r0, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + tcg_out_arithi(s, r1, r1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS, + ARITH_AND); + + tcg_out_arith(s, r1, r1, TCG_AREG0, ARITH_ADD); + tcg_out_arithi(s, r1, r1, + offsetof(CPUState, tlb_table[mem_index][0].addr_write), + ARITH_ADD); + + tcg_out_ldst(s, TCG_REG_R20, r1, 0, LDW); + +#if TARGET_LONG_BITS == 32 + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ +#else + /* if not equal, jump to label3 */ + label3_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBF | INSN_R1(TCG_REG_R20) | INSN_R2(r0) | + INSN_COND(COND_EQUAL)); + tcg_out_mov(s, r0, addr_reg); /* delay slot */ + + tcg_out_ldst(s, TCG_REG_R20, r1, 4, LDW); + + /* if equal, jump to label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, COMBT | INSN_R1(TCG_REG_R20) | INSN_R2(addr_reg2) | + INSN_COND(COND_EQUAL)); + tcg_out_nop(s); /* delay slot */ + + /* label3: */ + *label3_ptr |= reassemble_12((uint32_t *)s->code_ptr - label3_ptr - 2); +#endif + + tcg_out_mov(s, TCG_REG_R26, addr_reg); +#if TARGET_LONG_BITS == 64 + tcg_out_mov(s, TCG_REG_R25, addr_reg2); + if (opc == 3) { + tcg_abort(); + tcg_out_mov(s, TCG_REG_R24, data_reg); + tcg_out_mov(s, TCG_REG_R23, data_reg2); + /* TODO: push mem_index */ + tcg_abort(); + } else { + switch(opc) { + case 0: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R24) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(8)); + break; + case 1: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R24) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(16)); + break; + case 2: + tcg_out_mov(s, TCG_REG_R24, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R23, mem_index); + } +#else + if (opc == 3) { + tcg_abort(); + tcg_out_mov(s, TCG_REG_R25, data_reg); + tcg_out_mov(s, TCG_REG_R24, data_reg2); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R23, mem_index); + } else { + switch(opc) { + case 0: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R25) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(8)); + break; + case 1: + tcg_out32(s, EXTRU | INSN_R1(TCG_REG_R25) | INSN_R2(data_reg) | + INSN_SHDEP_P(31) | INSN_DEP_LEN(16)); + break; + case 2: + tcg_out_mov(s, TCG_REG_R25, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R24, mem_index); + } +#endif + tcg_out_call(s, qemu_st_helpers[s_bits]); + + /* jump to label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, BL | INSN_R2(TCG_REG_R0) | 2); + + /* label1: */ + *label1_ptr |= reassemble_12((uint32_t *)s->code_ptr - label1_ptr - 2); + + tcg_out_arithi(s, TCG_REG_R20, r1, + offsetof(CPUTLBEntry, addend) - offsetof(CPUTLBEntry, addr_write), + ARITH_ADD); + tcg_out_ldst(s, TCG_REG_R20, TCG_REG_R20, 0, LDW); + tcg_out_arith(s, r0, r0, TCG_REG_R20, ARITH_ADD); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out_ldst(s, data_reg, r0, 0, STB); + break; + case 1: + if (bswap) { + tcg_out_bswap16(s, TCG_REG_R20, data_reg); + data_reg = TCG_REG_R20; + } + tcg_out_ldst(s, data_reg, r0, 0, STH); + break; + case 2: + if (bswap) { + tcg_out_bswap32(s, TCG_REG_R20, data_reg, TCG_REG_R20); + data_reg = TCG_REG_R20; + } + tcg_out_ldst(s, data_reg, r0, 0, STW); + break; + case 3: + tcg_abort(); + if (!bswap) { + tcg_out_ldst(s, data_reg, r0, 0, STW); + tcg_out_ldst(s, data_reg2, r0, 4, STW); + } else { + tcg_out_bswap32(s, TCG_REG_R20, data_reg, TCG_REG_R20); + tcg_out_ldst(s, TCG_REG_R20, r0, 4, STW); + tcg_out_bswap32(s, TCG_REG_R20, data_reg2, TCG_REG_R20); + tcg_out_ldst(s, TCG_REG_R20, r0, 0, STW); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr |= reassemble_17((uint32_t *)s->code_ptr - label2_ptr - 2); +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_RET0, args[0]); + tcg_out32(s, BV_N | INSN_R2(TCG_REG_R18)); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + fprintf(stderr, "goto_tb direct\n"); + tcg_abort(); + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R20, args[0]); + tcg_out32(s, BV_N | INSN_R2(TCG_REG_R20)); + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + } else { + /* indirect jump method */ + tcg_out_ld_ptr(s, TCG_REG_R20, + (tcg_target_long)(s->tb_next + args[0])); + tcg_out32(s, BV_N | INSN_R2(TCG_REG_R20)); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + tcg_out32(s, BLE_SR4 | INSN_R2(args[0])); + tcg_out_mov(s, TCG_REG_RP, TCG_REG_R31); + break; + case INDEX_op_jmp: + fprintf(stderr, "unimplemented jmp\n"); + tcg_abort(); + break; + case INDEX_op_br: + fprintf(stderr, "unimplemented br\n"); + tcg_abort(); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], (uint32_t)args[1]); + break; + + case INDEX_op_ld8u_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDB); + break; + case INDEX_op_ld8s_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDB); + tcg_out_ext8s(s, args[0], args[0]); + break; + case INDEX_op_ld16u_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDH); + break; + case INDEX_op_ld16s_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDH); + tcg_out_ext16s(s, args[0], args[0]); + break; + case INDEX_op_ld_i32: + tcg_out_ldst(s, args[0], args[1], args[2], LDW); + break; + + case INDEX_op_st8_i32: + tcg_out_ldst(s, args[0], args[1], args[2], STB); + break; + case INDEX_op_st16_i32: + tcg_out_ldst(s, args[0], args[1], args[2], STH); + break; + case INDEX_op_st_i32: + tcg_out_ldst(s, args[0], args[1], args[2], STW); + break; + + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith; + case INDEX_op_or_i32: + c = ARITH_OR; + goto gen_arith; + case INDEX_op_xor_i32: + c = ARITH_XOR; + goto gen_arith; + case INDEX_op_add_i32: + c = ARITH_ADD; + goto gen_arith; + + case INDEX_op_shl_i32: + tcg_out32(s, SUBI | INSN_R1(TCG_REG_R20) | INSN_R2(args[2]) | + lowsignext(0x1f, 0, 11)); + tcg_out32(s, MTCTL | INSN_R2(11) | INSN_R1(TCG_REG_R20)); + tcg_out32(s, ZVDEP | INSN_R2(args[0]) | INSN_R1(args[1]) | + INSN_DEP_LEN(32)); + break; + case INDEX_op_shr_i32: + tcg_out32(s, MTCTL | INSN_R2(11) | INSN_R1(args[2])); + tcg_out32(s, VSHD | INSN_T(args[0]) | INSN_R1(TCG_REG_R0) | + INSN_R2(args[1])); + break; + case INDEX_op_sar_i32: + tcg_out32(s, SUBI | INSN_R1(TCG_REG_R20) | INSN_R2(args[2]) | + lowsignext(0x1f, 0, 11)); + tcg_out32(s, MTCTL | INSN_R2(11) | INSN_R1(TCG_REG_R20)); + tcg_out32(s, VEXTRS | INSN_R1(args[0]) | INSN_R2(args[1]) | + INSN_DEP_LEN(32)); + break; + + case INDEX_op_mul_i32: + fprintf(stderr, "unimplemented mul\n"); + tcg_abort(); + break; + case INDEX_op_mulu2_i32: + fprintf(stderr, "unimplemented mulu2\n"); + tcg_abort(); + break; + case INDEX_op_div2_i32: + fprintf(stderr, "unimplemented div2\n"); + tcg_abort(); + break; + case INDEX_op_divu2_i32: + fprintf(stderr, "unimplemented divu2\n"); + tcg_abort(); + break; + + case INDEX_op_brcond_i32: + fprintf(stderr, "unimplemented brcond\n"); + tcg_abort(); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + + default: + fprintf(stderr, "unknown opcode 0x%x\n", opc); + tcg_abort(); + } + return; + +gen_arith: + tcg_out_arith(s, args[0], args[1], args[2], c); +} + +static const TCGTargetOpDef hppa_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + + { INDEX_op_call, { "r" } }, + { INDEX_op_jmp, { "r" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "r" } }, + { INDEX_op_sub_i32, { "r", "r", "r" } }, + { INDEX_op_and_i32, { "r", "r", "r" } }, + { INDEX_op_or_i32, { "r", "r", "r" } }, + { INDEX_op_xor_i32, { "r", "r", "r" } }, + + { INDEX_op_shl_i32, { "r", "r", "r" } }, + { INDEX_op_shr_i32, { "r", "r", "r" } }, + { INDEX_op_sar_i32, { "r", "r", "r" } }, + + { INDEX_op_brcond_i32, { "r", "r" } }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L" } }, +#else + { INDEX_op_qemu_ld8u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L", "L" } }, +#endif + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_R20) | + (1 << TCG_REG_R21) | + (1 << TCG_REG_R22) | + (1 << TCG_REG_R23) | + (1 << TCG_REG_R24) | + (1 << TCG_REG_R25) | + (1 << TCG_REG_R26)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R0); /* hardwired to zero */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R1); /* addil target */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_RP); /* link register */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R3); /* frame pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R18); /* return pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R19); /* clobbered w/o pic */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R20); /* reserved */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_DP); /* data pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_SP); /* stack pointer */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R31); /* ble link reg */ + + tcg_add_target_add_op_defs(hppa_op_defs); +} diff --git a/qemu/qemu-git/tcg/hppa/tcg-target.h b/qemu/qemu-git/tcg/hppa/tcg-target.h new file mode 100644 index 0000000..7ab6f0c --- /dev/null +++ b/qemu/qemu-git/tcg/hppa/tcg-target.h @@ -0,0 +1,203 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define TCG_TARGET_HPPA 1 + +#if defined(_PA_RISC1_1) +#define TCG_TARGET_REG_BITS 32 +#else +#error unsupported +#endif + +#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_RP, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_DP, + TCG_REG_RET0, + TCG_REG_RET1, + TCG_REG_SP, + TCG_REG_R31, +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_SP +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_STACK_GROWSUP + +/* optional instructions */ +//#define TCG_TARGET_HAS_ext8s_i32 +//#define TCG_TARGET_HAS_ext16s_i32 +//#define TCG_TARGET_HAS_bswap16_i32 +//#define TCG_TARGET_HAS_bswap32_i32 + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_R17 +#define TCG_AREG1 TCG_REG_R14 +#define TCG_AREG2 TCG_REG_R15 + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ + start &= ~31; + while (start <= stop) + { + asm volatile ("fdc 0(%0)\n" + "sync\n" + "fic 0(%%sr4, %0)\n" + "sync\n" + : : "r"(start) : "memory"); + start += 32; + } +} + +/* supplied by libgcc */ +extern void *__canonicalize_funcptr_for_compare(void *); + +/* Field selection types defined by hppa */ +#define rnd(x) (((x)+0x1000)&~0x1fff) +/* lsel: select left 21 bits */ +#define lsel(v,a) (((v)+(a))>>11) +/* rsel: select right 11 bits */ +#define rsel(v,a) (((v)+(a))&0x7ff) +/* lrsel with rounding of addend to nearest 8k */ +#define lrsel(v,a) (((v)+rnd(a))>>11) +/* rrsel with rounding of addend to nearest 8k */ +#define rrsel(v,a) ((((v)+rnd(a))&0x7ff)+((a)-rnd(a))) + +#define mask(x,sz) ((x) & ~((1<<(sz))-1)) + +static inline int reassemble_12(int as12) +{ + return (((as12 & 0x800) >> 11) | + ((as12 & 0x400) >> 8) | + ((as12 & 0x3ff) << 3)); +} + +static inline int reassemble_14(int as14) +{ + return (((as14 & 0x1fff) << 1) | + ((as14 & 0x2000) >> 13)); +} + +static inline int reassemble_17(int as17) +{ + return (((as17 & 0x10000) >> 16) | + ((as17 & 0x0f800) << 5) | + ((as17 & 0x00400) >> 8) | + ((as17 & 0x003ff) << 3)); +} + +static inline int reassemble_21(int as21) +{ + return (((as21 & 0x100000) >> 20) | + ((as21 & 0x0ffe00) >> 8) | + ((as21 & 0x000180) << 7) | + ((as21 & 0x00007c) << 14) | + ((as21 & 0x000003) << 12)); +} + +static inline void hppa_patch21l(uint32_t *insn, int val, int addend) +{ + val = lrsel(val, addend); + *insn = mask(*insn, 21) | reassemble_21(val); +} + +static inline void hppa_patch14r(uint32_t *insn, int val, int addend) +{ + val = rrsel(val, addend); + *insn = mask(*insn, 14) | reassemble_14(val); +} + +static inline void hppa_patch17r(uint32_t *insn, int val, int addend) +{ + val = rrsel(val, addend); + *insn = (*insn & ~0x1f1ffd) | reassemble_17(val); +} + + +static inline void hppa_patch21l_dprel(uint32_t *insn, int val, int addend) +{ + register unsigned int dp asm("r27"); + hppa_patch21l(insn, val - dp, addend); +} + +static inline void hppa_patch14r_dprel(uint32_t *insn, int val, int addend) +{ + register unsigned int dp asm("r27"); + hppa_patch14r(insn, val - dp, addend); +} + +static inline void hppa_patch17f(uint32_t *insn, int val, int addend) +{ + int dot = (int)insn & ~0x3; + int v = ((val + addend) - dot - 8) / 4; + if (v > (1 << 16) || v < -(1 << 16)) { + printf("cannot fit branch to offset %d [%08x->%08x]\n", v, dot, val); + abort(); + } + *insn = (*insn & ~0x1f1ffd) | reassemble_17(v); +} + +static inline void hppa_load_imm21l(uint32_t *insn, int val, int addend) +{ + /* Transform addil L'sym(%dp) to ldil L'val, %r1 */ + *insn = 0x20200000 | reassemble_21(lrsel(val, 0)); +} + +static inline void hppa_load_imm14r(uint32_t *insn, int val, int addend) +{ + /* Transform ldw R'sym(%r1), %rN to ldo R'sym(%r1), %rN */ + hppa_patch14r(insn, val, addend); + /* HACK */ + if (addend == 0) + *insn = (*insn & ~0xfc000000) | (0x0d << 26); +} diff --git a/qemu/qemu-git/tcg/i386/.svn/all-wcprops b/qemu/qemu-git/tcg/i386/.svn/all-wcprops new file mode 100644 index 0000000..2d55167 --- /dev/null +++ b/qemu/qemu-git/tcg/i386/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/i386 +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/i386/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/i386/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/i386/.svn/entries b/qemu/qemu-git/tcg/i386/.svn/entries new file mode 100644 index 0000000..17ad076 --- /dev/null +++ b/qemu/qemu-git/tcg/i386/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/i386 +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +e6cfada3d8e7203f6a2223f242f47b7b +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +36927 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +3f7c3401b361f0d144361293a009fee9 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +2167 + diff --git a/qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..972b102 --- /dev/null +++ b/qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,1262 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%eax", + "%ecx", + "%edx", + "%ebx", + "%esp", + "%ebp", + "%esi", + "%edi", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_EAX, + TCG_REG_EDX, + TCG_REG_ECX, + TCG_REG_EBX, + TCG_REG_ESI, + TCG_REG_EDI, + TCG_REG_EBP, +}; + +static const int tcg_target_call_iarg_regs[3] = { TCG_REG_EAX, TCG_REG_EDX, TCG_REG_ECX }; +static const int tcg_target_call_oarg_regs[2] = { TCG_REG_EAX, TCG_REG_EDX }; + +static uint8_t *tb_ret_addr; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch(type) { + case R_386_32: + *(uint32_t *)code_ptr = value; + break; + case R_386_PC32: + *(uint32_t *)code_ptr = value - (long)code_ptr; + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + flags &= TCG_CALL_TYPE_MASK; + switch(flags) { + case TCG_CALL_TYPE_STD: + return 0; + case TCG_CALL_TYPE_REGPARM_1: + case TCG_CALL_TYPE_REGPARM_2: + case TCG_CALL_TYPE_REGPARM: + return flags - TCG_CALL_TYPE_REGPARM_1 + 1; + default: + tcg_abort(); + } +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch(ct_str[0]) { + case 'a': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EAX); + break; + case 'b': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EBX); + break; + case 'c': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_ECX); + break; + case 'd': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EDX); + break; + case 'S': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_ESI); + break; + case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EDI); + break; + case 'q': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xf); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xff); + break; + + /* qemu_ld/st address constraint */ + case 'L': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_EAX); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_EDX); + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else + return 0; +} + +#define ARITH_ADD 0 +#define ARITH_OR 1 +#define ARITH_ADC 2 +#define ARITH_SBB 3 +#define ARITH_AND 4 +#define ARITH_SUB 5 +#define ARITH_XOR 6 +#define ARITH_CMP 7 + +#define SHIFT_ROL 0 +#define SHIFT_ROR 1 +#define SHIFT_SHL 4 +#define SHIFT_SHR 5 +#define SHIFT_SAR 7 + +#define JCC_JMP (-1) +#define JCC_JO 0x0 +#define JCC_JNO 0x1 +#define JCC_JB 0x2 +#define JCC_JAE 0x3 +#define JCC_JE 0x4 +#define JCC_JNE 0x5 +#define JCC_JBE 0x6 +#define JCC_JA 0x7 +#define JCC_JS 0x8 +#define JCC_JNS 0x9 +#define JCC_JP 0xa +#define JCC_JNP 0xb +#define JCC_JL 0xc +#define JCC_JGE 0xd +#define JCC_JLE 0xe +#define JCC_JG 0xf + +#define P_EXT 0x100 /* 0x0f opcode prefix */ + +static const uint8_t tcg_cond_to_jcc[10] = { + [TCG_COND_EQ] = JCC_JE, + [TCG_COND_NE] = JCC_JNE, + [TCG_COND_LT] = JCC_JL, + [TCG_COND_GE] = JCC_JGE, + [TCG_COND_LE] = JCC_JLE, + [TCG_COND_GT] = JCC_JG, + [TCG_COND_LTU] = JCC_JB, + [TCG_COND_GEU] = JCC_JAE, + [TCG_COND_LEU] = JCC_JBE, + [TCG_COND_GTU] = JCC_JA, +}; + +static inline void tcg_out_opc(TCGContext *s, int opc) +{ + if (opc & P_EXT) + tcg_out8(s, 0x0f); + tcg_out8(s, opc); +} + +static inline void tcg_out_modrm(TCGContext *s, int opc, int r, int rm) +{ + tcg_out_opc(s, opc); + tcg_out8(s, 0xc0 | (r << 3) | rm); +} + +/* rm == -1 means no register index */ +static inline void tcg_out_modrm_offset(TCGContext *s, int opc, int r, int rm, + int32_t offset) +{ + tcg_out_opc(s, opc); + if (rm == -1) { + tcg_out8(s, 0x05 | (r << 3)); + tcg_out32(s, offset); + } else if (offset == 0 && rm != TCG_REG_EBP) { + if (rm == TCG_REG_ESP) { + tcg_out8(s, 0x04 | (r << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x00 | (r << 3) | rm); + } + } else if ((int8_t)offset == offset) { + if (rm == TCG_REG_ESP) { + tcg_out8(s, 0x44 | (r << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x40 | (r << 3) | rm); + } + tcg_out8(s, offset); + } else { + if (rm == TCG_REG_ESP) { + tcg_out8(s, 0x84 | (r << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x80 | (r << 3) | rm); + } + tcg_out32(s, offset); + } +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + if (arg != ret) + tcg_out_modrm(s, 0x8b, ret, arg); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, int32_t arg) +{ + if (arg == 0) { + /* xor r0,r0 */ + tcg_out_modrm(s, 0x01 | (ARITH_XOR << 3), ret, ret); + } else { + tcg_out8(s, 0xb8 + ret); + tcg_out32(s, arg); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + /* movl */ + tcg_out_modrm_offset(s, 0x8b, ret, arg1, arg2); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + /* movl */ + tcg_out_modrm_offset(s, 0x89, arg, arg1, arg2); +} + +static inline void tgen_arithi(TCGContext *s, int c, int r0, int32_t val, int cf) +{ + if (!cf && ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1))) { + /* inc */ + tcg_out_opc(s, 0x40 + r0); + } else if (!cf && ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1))) { + /* dec */ + tcg_out_opc(s, 0x48 + r0); + } else if (val == (int8_t)val) { + tcg_out_modrm(s, 0x83, c, r0); + tcg_out8(s, val); + } else if (c == ARITH_AND && val == 0xffu && r0 < 4) { + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, r0, r0); + } else if (c == ARITH_AND && val == 0xffffu) { + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, r0, r0); + } else { + tcg_out_modrm(s, 0x81, c, r0); + tcg_out32(s, val); + } +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) + tgen_arithi(s, ARITH_ADD, reg, val, 0); +} + +static void tcg_out_jxx(TCGContext *s, int opc, int label_index) +{ + int32_t val, val1; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + val1 = val - 2; + if ((int8_t)val1 == val1) { + if (opc == -1) + tcg_out8(s, 0xeb); + else + tcg_out8(s, 0x70 + opc); + tcg_out8(s, val1); + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + tcg_out32(s, val - 5); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + tcg_out32(s, val - 6); + } + } + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + } + tcg_out_reloc(s, s->code_ptr, R_386_PC32, label_index, -4); + s->code_ptr += 4; + } +} + +static void tcg_out_brcond(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + if (const_arg2) { + if (arg2 == 0) { + /* test r, r */ + tcg_out_modrm(s, 0x85, arg1, arg1); + } else { + tgen_arithi(s, ARITH_CMP, arg1, arg2, 0); + } + } else { + tcg_out_modrm(s, 0x01 | (ARITH_CMP << 3), arg2, arg1); + } + tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index); +} + +/* XXX: we implement it at the target level to avoid having to + handle cross basic blocks temporaries */ +static void tcg_out_brcond2(TCGContext *s, + const TCGArg *args, const int *const_args) +{ + int label_next; + label_next = gen_new_label(); + switch(args[4]) { + case TCG_COND_EQ: + tcg_out_brcond(s, TCG_COND_NE, args[0], args[2], const_args[2], label_next); + tcg_out_brcond(s, TCG_COND_EQ, args[1], args[3], const_args[3], args[5]); + break; + case TCG_COND_NE: + tcg_out_brcond(s, TCG_COND_NE, args[0], args[2], const_args[2], args[5]); + tcg_out_brcond(s, TCG_COND_NE, args[1], args[3], const_args[3], args[5]); + break; + case TCG_COND_LT: + tcg_out_brcond(s, TCG_COND_LT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_LE: + tcg_out_brcond(s, TCG_COND_LT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LEU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GT: + tcg_out_brcond(s, TCG_COND_GT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GE: + tcg_out_brcond(s, TCG_COND_GT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GEU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_LTU: + tcg_out_brcond(s, TCG_COND_LTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_LEU: + tcg_out_brcond(s, TCG_COND_LTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LEU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GTU: + tcg_out_brcond(s, TCG_COND_GTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GEU: + tcg_out_brcond(s, TCG_COND_GTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GEU, args[0], args[2], const_args[2], args[5]); + break; + default: + tcg_abort(); + } + tcg_out_label(s, label_next, (tcg_target_long)s->code_ptr); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +#ifndef CONFIG_USER_ONLY +#define GUEST_BASE 0 +#endif + +/* XXX: qemu_ld and qemu_st could be modified to clobber only EDX and + EAX. It will be useful once fixed registers globals are less + common. */ +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + + r0 = TCG_REG_EAX; + r1 = TCG_REG_EDX; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out_modrm(s, 0xc1, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + tcg_out_opc(s, 0x8d); /* lea offset(r1, %ebp), r1 */ + tcg_out8(s, 0x80 | (r1 << 3) | 0x04); + tcg_out8(s, (5 << 3) | r1); + tcg_out32(s, offsetof(CPUState, tlb_table[mem_index][0].addr_read)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b, r0, r1, 0); + + tcg_out_mov(s, r0, addr_reg); + +#if TARGET_LONG_BITS == 32 + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; +#else + /* jne label3 */ + tcg_out8(s, 0x70 + JCC_JNE); + label3_ptr = s->code_ptr; + s->code_ptr++; + + /* cmp 4(r1), addr_reg2 */ + tcg_out_modrm_offset(s, 0x3b, addr_reg2, r1, 4); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* label3: */ + *label3_ptr = s->code_ptr - label3_ptr - 1; +#endif + + /* XXX: move that code at the end of the TB */ +#if TARGET_LONG_BITS == 32 + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_EDX, mem_index); +#else + tcg_out_mov(s, TCG_REG_EDX, addr_reg2); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_ECX, mem_index); +#endif + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_ld_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + + switch(opc) { + case 0 | 4: + /* movsbl */ + tcg_out_modrm(s, 0xbe | P_EXT, data_reg, TCG_REG_EAX); + break; + case 1 | 4: + /* movswl */ + tcg_out_modrm(s, 0xbf | P_EXT, data_reg, TCG_REG_EAX); + break; + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, data_reg, TCG_REG_EAX); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, data_reg, TCG_REG_EAX); + break; + case 2: + default: + tcg_out_mov(s, data_reg, TCG_REG_EAX); + break; + case 3: + if (data_reg == TCG_REG_EDX) { + tcg_out_opc(s, 0x90 + TCG_REG_EDX); /* xchg %edx, %eax */ + tcg_out_mov(s, data_reg2, TCG_REG_EAX); + } else { + tcg_out_mov(s, data_reg, TCG_REG_EAX); + tcg_out_mov(s, data_reg2, TCG_REG_EDX); + } + break; + } + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_read)); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, data_reg, r0, GUEST_BASE); + break; + case 0 | 4: + /* movsbl */ + tcg_out_modrm_offset(s, 0xbe | P_EXT, data_reg, r0, GUEST_BASE); + break; + case 1: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, data_reg, r0, GUEST_BASE); + if (bswap) { + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + } + break; + case 1 | 4: + /* movswl */ + tcg_out_modrm_offset(s, 0xbf | P_EXT, data_reg, r0, GUEST_BASE); + if (bswap) { + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + + /* movswl data_reg, data_reg */ + tcg_out_modrm(s, 0xbf | P_EXT, data_reg, data_reg); + } + break; + case 2: + /* movl (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, GUEST_BASE); + if (bswap) { + /* bswap */ + tcg_out_opc(s, (0xc8 + data_reg) | P_EXT); + } + break; + case 3: + /* XXX: could be nicer */ + if (r0 == data_reg) { + r1 = TCG_REG_EDX; + if (r1 == data_reg) + r1 = TCG_REG_EAX; + tcg_out_mov(s, r1, r0); + r0 = r1; + } + if (!bswap) { + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, GUEST_BASE); + tcg_out_modrm_offset(s, 0x8b, data_reg2, r0, GUEST_BASE + 4); + } else { + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, GUEST_BASE + 4); + tcg_out_opc(s, (0xc8 + data_reg) | P_EXT); + + tcg_out_modrm_offset(s, 0x8b, data_reg2, r0, GUEST_BASE); + /* bswap */ + tcg_out_opc(s, (0xc8 + data_reg2) | P_EXT); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + + s_bits = opc; + + r0 = TCG_REG_EAX; + r1 = TCG_REG_EDX; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out_modrm(s, 0xc1, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + tcg_out_opc(s, 0x8d); /* lea offset(r1, %ebp), r1 */ + tcg_out8(s, 0x80 | (r1 << 3) | 0x04); + tcg_out8(s, (5 << 3) | r1); + tcg_out32(s, offsetof(CPUState, tlb_table[mem_index][0].addr_write)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b, r0, r1, 0); + + tcg_out_mov(s, r0, addr_reg); + +#if TARGET_LONG_BITS == 32 + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; +#else + /* jne label3 */ + tcg_out8(s, 0x70 + JCC_JNE); + label3_ptr = s->code_ptr; + s->code_ptr++; + + /* cmp 4(r1), addr_reg2 */ + tcg_out_modrm_offset(s, 0x3b, addr_reg2, r1, 4); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* label3: */ + *label3_ptr = s->code_ptr - label3_ptr - 1; +#endif + + /* XXX: move that code at the end of the TB */ +#if TARGET_LONG_BITS == 32 + if (opc == 3) { + tcg_out_mov(s, TCG_REG_EDX, data_reg); + tcg_out_mov(s, TCG_REG_ECX, data_reg2); + tcg_out8(s, 0x6a); /* push Ib */ + tcg_out8(s, mem_index); + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + tcg_out_addi(s, TCG_REG_ESP, 4); + } else { + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, TCG_REG_EDX, data_reg); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, TCG_REG_EDX, data_reg); + break; + case 2: + tcg_out_mov(s, TCG_REG_EDX, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_ECX, mem_index); + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + } +#else + if (opc == 3) { + tcg_out_mov(s, TCG_REG_EDX, addr_reg2); + tcg_out8(s, 0x6a); /* push Ib */ + tcg_out8(s, mem_index); + tcg_out_opc(s, 0x50 + data_reg2); /* push */ + tcg_out_opc(s, 0x50 + data_reg); /* push */ + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + tcg_out_addi(s, TCG_REG_ESP, 12); + } else { + tcg_out_mov(s, TCG_REG_EDX, addr_reg2); + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, TCG_REG_ECX, data_reg); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, TCG_REG_ECX, data_reg); + break; + case 2: + tcg_out_mov(s, TCG_REG_ECX, data_reg); + break; + } + tcg_out8(s, 0x6a); /* push Ib */ + tcg_out8(s, mem_index); + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + tcg_out_addi(s, TCG_REG_ESP, 4); + } +#endif + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_write)); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movb */ + tcg_out_modrm_offset(s, 0x88, data_reg, r0, GUEST_BASE); + break; + case 1: + if (bswap) { + tcg_out_mov(s, r1, data_reg); + tcg_out8(s, 0x66); /* rolw $8, %ecx */ + tcg_out_modrm(s, 0xc1, 0, r1); + tcg_out8(s, 8); + data_reg = r1; + } + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, data_reg, r0, GUEST_BASE); + break; + case 2: + if (bswap) { + tcg_out_mov(s, r1, data_reg); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT); + data_reg = r1; + } + /* movl */ + tcg_out_modrm_offset(s, 0x89, data_reg, r0, GUEST_BASE); + break; + case 3: + if (bswap) { + tcg_out_mov(s, r1, data_reg2); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT); + tcg_out_modrm_offset(s, 0x89, r1, r0, GUEST_BASE); + tcg_out_mov(s, r1, data_reg); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT); + tcg_out_modrm_offset(s, 0x89, r1, r0, GUEST_BASE + 4); + } else { + tcg_out_modrm_offset(s, 0x89, data_reg, r0, GUEST_BASE); + tcg_out_modrm_offset(s, 0x89, data_reg2, r0, GUEST_BASE + 4); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + int c; + + switch(opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_EAX, args[0]); + tcg_out8(s, 0xe9); /* jmp tb_ret_addr */ + tcg_out32(s, tb_ret_addr - s->code_ptr - 4); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_out8(s, 0xe9); /* jmp im */ + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out32(s, 0); + } else { + /* indirect jump method */ + /* jmp Ev */ + tcg_out_modrm_offset(s, 0xff, 4, -1, + (tcg_target_long)(s->tb_next + args[0])); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) { + tcg_out8(s, 0xe8); + tcg_out32(s, args[0] - (tcg_target_long)s->code_ptr - 4); + } else { + tcg_out_modrm(s, 0xff, 2, args[0]); + } + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out8(s, 0xe9); + tcg_out32(s, args[0] - (tcg_target_long)s->code_ptr - 4); + } else { + tcg_out_modrm(s, 0xff, 4, args[0]); + } + break; + case INDEX_op_br: + tcg_out_jxx(s, JCC_JMP, args[0]); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + /* movsbl */ + tcg_out_modrm_offset(s, 0xbe | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + /* movswl */ + tcg_out_modrm_offset(s, 0xbf | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + /* movl */ + tcg_out_modrm_offset(s, 0x8b, args[0], args[1], args[2]); + break; + case INDEX_op_st8_i32: + /* movb */ + tcg_out_modrm_offset(s, 0x88, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + /* movl */ + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith; + case INDEX_op_or_i32: + c = ARITH_OR; + goto gen_arith; + case INDEX_op_xor_i32: + c = ARITH_XOR; + goto gen_arith; + case INDEX_op_add_i32: + c = ARITH_ADD; + gen_arith: + if (const_args[2]) { + tgen_arithi(s, c, args[0], args[2], 0); + } else { + tcg_out_modrm(s, 0x01 | (c << 3), args[2], args[0]); + } + break; + case INDEX_op_mul_i32: + if (const_args[2]) { + int32_t val; + val = args[2]; + if (val == (int8_t)val) { + tcg_out_modrm(s, 0x6b, args[0], args[0]); + tcg_out8(s, val); + } else { + tcg_out_modrm(s, 0x69, args[0], args[0]); + tcg_out32(s, val); + } + } else { + tcg_out_modrm(s, 0xaf | P_EXT, args[0], args[2]); + } + break; + case INDEX_op_mulu2_i32: + tcg_out_modrm(s, 0xf7, 4, args[3]); + break; + case INDEX_op_div2_i32: + tcg_out_modrm(s, 0xf7, 7, args[4]); + break; + case INDEX_op_divu2_i32: + tcg_out_modrm(s, 0xf7, 6, args[4]); + break; + case INDEX_op_shl_i32: + c = SHIFT_SHL; + gen_shift32: + if (const_args[2]) { + if (args[2] == 1) { + tcg_out_modrm(s, 0xd1, c, args[0]); + } else { + tcg_out_modrm(s, 0xc1, c, args[0]); + tcg_out8(s, args[2]); + } + } else { + tcg_out_modrm(s, 0xd3, c, args[0]); + } + break; + case INDEX_op_shr_i32: + c = SHIFT_SHR; + goto gen_shift32; + case INDEX_op_sar_i32: + c = SHIFT_SAR; + goto gen_shift32; + case INDEX_op_rotl_i32: + c = SHIFT_ROL; + goto gen_shift32; + case INDEX_op_rotr_i32: + c = SHIFT_ROR; + goto gen_shift32; + + case INDEX_op_add2_i32: + if (const_args[4]) + tgen_arithi(s, ARITH_ADD, args[0], args[4], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_ADD << 3), args[4], args[0]); + if (const_args[5]) + tgen_arithi(s, ARITH_ADC, args[1], args[5], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_ADC << 3), args[5], args[1]); + break; + case INDEX_op_sub2_i32: + if (const_args[4]) + tgen_arithi(s, ARITH_SUB, args[0], args[4], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_SUB << 3), args[4], args[0]); + if (const_args[5]) + tgen_arithi(s, ARITH_SBB, args[1], args[5], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_SBB << 3), args[5], args[1]); + break; + case INDEX_op_brcond_i32: + tcg_out_brcond(s, args[2], args[0], args[1], const_args[1], args[3]); + break; + case INDEX_op_brcond2_i32: + tcg_out_brcond2(s, args, const_args); + break; + + case INDEX_op_bswap16_i32: + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, SHIFT_ROL, args[0]); + tcg_out8(s, 8); + break; + case INDEX_op_bswap32_i32: + tcg_out_opc(s, (0xc8 + args[0]) | P_EXT); + break; + + case INDEX_op_neg_i32: + tcg_out_modrm(s, 0xf7, 3, args[0]); + break; + + case INDEX_op_not_i32: + tcg_out_modrm(s, 0xf7, 2, args[0]); + break; + + case INDEX_op_ext8s_i32: + tcg_out_modrm(s, 0xbe | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext16s_i32: + tcg_out_modrm(s, 0xbf | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext8u_i32: + tcg_out_modrm(s, 0xb6 | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext16u_i32: + tcg_out_modrm(s, 0xb7 | P_EXT, args[0], args[1]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + default: + tcg_abort(); + } +} + +static const TCGTargetOpDef x86_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "q", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "0", "ri" } }, + { INDEX_op_sub_i32, { "r", "0", "ri" } }, + { INDEX_op_mul_i32, { "r", "0", "ri" } }, + { INDEX_op_mulu2_i32, { "a", "d", "a", "r" } }, + { INDEX_op_div2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_divu2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_and_i32, { "r", "0", "ri" } }, + { INDEX_op_or_i32, { "r", "0", "ri" } }, + { INDEX_op_xor_i32, { "r", "0", "ri" } }, + + { INDEX_op_shl_i32, { "r", "0", "ci" } }, + { INDEX_op_shr_i32, { "r", "0", "ci" } }, + { INDEX_op_sar_i32, { "r", "0", "ci" } }, + { INDEX_op_rotl_i32, { "r", "0", "ci" } }, + { INDEX_op_rotr_i32, { "r", "0", "ci" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + + { INDEX_op_add2_i32, { "r", "r", "0", "1", "ri", "ri" } }, + { INDEX_op_sub2_i32, { "r", "r", "0", "1", "ri", "ri" } }, + { INDEX_op_brcond2_i32, { "r", "r", "ri", "ri" } }, + + { INDEX_op_bswap16_i32, { "r", "0" } }, + { INDEX_op_bswap32_i32, { "r", "0" } }, + + { INDEX_op_neg_i32, { "r", "0" } }, + + { INDEX_op_not_i32, { "r", "0" } }, + + { INDEX_op_ext8s_i32, { "r", "q" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + { INDEX_op_ext8u_i32, { "r", "q"} }, + { INDEX_op_ext16u_i32, { "r", "r"} }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L" } }, + + { INDEX_op_qemu_st8, { "cb", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L" } }, +#else + { INDEX_op_qemu_ld8u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L", "L" } }, + + { INDEX_op_qemu_st8, { "cb", "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L", "L" } }, +#endif + { -1 }, +}; + +static int tcg_target_callee_save_regs[] = { + /* TCG_REG_EBP, */ /* currently used for the global env, so no + need to save */ + TCG_REG_EBX, + TCG_REG_ESI, + TCG_REG_EDI, +}; + +static inline void tcg_out_push(TCGContext *s, int reg) +{ + tcg_out_opc(s, 0x50 + reg); +} + +static inline void tcg_out_pop(TCGContext *s, int reg) +{ + tcg_out_opc(s, 0x58 + reg); +} + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + int i, frame_size, push_size, stack_addend; + + /* TB prologue */ + /* save all callee saved registers */ + for(i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_push(s, tcg_target_callee_save_regs[i]); + } + /* reserve some stack space */ + push_size = 4 + ARRAY_SIZE(tcg_target_callee_save_regs) * 4; + frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + stack_addend = frame_size - push_size; + tcg_out_addi(s, TCG_REG_ESP, -stack_addend); + + tcg_out_modrm(s, 0xff, 4, TCG_REG_EAX); /* jmp *%eax */ + + /* TB epilogue */ + tb_ret_addr = s->code_ptr; + tcg_out_addi(s, TCG_REG_ESP, stack_addend); + for(i = ARRAY_SIZE(tcg_target_callee_save_regs) - 1; i >= 0; i--) { + tcg_out_pop(s, tcg_target_callee_save_regs[i]); + } + tcg_out8(s, 0xc3); /* ret */ +} + +void tcg_target_init(TCGContext *s) +{ + /* fail safe */ + if ((1 << CPU_TLB_ENTRY_BITS) != sizeof(CPUTLBEntry)) + tcg_abort(); + + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_EAX) | + (1 << TCG_REG_EDX) | + (1 << TCG_REG_ECX)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_ESP); + + tcg_add_target_add_op_defs(x86_op_defs); +} diff --git a/qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..69227c3 --- /dev/null +++ b/qemu/qemu-git/tcg/i386/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,67 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_I386 1 + +#define TCG_TARGET_REG_BITS 32 +//#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 8 + +enum { + TCG_REG_EAX = 0, + TCG_REG_ECX, + TCG_REG_EDX, + TCG_REG_EBX, + TCG_REG_ESP, + TCG_REG_EBP, + TCG_REG_ESI, + TCG_REG_EDI, +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_ESP +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +/* optional instructions */ +#define TCG_TARGET_HAS_bswap16_i32 +#define TCG_TARGET_HAS_bswap32_i32 +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_not_i32 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_rot_i32 +#define TCG_TARGET_HAS_ext8u_i32 +#define TCG_TARGET_HAS_ext16u_i32 + +#define TCG_TARGET_HAS_GUEST_BASE + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_EBP +#define TCG_AREG1 TCG_REG_EBX +#define TCG_AREG2 TCG_REG_ESI + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +} diff --git a/qemu/qemu-git/tcg/i386/tcg-target.c b/qemu/qemu-git/tcg/i386/tcg-target.c new file mode 100644 index 0000000..972b102 --- /dev/null +++ b/qemu/qemu-git/tcg/i386/tcg-target.c @@ -0,0 +1,1262 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%eax", + "%ecx", + "%edx", + "%ebx", + "%esp", + "%ebp", + "%esi", + "%edi", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_EAX, + TCG_REG_EDX, + TCG_REG_ECX, + TCG_REG_EBX, + TCG_REG_ESI, + TCG_REG_EDI, + TCG_REG_EBP, +}; + +static const int tcg_target_call_iarg_regs[3] = { TCG_REG_EAX, TCG_REG_EDX, TCG_REG_ECX }; +static const int tcg_target_call_oarg_regs[2] = { TCG_REG_EAX, TCG_REG_EDX }; + +static uint8_t *tb_ret_addr; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch(type) { + case R_386_32: + *(uint32_t *)code_ptr = value; + break; + case R_386_PC32: + *(uint32_t *)code_ptr = value - (long)code_ptr; + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + flags &= TCG_CALL_TYPE_MASK; + switch(flags) { + case TCG_CALL_TYPE_STD: + return 0; + case TCG_CALL_TYPE_REGPARM_1: + case TCG_CALL_TYPE_REGPARM_2: + case TCG_CALL_TYPE_REGPARM: + return flags - TCG_CALL_TYPE_REGPARM_1 + 1; + default: + tcg_abort(); + } +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch(ct_str[0]) { + case 'a': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EAX); + break; + case 'b': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EBX); + break; + case 'c': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_ECX); + break; + case 'd': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EDX); + break; + case 'S': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_ESI); + break; + case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_EDI); + break; + case 'q': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xf); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xff); + break; + + /* qemu_ld/st address constraint */ + case 'L': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_EAX); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_EDX); + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else + return 0; +} + +#define ARITH_ADD 0 +#define ARITH_OR 1 +#define ARITH_ADC 2 +#define ARITH_SBB 3 +#define ARITH_AND 4 +#define ARITH_SUB 5 +#define ARITH_XOR 6 +#define ARITH_CMP 7 + +#define SHIFT_ROL 0 +#define SHIFT_ROR 1 +#define SHIFT_SHL 4 +#define SHIFT_SHR 5 +#define SHIFT_SAR 7 + +#define JCC_JMP (-1) +#define JCC_JO 0x0 +#define JCC_JNO 0x1 +#define JCC_JB 0x2 +#define JCC_JAE 0x3 +#define JCC_JE 0x4 +#define JCC_JNE 0x5 +#define JCC_JBE 0x6 +#define JCC_JA 0x7 +#define JCC_JS 0x8 +#define JCC_JNS 0x9 +#define JCC_JP 0xa +#define JCC_JNP 0xb +#define JCC_JL 0xc +#define JCC_JGE 0xd +#define JCC_JLE 0xe +#define JCC_JG 0xf + +#define P_EXT 0x100 /* 0x0f opcode prefix */ + +static const uint8_t tcg_cond_to_jcc[10] = { + [TCG_COND_EQ] = JCC_JE, + [TCG_COND_NE] = JCC_JNE, + [TCG_COND_LT] = JCC_JL, + [TCG_COND_GE] = JCC_JGE, + [TCG_COND_LE] = JCC_JLE, + [TCG_COND_GT] = JCC_JG, + [TCG_COND_LTU] = JCC_JB, + [TCG_COND_GEU] = JCC_JAE, + [TCG_COND_LEU] = JCC_JBE, + [TCG_COND_GTU] = JCC_JA, +}; + +static inline void tcg_out_opc(TCGContext *s, int opc) +{ + if (opc & P_EXT) + tcg_out8(s, 0x0f); + tcg_out8(s, opc); +} + +static inline void tcg_out_modrm(TCGContext *s, int opc, int r, int rm) +{ + tcg_out_opc(s, opc); + tcg_out8(s, 0xc0 | (r << 3) | rm); +} + +/* rm == -1 means no register index */ +static inline void tcg_out_modrm_offset(TCGContext *s, int opc, int r, int rm, + int32_t offset) +{ + tcg_out_opc(s, opc); + if (rm == -1) { + tcg_out8(s, 0x05 | (r << 3)); + tcg_out32(s, offset); + } else if (offset == 0 && rm != TCG_REG_EBP) { + if (rm == TCG_REG_ESP) { + tcg_out8(s, 0x04 | (r << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x00 | (r << 3) | rm); + } + } else if ((int8_t)offset == offset) { + if (rm == TCG_REG_ESP) { + tcg_out8(s, 0x44 | (r << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x40 | (r << 3) | rm); + } + tcg_out8(s, offset); + } else { + if (rm == TCG_REG_ESP) { + tcg_out8(s, 0x84 | (r << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x80 | (r << 3) | rm); + } + tcg_out32(s, offset); + } +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + if (arg != ret) + tcg_out_modrm(s, 0x8b, ret, arg); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, int32_t arg) +{ + if (arg == 0) { + /* xor r0,r0 */ + tcg_out_modrm(s, 0x01 | (ARITH_XOR << 3), ret, ret); + } else { + tcg_out8(s, 0xb8 + ret); + tcg_out32(s, arg); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + /* movl */ + tcg_out_modrm_offset(s, 0x8b, ret, arg1, arg2); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + /* movl */ + tcg_out_modrm_offset(s, 0x89, arg, arg1, arg2); +} + +static inline void tgen_arithi(TCGContext *s, int c, int r0, int32_t val, int cf) +{ + if (!cf && ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1))) { + /* inc */ + tcg_out_opc(s, 0x40 + r0); + } else if (!cf && ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1))) { + /* dec */ + tcg_out_opc(s, 0x48 + r0); + } else if (val == (int8_t)val) { + tcg_out_modrm(s, 0x83, c, r0); + tcg_out8(s, val); + } else if (c == ARITH_AND && val == 0xffu && r0 < 4) { + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, r0, r0); + } else if (c == ARITH_AND && val == 0xffffu) { + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, r0, r0); + } else { + tcg_out_modrm(s, 0x81, c, r0); + tcg_out32(s, val); + } +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) + tgen_arithi(s, ARITH_ADD, reg, val, 0); +} + +static void tcg_out_jxx(TCGContext *s, int opc, int label_index) +{ + int32_t val, val1; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + val1 = val - 2; + if ((int8_t)val1 == val1) { + if (opc == -1) + tcg_out8(s, 0xeb); + else + tcg_out8(s, 0x70 + opc); + tcg_out8(s, val1); + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + tcg_out32(s, val - 5); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + tcg_out32(s, val - 6); + } + } + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + } + tcg_out_reloc(s, s->code_ptr, R_386_PC32, label_index, -4); + s->code_ptr += 4; + } +} + +static void tcg_out_brcond(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + if (const_arg2) { + if (arg2 == 0) { + /* test r, r */ + tcg_out_modrm(s, 0x85, arg1, arg1); + } else { + tgen_arithi(s, ARITH_CMP, arg1, arg2, 0); + } + } else { + tcg_out_modrm(s, 0x01 | (ARITH_CMP << 3), arg2, arg1); + } + tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index); +} + +/* XXX: we implement it at the target level to avoid having to + handle cross basic blocks temporaries */ +static void tcg_out_brcond2(TCGContext *s, + const TCGArg *args, const int *const_args) +{ + int label_next; + label_next = gen_new_label(); + switch(args[4]) { + case TCG_COND_EQ: + tcg_out_brcond(s, TCG_COND_NE, args[0], args[2], const_args[2], label_next); + tcg_out_brcond(s, TCG_COND_EQ, args[1], args[3], const_args[3], args[5]); + break; + case TCG_COND_NE: + tcg_out_brcond(s, TCG_COND_NE, args[0], args[2], const_args[2], args[5]); + tcg_out_brcond(s, TCG_COND_NE, args[1], args[3], const_args[3], args[5]); + break; + case TCG_COND_LT: + tcg_out_brcond(s, TCG_COND_LT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_LE: + tcg_out_brcond(s, TCG_COND_LT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LEU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GT: + tcg_out_brcond(s, TCG_COND_GT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GE: + tcg_out_brcond(s, TCG_COND_GT, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GEU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_LTU: + tcg_out_brcond(s, TCG_COND_LTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_LEU: + tcg_out_brcond(s, TCG_COND_LTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_LEU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GTU: + tcg_out_brcond(s, TCG_COND_GTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GTU, args[0], args[2], const_args[2], args[5]); + break; + case TCG_COND_GEU: + tcg_out_brcond(s, TCG_COND_GTU, args[1], args[3], const_args[3], args[5]); + tcg_out_jxx(s, JCC_JNE, label_next); + tcg_out_brcond(s, TCG_COND_GEU, args[0], args[2], const_args[2], args[5]); + break; + default: + tcg_abort(); + } + tcg_out_label(s, label_next, (tcg_target_long)s->code_ptr); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +#ifndef CONFIG_USER_ONLY +#define GUEST_BASE 0 +#endif + +/* XXX: qemu_ld and qemu_st could be modified to clobber only EDX and + EAX. It will be useful once fixed registers globals are less + common. */ +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + + r0 = TCG_REG_EAX; + r1 = TCG_REG_EDX; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out_modrm(s, 0xc1, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + tcg_out_opc(s, 0x8d); /* lea offset(r1, %ebp), r1 */ + tcg_out8(s, 0x80 | (r1 << 3) | 0x04); + tcg_out8(s, (5 << 3) | r1); + tcg_out32(s, offsetof(CPUState, tlb_table[mem_index][0].addr_read)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b, r0, r1, 0); + + tcg_out_mov(s, r0, addr_reg); + +#if TARGET_LONG_BITS == 32 + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; +#else + /* jne label3 */ + tcg_out8(s, 0x70 + JCC_JNE); + label3_ptr = s->code_ptr; + s->code_ptr++; + + /* cmp 4(r1), addr_reg2 */ + tcg_out_modrm_offset(s, 0x3b, addr_reg2, r1, 4); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* label3: */ + *label3_ptr = s->code_ptr - label3_ptr - 1; +#endif + + /* XXX: move that code at the end of the TB */ +#if TARGET_LONG_BITS == 32 + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_EDX, mem_index); +#else + tcg_out_mov(s, TCG_REG_EDX, addr_reg2); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_ECX, mem_index); +#endif + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_ld_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + + switch(opc) { + case 0 | 4: + /* movsbl */ + tcg_out_modrm(s, 0xbe | P_EXT, data_reg, TCG_REG_EAX); + break; + case 1 | 4: + /* movswl */ + tcg_out_modrm(s, 0xbf | P_EXT, data_reg, TCG_REG_EAX); + break; + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, data_reg, TCG_REG_EAX); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, data_reg, TCG_REG_EAX); + break; + case 2: + default: + tcg_out_mov(s, data_reg, TCG_REG_EAX); + break; + case 3: + if (data_reg == TCG_REG_EDX) { + tcg_out_opc(s, 0x90 + TCG_REG_EDX); /* xchg %edx, %eax */ + tcg_out_mov(s, data_reg2, TCG_REG_EAX); + } else { + tcg_out_mov(s, data_reg, TCG_REG_EAX); + tcg_out_mov(s, data_reg2, TCG_REG_EDX); + } + break; + } + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_read)); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, data_reg, r0, GUEST_BASE); + break; + case 0 | 4: + /* movsbl */ + tcg_out_modrm_offset(s, 0xbe | P_EXT, data_reg, r0, GUEST_BASE); + break; + case 1: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, data_reg, r0, GUEST_BASE); + if (bswap) { + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + } + break; + case 1 | 4: + /* movswl */ + tcg_out_modrm_offset(s, 0xbf | P_EXT, data_reg, r0, GUEST_BASE); + if (bswap) { + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + + /* movswl data_reg, data_reg */ + tcg_out_modrm(s, 0xbf | P_EXT, data_reg, data_reg); + } + break; + case 2: + /* movl (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, GUEST_BASE); + if (bswap) { + /* bswap */ + tcg_out_opc(s, (0xc8 + data_reg) | P_EXT); + } + break; + case 3: + /* XXX: could be nicer */ + if (r0 == data_reg) { + r1 = TCG_REG_EDX; + if (r1 == data_reg) + r1 = TCG_REG_EAX; + tcg_out_mov(s, r1, r0); + r0 = r1; + } + if (!bswap) { + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, GUEST_BASE); + tcg_out_modrm_offset(s, 0x8b, data_reg2, r0, GUEST_BASE + 4); + } else { + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, GUEST_BASE + 4); + tcg_out_opc(s, (0xc8 + data_reg) | P_EXT); + + tcg_out_modrm_offset(s, 0x8b, data_reg2, r0, GUEST_BASE); + /* bswap */ + tcg_out_opc(s, (0xc8 + data_reg2) | P_EXT); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, mem_index, s_bits, bswap; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 +#if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +#endif + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + + s_bits = opc; + + r0 = TCG_REG_EAX; + r1 = TCG_REG_EDX; + +#if defined(CONFIG_SOFTMMU) + tcg_out_mov(s, r1, addr_reg); + + tcg_out_mov(s, r0, addr_reg); + + tcg_out_modrm(s, 0xc1, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + tcg_out_opc(s, 0x8d); /* lea offset(r1, %ebp), r1 */ + tcg_out8(s, 0x80 | (r1 << 3) | 0x04); + tcg_out8(s, (5 << 3) | r1); + tcg_out32(s, offsetof(CPUState, tlb_table[mem_index][0].addr_write)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b, r0, r1, 0); + + tcg_out_mov(s, r0, addr_reg); + +#if TARGET_LONG_BITS == 32 + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; +#else + /* jne label3 */ + tcg_out8(s, 0x70 + JCC_JNE); + label3_ptr = s->code_ptr; + s->code_ptr++; + + /* cmp 4(r1), addr_reg2 */ + tcg_out_modrm_offset(s, 0x3b, addr_reg2, r1, 4); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* label3: */ + *label3_ptr = s->code_ptr - label3_ptr - 1; +#endif + + /* XXX: move that code at the end of the TB */ +#if TARGET_LONG_BITS == 32 + if (opc == 3) { + tcg_out_mov(s, TCG_REG_EDX, data_reg); + tcg_out_mov(s, TCG_REG_ECX, data_reg2); + tcg_out8(s, 0x6a); /* push Ib */ + tcg_out8(s, mem_index); + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + tcg_out_addi(s, TCG_REG_ESP, 4); + } else { + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, TCG_REG_EDX, data_reg); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, TCG_REG_EDX, data_reg); + break; + case 2: + tcg_out_mov(s, TCG_REG_EDX, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_ECX, mem_index); + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + } +#else + if (opc == 3) { + tcg_out_mov(s, TCG_REG_EDX, addr_reg2); + tcg_out8(s, 0x6a); /* push Ib */ + tcg_out8(s, mem_index); + tcg_out_opc(s, 0x50 + data_reg2); /* push */ + tcg_out_opc(s, 0x50 + data_reg); /* push */ + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + tcg_out_addi(s, TCG_REG_ESP, 12); + } else { + tcg_out_mov(s, TCG_REG_EDX, addr_reg2); + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT, TCG_REG_ECX, data_reg); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, TCG_REG_ECX, data_reg); + break; + case 2: + tcg_out_mov(s, TCG_REG_ECX, data_reg); + break; + } + tcg_out8(s, 0x6a); /* push Ib */ + tcg_out8(s, mem_index); + tcg_out8(s, 0xe8); + tcg_out32(s, (tcg_target_long)qemu_st_helpers[s_bits] - + (tcg_target_long)s->code_ptr - 4); + tcg_out_addi(s, TCG_REG_ESP, 4); + } +#endif + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_write)); +#else + r0 = addr_reg; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movb */ + tcg_out_modrm_offset(s, 0x88, data_reg, r0, GUEST_BASE); + break; + case 1: + if (bswap) { + tcg_out_mov(s, r1, data_reg); + tcg_out8(s, 0x66); /* rolw $8, %ecx */ + tcg_out_modrm(s, 0xc1, 0, r1); + tcg_out8(s, 8); + data_reg = r1; + } + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, data_reg, r0, GUEST_BASE); + break; + case 2: + if (bswap) { + tcg_out_mov(s, r1, data_reg); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT); + data_reg = r1; + } + /* movl */ + tcg_out_modrm_offset(s, 0x89, data_reg, r0, GUEST_BASE); + break; + case 3: + if (bswap) { + tcg_out_mov(s, r1, data_reg2); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT); + tcg_out_modrm_offset(s, 0x89, r1, r0, GUEST_BASE); + tcg_out_mov(s, r1, data_reg); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT); + tcg_out_modrm_offset(s, 0x89, r1, r0, GUEST_BASE + 4); + } else { + tcg_out_modrm_offset(s, 0x89, data_reg, r0, GUEST_BASE); + tcg_out_modrm_offset(s, 0x89, data_reg2, r0, GUEST_BASE + 4); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + int c; + + switch(opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_EAX, args[0]); + tcg_out8(s, 0xe9); /* jmp tb_ret_addr */ + tcg_out32(s, tb_ret_addr - s->code_ptr - 4); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_out8(s, 0xe9); /* jmp im */ + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out32(s, 0); + } else { + /* indirect jump method */ + /* jmp Ev */ + tcg_out_modrm_offset(s, 0xff, 4, -1, + (tcg_target_long)(s->tb_next + args[0])); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) { + tcg_out8(s, 0xe8); + tcg_out32(s, args[0] - (tcg_target_long)s->code_ptr - 4); + } else { + tcg_out_modrm(s, 0xff, 2, args[0]); + } + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out8(s, 0xe9); + tcg_out32(s, args[0] - (tcg_target_long)s->code_ptr - 4); + } else { + tcg_out_modrm(s, 0xff, 4, args[0]); + } + break; + case INDEX_op_br: + tcg_out_jxx(s, JCC_JMP, args[0]); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + /* movsbl */ + tcg_out_modrm_offset(s, 0xbe | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + /* movswl */ + tcg_out_modrm_offset(s, 0xbf | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + /* movl */ + tcg_out_modrm_offset(s, 0x8b, args[0], args[1], args[2]); + break; + case INDEX_op_st8_i32: + /* movb */ + tcg_out_modrm_offset(s, 0x88, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + /* movl */ + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith; + case INDEX_op_or_i32: + c = ARITH_OR; + goto gen_arith; + case INDEX_op_xor_i32: + c = ARITH_XOR; + goto gen_arith; + case INDEX_op_add_i32: + c = ARITH_ADD; + gen_arith: + if (const_args[2]) { + tgen_arithi(s, c, args[0], args[2], 0); + } else { + tcg_out_modrm(s, 0x01 | (c << 3), args[2], args[0]); + } + break; + case INDEX_op_mul_i32: + if (const_args[2]) { + int32_t val; + val = args[2]; + if (val == (int8_t)val) { + tcg_out_modrm(s, 0x6b, args[0], args[0]); + tcg_out8(s, val); + } else { + tcg_out_modrm(s, 0x69, args[0], args[0]); + tcg_out32(s, val); + } + } else { + tcg_out_modrm(s, 0xaf | P_EXT, args[0], args[2]); + } + break; + case INDEX_op_mulu2_i32: + tcg_out_modrm(s, 0xf7, 4, args[3]); + break; + case INDEX_op_div2_i32: + tcg_out_modrm(s, 0xf7, 7, args[4]); + break; + case INDEX_op_divu2_i32: + tcg_out_modrm(s, 0xf7, 6, args[4]); + break; + case INDEX_op_shl_i32: + c = SHIFT_SHL; + gen_shift32: + if (const_args[2]) { + if (args[2] == 1) { + tcg_out_modrm(s, 0xd1, c, args[0]); + } else { + tcg_out_modrm(s, 0xc1, c, args[0]); + tcg_out8(s, args[2]); + } + } else { + tcg_out_modrm(s, 0xd3, c, args[0]); + } + break; + case INDEX_op_shr_i32: + c = SHIFT_SHR; + goto gen_shift32; + case INDEX_op_sar_i32: + c = SHIFT_SAR; + goto gen_shift32; + case INDEX_op_rotl_i32: + c = SHIFT_ROL; + goto gen_shift32; + case INDEX_op_rotr_i32: + c = SHIFT_ROR; + goto gen_shift32; + + case INDEX_op_add2_i32: + if (const_args[4]) + tgen_arithi(s, ARITH_ADD, args[0], args[4], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_ADD << 3), args[4], args[0]); + if (const_args[5]) + tgen_arithi(s, ARITH_ADC, args[1], args[5], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_ADC << 3), args[5], args[1]); + break; + case INDEX_op_sub2_i32: + if (const_args[4]) + tgen_arithi(s, ARITH_SUB, args[0], args[4], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_SUB << 3), args[4], args[0]); + if (const_args[5]) + tgen_arithi(s, ARITH_SBB, args[1], args[5], 1); + else + tcg_out_modrm(s, 0x01 | (ARITH_SBB << 3), args[5], args[1]); + break; + case INDEX_op_brcond_i32: + tcg_out_brcond(s, args[2], args[0], args[1], const_args[1], args[3]); + break; + case INDEX_op_brcond2_i32: + tcg_out_brcond2(s, args, const_args); + break; + + case INDEX_op_bswap16_i32: + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, SHIFT_ROL, args[0]); + tcg_out8(s, 8); + break; + case INDEX_op_bswap32_i32: + tcg_out_opc(s, (0xc8 + args[0]) | P_EXT); + break; + + case INDEX_op_neg_i32: + tcg_out_modrm(s, 0xf7, 3, args[0]); + break; + + case INDEX_op_not_i32: + tcg_out_modrm(s, 0xf7, 2, args[0]); + break; + + case INDEX_op_ext8s_i32: + tcg_out_modrm(s, 0xbe | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext16s_i32: + tcg_out_modrm(s, 0xbf | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext8u_i32: + tcg_out_modrm(s, 0xb6 | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext16u_i32: + tcg_out_modrm(s, 0xb7 | P_EXT, args[0], args[1]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + default: + tcg_abort(); + } +} + +static const TCGTargetOpDef x86_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "q", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "0", "ri" } }, + { INDEX_op_sub_i32, { "r", "0", "ri" } }, + { INDEX_op_mul_i32, { "r", "0", "ri" } }, + { INDEX_op_mulu2_i32, { "a", "d", "a", "r" } }, + { INDEX_op_div2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_divu2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_and_i32, { "r", "0", "ri" } }, + { INDEX_op_or_i32, { "r", "0", "ri" } }, + { INDEX_op_xor_i32, { "r", "0", "ri" } }, + + { INDEX_op_shl_i32, { "r", "0", "ci" } }, + { INDEX_op_shr_i32, { "r", "0", "ci" } }, + { INDEX_op_sar_i32, { "r", "0", "ci" } }, + { INDEX_op_rotl_i32, { "r", "0", "ci" } }, + { INDEX_op_rotr_i32, { "r", "0", "ci" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + + { INDEX_op_add2_i32, { "r", "r", "0", "1", "ri", "ri" } }, + { INDEX_op_sub2_i32, { "r", "r", "0", "1", "ri", "ri" } }, + { INDEX_op_brcond2_i32, { "r", "r", "ri", "ri" } }, + + { INDEX_op_bswap16_i32, { "r", "0" } }, + { INDEX_op_bswap32_i32, { "r", "0" } }, + + { INDEX_op_neg_i32, { "r", "0" } }, + + { INDEX_op_not_i32, { "r", "0" } }, + + { INDEX_op_ext8s_i32, { "r", "q" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + { INDEX_op_ext8u_i32, { "r", "q"} }, + { INDEX_op_ext16u_i32, { "r", "r"} }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L" } }, + + { INDEX_op_qemu_st8, { "cb", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L" } }, +#else + { INDEX_op_qemu_ld8u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L", "L" } }, + + { INDEX_op_qemu_st8, { "cb", "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L", "L", "L" } }, +#endif + { -1 }, +}; + +static int tcg_target_callee_save_regs[] = { + /* TCG_REG_EBP, */ /* currently used for the global env, so no + need to save */ + TCG_REG_EBX, + TCG_REG_ESI, + TCG_REG_EDI, +}; + +static inline void tcg_out_push(TCGContext *s, int reg) +{ + tcg_out_opc(s, 0x50 + reg); +} + +static inline void tcg_out_pop(TCGContext *s, int reg) +{ + tcg_out_opc(s, 0x58 + reg); +} + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + int i, frame_size, push_size, stack_addend; + + /* TB prologue */ + /* save all callee saved registers */ + for(i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_push(s, tcg_target_callee_save_regs[i]); + } + /* reserve some stack space */ + push_size = 4 + ARRAY_SIZE(tcg_target_callee_save_regs) * 4; + frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + stack_addend = frame_size - push_size; + tcg_out_addi(s, TCG_REG_ESP, -stack_addend); + + tcg_out_modrm(s, 0xff, 4, TCG_REG_EAX); /* jmp *%eax */ + + /* TB epilogue */ + tb_ret_addr = s->code_ptr; + tcg_out_addi(s, TCG_REG_ESP, stack_addend); + for(i = ARRAY_SIZE(tcg_target_callee_save_regs) - 1; i >= 0; i--) { + tcg_out_pop(s, tcg_target_callee_save_regs[i]); + } + tcg_out8(s, 0xc3); /* ret */ +} + +void tcg_target_init(TCGContext *s) +{ + /* fail safe */ + if ((1 << CPU_TLB_ENTRY_BITS) != sizeof(CPUTLBEntry)) + tcg_abort(); + + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_EAX) | + (1 << TCG_REG_EDX) | + (1 << TCG_REG_ECX)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_ESP); + + tcg_add_target_add_op_defs(x86_op_defs); +} diff --git a/qemu/qemu-git/tcg/i386/tcg-target.h b/qemu/qemu-git/tcg/i386/tcg-target.h new file mode 100644 index 0000000..69227c3 --- /dev/null +++ b/qemu/qemu-git/tcg/i386/tcg-target.h @@ -0,0 +1,67 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_I386 1 + +#define TCG_TARGET_REG_BITS 32 +//#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 8 + +enum { + TCG_REG_EAX = 0, + TCG_REG_ECX, + TCG_REG_EDX, + TCG_REG_EBX, + TCG_REG_ESP, + TCG_REG_EBP, + TCG_REG_ESI, + TCG_REG_EDI, +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_ESP +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +/* optional instructions */ +#define TCG_TARGET_HAS_bswap16_i32 +#define TCG_TARGET_HAS_bswap32_i32 +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_not_i32 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_rot_i32 +#define TCG_TARGET_HAS_ext8u_i32 +#define TCG_TARGET_HAS_ext16u_i32 + +#define TCG_TARGET_HAS_GUEST_BASE + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_EBP +#define TCG_AREG1 TCG_REG_EBX +#define TCG_AREG2 TCG_REG_ESI + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +} diff --git a/qemu/qemu-git/tcg/mips/.svn/all-wcprops b/qemu/qemu-git/tcg/mips/.svn/all-wcprops new file mode 100644 index 0000000..e129c1c --- /dev/null +++ b/qemu/qemu-git/tcg/mips/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/mips +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/mips/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/mips/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/mips/.svn/entries b/qemu/qemu-git/tcg/mips/.svn/entries new file mode 100644 index 0000000..245feb8 --- /dev/null +++ b/qemu/qemu-git/tcg/mips/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/mips +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +c32ff2c4b3b3b43bf7ca41220e9fbfaf +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +40459 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +c18f6e092964f5d0f33a12a38e7cf4e8 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +3067 + diff --git a/qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..8fcb5c9 --- /dev/null +++ b/qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,1342 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008-2009 Arnaud Patard + * Copyright (c) 2009 Aurelien Jarno + * Based on i386/tcg-target.c - Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#if defined(TCG_TARGET_WORDS_BIGENDIAN) == defined(TARGET_WORDS_BIGENDIAN) +# define TCG_NEED_BSWAP 0 +#else +# define TCG_NEED_BSWAP 1 +#endif + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "zero", + "at", + "v0", + "v1", + "a0", + "a1", + "a2", + "a3", + "t0", + "t1", + "t2", + "t3", + "t4", + "t5", + "t6", + "t7", + "s0", + "s1", + "s2", + "s3", + "s4", + "s5", + "s6", + "s7", + "t8", + "t9", + "k0", + "k1", + "gp", + "sp", + "fp", + "ra", +}; +#endif + +/* check if we really need so many registers :P */ +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_S0, + TCG_REG_S1, + TCG_REG_S2, + TCG_REG_S3, + TCG_REG_S4, + TCG_REG_S5, + TCG_REG_S6, + TCG_REG_S7, + TCG_REG_T1, + TCG_REG_T2, + TCG_REG_T3, + TCG_REG_T4, + TCG_REG_T5, + TCG_REG_T6, + TCG_REG_T7, + TCG_REG_T8, + TCG_REG_T9, + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3, + TCG_REG_V0, + TCG_REG_V1 +}; + +static const int tcg_target_call_iarg_regs[4] = { + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3 +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_V0, + TCG_REG_V1 +}; + +static uint8_t *tb_ret_addr; + +static inline uint32_t reloc_lo16_val (void *pc, tcg_target_long target) +{ + return target & 0xffff; +} + +static inline void reloc_lo16 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff) + | reloc_lo16_val(pc, target); +} + +static inline uint32_t reloc_hi16_val (void *pc, tcg_target_long target) +{ + return (target >> 16) & 0xffff; +} + +static inline void reloc_hi16 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff) + | reloc_hi16_val(pc, target); +} + +static inline uint32_t reloc_pc16_val (void *pc, tcg_target_long target) +{ + int32_t disp; + + disp = target - (tcg_target_long) pc - 4; + if (disp != (disp << 14) >> 14) { + tcg_abort (); + } + + return (disp >> 2) & 0xffff; +} + +static inline void reloc_pc16 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff) + | reloc_pc16_val(pc, target); +} + +static inline uint32_t reloc_26_val (void *pc, tcg_target_long target) +{ + if ((((tcg_target_long)pc + 4) & 0xf0000000) != (target & 0xf0000000)) { + tcg_abort (); + } + + return (target >> 2) & 0x3ffffff; +} + +static inline void reloc_pc26 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3ffffff) + | reloc_26_val(pc, target); +} + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch(type) { + case R_MIPS_LO16: + reloc_lo16(code_ptr, value); + break; + case R_MIPS_HI16: + reloc_hi16(code_ptr, value); + break; + case R_MIPS_PC16: + reloc_pc16(code_ptr, value); + break; + case R_MIPS_26: + reloc_pc26(code_ptr, value); + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 4; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch(ct_str[0]) { + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); + break; + case 'C': + ct->ct |= TCG_CT_REG; + tcg_regset_clear(ct->u.regs); + tcg_regset_set_reg(ct->u.regs, TCG_REG_T9); + break; + case 'L': /* qemu_ld output arg constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_V0); + break; + case 'l': /* qemu_ld input arg constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); +#if defined(CONFIG_SOFTMMU) + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0); +#endif + break; + case 'S': /* qemu_st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); +#if defined(CONFIG_SOFTMMU) + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0); +# if TARGET_LONG_BITS == 64 + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A1); +# endif + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2); +#endif + break; + case 'I': + ct->ct |= TCG_CT_CONST_U16; + break; + case 'J': + ct->ct |= TCG_CT_CONST_S16; + break; + case 'Z': + /* We are cheating a bit here, using the fact that the register + ZERO is also the register number 0. Hence there is no need + to check for const_args in each instruction. */ + ct->ct |= TCG_CT_CONST_ZERO; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_ZERO) && val == 0) + return 1; + else if ((ct & TCG_CT_CONST_U16) && val == (uint16_t)val) + return 1; + else if ((ct & TCG_CT_CONST_S16) && val == (int16_t)val) + return 1; + else + return 0; +} + +/* instruction opcodes */ +enum { + OPC_SPECIAL = 0x00 << 26, + OPC_BEQ = 0x04 << 26, + OPC_BNE = 0x05 << 26, + OPC_ADDIU = 0x09 << 26, + OPC_ANDI = 0x0C << 26, + OPC_ORI = 0x0D << 26, + OPC_XORI = 0x0E << 26, + OPC_LUI = 0x0F << 26, + OPC_LB = 0x20 << 26, + OPC_LH = 0x21 << 26, + OPC_LW = 0x23 << 26, + OPC_LBU = 0x24 << 26, + OPC_LHU = 0x25 << 26, + OPC_LWU = 0x27 << 26, + OPC_SB = 0x28 << 26, + OPC_SH = 0x29 << 26, + OPC_SW = 0x2B << 26, + OPC_SLL = OPC_SPECIAL | 0x00, + OPC_SRL = OPC_SPECIAL | 0x02, + OPC_SRA = OPC_SPECIAL | 0x03, + OPC_SLLV = OPC_SPECIAL | 0x04, + OPC_SRLV = OPC_SPECIAL | 0x06, + OPC_SRAV = OPC_SPECIAL | 0x07, + OPC_JR = OPC_SPECIAL | 0x08, + OPC_JALR = OPC_SPECIAL | 0x09, + OPC_MFHI = OPC_SPECIAL | 0x10, + OPC_MFLO = OPC_SPECIAL | 0x12, + OPC_MULT = OPC_SPECIAL | 0x18, + OPC_MULTU = OPC_SPECIAL | 0x19, + OPC_DIV = OPC_SPECIAL | 0x1A, + OPC_DIVU = OPC_SPECIAL | 0x1B, + OPC_ADDU = OPC_SPECIAL | 0x21, + OPC_SUBU = OPC_SPECIAL | 0x23, + OPC_AND = OPC_SPECIAL | 0x24, + OPC_OR = OPC_SPECIAL | 0x25, + OPC_XOR = OPC_SPECIAL | 0x26, + OPC_NOR = OPC_SPECIAL | 0x27, + OPC_SLT = OPC_SPECIAL | 0x2A, + OPC_SLTU = OPC_SPECIAL | 0x2B, +}; + +/* + * Type reg + */ +static inline void tcg_out_opc_reg(TCGContext *s, int opc, int rd, int rs, int rt) +{ + int32_t inst; + + inst = opc; + inst |= (rs & 0x1F) << 21; + inst |= (rt & 0x1F) << 16; + inst |= (rd & 0x1F) << 11; + tcg_out32(s, inst); +} + +/* + * Type immediate + */ +static inline void tcg_out_opc_imm(TCGContext *s, int opc, int rt, int rs, int imm) +{ + int32_t inst; + + inst = opc; + inst |= (rs & 0x1F) << 21; + inst |= (rt & 0x1F) << 16; + inst |= (imm & 0xffff); + tcg_out32(s, inst); +} + +/* + * Type sa + */ +static inline void tcg_out_opc_sa(TCGContext *s, int opc, int rd, int rt, int sa) +{ + int32_t inst; + + inst = opc; + inst |= (rt & 0x1F) << 16; + inst |= (rd & 0x1F) << 11; + inst |= (sa & 0x1F) << 6; + tcg_out32(s, inst); + +} + +static inline void tcg_out_nop(TCGContext *s) +{ + tcg_out32(s, 0); +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_opc_reg(s, OPC_ADDU, ret, arg, TCG_REG_ZERO); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int reg, int32_t arg) +{ + if (arg == (int16_t)arg) { + tcg_out_opc_imm(s, OPC_ADDIU, reg, TCG_REG_ZERO, arg); + } else if (arg == (uint16_t)arg) { + tcg_out_opc_imm(s, OPC_ORI, reg, TCG_REG_ZERO, arg); + } else { + tcg_out_opc_imm(s, OPC_LUI, reg, 0, arg >> 16); + tcg_out_opc_imm(s, OPC_ORI, reg, reg, arg & 0xffff); + } +} + +static inline void tcg_out_bswap16(TCGContext *s, int ret, int arg) +{ + /* ret and arg can't be register at */ + if (ret == TCG_REG_AT || arg == TCG_REG_AT) { + tcg_abort(); + } + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, TCG_REG_AT, 0x00ff); + + tcg_out_opc_sa(s, OPC_SLL, ret, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, ret, ret, 0xff00); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); +} + +static inline void tcg_out_bswap16s(TCGContext *s, int ret, int arg) +{ + /* ret and arg can't be register at */ + if (ret == TCG_REG_AT || arg == TCG_REG_AT) { + tcg_abort(); + } + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, TCG_REG_AT, 0xff); + + tcg_out_opc_sa(s, OPC_SLL, ret, arg, 24); + tcg_out_opc_sa(s, OPC_SRA, ret, ret, 16); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); +} + +static inline void tcg_out_bswap32(TCGContext *s, int ret, int arg) +{ + /* ret and arg must be different and can't be register at */ + if (ret == arg || ret == TCG_REG_AT || arg == TCG_REG_AT) { + tcg_abort(); + } + + tcg_out_opc_sa(s, OPC_SLL, ret, arg, 24); + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 24); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); + + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, arg, 0xff00); + tcg_out_opc_sa(s, OPC_SLL, TCG_REG_AT, TCG_REG_AT, 8); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, TCG_REG_AT, 0xff00); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); +} + +static inline void tcg_out_ldst(TCGContext *s, int opc, int arg, + int arg1, tcg_target_long arg2) +{ + if (arg2 == (int16_t) arg2) { + tcg_out_opc_imm(s, opc, arg, arg1, arg2); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_AT, arg2); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_AT, TCG_REG_AT, arg1); + tcg_out_opc_imm(s, opc, arg, TCG_REG_AT, 0); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_ldst(s, OPC_LW, arg, arg1, arg2); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_ldst(s, OPC_SW, arg, arg1, arg2); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val == (int16_t)val) { + tcg_out_opc_imm(s, OPC_ADDIU, reg, reg, val); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_AT, val); + tcg_out_opc_reg(s, OPC_ADDU, reg, reg, TCG_REG_AT); + } +} + +static void tcg_out_brcond(TCGContext *s, int cond, int arg1, + int arg2, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + switch (cond) { + case TCG_COND_EQ: + tcg_out_opc_imm(s, OPC_BEQ, arg1, arg2, 0); + break; + case TCG_COND_NE: + tcg_out_opc_imm(s, OPC_BNE, arg1, arg2, 0); + break; + case TCG_COND_LT: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_LTU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GE: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GEU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_LE: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_LEU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GT: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GTU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + default: + tcg_abort(); + break; + } + if (l->has_value) { + reloc_pc16(s->code_ptr - 4, l->u.value); + } else { + tcg_out_reloc(s, s->code_ptr - 4, R_MIPS_PC16, label_index, 0); + } + tcg_out_nop(s); +} + +/* XXX: we implement it at the target level to avoid having to + handle cross basic blocks temporaries */ +static void tcg_out_brcond2(TCGContext *s, int cond, int arg1, + int arg2, int arg3, int arg4, int label_index) +{ + void *label_ptr; + + switch(cond) { + case TCG_COND_NE: + tcg_out_brcond(s, TCG_COND_NE, arg2, arg4, label_index); + tcg_out_brcond(s, TCG_COND_NE, arg1, arg3, label_index); + return; + case TCG_COND_EQ: + break; + case TCG_COND_LT: + case TCG_COND_LE: + tcg_out_brcond(s, TCG_COND_LT, arg2, arg4, label_index); + break; + case TCG_COND_GT: + case TCG_COND_GE: + tcg_out_brcond(s, TCG_COND_GT, arg2, arg4, label_index); + break; + case TCG_COND_LTU: + case TCG_COND_LEU: + tcg_out_brcond(s, TCG_COND_LTU, arg2, arg4, label_index); + break; + case TCG_COND_GTU: + case TCG_COND_GEU: + tcg_out_brcond(s, TCG_COND_GTU, arg2, arg4, label_index); + break; + default: + tcg_abort(); + } + + label_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BNE, arg2, arg4, 0); + tcg_out_nop(s); + + switch(cond) { + case TCG_COND_EQ: + tcg_out_brcond(s, TCG_COND_EQ, arg1, arg3, label_index); + break; + case TCG_COND_LT: + case TCG_COND_LTU: + tcg_out_brcond(s, TCG_COND_LTU, arg1, arg3, label_index); + break; + case TCG_COND_LE: + case TCG_COND_LEU: + tcg_out_brcond(s, TCG_COND_LEU, arg1, arg3, label_index); + break; + case TCG_COND_GT: + case TCG_COND_GTU: + tcg_out_brcond(s, TCG_COND_GTU, arg1, arg3, label_index); + break; + case TCG_COND_GE: + case TCG_COND_GEU: + tcg_out_brcond(s, TCG_COND_GEU, arg1, arg3, label_index); + break; + default: + tcg_abort(); + } + + reloc_pc16(label_ptr, (tcg_target_long) s->code_ptr); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_regl, addr_reg1, addr_meml; + int data_regl, data_regh, data_reg1, data_reg2; + int mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + void *label1_ptr, *label2_ptr; + int sp_args; +#endif +#if TARGET_LONG_BITS == 64 +# if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +# endif + int addr_regh, addr_reg2, addr_memh; +#endif + data_regl = *args++; + if (opc == 3) + data_regh = *args++; + else + data_regh = 0; + addr_regl = *args++; +#if TARGET_LONG_BITS == 64 + addr_regh = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + + if (opc == 3) { +#if defined(TCG_TARGET_WORDS_BIGENDIAN) + data_reg1 = data_regh; + data_reg2 = data_regl; +#else + data_reg1 = data_regl; + data_reg2 = data_regh; +#endif + } else { + data_reg1 = data_regl; + data_reg2 = 0; + } +#if TARGET_LONG_BITS == 64 +# if defined(TCG_TARGET_WORDS_BIGENDIAN) + addr_reg1 = addr_regh; + addr_reg2 = addr_regl; + addr_memh = 0; + addr_meml = 4; +# else + addr_reg1 = addr_regl; + addr_reg2 = addr_regh; + addr_memh = 4; + addr_meml = 0; +# endif +#else + addr_reg1 = addr_regl; + addr_meml = 0; +#endif + +#if defined(CONFIG_SOFTMMU) + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_A0, addr_regl, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_A0, TCG_REG_A0, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_A0, TCG_REG_A0, TCG_AREG0); + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_read) + addr_meml); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T0, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + tcg_out_opc_reg(s, OPC_AND, TCG_REG_T0, TCG_REG_T0, addr_regl); + +# if TARGET_LONG_BITS == 64 + label3_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_read) + addr_memh); + + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, addr_regh, TCG_REG_AT, 0); + tcg_out_nop(s); + + reloc_pc16(label3_ptr, (tcg_target_long) s->code_ptr); +# else + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); +# endif + + /* slow path */ + sp_args = TCG_REG_A0; + tcg_out_mov(s, sp_args++, addr_reg1); +# if TARGET_LONG_BITS == 64 + tcg_out_mov(s, sp_args++, addr_reg2); +# endif + tcg_out_movi(s, TCG_TYPE_I32, sp_args++, mem_index); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T9, (tcg_target_long)qemu_ld_helpers[s_bits]); + tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, TCG_REG_T9, 0); + tcg_out_nop(s); + + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_ANDI, data_reg1, TCG_REG_V0, 0xff); + break; + case 0 | 4: + tcg_out_opc_sa(s, OPC_SLL, TCG_REG_V0, TCG_REG_V0, 24); + tcg_out_opc_sa(s, OPC_SRA, data_reg1, TCG_REG_V0, 24); + break; + case 1: + tcg_out_opc_imm(s, OPC_ANDI, data_reg1, TCG_REG_V0, 0xffff); + break; + case 1 | 4: + tcg_out_opc_sa(s, OPC_SLL, TCG_REG_V0, TCG_REG_V0, 16); + tcg_out_opc_sa(s, OPC_SRA, data_reg1, TCG_REG_V0, 16); + break; + case 2: + tcg_out_mov(s, data_reg1, TCG_REG_V0); + break; + case 3: + tcg_out_mov(s, data_reg2, TCG_REG_V1); + tcg_out_mov(s, data_reg1, TCG_REG_V0); + break; + default: + tcg_abort(); + } + + label2_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_ZERO, TCG_REG_ZERO, 0); + tcg_out_nop(s); + + /* label1: fast path */ + reloc_pc16(label1_ptr, (tcg_target_long) s->code_ptr); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_V0, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addend) + addr_meml); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_V0, TCG_REG_V0, addr_regl); + + addr_reg1 = TCG_REG_V0; +#endif + + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_LBU, data_reg1, addr_reg1, 0); + break; + case 0 | 4: + tcg_out_opc_imm(s, OPC_LB, data_reg1, addr_reg1, 0); + break; + case 1: + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LHU, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap16(s, data_reg1, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LHU, data_reg1, addr_reg1, 0); + } + break; + case 1 | 4: + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LHU, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap16s(s, data_reg1, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LH, data_reg1, addr_reg1, 0); + } + break; + case 2: + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LW, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap32(s, data_reg1, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LW, data_reg1, addr_reg1, 0); + } + break; + case 3: +#if !defined(CONFIG_SOFTMMU) + tcg_out_mov(s, TCG_REG_V0, addr_reg1); + addr_reg1 = TCG_REG_V0; +#endif + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LW, TCG_REG_T0, addr_reg1, 4); + tcg_out_bswap32(s, data_reg1, TCG_REG_T0); + tcg_out_opc_imm(s, OPC_LW, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap32(s, data_reg2, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LW, data_reg1, addr_reg1, 0); + tcg_out_opc_imm(s, OPC_LW, data_reg2, addr_reg1, 4); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + reloc_pc16(label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_regl, addr_reg1, addr_meml; + int data_regl, data_regh, data_reg1, data_reg2; + int mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; + int sp_args; +#endif +#if TARGET_LONG_BITS == 64 +# if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +# endif + int addr_regh, addr_reg2, addr_memh; +#endif + + data_regl = *args++; + if (opc == 3) { + data_regh = *args++; +#if defined(TCG_TARGET_WORDS_BIGENDIAN) + data_reg1 = data_regh; + data_reg2 = data_regl; +#else + data_reg1 = data_regl; + data_reg2 = data_regh; +#endif + } else { + data_reg1 = data_regl; + data_reg2 = 0; + data_regh = 0; + } + addr_regl = *args++; +#if TARGET_LONG_BITS == 64 + addr_regh = *args++; +# if defined(TCG_TARGET_WORDS_BIGENDIAN) + addr_reg1 = addr_regh; + addr_reg2 = addr_regl; + addr_memh = 0; + addr_meml = 4; +# else + addr_reg1 = addr_regl; + addr_reg2 = addr_regh; + addr_memh = 4; + addr_meml = 0; +# endif +#else + addr_reg1 = addr_regl; + addr_meml = 0; +#endif + mem_index = *args; + s_bits = opc; + +#if defined(CONFIG_SOFTMMU) + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_A0, addr_regl, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_A0, TCG_REG_A0, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_A0, TCG_REG_A0, TCG_AREG0); + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_write) + addr_meml); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T0, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + tcg_out_opc_reg(s, OPC_AND, TCG_REG_T0, TCG_REG_T0, addr_regl); + +# if TARGET_LONG_BITS == 64 + label3_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_write) + addr_memh); + + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, addr_regh, TCG_REG_AT, 0); + tcg_out_nop(s); + + reloc_pc16(label3_ptr, (tcg_target_long) s->code_ptr); +# else + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); +# endif + + /* slow path */ + sp_args = TCG_REG_A0; + tcg_out_mov(s, sp_args++, addr_reg1); +# if TARGET_LONG_BITS == 64 + tcg_out_mov(s, sp_args++, addr_reg2); +# endif + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_ANDI, sp_args++, data_reg1, 0xff); + break; + case 1: + tcg_out_opc_imm(s, OPC_ANDI, sp_args++, data_reg1, 0xffff); + break; + case 2: + tcg_out_mov(s, sp_args++, data_reg1); + break; + case 3: + sp_args = (sp_args + 1) & ~1; + tcg_out_mov(s, sp_args++, data_reg1); + tcg_out_mov(s, sp_args++, data_reg2); + break; + default: + tcg_abort(); + } + if (sp_args > TCG_REG_A3) { + /* Push mem_index on the stack */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_AT, mem_index); + tcg_out_st(s, TCG_TYPE_I32, TCG_REG_AT, TCG_REG_SP, 16); + } else { + tcg_out_movi(s, TCG_TYPE_I32, sp_args, mem_index); + } + + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T9, (tcg_target_long)qemu_st_helpers[s_bits]); + tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, TCG_REG_T9, 0); + tcg_out_nop(s); + + label2_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_ZERO, TCG_REG_ZERO, 0); + tcg_out_nop(s); + + /* label1: fast path */ + reloc_pc16(label1_ptr, (tcg_target_long) s->code_ptr); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_A0, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addend) + addr_meml); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_A0, TCG_REG_A0, addr_regl); + + addr_reg1 = TCG_REG_A0; +#endif + + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_SB, data_reg1, addr_reg1, 0); + break; + case 1: + if (TCG_NEED_BSWAP) { + tcg_out_bswap16(s, TCG_REG_T0, data_reg1); + tcg_out_opc_imm(s, OPC_SH, TCG_REG_T0, addr_reg1, 0); + } else { + tcg_out_opc_imm(s, OPC_SH, data_reg1, addr_reg1, 0); + } + break; + case 2: + if (TCG_NEED_BSWAP) { + tcg_out_bswap32(s, TCG_REG_T0, data_reg1); + tcg_out_opc_imm(s, OPC_SW, TCG_REG_T0, addr_reg1, 0); + } else { + tcg_out_opc_imm(s, OPC_SW, data_reg1, addr_reg1, 0); + } + break; + case 3: + if (TCG_NEED_BSWAP) { + tcg_out_bswap32(s, TCG_REG_T0, data_reg2); + tcg_out_opc_imm(s, OPC_SW, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap32(s, TCG_REG_T0, data_reg1); + tcg_out_opc_imm(s, OPC_SW, TCG_REG_T0, addr_reg1, 4); + } else { + tcg_out_opc_imm(s, OPC_SW, data_reg1, addr_reg1, 0); + tcg_out_opc_imm(s, OPC_SW, data_reg2, addr_reg1, 4); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + reloc_pc16(label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + switch(opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_V0, args[0]); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_AT, (tcg_target_long)tb_ret_addr); + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_AT, 0); + tcg_out_nop(s); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_abort(); + } else { + /* indirect jump method */ + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_AT, (tcg_target_long)(s->tb_next + args[0])); + tcg_out_ld(s, TCG_TYPE_PTR, TCG_REG_AT, TCG_REG_AT, 0); + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_AT, 0); + } + tcg_out_nop(s); + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, args[0], 0); + tcg_out_nop(s); + break; + case INDEX_op_jmp: + tcg_out_opc_reg(s, OPC_JR, 0, args[0], 0); + tcg_out_nop(s); + break; + case INDEX_op_br: + tcg_out_brcond(s, TCG_COND_EQ, TCG_REG_ZERO, TCG_REG_ZERO, args[0]); + break; + + case INDEX_op_mov_i32: + tcg_out_mov(s, args[0], args[1]); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]); + break; + + case INDEX_op_ld8u_i32: + tcg_out_ldst(s, OPC_LBU, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + tcg_out_ldst(s, OPC_LB, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + tcg_out_ldst(s, OPC_LHU, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + tcg_out_ldst(s, OPC_LH, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + tcg_out_ldst(s, OPC_LW, args[0], args[1], args[2]); + break; + case INDEX_op_st8_i32: + tcg_out_ldst(s, OPC_SB, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + tcg_out_ldst(s, OPC_SH, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + tcg_out_ldst(s, OPC_SW, args[0], args[1], args[2]); + break; + + case INDEX_op_add_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_ADDU, args[0], args[1], args[2]); + } + break; + case INDEX_op_add2_i32: + if (const_args[4]) { + tcg_out_opc_imm(s, OPC_ADDIU, TCG_REG_AT, args[2], args[4]); + } else { + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_AT, args[2], args[4]); + } + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_T0, TCG_REG_AT, args[2]); + if (const_args[5]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[1], args[3], args[5]); + } else { + tcg_out_opc_reg(s, OPC_ADDU, args[1], args[3], args[5]); + } + tcg_out_opc_reg(s, OPC_ADDU, args[1], args[1], TCG_REG_T0); + tcg_out_mov(s, args[0], TCG_REG_AT); + break; + case INDEX_op_sub_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[0], args[1], -args[2]); + } else { + tcg_out_opc_reg(s, OPC_SUBU, args[0], args[1], args[2]); + } + break; + case INDEX_op_sub2_i32: + if (const_args[4]) { + tcg_out_opc_imm(s, OPC_ADDIU, TCG_REG_AT, args[2], -args[4]); + } else { + tcg_out_opc_reg(s, OPC_SUBU, TCG_REG_AT, args[2], args[4]); + } + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_T0, args[2], TCG_REG_AT); + if (const_args[5]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[1], args[3], -args[5]); + } else { + tcg_out_opc_reg(s, OPC_SUBU, args[1], args[3], args[5]); + } + tcg_out_opc_reg(s, OPC_SUBU, args[1], args[1], TCG_REG_T0); + tcg_out_mov(s, args[0], TCG_REG_AT); + break; + case INDEX_op_mul_i32: + tcg_out_opc_reg(s, OPC_MULT, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + break; + case INDEX_op_mulu2_i32: + tcg_out_opc_reg(s, OPC_MULTU, 0, args[2], args[3]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + tcg_out_opc_reg(s, OPC_MFHI, args[1], 0, 0); + break; + case INDEX_op_div_i32: + tcg_out_opc_reg(s, OPC_DIV, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + break; + case INDEX_op_divu_i32: + tcg_out_opc_reg(s, OPC_DIVU, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + break; + case INDEX_op_rem_i32: + tcg_out_opc_reg(s, OPC_DIV, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFHI, args[0], 0, 0); + break; + case INDEX_op_remu_i32: + tcg_out_opc_reg(s, OPC_DIVU, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFHI, args[0], 0, 0); + break; + + case INDEX_op_and_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ANDI, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_AND, args[0], args[1], args[2]); + } + break; + case INDEX_op_or_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ORI, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_OR, args[0], args[1], args[2]); + } + break; + case INDEX_op_not_i32: + tcg_out_opc_reg(s, OPC_NOR, args[0], args[1], args[1]); + break; + case INDEX_op_xor_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_XORI, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_XOR, args[0], args[1], args[2]); + } + break; + + case INDEX_op_sar_i32: + if (const_args[2]) { + tcg_out_opc_sa(s, OPC_SRA, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_SRAV, args[0], args[2], args[1]); + } + break; + case INDEX_op_shl_i32: + if (const_args[2]) { + tcg_out_opc_sa(s, OPC_SLL, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_SLLV, args[0], args[2], args[1]); + } + break; + case INDEX_op_shr_i32: + if (const_args[2]) { + tcg_out_opc_sa(s, OPC_SRL, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_SRLV, args[0], args[2], args[1]); + } + break; + + case INDEX_op_brcond_i32: + tcg_out_brcond(s, args[2], args[0], args[1], args[3]); + break; + case INDEX_op_brcond2_i32: + tcg_out_brcond2(s, args[4], args[0], args[1], args[2], args[3], args[5]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + default: + tcg_abort(); + } +} + +static const TCGTargetOpDef mips_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "C" } }, + { INDEX_op_jmp, { "r" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "rZ", "r" } }, + { INDEX_op_st16_i32, { "rZ", "r" } }, + { INDEX_op_st_i32, { "rZ", "r" } }, + + { INDEX_op_add_i32, { "r", "rZ", "rJZ" } }, + { INDEX_op_mul_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_mulu2_i32, { "r", "r", "rZ", "rZ" } }, + { INDEX_op_div_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_divu_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_rem_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_remu_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_sub_i32, { "r", "rZ", "rJZ" } }, + + { INDEX_op_and_i32, { "r", "rZ", "rIZ" } }, + { INDEX_op_not_i32, { "r", "rZ" } }, + { INDEX_op_or_i32, { "r", "rZ", "rIZ" } }, + { INDEX_op_xor_i32, { "r", "rZ", "rIZ" } }, + + { INDEX_op_shl_i32, { "r", "rZ", "riZ" } }, + { INDEX_op_shr_i32, { "r", "rZ", "riZ" } }, + { INDEX_op_sar_i32, { "r", "rZ", "riZ" } }, + + { INDEX_op_brcond_i32, { "rZ", "rZ" } }, + + { INDEX_op_add2_i32, { "r", "r", "rZ", "rZ", "rJZ", "rJZ" } }, + { INDEX_op_sub2_i32, { "r", "r", "rZ", "rZ", "rJZ", "rJZ" } }, + { INDEX_op_brcond2_i32, { "rZ", "rZ", "rZ", "rZ" } }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "L", "lZ" } }, + { INDEX_op_qemu_ld8s, { "L", "lZ" } }, + { INDEX_op_qemu_ld16u, { "L", "lZ" } }, + { INDEX_op_qemu_ld16s, { "L", "lZ" } }, + { INDEX_op_qemu_ld32u, { "L", "lZ" } }, + { INDEX_op_qemu_ld64, { "L", "L", "lZ" } }, + + { INDEX_op_qemu_st8, { "SZ", "SZ" } }, + { INDEX_op_qemu_st16, { "SZ", "SZ" } }, + { INDEX_op_qemu_st32, { "SZ", "SZ" } }, + { INDEX_op_qemu_st64, { "SZ", "SZ", "SZ" } }, +#else + { INDEX_op_qemu_ld8u, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld8s, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld16u, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld16s, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld32u, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld64, { "L", "L", "lZ", "lZ" } }, + + { INDEX_op_qemu_st8, { "SZ", "SZ", "SZ" } }, + { INDEX_op_qemu_st16, { "SZ", "SZ", "SZ" } }, + { INDEX_op_qemu_st32, { "SZ", "SZ", "SZ" } }, + { INDEX_op_qemu_st64, { "SZ", "SZ", "SZ", "SZ" } }, +#endif + { -1 }, +}; + +static int tcg_target_callee_save_regs[] = { + TCG_REG_S0, + TCG_REG_S1, + TCG_REG_S2, + TCG_REG_S3, + TCG_REG_S4, + TCG_REG_S5, + TCG_REG_S6, + TCG_REG_S7, + TCG_REG_GP, + /* TCG_REG_FP, */ /* currently used for the global env, so np + need to save */ + TCG_REG_RA, /* should be last for ABI compliance */ +}; + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + int i, frame_size; + + /* reserve some stack space */ + frame_size = ARRAY_SIZE(tcg_target_callee_save_regs) * 4 + + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + + /* TB prologue */ + tcg_out_addi(s, TCG_REG_SP, -frame_size); + for(i = 0 ; i < ARRAY_SIZE(tcg_target_callee_save_regs) ; i++) { + tcg_out_st(s, TCG_TYPE_I32, tcg_target_callee_save_regs[i], + TCG_REG_SP, TCG_STATIC_CALL_ARGS_SIZE + i * 4); + } + + /* Call generated code */ + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_A0, 0); + tcg_out_nop(s); + tb_ret_addr = s->code_ptr; + + /* TB epilogue */ + for(i = 0 ; i < ARRAY_SIZE(tcg_target_callee_save_regs) ; i++) { + tcg_out_ld(s, TCG_TYPE_I32, tcg_target_callee_save_regs[i], + TCG_REG_SP, TCG_STATIC_CALL_ARGS_SIZE + i * 4); + } + + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_RA, 0); + tcg_out_addi(s, TCG_REG_SP, frame_size); +} + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set(tcg_target_available_regs[TCG_TYPE_I32], 0xffffffff); + tcg_regset_set(tcg_target_call_clobber_regs, + (1 << TCG_REG_V0) | + (1 << TCG_REG_V1) | + (1 << TCG_REG_A0) | + (1 << TCG_REG_A1) | + (1 << TCG_REG_A2) | + (1 << TCG_REG_A3) | + (1 << TCG_REG_T1) | + (1 << TCG_REG_T2) | + (1 << TCG_REG_T3) | + (1 << TCG_REG_T4) | + (1 << TCG_REG_T5) | + (1 << TCG_REG_T6) | + (1 << TCG_REG_T7) | + (1 << TCG_REG_T8) | + (1 << TCG_REG_T9)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_ZERO); /* zero register */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_K0); /* kernel use only */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_K1); /* kernel use only */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_AT); /* internal use */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_T0); /* internal use */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_RA); /* return address */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_SP); /* stack pointer */ + + tcg_add_target_add_op_defs(mips_op_defs); +} diff --git a/qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..46760a5 --- /dev/null +++ b/qemu/qemu-git/tcg/mips/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,104 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008-2009 Arnaud Patard + * Copyright (c) 2009 Aurelien Jarno + * Based on i386/tcg-target.c - Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_MIPS 1 + +#define TCG_TARGET_REG_BITS 32 +#ifdef __MIPSEB__ +# define TCG_TARGET_WORDS_BIGENDIAN +#endif + +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_ZERO = 0, + TCG_REG_AT, + TCG_REG_V0, + TCG_REG_V1, + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3, + TCG_REG_T0, + TCG_REG_T1, + TCG_REG_T2, + TCG_REG_T3, + TCG_REG_T4, + TCG_REG_T5, + TCG_REG_T6, + TCG_REG_T7, + TCG_REG_S0, + TCG_REG_S1, + TCG_REG_S2, + TCG_REG_S3, + TCG_REG_S4, + TCG_REG_S5, + TCG_REG_S6, + TCG_REG_S7, + TCG_REG_T8, + TCG_REG_T9, + TCG_REG_K0, + TCG_REG_K1, + TCG_REG_GP, + TCG_REG_SP, + TCG_REG_FP, + TCG_REG_RA, +}; + +#define TCG_CT_CONST_ZERO 0x100 +#define TCG_CT_CONST_U16 0x200 +#define TCG_CT_CONST_S16 0x400 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_SP +#define TCG_TARGET_STACK_ALIGN 8 +#define TCG_TARGET_CALL_STACK_OFFSET 16 +#define TCG_TARGET_CALL_ALIGN_ARGS 1 + +/* optional instructions */ +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_not_i32 +#undef TCG_TARGET_HAS_ext8s_i32 +#undef TCG_TARGET_HAS_ext16s_i32 +#undef TCG_TARGET_HAS_bswap32_i32 +#undef TCG_TARGET_HAS_bswap16_i32 +#undef TCG_TARGET_HAS_rot_i32 + +/* optional instructions automatically implemented */ +#undef TCG_TARGET_HAS_neg_i32 /* sub rd, zero, rt */ +#undef TCG_TARGET_HAS_ext8u_i32 /* andi rt, rs, 0xff */ +#undef TCG_TARGET_HAS_ext16u_i32 /* andi rt, rs, 0xffff */ + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_FP +#define TCG_AREG1 TCG_REG_S0 +#define TCG_AREG2 TCG_REG_S1 + +#include + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ + cacheflush ((void *)start, stop-start, ICACHE); +} diff --git a/qemu/qemu-git/tcg/mips/tcg-target.c b/qemu/qemu-git/tcg/mips/tcg-target.c new file mode 100644 index 0000000..8fcb5c9 --- /dev/null +++ b/qemu/qemu-git/tcg/mips/tcg-target.c @@ -0,0 +1,1342 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008-2009 Arnaud Patard + * Copyright (c) 2009 Aurelien Jarno + * Based on i386/tcg-target.c - Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#if defined(TCG_TARGET_WORDS_BIGENDIAN) == defined(TARGET_WORDS_BIGENDIAN) +# define TCG_NEED_BSWAP 0 +#else +# define TCG_NEED_BSWAP 1 +#endif + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "zero", + "at", + "v0", + "v1", + "a0", + "a1", + "a2", + "a3", + "t0", + "t1", + "t2", + "t3", + "t4", + "t5", + "t6", + "t7", + "s0", + "s1", + "s2", + "s3", + "s4", + "s5", + "s6", + "s7", + "t8", + "t9", + "k0", + "k1", + "gp", + "sp", + "fp", + "ra", +}; +#endif + +/* check if we really need so many registers :P */ +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_S0, + TCG_REG_S1, + TCG_REG_S2, + TCG_REG_S3, + TCG_REG_S4, + TCG_REG_S5, + TCG_REG_S6, + TCG_REG_S7, + TCG_REG_T1, + TCG_REG_T2, + TCG_REG_T3, + TCG_REG_T4, + TCG_REG_T5, + TCG_REG_T6, + TCG_REG_T7, + TCG_REG_T8, + TCG_REG_T9, + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3, + TCG_REG_V0, + TCG_REG_V1 +}; + +static const int tcg_target_call_iarg_regs[4] = { + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3 +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_V0, + TCG_REG_V1 +}; + +static uint8_t *tb_ret_addr; + +static inline uint32_t reloc_lo16_val (void *pc, tcg_target_long target) +{ + return target & 0xffff; +} + +static inline void reloc_lo16 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff) + | reloc_lo16_val(pc, target); +} + +static inline uint32_t reloc_hi16_val (void *pc, tcg_target_long target) +{ + return (target >> 16) & 0xffff; +} + +static inline void reloc_hi16 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff) + | reloc_hi16_val(pc, target); +} + +static inline uint32_t reloc_pc16_val (void *pc, tcg_target_long target) +{ + int32_t disp; + + disp = target - (tcg_target_long) pc - 4; + if (disp != (disp << 14) >> 14) { + tcg_abort (); + } + + return (disp >> 2) & 0xffff; +} + +static inline void reloc_pc16 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff) + | reloc_pc16_val(pc, target); +} + +static inline uint32_t reloc_26_val (void *pc, tcg_target_long target) +{ + if ((((tcg_target_long)pc + 4) & 0xf0000000) != (target & 0xf0000000)) { + tcg_abort (); + } + + return (target >> 2) & 0x3ffffff; +} + +static inline void reloc_pc26 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3ffffff) + | reloc_26_val(pc, target); +} + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch(type) { + case R_MIPS_LO16: + reloc_lo16(code_ptr, value); + break; + case R_MIPS_HI16: + reloc_hi16(code_ptr, value); + break; + case R_MIPS_PC16: + reloc_pc16(code_ptr, value); + break; + case R_MIPS_26: + reloc_pc26(code_ptr, value); + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 4; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch(ct_str[0]) { + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); + break; + case 'C': + ct->ct |= TCG_CT_REG; + tcg_regset_clear(ct->u.regs); + tcg_regset_set_reg(ct->u.regs, TCG_REG_T9); + break; + case 'L': /* qemu_ld output arg constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_V0); + break; + case 'l': /* qemu_ld input arg constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); +#if defined(CONFIG_SOFTMMU) + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0); +#endif + break; + case 'S': /* qemu_st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set(ct->u.regs, 0xffffffff); +#if defined(CONFIG_SOFTMMU) + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0); +# if TARGET_LONG_BITS == 64 + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A1); +# endif + tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2); +#endif + break; + case 'I': + ct->ct |= TCG_CT_CONST_U16; + break; + case 'J': + ct->ct |= TCG_CT_CONST_S16; + break; + case 'Z': + /* We are cheating a bit here, using the fact that the register + ZERO is also the register number 0. Hence there is no need + to check for const_args in each instruction. */ + ct->ct |= TCG_CT_CONST_ZERO; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_ZERO) && val == 0) + return 1; + else if ((ct & TCG_CT_CONST_U16) && val == (uint16_t)val) + return 1; + else if ((ct & TCG_CT_CONST_S16) && val == (int16_t)val) + return 1; + else + return 0; +} + +/* instruction opcodes */ +enum { + OPC_SPECIAL = 0x00 << 26, + OPC_BEQ = 0x04 << 26, + OPC_BNE = 0x05 << 26, + OPC_ADDIU = 0x09 << 26, + OPC_ANDI = 0x0C << 26, + OPC_ORI = 0x0D << 26, + OPC_XORI = 0x0E << 26, + OPC_LUI = 0x0F << 26, + OPC_LB = 0x20 << 26, + OPC_LH = 0x21 << 26, + OPC_LW = 0x23 << 26, + OPC_LBU = 0x24 << 26, + OPC_LHU = 0x25 << 26, + OPC_LWU = 0x27 << 26, + OPC_SB = 0x28 << 26, + OPC_SH = 0x29 << 26, + OPC_SW = 0x2B << 26, + OPC_SLL = OPC_SPECIAL | 0x00, + OPC_SRL = OPC_SPECIAL | 0x02, + OPC_SRA = OPC_SPECIAL | 0x03, + OPC_SLLV = OPC_SPECIAL | 0x04, + OPC_SRLV = OPC_SPECIAL | 0x06, + OPC_SRAV = OPC_SPECIAL | 0x07, + OPC_JR = OPC_SPECIAL | 0x08, + OPC_JALR = OPC_SPECIAL | 0x09, + OPC_MFHI = OPC_SPECIAL | 0x10, + OPC_MFLO = OPC_SPECIAL | 0x12, + OPC_MULT = OPC_SPECIAL | 0x18, + OPC_MULTU = OPC_SPECIAL | 0x19, + OPC_DIV = OPC_SPECIAL | 0x1A, + OPC_DIVU = OPC_SPECIAL | 0x1B, + OPC_ADDU = OPC_SPECIAL | 0x21, + OPC_SUBU = OPC_SPECIAL | 0x23, + OPC_AND = OPC_SPECIAL | 0x24, + OPC_OR = OPC_SPECIAL | 0x25, + OPC_XOR = OPC_SPECIAL | 0x26, + OPC_NOR = OPC_SPECIAL | 0x27, + OPC_SLT = OPC_SPECIAL | 0x2A, + OPC_SLTU = OPC_SPECIAL | 0x2B, +}; + +/* + * Type reg + */ +static inline void tcg_out_opc_reg(TCGContext *s, int opc, int rd, int rs, int rt) +{ + int32_t inst; + + inst = opc; + inst |= (rs & 0x1F) << 21; + inst |= (rt & 0x1F) << 16; + inst |= (rd & 0x1F) << 11; + tcg_out32(s, inst); +} + +/* + * Type immediate + */ +static inline void tcg_out_opc_imm(TCGContext *s, int opc, int rt, int rs, int imm) +{ + int32_t inst; + + inst = opc; + inst |= (rs & 0x1F) << 21; + inst |= (rt & 0x1F) << 16; + inst |= (imm & 0xffff); + tcg_out32(s, inst); +} + +/* + * Type sa + */ +static inline void tcg_out_opc_sa(TCGContext *s, int opc, int rd, int rt, int sa) +{ + int32_t inst; + + inst = opc; + inst |= (rt & 0x1F) << 16; + inst |= (rd & 0x1F) << 11; + inst |= (sa & 0x1F) << 6; + tcg_out32(s, inst); + +} + +static inline void tcg_out_nop(TCGContext *s) +{ + tcg_out32(s, 0); +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_opc_reg(s, OPC_ADDU, ret, arg, TCG_REG_ZERO); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int reg, int32_t arg) +{ + if (arg == (int16_t)arg) { + tcg_out_opc_imm(s, OPC_ADDIU, reg, TCG_REG_ZERO, arg); + } else if (arg == (uint16_t)arg) { + tcg_out_opc_imm(s, OPC_ORI, reg, TCG_REG_ZERO, arg); + } else { + tcg_out_opc_imm(s, OPC_LUI, reg, 0, arg >> 16); + tcg_out_opc_imm(s, OPC_ORI, reg, reg, arg & 0xffff); + } +} + +static inline void tcg_out_bswap16(TCGContext *s, int ret, int arg) +{ + /* ret and arg can't be register at */ + if (ret == TCG_REG_AT || arg == TCG_REG_AT) { + tcg_abort(); + } + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, TCG_REG_AT, 0x00ff); + + tcg_out_opc_sa(s, OPC_SLL, ret, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, ret, ret, 0xff00); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); +} + +static inline void tcg_out_bswap16s(TCGContext *s, int ret, int arg) +{ + /* ret and arg can't be register at */ + if (ret == TCG_REG_AT || arg == TCG_REG_AT) { + tcg_abort(); + } + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, TCG_REG_AT, 0xff); + + tcg_out_opc_sa(s, OPC_SLL, ret, arg, 24); + tcg_out_opc_sa(s, OPC_SRA, ret, ret, 16); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); +} + +static inline void tcg_out_bswap32(TCGContext *s, int ret, int arg) +{ + /* ret and arg must be different and can't be register at */ + if (ret == arg || ret == TCG_REG_AT || arg == TCG_REG_AT) { + tcg_abort(); + } + + tcg_out_opc_sa(s, OPC_SLL, ret, arg, 24); + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 24); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); + + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, arg, 0xff00); + tcg_out_opc_sa(s, OPC_SLL, TCG_REG_AT, TCG_REG_AT, 8); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); + + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_AT, arg, 8); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_AT, TCG_REG_AT, 0xff00); + tcg_out_opc_reg(s, OPC_OR, ret, ret, TCG_REG_AT); +} + +static inline void tcg_out_ldst(TCGContext *s, int opc, int arg, + int arg1, tcg_target_long arg2) +{ + if (arg2 == (int16_t) arg2) { + tcg_out_opc_imm(s, opc, arg, arg1, arg2); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_AT, arg2); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_AT, TCG_REG_AT, arg1); + tcg_out_opc_imm(s, opc, arg, TCG_REG_AT, 0); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_ldst(s, OPC_LW, arg, arg1, arg2); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_out_ldst(s, OPC_SW, arg, arg1, arg2); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val == (int16_t)val) { + tcg_out_opc_imm(s, OPC_ADDIU, reg, reg, val); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_AT, val); + tcg_out_opc_reg(s, OPC_ADDU, reg, reg, TCG_REG_AT); + } +} + +static void tcg_out_brcond(TCGContext *s, int cond, int arg1, + int arg2, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + switch (cond) { + case TCG_COND_EQ: + tcg_out_opc_imm(s, OPC_BEQ, arg1, arg2, 0); + break; + case TCG_COND_NE: + tcg_out_opc_imm(s, OPC_BNE, arg1, arg2, 0); + break; + case TCG_COND_LT: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_LTU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GE: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GEU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg1, arg2); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_LE: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_LEU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GT: + tcg_out_opc_reg(s, OPC_SLT, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + case TCG_COND_GTU: + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_AT, arg2, arg1); + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_AT, TCG_REG_ZERO, 0); + break; + default: + tcg_abort(); + break; + } + if (l->has_value) { + reloc_pc16(s->code_ptr - 4, l->u.value); + } else { + tcg_out_reloc(s, s->code_ptr - 4, R_MIPS_PC16, label_index, 0); + } + tcg_out_nop(s); +} + +/* XXX: we implement it at the target level to avoid having to + handle cross basic blocks temporaries */ +static void tcg_out_brcond2(TCGContext *s, int cond, int arg1, + int arg2, int arg3, int arg4, int label_index) +{ + void *label_ptr; + + switch(cond) { + case TCG_COND_NE: + tcg_out_brcond(s, TCG_COND_NE, arg2, arg4, label_index); + tcg_out_brcond(s, TCG_COND_NE, arg1, arg3, label_index); + return; + case TCG_COND_EQ: + break; + case TCG_COND_LT: + case TCG_COND_LE: + tcg_out_brcond(s, TCG_COND_LT, arg2, arg4, label_index); + break; + case TCG_COND_GT: + case TCG_COND_GE: + tcg_out_brcond(s, TCG_COND_GT, arg2, arg4, label_index); + break; + case TCG_COND_LTU: + case TCG_COND_LEU: + tcg_out_brcond(s, TCG_COND_LTU, arg2, arg4, label_index); + break; + case TCG_COND_GTU: + case TCG_COND_GEU: + tcg_out_brcond(s, TCG_COND_GTU, arg2, arg4, label_index); + break; + default: + tcg_abort(); + } + + label_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BNE, arg2, arg4, 0); + tcg_out_nop(s); + + switch(cond) { + case TCG_COND_EQ: + tcg_out_brcond(s, TCG_COND_EQ, arg1, arg3, label_index); + break; + case TCG_COND_LT: + case TCG_COND_LTU: + tcg_out_brcond(s, TCG_COND_LTU, arg1, arg3, label_index); + break; + case TCG_COND_LE: + case TCG_COND_LEU: + tcg_out_brcond(s, TCG_COND_LEU, arg1, arg3, label_index); + break; + case TCG_COND_GT: + case TCG_COND_GTU: + tcg_out_brcond(s, TCG_COND_GTU, arg1, arg3, label_index); + break; + case TCG_COND_GE: + case TCG_COND_GEU: + tcg_out_brcond(s, TCG_COND_GEU, arg1, arg3, label_index); + break; + default: + tcg_abort(); + } + + reloc_pc16(label_ptr, (tcg_target_long) s->code_ptr); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_regl, addr_reg1, addr_meml; + int data_regl, data_regh, data_reg1, data_reg2; + int mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + void *label1_ptr, *label2_ptr; + int sp_args; +#endif +#if TARGET_LONG_BITS == 64 +# if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +# endif + int addr_regh, addr_reg2, addr_memh; +#endif + data_regl = *args++; + if (opc == 3) + data_regh = *args++; + else + data_regh = 0; + addr_regl = *args++; +#if TARGET_LONG_BITS == 64 + addr_regh = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + + if (opc == 3) { +#if defined(TCG_TARGET_WORDS_BIGENDIAN) + data_reg1 = data_regh; + data_reg2 = data_regl; +#else + data_reg1 = data_regl; + data_reg2 = data_regh; +#endif + } else { + data_reg1 = data_regl; + data_reg2 = 0; + } +#if TARGET_LONG_BITS == 64 +# if defined(TCG_TARGET_WORDS_BIGENDIAN) + addr_reg1 = addr_regh; + addr_reg2 = addr_regl; + addr_memh = 0; + addr_meml = 4; +# else + addr_reg1 = addr_regl; + addr_reg2 = addr_regh; + addr_memh = 4; + addr_meml = 0; +# endif +#else + addr_reg1 = addr_regl; + addr_meml = 0; +#endif + +#if defined(CONFIG_SOFTMMU) + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_A0, addr_regl, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_A0, TCG_REG_A0, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_A0, TCG_REG_A0, TCG_AREG0); + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_read) + addr_meml); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T0, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + tcg_out_opc_reg(s, OPC_AND, TCG_REG_T0, TCG_REG_T0, addr_regl); + +# if TARGET_LONG_BITS == 64 + label3_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_read) + addr_memh); + + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, addr_regh, TCG_REG_AT, 0); + tcg_out_nop(s); + + reloc_pc16(label3_ptr, (tcg_target_long) s->code_ptr); +# else + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); +# endif + + /* slow path */ + sp_args = TCG_REG_A0; + tcg_out_mov(s, sp_args++, addr_reg1); +# if TARGET_LONG_BITS == 64 + tcg_out_mov(s, sp_args++, addr_reg2); +# endif + tcg_out_movi(s, TCG_TYPE_I32, sp_args++, mem_index); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T9, (tcg_target_long)qemu_ld_helpers[s_bits]); + tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, TCG_REG_T9, 0); + tcg_out_nop(s); + + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_ANDI, data_reg1, TCG_REG_V0, 0xff); + break; + case 0 | 4: + tcg_out_opc_sa(s, OPC_SLL, TCG_REG_V0, TCG_REG_V0, 24); + tcg_out_opc_sa(s, OPC_SRA, data_reg1, TCG_REG_V0, 24); + break; + case 1: + tcg_out_opc_imm(s, OPC_ANDI, data_reg1, TCG_REG_V0, 0xffff); + break; + case 1 | 4: + tcg_out_opc_sa(s, OPC_SLL, TCG_REG_V0, TCG_REG_V0, 16); + tcg_out_opc_sa(s, OPC_SRA, data_reg1, TCG_REG_V0, 16); + break; + case 2: + tcg_out_mov(s, data_reg1, TCG_REG_V0); + break; + case 3: + tcg_out_mov(s, data_reg2, TCG_REG_V1); + tcg_out_mov(s, data_reg1, TCG_REG_V0); + break; + default: + tcg_abort(); + } + + label2_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_ZERO, TCG_REG_ZERO, 0); + tcg_out_nop(s); + + /* label1: fast path */ + reloc_pc16(label1_ptr, (tcg_target_long) s->code_ptr); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_V0, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addend) + addr_meml); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_V0, TCG_REG_V0, addr_regl); + + addr_reg1 = TCG_REG_V0; +#endif + + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_LBU, data_reg1, addr_reg1, 0); + break; + case 0 | 4: + tcg_out_opc_imm(s, OPC_LB, data_reg1, addr_reg1, 0); + break; + case 1: + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LHU, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap16(s, data_reg1, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LHU, data_reg1, addr_reg1, 0); + } + break; + case 1 | 4: + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LHU, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap16s(s, data_reg1, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LH, data_reg1, addr_reg1, 0); + } + break; + case 2: + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LW, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap32(s, data_reg1, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LW, data_reg1, addr_reg1, 0); + } + break; + case 3: +#if !defined(CONFIG_SOFTMMU) + tcg_out_mov(s, TCG_REG_V0, addr_reg1); + addr_reg1 = TCG_REG_V0; +#endif + if (TCG_NEED_BSWAP) { + tcg_out_opc_imm(s, OPC_LW, TCG_REG_T0, addr_reg1, 4); + tcg_out_bswap32(s, data_reg1, TCG_REG_T0); + tcg_out_opc_imm(s, OPC_LW, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap32(s, data_reg2, TCG_REG_T0); + } else { + tcg_out_opc_imm(s, OPC_LW, data_reg1, addr_reg1, 0); + tcg_out_opc_imm(s, OPC_LW, data_reg2, addr_reg1, 4); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + reloc_pc16(label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_regl, addr_reg1, addr_meml; + int data_regl, data_regh, data_reg1, data_reg2; + int mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; + int sp_args; +#endif +#if TARGET_LONG_BITS == 64 +# if defined(CONFIG_SOFTMMU) + uint8_t *label3_ptr; +# endif + int addr_regh, addr_reg2, addr_memh; +#endif + + data_regl = *args++; + if (opc == 3) { + data_regh = *args++; +#if defined(TCG_TARGET_WORDS_BIGENDIAN) + data_reg1 = data_regh; + data_reg2 = data_regl; +#else + data_reg1 = data_regl; + data_reg2 = data_regh; +#endif + } else { + data_reg1 = data_regl; + data_reg2 = 0; + data_regh = 0; + } + addr_regl = *args++; +#if TARGET_LONG_BITS == 64 + addr_regh = *args++; +# if defined(TCG_TARGET_WORDS_BIGENDIAN) + addr_reg1 = addr_regh; + addr_reg2 = addr_regl; + addr_memh = 0; + addr_meml = 4; +# else + addr_reg1 = addr_regl; + addr_reg2 = addr_regh; + addr_memh = 4; + addr_meml = 0; +# endif +#else + addr_reg1 = addr_regl; + addr_meml = 0; +#endif + mem_index = *args; + s_bits = opc; + +#if defined(CONFIG_SOFTMMU) + tcg_out_opc_sa(s, OPC_SRL, TCG_REG_A0, addr_regl, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_A0, TCG_REG_A0, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_A0, TCG_REG_A0, TCG_AREG0); + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_write) + addr_meml); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T0, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + tcg_out_opc_reg(s, OPC_AND, TCG_REG_T0, TCG_REG_T0, addr_regl); + +# if TARGET_LONG_BITS == 64 + label3_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BNE, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_AT, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addr_write) + addr_memh); + + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, addr_regh, TCG_REG_AT, 0); + tcg_out_nop(s); + + reloc_pc16(label3_ptr, (tcg_target_long) s->code_ptr); +# else + label1_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_T0, TCG_REG_AT, 0); + tcg_out_nop(s); +# endif + + /* slow path */ + sp_args = TCG_REG_A0; + tcg_out_mov(s, sp_args++, addr_reg1); +# if TARGET_LONG_BITS == 64 + tcg_out_mov(s, sp_args++, addr_reg2); +# endif + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_ANDI, sp_args++, data_reg1, 0xff); + break; + case 1: + tcg_out_opc_imm(s, OPC_ANDI, sp_args++, data_reg1, 0xffff); + break; + case 2: + tcg_out_mov(s, sp_args++, data_reg1); + break; + case 3: + sp_args = (sp_args + 1) & ~1; + tcg_out_mov(s, sp_args++, data_reg1); + tcg_out_mov(s, sp_args++, data_reg2); + break; + default: + tcg_abort(); + } + if (sp_args > TCG_REG_A3) { + /* Push mem_index on the stack */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_AT, mem_index); + tcg_out_st(s, TCG_TYPE_I32, TCG_REG_AT, TCG_REG_SP, 16); + } else { + tcg_out_movi(s, TCG_TYPE_I32, sp_args, mem_index); + } + + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_T9, (tcg_target_long)qemu_st_helpers[s_bits]); + tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, TCG_REG_T9, 0); + tcg_out_nop(s); + + label2_ptr = s->code_ptr; + tcg_out_opc_imm(s, OPC_BEQ, TCG_REG_ZERO, TCG_REG_ZERO, 0); + tcg_out_nop(s); + + /* label1: fast path */ + reloc_pc16(label1_ptr, (tcg_target_long) s->code_ptr); + + tcg_out_opc_imm(s, OPC_LW, TCG_REG_A0, TCG_REG_A0, + offsetof(CPUState, tlb_table[mem_index][0].addend) + addr_meml); + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_A0, TCG_REG_A0, addr_regl); + + addr_reg1 = TCG_REG_A0; +#endif + + switch(opc) { + case 0: + tcg_out_opc_imm(s, OPC_SB, data_reg1, addr_reg1, 0); + break; + case 1: + if (TCG_NEED_BSWAP) { + tcg_out_bswap16(s, TCG_REG_T0, data_reg1); + tcg_out_opc_imm(s, OPC_SH, TCG_REG_T0, addr_reg1, 0); + } else { + tcg_out_opc_imm(s, OPC_SH, data_reg1, addr_reg1, 0); + } + break; + case 2: + if (TCG_NEED_BSWAP) { + tcg_out_bswap32(s, TCG_REG_T0, data_reg1); + tcg_out_opc_imm(s, OPC_SW, TCG_REG_T0, addr_reg1, 0); + } else { + tcg_out_opc_imm(s, OPC_SW, data_reg1, addr_reg1, 0); + } + break; + case 3: + if (TCG_NEED_BSWAP) { + tcg_out_bswap32(s, TCG_REG_T0, data_reg2); + tcg_out_opc_imm(s, OPC_SW, TCG_REG_T0, addr_reg1, 0); + tcg_out_bswap32(s, TCG_REG_T0, data_reg1); + tcg_out_opc_imm(s, OPC_SW, TCG_REG_T0, addr_reg1, 4); + } else { + tcg_out_opc_imm(s, OPC_SW, data_reg1, addr_reg1, 0); + tcg_out_opc_imm(s, OPC_SW, data_reg2, addr_reg1, 4); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + reloc_pc16(label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + switch(opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_V0, args[0]); + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_AT, (tcg_target_long)tb_ret_addr); + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_AT, 0); + tcg_out_nop(s); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_abort(); + } else { + /* indirect jump method */ + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_AT, (tcg_target_long)(s->tb_next + args[0])); + tcg_out_ld(s, TCG_TYPE_PTR, TCG_REG_AT, TCG_REG_AT, 0); + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_AT, 0); + } + tcg_out_nop(s); + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + tcg_out_opc_reg(s, OPC_JALR, TCG_REG_RA, args[0], 0); + tcg_out_nop(s); + break; + case INDEX_op_jmp: + tcg_out_opc_reg(s, OPC_JR, 0, args[0], 0); + tcg_out_nop(s); + break; + case INDEX_op_br: + tcg_out_brcond(s, TCG_COND_EQ, TCG_REG_ZERO, TCG_REG_ZERO, args[0]); + break; + + case INDEX_op_mov_i32: + tcg_out_mov(s, args[0], args[1]); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]); + break; + + case INDEX_op_ld8u_i32: + tcg_out_ldst(s, OPC_LBU, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + tcg_out_ldst(s, OPC_LB, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + tcg_out_ldst(s, OPC_LHU, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + tcg_out_ldst(s, OPC_LH, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + tcg_out_ldst(s, OPC_LW, args[0], args[1], args[2]); + break; + case INDEX_op_st8_i32: + tcg_out_ldst(s, OPC_SB, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + tcg_out_ldst(s, OPC_SH, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + tcg_out_ldst(s, OPC_SW, args[0], args[1], args[2]); + break; + + case INDEX_op_add_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_ADDU, args[0], args[1], args[2]); + } + break; + case INDEX_op_add2_i32: + if (const_args[4]) { + tcg_out_opc_imm(s, OPC_ADDIU, TCG_REG_AT, args[2], args[4]); + } else { + tcg_out_opc_reg(s, OPC_ADDU, TCG_REG_AT, args[2], args[4]); + } + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_T0, TCG_REG_AT, args[2]); + if (const_args[5]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[1], args[3], args[5]); + } else { + tcg_out_opc_reg(s, OPC_ADDU, args[1], args[3], args[5]); + } + tcg_out_opc_reg(s, OPC_ADDU, args[1], args[1], TCG_REG_T0); + tcg_out_mov(s, args[0], TCG_REG_AT); + break; + case INDEX_op_sub_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[0], args[1], -args[2]); + } else { + tcg_out_opc_reg(s, OPC_SUBU, args[0], args[1], args[2]); + } + break; + case INDEX_op_sub2_i32: + if (const_args[4]) { + tcg_out_opc_imm(s, OPC_ADDIU, TCG_REG_AT, args[2], -args[4]); + } else { + tcg_out_opc_reg(s, OPC_SUBU, TCG_REG_AT, args[2], args[4]); + } + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_T0, args[2], TCG_REG_AT); + if (const_args[5]) { + tcg_out_opc_imm(s, OPC_ADDIU, args[1], args[3], -args[5]); + } else { + tcg_out_opc_reg(s, OPC_SUBU, args[1], args[3], args[5]); + } + tcg_out_opc_reg(s, OPC_SUBU, args[1], args[1], TCG_REG_T0); + tcg_out_mov(s, args[0], TCG_REG_AT); + break; + case INDEX_op_mul_i32: + tcg_out_opc_reg(s, OPC_MULT, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + break; + case INDEX_op_mulu2_i32: + tcg_out_opc_reg(s, OPC_MULTU, 0, args[2], args[3]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + tcg_out_opc_reg(s, OPC_MFHI, args[1], 0, 0); + break; + case INDEX_op_div_i32: + tcg_out_opc_reg(s, OPC_DIV, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + break; + case INDEX_op_divu_i32: + tcg_out_opc_reg(s, OPC_DIVU, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFLO, args[0], 0, 0); + break; + case INDEX_op_rem_i32: + tcg_out_opc_reg(s, OPC_DIV, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFHI, args[0], 0, 0); + break; + case INDEX_op_remu_i32: + tcg_out_opc_reg(s, OPC_DIVU, 0, args[1], args[2]); + tcg_out_opc_reg(s, OPC_MFHI, args[0], 0, 0); + break; + + case INDEX_op_and_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ANDI, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_AND, args[0], args[1], args[2]); + } + break; + case INDEX_op_or_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_ORI, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_OR, args[0], args[1], args[2]); + } + break; + case INDEX_op_not_i32: + tcg_out_opc_reg(s, OPC_NOR, args[0], args[1], args[1]); + break; + case INDEX_op_xor_i32: + if (const_args[2]) { + tcg_out_opc_imm(s, OPC_XORI, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_XOR, args[0], args[1], args[2]); + } + break; + + case INDEX_op_sar_i32: + if (const_args[2]) { + tcg_out_opc_sa(s, OPC_SRA, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_SRAV, args[0], args[2], args[1]); + } + break; + case INDEX_op_shl_i32: + if (const_args[2]) { + tcg_out_opc_sa(s, OPC_SLL, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_SLLV, args[0], args[2], args[1]); + } + break; + case INDEX_op_shr_i32: + if (const_args[2]) { + tcg_out_opc_sa(s, OPC_SRL, args[0], args[1], args[2]); + } else { + tcg_out_opc_reg(s, OPC_SRLV, args[0], args[2], args[1]); + } + break; + + case INDEX_op_brcond_i32: + tcg_out_brcond(s, args[2], args[0], args[1], args[3]); + break; + case INDEX_op_brcond2_i32: + tcg_out_brcond2(s, args[4], args[0], args[1], args[2], args[3], args[5]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + default: + tcg_abort(); + } +} + +static const TCGTargetOpDef mips_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "C" } }, + { INDEX_op_jmp, { "r" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "rZ", "r" } }, + { INDEX_op_st16_i32, { "rZ", "r" } }, + { INDEX_op_st_i32, { "rZ", "r" } }, + + { INDEX_op_add_i32, { "r", "rZ", "rJZ" } }, + { INDEX_op_mul_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_mulu2_i32, { "r", "r", "rZ", "rZ" } }, + { INDEX_op_div_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_divu_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_rem_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_remu_i32, { "r", "rZ", "rZ" } }, + { INDEX_op_sub_i32, { "r", "rZ", "rJZ" } }, + + { INDEX_op_and_i32, { "r", "rZ", "rIZ" } }, + { INDEX_op_not_i32, { "r", "rZ" } }, + { INDEX_op_or_i32, { "r", "rZ", "rIZ" } }, + { INDEX_op_xor_i32, { "r", "rZ", "rIZ" } }, + + { INDEX_op_shl_i32, { "r", "rZ", "riZ" } }, + { INDEX_op_shr_i32, { "r", "rZ", "riZ" } }, + { INDEX_op_sar_i32, { "r", "rZ", "riZ" } }, + + { INDEX_op_brcond_i32, { "rZ", "rZ" } }, + + { INDEX_op_add2_i32, { "r", "r", "rZ", "rZ", "rJZ", "rJZ" } }, + { INDEX_op_sub2_i32, { "r", "r", "rZ", "rZ", "rJZ", "rJZ" } }, + { INDEX_op_brcond2_i32, { "rZ", "rZ", "rZ", "rZ" } }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "L", "lZ" } }, + { INDEX_op_qemu_ld8s, { "L", "lZ" } }, + { INDEX_op_qemu_ld16u, { "L", "lZ" } }, + { INDEX_op_qemu_ld16s, { "L", "lZ" } }, + { INDEX_op_qemu_ld32u, { "L", "lZ" } }, + { INDEX_op_qemu_ld64, { "L", "L", "lZ" } }, + + { INDEX_op_qemu_st8, { "SZ", "SZ" } }, + { INDEX_op_qemu_st16, { "SZ", "SZ" } }, + { INDEX_op_qemu_st32, { "SZ", "SZ" } }, + { INDEX_op_qemu_st64, { "SZ", "SZ", "SZ" } }, +#else + { INDEX_op_qemu_ld8u, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld8s, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld16u, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld16s, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld32u, { "L", "lZ", "lZ" } }, + { INDEX_op_qemu_ld64, { "L", "L", "lZ", "lZ" } }, + + { INDEX_op_qemu_st8, { "SZ", "SZ", "SZ" } }, + { INDEX_op_qemu_st16, { "SZ", "SZ", "SZ" } }, + { INDEX_op_qemu_st32, { "SZ", "SZ", "SZ" } }, + { INDEX_op_qemu_st64, { "SZ", "SZ", "SZ", "SZ" } }, +#endif + { -1 }, +}; + +static int tcg_target_callee_save_regs[] = { + TCG_REG_S0, + TCG_REG_S1, + TCG_REG_S2, + TCG_REG_S3, + TCG_REG_S4, + TCG_REG_S5, + TCG_REG_S6, + TCG_REG_S7, + TCG_REG_GP, + /* TCG_REG_FP, */ /* currently used for the global env, so np + need to save */ + TCG_REG_RA, /* should be last for ABI compliance */ +}; + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + int i, frame_size; + + /* reserve some stack space */ + frame_size = ARRAY_SIZE(tcg_target_callee_save_regs) * 4 + + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + + /* TB prologue */ + tcg_out_addi(s, TCG_REG_SP, -frame_size); + for(i = 0 ; i < ARRAY_SIZE(tcg_target_callee_save_regs) ; i++) { + tcg_out_st(s, TCG_TYPE_I32, tcg_target_callee_save_regs[i], + TCG_REG_SP, TCG_STATIC_CALL_ARGS_SIZE + i * 4); + } + + /* Call generated code */ + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_A0, 0); + tcg_out_nop(s); + tb_ret_addr = s->code_ptr; + + /* TB epilogue */ + for(i = 0 ; i < ARRAY_SIZE(tcg_target_callee_save_regs) ; i++) { + tcg_out_ld(s, TCG_TYPE_I32, tcg_target_callee_save_regs[i], + TCG_REG_SP, TCG_STATIC_CALL_ARGS_SIZE + i * 4); + } + + tcg_out_opc_reg(s, OPC_JR, 0, TCG_REG_RA, 0); + tcg_out_addi(s, TCG_REG_SP, frame_size); +} + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set(tcg_target_available_regs[TCG_TYPE_I32], 0xffffffff); + tcg_regset_set(tcg_target_call_clobber_regs, + (1 << TCG_REG_V0) | + (1 << TCG_REG_V1) | + (1 << TCG_REG_A0) | + (1 << TCG_REG_A1) | + (1 << TCG_REG_A2) | + (1 << TCG_REG_A3) | + (1 << TCG_REG_T1) | + (1 << TCG_REG_T2) | + (1 << TCG_REG_T3) | + (1 << TCG_REG_T4) | + (1 << TCG_REG_T5) | + (1 << TCG_REG_T6) | + (1 << TCG_REG_T7) | + (1 << TCG_REG_T8) | + (1 << TCG_REG_T9)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_ZERO); /* zero register */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_K0); /* kernel use only */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_K1); /* kernel use only */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_AT); /* internal use */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_T0); /* internal use */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_RA); /* return address */ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_SP); /* stack pointer */ + + tcg_add_target_add_op_defs(mips_op_defs); +} diff --git a/qemu/qemu-git/tcg/mips/tcg-target.h b/qemu/qemu-git/tcg/mips/tcg-target.h new file mode 100644 index 0000000..46760a5 --- /dev/null +++ b/qemu/qemu-git/tcg/mips/tcg-target.h @@ -0,0 +1,104 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008-2009 Arnaud Patard + * Copyright (c) 2009 Aurelien Jarno + * Based on i386/tcg-target.c - Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_MIPS 1 + +#define TCG_TARGET_REG_BITS 32 +#ifdef __MIPSEB__ +# define TCG_TARGET_WORDS_BIGENDIAN +#endif + +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_ZERO = 0, + TCG_REG_AT, + TCG_REG_V0, + TCG_REG_V1, + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3, + TCG_REG_T0, + TCG_REG_T1, + TCG_REG_T2, + TCG_REG_T3, + TCG_REG_T4, + TCG_REG_T5, + TCG_REG_T6, + TCG_REG_T7, + TCG_REG_S0, + TCG_REG_S1, + TCG_REG_S2, + TCG_REG_S3, + TCG_REG_S4, + TCG_REG_S5, + TCG_REG_S6, + TCG_REG_S7, + TCG_REG_T8, + TCG_REG_T9, + TCG_REG_K0, + TCG_REG_K1, + TCG_REG_GP, + TCG_REG_SP, + TCG_REG_FP, + TCG_REG_RA, +}; + +#define TCG_CT_CONST_ZERO 0x100 +#define TCG_CT_CONST_U16 0x200 +#define TCG_CT_CONST_S16 0x400 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_SP +#define TCG_TARGET_STACK_ALIGN 8 +#define TCG_TARGET_CALL_STACK_OFFSET 16 +#define TCG_TARGET_CALL_ALIGN_ARGS 1 + +/* optional instructions */ +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_not_i32 +#undef TCG_TARGET_HAS_ext8s_i32 +#undef TCG_TARGET_HAS_ext16s_i32 +#undef TCG_TARGET_HAS_bswap32_i32 +#undef TCG_TARGET_HAS_bswap16_i32 +#undef TCG_TARGET_HAS_rot_i32 + +/* optional instructions automatically implemented */ +#undef TCG_TARGET_HAS_neg_i32 /* sub rd, zero, rt */ +#undef TCG_TARGET_HAS_ext8u_i32 /* andi rt, rs, 0xff */ +#undef TCG_TARGET_HAS_ext16u_i32 /* andi rt, rs, 0xffff */ + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_FP +#define TCG_AREG1 TCG_REG_S0 +#define TCG_AREG2 TCG_REG_S1 + +#include + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ + cacheflush ((void *)start, stop-start, ICACHE); +} diff --git a/qemu/qemu-git/tcg/ppc/.svn/all-wcprops b/qemu/qemu-git/tcg/ppc/.svn/all-wcprops new file mode 100644 index 0000000..c11d654 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/ppc +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 60 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/ppc/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/ppc/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/ppc/.svn/entries b/qemu/qemu-git/tcg/ppc/.svn/entries new file mode 100644 index 0000000..4e89085 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/ppc +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +5d6bb229453943c26c91cd2499c4ad55 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +45330 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +d00ba062f95acc9883ce831e2e11f85d +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +2482 + diff --git a/qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..07e6941 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,1615 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +static uint8_t *tb_ret_addr; + +#ifdef __APPLE__ +#define LINKAGE_AREA_SIZE 24 +#define LR_OFFSET 8 +#elif defined _AIX +#define LINKAGE_AREA_SIZE 52 +#define LR_OFFSET 8 +#else +#define LINKAGE_AREA_SIZE 8 +#define LR_OFFSET 4 +#endif + +#define FAST_PATH +#if TARGET_PHYS_ADDR_BITS <= 32 +#define ADDEND_OFFSET 0 +#else +#define ADDEND_OFFSET 4 +#endif + +#ifndef GUEST_BASE +#define GUEST_BASE 0 +#endif + +#ifdef CONFIG_USE_GUEST_BASE +#define TCG_GUEST_BASE_REG 30 +#else +#define TCG_GUEST_BASE_REG 0 +#endif + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "r0", + "r1", + "rp", + "r3", + "r4", + "r5", + "r6", + "r7", + "r8", + "r9", + "r10", + "r11", + "r12", + "r13", + "r14", + "r15", + "r16", + "r17", + "r18", + "r19", + "r20", + "r21", + "r22", + "r23", + "r24", + "r25", + "r26", + "r27", + "r28", + "r29", + "r30", + "r31" +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31, +#ifdef __APPLE__ + TCG_REG_R2, +#endif + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, +#ifndef __APPLE__ + TCG_REG_R11, +#endif + TCG_REG_R12, +#ifndef __linux__ + TCG_REG_R13, +#endif + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27 +}; + +static const int tcg_target_call_iarg_regs[] = { + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10 +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_R3, + TCG_REG_R4 +}; + +static const int tcg_target_callee_save_regs[] = { +#ifdef __APPLE__ + TCG_REG_R11, + TCG_REG_R13, +#endif +#ifdef _AIX + TCG_REG_R13, +#endif + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + /* TCG_REG_R27, */ /* currently used for the global env, so no + need to save */ + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +static uint32_t reloc_pc24_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if ((disp << 6) >> 6 != disp) + tcg_abort (); + + return disp & 0x3fffffc; +} + +static void reloc_pc24 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3fffffc) + | reloc_pc24_val (pc, target); +} + +static uint16_t reloc_pc14_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if (disp != (int16_t) disp) + tcg_abort (); + + return disp & 0xfffc; +} + +static void reloc_pc14 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xfffc) + | reloc_pc14_val (pc, target); +} + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch (type) { + case R_PPC_REL14: + reloc_pc14 (code_ptr, value); + break; + case R_PPC_REL24: + reloc_pc24 (code_ptr, value); + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static int tcg_target_get_call_iarg_regs_count(int flags) +{ + return ARRAY_SIZE (tcg_target_call_iarg_regs); +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'A': case 'B': case 'C': case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, 3 + ct_str[0] - 'A'); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; +#ifdef CONFIG_SOFTMMU + case 'L': /* qemu_ld constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4); + break; + case 'K': /* qemu_st[8..32] constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5); +#if TARGET_LONG_BITS == 64 + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6); +#endif + break; + case 'M': /* qemu_st64 constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7); + break; +#else + case 'L': + case 'K': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; + case 'M': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + break; +#endif + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + return 0; +} + +#define OPCD(opc) ((opc)<<26) +#define XO31(opc) (OPCD(31)|((opc)<<1)) +#define XO19(opc) (OPCD(19)|((opc)<<1)) + +#define B OPCD(18) +#define BC OPCD(16) +#define LBZ OPCD(34) +#define LHZ OPCD(40) +#define LHA OPCD(42) +#define LWZ OPCD(32) +#define STB OPCD(38) +#define STH OPCD(44) +#define STW OPCD(36) + +#define ADDI OPCD(14) +#define ADDIS OPCD(15) +#define ORI OPCD(24) +#define ORIS OPCD(25) +#define XORI OPCD(26) +#define XORIS OPCD(27) +#define ANDI OPCD(28) +#define ANDIS OPCD(29) +#define MULLI OPCD( 7) +#define CMPLI OPCD(10) +#define CMPI OPCD(11) + +#define LWZU OPCD(33) +#define STWU OPCD(37) + +#define RLWINM OPCD(21) + +#define BCLR XO19( 16) +#define BCCTR XO19(528) +#define CRAND XO19(257) +#define CRANDC XO19(129) +#define CRNAND XO19(225) +#define CROR XO19(449) + +#define EXTSB XO31(954) +#define EXTSH XO31(922) +#define ADD XO31(266) +#define ADDE XO31(138) +#define ADDC XO31( 10) +#define AND XO31( 28) +#define SUBF XO31( 40) +#define SUBFC XO31( 8) +#define SUBFE XO31(136) +#define OR XO31(444) +#define XOR XO31(316) +#define MULLW XO31(235) +#define MULHWU XO31( 11) +#define DIVW XO31(491) +#define DIVWU XO31(459) +#define CMP XO31( 0) +#define CMPL XO31( 32) +#define LHBRX XO31(790) +#define LWBRX XO31(534) +#define STHBRX XO31(918) +#define STWBRX XO31(662) +#define MFSPR XO31(339) +#define MTSPR XO31(467) +#define SRAWI XO31(824) +#define NEG XO31(104) + +#define LBZX XO31( 87) +#define LHZX XO31(279) +#define LHAX XO31(343) +#define LWZX XO31( 23) +#define STBX XO31(215) +#define STHX XO31(407) +#define STWX XO31(151) + +#define SPR(a,b) ((((a)<<5)|(b))<<11) +#define LR SPR(8, 0) +#define CTR SPR(9, 0) + +#define SLW XO31( 24) +#define SRW XO31(536) +#define SRAW XO31(792) + +#define TW XO31(4) +#define TRAP (TW | TO (31)) + +#define RT(r) ((r)<<21) +#define RS(r) ((r)<<21) +#define RA(r) ((r)<<16) +#define RB(r) ((r)<<11) +#define TO(t) ((t)<<21) +#define SH(s) ((s)<<11) +#define MB(b) ((b)<<6) +#define ME(e) ((e)<<1) +#define BO(o) ((o)<<21) + +#define LK 1 + +#define TAB(t,a,b) (RT(t) | RA(a) | RB(b)) +#define SAB(s,a,b) (RS(s) | RA(a) | RB(b)) + +#define BF(n) ((n)<<23) +#define BI(n, c) (((c)+((n)*4))<<16) +#define BT(n, c) (((c)+((n)*4))<<21) +#define BA(n, c) (((c)+((n)*4))<<16) +#define BB(n, c) (((c)+((n)*4))<<11) + +#define BO_COND_TRUE BO (12) +#define BO_COND_FALSE BO (4) +#define BO_ALWAYS BO (20) + +enum { + CR_LT, + CR_GT, + CR_EQ, + CR_SO +}; + +static const uint32_t tcg_to_bc[10] = { + [TCG_COND_EQ] = BC | BI (7, CR_EQ) | BO_COND_TRUE, + [TCG_COND_NE] = BC | BI (7, CR_EQ) | BO_COND_FALSE, + [TCG_COND_LT] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GE] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LE] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GT] = BC | BI (7, CR_GT) | BO_COND_TRUE, + [TCG_COND_LTU] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GEU] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LEU] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GTU] = BC | BI (7, CR_GT) | BO_COND_TRUE, +}; + +static void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out32 (s, OR | SAB (arg, ret, arg)); +} + +static void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + if (arg == (int16_t) arg) + tcg_out32 (s, ADDI | RT (ret) | RA (0) | (arg & 0xffff)); + else { + tcg_out32 (s, ADDIS | RT (ret) | RA (0) | ((arg >> 16) & 0xffff)); + if (arg & 0xffff) + tcg_out32 (s, ORI | RS (ret) | RA (ret) | (arg & 0xffff)); + } +} + +static void tcg_out_ldst (TCGContext *s, int ret, int addr, + int offset, int op1, int op2) +{ + if (offset == (int16_t) offset) + tcg_out32 (s, op1 | RT (ret) | RA (addr) | (offset & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, offset); + tcg_out32 (s, op2 | RT (ret) | RA (addr) | RB (0)); + } +} + +static void tcg_out_b (TCGContext *s, int mask, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) s->code_ptr; + if ((disp << 6) >> 6 == disp) + tcg_out32 (s, B | (disp & 0x3fffffc) | mask); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, (tcg_target_long) target); + tcg_out32 (s, MTSPR | RS (0) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS | mask); + } +} + +static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg) +{ +#ifdef _AIX + int reg; + + if (const_arg) { + reg = 2; + tcg_out_movi (s, TCG_TYPE_I32, reg, arg); + } + else reg = arg; + + tcg_out32 (s, LWZ | RT (0) | RA (reg)); + tcg_out32 (s, MTSPR | RA (0) | CTR); + tcg_out32 (s, LWZ | RT (2) | RA (reg) | 4); + tcg_out32 (s, BCCTR | BO_ALWAYS | LK); +#else + if (const_arg) { + tcg_out_b (s, LK, arg); + } + else { + tcg_out32 (s, MTSPR | RS (arg) | LR); + tcg_out32 (s, BCLR | BO_ALWAYS | LK); + } +#endif +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, rbase, mem_index, s_bits, bswap; +#ifdef CONFIG_SOFTMMU + int r2; + void *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out32 (s, (RLWINM + | RA (r0) + | RS (addr_reg) + | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)) + | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS)) + | ME (31 - CPU_TLB_ENTRY_BITS) + ) + ); + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0)); + tcg_out32 (s, (LWZU + | RT (r1) + | RA (r0) + | offsetof (CPUState, tlb_table[mem_index][0].addr_read) + ) + ); + tcg_out32 (s, (RLWINM + | RA (r2) + | RS (addr_reg) + | SH (0) + | MB ((32 - s_bits) & 31) + | ME (31 - TARGET_PAGE_BITS) + ) + ); + + tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1)); +#if TARGET_LONG_BITS == 64 + tcg_out32 (s, LWZ | RT (r1) | RA (r0) | 4); + tcg_out32 (s, CMP | BF (6) | RA (addr_reg2) | RB (r1)); + tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); +#endif + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ +#if TARGET_LONG_BITS == 32 + tcg_out_mov (s, 3, addr_reg); + tcg_out_movi (s, TCG_TYPE_I32, 4, mem_index); +#else + tcg_out_mov (s, 3, addr_reg2); + tcg_out_mov (s, 4, addr_reg); + tcg_out_movi (s, TCG_TYPE_I32, 5, mem_index); +#endif + + tcg_out_call (s, (tcg_target_long) qemu_ld_helpers[s_bits], 1); + switch (opc) { + case 0|4: + tcg_out32 (s, EXTSB | RA (data_reg) | RS (3)); + break; + case 1|4: + tcg_out32 (s, EXTSH | RA (data_reg) | RS (3)); + break; + case 0: + case 1: + case 2: + if (data_reg != 3) + tcg_out_mov (s, data_reg, 3); + break; + case 3: + if (data_reg == 3) { + if (data_reg2 == 4) { + tcg_out_mov (s, 0, 4); + tcg_out_mov (s, 4, 3); + tcg_out_mov (s, 3, 0); + } + else { + tcg_out_mov (s, data_reg2, 3); + tcg_out_mov (s, 3, 4); + } + } + else { + if (data_reg != 4) tcg_out_mov (s, data_reg, 4); + if (data_reg2 != 3) tcg_out_mov (s, data_reg2, 3); + } + break; + } + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + /* r0 now contains &env->tlb_table[mem_index][index].addr_read */ + tcg_out32 (s, (LWZ + | RT (r0) + | RA (r0) + | (ADDEND_OFFSET + offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_read)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ + r0 = addr_reg; + r1 = 3; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + + switch (opc) { + default: + case 0: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + break; + case 0|4: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSB | RA (data_reg) | RS (data_reg)); + break; + case 1: + if (bswap) + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LHZX | TAB (data_reg, rbase, r0)); + break; + case 1|4: + if (bswap) { + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSH | RA (data_reg) | RS (data_reg)); + } + else tcg_out32 (s, LHAX | TAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LWZX | TAB (data_reg, rbase, r0)); + break; + case 3: + if (bswap) { + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, LWBRX | TAB (data_reg2, rbase, r1)); + } + else { +#ifdef CONFIG_USE_GUEST_BASE + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, LWZX | TAB (data_reg2, rbase, r0)); + tcg_out32 (s, LWZX | TAB (data_reg, rbase, r1)); +#else + if (r0 == data_reg2) { + tcg_out32 (s, LWZ | RT (0) | RA (r0)); + tcg_out32 (s, LWZ | RT (data_reg) | RA (r0) | 4); + tcg_out_mov (s, data_reg2, 0); + } + else { + tcg_out32 (s, LWZ | RT (data_reg2) | RA (r0)); + tcg_out32 (s, LWZ | RT (data_reg) | RA (r0) | 4); + } +#endif + } + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, r0, r1, data_reg, data_reg2, mem_index, bswap, rbase; +#ifdef CONFIG_SOFTMMU + int r2, ir; + void *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out32 (s, (RLWINM + | RA (r0) + | RS (addr_reg) + | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)) + | MB (32 - (CPU_TLB_ENTRY_BITS + CPU_TLB_BITS)) + | ME (31 - CPU_TLB_ENTRY_BITS) + ) + ); + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0)); + tcg_out32 (s, (LWZU + | RT (r1) + | RA (r0) + | offsetof (CPUState, tlb_table[mem_index][0].addr_write) + ) + ); + tcg_out32 (s, (RLWINM + | RA (r2) + | RS (addr_reg) + | SH (0) + | MB ((32 - opc) & 31) + | ME (31 - TARGET_PAGE_BITS) + ) + ); + + tcg_out32 (s, CMP | (7 << 23) | RA (r2) | RB (r1)); +#if TARGET_LONG_BITS == 64 + tcg_out32 (s, LWZ | RT (r1) | RA (r0) | 4); + tcg_out32 (s, CMP | BF (6) | RA (addr_reg2) | RB (r1)); + tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); +#endif + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ +#if TARGET_LONG_BITS == 32 + tcg_out_mov (s, 3, addr_reg); + ir = 4; +#else + tcg_out_mov (s, 3, addr_reg2); + tcg_out_mov (s, 4, addr_reg); +#ifdef TCG_TARGET_CALL_ALIGN_ARGS + ir = 5; +#else + ir = 4; +#endif +#endif + + switch (opc) { + case 0: + tcg_out32 (s, (RLWINM + | RA (ir) + | RS (data_reg) + | SH (0) + | MB (24) + | ME (31))); + break; + case 1: + tcg_out32 (s, (RLWINM + | RA (ir) + | RS (data_reg) + | SH (0) + | MB (16) + | ME (31))); + break; + case 2: + tcg_out_mov (s, ir, data_reg); + break; + case 3: +#ifdef TCG_TARGET_CALL_ALIGN_ARGS + ir = 5; +#endif + tcg_out_mov (s, ir++, data_reg2); + tcg_out_mov (s, ir, data_reg); + break; + } + ir++; + + tcg_out_movi (s, TCG_TYPE_I32, ir, mem_index); + tcg_out_call (s, (tcg_target_long) qemu_st_helpers[opc], 1); + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + tcg_out32 (s, (LWZ + | RT (r0) + | RA (r0) + | (ADDEND_OFFSET + offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_write)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ + r0 = addr_reg; + r1 = 3; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out32 (s, STBX | SAB (data_reg, rbase, r0)); + break; + case 1: + if (bswap) + tcg_out32 (s, STHBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STHX | SAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STWX | SAB (data_reg, rbase, r0)); + break; + case 3: + if (bswap) { + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + tcg_out32 (s, STWBRX | SAB (data_reg2, rbase, r1)); + } + else { +#ifdef CONFIG_USE_GUEST_BASE + tcg_out32 (s, STWX | SAB (data_reg2, rbase, r0)); + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, STWX | SAB (data_reg, rbase, r1)); +#else + tcg_out32 (s, STW | RS (data_reg2) | RA (r0)); + tcg_out32 (s, STW | RS (data_reg) | RA (r0) | 4); +#endif + } + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +void tcg_target_qemu_prologue (TCGContext *s) +{ + int i, frame_size; + + frame_size = 0 + + LINKAGE_AREA_SIZE + + TCG_STATIC_CALL_ARGS_SIZE + + ARRAY_SIZE (tcg_target_callee_save_regs) * 4 + ; + frame_size = (frame_size + 15) & ~15; + +#ifdef _AIX + { + uint32_t addr; + + /* First emit adhoc function descriptor */ + addr = (uint32_t) s->code_ptr + 12; + tcg_out32 (s, addr); /* entry point */ + s->code_ptr += 8; /* skip TOC and environment pointer */ + } +#endif + tcg_out32 (s, MFSPR | RT (0) | LR); + tcg_out32 (s, STWU | RS (1) | RA (1) | (-frame_size & 0xffff)); + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (STW + | RS (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 4 + LINKAGE_AREA_SIZE + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, STW | RS (0) | RA (1) | (frame_size + LR_OFFSET)); + +#ifdef CONFIG_USE_GUEST_BASE + tcg_out_movi (s, TCG_TYPE_I32, TCG_GUEST_BASE_REG, GUEST_BASE); +#endif + + tcg_out32 (s, MTSPR | RS (3) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + tb_ret_addr = s->code_ptr; + + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (LWZ + | RT (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 4 + LINKAGE_AREA_SIZE + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, LWZ | RT (0) | RA (1) | (frame_size + LR_OFFSET)); + tcg_out32 (s, MTSPR | RS (0) | LR); + tcg_out32 (s, ADDI | RT (1) | RA (1) | frame_size); + tcg_out32 (s, BCLR | BO_ALWAYS); +} + +static void tcg_out_ld (TCGContext *s, TCGType type, int ret, int arg1, + tcg_target_long arg2) +{ + tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX); +} + +static void tcg_out_st (TCGContext *s, TCGType type, int arg, int arg1, + tcg_target_long arg2) +{ + tcg_out_ldst (s, arg, arg1, arg2, STW, STWX); +} + +static void ppc_addi (TCGContext *s, int rt, int ra, tcg_target_long si) +{ + if (!si && rt == ra) + return; + + if (si == (int16_t) si) + tcg_out32 (s, ADDI | RT (rt) | RA (ra) | (si & 0xffff)); + else { + uint16_t h = ((si >> 16) & 0xffff) + ((uint16_t) si >> 15); + tcg_out32 (s, ADDIS | RT (rt) | RA (ra) | h); + tcg_out32 (s, ADDI | RT (rt) | RA (rt) | (si & 0xffff)); + } +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + ppc_addi (s, reg, reg, val); +} + +static void tcg_out_cmp (TCGContext *s, int cond, TCGArg arg1, TCGArg arg2, + int const_arg2, int cr) +{ + int imm; + uint32_t op; + + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_NE: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + else if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + case TCG_COND_LT: + case TCG_COND_GE: + case TCG_COND_LE: + case TCG_COND_GT: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + } + op = CMP; + imm = 0; + break; + + case TCG_COND_LTU: + case TCG_COND_GEU: + case TCG_COND_LEU: + case TCG_COND_GTU: + if (const_arg2) { + if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + default: + tcg_abort (); + } + op |= BF (cr); + + if (imm) + tcg_out32 (s, op | RA (arg1) | (arg2 & 0xffff)); + else { + if (const_arg2) { + tcg_out_movi (s, TCG_TYPE_I32, 0, arg2); + tcg_out32 (s, op | RA (arg1) | RB (0)); + } + else + tcg_out32 (s, op | RA (arg1) | RB (arg2)); + } + +} + +static void tcg_out_bc (TCGContext *s, int bc, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) + tcg_out32 (s, bc | reloc_pc14_val (s->code_ptr, l->u.value)); + else { + uint16_t val = *(uint16_t *) &s->code_ptr[2]; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, bc | (val & 0xfffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL14, label_index, 0); + } +} + +static void tcg_out_brcond (TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + tcg_out_cmp (s, cond, arg1, arg2, const_arg2, 7); + tcg_out_bc (s, tcg_to_bc[cond], label_index); +} + +/* XXX: we implement it at the target level to avoid having to + handle cross basic blocks temporaries */ +static void tcg_out_brcond2 (TCGContext *s, const TCGArg *args, + const int *const_args) +{ + int cond = args[4], label_index = args[5], op; + struct { int bit1; int bit2; int cond2; } bits[] = { + [TCG_COND_LT ] = { CR_LT, CR_LT, TCG_COND_LT }, + [TCG_COND_LE ] = { CR_LT, CR_GT, TCG_COND_LT }, + [TCG_COND_GT ] = { CR_GT, CR_GT, TCG_COND_GT }, + [TCG_COND_GE ] = { CR_GT, CR_LT, TCG_COND_GT }, + [TCG_COND_LTU] = { CR_LT, CR_LT, TCG_COND_LTU }, + [TCG_COND_LEU] = { CR_LT, CR_GT, TCG_COND_LTU }, + [TCG_COND_GTU] = { CR_GT, CR_GT, TCG_COND_GTU }, + [TCG_COND_GEU] = { CR_GT, CR_LT, TCG_COND_GTU }, + }, *b = &bits[cond]; + + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_NE: + op = (cond == TCG_COND_EQ) ? CRAND : CRNAND; + tcg_out_cmp (s, cond, args[0], args[2], const_args[2], 6); + tcg_out_cmp (s, cond, args[1], args[3], const_args[3], 7); + tcg_out32 (s, op | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); + break; + case TCG_COND_LT: + case TCG_COND_LE: + case TCG_COND_GT: + case TCG_COND_GE: + case TCG_COND_LTU: + case TCG_COND_LEU: + case TCG_COND_GTU: + case TCG_COND_GEU: + op = (b->bit1 != b->bit2) ? CRANDC : CRAND; + tcg_out_cmp (s, b->cond2, args[1], args[3], const_args[3], 5); + tcg_out_cmp (s, TCG_COND_EQ, args[1], args[3], const_args[3], 6); + tcg_out_cmp (s, cond, args[0], args[2], const_args[2], 7); + tcg_out32 (s, op | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, b->bit2)); + tcg_out32 (s, CROR | BT (7, CR_EQ) | BA (5, b->bit1) | BB (7, CR_EQ)); + break; + default: + tcg_abort(); + } + + tcg_out_bc (s, (BC | BI (7, CR_EQ) | BO_COND_TRUE), label_index); +} + +void ppc_tb_set_jmp_target (unsigned long jmp_addr, unsigned long addr) +{ + uint32_t *ptr; + long disp = addr - jmp_addr; + unsigned long patch_size; + + ptr = (uint32_t *)jmp_addr; + + if ((disp << 6) >> 6 != disp) { + ptr[0] = 0x3c000000 | (addr >> 16); /* lis 0,addr@ha */ + ptr[1] = 0x60000000 | (addr & 0xffff); /* la 0,addr@l(0) */ + ptr[2] = 0x7c0903a6; /* mtctr 0 */ + ptr[3] = 0x4e800420; /* brctr */ + patch_size = 16; + } else { + /* patch the branch destination */ + if (disp != 16) { + *ptr = 0x48000000 | (disp & 0x03fffffc); /* b disp */ + patch_size = 4; + } else { + ptr[0] = 0x60000000; /* nop */ + ptr[1] = 0x60000000; + ptr[2] = 0x60000000; + ptr[3] = 0x60000000; + patch_size = 16; + } + } + /* flush icache */ + flush_icache_range(jmp_addr, jmp_addr + patch_size); +} + +static void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi (s, TCG_TYPE_I32, TCG_REG_R3, args[0]); + tcg_out_b (s, 0, (tcg_target_long) tb_ret_addr); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + s->code_ptr += 16; + } + else { + tcg_abort (); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_br: + { + TCGLabel *l = &s->labels[args[0]]; + + if (l->has_value) { + tcg_out_b (s, 0, l->u.value); + } + else { + uint32_t val = *(uint32_t *) s->code_ptr; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, B | (val & 0x3fffffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL24, args[0], 0); + } + } + break; + case INDEX_op_call: + tcg_out_call (s, args[0], const_args[0]); + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out_b (s, 0, args[0]); + } + else { + tcg_out32 (s, MTSPR | RS (args[0]) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + } + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + break; + case INDEX_op_ld8s_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + tcg_out32 (s, EXTSB | RS (args[0]) | RA (args[0])); + break; + case INDEX_op_ld16u_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LHZ, LHZX); + break; + case INDEX_op_ld16s_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LHA, LHAX); + break; + case INDEX_op_ld_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LWZ, LWZX); + break; + case INDEX_op_st8_i32: + tcg_out_ldst (s, args[0], args[1], args[2], STB, STBX); + break; + case INDEX_op_st16_i32: + tcg_out_ldst (s, args[0], args[1], args[2], STH, STHX); + break; + case INDEX_op_st_i32: + tcg_out_ldst (s, args[0], args[1], args[2], STW, STWX); + break; + + case INDEX_op_add_i32: + if (const_args[2]) + ppc_addi (s, args[0], args[1], args[2]); + else + tcg_out32 (s, ADD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_sub_i32: + if (const_args[2]) + ppc_addi (s, args[0], args[1], -args[2]); + else + tcg_out32 (s, SUBF | TAB (args[0], args[2], args[1])); + break; + + case INDEX_op_and_i32: + if (const_args[2]) { + uint32_t c; + + c = args[2]; + + if (!c) { + tcg_out_movi (s, TCG_TYPE_I32, args[0], 0); + break; + } +#ifdef __PPU__ + uint32_t t, n; + int mb, me; + + n = c ^ -(c & 1); + t = n + (n & -n); + + if ((t & (t - 1)) == 0) { + int lzc, tzc; + + if ((c & 0x80000001) == 0x80000001) { + lzc = clz32 (n); + tzc = ctz32 (n); + + mb = 32 - tzc; + me = lzc - 1; + } + else { + lzc = clz32 (c); + tzc = ctz32 (c); + + mb = lzc; + me = 31 - tzc; + } + + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (0) + | MB (mb) + | ME (me) + ) + ); + } + else +#endif /* !__PPU__ */ + { + if ((c & 0xffff) == c) + tcg_out32 (s, ANDI | RS (args[1]) | RA (args[0]) | c); + else if ((c & 0xffff0000) == c) + tcg_out32 (s, ANDIS | RS (args[1]) | RA (args[0]) + | ((c >> 16) & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, c); + tcg_out32 (s, AND | SAB (args[1], args[0], 0)); + } + } + } + else + tcg_out32 (s, AND | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_or_i32: + if (const_args[2]) { + if (args[2] & 0xffff) { + tcg_out32 (s, ORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + if (args[2] >> 16) + tcg_out32 (s, ORIS | RS (args[0]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + else { + tcg_out32 (s, ORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + } + else + tcg_out32 (s, OR | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_xor_i32: + if (const_args[2]) { + if ((args[2] & 0xffff) == args[2]) + tcg_out32 (s, XORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + else if ((args[2] & 0xffff0000) == args[2]) + tcg_out32 (s, XORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, args[2]); + tcg_out32 (s, XOR | SAB (args[1], args[0], 0)); + } + } + else + tcg_out32 (s, XOR | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_mul_i32: + if (const_args[2]) { + if (args[2] == (int16_t) args[2]) + tcg_out32 (s, MULLI | RT (args[0]) | RA (args[1]) + | (args[2] & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, args[2]); + tcg_out32 (s, MULLW | TAB (args[0], args[1], 0)); + } + } + else + tcg_out32 (s, MULLW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_div_i32: + tcg_out32 (s, DIVW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_divu_i32: + tcg_out32 (s, DIVWU | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_rem_i32: + tcg_out32 (s, DIVW | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_remu_i32: + tcg_out32 (s, DIVWU | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_mulu2_i32: + if (args[0] == args[2] || args[0] == args[3]) { + tcg_out32 (s, MULLW | TAB (0, args[2], args[3])); + tcg_out32 (s, MULHWU | TAB (args[1], args[2], args[3])); + tcg_out_mov (s, args[0], 0); + } + else { + tcg_out32 (s, MULLW | TAB (args[0], args[2], args[3])); + tcg_out32 (s, MULHWU | TAB (args[1], args[2], args[3])); + } + break; + + case INDEX_op_shl_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (args[2]) + | MB (0) + | ME (31 - args[2]) + ) + ); + } + else + tcg_out32 (s, SLW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_shr_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (32 - args[2]) + | MB (args[2]) + | ME (31) + ) + ); + } + else + tcg_out32 (s, SRW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_sar_i32: + if (const_args[2]) + tcg_out32 (s, SRAWI | RS (args[1]) | RA (args[0]) | SH (args[2])); + else + tcg_out32 (s, SRAW | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_add2_i32: + if (args[0] == args[3] || args[0] == args[5]) { + tcg_out32 (s, ADDC | TAB (0, args[2], args[4])); + tcg_out32 (s, ADDE | TAB (args[1], args[3], args[5])); + tcg_out_mov (s, args[0], 0); + } + else { + tcg_out32 (s, ADDC | TAB (args[0], args[2], args[4])); + tcg_out32 (s, ADDE | TAB (args[1], args[3], args[5])); + } + break; + case INDEX_op_sub2_i32: + if (args[0] == args[3] || args[0] == args[5]) { + tcg_out32 (s, SUBFC | TAB (0, args[4], args[2])); + tcg_out32 (s, SUBFE | TAB (args[1], args[5], args[3])); + tcg_out_mov (s, args[0], 0); + } + else { + tcg_out32 (s, SUBFC | TAB (args[0], args[4], args[2])); + tcg_out32 (s, SUBFE | TAB (args[1], args[5], args[3])); + } + break; + + case INDEX_op_brcond_i32: + /* + args[0] = r0 + args[1] = r1 + args[2] = cond + args[3] = r1 is const + args[4] = label_index + */ + tcg_out_brcond (s, args[2], args[0], args[1], const_args[1], args[3]); + break; + case INDEX_op_brcond2_i32: + tcg_out_brcond2(s, args, const_args); + break; + + case INDEX_op_neg_i32: + tcg_out32 (s, NEG | RT (args[0]) | RA (args[1])); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + case INDEX_op_ext8s_i32: + tcg_out32 (s, EXTSB | RS (args[1]) | RA (args[0])); + break; + case INDEX_op_ext16s_i32: + tcg_out32 (s, EXTSH | RS (args[1]) | RA (args[0])); + break; + + default: + tcg_dump_ops (s, stderr); + tcg_abort (); + } +} + +static const TCGTargetOpDef ppc_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "ri" } }, + { INDEX_op_mul_i32, { "r", "r", "ri" } }, + { INDEX_op_div_i32, { "r", "r", "r" } }, + { INDEX_op_divu_i32, { "r", "r", "r" } }, + { INDEX_op_rem_i32, { "r", "r", "r" } }, + { INDEX_op_remu_i32, { "r", "r", "r" } }, + { INDEX_op_mulu2_i32, { "r", "r", "r", "r" } }, + { INDEX_op_sub_i32, { "r", "r", "ri" } }, + { INDEX_op_and_i32, { "r", "r", "ri" } }, + { INDEX_op_or_i32, { "r", "r", "ri" } }, + { INDEX_op_xor_i32, { "r", "r", "ri" } }, + + { INDEX_op_shl_i32, { "r", "r", "ri" } }, + { INDEX_op_shr_i32, { "r", "r", "ri" } }, + { INDEX_op_sar_i32, { "r", "r", "ri" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + + { INDEX_op_add2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_sub2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_brcond2_i32, { "r", "r", "r", "r" } }, + + { INDEX_op_neg_i32, { "r", "r" } }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L" } }, + + { INDEX_op_qemu_st8, { "K", "K" } }, + { INDEX_op_qemu_st16, { "K", "K" } }, + { INDEX_op_qemu_st32, { "K", "K" } }, + { INDEX_op_qemu_st64, { "M", "M", "M" } }, +#else + { INDEX_op_qemu_ld8u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld64, { "r", "L", "L", "L" } }, + + { INDEX_op_qemu_st8, { "K", "K", "K" } }, + { INDEX_op_qemu_st16, { "K", "K", "K" } }, + { INDEX_op_qemu_st32, { "K", "K", "K" } }, + { INDEX_op_qemu_st64, { "M", "M", "M", "M" } }, +#endif + + { INDEX_op_ext8s_i32, { "r", "r" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_R0) | +#ifdef __APPLE__ + (1 << TCG_REG_R2) | +#endif + (1 << TCG_REG_R3) | + (1 << TCG_REG_R4) | + (1 << TCG_REG_R5) | + (1 << TCG_REG_R6) | + (1 << TCG_REG_R7) | + (1 << TCG_REG_R8) | + (1 << TCG_REG_R9) | + (1 << TCG_REG_R10) | + (1 << TCG_REG_R11) | + (1 << TCG_REG_R12) + ); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R0); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R1); +#ifndef __APPLE__ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R2); +#endif +#ifdef __linux__ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R13); +#endif +#ifdef CONFIG_USE_GUEST_BASE + tcg_regset_set_reg(s->reserved_regs, TCG_GUEST_BASE_REG); +#endif + + tcg_add_target_add_op_defs(ppc_op_defs); +} diff --git a/qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..0197e79 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,89 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_PPC 1 + +#define TCG_TARGET_REG_BITS 32 +#define TCG_TARGET_WORDS_BIGENDIAN +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R1 +#define TCG_TARGET_STACK_ALIGN 16 +#if defined __APPLE__ +#define TCG_TARGET_CALL_STACK_OFFSET 24 +#elif defined _AIX +#define TCG_TARGET_CALL_STACK_OFFSET 52 +#elif defined __linux__ +#define TCG_TARGET_CALL_ALIGN_ARGS 1 +#define TCG_TARGET_CALL_STACK_OFFSET 8 +#else +#error Unsupported system +#endif + +/* optional instructions */ +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 + +#define TCG_AREG0 TCG_REG_R27 +#define TCG_AREG1 TCG_REG_R24 +#define TCG_AREG2 TCG_REG_R25 + +#define TCG_TARGET_HAS_GUEST_BASE diff --git a/qemu/qemu-git/tcg/ppc/tcg-target.c b/qemu/qemu-git/tcg/ppc/tcg-target.c new file mode 100644 index 0000000..07e6941 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc/tcg-target.c @@ -0,0 +1,1615 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +static uint8_t *tb_ret_addr; + +#ifdef __APPLE__ +#define LINKAGE_AREA_SIZE 24 +#define LR_OFFSET 8 +#elif defined _AIX +#define LINKAGE_AREA_SIZE 52 +#define LR_OFFSET 8 +#else +#define LINKAGE_AREA_SIZE 8 +#define LR_OFFSET 4 +#endif + +#define FAST_PATH +#if TARGET_PHYS_ADDR_BITS <= 32 +#define ADDEND_OFFSET 0 +#else +#define ADDEND_OFFSET 4 +#endif + +#ifndef GUEST_BASE +#define GUEST_BASE 0 +#endif + +#ifdef CONFIG_USE_GUEST_BASE +#define TCG_GUEST_BASE_REG 30 +#else +#define TCG_GUEST_BASE_REG 0 +#endif + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "r0", + "r1", + "rp", + "r3", + "r4", + "r5", + "r6", + "r7", + "r8", + "r9", + "r10", + "r11", + "r12", + "r13", + "r14", + "r15", + "r16", + "r17", + "r18", + "r19", + "r20", + "r21", + "r22", + "r23", + "r24", + "r25", + "r26", + "r27", + "r28", + "r29", + "r30", + "r31" +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31, +#ifdef __APPLE__ + TCG_REG_R2, +#endif + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, +#ifndef __APPLE__ + TCG_REG_R11, +#endif + TCG_REG_R12, +#ifndef __linux__ + TCG_REG_R13, +#endif + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27 +}; + +static const int tcg_target_call_iarg_regs[] = { + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10 +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_R3, + TCG_REG_R4 +}; + +static const int tcg_target_callee_save_regs[] = { +#ifdef __APPLE__ + TCG_REG_R11, + TCG_REG_R13, +#endif +#ifdef _AIX + TCG_REG_R13, +#endif + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + /* TCG_REG_R27, */ /* currently used for the global env, so no + need to save */ + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +static uint32_t reloc_pc24_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if ((disp << 6) >> 6 != disp) + tcg_abort (); + + return disp & 0x3fffffc; +} + +static void reloc_pc24 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3fffffc) + | reloc_pc24_val (pc, target); +} + +static uint16_t reloc_pc14_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if (disp != (int16_t) disp) + tcg_abort (); + + return disp & 0xfffc; +} + +static void reloc_pc14 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xfffc) + | reloc_pc14_val (pc, target); +} + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch (type) { + case R_PPC_REL14: + reloc_pc14 (code_ptr, value); + break; + case R_PPC_REL24: + reloc_pc24 (code_ptr, value); + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static int tcg_target_get_call_iarg_regs_count(int flags) +{ + return ARRAY_SIZE (tcg_target_call_iarg_regs); +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'A': case 'B': case 'C': case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, 3 + ct_str[0] - 'A'); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; +#ifdef CONFIG_SOFTMMU + case 'L': /* qemu_ld constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4); + break; + case 'K': /* qemu_st[8..32] constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5); +#if TARGET_LONG_BITS == 64 + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6); +#endif + break; + case 'M': /* qemu_st64 constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7); + break; +#else + case 'L': + case 'K': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; + case 'M': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3); + break; +#endif + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + return 0; +} + +#define OPCD(opc) ((opc)<<26) +#define XO31(opc) (OPCD(31)|((opc)<<1)) +#define XO19(opc) (OPCD(19)|((opc)<<1)) + +#define B OPCD(18) +#define BC OPCD(16) +#define LBZ OPCD(34) +#define LHZ OPCD(40) +#define LHA OPCD(42) +#define LWZ OPCD(32) +#define STB OPCD(38) +#define STH OPCD(44) +#define STW OPCD(36) + +#define ADDI OPCD(14) +#define ADDIS OPCD(15) +#define ORI OPCD(24) +#define ORIS OPCD(25) +#define XORI OPCD(26) +#define XORIS OPCD(27) +#define ANDI OPCD(28) +#define ANDIS OPCD(29) +#define MULLI OPCD( 7) +#define CMPLI OPCD(10) +#define CMPI OPCD(11) + +#define LWZU OPCD(33) +#define STWU OPCD(37) + +#define RLWINM OPCD(21) + +#define BCLR XO19( 16) +#define BCCTR XO19(528) +#define CRAND XO19(257) +#define CRANDC XO19(129) +#define CRNAND XO19(225) +#define CROR XO19(449) + +#define EXTSB XO31(954) +#define EXTSH XO31(922) +#define ADD XO31(266) +#define ADDE XO31(138) +#define ADDC XO31( 10) +#define AND XO31( 28) +#define SUBF XO31( 40) +#define SUBFC XO31( 8) +#define SUBFE XO31(136) +#define OR XO31(444) +#define XOR XO31(316) +#define MULLW XO31(235) +#define MULHWU XO31( 11) +#define DIVW XO31(491) +#define DIVWU XO31(459) +#define CMP XO31( 0) +#define CMPL XO31( 32) +#define LHBRX XO31(790) +#define LWBRX XO31(534) +#define STHBRX XO31(918) +#define STWBRX XO31(662) +#define MFSPR XO31(339) +#define MTSPR XO31(467) +#define SRAWI XO31(824) +#define NEG XO31(104) + +#define LBZX XO31( 87) +#define LHZX XO31(279) +#define LHAX XO31(343) +#define LWZX XO31( 23) +#define STBX XO31(215) +#define STHX XO31(407) +#define STWX XO31(151) + +#define SPR(a,b) ((((a)<<5)|(b))<<11) +#define LR SPR(8, 0) +#define CTR SPR(9, 0) + +#define SLW XO31( 24) +#define SRW XO31(536) +#define SRAW XO31(792) + +#define TW XO31(4) +#define TRAP (TW | TO (31)) + +#define RT(r) ((r)<<21) +#define RS(r) ((r)<<21) +#define RA(r) ((r)<<16) +#define RB(r) ((r)<<11) +#define TO(t) ((t)<<21) +#define SH(s) ((s)<<11) +#define MB(b) ((b)<<6) +#define ME(e) ((e)<<1) +#define BO(o) ((o)<<21) + +#define LK 1 + +#define TAB(t,a,b) (RT(t) | RA(a) | RB(b)) +#define SAB(s,a,b) (RS(s) | RA(a) | RB(b)) + +#define BF(n) ((n)<<23) +#define BI(n, c) (((c)+((n)*4))<<16) +#define BT(n, c) (((c)+((n)*4))<<21) +#define BA(n, c) (((c)+((n)*4))<<16) +#define BB(n, c) (((c)+((n)*4))<<11) + +#define BO_COND_TRUE BO (12) +#define BO_COND_FALSE BO (4) +#define BO_ALWAYS BO (20) + +enum { + CR_LT, + CR_GT, + CR_EQ, + CR_SO +}; + +static const uint32_t tcg_to_bc[10] = { + [TCG_COND_EQ] = BC | BI (7, CR_EQ) | BO_COND_TRUE, + [TCG_COND_NE] = BC | BI (7, CR_EQ) | BO_COND_FALSE, + [TCG_COND_LT] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GE] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LE] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GT] = BC | BI (7, CR_GT) | BO_COND_TRUE, + [TCG_COND_LTU] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GEU] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LEU] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GTU] = BC | BI (7, CR_GT) | BO_COND_TRUE, +}; + +static void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out32 (s, OR | SAB (arg, ret, arg)); +} + +static void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + if (arg == (int16_t) arg) + tcg_out32 (s, ADDI | RT (ret) | RA (0) | (arg & 0xffff)); + else { + tcg_out32 (s, ADDIS | RT (ret) | RA (0) | ((arg >> 16) & 0xffff)); + if (arg & 0xffff) + tcg_out32 (s, ORI | RS (ret) | RA (ret) | (arg & 0xffff)); + } +} + +static void tcg_out_ldst (TCGContext *s, int ret, int addr, + int offset, int op1, int op2) +{ + if (offset == (int16_t) offset) + tcg_out32 (s, op1 | RT (ret) | RA (addr) | (offset & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, offset); + tcg_out32 (s, op2 | RT (ret) | RA (addr) | RB (0)); + } +} + +static void tcg_out_b (TCGContext *s, int mask, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) s->code_ptr; + if ((disp << 6) >> 6 == disp) + tcg_out32 (s, B | (disp & 0x3fffffc) | mask); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, (tcg_target_long) target); + tcg_out32 (s, MTSPR | RS (0) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS | mask); + } +} + +static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg) +{ +#ifdef _AIX + int reg; + + if (const_arg) { + reg = 2; + tcg_out_movi (s, TCG_TYPE_I32, reg, arg); + } + else reg = arg; + + tcg_out32 (s, LWZ | RT (0) | RA (reg)); + tcg_out32 (s, MTSPR | RA (0) | CTR); + tcg_out32 (s, LWZ | RT (2) | RA (reg) | 4); + tcg_out32 (s, BCCTR | BO_ALWAYS | LK); +#else + if (const_arg) { + tcg_out_b (s, LK, arg); + } + else { + tcg_out32 (s, MTSPR | RS (arg) | LR); + tcg_out32 (s, BCLR | BO_ALWAYS | LK); + } +#endif +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, data_reg2, r0, r1, rbase, mem_index, s_bits, bswap; +#ifdef CONFIG_SOFTMMU + int r2; + void *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + s_bits = opc & 3; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out32 (s, (RLWINM + | RA (r0) + | RS (addr_reg) + | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)) + | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS)) + | ME (31 - CPU_TLB_ENTRY_BITS) + ) + ); + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0)); + tcg_out32 (s, (LWZU + | RT (r1) + | RA (r0) + | offsetof (CPUState, tlb_table[mem_index][0].addr_read) + ) + ); + tcg_out32 (s, (RLWINM + | RA (r2) + | RS (addr_reg) + | SH (0) + | MB ((32 - s_bits) & 31) + | ME (31 - TARGET_PAGE_BITS) + ) + ); + + tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1)); +#if TARGET_LONG_BITS == 64 + tcg_out32 (s, LWZ | RT (r1) | RA (r0) | 4); + tcg_out32 (s, CMP | BF (6) | RA (addr_reg2) | RB (r1)); + tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); +#endif + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ +#if TARGET_LONG_BITS == 32 + tcg_out_mov (s, 3, addr_reg); + tcg_out_movi (s, TCG_TYPE_I32, 4, mem_index); +#else + tcg_out_mov (s, 3, addr_reg2); + tcg_out_mov (s, 4, addr_reg); + tcg_out_movi (s, TCG_TYPE_I32, 5, mem_index); +#endif + + tcg_out_call (s, (tcg_target_long) qemu_ld_helpers[s_bits], 1); + switch (opc) { + case 0|4: + tcg_out32 (s, EXTSB | RA (data_reg) | RS (3)); + break; + case 1|4: + tcg_out32 (s, EXTSH | RA (data_reg) | RS (3)); + break; + case 0: + case 1: + case 2: + if (data_reg != 3) + tcg_out_mov (s, data_reg, 3); + break; + case 3: + if (data_reg == 3) { + if (data_reg2 == 4) { + tcg_out_mov (s, 0, 4); + tcg_out_mov (s, 4, 3); + tcg_out_mov (s, 3, 0); + } + else { + tcg_out_mov (s, data_reg2, 3); + tcg_out_mov (s, 3, 4); + } + } + else { + if (data_reg != 4) tcg_out_mov (s, data_reg, 4); + if (data_reg2 != 3) tcg_out_mov (s, data_reg2, 3); + } + break; + } + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + /* r0 now contains &env->tlb_table[mem_index][index].addr_read */ + tcg_out32 (s, (LWZ + | RT (r0) + | RA (r0) + | (ADDEND_OFFSET + offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_read)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ + r0 = addr_reg; + r1 = 3; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + + switch (opc) { + default: + case 0: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + break; + case 0|4: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSB | RA (data_reg) | RS (data_reg)); + break; + case 1: + if (bswap) + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LHZX | TAB (data_reg, rbase, r0)); + break; + case 1|4: + if (bswap) { + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSH | RA (data_reg) | RS (data_reg)); + } + else tcg_out32 (s, LHAX | TAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LWZX | TAB (data_reg, rbase, r0)); + break; + case 3: + if (bswap) { + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, LWBRX | TAB (data_reg2, rbase, r1)); + } + else { +#ifdef CONFIG_USE_GUEST_BASE + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, LWZX | TAB (data_reg2, rbase, r0)); + tcg_out32 (s, LWZX | TAB (data_reg, rbase, r1)); +#else + if (r0 == data_reg2) { + tcg_out32 (s, LWZ | RT (0) | RA (r0)); + tcg_out32 (s, LWZ | RT (data_reg) | RA (r0) | 4); + tcg_out_mov (s, data_reg2, 0); + } + else { + tcg_out32 (s, LWZ | RT (data_reg2) | RA (r0)); + tcg_out32 (s, LWZ | RT (data_reg) | RA (r0) | 4); + } +#endif + } + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, r0, r1, data_reg, data_reg2, mem_index, bswap, rbase; +#ifdef CONFIG_SOFTMMU + int r2, ir; + void *label1_ptr, *label2_ptr; +#endif +#if TARGET_LONG_BITS == 64 + int addr_reg2; +#endif + + data_reg = *args++; + if (opc == 3) + data_reg2 = *args++; + else + data_reg2 = 0; + addr_reg = *args++; +#if TARGET_LONG_BITS == 64 + addr_reg2 = *args++; +#endif + mem_index = *args; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out32 (s, (RLWINM + | RA (r0) + | RS (addr_reg) + | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)) + | MB (32 - (CPU_TLB_ENTRY_BITS + CPU_TLB_BITS)) + | ME (31 - CPU_TLB_ENTRY_BITS) + ) + ); + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0)); + tcg_out32 (s, (LWZU + | RT (r1) + | RA (r0) + | offsetof (CPUState, tlb_table[mem_index][0].addr_write) + ) + ); + tcg_out32 (s, (RLWINM + | RA (r2) + | RS (addr_reg) + | SH (0) + | MB ((32 - opc) & 31) + | ME (31 - TARGET_PAGE_BITS) + ) + ); + + tcg_out32 (s, CMP | (7 << 23) | RA (r2) | RB (r1)); +#if TARGET_LONG_BITS == 64 + tcg_out32 (s, LWZ | RT (r1) | RA (r0) | 4); + tcg_out32 (s, CMP | BF (6) | RA (addr_reg2) | RB (r1)); + tcg_out32 (s, CRAND | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); +#endif + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ +#if TARGET_LONG_BITS == 32 + tcg_out_mov (s, 3, addr_reg); + ir = 4; +#else + tcg_out_mov (s, 3, addr_reg2); + tcg_out_mov (s, 4, addr_reg); +#ifdef TCG_TARGET_CALL_ALIGN_ARGS + ir = 5; +#else + ir = 4; +#endif +#endif + + switch (opc) { + case 0: + tcg_out32 (s, (RLWINM + | RA (ir) + | RS (data_reg) + | SH (0) + | MB (24) + | ME (31))); + break; + case 1: + tcg_out32 (s, (RLWINM + | RA (ir) + | RS (data_reg) + | SH (0) + | MB (16) + | ME (31))); + break; + case 2: + tcg_out_mov (s, ir, data_reg); + break; + case 3: +#ifdef TCG_TARGET_CALL_ALIGN_ARGS + ir = 5; +#endif + tcg_out_mov (s, ir++, data_reg2); + tcg_out_mov (s, ir, data_reg); + break; + } + ir++; + + tcg_out_movi (s, TCG_TYPE_I32, ir, mem_index); + tcg_out_call (s, (tcg_target_long) qemu_st_helpers[opc], 1); + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + tcg_out32 (s, (LWZ + | RT (r0) + | RA (r0) + | (ADDEND_OFFSET + offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_write)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ + r0 = addr_reg; + r1 = 3; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out32 (s, STBX | SAB (data_reg, rbase, r0)); + break; + case 1: + if (bswap) + tcg_out32 (s, STHBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STHX | SAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STWX | SAB (data_reg, rbase, r0)); + break; + case 3: + if (bswap) { + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + tcg_out32 (s, STWBRX | SAB (data_reg2, rbase, r1)); + } + else { +#ifdef CONFIG_USE_GUEST_BASE + tcg_out32 (s, STWX | SAB (data_reg2, rbase, r0)); + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, STWX | SAB (data_reg, rbase, r1)); +#else + tcg_out32 (s, STW | RS (data_reg2) | RA (r0)); + tcg_out32 (s, STW | RS (data_reg) | RA (r0) | 4); +#endif + } + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +void tcg_target_qemu_prologue (TCGContext *s) +{ + int i, frame_size; + + frame_size = 0 + + LINKAGE_AREA_SIZE + + TCG_STATIC_CALL_ARGS_SIZE + + ARRAY_SIZE (tcg_target_callee_save_regs) * 4 + ; + frame_size = (frame_size + 15) & ~15; + +#ifdef _AIX + { + uint32_t addr; + + /* First emit adhoc function descriptor */ + addr = (uint32_t) s->code_ptr + 12; + tcg_out32 (s, addr); /* entry point */ + s->code_ptr += 8; /* skip TOC and environment pointer */ + } +#endif + tcg_out32 (s, MFSPR | RT (0) | LR); + tcg_out32 (s, STWU | RS (1) | RA (1) | (-frame_size & 0xffff)); + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (STW + | RS (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 4 + LINKAGE_AREA_SIZE + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, STW | RS (0) | RA (1) | (frame_size + LR_OFFSET)); + +#ifdef CONFIG_USE_GUEST_BASE + tcg_out_movi (s, TCG_TYPE_I32, TCG_GUEST_BASE_REG, GUEST_BASE); +#endif + + tcg_out32 (s, MTSPR | RS (3) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + tb_ret_addr = s->code_ptr; + + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (LWZ + | RT (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 4 + LINKAGE_AREA_SIZE + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, LWZ | RT (0) | RA (1) | (frame_size + LR_OFFSET)); + tcg_out32 (s, MTSPR | RS (0) | LR); + tcg_out32 (s, ADDI | RT (1) | RA (1) | frame_size); + tcg_out32 (s, BCLR | BO_ALWAYS); +} + +static void tcg_out_ld (TCGContext *s, TCGType type, int ret, int arg1, + tcg_target_long arg2) +{ + tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX); +} + +static void tcg_out_st (TCGContext *s, TCGType type, int arg, int arg1, + tcg_target_long arg2) +{ + tcg_out_ldst (s, arg, arg1, arg2, STW, STWX); +} + +static void ppc_addi (TCGContext *s, int rt, int ra, tcg_target_long si) +{ + if (!si && rt == ra) + return; + + if (si == (int16_t) si) + tcg_out32 (s, ADDI | RT (rt) | RA (ra) | (si & 0xffff)); + else { + uint16_t h = ((si >> 16) & 0xffff) + ((uint16_t) si >> 15); + tcg_out32 (s, ADDIS | RT (rt) | RA (ra) | h); + tcg_out32 (s, ADDI | RT (rt) | RA (rt) | (si & 0xffff)); + } +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + ppc_addi (s, reg, reg, val); +} + +static void tcg_out_cmp (TCGContext *s, int cond, TCGArg arg1, TCGArg arg2, + int const_arg2, int cr) +{ + int imm; + uint32_t op; + + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_NE: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + else if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + case TCG_COND_LT: + case TCG_COND_GE: + case TCG_COND_LE: + case TCG_COND_GT: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + } + op = CMP; + imm = 0; + break; + + case TCG_COND_LTU: + case TCG_COND_GEU: + case TCG_COND_LEU: + case TCG_COND_GTU: + if (const_arg2) { + if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + default: + tcg_abort (); + } + op |= BF (cr); + + if (imm) + tcg_out32 (s, op | RA (arg1) | (arg2 & 0xffff)); + else { + if (const_arg2) { + tcg_out_movi (s, TCG_TYPE_I32, 0, arg2); + tcg_out32 (s, op | RA (arg1) | RB (0)); + } + else + tcg_out32 (s, op | RA (arg1) | RB (arg2)); + } + +} + +static void tcg_out_bc (TCGContext *s, int bc, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) + tcg_out32 (s, bc | reloc_pc14_val (s->code_ptr, l->u.value)); + else { + uint16_t val = *(uint16_t *) &s->code_ptr[2]; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, bc | (val & 0xfffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL14, label_index, 0); + } +} + +static void tcg_out_brcond (TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + tcg_out_cmp (s, cond, arg1, arg2, const_arg2, 7); + tcg_out_bc (s, tcg_to_bc[cond], label_index); +} + +/* XXX: we implement it at the target level to avoid having to + handle cross basic blocks temporaries */ +static void tcg_out_brcond2 (TCGContext *s, const TCGArg *args, + const int *const_args) +{ + int cond = args[4], label_index = args[5], op; + struct { int bit1; int bit2; int cond2; } bits[] = { + [TCG_COND_LT ] = { CR_LT, CR_LT, TCG_COND_LT }, + [TCG_COND_LE ] = { CR_LT, CR_GT, TCG_COND_LT }, + [TCG_COND_GT ] = { CR_GT, CR_GT, TCG_COND_GT }, + [TCG_COND_GE ] = { CR_GT, CR_LT, TCG_COND_GT }, + [TCG_COND_LTU] = { CR_LT, CR_LT, TCG_COND_LTU }, + [TCG_COND_LEU] = { CR_LT, CR_GT, TCG_COND_LTU }, + [TCG_COND_GTU] = { CR_GT, CR_GT, TCG_COND_GTU }, + [TCG_COND_GEU] = { CR_GT, CR_LT, TCG_COND_GTU }, + }, *b = &bits[cond]; + + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_NE: + op = (cond == TCG_COND_EQ) ? CRAND : CRNAND; + tcg_out_cmp (s, cond, args[0], args[2], const_args[2], 6); + tcg_out_cmp (s, cond, args[1], args[3], const_args[3], 7); + tcg_out32 (s, op | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, CR_EQ)); + break; + case TCG_COND_LT: + case TCG_COND_LE: + case TCG_COND_GT: + case TCG_COND_GE: + case TCG_COND_LTU: + case TCG_COND_LEU: + case TCG_COND_GTU: + case TCG_COND_GEU: + op = (b->bit1 != b->bit2) ? CRANDC : CRAND; + tcg_out_cmp (s, b->cond2, args[1], args[3], const_args[3], 5); + tcg_out_cmp (s, TCG_COND_EQ, args[1], args[3], const_args[3], 6); + tcg_out_cmp (s, cond, args[0], args[2], const_args[2], 7); + tcg_out32 (s, op | BT (7, CR_EQ) | BA (6, CR_EQ) | BB (7, b->bit2)); + tcg_out32 (s, CROR | BT (7, CR_EQ) | BA (5, b->bit1) | BB (7, CR_EQ)); + break; + default: + tcg_abort(); + } + + tcg_out_bc (s, (BC | BI (7, CR_EQ) | BO_COND_TRUE), label_index); +} + +void ppc_tb_set_jmp_target (unsigned long jmp_addr, unsigned long addr) +{ + uint32_t *ptr; + long disp = addr - jmp_addr; + unsigned long patch_size; + + ptr = (uint32_t *)jmp_addr; + + if ((disp << 6) >> 6 != disp) { + ptr[0] = 0x3c000000 | (addr >> 16); /* lis 0,addr@ha */ + ptr[1] = 0x60000000 | (addr & 0xffff); /* la 0,addr@l(0) */ + ptr[2] = 0x7c0903a6; /* mtctr 0 */ + ptr[3] = 0x4e800420; /* brctr */ + patch_size = 16; + } else { + /* patch the branch destination */ + if (disp != 16) { + *ptr = 0x48000000 | (disp & 0x03fffffc); /* b disp */ + patch_size = 4; + } else { + ptr[0] = 0x60000000; /* nop */ + ptr[1] = 0x60000000; + ptr[2] = 0x60000000; + ptr[3] = 0x60000000; + patch_size = 16; + } + } + /* flush icache */ + flush_icache_range(jmp_addr, jmp_addr + patch_size); +} + +static void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi (s, TCG_TYPE_I32, TCG_REG_R3, args[0]); + tcg_out_b (s, 0, (tcg_target_long) tb_ret_addr); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + s->code_ptr += 16; + } + else { + tcg_abort (); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_br: + { + TCGLabel *l = &s->labels[args[0]]; + + if (l->has_value) { + tcg_out_b (s, 0, l->u.value); + } + else { + uint32_t val = *(uint32_t *) s->code_ptr; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, B | (val & 0x3fffffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL24, args[0], 0); + } + } + break; + case INDEX_op_call: + tcg_out_call (s, args[0], const_args[0]); + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out_b (s, 0, args[0]); + } + else { + tcg_out32 (s, MTSPR | RS (args[0]) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + } + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + break; + case INDEX_op_ld8s_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + tcg_out32 (s, EXTSB | RS (args[0]) | RA (args[0])); + break; + case INDEX_op_ld16u_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LHZ, LHZX); + break; + case INDEX_op_ld16s_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LHA, LHAX); + break; + case INDEX_op_ld_i32: + tcg_out_ldst (s, args[0], args[1], args[2], LWZ, LWZX); + break; + case INDEX_op_st8_i32: + tcg_out_ldst (s, args[0], args[1], args[2], STB, STBX); + break; + case INDEX_op_st16_i32: + tcg_out_ldst (s, args[0], args[1], args[2], STH, STHX); + break; + case INDEX_op_st_i32: + tcg_out_ldst (s, args[0], args[1], args[2], STW, STWX); + break; + + case INDEX_op_add_i32: + if (const_args[2]) + ppc_addi (s, args[0], args[1], args[2]); + else + tcg_out32 (s, ADD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_sub_i32: + if (const_args[2]) + ppc_addi (s, args[0], args[1], -args[2]); + else + tcg_out32 (s, SUBF | TAB (args[0], args[2], args[1])); + break; + + case INDEX_op_and_i32: + if (const_args[2]) { + uint32_t c; + + c = args[2]; + + if (!c) { + tcg_out_movi (s, TCG_TYPE_I32, args[0], 0); + break; + } +#ifdef __PPU__ + uint32_t t, n; + int mb, me; + + n = c ^ -(c & 1); + t = n + (n & -n); + + if ((t & (t - 1)) == 0) { + int lzc, tzc; + + if ((c & 0x80000001) == 0x80000001) { + lzc = clz32 (n); + tzc = ctz32 (n); + + mb = 32 - tzc; + me = lzc - 1; + } + else { + lzc = clz32 (c); + tzc = ctz32 (c); + + mb = lzc; + me = 31 - tzc; + } + + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (0) + | MB (mb) + | ME (me) + ) + ); + } + else +#endif /* !__PPU__ */ + { + if ((c & 0xffff) == c) + tcg_out32 (s, ANDI | RS (args[1]) | RA (args[0]) | c); + else if ((c & 0xffff0000) == c) + tcg_out32 (s, ANDIS | RS (args[1]) | RA (args[0]) + | ((c >> 16) & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, c); + tcg_out32 (s, AND | SAB (args[1], args[0], 0)); + } + } + } + else + tcg_out32 (s, AND | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_or_i32: + if (const_args[2]) { + if (args[2] & 0xffff) { + tcg_out32 (s, ORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + if (args[2] >> 16) + tcg_out32 (s, ORIS | RS (args[0]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + else { + tcg_out32 (s, ORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + } + else + tcg_out32 (s, OR | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_xor_i32: + if (const_args[2]) { + if ((args[2] & 0xffff) == args[2]) + tcg_out32 (s, XORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + else if ((args[2] & 0xffff0000) == args[2]) + tcg_out32 (s, XORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, args[2]); + tcg_out32 (s, XOR | SAB (args[1], args[0], 0)); + } + } + else + tcg_out32 (s, XOR | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_mul_i32: + if (const_args[2]) { + if (args[2] == (int16_t) args[2]) + tcg_out32 (s, MULLI | RT (args[0]) | RA (args[1]) + | (args[2] & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, args[2]); + tcg_out32 (s, MULLW | TAB (args[0], args[1], 0)); + } + } + else + tcg_out32 (s, MULLW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_div_i32: + tcg_out32 (s, DIVW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_divu_i32: + tcg_out32 (s, DIVWU | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_rem_i32: + tcg_out32 (s, DIVW | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_remu_i32: + tcg_out32 (s, DIVWU | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_mulu2_i32: + if (args[0] == args[2] || args[0] == args[3]) { + tcg_out32 (s, MULLW | TAB (0, args[2], args[3])); + tcg_out32 (s, MULHWU | TAB (args[1], args[2], args[3])); + tcg_out_mov (s, args[0], 0); + } + else { + tcg_out32 (s, MULLW | TAB (args[0], args[2], args[3])); + tcg_out32 (s, MULHWU | TAB (args[1], args[2], args[3])); + } + break; + + case INDEX_op_shl_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (args[2]) + | MB (0) + | ME (31 - args[2]) + ) + ); + } + else + tcg_out32 (s, SLW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_shr_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (32 - args[2]) + | MB (args[2]) + | ME (31) + ) + ); + } + else + tcg_out32 (s, SRW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_sar_i32: + if (const_args[2]) + tcg_out32 (s, SRAWI | RS (args[1]) | RA (args[0]) | SH (args[2])); + else + tcg_out32 (s, SRAW | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_add2_i32: + if (args[0] == args[3] || args[0] == args[5]) { + tcg_out32 (s, ADDC | TAB (0, args[2], args[4])); + tcg_out32 (s, ADDE | TAB (args[1], args[3], args[5])); + tcg_out_mov (s, args[0], 0); + } + else { + tcg_out32 (s, ADDC | TAB (args[0], args[2], args[4])); + tcg_out32 (s, ADDE | TAB (args[1], args[3], args[5])); + } + break; + case INDEX_op_sub2_i32: + if (args[0] == args[3] || args[0] == args[5]) { + tcg_out32 (s, SUBFC | TAB (0, args[4], args[2])); + tcg_out32 (s, SUBFE | TAB (args[1], args[5], args[3])); + tcg_out_mov (s, args[0], 0); + } + else { + tcg_out32 (s, SUBFC | TAB (args[0], args[4], args[2])); + tcg_out32 (s, SUBFE | TAB (args[1], args[5], args[3])); + } + break; + + case INDEX_op_brcond_i32: + /* + args[0] = r0 + args[1] = r1 + args[2] = cond + args[3] = r1 is const + args[4] = label_index + */ + tcg_out_brcond (s, args[2], args[0], args[1], const_args[1], args[3]); + break; + case INDEX_op_brcond2_i32: + tcg_out_brcond2(s, args, const_args); + break; + + case INDEX_op_neg_i32: + tcg_out32 (s, NEG | RT (args[0]) | RA (args[1])); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + case INDEX_op_ext8s_i32: + tcg_out32 (s, EXTSB | RS (args[1]) | RA (args[0])); + break; + case INDEX_op_ext16s_i32: + tcg_out32 (s, EXTSH | RS (args[1]) | RA (args[0])); + break; + + default: + tcg_dump_ops (s, stderr); + tcg_abort (); + } +} + +static const TCGTargetOpDef ppc_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "ri" } }, + { INDEX_op_mul_i32, { "r", "r", "ri" } }, + { INDEX_op_div_i32, { "r", "r", "r" } }, + { INDEX_op_divu_i32, { "r", "r", "r" } }, + { INDEX_op_rem_i32, { "r", "r", "r" } }, + { INDEX_op_remu_i32, { "r", "r", "r" } }, + { INDEX_op_mulu2_i32, { "r", "r", "r", "r" } }, + { INDEX_op_sub_i32, { "r", "r", "ri" } }, + { INDEX_op_and_i32, { "r", "r", "ri" } }, + { INDEX_op_or_i32, { "r", "r", "ri" } }, + { INDEX_op_xor_i32, { "r", "r", "ri" } }, + + { INDEX_op_shl_i32, { "r", "r", "ri" } }, + { INDEX_op_shr_i32, { "r", "r", "ri" } }, + { INDEX_op_sar_i32, { "r", "r", "ri" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + + { INDEX_op_add2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_sub2_i32, { "r", "r", "r", "r", "r", "r" } }, + { INDEX_op_brcond2_i32, { "r", "r", "r", "r" } }, + + { INDEX_op_neg_i32, { "r", "r" } }, + +#if TARGET_LONG_BITS == 32 + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "r", "L" } }, + + { INDEX_op_qemu_st8, { "K", "K" } }, + { INDEX_op_qemu_st16, { "K", "K" } }, + { INDEX_op_qemu_st32, { "K", "K" } }, + { INDEX_op_qemu_st64, { "M", "M", "M" } }, +#else + { INDEX_op_qemu_ld8u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L", "L" } }, + { INDEX_op_qemu_ld64, { "r", "L", "L", "L" } }, + + { INDEX_op_qemu_st8, { "K", "K", "K" } }, + { INDEX_op_qemu_st16, { "K", "K", "K" } }, + { INDEX_op_qemu_st32, { "K", "K", "K" } }, + { INDEX_op_qemu_st64, { "M", "M", "M", "M" } }, +#endif + + { INDEX_op_ext8s_i32, { "r", "r" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_R0) | +#ifdef __APPLE__ + (1 << TCG_REG_R2) | +#endif + (1 << TCG_REG_R3) | + (1 << TCG_REG_R4) | + (1 << TCG_REG_R5) | + (1 << TCG_REG_R6) | + (1 << TCG_REG_R7) | + (1 << TCG_REG_R8) | + (1 << TCG_REG_R9) | + (1 << TCG_REG_R10) | + (1 << TCG_REG_R11) | + (1 << TCG_REG_R12) + ); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R0); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R1); +#ifndef __APPLE__ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R2); +#endif +#ifdef __linux__ + tcg_regset_set_reg(s->reserved_regs, TCG_REG_R13); +#endif +#ifdef CONFIG_USE_GUEST_BASE + tcg_regset_set_reg(s->reserved_regs, TCG_GUEST_BASE_REG); +#endif + + tcg_add_target_add_op_defs(ppc_op_defs); +} diff --git a/qemu/qemu-git/tcg/ppc/tcg-target.h b/qemu/qemu-git/tcg/ppc/tcg-target.h new file mode 100644 index 0000000..0197e79 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc/tcg-target.h @@ -0,0 +1,89 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_PPC 1 + +#define TCG_TARGET_REG_BITS 32 +#define TCG_TARGET_WORDS_BIGENDIAN +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R1 +#define TCG_TARGET_STACK_ALIGN 16 +#if defined __APPLE__ +#define TCG_TARGET_CALL_STACK_OFFSET 24 +#elif defined _AIX +#define TCG_TARGET_CALL_STACK_OFFSET 52 +#elif defined __linux__ +#define TCG_TARGET_CALL_ALIGN_ARGS 1 +#define TCG_TARGET_CALL_STACK_OFFSET 8 +#else +#error Unsupported system +#endif + +/* optional instructions */ +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 + +#define TCG_AREG0 TCG_REG_R27 +#define TCG_AREG1 TCG_REG_R24 +#define TCG_AREG2 TCG_REG_R25 + +#define TCG_TARGET_HAS_GUEST_BASE diff --git a/qemu/qemu-git/tcg/ppc64/.svn/all-wcprops b/qemu/qemu-git/tcg/ppc64/.svn/all-wcprops new file mode 100644 index 0000000..283c770 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc64/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/ppc64 +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 62 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/ppc64/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/ppc64/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/ppc64/.svn/entries b/qemu/qemu-git/tcg/ppc64/.svn/entries new file mode 100644 index 0000000..d5aae10 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc64/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/ppc64 +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +89a4d5db0bf452bffd14e2d50214d6b6 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +44198 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +0e7b6224bdda2c765280c10fdb2372a1 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +2427 + diff --git a/qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..803db48 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,1570 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define TCG_CT_CONST_U32 0x100 + +static uint8_t *tb_ret_addr; + +#define FAST_PATH + +#if TARGET_PHYS_ADDR_BITS == 32 +#define LD_ADDEND LWZ +#else +#define LD_ADDEND LD +#endif + +#if TARGET_LONG_BITS == 32 +#define LD_ADDR LWZU +#define CMP_L 0 +#else +#define LD_ADDR LDU +#define CMP_L (1<<21) +#endif + +#ifndef GUEST_BASE +#define GUEST_BASE 0 +#endif + +#ifdef CONFIG_USE_GUEST_BASE +#define TCG_GUEST_BASE_REG 30 +#else +#define TCG_GUEST_BASE_REG 0 +#endif + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "r0", + "r1", + "rp", + "r3", + "r4", + "r5", + "r6", + "r7", + "r8", + "r9", + "r10", + "r11", + "r12", + "r13", + "r14", + "r15", + "r16", + "r17", + "r18", + "r19", + "r20", + "r21", + "r22", + "r23", + "r24", + "r25", + "r26", + "r27", + "r28", + "r29", + "r30", + "r31" +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31, +#ifdef __APPLE__ + TCG_REG_R2, +#endif + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, +#ifndef __APPLE__ + TCG_REG_R11, +#endif + TCG_REG_R12, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27 +}; + +static const int tcg_target_call_iarg_regs[] = { + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10 +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_R3 +}; + +static const int tcg_target_callee_save_regs[] = { +#ifdef __APPLE__ + TCG_REG_R11, +#endif + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + /* TCG_REG_R27, */ /* currently used for the global env, so no + need to save */ + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +static uint32_t reloc_pc24_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if ((disp << 38) >> 38 != disp) + tcg_abort (); + + return disp & 0x3fffffc; +} + +static void reloc_pc24 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3fffffc) + | reloc_pc24_val (pc, target); +} + +static uint16_t reloc_pc14_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if (disp != (int16_t) disp) + tcg_abort (); + + return disp & 0xfffc; +} + +static void reloc_pc14 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xfffc) + | reloc_pc14_val (pc, target); +} + +static void patch_reloc (uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch (type) { + case R_PPC_REL14: + reloc_pc14 (code_ptr, value); + break; + case R_PPC_REL24: + reloc_pc24 (code_ptr, value); + break; + default: + tcg_abort (); + } +} + +/* maximum number of register used for input function arguments */ +static int tcg_target_get_call_iarg_regs_count (int flags) +{ + return ARRAY_SIZE (tcg_target_call_iarg_regs); +} + +/* parse target specific constraints */ +static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'A': case 'B': case 'C': case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg (ct->u.regs, 3 + ct_str[0] - 'A'); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32 (ct->u.regs, 0, 0xffffffff); + break; + case 'L': /* qemu_ld constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32 (ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R3); +#ifdef CONFIG_SOFTMMU + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4); +#endif + break; + case 'S': /* qemu_st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32 (ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R3); +#ifdef CONFIG_SOFTMMU + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4); + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5); +#endif + break; + case 'Z': + ct->ct |= TCG_CT_CONST_U32; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static int tcg_target_const_match (tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_U32) && (val == (uint32_t) val)) + return 1; + return 0; +} + +#define OPCD(opc) ((opc)<<26) +#define XO19(opc) (OPCD(19)|((opc)<<1)) +#define XO30(opc) (OPCD(30)|((opc)<<2)) +#define XO31(opc) (OPCD(31)|((opc)<<1)) +#define XO58(opc) (OPCD(58)|(opc)) +#define XO62(opc) (OPCD(62)|(opc)) + +#define B OPCD( 18) +#define BC OPCD( 16) +#define LBZ OPCD( 34) +#define LHZ OPCD( 40) +#define LHA OPCD( 42) +#define LWZ OPCD( 32) +#define STB OPCD( 38) +#define STH OPCD( 44) +#define STW OPCD( 36) + +#define STD XO62( 0) +#define STDU XO62( 1) +#define STDX XO31(149) + +#define LD XO58( 0) +#define LDX XO31( 21) +#define LDU XO58( 1) +#define LWA XO58( 2) +#define LWAX XO31(341) + +#define ADDI OPCD( 14) +#define ADDIS OPCD( 15) +#define ORI OPCD( 24) +#define ORIS OPCD( 25) +#define XORI OPCD( 26) +#define XORIS OPCD( 27) +#define ANDI OPCD( 28) +#define ANDIS OPCD( 29) +#define MULLI OPCD( 7) +#define CMPLI OPCD( 10) +#define CMPI OPCD( 11) + +#define LWZU OPCD( 33) +#define STWU OPCD( 37) + +#define RLWINM OPCD( 21) + +#define RLDICL XO30( 0) +#define RLDICR XO30( 1) +#define RLDIMI XO30( 3) + +#define BCLR XO19( 16) +#define BCCTR XO19(528) +#define CRAND XO19(257) +#define CRANDC XO19(129) +#define CRNAND XO19(225) +#define CROR XO19(449) + +#define EXTSB XO31(954) +#define EXTSH XO31(922) +#define EXTSW XO31(986) +#define ADD XO31(266) +#define ADDE XO31(138) +#define ADDC XO31( 10) +#define AND XO31( 28) +#define SUBF XO31( 40) +#define SUBFC XO31( 8) +#define SUBFE XO31(136) +#define OR XO31(444) +#define XOR XO31(316) +#define MULLW XO31(235) +#define MULHWU XO31( 11) +#define DIVW XO31(491) +#define DIVWU XO31(459) +#define CMP XO31( 0) +#define CMPL XO31( 32) +#define LHBRX XO31(790) +#define LWBRX XO31(534) +#define STHBRX XO31(918) +#define STWBRX XO31(662) +#define MFSPR XO31(339) +#define MTSPR XO31(467) +#define SRAWI XO31(824) +#define NEG XO31(104) + +#define MULLD XO31(233) +#define MULHD XO31( 73) +#define MULHDU XO31( 9) +#define DIVD XO31(489) +#define DIVDU XO31(457) + +#define LBZX XO31( 87) +#define LHZX XO31(279) +#define LHAX XO31(343) +#define LWZX XO31( 23) +#define STBX XO31(215) +#define STHX XO31(407) +#define STWX XO31(151) + +#define SPR(a,b) ((((a)<<5)|(b))<<11) +#define LR SPR(8, 0) +#define CTR SPR(9, 0) + +#define SLW XO31( 24) +#define SRW XO31(536) +#define SRAW XO31(792) + +#define SLD XO31( 27) +#define SRD XO31(539) +#define SRAD XO31(794) +#define SRADI XO31(413<<1) + +#define TW XO31( 4) +#define TRAP (TW | TO (31)) + +#define RT(r) ((r)<<21) +#define RS(r) ((r)<<21) +#define RA(r) ((r)<<16) +#define RB(r) ((r)<<11) +#define TO(t) ((t)<<21) +#define SH(s) ((s)<<11) +#define MB(b) ((b)<<6) +#define ME(e) ((e)<<1) +#define BO(o) ((o)<<21) +#define MB64(b) ((b)<<5) + +#define LK 1 + +#define TAB(t,a,b) (RT(t) | RA(a) | RB(b)) +#define SAB(s,a,b) (RS(s) | RA(a) | RB(b)) + +#define BF(n) ((n)<<23) +#define BI(n, c) (((c)+((n)*4))<<16) +#define BT(n, c) (((c)+((n)*4))<<21) +#define BA(n, c) (((c)+((n)*4))<<16) +#define BB(n, c) (((c)+((n)*4))<<11) + +#define BO_COND_TRUE BO (12) +#define BO_COND_FALSE BO ( 4) +#define BO_ALWAYS BO (20) + +enum { + CR_LT, + CR_GT, + CR_EQ, + CR_SO +}; + +static const uint32_t tcg_to_bc[10] = { + [TCG_COND_EQ] = BC | BI (7, CR_EQ) | BO_COND_TRUE, + [TCG_COND_NE] = BC | BI (7, CR_EQ) | BO_COND_FALSE, + [TCG_COND_LT] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GE] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LE] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GT] = BC | BI (7, CR_GT) | BO_COND_TRUE, + [TCG_COND_LTU] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GEU] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LEU] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GTU] = BC | BI (7, CR_GT) | BO_COND_TRUE, +}; + +static void tcg_out_mov (TCGContext *s, int ret, int arg) +{ + tcg_out32 (s, OR | SAB (arg, ret, arg)); +} + +static void tcg_out_rld (TCGContext *s, int op, int ra, int rs, int sh, int mb) +{ + sh = SH (sh & 0x1f) | (((sh >> 5) & 1) << 1); + mb = MB64 ((mb >> 5) | ((mb << 1) & 0x3f)); + tcg_out32 (s, op | RA (ra) | RS (rs) | sh | mb); +} + +static void tcg_out_movi32 (TCGContext *s, int ret, int32_t arg) +{ + if (arg == (int16_t) arg) + tcg_out32 (s, ADDI | RT (ret) | RA (0) | (arg & 0xffff)); + else { + tcg_out32 (s, ADDIS | RT (ret) | RA (0) | ((arg >> 16) & 0xffff)); + if (arg & 0xffff) + tcg_out32 (s, ORI | RS (ret) | RA (ret) | (arg & 0xffff)); + } +} + +static void tcg_out_movi (TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + int32_t arg32 = arg; + arg = type == TCG_TYPE_I32 ? arg & 0xffffffff : arg; + + if (arg == arg32) { + tcg_out_movi32 (s, ret, arg32); + } + else { + if ((uint64_t) arg >> 32) { + uint16_t h16 = arg >> 16; + uint16_t l16 = arg; + + tcg_out_movi32 (s, ret, arg >> 32); + tcg_out_rld (s, RLDICR, ret, ret, 32, 31); + if (h16) tcg_out32 (s, ORIS | RS (ret) | RA (ret) | h16); + if (l16) tcg_out32 (s, ORI | RS (ret) | RA (ret) | l16); + } + else { + tcg_out_movi32 (s, ret, arg32); + if (arg32 < 0) + tcg_out_rld (s, RLDICL, ret, ret, 0, 32); + } + } +} + +static void tcg_out_b (TCGContext *s, int mask, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) s->code_ptr; + if ((disp << 38) >> 38 == disp) + tcg_out32 (s, B | (disp & 0x3fffffc) | mask); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, (tcg_target_long) target); + tcg_out32 (s, MTSPR | RS (0) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS | mask); + } +} + +static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg) +{ +#ifdef __APPLE__ + if (const_arg) { + tcg_out_b (s, LK, arg); + } + else { + tcg_out32 (s, MTSPR | RS (arg) | LR); + tcg_out32 (s, BCLR | BO_ALWAYS | LK); + } +#else + int reg; + + if (const_arg) { + reg = 2; + tcg_out_movi (s, TCG_TYPE_I64, reg, arg); + } + else reg = arg; + + tcg_out32 (s, LD | RT (0) | RA (reg)); + tcg_out32 (s, MTSPR | RA (0) | CTR); + tcg_out32 (s, LD | RT (11) | RA (reg) | 16); + tcg_out32 (s, LD | RT (2) | RA (reg) | 8); + tcg_out32 (s, BCCTR | BO_ALWAYS | LK); +#endif +} + +static void tcg_out_ldst (TCGContext *s, int ret, int addr, + int offset, int op1, int op2) +{ + if (offset == (int16_t) offset) + tcg_out32 (s, op1 | RT (ret) | RA (addr) | (offset & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, offset); + tcg_out32 (s, op2 | RT (ret) | RA (addr) | RB (0)); + } +} + +static void tcg_out_ldsta (TCGContext *s, int ret, int addr, + int offset, int op1, int op2) +{ + if (offset == (int16_t) (offset & ~3)) + tcg_out32 (s, op1 | RT (ret) | RA (addr) | (offset & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, offset); + tcg_out32 (s, op2 | RT (ret) | RA (addr) | RB (0)); + } +} + +#if defined (CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; + +static void tcg_out_tlb_read (TCGContext *s, int r0, int r1, int r2, + int addr_reg, int s_bits, int offset) +{ +#if TARGET_LONG_BITS == 32 + tcg_out_rld (s, RLDICL, addr_reg, addr_reg, 0, 32); + + tcg_out32 (s, (RLWINM + | RA (r0) + | RS (addr_reg) + | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)) + | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS)) + | ME (31 - CPU_TLB_ENTRY_BITS) + ) + ); + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0)); + tcg_out32 (s, (LWZU | RT (r1) | RA (r0) | offset)); + tcg_out32 (s, (RLWINM + | RA (r2) + | RS (addr_reg) + | SH (0) + | MB ((32 - s_bits) & 31) + | ME (31 - TARGET_PAGE_BITS) + ) + ); +#else + tcg_out_rld (s, RLDICL, r0, addr_reg, + 64 - TARGET_PAGE_BITS, + 64 - CPU_TLB_BITS); + tcg_out_rld (s, RLDICR, r0, r0, + CPU_TLB_ENTRY_BITS, + 63 - CPU_TLB_ENTRY_BITS); + + tcg_out32 (s, ADD | TAB (r0, r0, TCG_AREG0)); + tcg_out32 (s, LD_ADDR | RT (r1) | RA (r0) | offset); + + if (!s_bits) { + tcg_out_rld (s, RLDICR, r2, addr_reg, 0, 63 - TARGET_PAGE_BITS); + } + else { + tcg_out_rld (s, RLDICL, r2, addr_reg, + 64 - TARGET_PAGE_BITS, + TARGET_PAGE_BITS - s_bits); + tcg_out_rld (s, RLDICL, r2, r2, TARGET_PAGE_BITS, 0); + } +#endif +} +#endif + +static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, r0, r1, rbase, mem_index, s_bits, bswap; +#ifdef CONFIG_SOFTMMU + int r2; + void *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + s_bits = opc & 3; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out_tlb_read (s, r0, r1, r2, addr_reg, s_bits, + offsetof (CPUState, tlb_table[mem_index][0].addr_read)); + + tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1) | CMP_L); + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ + tcg_out_mov (s, 3, addr_reg); + tcg_out_movi (s, TCG_TYPE_I64, 4, mem_index); + + tcg_out_call (s, (tcg_target_long) qemu_ld_helpers[s_bits], 1); + + switch (opc) { + case 0|4: + tcg_out32 (s, EXTSB | RA (data_reg) | RS (3)); + break; + case 1|4: + tcg_out32 (s, EXTSH | RA (data_reg) | RS (3)); + break; + case 2|4: + tcg_out32 (s, EXTSW | RA (data_reg) | RS (3)); + break; + case 0: + case 1: + case 2: + case 3: + if (data_reg != 3) + tcg_out_mov (s, data_reg, 3); + break; + } + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + /* r0 now contains &env->tlb_table[mem_index][index].addr_read */ + tcg_out32 (s, (LD_ADDEND + | RT (r0) + | RA (r0) + | (offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_read)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ +#if TARGET_LONG_BITS == 32 + tcg_out_rld (s, RLDICL, addr_reg, addr_reg, 0, 32); +#endif + r0 = addr_reg; + r1 = 3; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + default: + case 0: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + break; + case 0|4: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSB | RA (data_reg) | RS (data_reg)); + break; + case 1: + if (bswap) + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LHZX | TAB (data_reg, rbase, r0)); + break; + case 1|4: + if (bswap) { + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSH | RA (data_reg) | RS (data_reg)); + } + else tcg_out32 (s, LHAX | TAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LWZX | TAB (data_reg, rbase, r0)); + break; + case 2|4: + if (bswap) { + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSW | RA (data_reg) | RS (data_reg)); + } + else tcg_out32 (s, LWAX | TAB (data_reg, rbase, r0)); + break; + case 3: +#ifdef CONFIG_USE_GUEST_BASE + if (bswap) { + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, LWBRX | TAB ( r1, rbase, r1)); + tcg_out_rld (s, RLDIMI, data_reg, r1, 32, 0); + } + else tcg_out32 (s, LDX | TAB (data_reg, rbase, r0)); +#else + if (bswap) { + tcg_out_movi32 (s, 0, 4); + tcg_out32 (s, LWBRX | RT (data_reg) | RB (r0)); + tcg_out32 (s, LWBRX | RT ( r1) | RA (r0)); + tcg_out_rld (s, RLDIMI, data_reg, r1, 32, 0); + } + else tcg_out32 (s, LD | RT (data_reg) | RA (r0)); +#endif + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, r0, r1, rbase, data_reg, mem_index, bswap; +#ifdef CONFIG_SOFTMMU + int r2; + void *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out_tlb_read (s, r0, r1, r2, addr_reg, opc, + offsetof (CPUState, tlb_table[mem_index][0].addr_write)); + + tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1) | CMP_L); + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ + tcg_out_mov (s, 3, addr_reg); + tcg_out_rld (s, RLDICL, 4, data_reg, 0, 64 - (1 << (3 + opc))); + tcg_out_movi (s, TCG_TYPE_I64, 5, mem_index); + + tcg_out_call (s, (tcg_target_long) qemu_st_helpers[opc], 1); + + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + tcg_out32 (s, (LD_ADDEND + | RT (r0) + | RA (r0) + | (offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_write)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ +#if TARGET_LONG_BITS == 32 + tcg_out_rld (s, RLDICL, addr_reg, addr_reg, 0, 32); +#endif + r1 = 3; + r0 = addr_reg; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out32 (s, STBX | SAB (data_reg, rbase, r0)); + break; + case 1: + if (bswap) + tcg_out32 (s, STHBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STHX | SAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STWX | SAB (data_reg, rbase, r0)); + break; + case 3: + if (bswap) { + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out_rld (s, RLDICL, 0, data_reg, 32, 0); + tcg_out32 (s, STWBRX | SAB (0, rbase, r1)); + } + else tcg_out32 (s, STDX | SAB (data_reg, rbase, r0)); + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +void tcg_target_qemu_prologue (TCGContext *s) +{ + int i, frame_size; +#ifndef __APPLE__ + uint64_t addr; +#endif + + frame_size = 0 + + 8 /* back chain */ + + 8 /* CR */ + + 8 /* LR */ + + 8 /* compiler doubleword */ + + 8 /* link editor doubleword */ + + 8 /* TOC save area */ + + TCG_STATIC_CALL_ARGS_SIZE + + ARRAY_SIZE (tcg_target_callee_save_regs) * 8 + ; + frame_size = (frame_size + 15) & ~15; + +#ifndef __APPLE__ + /* First emit adhoc function descriptor */ + addr = (uint64_t) s->code_ptr + 24; + tcg_out32 (s, addr >> 32); tcg_out32 (s, addr); /* entry point */ + s->code_ptr += 16; /* skip TOC and environment pointer */ +#endif + + /* Prologue */ + tcg_out32 (s, MFSPR | RT (0) | LR); + tcg_out32 (s, STDU | RS (1) | RA (1) | (-frame_size & 0xffff)); + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (STD + | RS (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 8 + 48 + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, STD | RS (0) | RA (1) | (frame_size + 16)); + +#ifdef CONFIG_USE_GUEST_BASE + tcg_out_movi (s, TCG_TYPE_I64, TCG_GUEST_BASE_REG, GUEST_BASE); +#endif + + tcg_out32 (s, MTSPR | RS (3) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + + /* Epilogue */ + tb_ret_addr = s->code_ptr; + + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (LD + | RT (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 8 + 48 + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, LD | RT (0) | RA (1) | (frame_size + 16)); + tcg_out32 (s, MTSPR | RS (0) | LR); + tcg_out32 (s, ADDI | RT (1) | RA (1) | frame_size); + tcg_out32 (s, BCLR | BO_ALWAYS); +} + +static void tcg_out_ld (TCGContext *s, TCGType type, int ret, int arg1, + tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX); + else + tcg_out_ldsta (s, ret, arg1, arg2, LD, LDX); +} + +static void tcg_out_st (TCGContext *s, TCGType type, int arg, int arg1, + tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst (s, arg, arg1, arg2, STW, STWX); + else + tcg_out_ldsta (s, arg, arg1, arg2, STD, STDX); +} + +static void ppc_addi32 (TCGContext *s, int rt, int ra, tcg_target_long si) +{ + if (!si && rt == ra) + return; + + if (si == (int16_t) si) + tcg_out32 (s, ADDI | RT (rt) | RA (ra) | (si & 0xffff)); + else { + uint16_t h = ((si >> 16) & 0xffff) + ((uint16_t) si >> 15); + tcg_out32 (s, ADDIS | RT (rt) | RA (ra) | h); + tcg_out32 (s, ADDI | RT (rt) | RA (rt) | (si & 0xffff)); + } +} + +static void ppc_addi64 (TCGContext *s, int rt, int ra, tcg_target_long si) +{ + /* XXX: suboptimal */ + if (si == (int16_t) si + || ((((uint64_t) si >> 31) == 0) && (si & 0x8000) == 0)) + ppc_addi32 (s, rt, ra, si); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, si); + tcg_out32 (s, ADD | RT (rt) | RA (ra)); + } +} + +static void tcg_out_addi (TCGContext *s, int reg, tcg_target_long val) +{ + ppc_addi64 (s, reg, reg, val); +} + +static void tcg_out_cmp (TCGContext *s, int cond, TCGArg arg1, TCGArg arg2, + int const_arg2, int cr, int arch64) +{ + int imm; + uint32_t op; + + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_NE: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + else if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + case TCG_COND_LT: + case TCG_COND_GE: + case TCG_COND_LE: + case TCG_COND_GT: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + } + op = CMP; + imm = 0; + break; + + case TCG_COND_LTU: + case TCG_COND_GEU: + case TCG_COND_LEU: + case TCG_COND_GTU: + if (const_arg2) { + if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + default: + tcg_abort (); + } + op |= BF (cr) | (arch64 << 21); + + if (imm) + tcg_out32 (s, op | RA (arg1) | (arg2 & 0xffff)); + else { + if (const_arg2) { + tcg_out_movi (s, TCG_TYPE_I64, 0, arg2); + tcg_out32 (s, op | RA (arg1) | RB (0)); + } + else + tcg_out32 (s, op | RA (arg1) | RB (arg2)); + } + +} + +static void tcg_out_bc (TCGContext *s, int bc, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) + tcg_out32 (s, bc | reloc_pc14_val (s->code_ptr, l->u.value)); + else { + uint16_t val = *(uint16_t *) &s->code_ptr[2]; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, bc | (val & 0xfffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL14, label_index, 0); + } +} + +static void tcg_out_brcond (TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index, int arch64) +{ + tcg_out_cmp (s, cond, arg1, arg2, const_arg2, 7, arch64); + tcg_out_bc (s, tcg_to_bc[cond], label_index); +} + +void ppc_tb_set_jmp_target (unsigned long jmp_addr, unsigned long addr) +{ + TCGContext s; + unsigned long patch_size; + + s.code_ptr = (uint8_t *) jmp_addr; + tcg_out_b (&s, 0, addr); + patch_size = s.code_ptr - (uint8_t *) jmp_addr; + flush_icache_range (jmp_addr, jmp_addr + patch_size); +} + +static void tcg_out_op (TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi (s, TCG_TYPE_I64, TCG_REG_R3, args[0]); + tcg_out_b (s, 0, (tcg_target_long) tb_ret_addr); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + s->code_ptr += 28; + } + else { + tcg_abort (); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_br: + { + TCGLabel *l = &s->labels[args[0]]; + + if (l->has_value) { + tcg_out_b (s, 0, l->u.value); + } + else { + uint32_t val = *(uint32_t *) s->code_ptr; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, B | (val & 0x3fffffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL24, args[0], 0); + } + } + break; + case INDEX_op_call: + tcg_out_call (s, args[0], const_args[0]); + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out_b (s, 0, args[0]); + } + else { + tcg_out32 (s, MTSPR | RS (args[0]) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + } + break; + case INDEX_op_movi_i32: + tcg_out_movi (s, TCG_TYPE_I32, args[0], args[1]); + break; + case INDEX_op_movi_i64: + tcg_out_movi (s, TCG_TYPE_I64, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + case INDEX_op_ld8u_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + break; + case INDEX_op_ld8s_i32: + case INDEX_op_ld8s_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + tcg_out32 (s, EXTSB | RS (args[0]) | RA (args[0])); + break; + case INDEX_op_ld16u_i32: + case INDEX_op_ld16u_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LHZ, LHZX); + break; + case INDEX_op_ld16s_i32: + case INDEX_op_ld16s_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LHA, LHAX); + break; + case INDEX_op_ld_i32: + case INDEX_op_ld32u_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LWZ, LWZX); + break; + case INDEX_op_ld32s_i64: + tcg_out_ldsta (s, args[0], args[1], args[2], LWA, LWAX); + break; + case INDEX_op_ld_i64: + tcg_out_ldsta (s, args[0], args[1], args[2], LD, LDX); + break; + case INDEX_op_st8_i32: + case INDEX_op_st8_i64: + tcg_out_ldst (s, args[0], args[1], args[2], STB, STBX); + break; + case INDEX_op_st16_i32: + case INDEX_op_st16_i64: + tcg_out_ldst (s, args[0], args[1], args[2], STH, STHX); + break; + case INDEX_op_st_i32: + case INDEX_op_st32_i64: + tcg_out_ldst (s, args[0], args[1], args[2], STW, STWX); + break; + case INDEX_op_st_i64: + tcg_out_ldsta (s, args[0], args[1], args[2], STD, STDX); + break; + + case INDEX_op_add_i32: + if (const_args[2]) + ppc_addi32 (s, args[0], args[1], args[2]); + else + tcg_out32 (s, ADD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_sub_i32: + if (const_args[2]) + ppc_addi32 (s, args[0], args[1], -args[2]); + else + tcg_out32 (s, SUBF | TAB (args[0], args[2], args[1])); + break; + + case INDEX_op_and_i64: + case INDEX_op_and_i32: + if (const_args[2]) { + if ((args[2] & 0xffff) == args[2]) + tcg_out32 (s, ANDI | RS (args[1]) | RA (args[0]) | args[2]); + else if ((args[2] & 0xffff0000) == args[2]) + tcg_out32 (s, ANDIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + else { + tcg_out_movi (s, (opc == INDEX_op_and_i32 + ? TCG_TYPE_I32 + : TCG_TYPE_I64), + 0, args[2]); + tcg_out32 (s, AND | SAB (args[1], args[0], 0)); + } + } + else + tcg_out32 (s, AND | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_or_i64: + case INDEX_op_or_i32: + if (const_args[2]) { + if (args[2] & 0xffff) { + tcg_out32 (s, ORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + if (args[2] >> 16) + tcg_out32 (s, ORIS | RS (args[0]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + else { + tcg_out32 (s, ORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + } + else + tcg_out32 (s, OR | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_xor_i64: + case INDEX_op_xor_i32: + if (const_args[2]) { + if ((args[2] & 0xffff) == args[2]) + tcg_out32 (s, XORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + else if ((args[2] & 0xffff0000) == args[2]) + tcg_out32 (s, XORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + else { + tcg_out_movi (s, (opc == INDEX_op_and_i32 + ? TCG_TYPE_I32 + : TCG_TYPE_I64), + 0, args[2]); + tcg_out32 (s, XOR | SAB (args[1], args[0], 0)); + } + } + else + tcg_out32 (s, XOR | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_mul_i32: + if (const_args[2]) { + if (args[2] == (int16_t) args[2]) + tcg_out32 (s, MULLI | RT (args[0]) | RA (args[1]) + | (args[2] & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, args[2]); + tcg_out32 (s, MULLW | TAB (args[0], args[1], 0)); + } + } + else + tcg_out32 (s, MULLW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_div_i32: + tcg_out32 (s, DIVW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_divu_i32: + tcg_out32 (s, DIVWU | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_rem_i32: + tcg_out32 (s, DIVW | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_remu_i32: + tcg_out32 (s, DIVWU | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_shl_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (args[2]) + | MB (0) + | ME (31 - args[2]) + ) + ); + } + else + tcg_out32 (s, SLW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_shr_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (32 - args[2]) + | MB (args[2]) + | ME (31) + ) + ); + } + else + tcg_out32 (s, SRW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_sar_i32: + if (const_args[2]) + tcg_out32 (s, SRAWI | RS (args[1]) | RA (args[0]) | SH (args[2])); + else + tcg_out32 (s, SRAW | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_brcond_i32: + tcg_out_brcond (s, args[2], args[0], args[1], const_args[1], args[3], 0); + break; + + case INDEX_op_brcond_i64: + tcg_out_brcond (s, args[2], args[0], args[1], const_args[1], args[3], 1); + break; + + case INDEX_op_neg_i32: + case INDEX_op_neg_i64: + tcg_out32 (s, NEG | RT (args[0]) | RA (args[1])); + break; + + case INDEX_op_add_i64: + if (const_args[2]) + ppc_addi64 (s, args[0], args[1], args[2]); + else + tcg_out32 (s, ADD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_sub_i64: + if (const_args[2]) + ppc_addi64 (s, args[0], args[1], -args[2]); + else + tcg_out32 (s, SUBF | TAB (args[0], args[2], args[1])); + break; + + case INDEX_op_shl_i64: + if (const_args[2]) + tcg_out_rld (s, RLDICR, args[0], args[1], args[2], 63 - args[2]); + else + tcg_out32 (s, SLD | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_shr_i64: + if (const_args[2]) + tcg_out_rld (s, RLDICL, args[0], args[1], 64 - args[2], args[2]); + else + tcg_out32 (s, SRD | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_sar_i64: + if (const_args[2]) { + int sh = SH (args[2] & 0x1f) | (((args[2] >> 5) & 1) << 1); + tcg_out32 (s, SRADI | RA (args[0]) | RS (args[1]) | sh); + } + else + tcg_out32 (s, SRAD | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_mul_i64: + tcg_out32 (s, MULLD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_div_i64: + tcg_out32 (s, DIVD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_divu_i64: + tcg_out32 (s, DIVDU | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_rem_i64: + tcg_out32 (s, DIVD | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLD | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + case INDEX_op_remu_i64: + tcg_out32 (s, DIVDU | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLD | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld (s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld (s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld (s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld (s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld (s, args, 2); + break; + case INDEX_op_qemu_ld32s: + tcg_out_qemu_ld (s, args, 2 | 4); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld (s, args, 3); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st (s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st (s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st (s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st (s, args, 3); + break; + + case INDEX_op_ext8s_i32: + case INDEX_op_ext8s_i64: + c = EXTSB; + goto gen_ext; + case INDEX_op_ext16s_i32: + case INDEX_op_ext16s_i64: + c = EXTSH; + goto gen_ext; + case INDEX_op_ext32s_i64: + c = EXTSW; + goto gen_ext; + gen_ext: + tcg_out32 (s, c | RS (args[1]) | RA (args[0])); + break; + + default: + tcg_dump_ops (s, stderr); + tcg_abort (); + } +} + +static const TCGTargetOpDef ppc_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_mov_i64, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_movi_i64, { "r" } }, + + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st8_i64, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st16_i64, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + { INDEX_op_st_i64, { "r", "r" } }, + { INDEX_op_st32_i64, { "r", "r" } }, + + { INDEX_op_ld8u_i64, { "r", "r" } }, + { INDEX_op_ld8s_i64, { "r", "r" } }, + { INDEX_op_ld16u_i64, { "r", "r" } }, + { INDEX_op_ld16s_i64, { "r", "r" } }, + { INDEX_op_ld32u_i64, { "r", "r" } }, + { INDEX_op_ld32s_i64, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "ri" } }, + { INDEX_op_mul_i32, { "r", "r", "ri" } }, + { INDEX_op_div_i32, { "r", "r", "r" } }, + { INDEX_op_divu_i32, { "r", "r", "r" } }, + { INDEX_op_rem_i32, { "r", "r", "r" } }, + { INDEX_op_remu_i32, { "r", "r", "r" } }, + { INDEX_op_sub_i32, { "r", "r", "ri" } }, + { INDEX_op_and_i32, { "r", "r", "ri" } }, + { INDEX_op_or_i32, { "r", "r", "ri" } }, + { INDEX_op_xor_i32, { "r", "r", "ri" } }, + + { INDEX_op_shl_i32, { "r", "r", "ri" } }, + { INDEX_op_shr_i32, { "r", "r", "ri" } }, + { INDEX_op_sar_i32, { "r", "r", "ri" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + { INDEX_op_brcond_i64, { "r", "ri" } }, + + { INDEX_op_neg_i32, { "r", "r" } }, + + { INDEX_op_add_i64, { "r", "r", "ri" } }, + { INDEX_op_sub_i64, { "r", "r", "ri" } }, + { INDEX_op_and_i64, { "r", "r", "rZ" } }, + { INDEX_op_or_i64, { "r", "r", "rZ" } }, + { INDEX_op_xor_i64, { "r", "r", "rZ" } }, + + { INDEX_op_shl_i64, { "r", "r", "ri" } }, + { INDEX_op_shr_i64, { "r", "r", "ri" } }, + { INDEX_op_sar_i64, { "r", "r", "ri" } }, + + { INDEX_op_mul_i64, { "r", "r", "r" } }, + { INDEX_op_div_i64, { "r", "r", "r" } }, + { INDEX_op_divu_i64, { "r", "r", "r" } }, + { INDEX_op_rem_i64, { "r", "r", "r" } }, + { INDEX_op_remu_i64, { "r", "r", "r" } }, + + { INDEX_op_neg_i64, { "r", "r" } }, + + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "L" } }, + + { INDEX_op_qemu_st8, { "S", "S" } }, + { INDEX_op_qemu_st16, { "S", "S" } }, + { INDEX_op_qemu_st32, { "S", "S" } }, + { INDEX_op_qemu_st64, { "S", "S" } }, + + { INDEX_op_ext8s_i32, { "r", "r" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + { INDEX_op_ext8s_i64, { "r", "r" } }, + { INDEX_op_ext16s_i64, { "r", "r" } }, + { INDEX_op_ext32s_i64, { "r", "r" } }, + + { -1 }, +}; + +void tcg_target_init (TCGContext *s) +{ + tcg_regset_set32 (tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); + tcg_regset_set32 (tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffffffff); + tcg_regset_set32 (tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_R0) | +#ifdef __APPLE__ + (1 << TCG_REG_R2) | +#endif + (1 << TCG_REG_R3) | + (1 << TCG_REG_R4) | + (1 << TCG_REG_R5) | + (1 << TCG_REG_R6) | + (1 << TCG_REG_R7) | + (1 << TCG_REG_R8) | + (1 << TCG_REG_R9) | + (1 << TCG_REG_R10) | + (1 << TCG_REG_R11) | + (1 << TCG_REG_R12) + ); + + tcg_regset_clear (s->reserved_regs); + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R0); + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R1); +#ifndef __APPLE__ + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R2); +#endif + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R13); + +#ifdef CONFIG_USE_GUEST_BASE + tcg_regset_set_reg(s->reserved_regs, TCG_GUEST_BASE_REG); +#endif + + tcg_add_target_add_op_defs (ppc_op_defs); +} diff --git a/qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..94b800f --- /dev/null +++ b/qemu/qemu-git/tcg/ppc64/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,85 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_PPC64 1 + +#define TCG_TARGET_REG_BITS 64 +#define TCG_TARGET_WORDS_BIGENDIAN +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R1 +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_CALL_STACK_OFFSET 48 + +/* optional instructions */ +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_neg_i64 +#define TCG_TARGET_HAS_div_i64 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_ext8s_i64 +#define TCG_TARGET_HAS_ext16s_i64 +#define TCG_TARGET_HAS_ext32s_i64 + +#define TCG_AREG0 TCG_REG_R27 +#define TCG_AREG1 TCG_REG_R24 +#define TCG_AREG2 TCG_REG_R25 + +#define TCG_TARGET_HAS_GUEST_BASE diff --git a/qemu/qemu-git/tcg/ppc64/tcg-target.c b/qemu/qemu-git/tcg/ppc64/tcg-target.c new file mode 100644 index 0000000..803db48 --- /dev/null +++ b/qemu/qemu-git/tcg/ppc64/tcg-target.c @@ -0,0 +1,1570 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define TCG_CT_CONST_U32 0x100 + +static uint8_t *tb_ret_addr; + +#define FAST_PATH + +#if TARGET_PHYS_ADDR_BITS == 32 +#define LD_ADDEND LWZ +#else +#define LD_ADDEND LD +#endif + +#if TARGET_LONG_BITS == 32 +#define LD_ADDR LWZU +#define CMP_L 0 +#else +#define LD_ADDR LDU +#define CMP_L (1<<21) +#endif + +#ifndef GUEST_BASE +#define GUEST_BASE 0 +#endif + +#ifdef CONFIG_USE_GUEST_BASE +#define TCG_GUEST_BASE_REG 30 +#else +#define TCG_GUEST_BASE_REG 0 +#endif + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "r0", + "r1", + "rp", + "r3", + "r4", + "r5", + "r6", + "r7", + "r8", + "r9", + "r10", + "r11", + "r12", + "r13", + "r14", + "r15", + "r16", + "r17", + "r18", + "r19", + "r20", + "r21", + "r22", + "r23", + "r24", + "r25", + "r26", + "r27", + "r28", + "r29", + "r30", + "r31" +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31, +#ifdef __APPLE__ + TCG_REG_R2, +#endif + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, +#ifndef __APPLE__ + TCG_REG_R11, +#endif + TCG_REG_R12, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27 +}; + +static const int tcg_target_call_iarg_regs[] = { + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10 +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_R3 +}; + +static const int tcg_target_callee_save_regs[] = { +#ifdef __APPLE__ + TCG_REG_R11, +#endif + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + /* TCG_REG_R27, */ /* currently used for the global env, so no + need to save */ + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +static uint32_t reloc_pc24_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if ((disp << 38) >> 38 != disp) + tcg_abort (); + + return disp & 0x3fffffc; +} + +static void reloc_pc24 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3fffffc) + | reloc_pc24_val (pc, target); +} + +static uint16_t reloc_pc14_val (void *pc, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) pc; + if (disp != (int16_t) disp) + tcg_abort (); + + return disp & 0xfffc; +} + +static void reloc_pc14 (void *pc, tcg_target_long target) +{ + *(uint32_t *) pc = (*(uint32_t *) pc & ~0xfffc) + | reloc_pc14_val (pc, target); +} + +static void patch_reloc (uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch (type) { + case R_PPC_REL14: + reloc_pc14 (code_ptr, value); + break; + case R_PPC_REL24: + reloc_pc24 (code_ptr, value); + break; + default: + tcg_abort (); + } +} + +/* maximum number of register used for input function arguments */ +static int tcg_target_get_call_iarg_regs_count (int flags) +{ + return ARRAY_SIZE (tcg_target_call_iarg_regs); +} + +/* parse target specific constraints */ +static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'A': case 'B': case 'C': case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg (ct->u.regs, 3 + ct_str[0] - 'A'); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32 (ct->u.regs, 0, 0xffffffff); + break; + case 'L': /* qemu_ld constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32 (ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R3); +#ifdef CONFIG_SOFTMMU + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4); +#endif + break; + case 'S': /* qemu_st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32 (ct->u.regs, 0, 0xffffffff); + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R3); +#ifdef CONFIG_SOFTMMU + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4); + tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5); +#endif + break; + case 'Z': + ct->ct |= TCG_CT_CONST_U32; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static int tcg_target_const_match (tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_U32) && (val == (uint32_t) val)) + return 1; + return 0; +} + +#define OPCD(opc) ((opc)<<26) +#define XO19(opc) (OPCD(19)|((opc)<<1)) +#define XO30(opc) (OPCD(30)|((opc)<<2)) +#define XO31(opc) (OPCD(31)|((opc)<<1)) +#define XO58(opc) (OPCD(58)|(opc)) +#define XO62(opc) (OPCD(62)|(opc)) + +#define B OPCD( 18) +#define BC OPCD( 16) +#define LBZ OPCD( 34) +#define LHZ OPCD( 40) +#define LHA OPCD( 42) +#define LWZ OPCD( 32) +#define STB OPCD( 38) +#define STH OPCD( 44) +#define STW OPCD( 36) + +#define STD XO62( 0) +#define STDU XO62( 1) +#define STDX XO31(149) + +#define LD XO58( 0) +#define LDX XO31( 21) +#define LDU XO58( 1) +#define LWA XO58( 2) +#define LWAX XO31(341) + +#define ADDI OPCD( 14) +#define ADDIS OPCD( 15) +#define ORI OPCD( 24) +#define ORIS OPCD( 25) +#define XORI OPCD( 26) +#define XORIS OPCD( 27) +#define ANDI OPCD( 28) +#define ANDIS OPCD( 29) +#define MULLI OPCD( 7) +#define CMPLI OPCD( 10) +#define CMPI OPCD( 11) + +#define LWZU OPCD( 33) +#define STWU OPCD( 37) + +#define RLWINM OPCD( 21) + +#define RLDICL XO30( 0) +#define RLDICR XO30( 1) +#define RLDIMI XO30( 3) + +#define BCLR XO19( 16) +#define BCCTR XO19(528) +#define CRAND XO19(257) +#define CRANDC XO19(129) +#define CRNAND XO19(225) +#define CROR XO19(449) + +#define EXTSB XO31(954) +#define EXTSH XO31(922) +#define EXTSW XO31(986) +#define ADD XO31(266) +#define ADDE XO31(138) +#define ADDC XO31( 10) +#define AND XO31( 28) +#define SUBF XO31( 40) +#define SUBFC XO31( 8) +#define SUBFE XO31(136) +#define OR XO31(444) +#define XOR XO31(316) +#define MULLW XO31(235) +#define MULHWU XO31( 11) +#define DIVW XO31(491) +#define DIVWU XO31(459) +#define CMP XO31( 0) +#define CMPL XO31( 32) +#define LHBRX XO31(790) +#define LWBRX XO31(534) +#define STHBRX XO31(918) +#define STWBRX XO31(662) +#define MFSPR XO31(339) +#define MTSPR XO31(467) +#define SRAWI XO31(824) +#define NEG XO31(104) + +#define MULLD XO31(233) +#define MULHD XO31( 73) +#define MULHDU XO31( 9) +#define DIVD XO31(489) +#define DIVDU XO31(457) + +#define LBZX XO31( 87) +#define LHZX XO31(279) +#define LHAX XO31(343) +#define LWZX XO31( 23) +#define STBX XO31(215) +#define STHX XO31(407) +#define STWX XO31(151) + +#define SPR(a,b) ((((a)<<5)|(b))<<11) +#define LR SPR(8, 0) +#define CTR SPR(9, 0) + +#define SLW XO31( 24) +#define SRW XO31(536) +#define SRAW XO31(792) + +#define SLD XO31( 27) +#define SRD XO31(539) +#define SRAD XO31(794) +#define SRADI XO31(413<<1) + +#define TW XO31( 4) +#define TRAP (TW | TO (31)) + +#define RT(r) ((r)<<21) +#define RS(r) ((r)<<21) +#define RA(r) ((r)<<16) +#define RB(r) ((r)<<11) +#define TO(t) ((t)<<21) +#define SH(s) ((s)<<11) +#define MB(b) ((b)<<6) +#define ME(e) ((e)<<1) +#define BO(o) ((o)<<21) +#define MB64(b) ((b)<<5) + +#define LK 1 + +#define TAB(t,a,b) (RT(t) | RA(a) | RB(b)) +#define SAB(s,a,b) (RS(s) | RA(a) | RB(b)) + +#define BF(n) ((n)<<23) +#define BI(n, c) (((c)+((n)*4))<<16) +#define BT(n, c) (((c)+((n)*4))<<21) +#define BA(n, c) (((c)+((n)*4))<<16) +#define BB(n, c) (((c)+((n)*4))<<11) + +#define BO_COND_TRUE BO (12) +#define BO_COND_FALSE BO ( 4) +#define BO_ALWAYS BO (20) + +enum { + CR_LT, + CR_GT, + CR_EQ, + CR_SO +}; + +static const uint32_t tcg_to_bc[10] = { + [TCG_COND_EQ] = BC | BI (7, CR_EQ) | BO_COND_TRUE, + [TCG_COND_NE] = BC | BI (7, CR_EQ) | BO_COND_FALSE, + [TCG_COND_LT] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GE] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LE] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GT] = BC | BI (7, CR_GT) | BO_COND_TRUE, + [TCG_COND_LTU] = BC | BI (7, CR_LT) | BO_COND_TRUE, + [TCG_COND_GEU] = BC | BI (7, CR_LT) | BO_COND_FALSE, + [TCG_COND_LEU] = BC | BI (7, CR_GT) | BO_COND_FALSE, + [TCG_COND_GTU] = BC | BI (7, CR_GT) | BO_COND_TRUE, +}; + +static void tcg_out_mov (TCGContext *s, int ret, int arg) +{ + tcg_out32 (s, OR | SAB (arg, ret, arg)); +} + +static void tcg_out_rld (TCGContext *s, int op, int ra, int rs, int sh, int mb) +{ + sh = SH (sh & 0x1f) | (((sh >> 5) & 1) << 1); + mb = MB64 ((mb >> 5) | ((mb << 1) & 0x3f)); + tcg_out32 (s, op | RA (ra) | RS (rs) | sh | mb); +} + +static void tcg_out_movi32 (TCGContext *s, int ret, int32_t arg) +{ + if (arg == (int16_t) arg) + tcg_out32 (s, ADDI | RT (ret) | RA (0) | (arg & 0xffff)); + else { + tcg_out32 (s, ADDIS | RT (ret) | RA (0) | ((arg >> 16) & 0xffff)); + if (arg & 0xffff) + tcg_out32 (s, ORI | RS (ret) | RA (ret) | (arg & 0xffff)); + } +} + +static void tcg_out_movi (TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + int32_t arg32 = arg; + arg = type == TCG_TYPE_I32 ? arg & 0xffffffff : arg; + + if (arg == arg32) { + tcg_out_movi32 (s, ret, arg32); + } + else { + if ((uint64_t) arg >> 32) { + uint16_t h16 = arg >> 16; + uint16_t l16 = arg; + + tcg_out_movi32 (s, ret, arg >> 32); + tcg_out_rld (s, RLDICR, ret, ret, 32, 31); + if (h16) tcg_out32 (s, ORIS | RS (ret) | RA (ret) | h16); + if (l16) tcg_out32 (s, ORI | RS (ret) | RA (ret) | l16); + } + else { + tcg_out_movi32 (s, ret, arg32); + if (arg32 < 0) + tcg_out_rld (s, RLDICL, ret, ret, 0, 32); + } + } +} + +static void tcg_out_b (TCGContext *s, int mask, tcg_target_long target) +{ + tcg_target_long disp; + + disp = target - (tcg_target_long) s->code_ptr; + if ((disp << 38) >> 38 == disp) + tcg_out32 (s, B | (disp & 0x3fffffc) | mask); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, (tcg_target_long) target); + tcg_out32 (s, MTSPR | RS (0) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS | mask); + } +} + +static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg) +{ +#ifdef __APPLE__ + if (const_arg) { + tcg_out_b (s, LK, arg); + } + else { + tcg_out32 (s, MTSPR | RS (arg) | LR); + tcg_out32 (s, BCLR | BO_ALWAYS | LK); + } +#else + int reg; + + if (const_arg) { + reg = 2; + tcg_out_movi (s, TCG_TYPE_I64, reg, arg); + } + else reg = arg; + + tcg_out32 (s, LD | RT (0) | RA (reg)); + tcg_out32 (s, MTSPR | RA (0) | CTR); + tcg_out32 (s, LD | RT (11) | RA (reg) | 16); + tcg_out32 (s, LD | RT (2) | RA (reg) | 8); + tcg_out32 (s, BCCTR | BO_ALWAYS | LK); +#endif +} + +static void tcg_out_ldst (TCGContext *s, int ret, int addr, + int offset, int op1, int op2) +{ + if (offset == (int16_t) offset) + tcg_out32 (s, op1 | RT (ret) | RA (addr) | (offset & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, offset); + tcg_out32 (s, op2 | RT (ret) | RA (addr) | RB (0)); + } +} + +static void tcg_out_ldsta (TCGContext *s, int ret, int addr, + int offset, int op1, int op2) +{ + if (offset == (int16_t) (offset & ~3)) + tcg_out32 (s, op1 | RT (ret) | RA (addr) | (offset & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, offset); + tcg_out32 (s, op2 | RT (ret) | RA (addr) | RB (0)); + } +} + +#if defined (CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; + +static void tcg_out_tlb_read (TCGContext *s, int r0, int r1, int r2, + int addr_reg, int s_bits, int offset) +{ +#if TARGET_LONG_BITS == 32 + tcg_out_rld (s, RLDICL, addr_reg, addr_reg, 0, 32); + + tcg_out32 (s, (RLWINM + | RA (r0) + | RS (addr_reg) + | SH (32 - (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS)) + | MB (32 - (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS)) + | ME (31 - CPU_TLB_ENTRY_BITS) + ) + ); + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (TCG_AREG0)); + tcg_out32 (s, (LWZU | RT (r1) | RA (r0) | offset)); + tcg_out32 (s, (RLWINM + | RA (r2) + | RS (addr_reg) + | SH (0) + | MB ((32 - s_bits) & 31) + | ME (31 - TARGET_PAGE_BITS) + ) + ); +#else + tcg_out_rld (s, RLDICL, r0, addr_reg, + 64 - TARGET_PAGE_BITS, + 64 - CPU_TLB_BITS); + tcg_out_rld (s, RLDICR, r0, r0, + CPU_TLB_ENTRY_BITS, + 63 - CPU_TLB_ENTRY_BITS); + + tcg_out32 (s, ADD | TAB (r0, r0, TCG_AREG0)); + tcg_out32 (s, LD_ADDR | RT (r1) | RA (r0) | offset); + + if (!s_bits) { + tcg_out_rld (s, RLDICR, r2, addr_reg, 0, 63 - TARGET_PAGE_BITS); + } + else { + tcg_out_rld (s, RLDICL, r2, addr_reg, + 64 - TARGET_PAGE_BITS, + TARGET_PAGE_BITS - s_bits); + tcg_out_rld (s, RLDICL, r2, r2, TARGET_PAGE_BITS, 0); + } +#endif +} +#endif + +static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, data_reg, r0, r1, rbase, mem_index, s_bits, bswap; +#ifdef CONFIG_SOFTMMU + int r2; + void *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + s_bits = opc & 3; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out_tlb_read (s, r0, r1, r2, addr_reg, s_bits, + offsetof (CPUState, tlb_table[mem_index][0].addr_read)); + + tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1) | CMP_L); + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ + tcg_out_mov (s, 3, addr_reg); + tcg_out_movi (s, TCG_TYPE_I64, 4, mem_index); + + tcg_out_call (s, (tcg_target_long) qemu_ld_helpers[s_bits], 1); + + switch (opc) { + case 0|4: + tcg_out32 (s, EXTSB | RA (data_reg) | RS (3)); + break; + case 1|4: + tcg_out32 (s, EXTSH | RA (data_reg) | RS (3)); + break; + case 2|4: + tcg_out32 (s, EXTSW | RA (data_reg) | RS (3)); + break; + case 0: + case 1: + case 2: + case 3: + if (data_reg != 3) + tcg_out_mov (s, data_reg, 3); + break; + } + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + /* r0 now contains &env->tlb_table[mem_index][index].addr_read */ + tcg_out32 (s, (LD_ADDEND + | RT (r0) + | RA (r0) + | (offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_read)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ +#if TARGET_LONG_BITS == 32 + tcg_out_rld (s, RLDICL, addr_reg, addr_reg, 0, 32); +#endif + r0 = addr_reg; + r1 = 3; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + default: + case 0: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + break; + case 0|4: + tcg_out32 (s, LBZX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSB | RA (data_reg) | RS (data_reg)); + break; + case 1: + if (bswap) + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LHZX | TAB (data_reg, rbase, r0)); + break; + case 1|4: + if (bswap) { + tcg_out32 (s, LHBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSH | RA (data_reg) | RS (data_reg)); + } + else tcg_out32 (s, LHAX | TAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + else + tcg_out32 (s, LWZX | TAB (data_reg, rbase, r0)); + break; + case 2|4: + if (bswap) { + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, EXTSW | RA (data_reg) | RS (data_reg)); + } + else tcg_out32 (s, LWAX | TAB (data_reg, rbase, r0)); + break; + case 3: +#ifdef CONFIG_USE_GUEST_BASE + if (bswap) { + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out32 (s, LWBRX | TAB (data_reg, rbase, r0)); + tcg_out32 (s, LWBRX | TAB ( r1, rbase, r1)); + tcg_out_rld (s, RLDIMI, data_reg, r1, 32, 0); + } + else tcg_out32 (s, LDX | TAB (data_reg, rbase, r0)); +#else + if (bswap) { + tcg_out_movi32 (s, 0, 4); + tcg_out32 (s, LWBRX | RT (data_reg) | RB (r0)); + tcg_out32 (s, LWBRX | RT ( r1) | RA (r0)); + tcg_out_rld (s, RLDIMI, data_reg, r1, 32, 0); + } + else tcg_out32 (s, LD | RT (data_reg) | RA (r0)); +#endif + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc) +{ + int addr_reg, r0, r1, rbase, data_reg, mem_index, bswap; +#ifdef CONFIG_SOFTMMU + int r2; + void *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + +#ifdef CONFIG_SOFTMMU + r0 = 3; + r1 = 4; + r2 = 0; + rbase = 0; + + tcg_out_tlb_read (s, r0, r1, r2, addr_reg, opc, + offsetof (CPUState, tlb_table[mem_index][0].addr_write)); + + tcg_out32 (s, CMP | BF (7) | RA (r2) | RB (r1) | CMP_L); + + label1_ptr = s->code_ptr; +#ifdef FAST_PATH + tcg_out32 (s, BC | BI (7, CR_EQ) | BO_COND_TRUE); +#endif + + /* slow path */ + tcg_out_mov (s, 3, addr_reg); + tcg_out_rld (s, RLDICL, 4, data_reg, 0, 64 - (1 << (3 + opc))); + tcg_out_movi (s, TCG_TYPE_I64, 5, mem_index); + + tcg_out_call (s, (tcg_target_long) qemu_st_helpers[opc], 1); + + label2_ptr = s->code_ptr; + tcg_out32 (s, B); + + /* label1: fast path */ +#ifdef FAST_PATH + reloc_pc14 (label1_ptr, (tcg_target_long) s->code_ptr); +#endif + + tcg_out32 (s, (LD_ADDEND + | RT (r0) + | RA (r0) + | (offsetof (CPUTLBEntry, addend) + - offsetof (CPUTLBEntry, addr_write)) + )); + /* r0 = env->tlb_table[mem_index][index].addend */ + tcg_out32 (s, ADD | RT (r0) | RA (r0) | RB (addr_reg)); + /* r0 = env->tlb_table[mem_index][index].addend + addr */ + +#else /* !CONFIG_SOFTMMU */ +#if TARGET_LONG_BITS == 32 + tcg_out_rld (s, RLDICL, addr_reg, addr_reg, 0, 32); +#endif + r1 = 3; + r0 = addr_reg; + rbase = GUEST_BASE ? TCG_GUEST_BASE_REG : 0; +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 0; +#else + bswap = 1; +#endif + switch (opc) { + case 0: + tcg_out32 (s, STBX | SAB (data_reg, rbase, r0)); + break; + case 1: + if (bswap) + tcg_out32 (s, STHBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STHX | SAB (data_reg, rbase, r0)); + break; + case 2: + if (bswap) + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + else + tcg_out32 (s, STWX | SAB (data_reg, rbase, r0)); + break; + case 3: + if (bswap) { + tcg_out32 (s, STWBRX | SAB (data_reg, rbase, r0)); + tcg_out32 (s, ADDI | RT (r1) | RA (r0) | 4); + tcg_out_rld (s, RLDICL, 0, data_reg, 32, 0); + tcg_out32 (s, STWBRX | SAB (0, rbase, r1)); + } + else tcg_out32 (s, STDX | SAB (data_reg, rbase, r0)); + break; + } + +#ifdef CONFIG_SOFTMMU + reloc_pc24 (label2_ptr, (tcg_target_long) s->code_ptr); +#endif +} + +void tcg_target_qemu_prologue (TCGContext *s) +{ + int i, frame_size; +#ifndef __APPLE__ + uint64_t addr; +#endif + + frame_size = 0 + + 8 /* back chain */ + + 8 /* CR */ + + 8 /* LR */ + + 8 /* compiler doubleword */ + + 8 /* link editor doubleword */ + + 8 /* TOC save area */ + + TCG_STATIC_CALL_ARGS_SIZE + + ARRAY_SIZE (tcg_target_callee_save_regs) * 8 + ; + frame_size = (frame_size + 15) & ~15; + +#ifndef __APPLE__ + /* First emit adhoc function descriptor */ + addr = (uint64_t) s->code_ptr + 24; + tcg_out32 (s, addr >> 32); tcg_out32 (s, addr); /* entry point */ + s->code_ptr += 16; /* skip TOC and environment pointer */ +#endif + + /* Prologue */ + tcg_out32 (s, MFSPR | RT (0) | LR); + tcg_out32 (s, STDU | RS (1) | RA (1) | (-frame_size & 0xffff)); + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (STD + | RS (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 8 + 48 + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, STD | RS (0) | RA (1) | (frame_size + 16)); + +#ifdef CONFIG_USE_GUEST_BASE + tcg_out_movi (s, TCG_TYPE_I64, TCG_GUEST_BASE_REG, GUEST_BASE); +#endif + + tcg_out32 (s, MTSPR | RS (3) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + + /* Epilogue */ + tb_ret_addr = s->code_ptr; + + for (i = 0; i < ARRAY_SIZE (tcg_target_callee_save_regs); ++i) + tcg_out32 (s, (LD + | RT (tcg_target_callee_save_regs[i]) + | RA (1) + | (i * 8 + 48 + TCG_STATIC_CALL_ARGS_SIZE) + ) + ); + tcg_out32 (s, LD | RT (0) | RA (1) | (frame_size + 16)); + tcg_out32 (s, MTSPR | RS (0) | LR); + tcg_out32 (s, ADDI | RT (1) | RA (1) | frame_size); + tcg_out32 (s, BCLR | BO_ALWAYS); +} + +static void tcg_out_ld (TCGContext *s, TCGType type, int ret, int arg1, + tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX); + else + tcg_out_ldsta (s, ret, arg1, arg2, LD, LDX); +} + +static void tcg_out_st (TCGContext *s, TCGType type, int arg, int arg1, + tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst (s, arg, arg1, arg2, STW, STWX); + else + tcg_out_ldsta (s, arg, arg1, arg2, STD, STDX); +} + +static void ppc_addi32 (TCGContext *s, int rt, int ra, tcg_target_long si) +{ + if (!si && rt == ra) + return; + + if (si == (int16_t) si) + tcg_out32 (s, ADDI | RT (rt) | RA (ra) | (si & 0xffff)); + else { + uint16_t h = ((si >> 16) & 0xffff) + ((uint16_t) si >> 15); + tcg_out32 (s, ADDIS | RT (rt) | RA (ra) | h); + tcg_out32 (s, ADDI | RT (rt) | RA (rt) | (si & 0xffff)); + } +} + +static void ppc_addi64 (TCGContext *s, int rt, int ra, tcg_target_long si) +{ + /* XXX: suboptimal */ + if (si == (int16_t) si + || ((((uint64_t) si >> 31) == 0) && (si & 0x8000) == 0)) + ppc_addi32 (s, rt, ra, si); + else { + tcg_out_movi (s, TCG_TYPE_I64, 0, si); + tcg_out32 (s, ADD | RT (rt) | RA (ra)); + } +} + +static void tcg_out_addi (TCGContext *s, int reg, tcg_target_long val) +{ + ppc_addi64 (s, reg, reg, val); +} + +static void tcg_out_cmp (TCGContext *s, int cond, TCGArg arg1, TCGArg arg2, + int const_arg2, int cr, int arch64) +{ + int imm; + uint32_t op; + + switch (cond) { + case TCG_COND_EQ: + case TCG_COND_NE: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + else if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + case TCG_COND_LT: + case TCG_COND_GE: + case TCG_COND_LE: + case TCG_COND_GT: + if (const_arg2) { + if ((int16_t) arg2 == arg2) { + op = CMPI; + imm = 1; + break; + } + } + op = CMP; + imm = 0; + break; + + case TCG_COND_LTU: + case TCG_COND_GEU: + case TCG_COND_LEU: + case TCG_COND_GTU: + if (const_arg2) { + if ((uint16_t) arg2 == arg2) { + op = CMPLI; + imm = 1; + break; + } + } + op = CMPL; + imm = 0; + break; + + default: + tcg_abort (); + } + op |= BF (cr) | (arch64 << 21); + + if (imm) + tcg_out32 (s, op | RA (arg1) | (arg2 & 0xffff)); + else { + if (const_arg2) { + tcg_out_movi (s, TCG_TYPE_I64, 0, arg2); + tcg_out32 (s, op | RA (arg1) | RB (0)); + } + else + tcg_out32 (s, op | RA (arg1) | RB (arg2)); + } + +} + +static void tcg_out_bc (TCGContext *s, int bc, int label_index) +{ + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) + tcg_out32 (s, bc | reloc_pc14_val (s->code_ptr, l->u.value)); + else { + uint16_t val = *(uint16_t *) &s->code_ptr[2]; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, bc | (val & 0xfffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL14, label_index, 0); + } +} + +static void tcg_out_brcond (TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index, int arch64) +{ + tcg_out_cmp (s, cond, arg1, arg2, const_arg2, 7, arch64); + tcg_out_bc (s, tcg_to_bc[cond], label_index); +} + +void ppc_tb_set_jmp_target (unsigned long jmp_addr, unsigned long addr) +{ + TCGContext s; + unsigned long patch_size; + + s.code_ptr = (uint8_t *) jmp_addr; + tcg_out_b (&s, 0, addr); + patch_size = s.code_ptr - (uint8_t *) jmp_addr; + flush_icache_range (jmp_addr, jmp_addr + patch_size); +} + +static void tcg_out_op (TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi (s, TCG_TYPE_I64, TCG_REG_R3, args[0]); + tcg_out_b (s, 0, (tcg_target_long) tb_ret_addr); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + s->code_ptr += 28; + } + else { + tcg_abort (); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_br: + { + TCGLabel *l = &s->labels[args[0]]; + + if (l->has_value) { + tcg_out_b (s, 0, l->u.value); + } + else { + uint32_t val = *(uint32_t *) s->code_ptr; + + /* Thanks to Andrzej Zaborowski */ + tcg_out32 (s, B | (val & 0x3fffffc)); + tcg_out_reloc (s, s->code_ptr - 4, R_PPC_REL24, args[0], 0); + } + } + break; + case INDEX_op_call: + tcg_out_call (s, args[0], const_args[0]); + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out_b (s, 0, args[0]); + } + else { + tcg_out32 (s, MTSPR | RS (args[0]) | CTR); + tcg_out32 (s, BCCTR | BO_ALWAYS); + } + break; + case INDEX_op_movi_i32: + tcg_out_movi (s, TCG_TYPE_I32, args[0], args[1]); + break; + case INDEX_op_movi_i64: + tcg_out_movi (s, TCG_TYPE_I64, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + case INDEX_op_ld8u_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + break; + case INDEX_op_ld8s_i32: + case INDEX_op_ld8s_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LBZ, LBZX); + tcg_out32 (s, EXTSB | RS (args[0]) | RA (args[0])); + break; + case INDEX_op_ld16u_i32: + case INDEX_op_ld16u_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LHZ, LHZX); + break; + case INDEX_op_ld16s_i32: + case INDEX_op_ld16s_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LHA, LHAX); + break; + case INDEX_op_ld_i32: + case INDEX_op_ld32u_i64: + tcg_out_ldst (s, args[0], args[1], args[2], LWZ, LWZX); + break; + case INDEX_op_ld32s_i64: + tcg_out_ldsta (s, args[0], args[1], args[2], LWA, LWAX); + break; + case INDEX_op_ld_i64: + tcg_out_ldsta (s, args[0], args[1], args[2], LD, LDX); + break; + case INDEX_op_st8_i32: + case INDEX_op_st8_i64: + tcg_out_ldst (s, args[0], args[1], args[2], STB, STBX); + break; + case INDEX_op_st16_i32: + case INDEX_op_st16_i64: + tcg_out_ldst (s, args[0], args[1], args[2], STH, STHX); + break; + case INDEX_op_st_i32: + case INDEX_op_st32_i64: + tcg_out_ldst (s, args[0], args[1], args[2], STW, STWX); + break; + case INDEX_op_st_i64: + tcg_out_ldsta (s, args[0], args[1], args[2], STD, STDX); + break; + + case INDEX_op_add_i32: + if (const_args[2]) + ppc_addi32 (s, args[0], args[1], args[2]); + else + tcg_out32 (s, ADD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_sub_i32: + if (const_args[2]) + ppc_addi32 (s, args[0], args[1], -args[2]); + else + tcg_out32 (s, SUBF | TAB (args[0], args[2], args[1])); + break; + + case INDEX_op_and_i64: + case INDEX_op_and_i32: + if (const_args[2]) { + if ((args[2] & 0xffff) == args[2]) + tcg_out32 (s, ANDI | RS (args[1]) | RA (args[0]) | args[2]); + else if ((args[2] & 0xffff0000) == args[2]) + tcg_out32 (s, ANDIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + else { + tcg_out_movi (s, (opc == INDEX_op_and_i32 + ? TCG_TYPE_I32 + : TCG_TYPE_I64), + 0, args[2]); + tcg_out32 (s, AND | SAB (args[1], args[0], 0)); + } + } + else + tcg_out32 (s, AND | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_or_i64: + case INDEX_op_or_i32: + if (const_args[2]) { + if (args[2] & 0xffff) { + tcg_out32 (s, ORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + if (args[2] >> 16) + tcg_out32 (s, ORIS | RS (args[0]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + else { + tcg_out32 (s, ORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + } + } + else + tcg_out32 (s, OR | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_xor_i64: + case INDEX_op_xor_i32: + if (const_args[2]) { + if ((args[2] & 0xffff) == args[2]) + tcg_out32 (s, XORI | RS (args[1]) | RA (args[0]) + | (args[2] & 0xffff)); + else if ((args[2] & 0xffff0000) == args[2]) + tcg_out32 (s, XORIS | RS (args[1]) | RA (args[0]) + | ((args[2] >> 16) & 0xffff)); + else { + tcg_out_movi (s, (opc == INDEX_op_and_i32 + ? TCG_TYPE_I32 + : TCG_TYPE_I64), + 0, args[2]); + tcg_out32 (s, XOR | SAB (args[1], args[0], 0)); + } + } + else + tcg_out32 (s, XOR | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_mul_i32: + if (const_args[2]) { + if (args[2] == (int16_t) args[2]) + tcg_out32 (s, MULLI | RT (args[0]) | RA (args[1]) + | (args[2] & 0xffff)); + else { + tcg_out_movi (s, TCG_TYPE_I32, 0, args[2]); + tcg_out32 (s, MULLW | TAB (args[0], args[1], 0)); + } + } + else + tcg_out32 (s, MULLW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_div_i32: + tcg_out32 (s, DIVW | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_divu_i32: + tcg_out32 (s, DIVWU | TAB (args[0], args[1], args[2])); + break; + + case INDEX_op_rem_i32: + tcg_out32 (s, DIVW | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_remu_i32: + tcg_out32 (s, DIVWU | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLW | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_shl_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (args[2]) + | MB (0) + | ME (31 - args[2]) + ) + ); + } + else + tcg_out32 (s, SLW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_shr_i32: + if (const_args[2]) { + tcg_out32 (s, (RLWINM + | RA (args[0]) + | RS (args[1]) + | SH (32 - args[2]) + | MB (args[2]) + | ME (31) + ) + ); + } + else + tcg_out32 (s, SRW | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_sar_i32: + if (const_args[2]) + tcg_out32 (s, SRAWI | RS (args[1]) | RA (args[0]) | SH (args[2])); + else + tcg_out32 (s, SRAW | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_brcond_i32: + tcg_out_brcond (s, args[2], args[0], args[1], const_args[1], args[3], 0); + break; + + case INDEX_op_brcond_i64: + tcg_out_brcond (s, args[2], args[0], args[1], const_args[1], args[3], 1); + break; + + case INDEX_op_neg_i32: + case INDEX_op_neg_i64: + tcg_out32 (s, NEG | RT (args[0]) | RA (args[1])); + break; + + case INDEX_op_add_i64: + if (const_args[2]) + ppc_addi64 (s, args[0], args[1], args[2]); + else + tcg_out32 (s, ADD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_sub_i64: + if (const_args[2]) + ppc_addi64 (s, args[0], args[1], -args[2]); + else + tcg_out32 (s, SUBF | TAB (args[0], args[2], args[1])); + break; + + case INDEX_op_shl_i64: + if (const_args[2]) + tcg_out_rld (s, RLDICR, args[0], args[1], args[2], 63 - args[2]); + else + tcg_out32 (s, SLD | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_shr_i64: + if (const_args[2]) + tcg_out_rld (s, RLDICL, args[0], args[1], 64 - args[2], args[2]); + else + tcg_out32 (s, SRD | SAB (args[1], args[0], args[2])); + break; + case INDEX_op_sar_i64: + if (const_args[2]) { + int sh = SH (args[2] & 0x1f) | (((args[2] >> 5) & 1) << 1); + tcg_out32 (s, SRADI | RA (args[0]) | RS (args[1]) | sh); + } + else + tcg_out32 (s, SRAD | SAB (args[1], args[0], args[2])); + break; + + case INDEX_op_mul_i64: + tcg_out32 (s, MULLD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_div_i64: + tcg_out32 (s, DIVD | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_divu_i64: + tcg_out32 (s, DIVDU | TAB (args[0], args[1], args[2])); + break; + case INDEX_op_rem_i64: + tcg_out32 (s, DIVD | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLD | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + case INDEX_op_remu_i64: + tcg_out32 (s, DIVDU | TAB (0, args[1], args[2])); + tcg_out32 (s, MULLD | TAB (0, 0, args[2])); + tcg_out32 (s, SUBF | TAB (args[0], 0, args[1])); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld (s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld (s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld (s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld (s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld (s, args, 2); + break; + case INDEX_op_qemu_ld32s: + tcg_out_qemu_ld (s, args, 2 | 4); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld (s, args, 3); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st (s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st (s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st (s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st (s, args, 3); + break; + + case INDEX_op_ext8s_i32: + case INDEX_op_ext8s_i64: + c = EXTSB; + goto gen_ext; + case INDEX_op_ext16s_i32: + case INDEX_op_ext16s_i64: + c = EXTSH; + goto gen_ext; + case INDEX_op_ext32s_i64: + c = EXTSW; + goto gen_ext; + gen_ext: + tcg_out32 (s, c | RS (args[1]) | RA (args[0])); + break; + + default: + tcg_dump_ops (s, stderr); + tcg_abort (); + } +} + +static const TCGTargetOpDef ppc_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_mov_i64, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_movi_i64, { "r" } }, + + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st8_i64, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st16_i64, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + { INDEX_op_st_i64, { "r", "r" } }, + { INDEX_op_st32_i64, { "r", "r" } }, + + { INDEX_op_ld8u_i64, { "r", "r" } }, + { INDEX_op_ld8s_i64, { "r", "r" } }, + { INDEX_op_ld16u_i64, { "r", "r" } }, + { INDEX_op_ld16s_i64, { "r", "r" } }, + { INDEX_op_ld32u_i64, { "r", "r" } }, + { INDEX_op_ld32s_i64, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "ri" } }, + { INDEX_op_mul_i32, { "r", "r", "ri" } }, + { INDEX_op_div_i32, { "r", "r", "r" } }, + { INDEX_op_divu_i32, { "r", "r", "r" } }, + { INDEX_op_rem_i32, { "r", "r", "r" } }, + { INDEX_op_remu_i32, { "r", "r", "r" } }, + { INDEX_op_sub_i32, { "r", "r", "ri" } }, + { INDEX_op_and_i32, { "r", "r", "ri" } }, + { INDEX_op_or_i32, { "r", "r", "ri" } }, + { INDEX_op_xor_i32, { "r", "r", "ri" } }, + + { INDEX_op_shl_i32, { "r", "r", "ri" } }, + { INDEX_op_shr_i32, { "r", "r", "ri" } }, + { INDEX_op_sar_i32, { "r", "r", "ri" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + { INDEX_op_brcond_i64, { "r", "ri" } }, + + { INDEX_op_neg_i32, { "r", "r" } }, + + { INDEX_op_add_i64, { "r", "r", "ri" } }, + { INDEX_op_sub_i64, { "r", "r", "ri" } }, + { INDEX_op_and_i64, { "r", "r", "rZ" } }, + { INDEX_op_or_i64, { "r", "r", "rZ" } }, + { INDEX_op_xor_i64, { "r", "r", "rZ" } }, + + { INDEX_op_shl_i64, { "r", "r", "ri" } }, + { INDEX_op_shr_i64, { "r", "r", "ri" } }, + { INDEX_op_sar_i64, { "r", "r", "ri" } }, + + { INDEX_op_mul_i64, { "r", "r", "r" } }, + { INDEX_op_div_i64, { "r", "r", "r" } }, + { INDEX_op_divu_i64, { "r", "r", "r" } }, + { INDEX_op_rem_i64, { "r", "r", "r" } }, + { INDEX_op_remu_i64, { "r", "r", "r" } }, + + { INDEX_op_neg_i64, { "r", "r" } }, + + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "L" } }, + + { INDEX_op_qemu_st8, { "S", "S" } }, + { INDEX_op_qemu_st16, { "S", "S" } }, + { INDEX_op_qemu_st32, { "S", "S" } }, + { INDEX_op_qemu_st64, { "S", "S" } }, + + { INDEX_op_ext8s_i32, { "r", "r" } }, + { INDEX_op_ext16s_i32, { "r", "r" } }, + { INDEX_op_ext8s_i64, { "r", "r" } }, + { INDEX_op_ext16s_i64, { "r", "r" } }, + { INDEX_op_ext32s_i64, { "r", "r" } }, + + { -1 }, +}; + +void tcg_target_init (TCGContext *s) +{ + tcg_regset_set32 (tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); + tcg_regset_set32 (tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffffffff); + tcg_regset_set32 (tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_R0) | +#ifdef __APPLE__ + (1 << TCG_REG_R2) | +#endif + (1 << TCG_REG_R3) | + (1 << TCG_REG_R4) | + (1 << TCG_REG_R5) | + (1 << TCG_REG_R6) | + (1 << TCG_REG_R7) | + (1 << TCG_REG_R8) | + (1 << TCG_REG_R9) | + (1 << TCG_REG_R10) | + (1 << TCG_REG_R11) | + (1 << TCG_REG_R12) + ); + + tcg_regset_clear (s->reserved_regs); + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R0); + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R1); +#ifndef __APPLE__ + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R2); +#endif + tcg_regset_set_reg (s->reserved_regs, TCG_REG_R13); + +#ifdef CONFIG_USE_GUEST_BASE + tcg_regset_set_reg(s->reserved_regs, TCG_GUEST_BASE_REG); +#endif + + tcg_add_target_add_op_defs (ppc_op_defs); +} diff --git a/qemu/qemu-git/tcg/ppc64/tcg-target.h b/qemu/qemu-git/tcg/ppc64/tcg-target.h new file mode 100644 index 0000000..94b800f --- /dev/null +++ b/qemu/qemu-git/tcg/ppc64/tcg-target.h @@ -0,0 +1,85 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_PPC64 1 + +#define TCG_TARGET_REG_BITS 64 +#define TCG_TARGET_WORDS_BIGENDIAN +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R16, + TCG_REG_R17, + TCG_REG_R18, + TCG_REG_R19, + TCG_REG_R20, + TCG_REG_R21, + TCG_REG_R22, + TCG_REG_R23, + TCG_REG_R24, + TCG_REG_R25, + TCG_REG_R26, + TCG_REG_R27, + TCG_REG_R28, + TCG_REG_R29, + TCG_REG_R30, + TCG_REG_R31 +}; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R1 +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_CALL_STACK_OFFSET 48 + +/* optional instructions */ +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_neg_i64 +#define TCG_TARGET_HAS_div_i64 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_ext8s_i64 +#define TCG_TARGET_HAS_ext16s_i64 +#define TCG_TARGET_HAS_ext32s_i64 + +#define TCG_AREG0 TCG_REG_R27 +#define TCG_AREG1 TCG_REG_R24 +#define TCG_AREG2 TCG_REG_R25 + +#define TCG_TARGET_HAS_GUEST_BASE diff --git a/qemu/qemu-git/tcg/s390/.svn/all-wcprops b/qemu/qemu-git/tcg/s390/.svn/all-wcprops new file mode 100644 index 0000000..27f6b30 --- /dev/null +++ b/qemu/qemu-git/tcg/s390/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/s390 +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/s390/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/s390/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/s390/.svn/entries b/qemu/qemu-git/tcg/s390/.svn/entries new file mode 100644 index 0000000..da0d838 --- /dev/null +++ b/qemu/qemu-git/tcg/s390/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/s390 +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +196d09851dc196bf4e4f77be61076d51 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +2922 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +a04f358b2b8f2c157a608cdc450336e6 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +2100 + diff --git a/qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..356b1a4 --- /dev/null +++ b/qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,105 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2009 Ulrich Hecht + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +static const int tcg_target_reg_alloc_order[] = { +}; + +static const int tcg_target_call_iarg_regs[] = { +}; + +static const int tcg_target_call_oarg_regs[] = { +}; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + tcg_abort(); +} + +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + tcg_abort(); + return 0; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + tcg_abort(); + return 0; +} + +/* Test if a constant matches the constraint. */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + tcg_abort(); + return 0; +} + +/* load a register with an immediate value */ +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + tcg_abort(); +} + +/* load data without address translation or endianness conversion */ +static inline void tcg_out_ld(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_abort(); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_abort(); +} + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + tcg_abort(); +} + +void tcg_target_init(TCGContext *s) +{ + /* gets called with KVM */ +} + +void tcg_target_qemu_prologue(TCGContext *s) +{ + /* gets called with KVM */ +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_abort(); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + tcg_abort(); +} diff --git a/qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..91b931d --- /dev/null +++ b/qemu/qemu-git/tcg/s390/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,69 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2009 Ulrich Hecht + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_S390 1 + +#define TCG_TARGET_REG_BITS 64 +#define TCG_TARGET_WORDS_BIGENDIAN + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15 +}; +#define TCG_TARGET_NB_REGS 16 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R15 +#define TCG_TARGET_STACK_ALIGN 8 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +enum { + /* Note: must be synced with dyngen-exec.h */ + TCG_AREG0 = TCG_REG_R10, + TCG_AREG1 = TCG_REG_R7, + TCG_AREG2 = TCG_REG_R8, + TCG_AREG3 = TCG_REG_R9, +}; + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +#if QEMU_GNUC_PREREQ(4, 1) + __builtin___clear_cache((char *) start, (char *) stop); +#else +#error not implemented +#endif +} diff --git a/qemu/qemu-git/tcg/s390/tcg-target.c b/qemu/qemu-git/tcg/s390/tcg-target.c new file mode 100644 index 0000000..356b1a4 --- /dev/null +++ b/qemu/qemu-git/tcg/s390/tcg-target.c @@ -0,0 +1,105 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2009 Ulrich Hecht + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +static const int tcg_target_reg_alloc_order[] = { +}; + +static const int tcg_target_call_iarg_regs[] = { +}; + +static const int tcg_target_call_oarg_regs[] = { +}; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + tcg_abort(); +} + +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + tcg_abort(); + return 0; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + tcg_abort(); + return 0; +} + +/* Test if a constant matches the constraint. */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + tcg_abort(); + return 0; +} + +/* load a register with an immediate value */ +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + tcg_abort(); +} + +/* load data without address translation or endianness conversion */ +static inline void tcg_out_ld(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_abort(); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + tcg_abort(); +} + +static inline void tcg_out_op(TCGContext *s, int opc, + const TCGArg *args, const int *const_args) +{ + tcg_abort(); +} + +void tcg_target_init(TCGContext *s) +{ + /* gets called with KVM */ +} + +void tcg_target_qemu_prologue(TCGContext *s) +{ + /* gets called with KVM */ +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_abort(); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + tcg_abort(); +} diff --git a/qemu/qemu-git/tcg/s390/tcg-target.h b/qemu/qemu-git/tcg/s390/tcg-target.h new file mode 100644 index 0000000..91b931d --- /dev/null +++ b/qemu/qemu-git/tcg/s390/tcg-target.h @@ -0,0 +1,69 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2009 Ulrich Hecht + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_S390 1 + +#define TCG_TARGET_REG_BITS 64 +#define TCG_TARGET_WORDS_BIGENDIAN + +enum { + TCG_REG_R0 = 0, + TCG_REG_R1, + TCG_REG_R2, + TCG_REG_R3, + TCG_REG_R4, + TCG_REG_R5, + TCG_REG_R6, + TCG_REG_R7, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15 +}; +#define TCG_TARGET_NB_REGS 16 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_R15 +#define TCG_TARGET_STACK_ALIGN 8 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +enum { + /* Note: must be synced with dyngen-exec.h */ + TCG_AREG0 = TCG_REG_R10, + TCG_AREG1 = TCG_REG_R7, + TCG_AREG2 = TCG_REG_R8, + TCG_AREG3 = TCG_REG_R9, +}; + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +#if QEMU_GNUC_PREREQ(4, 1) + __builtin___clear_cache((char *) start, (char *) stop); +#else +#error not implemented +#endif +} diff --git a/qemu/qemu-git/tcg/sparc/.svn/all-wcprops b/qemu/qemu-git/tcg/sparc/.svn/all-wcprops new file mode 100644 index 0000000..6137292 --- /dev/null +++ b/qemu/qemu-git/tcg/sparc/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/sparc +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 62 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/sparc/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/sparc/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/sparc/.svn/entries b/qemu/qemu-git/tcg/sparc/.svn/entries new file mode 100644 index 0000000..85306ba --- /dev/null +++ b/qemu/qemu-git/tcg/sparc/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/sparc +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +cc77a7d54b957ded0a3786999f2e9927 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +44214 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +a9dea207a3126127d800fcb06a8ac4db +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +3583 + diff --git a/qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..dd7a598 --- /dev/null +++ b/qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,1402 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%g0", + "%g1", + "%g2", + "%g3", + "%g4", + "%g5", + "%g6", + "%g7", + "%o0", + "%o1", + "%o2", + "%o3", + "%o4", + "%o5", + "%o6", + "%o7", + "%l0", + "%l1", + "%l2", + "%l3", + "%l4", + "%l5", + "%l6", + "%l7", + "%i0", + "%i1", + "%i2", + "%i3", + "%i4", + "%i5", + "%i6", + "%i7", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_L0, + TCG_REG_L1, + TCG_REG_L2, + TCG_REG_L3, + TCG_REG_L4, + TCG_REG_L5, + TCG_REG_L6, + TCG_REG_L7, + TCG_REG_I0, + TCG_REG_I1, + TCG_REG_I2, + TCG_REG_I3, + TCG_REG_I4, +}; + +static const int tcg_target_call_iarg_regs[6] = { + TCG_REG_O0, + TCG_REG_O1, + TCG_REG_O2, + TCG_REG_O3, + TCG_REG_O4, + TCG_REG_O5, +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_O0, + TCG_REG_O1, +}; + +static inline int check_fit_tl(tcg_target_long val, unsigned int bits) +{ + return (val << ((sizeof(tcg_target_long) * 8 - bits)) + >> (sizeof(tcg_target_long) * 8 - bits)) == val; +} + +static inline int check_fit_i32(uint32_t val, unsigned int bits) +{ + return ((val << (32 - bits)) >> (32 - bits)) == val; +} + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch (type) { + case R_SPARC_32: + if (value != (uint32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + case R_SPARC_WDISP22: + value -= (long)code_ptr; + value >>= 2; + if (!check_fit_tl(value, 22)) + tcg_abort(); + *(uint32_t *)code_ptr = ((*(uint32_t *)code_ptr) & ~0x3fffff) | value; + break; + case R_SPARC_WDISP19: + value -= (long)code_ptr; + value >>= 2; + if (!check_fit_tl(value, 19)) + tcg_abort(); + *(uint32_t *)code_ptr = ((*(uint32_t *)code_ptr) & ~0x7ffff) | value; + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 6; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; + case 'L': /* qemu_ld/st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + // Helper args + tcg_regset_reset_reg(ct->u.regs, TCG_REG_O0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_O1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_O2); + break; + case 'I': + ct->ct |= TCG_CT_CONST_S11; + break; + case 'J': + ct->ct |= TCG_CT_CONST_S13; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_S11) && check_fit_tl(val, 11)) + return 1; + else if ((ct & TCG_CT_CONST_S13) && check_fit_tl(val, 13)) + return 1; + else + return 0; +} + +#define INSN_OP(x) ((x) << 30) +#define INSN_OP2(x) ((x) << 22) +#define INSN_OP3(x) ((x) << 19) +#define INSN_OPF(x) ((x) << 5) +#define INSN_RD(x) ((x) << 25) +#define INSN_RS1(x) ((x) << 14) +#define INSN_RS2(x) (x) +#define INSN_ASI(x) ((x) << 5) + +#define INSN_IMM13(x) ((1 << 13) | ((x) & 0x1fff)) +#define INSN_OFF19(x) (((x) >> 2) & 0x07ffff) +#define INSN_OFF22(x) (((x) >> 2) & 0x3fffff) + +#define INSN_COND(x, a) (((x) << 25) | ((a) << 29)) +#define COND_N 0x0 +#define COND_E 0x1 +#define COND_LE 0x2 +#define COND_L 0x3 +#define COND_LEU 0x4 +#define COND_CS 0x5 +#define COND_NEG 0x6 +#define COND_VS 0x7 +#define COND_A 0x8 +#define COND_NE 0x9 +#define COND_G 0xa +#define COND_GE 0xb +#define COND_GU 0xc +#define COND_CC 0xd +#define COND_POS 0xe +#define COND_VC 0xf +#define BA (INSN_OP(0) | INSN_COND(COND_A, 0) | INSN_OP2(0x2)) + +#define ARITH_ADD (INSN_OP(2) | INSN_OP3(0x00)) +#define ARITH_ADDCC (INSN_OP(2) | INSN_OP3(0x10)) +#define ARITH_AND (INSN_OP(2) | INSN_OP3(0x01)) +#define ARITH_OR (INSN_OP(2) | INSN_OP3(0x02)) +#define ARITH_ORCC (INSN_OP(2) | INSN_OP3(0x12)) +#define ARITH_XOR (INSN_OP(2) | INSN_OP3(0x03)) +#define ARITH_SUB (INSN_OP(2) | INSN_OP3(0x04)) +#define ARITH_SUBCC (INSN_OP(2) | INSN_OP3(0x14)) +#define ARITH_ADDX (INSN_OP(2) | INSN_OP3(0x10)) +#define ARITH_SUBX (INSN_OP(2) | INSN_OP3(0x0c)) +#define ARITH_UMUL (INSN_OP(2) | INSN_OP3(0x0a)) +#define ARITH_UDIV (INSN_OP(2) | INSN_OP3(0x0e)) +#define ARITH_SDIV (INSN_OP(2) | INSN_OP3(0x0f)) +#define ARITH_MULX (INSN_OP(2) | INSN_OP3(0x09)) +#define ARITH_UDIVX (INSN_OP(2) | INSN_OP3(0x0d)) +#define ARITH_SDIVX (INSN_OP(2) | INSN_OP3(0x2d)) + +#define SHIFT_SLL (INSN_OP(2) | INSN_OP3(0x25)) +#define SHIFT_SRL (INSN_OP(2) | INSN_OP3(0x26)) +#define SHIFT_SRA (INSN_OP(2) | INSN_OP3(0x27)) + +#define SHIFT_SLLX (INSN_OP(2) | INSN_OP3(0x25) | (1 << 12)) +#define SHIFT_SRLX (INSN_OP(2) | INSN_OP3(0x26) | (1 << 12)) +#define SHIFT_SRAX (INSN_OP(2) | INSN_OP3(0x27) | (1 << 12)) + +#define RDY (INSN_OP(2) | INSN_OP3(0x28) | INSN_RS1(0)) +#define WRY (INSN_OP(2) | INSN_OP3(0x30) | INSN_RD(0)) +#define JMPL (INSN_OP(2) | INSN_OP3(0x38)) +#define SAVE (INSN_OP(2) | INSN_OP3(0x3c)) +#define RESTORE (INSN_OP(2) | INSN_OP3(0x3d)) +#define SETHI (INSN_OP(0) | INSN_OP2(0x4)) +#define CALL INSN_OP(1) +#define LDUB (INSN_OP(3) | INSN_OP3(0x01)) +#define LDSB (INSN_OP(3) | INSN_OP3(0x09)) +#define LDUH (INSN_OP(3) | INSN_OP3(0x02)) +#define LDSH (INSN_OP(3) | INSN_OP3(0x0a)) +#define LDUW (INSN_OP(3) | INSN_OP3(0x00)) +#define LDSW (INSN_OP(3) | INSN_OP3(0x08)) +#define LDX (INSN_OP(3) | INSN_OP3(0x0b)) +#define STB (INSN_OP(3) | INSN_OP3(0x05)) +#define STH (INSN_OP(3) | INSN_OP3(0x06)) +#define STW (INSN_OP(3) | INSN_OP3(0x04)) +#define STX (INSN_OP(3) | INSN_OP3(0x0e)) +#define LDUBA (INSN_OP(3) | INSN_OP3(0x11)) +#define LDSBA (INSN_OP(3) | INSN_OP3(0x19)) +#define LDUHA (INSN_OP(3) | INSN_OP3(0x12)) +#define LDSHA (INSN_OP(3) | INSN_OP3(0x1a)) +#define LDUWA (INSN_OP(3) | INSN_OP3(0x10)) +#define LDSWA (INSN_OP(3) | INSN_OP3(0x18)) +#define LDXA (INSN_OP(3) | INSN_OP3(0x1b)) +#define STBA (INSN_OP(3) | INSN_OP3(0x15)) +#define STHA (INSN_OP(3) | INSN_OP3(0x16)) +#define STWA (INSN_OP(3) | INSN_OP3(0x14)) +#define STXA (INSN_OP(3) | INSN_OP3(0x1e)) + +#ifndef ASI_PRIMARY_LITTLE +#define ASI_PRIMARY_LITTLE 0x88 +#endif + +static inline void tcg_out_arith(TCGContext *s, int rd, int rs1, int rs2, + int op) +{ + tcg_out32(s, op | INSN_RD(rd) | INSN_RS1(rs1) | + INSN_RS2(rs2)); +} + +static inline void tcg_out_arithi(TCGContext *s, int rd, int rs1, + uint32_t offset, int op) +{ + tcg_out32(s, op | INSN_RD(rd) | INSN_RS1(rs1) | + INSN_IMM13(offset)); +} + +static void tcg_out_arithc(TCGContext *s, int rd, int rs1, + int val2, int val2const, int op) +{ + tcg_out32(s, op | INSN_RD(rd) | INSN_RS1(rs1) + | (val2const ? INSN_IMM13(val2) : INSN_RS2(val2))); +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_arith(s, ret, arg, TCG_REG_G0, ARITH_OR); +} + +static inline void tcg_out_sethi(TCGContext *s, int ret, uint32_t arg) +{ + tcg_out32(s, SETHI | INSN_RD(ret) | ((arg & 0xfffffc00) >> 10)); +} + +static inline void tcg_out_movi_imm13(TCGContext *s, int ret, uint32_t arg) +{ + tcg_out_arithi(s, ret, TCG_REG_G0, arg, ARITH_OR); +} + +static inline void tcg_out_movi_imm32(TCGContext *s, int ret, uint32_t arg) +{ + if (check_fit_tl(arg, 13)) + tcg_out_movi_imm13(s, ret, arg); + else { + tcg_out_sethi(s, ret, arg); + if (arg & 0x3ff) + tcg_out_arithi(s, ret, ret, arg & 0x3ff, ARITH_OR); + } +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + /* All 32-bit constants, as well as 64-bit constants with + no high bits set go through movi_imm32. */ + if (TCG_TARGET_REG_BITS == 32 + || type == TCG_TYPE_I32 + || (arg & ~(tcg_target_long)0xffffffff) == 0) { + tcg_out_movi_imm32(s, ret, arg); + } else if (check_fit_tl(arg, 13)) { + /* A 13-bit constant sign-extended to 64-bits. */ + tcg_out_movi_imm13(s, ret, arg); + } else if (check_fit_tl(arg, 32)) { + /* A 32-bit constant sign-extended to 64-bits. */ + tcg_out_sethi(s, ret, ~arg); + tcg_out_arithi(s, ret, ret, (arg & 0x3ff) | -0x400, ARITH_XOR); + } else { + tcg_out_movi_imm32(s, TCG_REG_I4, arg >> (TCG_TARGET_REG_BITS / 2)); + tcg_out_arithi(s, TCG_REG_I4, TCG_REG_I4, 32, SHIFT_SLLX); + tcg_out_movi_imm32(s, ret, arg); + tcg_out_arith(s, ret, ret, TCG_REG_I4, ARITH_OR); + } +} + +static inline void tcg_out_ld_raw(TCGContext *s, int ret, + tcg_target_long arg) +{ + tcg_out_sethi(s, ret, arg); + tcg_out32(s, LDUW | INSN_RD(ret) | INSN_RS1(ret) | + INSN_IMM13(arg & 0x3ff)); +} + +static inline void tcg_out_ld_ptr(TCGContext *s, int ret, + tcg_target_long arg) +{ + if (!check_fit_tl(arg, 10)) + tcg_out_movi(s, TCG_TYPE_PTR, ret, arg & ~0x3ffULL); + if (TCG_TARGET_REG_BITS == 64) { + tcg_out32(s, LDX | INSN_RD(ret) | INSN_RS1(ret) | + INSN_IMM13(arg & 0x3ff)); + } else { + tcg_out32(s, LDUW | INSN_RD(ret) | INSN_RS1(ret) | + INSN_IMM13(arg & 0x3ff)); + } +} + +static inline void tcg_out_ldst(TCGContext *s, int ret, int addr, int offset, int op) +{ + if (check_fit_tl(offset, 13)) + tcg_out32(s, op | INSN_RD(ret) | INSN_RS1(addr) | + INSN_IMM13(offset)); + else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I5, offset); + tcg_out32(s, op | INSN_RD(ret) | INSN_RS1(TCG_REG_I5) | + INSN_RS2(addr)); + } +} + +static inline void tcg_out_ldst_asi(TCGContext *s, int ret, int addr, + int offset, int op, int asi) +{ + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I5, offset); + tcg_out32(s, op | INSN_RD(ret) | INSN_RS1(TCG_REG_I5) | + INSN_ASI(asi) | INSN_RS2(addr)); +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst(s, ret, arg1, arg2, LDUW); + else + tcg_out_ldst(s, ret, arg1, arg2, LDX); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst(s, arg, arg1, arg2, STW); + else + tcg_out_ldst(s, arg, arg1, arg2, STX); +} + +static inline void tcg_out_sety(TCGContext *s, int rs) +{ + tcg_out32(s, WRY | INSN_RS1(TCG_REG_G0) | INSN_RS2(rs)); +} + +static inline void tcg_out_rdy(TCGContext *s, int rd) +{ + tcg_out32(s, RDY | INSN_RD(rd)); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) { + if (check_fit_tl(val, 13)) + tcg_out_arithi(s, reg, reg, val, ARITH_ADD); + else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I5, val); + tcg_out_arith(s, reg, reg, TCG_REG_I5, ARITH_ADD); + } + } +} + +static inline void tcg_out_andi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) { + if (check_fit_tl(val, 13)) + tcg_out_arithi(s, reg, reg, val, ARITH_AND); + else { + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, val); + tcg_out_arith(s, reg, reg, TCG_REG_I5, ARITH_AND); + } + } +} + +static void tcg_out_div32(TCGContext *s, int rd, int rs1, + int val2, int val2const, int uns) +{ + /* Load Y with the sign/zero extension of RS1 to 64-bits. */ + if (uns) { + tcg_out_sety(s, TCG_REG_G0); + } else { + tcg_out_arithi(s, TCG_REG_I5, rs1, 31, SHIFT_SRA); + tcg_out_sety(s, TCG_REG_I5); + } + + tcg_out_arithc(s, rd, rs1, val2, val2const, + uns ? ARITH_UDIV : ARITH_SDIV); +} + +static inline void tcg_out_nop(TCGContext *s) +{ + tcg_out_sethi(s, TCG_REG_G0, 0); +} + +static void tcg_out_branch_i32(TCGContext *s, int opc, int label_index) +{ + int32_t val; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x2) + | INSN_OFF22(l->u.value - (unsigned long)s->code_ptr))); + } else { + tcg_out_reloc(s, s->code_ptr, R_SPARC_WDISP22, label_index, 0); + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x2) | 0)); + } +} + +#if TCG_TARGET_REG_BITS == 64 +static void tcg_out_branch_i64(TCGContext *s, int opc, int label_index) +{ + int32_t val; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x1) | + (0x5 << 19) | + INSN_OFF19(l->u.value - (unsigned long)s->code_ptr))); + } else { + tcg_out_reloc(s, s->code_ptr, R_SPARC_WDISP19, label_index, 0); + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x1) | + (0x5 << 19) | 0)); + } +} +#endif + +static const uint8_t tcg_cond_to_bcond[10] = { + [TCG_COND_EQ] = COND_E, + [TCG_COND_NE] = COND_NE, + [TCG_COND_LT] = COND_L, + [TCG_COND_GE] = COND_GE, + [TCG_COND_LE] = COND_LE, + [TCG_COND_GT] = COND_G, + [TCG_COND_LTU] = COND_CS, + [TCG_COND_GEU] = COND_CC, + [TCG_COND_LEU] = COND_LEU, + [TCG_COND_GTU] = COND_GU, +}; + +static void tcg_out_cmp(TCGContext *s, TCGArg c1, TCGArg c2, int c2const) +{ + tcg_out_arithc(s, TCG_REG_G0, c1, c2, c2const, ARITH_SUBCC); +} + +static void tcg_out_brcond_i32(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + tcg_out_cmp(s, arg1, arg2, const_arg2); + tcg_out_branch_i32(s, tcg_cond_to_bcond[cond], label_index); + tcg_out_nop(s); +} + +#if TCG_TARGET_REG_BITS == 64 +static void tcg_out_brcond_i64(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + tcg_out_cmp(s, arg1, arg2, const_arg2); + tcg_out_branch_i64(s, tcg_cond_to_bcond[cond], label_index); + tcg_out_nop(s); +} +#else +static void tcg_out_brcond2_i32(TCGContext *s, int cond, + TCGArg al, TCGArg ah, + TCGArg bl, int blconst, + TCGArg bh, int bhconst, int label_dest) +{ + int cc, label_next = gen_new_label(); + + tcg_out_cmp(s, ah, bh, bhconst); + + /* Note that we fill one of the delay slots with the second compare. */ + switch (cond) { + case TCG_COND_EQ: + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_NE], 0); + tcg_out_branch_i32(s, cc, label_next); + tcg_out_cmp(s, al, bl, blconst); + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_EQ], 0); + tcg_out_branch_i32(s, cc, label_dest); + break; + + case TCG_COND_NE: + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_NE], 0); + tcg_out_branch_i32(s, cc, label_dest); + tcg_out_cmp(s, al, bl, blconst); + tcg_out_branch_i32(s, cc, label_dest); + break; + + default: + /* ??? One could fairly easily special-case 64-bit unsigned + compares against 32-bit zero-extended constants. For instance, + we know that (unsigned)AH < 0 is false and need not emit it. + Similarly, (unsigned)AH > 0 being true implies AH != 0, so the + second branch will never be taken. */ + cc = INSN_COND(tcg_cond_to_bcond[cond], 0); + tcg_out_branch_i32(s, cc, label_dest); + tcg_out_nop(s); + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_NE], 0); + tcg_out_branch_i32(s, cc, label_next); + tcg_out_cmp(s, al, bl, blconst); + cc = INSN_COND(tcg_cond_to_bcond[tcg_unsigned_cond(cond)], 0); + tcg_out_branch_i32(s, cc, label_dest); + break; + } + tcg_out_nop(s); + + tcg_out_label(s, label_next, (tcg_target_long)s->code_ptr); +} +#endif + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + tcg_out32(s, SAVE | INSN_RD(TCG_REG_O6) | INSN_RS1(TCG_REG_O6) | + INSN_IMM13(-TCG_TARGET_STACK_MINFRAME)); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I0) | + INSN_RS2(TCG_REG_G0)); + tcg_out_nop(s); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static const void * const qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static const void * const qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +#if TARGET_LONG_BITS == 32 +#define TARGET_LD_OP LDUW +#else +#define TARGET_LD_OP LDX +#endif + +#if TARGET_PHYS_ADDR_BITS == 32 +#define TARGET_ADDEND_LD_OP LDUW +#else +#define TARGET_ADDEND_LD_OP LDX +#endif + +#ifdef __arch64__ +#define HOST_LD_OP LDX +#define HOST_ST_OP STX +#define HOST_SLL_OP SHIFT_SLLX +#define HOST_SRA_OP SHIFT_SRAX +#else +#define HOST_LD_OP LDUW +#define HOST_ST_OP STW +#define HOST_SLL_OP SHIFT_SLL +#define HOST_SRA_OP SHIFT_SRA +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, arg0, arg1, arg2, mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + s_bits = opc & 3; + + arg0 = TCG_REG_O0; + arg1 = TCG_REG_O1; + arg2 = TCG_REG_O2; + +#if defined(CONFIG_SOFTMMU) + /* srl addr_reg, x, arg1 */ + tcg_out_arithi(s, arg1, addr_reg, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS, + SHIFT_SRL); + /* and addr_reg, x, arg0 */ + tcg_out_arithi(s, arg0, addr_reg, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + /* and arg1, x, arg1 */ + tcg_out_andi(s, arg1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* add arg1, x, arg1 */ + tcg_out_addi(s, arg1, offsetof(CPUState, + tlb_table[mem_index][0].addr_read)); + + /* add env, arg1, arg1 */ + tcg_out_arith(s, arg1, TCG_AREG0, arg1, ARITH_ADD); + + /* ld [arg1], arg2 */ + tcg_out32(s, TARGET_LD_OP | INSN_RD(arg2) | INSN_RS1(arg1) | + INSN_RS2(TCG_REG_G0)); + + /* subcc arg0, arg2, %g0 */ + tcg_out_arith(s, TCG_REG_G0, arg0, arg2, ARITH_SUBCC); + + /* will become: + be label1 + or + be,pt %xcc label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* mov (delay slot) */ + tcg_out_mov(s, arg0, addr_reg); + + /* mov */ + tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index); + + /* XXX: move that code at the end of the TB */ + /* qemu_ld_helper[s_bits](arg0, arg1) */ + tcg_out32(s, CALL | ((((tcg_target_ulong)qemu_ld_helpers[s_bits] + - (tcg_target_ulong)s->code_ptr) >> 2) + & 0x3fffffff)); + /* Store AREG0 in stack to avoid ugly glibc bugs that mangle + global registers */ + // delay slot + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_ST_OP); + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_LD_OP); + + /* data_reg = sign_extend(arg0) */ + switch(opc) { + case 0 | 4: + /* sll arg0, 24/56, data_reg */ + tcg_out_arithi(s, data_reg, arg0, (int)sizeof(tcg_target_long) * 8 - 8, + HOST_SLL_OP); + /* sra data_reg, 24/56, data_reg */ + tcg_out_arithi(s, data_reg, data_reg, + (int)sizeof(tcg_target_long) * 8 - 8, HOST_SRA_OP); + break; + case 1 | 4: + /* sll arg0, 16/48, data_reg */ + tcg_out_arithi(s, data_reg, arg0, + (int)sizeof(tcg_target_long) * 8 - 16, HOST_SLL_OP); + /* sra data_reg, 16/48, data_reg */ + tcg_out_arithi(s, data_reg, data_reg, + (int)sizeof(tcg_target_long) * 8 - 16, HOST_SRA_OP); + break; + case 2 | 4: + /* sll arg0, 32, data_reg */ + tcg_out_arithi(s, data_reg, arg0, 32, HOST_SLL_OP); + /* sra data_reg, 32, data_reg */ + tcg_out_arithi(s, data_reg, data_reg, 32, HOST_SRA_OP); + break; + case 0: + case 1: + case 2: + case 3: + default: + /* mov */ + tcg_out_mov(s, data_reg, arg0); + break; + } + + /* will become: + ba label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* nop (delay slot */ + tcg_out_nop(s); + + /* label1: */ +#if TARGET_LONG_BITS == 32 + /* be label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#else + /* be,pt %xcc label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x1) | + (0x5 << 19) | INSN_OFF19((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#endif + + /* ld [arg1 + x], arg1 */ + tcg_out_ldst(s, arg1, arg1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_read), TARGET_ADDEND_LD_OP); + +#if TARGET_LONG_BITS == 32 + /* and addr_reg, x, arg0 */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, 0xffffffff); + tcg_out_arith(s, arg0, addr_reg, TCG_REG_I5, ARITH_AND); + /* add arg0, arg1, arg0 */ + tcg_out_arith(s, arg0, arg0, arg1, ARITH_ADD); +#else + /* add addr_reg, arg1, arg0 */ + tcg_out_arith(s, arg0, addr_reg, arg1, ARITH_ADD); +#endif + +#else + arg0 = addr_reg; +#endif + + switch(opc) { + case 0: + /* ldub [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDUB); + break; + case 0 | 4: + /* ldsb [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDSB); + break; + case 1: +#ifdef TARGET_WORDS_BIGENDIAN + /* lduh [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDUH); +#else + /* lduha [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDUHA, ASI_PRIMARY_LITTLE); +#endif + break; + case 1 | 4: +#ifdef TARGET_WORDS_BIGENDIAN + /* ldsh [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDSH); +#else + /* ldsha [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDSHA, ASI_PRIMARY_LITTLE); +#endif + break; + case 2: +#ifdef TARGET_WORDS_BIGENDIAN + /* lduw [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDUW); +#else + /* lduwa [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDUWA, ASI_PRIMARY_LITTLE); +#endif + break; + case 2 | 4: +#ifdef TARGET_WORDS_BIGENDIAN + /* ldsw [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDSW); +#else + /* ldswa [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDSWA, ASI_PRIMARY_LITTLE); +#endif + break; + case 3: +#ifdef TARGET_WORDS_BIGENDIAN + /* ldx [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDX); +#else + /* ldxa [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDXA, ASI_PRIMARY_LITTLE); +#endif + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = (INSN_OP(0) | INSN_COND(COND_A, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label2_ptr)); +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, arg0, arg1, arg2, mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + + s_bits = opc; + + arg0 = TCG_REG_O0; + arg1 = TCG_REG_O1; + arg2 = TCG_REG_O2; + +#if defined(CONFIG_SOFTMMU) + /* srl addr_reg, x, arg1 */ + tcg_out_arithi(s, arg1, addr_reg, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS, + SHIFT_SRL); + + /* and addr_reg, x, arg0 */ + tcg_out_arithi(s, arg0, addr_reg, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + /* and arg1, x, arg1 */ + tcg_out_andi(s, arg1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* add arg1, x, arg1 */ + tcg_out_addi(s, arg1, offsetof(CPUState, + tlb_table[mem_index][0].addr_write)); + + /* add env, arg1, arg1 */ + tcg_out_arith(s, arg1, TCG_AREG0, arg1, ARITH_ADD); + + /* ld [arg1], arg2 */ + tcg_out32(s, TARGET_LD_OP | INSN_RD(arg2) | INSN_RS1(arg1) | + INSN_RS2(TCG_REG_G0)); + + /* subcc arg0, arg2, %g0 */ + tcg_out_arith(s, TCG_REG_G0, arg0, arg2, ARITH_SUBCC); + + /* will become: + be label1 + or + be,pt %xcc label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* mov (delay slot) */ + tcg_out_mov(s, arg0, addr_reg); + + /* mov */ + tcg_out_mov(s, arg1, data_reg); + + /* mov */ + tcg_out_movi(s, TCG_TYPE_I32, arg2, mem_index); + + /* XXX: move that code at the end of the TB */ + /* qemu_st_helper[s_bits](arg0, arg1, arg2) */ + tcg_out32(s, CALL | ((((tcg_target_ulong)qemu_st_helpers[s_bits] + - (tcg_target_ulong)s->code_ptr) >> 2) + & 0x3fffffff)); + /* Store AREG0 in stack to avoid ugly glibc bugs that mangle + global registers */ + // delay slot + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_ST_OP); + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_LD_OP); + + /* will become: + ba label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* nop (delay slot) */ + tcg_out_nop(s); + +#if TARGET_LONG_BITS == 32 + /* be label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#else + /* be,pt %xcc label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x1) | + (0x5 << 19) | INSN_OFF19((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#endif + + /* ld [arg1 + x], arg1 */ + tcg_out_ldst(s, arg1, arg1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_write), TARGET_ADDEND_LD_OP); + +#if TARGET_LONG_BITS == 32 + /* and addr_reg, x, arg0 */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, 0xffffffff); + tcg_out_arith(s, arg0, addr_reg, TCG_REG_I5, ARITH_AND); + /* add arg0, arg1, arg0 */ + tcg_out_arith(s, arg0, arg0, arg1, ARITH_ADD); +#else + /* add addr_reg, arg1, arg0 */ + tcg_out_arith(s, arg0, addr_reg, arg1, ARITH_ADD); +#endif + +#else + arg0 = addr_reg; +#endif + + switch(opc) { + case 0: + /* stb data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STB); + break; + case 1: +#ifdef TARGET_WORDS_BIGENDIAN + /* sth data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STH); +#else + /* stha data_reg, [arg0] ASI_PRIMARY_LITTLE */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, STHA, ASI_PRIMARY_LITTLE); +#endif + break; + case 2: +#ifdef TARGET_WORDS_BIGENDIAN + /* stw data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STW); +#else + /* stwa data_reg, [arg0] ASI_PRIMARY_LITTLE */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, STWA, ASI_PRIMARY_LITTLE); +#endif + break; + case 3: +#ifdef TARGET_WORDS_BIGENDIAN + /* stx data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STX); +#else + /* stxa data_reg, [arg0] ASI_PRIMARY_LITTLE */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, STXA, ASI_PRIMARY_LITTLE); +#endif + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = (INSN_OP(0) | INSN_COND(COND_A, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label2_ptr)); +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I0, args[0]); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I7) | + INSN_IMM13(8)); + tcg_out32(s, RESTORE | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_G0) | + INSN_RS2(TCG_REG_G0)); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_out_sethi(s, TCG_REG_I5, args[0] & 0xffffe000); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I5) | + INSN_IMM13((args[0] & 0x1fff))); + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + } else { + /* indirect jump method */ + tcg_out_ld_ptr(s, TCG_REG_I5, (tcg_target_long)(s->tb_next + args[0])); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I5) | + INSN_RS2(TCG_REG_G0)); + } + tcg_out_nop(s); + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) + tcg_out32(s, CALL | ((((tcg_target_ulong)args[0] + - (tcg_target_ulong)s->code_ptr) >> 2) + & 0x3fffffff)); + else { + tcg_out_ld_ptr(s, TCG_REG_I5, + (tcg_target_long)(s->tb_next + args[0])); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_O7) | INSN_RS1(TCG_REG_I5) | + INSN_RS2(TCG_REG_G0)); + } + /* Store AREG0 in stack to avoid ugly glibc bugs that mangle + global registers */ + // delay slot + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_ST_OP); + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_LD_OP); + break; + case INDEX_op_jmp: + case INDEX_op_br: + tcg_out_branch_i32(s, COND_A, args[0]); + tcg_out_nop(s); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], (uint32_t)args[1]); + break; + +#if TCG_TARGET_REG_BITS == 64 +#define OP_32_64(x) \ + glue(glue(case INDEX_op_, x), _i32): \ + glue(glue(case INDEX_op_, x), _i64) +#else +#define OP_32_64(x) \ + glue(glue(case INDEX_op_, x), _i32) +#endif + OP_32_64(ld8u): + tcg_out_ldst(s, args[0], args[1], args[2], LDUB); + break; + OP_32_64(ld8s): + tcg_out_ldst(s, args[0], args[1], args[2], LDSB); + break; + OP_32_64(ld16u): + tcg_out_ldst(s, args[0], args[1], args[2], LDUH); + break; + OP_32_64(ld16s): + tcg_out_ldst(s, args[0], args[1], args[2], LDSH); + break; + case INDEX_op_ld_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_ld32u_i64: +#endif + tcg_out_ldst(s, args[0], args[1], args[2], LDUW); + break; + OP_32_64(st8): + tcg_out_ldst(s, args[0], args[1], args[2], STB); + break; + OP_32_64(st16): + tcg_out_ldst(s, args[0], args[1], args[2], STH); + break; + case INDEX_op_st_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_st32_i64: +#endif + tcg_out_ldst(s, args[0], args[1], args[2], STW); + break; + OP_32_64(add): + c = ARITH_ADD; + goto gen_arith; + OP_32_64(sub): + c = ARITH_SUB; + goto gen_arith; + OP_32_64(and): + c = ARITH_AND; + goto gen_arith; + OP_32_64(or): + c = ARITH_OR; + goto gen_arith; + OP_32_64(xor): + c = ARITH_XOR; + goto gen_arith; + case INDEX_op_shl_i32: + c = SHIFT_SLL; + goto gen_arith; + case INDEX_op_shr_i32: + c = SHIFT_SRL; + goto gen_arith; + case INDEX_op_sar_i32: + c = SHIFT_SRA; + goto gen_arith; + case INDEX_op_mul_i32: + c = ARITH_UMUL; + goto gen_arith; + + case INDEX_op_div_i32: + tcg_out_div32(s, args[0], args[1], args[2], const_args[2], 0); + break; + case INDEX_op_divu_i32: + tcg_out_div32(s, args[0], args[1], args[2], const_args[2], 1); + break; + + case INDEX_op_rem_i32: + case INDEX_op_remu_i32: + tcg_out_div32(s, TCG_REG_I5, args[1], args[2], const_args[2], + opc == INDEX_op_remu_i32); + tcg_out_arithc(s, TCG_REG_I5, TCG_REG_I5, args[2], const_args[2], + ARITH_UMUL); + tcg_out_arith(s, args[0], args[1], TCG_REG_I5, ARITH_SUB); + break; + + case INDEX_op_brcond_i32: + tcg_out_brcond_i32(s, args[2], args[0], args[1], const_args[1], + args[3]); + break; +#if TCG_TARGET_REG_BITS == 32 + case INDEX_op_brcond2_i32: + tcg_out_brcond2_i32(s, args[4], args[0], args[1], + args[2], const_args[2], + args[3], const_args[3], args[5]); + break; + case INDEX_op_add2_i32: + tcg_out_arithc(s, args[0], args[2], args[4], const_args[4], + ARITH_ADDCC); + tcg_out_arithc(s, args[1], args[3], args[5], const_args[5], + ARITH_ADDX); + break; + case INDEX_op_sub2_i32: + tcg_out_arithc(s, args[0], args[2], args[4], const_args[4], + ARITH_SUBCC); + tcg_out_arithc(s, args[1], args[3], args[5], const_args[5], + ARITH_SUBX); + break; + case INDEX_op_mulu2_i32: + tcg_out_arithc(s, args[0], args[2], args[3], const_args[3], + ARITH_UMUL); + tcg_out_rdy(s, args[1]); + break; +#endif + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld32s: + tcg_out_qemu_ld(s, args, 2 | 4); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_movi_i64: + tcg_out_movi(s, TCG_TYPE_I64, args[0], args[1]); + break; + case INDEX_op_ld32s_i64: + tcg_out_ldst(s, args[0], args[1], args[2], LDSW); + break; + case INDEX_op_ld_i64: + tcg_out_ldst(s, args[0], args[1], args[2], LDX); + break; + case INDEX_op_st_i64: + tcg_out_ldst(s, args[0], args[1], args[2], STX); + break; + case INDEX_op_shl_i64: + c = SHIFT_SLLX; + goto gen_arith; + case INDEX_op_shr_i64: + c = SHIFT_SRLX; + goto gen_arith; + case INDEX_op_sar_i64: + c = SHIFT_SRAX; + goto gen_arith; + case INDEX_op_mul_i64: + c = ARITH_MULX; + goto gen_arith; + case INDEX_op_div_i64: + c = ARITH_SDIVX; + goto gen_arith; + case INDEX_op_divu_i64: + c = ARITH_UDIVX; + goto gen_arith; + case INDEX_op_rem_i64: + case INDEX_op_remu_i64: + tcg_out_arithc(s, TCG_REG_I5, args[1], args[2], const_args[2], + opc == INDEX_op_rem_i64 ? ARITH_SDIVX : ARITH_UDIVX); + tcg_out_arithc(s, TCG_REG_I5, TCG_REG_I5, args[2], const_args[2], + ARITH_MULX); + tcg_out_arith(s, args[0], args[1], TCG_REG_I5, ARITH_SUB); + break; + case INDEX_op_ext32s_i64: + if (const_args[1]) { + tcg_out_movi(s, TCG_TYPE_I64, args[0], (int32_t)args[1]); + } else { + tcg_out_arithi(s, args[0], args[1], 0, SHIFT_SRA); + } + break; + case INDEX_op_ext32u_i64: + if (const_args[1]) { + tcg_out_movi_imm32(s, args[0], args[1]); + } else { + tcg_out_arithi(s, args[0], args[1], 0, SHIFT_SRL); + } + break; + + case INDEX_op_brcond_i64: + tcg_out_brcond_i64(s, args[2], args[0], args[1], const_args[1], + args[3]); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + +#endif + gen_arith: + tcg_out_arithc(s, args[0], args[1], args[2], const_args[2], c); + break; + + default: + fprintf(stderr, "unknown opcode 0x%x\n", opc); + tcg_abort(); + } +} + +static const TCGTargetOpDef sparc_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "rJ" } }, + { INDEX_op_mul_i32, { "r", "r", "rJ" } }, + { INDEX_op_div_i32, { "r", "r", "rJ" } }, + { INDEX_op_divu_i32, { "r", "r", "rJ" } }, + { INDEX_op_rem_i32, { "r", "r", "rJ" } }, + { INDEX_op_remu_i32, { "r", "r", "rJ" } }, + { INDEX_op_sub_i32, { "r", "r", "rJ" } }, + { INDEX_op_and_i32, { "r", "r", "rJ" } }, + { INDEX_op_or_i32, { "r", "r", "rJ" } }, + { INDEX_op_xor_i32, { "r", "r", "rJ" } }, + + { INDEX_op_shl_i32, { "r", "r", "rJ" } }, + { INDEX_op_shr_i32, { "r", "r", "rJ" } }, + { INDEX_op_sar_i32, { "r", "r", "rJ" } }, + + { INDEX_op_brcond_i32, { "r", "rJ" } }, +#if TCG_TARGET_REG_BITS == 32 + { INDEX_op_brcond2_i32, { "r", "r", "rJ", "rJ" } }, + { INDEX_op_add2_i32, { "r", "r", "r", "r", "rJ", "rJ" } }, + { INDEX_op_sub2_i32, { "r", "r", "r", "r", "rJ", "rJ" } }, + { INDEX_op_mulu2_i32, { "r", "r", "r", "rJ" } }, +#endif + + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + +#if TCG_TARGET_REG_BITS == 64 + { INDEX_op_mov_i64, { "r", "r" } }, + { INDEX_op_movi_i64, { "r" } }, + { INDEX_op_ld8u_i64, { "r", "r" } }, + { INDEX_op_ld8s_i64, { "r", "r" } }, + { INDEX_op_ld16u_i64, { "r", "r" } }, + { INDEX_op_ld16s_i64, { "r", "r" } }, + { INDEX_op_ld32u_i64, { "r", "r" } }, + { INDEX_op_ld32s_i64, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + { INDEX_op_st8_i64, { "r", "r" } }, + { INDEX_op_st16_i64, { "r", "r" } }, + { INDEX_op_st32_i64, { "r", "r" } }, + { INDEX_op_st_i64, { "r", "r" } }, + { INDEX_op_qemu_ld64, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L" } }, + + { INDEX_op_add_i64, { "r", "r", "rJ" } }, + { INDEX_op_mul_i64, { "r", "r", "rJ" } }, + { INDEX_op_div_i64, { "r", "r", "rJ" } }, + { INDEX_op_divu_i64, { "r", "r", "rJ" } }, + { INDEX_op_rem_i64, { "r", "r", "rJ" } }, + { INDEX_op_remu_i64, { "r", "r", "rJ" } }, + { INDEX_op_sub_i64, { "r", "r", "rJ" } }, + { INDEX_op_and_i64, { "r", "r", "rJ" } }, + { INDEX_op_or_i64, { "r", "r", "rJ" } }, + { INDEX_op_xor_i64, { "r", "r", "rJ" } }, + + { INDEX_op_shl_i64, { "r", "r", "rJ" } }, + { INDEX_op_shr_i64, { "r", "r", "rJ" } }, + { INDEX_op_sar_i64, { "r", "r", "rJ" } }, + { INDEX_op_ext32s_i64, { "r", "ri" } }, + { INDEX_op_ext32u_i64, { "r", "ri" } }, + + { INDEX_op_brcond_i64, { "r", "rJ" } }, +#endif + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); +#if TCG_TARGET_REG_BITS == 64 + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffffffff); +#endif + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_G1) | + (1 << TCG_REG_G2) | + (1 << TCG_REG_G3) | + (1 << TCG_REG_G4) | + (1 << TCG_REG_G5) | + (1 << TCG_REG_G6) | + (1 << TCG_REG_G7) | + (1 << TCG_REG_O0) | + (1 << TCG_REG_O1) | + (1 << TCG_REG_O2) | + (1 << TCG_REG_O3) | + (1 << TCG_REG_O4) | + (1 << TCG_REG_O5) | + (1 << TCG_REG_O7)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_G0); +#if TCG_TARGET_REG_BITS == 64 + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I4); // for internal use +#endif + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I5); // for internal use + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I6); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I7); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_O6); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_O7); + tcg_add_target_add_op_defs(sparc_op_defs); +} diff --git a/qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..d27ed5a --- /dev/null +++ b/qemu/qemu-git/tcg/sparc/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,129 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_SPARC 1 + +#if defined(__sparc_v9__) && !defined(__sparc_v8plus__) +#define TCG_TARGET_REG_BITS 64 +#else +#define TCG_TARGET_REG_BITS 32 +#endif + +#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_G0 = 0, + TCG_REG_G1, + TCG_REG_G2, + TCG_REG_G3, + TCG_REG_G4, + TCG_REG_G5, + TCG_REG_G6, + TCG_REG_G7, + TCG_REG_O0, + TCG_REG_O1, + TCG_REG_O2, + TCG_REG_O3, + TCG_REG_O4, + TCG_REG_O5, + TCG_REG_O6, + TCG_REG_O7, + TCG_REG_L0, + TCG_REG_L1, + TCG_REG_L2, + TCG_REG_L3, + TCG_REG_L4, + TCG_REG_L5, + TCG_REG_L6, + TCG_REG_L7, + TCG_REG_I0, + TCG_REG_I1, + TCG_REG_I2, + TCG_REG_I3, + TCG_REG_I4, + TCG_REG_I5, + TCG_REG_I6, + TCG_REG_I7, +}; + +#define TCG_CT_CONST_S11 0x100 +#define TCG_CT_CONST_S13 0x200 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_I6 +#ifdef __arch64__ +// Reserve space for AREG0 +#define TCG_TARGET_STACK_MINFRAME (176 + 4 * (int)sizeof(long) + \ + TCG_STATIC_CALL_ARGS_SIZE) +#define TCG_TARGET_CALL_STACK_OFFSET (2047 - 16) +#define TCG_TARGET_STACK_ALIGN 16 +#else +// AREG0 + one word for alignment +#define TCG_TARGET_STACK_MINFRAME (92 + (2 + 1) * (int)sizeof(long) + \ + TCG_STATIC_CALL_ARGS_SIZE) +#define TCG_TARGET_CALL_STACK_OFFSET TCG_TARGET_STACK_MINFRAME +#define TCG_TARGET_STACK_ALIGN 8 +#endif + +/* optional instructions */ +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_div_i64 + +#if TCG_TARGET_REG_BITS == 64 +#define TCG_TARGET_HAS_ext32s_i64 +#define TCG_TARGET_HAS_ext32u_i64 +#endif + +//#define TCG_TARGET_HAS_bswap32_i32 +//#define TCG_TARGET_HAS_bswap64_i64 +//#define TCG_TARGET_HAS_neg_i32 +//#define TCG_TARGET_HAS_neg_i64 + + +/* Note: must be synced with dyngen-exec.h and Makefile.target */ +#ifdef CONFIG_SOLARIS +#define TCG_AREG0 TCG_REG_G2 +#define TCG_AREG1 TCG_REG_G3 +#define TCG_AREG2 TCG_REG_G4 +#elif defined(__sparc_v9__) +#define TCG_AREG0 TCG_REG_G5 +#define TCG_AREG1 TCG_REG_G6 +#define TCG_AREG2 TCG_REG_G7 +#else +#define TCG_AREG0 TCG_REG_G6 +#define TCG_AREG1 TCG_REG_G1 +#define TCG_AREG2 TCG_REG_G2 +#endif + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ + unsigned long p; + + p = start & ~(8UL - 1UL); + stop = (stop + (8UL - 1UL)) & ~(8UL - 1UL); + + for (; p < stop; p += 8) + __asm__ __volatile__("flush\t%0" : : "r" (p)); +} diff --git a/qemu/qemu-git/tcg/sparc/tcg-target.c b/qemu/qemu-git/tcg/sparc/tcg-target.c new file mode 100644 index 0000000..dd7a598 --- /dev/null +++ b/qemu/qemu-git/tcg/sparc/tcg-target.c @@ -0,0 +1,1402 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%g0", + "%g1", + "%g2", + "%g3", + "%g4", + "%g5", + "%g6", + "%g7", + "%o0", + "%o1", + "%o2", + "%o3", + "%o4", + "%o5", + "%o6", + "%o7", + "%l0", + "%l1", + "%l2", + "%l3", + "%l4", + "%l5", + "%l6", + "%l7", + "%i0", + "%i1", + "%i2", + "%i3", + "%i4", + "%i5", + "%i6", + "%i7", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_L0, + TCG_REG_L1, + TCG_REG_L2, + TCG_REG_L3, + TCG_REG_L4, + TCG_REG_L5, + TCG_REG_L6, + TCG_REG_L7, + TCG_REG_I0, + TCG_REG_I1, + TCG_REG_I2, + TCG_REG_I3, + TCG_REG_I4, +}; + +static const int tcg_target_call_iarg_regs[6] = { + TCG_REG_O0, + TCG_REG_O1, + TCG_REG_O2, + TCG_REG_O3, + TCG_REG_O4, + TCG_REG_O5, +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_O0, + TCG_REG_O1, +}; + +static inline int check_fit_tl(tcg_target_long val, unsigned int bits) +{ + return (val << ((sizeof(tcg_target_long) * 8 - bits)) + >> (sizeof(tcg_target_long) * 8 - bits)) == val; +} + +static inline int check_fit_i32(uint32_t val, unsigned int bits) +{ + return ((val << (32 - bits)) >> (32 - bits)) == val; +} + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch (type) { + case R_SPARC_32: + if (value != (uint32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + case R_SPARC_WDISP22: + value -= (long)code_ptr; + value >>= 2; + if (!check_fit_tl(value, 22)) + tcg_abort(); + *(uint32_t *)code_ptr = ((*(uint32_t *)code_ptr) & ~0x3fffff) | value; + break; + case R_SPARC_WDISP19: + value -= (long)code_ptr; + value >>= 2; + if (!check_fit_tl(value, 19)) + tcg_abort(); + *(uint32_t *)code_ptr = ((*(uint32_t *)code_ptr) & ~0x7ffff) | value; + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 6; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch (ct_str[0]) { + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + break; + case 'L': /* qemu_ld/st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffffffff); + // Helper args + tcg_regset_reset_reg(ct->u.regs, TCG_REG_O0); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_O1); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_O2); + break; + case 'I': + ct->ct |= TCG_CT_CONST_S11; + break; + case 'J': + ct->ct |= TCG_CT_CONST_S13; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_S11) && check_fit_tl(val, 11)) + return 1; + else if ((ct & TCG_CT_CONST_S13) && check_fit_tl(val, 13)) + return 1; + else + return 0; +} + +#define INSN_OP(x) ((x) << 30) +#define INSN_OP2(x) ((x) << 22) +#define INSN_OP3(x) ((x) << 19) +#define INSN_OPF(x) ((x) << 5) +#define INSN_RD(x) ((x) << 25) +#define INSN_RS1(x) ((x) << 14) +#define INSN_RS2(x) (x) +#define INSN_ASI(x) ((x) << 5) + +#define INSN_IMM13(x) ((1 << 13) | ((x) & 0x1fff)) +#define INSN_OFF19(x) (((x) >> 2) & 0x07ffff) +#define INSN_OFF22(x) (((x) >> 2) & 0x3fffff) + +#define INSN_COND(x, a) (((x) << 25) | ((a) << 29)) +#define COND_N 0x0 +#define COND_E 0x1 +#define COND_LE 0x2 +#define COND_L 0x3 +#define COND_LEU 0x4 +#define COND_CS 0x5 +#define COND_NEG 0x6 +#define COND_VS 0x7 +#define COND_A 0x8 +#define COND_NE 0x9 +#define COND_G 0xa +#define COND_GE 0xb +#define COND_GU 0xc +#define COND_CC 0xd +#define COND_POS 0xe +#define COND_VC 0xf +#define BA (INSN_OP(0) | INSN_COND(COND_A, 0) | INSN_OP2(0x2)) + +#define ARITH_ADD (INSN_OP(2) | INSN_OP3(0x00)) +#define ARITH_ADDCC (INSN_OP(2) | INSN_OP3(0x10)) +#define ARITH_AND (INSN_OP(2) | INSN_OP3(0x01)) +#define ARITH_OR (INSN_OP(2) | INSN_OP3(0x02)) +#define ARITH_ORCC (INSN_OP(2) | INSN_OP3(0x12)) +#define ARITH_XOR (INSN_OP(2) | INSN_OP3(0x03)) +#define ARITH_SUB (INSN_OP(2) | INSN_OP3(0x04)) +#define ARITH_SUBCC (INSN_OP(2) | INSN_OP3(0x14)) +#define ARITH_ADDX (INSN_OP(2) | INSN_OP3(0x10)) +#define ARITH_SUBX (INSN_OP(2) | INSN_OP3(0x0c)) +#define ARITH_UMUL (INSN_OP(2) | INSN_OP3(0x0a)) +#define ARITH_UDIV (INSN_OP(2) | INSN_OP3(0x0e)) +#define ARITH_SDIV (INSN_OP(2) | INSN_OP3(0x0f)) +#define ARITH_MULX (INSN_OP(2) | INSN_OP3(0x09)) +#define ARITH_UDIVX (INSN_OP(2) | INSN_OP3(0x0d)) +#define ARITH_SDIVX (INSN_OP(2) | INSN_OP3(0x2d)) + +#define SHIFT_SLL (INSN_OP(2) | INSN_OP3(0x25)) +#define SHIFT_SRL (INSN_OP(2) | INSN_OP3(0x26)) +#define SHIFT_SRA (INSN_OP(2) | INSN_OP3(0x27)) + +#define SHIFT_SLLX (INSN_OP(2) | INSN_OP3(0x25) | (1 << 12)) +#define SHIFT_SRLX (INSN_OP(2) | INSN_OP3(0x26) | (1 << 12)) +#define SHIFT_SRAX (INSN_OP(2) | INSN_OP3(0x27) | (1 << 12)) + +#define RDY (INSN_OP(2) | INSN_OP3(0x28) | INSN_RS1(0)) +#define WRY (INSN_OP(2) | INSN_OP3(0x30) | INSN_RD(0)) +#define JMPL (INSN_OP(2) | INSN_OP3(0x38)) +#define SAVE (INSN_OP(2) | INSN_OP3(0x3c)) +#define RESTORE (INSN_OP(2) | INSN_OP3(0x3d)) +#define SETHI (INSN_OP(0) | INSN_OP2(0x4)) +#define CALL INSN_OP(1) +#define LDUB (INSN_OP(3) | INSN_OP3(0x01)) +#define LDSB (INSN_OP(3) | INSN_OP3(0x09)) +#define LDUH (INSN_OP(3) | INSN_OP3(0x02)) +#define LDSH (INSN_OP(3) | INSN_OP3(0x0a)) +#define LDUW (INSN_OP(3) | INSN_OP3(0x00)) +#define LDSW (INSN_OP(3) | INSN_OP3(0x08)) +#define LDX (INSN_OP(3) | INSN_OP3(0x0b)) +#define STB (INSN_OP(3) | INSN_OP3(0x05)) +#define STH (INSN_OP(3) | INSN_OP3(0x06)) +#define STW (INSN_OP(3) | INSN_OP3(0x04)) +#define STX (INSN_OP(3) | INSN_OP3(0x0e)) +#define LDUBA (INSN_OP(3) | INSN_OP3(0x11)) +#define LDSBA (INSN_OP(3) | INSN_OP3(0x19)) +#define LDUHA (INSN_OP(3) | INSN_OP3(0x12)) +#define LDSHA (INSN_OP(3) | INSN_OP3(0x1a)) +#define LDUWA (INSN_OP(3) | INSN_OP3(0x10)) +#define LDSWA (INSN_OP(3) | INSN_OP3(0x18)) +#define LDXA (INSN_OP(3) | INSN_OP3(0x1b)) +#define STBA (INSN_OP(3) | INSN_OP3(0x15)) +#define STHA (INSN_OP(3) | INSN_OP3(0x16)) +#define STWA (INSN_OP(3) | INSN_OP3(0x14)) +#define STXA (INSN_OP(3) | INSN_OP3(0x1e)) + +#ifndef ASI_PRIMARY_LITTLE +#define ASI_PRIMARY_LITTLE 0x88 +#endif + +static inline void tcg_out_arith(TCGContext *s, int rd, int rs1, int rs2, + int op) +{ + tcg_out32(s, op | INSN_RD(rd) | INSN_RS1(rs1) | + INSN_RS2(rs2)); +} + +static inline void tcg_out_arithi(TCGContext *s, int rd, int rs1, + uint32_t offset, int op) +{ + tcg_out32(s, op | INSN_RD(rd) | INSN_RS1(rs1) | + INSN_IMM13(offset)); +} + +static void tcg_out_arithc(TCGContext *s, int rd, int rs1, + int val2, int val2const, int op) +{ + tcg_out32(s, op | INSN_RD(rd) | INSN_RS1(rs1) + | (val2const ? INSN_IMM13(val2) : INSN_RS2(val2))); +} + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_arith(s, ret, arg, TCG_REG_G0, ARITH_OR); +} + +static inline void tcg_out_sethi(TCGContext *s, int ret, uint32_t arg) +{ + tcg_out32(s, SETHI | INSN_RD(ret) | ((arg & 0xfffffc00) >> 10)); +} + +static inline void tcg_out_movi_imm13(TCGContext *s, int ret, uint32_t arg) +{ + tcg_out_arithi(s, ret, TCG_REG_G0, arg, ARITH_OR); +} + +static inline void tcg_out_movi_imm32(TCGContext *s, int ret, uint32_t arg) +{ + if (check_fit_tl(arg, 13)) + tcg_out_movi_imm13(s, ret, arg); + else { + tcg_out_sethi(s, ret, arg); + if (arg & 0x3ff) + tcg_out_arithi(s, ret, ret, arg & 0x3ff, ARITH_OR); + } +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + /* All 32-bit constants, as well as 64-bit constants with + no high bits set go through movi_imm32. */ + if (TCG_TARGET_REG_BITS == 32 + || type == TCG_TYPE_I32 + || (arg & ~(tcg_target_long)0xffffffff) == 0) { + tcg_out_movi_imm32(s, ret, arg); + } else if (check_fit_tl(arg, 13)) { + /* A 13-bit constant sign-extended to 64-bits. */ + tcg_out_movi_imm13(s, ret, arg); + } else if (check_fit_tl(arg, 32)) { + /* A 32-bit constant sign-extended to 64-bits. */ + tcg_out_sethi(s, ret, ~arg); + tcg_out_arithi(s, ret, ret, (arg & 0x3ff) | -0x400, ARITH_XOR); + } else { + tcg_out_movi_imm32(s, TCG_REG_I4, arg >> (TCG_TARGET_REG_BITS / 2)); + tcg_out_arithi(s, TCG_REG_I4, TCG_REG_I4, 32, SHIFT_SLLX); + tcg_out_movi_imm32(s, ret, arg); + tcg_out_arith(s, ret, ret, TCG_REG_I4, ARITH_OR); + } +} + +static inline void tcg_out_ld_raw(TCGContext *s, int ret, + tcg_target_long arg) +{ + tcg_out_sethi(s, ret, arg); + tcg_out32(s, LDUW | INSN_RD(ret) | INSN_RS1(ret) | + INSN_IMM13(arg & 0x3ff)); +} + +static inline void tcg_out_ld_ptr(TCGContext *s, int ret, + tcg_target_long arg) +{ + if (!check_fit_tl(arg, 10)) + tcg_out_movi(s, TCG_TYPE_PTR, ret, arg & ~0x3ffULL); + if (TCG_TARGET_REG_BITS == 64) { + tcg_out32(s, LDX | INSN_RD(ret) | INSN_RS1(ret) | + INSN_IMM13(arg & 0x3ff)); + } else { + tcg_out32(s, LDUW | INSN_RD(ret) | INSN_RS1(ret) | + INSN_IMM13(arg & 0x3ff)); + } +} + +static inline void tcg_out_ldst(TCGContext *s, int ret, int addr, int offset, int op) +{ + if (check_fit_tl(offset, 13)) + tcg_out32(s, op | INSN_RD(ret) | INSN_RS1(addr) | + INSN_IMM13(offset)); + else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I5, offset); + tcg_out32(s, op | INSN_RD(ret) | INSN_RS1(TCG_REG_I5) | + INSN_RS2(addr)); + } +} + +static inline void tcg_out_ldst_asi(TCGContext *s, int ret, int addr, + int offset, int op, int asi) +{ + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I5, offset); + tcg_out32(s, op | INSN_RD(ret) | INSN_RS1(TCG_REG_I5) | + INSN_ASI(asi) | INSN_RS2(addr)); +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst(s, ret, arg1, arg2, LDUW); + else + tcg_out_ldst(s, ret, arg1, arg2, LDX); +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_ldst(s, arg, arg1, arg2, STW); + else + tcg_out_ldst(s, arg, arg1, arg2, STX); +} + +static inline void tcg_out_sety(TCGContext *s, int rs) +{ + tcg_out32(s, WRY | INSN_RS1(TCG_REG_G0) | INSN_RS2(rs)); +} + +static inline void tcg_out_rdy(TCGContext *s, int rd) +{ + tcg_out32(s, RDY | INSN_RD(rd)); +} + +static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) { + if (check_fit_tl(val, 13)) + tcg_out_arithi(s, reg, reg, val, ARITH_ADD); + else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I5, val); + tcg_out_arith(s, reg, reg, TCG_REG_I5, ARITH_ADD); + } + } +} + +static inline void tcg_out_andi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) { + if (check_fit_tl(val, 13)) + tcg_out_arithi(s, reg, reg, val, ARITH_AND); + else { + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, val); + tcg_out_arith(s, reg, reg, TCG_REG_I5, ARITH_AND); + } + } +} + +static void tcg_out_div32(TCGContext *s, int rd, int rs1, + int val2, int val2const, int uns) +{ + /* Load Y with the sign/zero extension of RS1 to 64-bits. */ + if (uns) { + tcg_out_sety(s, TCG_REG_G0); + } else { + tcg_out_arithi(s, TCG_REG_I5, rs1, 31, SHIFT_SRA); + tcg_out_sety(s, TCG_REG_I5); + } + + tcg_out_arithc(s, rd, rs1, val2, val2const, + uns ? ARITH_UDIV : ARITH_SDIV); +} + +static inline void tcg_out_nop(TCGContext *s) +{ + tcg_out_sethi(s, TCG_REG_G0, 0); +} + +static void tcg_out_branch_i32(TCGContext *s, int opc, int label_index) +{ + int32_t val; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x2) + | INSN_OFF22(l->u.value - (unsigned long)s->code_ptr))); + } else { + tcg_out_reloc(s, s->code_ptr, R_SPARC_WDISP22, label_index, 0); + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x2) | 0)); + } +} + +#if TCG_TARGET_REG_BITS == 64 +static void tcg_out_branch_i64(TCGContext *s, int opc, int label_index) +{ + int32_t val; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x1) | + (0x5 << 19) | + INSN_OFF19(l->u.value - (unsigned long)s->code_ptr))); + } else { + tcg_out_reloc(s, s->code_ptr, R_SPARC_WDISP19, label_index, 0); + tcg_out32(s, (INSN_OP(0) | INSN_COND(opc, 0) | INSN_OP2(0x1) | + (0x5 << 19) | 0)); + } +} +#endif + +static const uint8_t tcg_cond_to_bcond[10] = { + [TCG_COND_EQ] = COND_E, + [TCG_COND_NE] = COND_NE, + [TCG_COND_LT] = COND_L, + [TCG_COND_GE] = COND_GE, + [TCG_COND_LE] = COND_LE, + [TCG_COND_GT] = COND_G, + [TCG_COND_LTU] = COND_CS, + [TCG_COND_GEU] = COND_CC, + [TCG_COND_LEU] = COND_LEU, + [TCG_COND_GTU] = COND_GU, +}; + +static void tcg_out_cmp(TCGContext *s, TCGArg c1, TCGArg c2, int c2const) +{ + tcg_out_arithc(s, TCG_REG_G0, c1, c2, c2const, ARITH_SUBCC); +} + +static void tcg_out_brcond_i32(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + tcg_out_cmp(s, arg1, arg2, const_arg2); + tcg_out_branch_i32(s, tcg_cond_to_bcond[cond], label_index); + tcg_out_nop(s); +} + +#if TCG_TARGET_REG_BITS == 64 +static void tcg_out_brcond_i64(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index) +{ + tcg_out_cmp(s, arg1, arg2, const_arg2); + tcg_out_branch_i64(s, tcg_cond_to_bcond[cond], label_index); + tcg_out_nop(s); +} +#else +static void tcg_out_brcond2_i32(TCGContext *s, int cond, + TCGArg al, TCGArg ah, + TCGArg bl, int blconst, + TCGArg bh, int bhconst, int label_dest) +{ + int cc, label_next = gen_new_label(); + + tcg_out_cmp(s, ah, bh, bhconst); + + /* Note that we fill one of the delay slots with the second compare. */ + switch (cond) { + case TCG_COND_EQ: + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_NE], 0); + tcg_out_branch_i32(s, cc, label_next); + tcg_out_cmp(s, al, bl, blconst); + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_EQ], 0); + tcg_out_branch_i32(s, cc, label_dest); + break; + + case TCG_COND_NE: + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_NE], 0); + tcg_out_branch_i32(s, cc, label_dest); + tcg_out_cmp(s, al, bl, blconst); + tcg_out_branch_i32(s, cc, label_dest); + break; + + default: + /* ??? One could fairly easily special-case 64-bit unsigned + compares against 32-bit zero-extended constants. For instance, + we know that (unsigned)AH < 0 is false and need not emit it. + Similarly, (unsigned)AH > 0 being true implies AH != 0, so the + second branch will never be taken. */ + cc = INSN_COND(tcg_cond_to_bcond[cond], 0); + tcg_out_branch_i32(s, cc, label_dest); + tcg_out_nop(s); + cc = INSN_COND(tcg_cond_to_bcond[TCG_COND_NE], 0); + tcg_out_branch_i32(s, cc, label_next); + tcg_out_cmp(s, al, bl, blconst); + cc = INSN_COND(tcg_cond_to_bcond[tcg_unsigned_cond(cond)], 0); + tcg_out_branch_i32(s, cc, label_dest); + break; + } + tcg_out_nop(s); + + tcg_out_label(s, label_next, (tcg_target_long)s->code_ptr); +} +#endif + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + tcg_out32(s, SAVE | INSN_RD(TCG_REG_O6) | INSN_RS1(TCG_REG_O6) | + INSN_IMM13(-TCG_TARGET_STACK_MINFRAME)); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I0) | + INSN_RS2(TCG_REG_G0)); + tcg_out_nop(s); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static const void * const qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static const void * const qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +#if TARGET_LONG_BITS == 32 +#define TARGET_LD_OP LDUW +#else +#define TARGET_LD_OP LDX +#endif + +#if TARGET_PHYS_ADDR_BITS == 32 +#define TARGET_ADDEND_LD_OP LDUW +#else +#define TARGET_ADDEND_LD_OP LDX +#endif + +#ifdef __arch64__ +#define HOST_LD_OP LDX +#define HOST_ST_OP STX +#define HOST_SLL_OP SHIFT_SLLX +#define HOST_SRA_OP SHIFT_SRAX +#else +#define HOST_LD_OP LDUW +#define HOST_ST_OP STW +#define HOST_SLL_OP SHIFT_SLL +#define HOST_SRA_OP SHIFT_SRA +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, arg0, arg1, arg2, mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + s_bits = opc & 3; + + arg0 = TCG_REG_O0; + arg1 = TCG_REG_O1; + arg2 = TCG_REG_O2; + +#if defined(CONFIG_SOFTMMU) + /* srl addr_reg, x, arg1 */ + tcg_out_arithi(s, arg1, addr_reg, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS, + SHIFT_SRL); + /* and addr_reg, x, arg0 */ + tcg_out_arithi(s, arg0, addr_reg, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + /* and arg1, x, arg1 */ + tcg_out_andi(s, arg1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* add arg1, x, arg1 */ + tcg_out_addi(s, arg1, offsetof(CPUState, + tlb_table[mem_index][0].addr_read)); + + /* add env, arg1, arg1 */ + tcg_out_arith(s, arg1, TCG_AREG0, arg1, ARITH_ADD); + + /* ld [arg1], arg2 */ + tcg_out32(s, TARGET_LD_OP | INSN_RD(arg2) | INSN_RS1(arg1) | + INSN_RS2(TCG_REG_G0)); + + /* subcc arg0, arg2, %g0 */ + tcg_out_arith(s, TCG_REG_G0, arg0, arg2, ARITH_SUBCC); + + /* will become: + be label1 + or + be,pt %xcc label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* mov (delay slot) */ + tcg_out_mov(s, arg0, addr_reg); + + /* mov */ + tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index); + + /* XXX: move that code at the end of the TB */ + /* qemu_ld_helper[s_bits](arg0, arg1) */ + tcg_out32(s, CALL | ((((tcg_target_ulong)qemu_ld_helpers[s_bits] + - (tcg_target_ulong)s->code_ptr) >> 2) + & 0x3fffffff)); + /* Store AREG0 in stack to avoid ugly glibc bugs that mangle + global registers */ + // delay slot + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_ST_OP); + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_LD_OP); + + /* data_reg = sign_extend(arg0) */ + switch(opc) { + case 0 | 4: + /* sll arg0, 24/56, data_reg */ + tcg_out_arithi(s, data_reg, arg0, (int)sizeof(tcg_target_long) * 8 - 8, + HOST_SLL_OP); + /* sra data_reg, 24/56, data_reg */ + tcg_out_arithi(s, data_reg, data_reg, + (int)sizeof(tcg_target_long) * 8 - 8, HOST_SRA_OP); + break; + case 1 | 4: + /* sll arg0, 16/48, data_reg */ + tcg_out_arithi(s, data_reg, arg0, + (int)sizeof(tcg_target_long) * 8 - 16, HOST_SLL_OP); + /* sra data_reg, 16/48, data_reg */ + tcg_out_arithi(s, data_reg, data_reg, + (int)sizeof(tcg_target_long) * 8 - 16, HOST_SRA_OP); + break; + case 2 | 4: + /* sll arg0, 32, data_reg */ + tcg_out_arithi(s, data_reg, arg0, 32, HOST_SLL_OP); + /* sra data_reg, 32, data_reg */ + tcg_out_arithi(s, data_reg, data_reg, 32, HOST_SRA_OP); + break; + case 0: + case 1: + case 2: + case 3: + default: + /* mov */ + tcg_out_mov(s, data_reg, arg0); + break; + } + + /* will become: + ba label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* nop (delay slot */ + tcg_out_nop(s); + + /* label1: */ +#if TARGET_LONG_BITS == 32 + /* be label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#else + /* be,pt %xcc label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x1) | + (0x5 << 19) | INSN_OFF19((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#endif + + /* ld [arg1 + x], arg1 */ + tcg_out_ldst(s, arg1, arg1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_read), TARGET_ADDEND_LD_OP); + +#if TARGET_LONG_BITS == 32 + /* and addr_reg, x, arg0 */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, 0xffffffff); + tcg_out_arith(s, arg0, addr_reg, TCG_REG_I5, ARITH_AND); + /* add arg0, arg1, arg0 */ + tcg_out_arith(s, arg0, arg0, arg1, ARITH_ADD); +#else + /* add addr_reg, arg1, arg0 */ + tcg_out_arith(s, arg0, addr_reg, arg1, ARITH_ADD); +#endif + +#else + arg0 = addr_reg; +#endif + + switch(opc) { + case 0: + /* ldub [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDUB); + break; + case 0 | 4: + /* ldsb [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDSB); + break; + case 1: +#ifdef TARGET_WORDS_BIGENDIAN + /* lduh [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDUH); +#else + /* lduha [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDUHA, ASI_PRIMARY_LITTLE); +#endif + break; + case 1 | 4: +#ifdef TARGET_WORDS_BIGENDIAN + /* ldsh [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDSH); +#else + /* ldsha [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDSHA, ASI_PRIMARY_LITTLE); +#endif + break; + case 2: +#ifdef TARGET_WORDS_BIGENDIAN + /* lduw [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDUW); +#else + /* lduwa [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDUWA, ASI_PRIMARY_LITTLE); +#endif + break; + case 2 | 4: +#ifdef TARGET_WORDS_BIGENDIAN + /* ldsw [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDSW); +#else + /* ldswa [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDSWA, ASI_PRIMARY_LITTLE); +#endif + break; + case 3: +#ifdef TARGET_WORDS_BIGENDIAN + /* ldx [arg0], data_reg */ + tcg_out_ldst(s, data_reg, arg0, 0, LDX); +#else + /* ldxa [arg0] ASI_PRIMARY_LITTLE, data_reg */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, LDXA, ASI_PRIMARY_LITTLE); +#endif + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = (INSN_OP(0) | INSN_COND(COND_A, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label2_ptr)); +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, arg0, arg1, arg2, mem_index, s_bits; +#if defined(CONFIG_SOFTMMU) + uint32_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + + s_bits = opc; + + arg0 = TCG_REG_O0; + arg1 = TCG_REG_O1; + arg2 = TCG_REG_O2; + +#if defined(CONFIG_SOFTMMU) + /* srl addr_reg, x, arg1 */ + tcg_out_arithi(s, arg1, addr_reg, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS, + SHIFT_SRL); + + /* and addr_reg, x, arg0 */ + tcg_out_arithi(s, arg0, addr_reg, TARGET_PAGE_MASK | ((1 << s_bits) - 1), + ARITH_AND); + + /* and arg1, x, arg1 */ + tcg_out_andi(s, arg1, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* add arg1, x, arg1 */ + tcg_out_addi(s, arg1, offsetof(CPUState, + tlb_table[mem_index][0].addr_write)); + + /* add env, arg1, arg1 */ + tcg_out_arith(s, arg1, TCG_AREG0, arg1, ARITH_ADD); + + /* ld [arg1], arg2 */ + tcg_out32(s, TARGET_LD_OP | INSN_RD(arg2) | INSN_RS1(arg1) | + INSN_RS2(TCG_REG_G0)); + + /* subcc arg0, arg2, %g0 */ + tcg_out_arith(s, TCG_REG_G0, arg0, arg2, ARITH_SUBCC); + + /* will become: + be label1 + or + be,pt %xcc label1 */ + label1_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* mov (delay slot) */ + tcg_out_mov(s, arg0, addr_reg); + + /* mov */ + tcg_out_mov(s, arg1, data_reg); + + /* mov */ + tcg_out_movi(s, TCG_TYPE_I32, arg2, mem_index); + + /* XXX: move that code at the end of the TB */ + /* qemu_st_helper[s_bits](arg0, arg1, arg2) */ + tcg_out32(s, CALL | ((((tcg_target_ulong)qemu_st_helpers[s_bits] + - (tcg_target_ulong)s->code_ptr) >> 2) + & 0x3fffffff)); + /* Store AREG0 in stack to avoid ugly glibc bugs that mangle + global registers */ + // delay slot + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_ST_OP); + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_LD_OP); + + /* will become: + ba label2 */ + label2_ptr = (uint32_t *)s->code_ptr; + tcg_out32(s, 0); + + /* nop (delay slot) */ + tcg_out_nop(s); + +#if TARGET_LONG_BITS == 32 + /* be label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#else + /* be,pt %xcc label1 */ + *label1_ptr = (INSN_OP(0) | INSN_COND(COND_E, 0) | INSN_OP2(0x1) | + (0x5 << 19) | INSN_OFF19((unsigned long)s->code_ptr - + (unsigned long)label1_ptr)); +#endif + + /* ld [arg1 + x], arg1 */ + tcg_out_ldst(s, arg1, arg1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_write), TARGET_ADDEND_LD_OP); + +#if TARGET_LONG_BITS == 32 + /* and addr_reg, x, arg0 */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, 0xffffffff); + tcg_out_arith(s, arg0, addr_reg, TCG_REG_I5, ARITH_AND); + /* add arg0, arg1, arg0 */ + tcg_out_arith(s, arg0, arg0, arg1, ARITH_ADD); +#else + /* add addr_reg, arg1, arg0 */ + tcg_out_arith(s, arg0, addr_reg, arg1, ARITH_ADD); +#endif + +#else + arg0 = addr_reg; +#endif + + switch(opc) { + case 0: + /* stb data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STB); + break; + case 1: +#ifdef TARGET_WORDS_BIGENDIAN + /* sth data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STH); +#else + /* stha data_reg, [arg0] ASI_PRIMARY_LITTLE */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, STHA, ASI_PRIMARY_LITTLE); +#endif + break; + case 2: +#ifdef TARGET_WORDS_BIGENDIAN + /* stw data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STW); +#else + /* stwa data_reg, [arg0] ASI_PRIMARY_LITTLE */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, STWA, ASI_PRIMARY_LITTLE); +#endif + break; + case 3: +#ifdef TARGET_WORDS_BIGENDIAN + /* stx data_reg, [arg0] */ + tcg_out_ldst(s, data_reg, arg0, 0, STX); +#else + /* stxa data_reg, [arg0] ASI_PRIMARY_LITTLE */ + tcg_out_ldst_asi(s, data_reg, arg0, 0, STXA, ASI_PRIMARY_LITTLE); +#endif + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = (INSN_OP(0) | INSN_COND(COND_A, 0) | INSN_OP2(0x2) | + INSN_OFF22((unsigned long)s->code_ptr - + (unsigned long)label2_ptr)); +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch (opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_I0, args[0]); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I7) | + INSN_IMM13(8)); + tcg_out32(s, RESTORE | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_G0) | + INSN_RS2(TCG_REG_G0)); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_out_sethi(s, TCG_REG_I5, args[0] & 0xffffe000); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I5) | + INSN_IMM13((args[0] & 0x1fff))); + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + } else { + /* indirect jump method */ + tcg_out_ld_ptr(s, TCG_REG_I5, (tcg_target_long)(s->tb_next + args[0])); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_I5) | + INSN_RS2(TCG_REG_G0)); + } + tcg_out_nop(s); + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) + tcg_out32(s, CALL | ((((tcg_target_ulong)args[0] + - (tcg_target_ulong)s->code_ptr) >> 2) + & 0x3fffffff)); + else { + tcg_out_ld_ptr(s, TCG_REG_I5, + (tcg_target_long)(s->tb_next + args[0])); + tcg_out32(s, JMPL | INSN_RD(TCG_REG_O7) | INSN_RS1(TCG_REG_I5) | + INSN_RS2(TCG_REG_G0)); + } + /* Store AREG0 in stack to avoid ugly glibc bugs that mangle + global registers */ + // delay slot + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_ST_OP); + tcg_out_ldst(s, TCG_AREG0, TCG_REG_CALL_STACK, + TCG_TARGET_CALL_STACK_OFFSET - TCG_STATIC_CALL_ARGS_SIZE - + sizeof(long), HOST_LD_OP); + break; + case INDEX_op_jmp: + case INDEX_op_br: + tcg_out_branch_i32(s, COND_A, args[0]); + tcg_out_nop(s); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], (uint32_t)args[1]); + break; + +#if TCG_TARGET_REG_BITS == 64 +#define OP_32_64(x) \ + glue(glue(case INDEX_op_, x), _i32): \ + glue(glue(case INDEX_op_, x), _i64) +#else +#define OP_32_64(x) \ + glue(glue(case INDEX_op_, x), _i32) +#endif + OP_32_64(ld8u): + tcg_out_ldst(s, args[0], args[1], args[2], LDUB); + break; + OP_32_64(ld8s): + tcg_out_ldst(s, args[0], args[1], args[2], LDSB); + break; + OP_32_64(ld16u): + tcg_out_ldst(s, args[0], args[1], args[2], LDUH); + break; + OP_32_64(ld16s): + tcg_out_ldst(s, args[0], args[1], args[2], LDSH); + break; + case INDEX_op_ld_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_ld32u_i64: +#endif + tcg_out_ldst(s, args[0], args[1], args[2], LDUW); + break; + OP_32_64(st8): + tcg_out_ldst(s, args[0], args[1], args[2], STB); + break; + OP_32_64(st16): + tcg_out_ldst(s, args[0], args[1], args[2], STH); + break; + case INDEX_op_st_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_st32_i64: +#endif + tcg_out_ldst(s, args[0], args[1], args[2], STW); + break; + OP_32_64(add): + c = ARITH_ADD; + goto gen_arith; + OP_32_64(sub): + c = ARITH_SUB; + goto gen_arith; + OP_32_64(and): + c = ARITH_AND; + goto gen_arith; + OP_32_64(or): + c = ARITH_OR; + goto gen_arith; + OP_32_64(xor): + c = ARITH_XOR; + goto gen_arith; + case INDEX_op_shl_i32: + c = SHIFT_SLL; + goto gen_arith; + case INDEX_op_shr_i32: + c = SHIFT_SRL; + goto gen_arith; + case INDEX_op_sar_i32: + c = SHIFT_SRA; + goto gen_arith; + case INDEX_op_mul_i32: + c = ARITH_UMUL; + goto gen_arith; + + case INDEX_op_div_i32: + tcg_out_div32(s, args[0], args[1], args[2], const_args[2], 0); + break; + case INDEX_op_divu_i32: + tcg_out_div32(s, args[0], args[1], args[2], const_args[2], 1); + break; + + case INDEX_op_rem_i32: + case INDEX_op_remu_i32: + tcg_out_div32(s, TCG_REG_I5, args[1], args[2], const_args[2], + opc == INDEX_op_remu_i32); + tcg_out_arithc(s, TCG_REG_I5, TCG_REG_I5, args[2], const_args[2], + ARITH_UMUL); + tcg_out_arith(s, args[0], args[1], TCG_REG_I5, ARITH_SUB); + break; + + case INDEX_op_brcond_i32: + tcg_out_brcond_i32(s, args[2], args[0], args[1], const_args[1], + args[3]); + break; +#if TCG_TARGET_REG_BITS == 32 + case INDEX_op_brcond2_i32: + tcg_out_brcond2_i32(s, args[4], args[0], args[1], + args[2], const_args[2], + args[3], const_args[3], args[5]); + break; + case INDEX_op_add2_i32: + tcg_out_arithc(s, args[0], args[2], args[4], const_args[4], + ARITH_ADDCC); + tcg_out_arithc(s, args[1], args[3], args[5], const_args[5], + ARITH_ADDX); + break; + case INDEX_op_sub2_i32: + tcg_out_arithc(s, args[0], args[2], args[4], const_args[4], + ARITH_SUBCC); + tcg_out_arithc(s, args[1], args[3], args[5], const_args[5], + ARITH_SUBX); + break; + case INDEX_op_mulu2_i32: + tcg_out_arithc(s, args[0], args[2], args[3], const_args[3], + ARITH_UMUL); + tcg_out_rdy(s, args[1]); + break; +#endif + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld32s: + tcg_out_qemu_ld(s, args, 2 | 4); + break; + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_movi_i64: + tcg_out_movi(s, TCG_TYPE_I64, args[0], args[1]); + break; + case INDEX_op_ld32s_i64: + tcg_out_ldst(s, args[0], args[1], args[2], LDSW); + break; + case INDEX_op_ld_i64: + tcg_out_ldst(s, args[0], args[1], args[2], LDX); + break; + case INDEX_op_st_i64: + tcg_out_ldst(s, args[0], args[1], args[2], STX); + break; + case INDEX_op_shl_i64: + c = SHIFT_SLLX; + goto gen_arith; + case INDEX_op_shr_i64: + c = SHIFT_SRLX; + goto gen_arith; + case INDEX_op_sar_i64: + c = SHIFT_SRAX; + goto gen_arith; + case INDEX_op_mul_i64: + c = ARITH_MULX; + goto gen_arith; + case INDEX_op_div_i64: + c = ARITH_SDIVX; + goto gen_arith; + case INDEX_op_divu_i64: + c = ARITH_UDIVX; + goto gen_arith; + case INDEX_op_rem_i64: + case INDEX_op_remu_i64: + tcg_out_arithc(s, TCG_REG_I5, args[1], args[2], const_args[2], + opc == INDEX_op_rem_i64 ? ARITH_SDIVX : ARITH_UDIVX); + tcg_out_arithc(s, TCG_REG_I5, TCG_REG_I5, args[2], const_args[2], + ARITH_MULX); + tcg_out_arith(s, args[0], args[1], TCG_REG_I5, ARITH_SUB); + break; + case INDEX_op_ext32s_i64: + if (const_args[1]) { + tcg_out_movi(s, TCG_TYPE_I64, args[0], (int32_t)args[1]); + } else { + tcg_out_arithi(s, args[0], args[1], 0, SHIFT_SRA); + } + break; + case INDEX_op_ext32u_i64: + if (const_args[1]) { + tcg_out_movi_imm32(s, args[0], args[1]); + } else { + tcg_out_arithi(s, args[0], args[1], 0, SHIFT_SRL); + } + break; + + case INDEX_op_brcond_i64: + tcg_out_brcond_i64(s, args[2], args[0], args[1], const_args[1], + args[3]); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + +#endif + gen_arith: + tcg_out_arithc(s, args[0], args[1], args[2], const_args[2], c); + break; + + default: + fprintf(stderr, "unknown opcode 0x%x\n", opc); + tcg_abort(); + } +} + +static const TCGTargetOpDef sparc_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, + { INDEX_op_jmp, { "ri" } }, + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "r", "rJ" } }, + { INDEX_op_mul_i32, { "r", "r", "rJ" } }, + { INDEX_op_div_i32, { "r", "r", "rJ" } }, + { INDEX_op_divu_i32, { "r", "r", "rJ" } }, + { INDEX_op_rem_i32, { "r", "r", "rJ" } }, + { INDEX_op_remu_i32, { "r", "r", "rJ" } }, + { INDEX_op_sub_i32, { "r", "r", "rJ" } }, + { INDEX_op_and_i32, { "r", "r", "rJ" } }, + { INDEX_op_or_i32, { "r", "r", "rJ" } }, + { INDEX_op_xor_i32, { "r", "r", "rJ" } }, + + { INDEX_op_shl_i32, { "r", "r", "rJ" } }, + { INDEX_op_shr_i32, { "r", "r", "rJ" } }, + { INDEX_op_sar_i32, { "r", "r", "rJ" } }, + + { INDEX_op_brcond_i32, { "r", "rJ" } }, +#if TCG_TARGET_REG_BITS == 32 + { INDEX_op_brcond2_i32, { "r", "r", "rJ", "rJ" } }, + { INDEX_op_add2_i32, { "r", "r", "r", "r", "rJ", "rJ" } }, + { INDEX_op_sub2_i32, { "r", "r", "r", "r", "rJ", "rJ" } }, + { INDEX_op_mulu2_i32, { "r", "r", "r", "rJ" } }, +#endif + + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + +#if TCG_TARGET_REG_BITS == 64 + { INDEX_op_mov_i64, { "r", "r" } }, + { INDEX_op_movi_i64, { "r" } }, + { INDEX_op_ld8u_i64, { "r", "r" } }, + { INDEX_op_ld8s_i64, { "r", "r" } }, + { INDEX_op_ld16u_i64, { "r", "r" } }, + { INDEX_op_ld16s_i64, { "r", "r" } }, + { INDEX_op_ld32u_i64, { "r", "r" } }, + { INDEX_op_ld32s_i64, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + { INDEX_op_st8_i64, { "r", "r" } }, + { INDEX_op_st16_i64, { "r", "r" } }, + { INDEX_op_st32_i64, { "r", "r" } }, + { INDEX_op_st_i64, { "r", "r" } }, + { INDEX_op_qemu_ld64, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L" } }, + + { INDEX_op_add_i64, { "r", "r", "rJ" } }, + { INDEX_op_mul_i64, { "r", "r", "rJ" } }, + { INDEX_op_div_i64, { "r", "r", "rJ" } }, + { INDEX_op_divu_i64, { "r", "r", "rJ" } }, + { INDEX_op_rem_i64, { "r", "r", "rJ" } }, + { INDEX_op_remu_i64, { "r", "r", "rJ" } }, + { INDEX_op_sub_i64, { "r", "r", "rJ" } }, + { INDEX_op_and_i64, { "r", "r", "rJ" } }, + { INDEX_op_or_i64, { "r", "r", "rJ" } }, + { INDEX_op_xor_i64, { "r", "r", "rJ" } }, + + { INDEX_op_shl_i64, { "r", "r", "rJ" } }, + { INDEX_op_shr_i64, { "r", "r", "rJ" } }, + { INDEX_op_sar_i64, { "r", "r", "rJ" } }, + { INDEX_op_ext32s_i64, { "r", "ri" } }, + { INDEX_op_ext32u_i64, { "r", "ri" } }, + + { INDEX_op_brcond_i64, { "r", "rJ" } }, +#endif + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); +#if TCG_TARGET_REG_BITS == 64 + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffffffff); +#endif + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_G1) | + (1 << TCG_REG_G2) | + (1 << TCG_REG_G3) | + (1 << TCG_REG_G4) | + (1 << TCG_REG_G5) | + (1 << TCG_REG_G6) | + (1 << TCG_REG_G7) | + (1 << TCG_REG_O0) | + (1 << TCG_REG_O1) | + (1 << TCG_REG_O2) | + (1 << TCG_REG_O3) | + (1 << TCG_REG_O4) | + (1 << TCG_REG_O5) | + (1 << TCG_REG_O7)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_G0); +#if TCG_TARGET_REG_BITS == 64 + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I4); // for internal use +#endif + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I5); // for internal use + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I6); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_I7); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_O6); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_O7); + tcg_add_target_add_op_defs(sparc_op_defs); +} diff --git a/qemu/qemu-git/tcg/sparc/tcg-target.h b/qemu/qemu-git/tcg/sparc/tcg-target.h new file mode 100644 index 0000000..d27ed5a --- /dev/null +++ b/qemu/qemu-git/tcg/sparc/tcg-target.h @@ -0,0 +1,129 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_SPARC 1 + +#if defined(__sparc_v9__) && !defined(__sparc_v8plus__) +#define TCG_TARGET_REG_BITS 64 +#else +#define TCG_TARGET_REG_BITS 32 +#endif + +#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 32 + +enum { + TCG_REG_G0 = 0, + TCG_REG_G1, + TCG_REG_G2, + TCG_REG_G3, + TCG_REG_G4, + TCG_REG_G5, + TCG_REG_G6, + TCG_REG_G7, + TCG_REG_O0, + TCG_REG_O1, + TCG_REG_O2, + TCG_REG_O3, + TCG_REG_O4, + TCG_REG_O5, + TCG_REG_O6, + TCG_REG_O7, + TCG_REG_L0, + TCG_REG_L1, + TCG_REG_L2, + TCG_REG_L3, + TCG_REG_L4, + TCG_REG_L5, + TCG_REG_L6, + TCG_REG_L7, + TCG_REG_I0, + TCG_REG_I1, + TCG_REG_I2, + TCG_REG_I3, + TCG_REG_I4, + TCG_REG_I5, + TCG_REG_I6, + TCG_REG_I7, +}; + +#define TCG_CT_CONST_S11 0x100 +#define TCG_CT_CONST_S13 0x200 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_I6 +#ifdef __arch64__ +// Reserve space for AREG0 +#define TCG_TARGET_STACK_MINFRAME (176 + 4 * (int)sizeof(long) + \ + TCG_STATIC_CALL_ARGS_SIZE) +#define TCG_TARGET_CALL_STACK_OFFSET (2047 - 16) +#define TCG_TARGET_STACK_ALIGN 16 +#else +// AREG0 + one word for alignment +#define TCG_TARGET_STACK_MINFRAME (92 + (2 + 1) * (int)sizeof(long) + \ + TCG_STATIC_CALL_ARGS_SIZE) +#define TCG_TARGET_CALL_STACK_OFFSET TCG_TARGET_STACK_MINFRAME +#define TCG_TARGET_STACK_ALIGN 8 +#endif + +/* optional instructions */ +#define TCG_TARGET_HAS_div_i32 +#define TCG_TARGET_HAS_div_i64 + +#if TCG_TARGET_REG_BITS == 64 +#define TCG_TARGET_HAS_ext32s_i64 +#define TCG_TARGET_HAS_ext32u_i64 +#endif + +//#define TCG_TARGET_HAS_bswap32_i32 +//#define TCG_TARGET_HAS_bswap64_i64 +//#define TCG_TARGET_HAS_neg_i32 +//#define TCG_TARGET_HAS_neg_i64 + + +/* Note: must be synced with dyngen-exec.h and Makefile.target */ +#ifdef CONFIG_SOLARIS +#define TCG_AREG0 TCG_REG_G2 +#define TCG_AREG1 TCG_REG_G3 +#define TCG_AREG2 TCG_REG_G4 +#elif defined(__sparc_v9__) +#define TCG_AREG0 TCG_REG_G5 +#define TCG_AREG1 TCG_REG_G6 +#define TCG_AREG2 TCG_REG_G7 +#else +#define TCG_AREG0 TCG_REG_G6 +#define TCG_AREG1 TCG_REG_G1 +#define TCG_AREG2 TCG_REG_G2 +#endif + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ + unsigned long p; + + p = start & ~(8UL - 1UL); + stop = (stop + (8UL - 1UL)) & ~(8UL - 1UL); + + for (; p < stop; p += 8) + __asm__ __volatile__("flush\t%0" : : "r" (p)); +} diff --git a/qemu/qemu-git/tcg/tcg-op.h b/qemu/qemu-git/tcg/tcg-op.h new file mode 100644 index 0000000..faf2e8b --- /dev/null +++ b/qemu/qemu-git/tcg/tcg-op.h @@ -0,0 +1,2183 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "tcg.h" + +int gen_new_label(void); + +static inline void tcg_gen_op1_i32(int opc, TCGv_i32 arg1) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); +} + +static inline void tcg_gen_op1_i64(int opc, TCGv_i64 arg1) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); +} + +static inline void tcg_gen_op1i(int opc, TCGArg arg1) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = arg1; +} + +static inline void tcg_gen_op2_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); +} + +static inline void tcg_gen_op2_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); +} + +static inline void tcg_gen_op2i_i32(int opc, TCGv_i32 arg1, TCGArg arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = arg2; +} + +static inline void tcg_gen_op2i_i64(int opc, TCGv_i64 arg1, TCGArg arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = arg2; +} + +static inline void tcg_gen_op2ii(int opc, TCGArg arg1, TCGArg arg2) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = arg1; + *gen_opparam_ptr++ = arg2; +} + +static inline void tcg_gen_op3_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); +} + +static inline void tcg_gen_op3_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); +} + +static inline void tcg_gen_op3i_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGArg arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = arg3; +} + +static inline void tcg_gen_op3i_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGArg arg3) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = arg3; +} + +static inline void tcg_gen_ldst_op_i32(int opc, TCGv_i32 val, TCGv_ptr base, + TCGArg offset) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(val); + *gen_opparam_ptr++ = GET_TCGV_PTR(base); + *gen_opparam_ptr++ = offset; +} + +static inline void tcg_gen_ldst_op_i64(int opc, TCGv_i64 val, TCGv_ptr base, + TCGArg offset) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(val); + *gen_opparam_ptr++ = GET_TCGV_PTR(base); + *gen_opparam_ptr++ = offset; +} + +static inline void tcg_gen_qemu_ldst_op_i64_i32(int opc, TCGv_i64 val, TCGv_i32 addr, + TCGArg mem_index) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(val); + *gen_opparam_ptr++ = GET_TCGV_I32(addr); + *gen_opparam_ptr++ = mem_index; +} + +static inline void tcg_gen_qemu_ldst_op_i64_i64(int opc, TCGv_i64 val, TCGv_i64 addr, + TCGArg mem_index) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(val); + *gen_opparam_ptr++ = GET_TCGV_I64(addr); + *gen_opparam_ptr++ = mem_index; +} + +static inline void tcg_gen_op4_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); +} + +static inline void tcg_gen_op4_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); +} + +static inline void tcg_gen_op4i_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op4i_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op4ii_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGArg arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = arg3; + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op4ii_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGArg arg3, TCGArg arg4) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = arg3; + *gen_opparam_ptr++ = arg4; +} + +static inline void tcg_gen_op5_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = GET_TCGV_I32(arg5); +} + +static inline void tcg_gen_op5_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = GET_TCGV_I64(arg5); +} + +static inline void tcg_gen_op5i_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGArg arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = arg5; +} + +static inline void tcg_gen_op5i_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGArg arg5) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = arg5; +} + +static inline void tcg_gen_op6_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5, + TCGv_i32 arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = GET_TCGV_I32(arg5); + *gen_opparam_ptr++ = GET_TCGV_I32(arg6); +} + +static inline void tcg_gen_op6_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5, + TCGv_i64 arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = GET_TCGV_I64(arg5); + *gen_opparam_ptr++ = GET_TCGV_I64(arg6); +} + +static inline void tcg_gen_op6ii_i32(int opc, TCGv_i32 arg1, TCGv_i32 arg2, + TCGv_i32 arg3, TCGv_i32 arg4, TCGArg arg5, + TCGArg arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I32(arg1); + *gen_opparam_ptr++ = GET_TCGV_I32(arg2); + *gen_opparam_ptr++ = GET_TCGV_I32(arg3); + *gen_opparam_ptr++ = GET_TCGV_I32(arg4); + *gen_opparam_ptr++ = arg5; + *gen_opparam_ptr++ = arg6; +} + +static inline void tcg_gen_op6ii_i64(int opc, TCGv_i64 arg1, TCGv_i64 arg2, + TCGv_i64 arg3, TCGv_i64 arg4, TCGArg arg5, + TCGArg arg6) +{ + *gen_opc_ptr++ = opc; + *gen_opparam_ptr++ = GET_TCGV_I64(arg1); + *gen_opparam_ptr++ = GET_TCGV_I64(arg2); + *gen_opparam_ptr++ = GET_TCGV_I64(arg3); + *gen_opparam_ptr++ = GET_TCGV_I64(arg4); + *gen_opparam_ptr++ = arg5; + *gen_opparam_ptr++ = arg6; +} + +static inline void gen_set_label(int n) +{ + tcg_gen_op1i(INDEX_op_set_label, n); +} + +static inline void tcg_gen_br(int label) +{ + tcg_gen_op1i(INDEX_op_br, label); +} + +static inline void tcg_gen_mov_i32(TCGv_i32 ret, TCGv_i32 arg) +{ + if (!TCGV_EQUAL_I32(ret, arg)) + tcg_gen_op2_i32(INDEX_op_mov_i32, ret, arg); +} + +static inline void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg) +{ + tcg_gen_op2i_i32(INDEX_op_movi_i32, ret, arg); +} + +/* helper calls */ +static inline void tcg_gen_helperN(void *func, int flags, int sizemask, + TCGArg ret, int nargs, TCGArg *args) +{ + TCGv_ptr fn; + fn = tcg_const_ptr((tcg_target_long)func); + tcg_gen_callN(&tcg_ctx, fn, flags, sizemask, ret, + nargs, args); + tcg_temp_free_ptr(fn); +} + +/* FIXME: Should this be pure? */ +static inline void tcg_gen_helper64(void *func, TCGv_i64 ret, + TCGv_i64 a, TCGv_i64 b) +{ + TCGv_ptr fn; + TCGArg args[2]; + fn = tcg_const_ptr((tcg_target_long)func); + args[0] = GET_TCGV_I64(a); + args[1] = GET_TCGV_I64(b); + tcg_gen_callN(&tcg_ctx, fn, 0, 7, GET_TCGV_I64(ret), 2, args); + tcg_temp_free_ptr(fn); +} + +/* 32 bit ops */ + +static inline void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld8u_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld8s_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld16u_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld16s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld16s_i32, ret, arg2, offset); +} + +static inline void tcg_gen_ld_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_ld_i32, ret, arg2, offset); +} + +static inline void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_st8_i32, arg1, arg2, offset); +} + +static inline void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_st16_i32, arg1, arg2, offset); +} + +static inline void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i32(INDEX_op_st_i32, arg1, arg2, offset); +} + +static inline void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_add_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_add_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_sub_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0 = tcg_const_i32(arg1); + tcg_gen_sub_i32(ret, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_sub_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + if (TCGV_EQUAL_I32(arg1, arg2)) { + tcg_gen_mov_i32(ret, arg1); + } else { + tcg_gen_op3_i32(INDEX_op_and_i32, ret, arg1, arg2); + } +} + +static inline void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_movi_i32(ret, 0); + } else if (arg2 == 0xffffffff) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_and_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + if (TCGV_EQUAL_I32(arg1, arg2)) { + tcg_gen_mov_i32(ret, arg1); + } else { + tcg_gen_op3_i32(INDEX_op_or_i32, ret, arg1, arg2); + } +} + +static inline void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0xffffffff) { + tcg_gen_movi_i32(ret, 0xffffffff); + } else if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_or_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + if (TCGV_EQUAL_I32(arg1, arg2)) { + tcg_gen_movi_i32(ret, 0); + } else { + tcg_gen_op3_i32(INDEX_op_xor_i32, ret, arg1, arg2); + } +} + +static inline void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_xor_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_shl_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_shl_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_shr_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_shr_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_sar_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_sar_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); + } +} + +static inline void tcg_gen_brcond_i32(int cond, TCGv_i32 arg1, TCGv_i32 arg2, + int label_index) +{ + tcg_gen_op4ii_i32(INDEX_op_brcond_i32, arg1, arg2, cond, label_index); +} + +static inline void tcg_gen_brcondi_i32(int cond, TCGv_i32 arg1, int32_t arg2, + int label_index) +{ + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_brcond_i32(cond, arg1, t0, label_index); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_mul_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_mul_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +} + +#ifdef TCG_TARGET_HAS_div_i32 +static inline void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_div_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_rem_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_divu_i32, ret, arg1, arg2); +} + +static inline void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_op3_i32(INDEX_op_remu_i32, ret, arg1, arg2); +} +#else +static inline void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_sari_i32(t0, arg1, 31); + tcg_gen_op5_i32(INDEX_op_div2_i32, ret, t0, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_sari_i32(t0, arg1, 31); + tcg_gen_op5_i32(INDEX_op_div2_i32, t0, ret, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_movi_i32(t0, 0); + tcg_gen_op5_i32(INDEX_op_divu2_i32, ret, t0, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_movi_i32(t0, 0); + tcg_gen_op5_i32(INDEX_op_divu2_i32, t0, ret, arg1, t0, arg2); + tcg_temp_free_i32(t0); +} +#endif + +#if TCG_TARGET_REG_BITS == 32 + +static inline void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + if (!TCGV_EQUAL_I64(ret, arg)) { + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); + } +} + +static inline void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) +{ + tcg_gen_movi_i32(TCGV_LOW(ret), arg); + tcg_gen_movi_i32(TCGV_HIGH(ret), arg >> 32); +} + +static inline void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld8u_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld8s_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(ret), 31); +} + +static inline void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld16u_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ld16s_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld16s_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, + tcg_target_long offset) +{ + /* since arg2 and ret have different types, they cannot be the + same temporary */ +#ifdef TCG_TARGET_WORDS_BIGENDIAN + tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset); + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset + 4); +#else + tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); + tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset + 4); +#endif +} + +static inline void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_st8_i32(TCGV_LOW(arg1), arg2, offset); +} + +static inline void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_st16_i32(TCGV_LOW(arg1), arg2, offset); +} + +static inline void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ + tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset); +} + +static inline void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, + tcg_target_long offset) +{ +#ifdef TCG_TARGET_WORDS_BIGENDIAN + tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset); + tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset + 4); +#else + tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset); + tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset + 4); +#endif +} + +static inline void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op6_i32(INDEX_op_add2_i32, TCGV_LOW(ret), TCGV_HIGH(ret), + TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2), + TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op6_i32(INDEX_op_sub2_i32, TCGV_LOW(ret), TCGV_HIGH(ret), + TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2), + TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_and_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); + tcg_gen_and_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_andi_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); + tcg_gen_andi_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); +} + +static inline void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_or_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); + tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_ori_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); + tcg_gen_ori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); +} + +static inline void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_xor_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); + tcg_gen_xor_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); +} + +static inline void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_xori_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); + tcg_gen_xori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); +} + +/* XXX: use generic code when basic block handling is OK or CPU + specific code (x86) */ +static inline void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_shl_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_shifti_i64(ret, arg1, arg2, 0, 0); +} + +static inline void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_shr_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_shifti_i64(ret, arg1, arg2, 1, 0); +} + +static inline void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_sar_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1); +} + +static inline void tcg_gen_brcond_i64(int cond, TCGv_i64 arg1, TCGv_i64 arg2, + int label_index) +{ + tcg_gen_op6ii_i32(INDEX_op_brcond2_i32, + TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2), + TCGV_HIGH(arg2), cond, label_index); +} + +static inline void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + TCGv_i32 t1; + + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i32(); + + tcg_gen_op4_i32(INDEX_op_mulu2_i32, TCGV_LOW(t0), TCGV_HIGH(t0), + TCGV_LOW(arg1), TCGV_LOW(arg2)); + + tcg_gen_mul_i32(t1, TCGV_LOW(arg1), TCGV_HIGH(arg2)); + tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); + tcg_gen_mul_i32(t1, TCGV_HIGH(arg1), TCGV_LOW(arg2)); + tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); + + tcg_gen_mov_i64(ret, t0); + tcg_temp_free_i64(t0); + tcg_temp_free_i32(t1); +} + +static inline void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_div_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_rem_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_divu_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_helper64(tcg_helper_remu_i64, ret, arg1, arg2); +} + +#else + +static inline void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + if (!TCGV_EQUAL_I64(ret, arg)) + tcg_gen_op2_i64(INDEX_op_mov_i64, ret, arg); +} + +static inline void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) +{ + tcg_gen_op2i_i64(INDEX_op_movi_i64, ret, arg); +} + +static inline void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld8u_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld8s_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld16u_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld16s_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld16s_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld32u_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld32s_i64, ret, arg2, offset); +} + +static inline void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_i64 arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_ld_i64, ret, arg2, offset); +} + +static inline void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st8_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st16_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_i64 arg2, + tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st32_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_i64 arg2, tcg_target_long offset) +{ + tcg_gen_ldst_op_i64(INDEX_op_st_i64, arg1, arg2, offset); +} + +static inline void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_add_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_sub_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + if (TCGV_EQUAL_I64(arg1, arg2)) { + tcg_gen_mov_i64(ret, arg1); + } else { + tcg_gen_op3_i64(INDEX_op_and_i64, ret, arg1, arg2); + } +} + +static inline void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_and_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + if (TCGV_EQUAL_I64(arg1, arg2)) { + tcg_gen_mov_i64(ret, arg1); + } else { + tcg_gen_op3_i64(INDEX_op_or_i64, ret, arg1, arg2); + } +} + +static inline void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_or_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + if (TCGV_EQUAL_I64(arg1, arg2)) { + tcg_gen_movi_i64(ret, 0); + } else { + tcg_gen_op3_i64(INDEX_op_xor_i64, ret, arg1, arg2); + } +} + +static inline void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_xor_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_shl_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_shl_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_shr_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_shr_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_sar_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_sar_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_brcond_i64(int cond, TCGv_i64 arg1, TCGv_i64 arg2, + int label_index) +{ + tcg_gen_op4ii_i64(INDEX_op_brcond_i64, arg1, arg2, cond, label_index); +} + +static inline void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_mul_i64, ret, arg1, arg2); +} + +#ifdef TCG_TARGET_HAS_div_i64 +static inline void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_div_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_rem_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_divu_i64, ret, arg1, arg2); +} + +static inline void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_op3_i64(INDEX_op_remu_i64, ret, arg1, arg2); +} +#else +static inline void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_sari_i64(t0, arg1, 63); + tcg_gen_op5_i64(INDEX_op_div2_i64, ret, t0, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_sari_i64(t0, arg1, 63); + tcg_gen_op5_i64(INDEX_op_div2_i64, t0, ret, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_movi_i64(t0, 0); + tcg_gen_op5_i64(INDEX_op_divu2_i64, ret, t0, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_movi_i64(t0, 0); + tcg_gen_op5_i64(INDEX_op_divu2_i64, t0, ret, arg1, t0, arg2); + tcg_temp_free_i64(t0); +} +#endif + +#endif + +static inline void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_add_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} + +static inline void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg1); + tcg_gen_sub_i64(ret, t0, arg2); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_sub_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); + } +} +static inline void tcg_gen_brcondi_i64(int cond, TCGv_i64 arg1, int64_t arg2, + int label_index) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_brcond_i64(cond, arg1, t0, label_index); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_mul_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + + +/***************************************/ +/* optional operations */ + +static inline void tcg_gen_ext8s_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext8s_i32 + tcg_gen_op2_i32(INDEX_op_ext8s_i32, ret, arg); +#else + tcg_gen_shli_i32(ret, arg, 24); + tcg_gen_sari_i32(ret, ret, 24); +#endif +} + +static inline void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext16s_i32 + tcg_gen_op2_i32(INDEX_op_ext16s_i32, ret, arg); +#else + tcg_gen_shli_i32(ret, arg, 16); + tcg_gen_sari_i32(ret, ret, 16); +#endif +} + +static inline void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext8u_i32 + tcg_gen_op2_i32(INDEX_op_ext8u_i32, ret, arg); +#else + tcg_gen_andi_i32(ret, arg, 0xffu); +#endif +} + +static inline void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_ext16u_i32 + tcg_gen_op2_i32(INDEX_op_ext16u_i32, ret, arg); +#else + tcg_gen_andi_i32(ret, arg, 0xffffu); +#endif +} + +/* Note: we assume the two high bytes are set to zero */ +static inline void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_bswap16_i32 + tcg_gen_op2_i32(INDEX_op_bswap16_i32, ret, arg); +#else + TCGv_i32 t0 = tcg_temp_new_i32(); + + tcg_gen_ext8u_i32(t0, arg); + tcg_gen_shli_i32(t0, t0, 8); + tcg_gen_shri_i32(ret, arg, 8); + tcg_gen_or_i32(ret, ret, t0); + tcg_temp_free_i32(t0); +#endif +} + +static inline void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_bswap32_i32 + tcg_gen_op2_i32(INDEX_op_bswap32_i32, ret, arg); +#else + TCGv_i32 t0, t1; + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + + tcg_gen_shli_i32(t0, arg, 24); + + tcg_gen_andi_i32(t1, arg, 0x0000ff00); + tcg_gen_shli_i32(t1, t1, 8); + tcg_gen_or_i32(t0, t0, t1); + + tcg_gen_shri_i32(t1, arg, 8); + tcg_gen_andi_i32(t1, t1, 0x0000ff00); + tcg_gen_or_i32(t0, t0, t1); + + tcg_gen_shri_i32(t1, arg, 24); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif +} + +#if TCG_TARGET_REG_BITS == 32 +static inline void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext8s_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext16s_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +static inline void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext8u_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_ext16u_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_trunc_i64_i32(TCGv_i32 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(ret, TCGV_LOW(arg)); +} + +static inline void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), arg); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +} + +static inline void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_mov_i32(TCGV_LOW(ret), arg); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +} + +/* Note: we assume the six high bytes are set to zero */ +static inline void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); + tcg_gen_bswap16_i32(TCGV_LOW(ret), TCGV_LOW(arg)); +} + +/* Note: we assume the four high bytes are set to zero */ +static inline void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); + tcg_gen_bswap32_i32(TCGV_LOW(ret), TCGV_LOW(arg)); +} + +static inline void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + TCGv_i32 t0, t1; + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + + tcg_gen_bswap32_i32(t0, TCGV_LOW(arg)); + tcg_gen_bswap32_i32(t1, TCGV_HIGH(arg)); + tcg_gen_mov_i32(TCGV_LOW(ret), t1); + tcg_gen_mov_i32(TCGV_HIGH(ret), t0); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +} +#else + +static inline void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext8s_i64 + tcg_gen_op2_i64(INDEX_op_ext8s_i64, ret, arg); +#else + tcg_gen_shli_i64(ret, arg, 56); + tcg_gen_sari_i64(ret, ret, 56); +#endif +} + +static inline void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext16s_i64 + tcg_gen_op2_i64(INDEX_op_ext16s_i64, ret, arg); +#else + tcg_gen_shli_i64(ret, arg, 48); + tcg_gen_sari_i64(ret, ret, 48); +#endif +} + +static inline void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext32s_i64 + tcg_gen_op2_i64(INDEX_op_ext32s_i64, ret, arg); +#else + tcg_gen_shli_i64(ret, arg, 32); + tcg_gen_sari_i64(ret, ret, 32); +#endif +} + +static inline void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext8u_i64 + tcg_gen_op2_i64(INDEX_op_ext8u_i64, ret, arg); +#else + tcg_gen_andi_i64(ret, arg, 0xffu); +#endif +} + +static inline void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext16u_i64 + tcg_gen_op2_i64(INDEX_op_ext16u_i64, ret, arg); +#else + tcg_gen_andi_i64(ret, arg, 0xffffu); +#endif +} + +static inline void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_ext32u_i64 + tcg_gen_op2_i64(INDEX_op_ext32u_i64, ret, arg); +#else + tcg_gen_andi_i64(ret, arg, 0xffffffffu); +#endif +} + +/* Note: we assume the target supports move between 32 and 64 bit + registers. This will probably break MIPS64 targets. */ +static inline void tcg_gen_trunc_i64_i32(TCGv_i32 ret, TCGv_i64 arg) +{ + tcg_gen_mov_i32(ret, MAKE_TCGV_I32(GET_TCGV_I64(arg))); +} + +/* Note: we assume the target supports move between 32 and 64 bit + registers */ +static inline void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_ext32u_i64(ret, MAKE_TCGV_I64(GET_TCGV_I32(arg))); +} + +/* Note: we assume the target supports move between 32 and 64 bit + registers */ +static inline void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_gen_ext32s_i64(ret, MAKE_TCGV_I64(GET_TCGV_I32(arg))); +} + +/* Note: we assume the six high bytes are set to zero */ +static inline void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_bswap16_i64 + tcg_gen_op2_i64(INDEX_op_bswap16_i64, ret, arg); +#else + TCGv_i64 t0 = tcg_temp_new_i64(); + + tcg_gen_ext8u_i64(t0, arg); + tcg_gen_shli_i64(t0, t0, 8); + tcg_gen_shri_i64(ret, arg, 8); + tcg_gen_or_i64(ret, ret, t0); + tcg_temp_free_i64(t0); +#endif +} + +/* Note: we assume the four high bytes are set to zero */ +static inline void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_bswap32_i64 + tcg_gen_op2_i64(INDEX_op_bswap32_i64, ret, arg); +#else + TCGv_i64 t0, t1; + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + + tcg_gen_shli_i64(t0, arg, 24); + tcg_gen_ext32u_i64(t0, t0); + + tcg_gen_andi_i64(t1, arg, 0x0000ff00); + tcg_gen_shli_i64(t1, t1, 8); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 8); + tcg_gen_andi_i64(t1, t1, 0x0000ff00); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 24); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +static inline void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_bswap64_i64 + tcg_gen_op2_i64(INDEX_op_bswap64_i64, ret, arg); +#else + TCGv_i64 t0 = tcg_temp_new_i64(); + TCGv_i64 t1 = tcg_temp_new_i64(); + + tcg_gen_shli_i64(t0, arg, 56); + + tcg_gen_andi_i64(t1, arg, 0x0000ff00); + tcg_gen_shli_i64(t1, t1, 40); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_andi_i64(t1, arg, 0x00ff0000); + tcg_gen_shli_i64(t1, t1, 24); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_andi_i64(t1, arg, 0xff000000); + tcg_gen_shli_i64(t1, t1, 8); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 8); + tcg_gen_andi_i64(t1, t1, 0xff000000); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 24); + tcg_gen_andi_i64(t1, t1, 0x00ff0000); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 40); + tcg_gen_andi_i64(t1, t1, 0x0000ff00); + tcg_gen_or_i64(t0, t0, t1); + + tcg_gen_shri_i64(t1, arg, 56); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +#endif + +static inline void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_neg_i32 + tcg_gen_op2_i32(INDEX_op_neg_i32, ret, arg); +#else + TCGv_i32 t0 = tcg_const_i32(0); + tcg_gen_sub_i32(ret, t0, arg); + tcg_temp_free_i32(t0); +#endif +} + +static inline void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_neg_i64 + tcg_gen_op2_i64(INDEX_op_neg_i64, ret, arg); +#else + TCGv_i64 t0 = tcg_const_i64(0); + tcg_gen_sub_i64(ret, t0, arg); + tcg_temp_free_i64(t0); +#endif +} + +static inline void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) +{ +#ifdef TCG_TARGET_HAS_not_i32 + tcg_gen_op2_i32(INDEX_op_not_i32, ret, arg); +#else + tcg_gen_xori_i32(ret, arg, -1); +#endif +} + +static inline void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) +{ +#ifdef TCG_TARGET_HAS_not_i64 + tcg_gen_op2_i64(INDEX_op_not_i64, ret, arg); +#else + tcg_gen_xori_i64(ret, arg, -1); +#endif +} + +static inline void tcg_gen_discard_i32(TCGv_i32 arg) +{ + tcg_gen_op1_i32(INDEX_op_discard, arg); +} + +#if TCG_TARGET_REG_BITS == 32 +static inline void tcg_gen_discard_i64(TCGv_i64 arg) +{ + tcg_gen_discard_i32(TCGV_LOW(arg)); + tcg_gen_discard_i32(TCGV_HIGH(arg)); +} +#else +static inline void tcg_gen_discard_i64(TCGv_i64 arg) +{ + tcg_gen_op1_i64(INDEX_op_discard, arg); +} +#endif + +static inline void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high) +{ +#if TCG_TARGET_REG_BITS == 32 + tcg_gen_mov_i32(TCGV_LOW(dest), low); + tcg_gen_mov_i32(TCGV_HIGH(dest), high); +#else + TCGv_i64 tmp = tcg_temp_new_i64(); + /* This extension is only needed for type correctness. + We may be able to do better given target specific information. */ + tcg_gen_extu_i32_i64(tmp, high); + tcg_gen_shli_i64(tmp, tmp, 32); + tcg_gen_extu_i32_i64(dest, low); + tcg_gen_or_i64(dest, dest, tmp); + tcg_temp_free_i64(tmp); +#endif +} + +static inline void tcg_gen_concat32_i64(TCGv_i64 dest, TCGv_i64 low, TCGv_i64 high) +{ +#if TCG_TARGET_REG_BITS == 32 + tcg_gen_concat_i32_i64(dest, TCGV_LOW(low), TCGV_LOW(high)); +#else + TCGv_i64 tmp = tcg_temp_new_i64(); + tcg_gen_ext32u_i64(dest, low); + tcg_gen_shli_i64(tmp, high, 32); + tcg_gen_or_i64(dest, dest, tmp); + tcg_temp_free_i64(tmp); +#endif +} + +static inline void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_not_i32(t0, arg2); + tcg_gen_and_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_not_i64(t0, arg2); + tcg_gen_and_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_xor_i32(ret, arg1, arg2); + tcg_gen_not_i32(ret, ret); +} + +static inline void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_xor_i64(ret, arg1, arg2); + tcg_gen_not_i64(ret, ret); +} + +static inline void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_and_i32(ret, arg1, arg2); + tcg_gen_not_i32(ret, ret); +} + +static inline void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_and_i64(ret, arg1, arg2); + tcg_gen_not_i64(ret, ret); +} + +static inline void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + tcg_gen_or_i32(ret, arg1, arg2); + tcg_gen_not_i32(ret, ret); +} + +static inline void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + tcg_gen_or_i64(ret, arg1, arg2); + tcg_gen_not_i64(ret, ret); +} + +static inline void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_not_i32(t0, arg2); + tcg_gen_or_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +} + +static inline void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_not_i64(t0, arg2); + tcg_gen_or_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +} + +static inline void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i32 + tcg_gen_op3_i32(INDEX_op_rotl_i32, ret, arg1, arg2); +#else + TCGv_i32 t0, t1; + + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + tcg_gen_shl_i32(t0, arg1, arg2); + tcg_gen_subfi_i32(t1, 32, arg2); + tcg_gen_shr_i32(t1, arg1, t1); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif +} + +static inline void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i64 + tcg_gen_op3_i64(INDEX_op_rotl_i64, ret, arg1, arg2); +#else + TCGv_i64 t0, t1; + + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + tcg_gen_shl_i64(t0, arg1, arg2); + tcg_gen_subfi_i64(t1, 64, arg2); + tcg_gen_shr_i64(t1, arg1, t1); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +static inline void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { +#ifdef TCG_TARGET_HAS_rot_i32 + TCGv_i32 t0 = tcg_const_i32(arg2); + tcg_gen_rotl_i32(ret, arg1, t0); + tcg_temp_free_i32(t0); +#else + TCGv_i32 t0, t1; + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + tcg_gen_shli_i32(t0, arg1, arg2); + tcg_gen_shri_i32(t1, arg1, 32 - arg2); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif + } +} + +static inline void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { +#ifdef TCG_TARGET_HAS_rot_i64 + TCGv_i64 t0 = tcg_const_i64(arg2); + tcg_gen_rotl_i64(ret, arg1, t0); + tcg_temp_free_i64(t0); +#else + TCGv_i64 t0, t1; + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + tcg_gen_shli_i64(t0, arg1, arg2); + tcg_gen_shri_i64(t1, arg1, 64 - arg2); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif + } +} + +static inline void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i32 + tcg_gen_op3_i32(INDEX_op_rotr_i32, ret, arg1, arg2); +#else + TCGv_i32 t0, t1; + + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + tcg_gen_shr_i32(t0, arg1, arg2); + tcg_gen_subfi_i32(t1, 32, arg2); + tcg_gen_shl_i32(t1, arg1, t1); + tcg_gen_or_i32(ret, t0, t1); + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +#endif +} + +static inline void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) +{ +#ifdef TCG_TARGET_HAS_rot_i64 + tcg_gen_op3_i64(INDEX_op_rotr_i64, ret, arg1, arg2); +#else + TCGv_i64 t0, t1; + + t0 = tcg_temp_new_i64(); + t1 = tcg_temp_new_i64(); + tcg_gen_shr_i64(t0, arg1, arg2); + tcg_gen_subfi_i64(t1, 64, arg2); + tcg_gen_shl_i64(t1, arg1, t1); + tcg_gen_or_i64(ret, t0, t1); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +#endif +} + +static inline void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i32(ret, arg1); + } else { + tcg_gen_rotli_i32(ret, arg1, 32 - arg2); + } +} + +static inline void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) +{ + /* some cases can be optimized here */ + if (arg2 == 0) { + tcg_gen_mov_i64(ret, arg1); + } else { + tcg_gen_rotli_i64(ret, arg1, 64 - arg2); + } +} + +/***************************************/ +/* QEMU specific operations. Their type depend on the QEMU CPU + type. */ +#ifndef TARGET_LONG_BITS +#error must include QEMU headers +#endif + +#if TARGET_LONG_BITS == 32 +#define TCGv TCGv_i32 +#define tcg_temp_new() tcg_temp_new_i32() +#define tcg_global_reg_new tcg_global_reg_new_i32 +#define tcg_global_mem_new tcg_global_mem_new_i32 +#define tcg_temp_local_new() tcg_temp_local_new_i32() +#define tcg_temp_free tcg_temp_free_i32 +#define tcg_gen_qemu_ldst_op tcg_gen_op3i_i32 +#define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i32 +#define TCGV_UNUSED(x) TCGV_UNUSED_I32(x) +#define TCGV_EQUAL(a, b) TCGV_EQUAL_I32(a, b) +#else +#define TCGv TCGv_i64 +#define tcg_temp_new() tcg_temp_new_i64() +#define tcg_global_reg_new tcg_global_reg_new_i64 +#define tcg_global_mem_new tcg_global_mem_new_i64 +#define tcg_temp_local_new() tcg_temp_local_new_i64() +#define tcg_temp_free tcg_temp_free_i64 +#define tcg_gen_qemu_ldst_op tcg_gen_op3i_i64 +#define tcg_gen_qemu_ldst_op_i64 tcg_gen_qemu_ldst_op_i64_i64 +#define TCGV_UNUSED(x) TCGV_UNUSED_I64(x) +#define TCGV_EQUAL(a, b) TCGV_EQUAL_I64(a, b) +#endif + +/* debug info: write the PC of the corresponding QEMU CPU instruction */ +static inline void tcg_gen_debug_insn_start(uint64_t pc) +{ + /* XXX: must really use a 32 bit size for TCGArg in all cases */ +#if TARGET_LONG_BITS > TCG_TARGET_REG_BITS + tcg_gen_op2ii(INDEX_op_debug_insn_start, + (uint32_t)(pc), (uint32_t)(pc >> 32)); +#else + tcg_gen_op1i(INDEX_op_debug_insn_start, pc); +#endif +} + +static inline void tcg_gen_exit_tb(tcg_target_long val) +{ + tcg_gen_op1i(INDEX_op_exit_tb, val); +} + +static inline void tcg_gen_goto_tb(int idx) +{ + tcg_gen_op1i(INDEX_op_goto_tb, idx); +} + +#if TCG_TARGET_REG_BITS == 32 +static inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld8u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld8u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +#endif +} + +static inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld8s, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld8s, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +#endif +} + +static inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld16u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld16u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +#endif +} + +static inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld16s, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld16s, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +#endif +} + +static inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld32u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld32u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); +#endif +} + +static inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_ld32u, ret, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_ld32u, TCGV_LOW(ret), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); +#endif +} + +static inline void tcg_gen_qemu_ld64(TCGv_i64 ret, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op4i_i32(INDEX_op_qemu_ld64, TCGV_LOW(ret), TCGV_HIGH(ret), addr, mem_index); +#else + tcg_gen_op5i_i32(INDEX_op_qemu_ld64, TCGV_LOW(ret), TCGV_HIGH(ret), + TCGV_LOW(addr), TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_st8, arg, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_st8, TCGV_LOW(arg), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_st16, arg, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_st16, TCGV_LOW(arg), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op3i_i32(INDEX_op_qemu_st32, arg, addr, mem_index); +#else + tcg_gen_op4i_i32(INDEX_op_qemu_st32, TCGV_LOW(arg), TCGV_LOW(addr), + TCGV_HIGH(addr), mem_index); +#endif +} + +static inline void tcg_gen_qemu_st64(TCGv_i64 arg, TCGv addr, int mem_index) +{ +#if TARGET_LONG_BITS == 32 + tcg_gen_op4i_i32(INDEX_op_qemu_st64, TCGV_LOW(arg), TCGV_HIGH(arg), addr, + mem_index); +#else + tcg_gen_op5i_i32(INDEX_op_qemu_st64, TCGV_LOW(arg), TCGV_HIGH(arg), + TCGV_LOW(addr), TCGV_HIGH(addr), mem_index); +#endif +} + +#define tcg_gen_ld_ptr tcg_gen_ld_i32 +#define tcg_gen_discard_ptr tcg_gen_discard_i32 + +#else /* TCG_TARGET_REG_BITS == 32 */ + +static inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld8u, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld8s, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld16u, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld16s, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld32u, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_ld32s, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_ld64(TCGv_i64 ret, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op_i64(INDEX_op_qemu_ld64, ret, addr, mem_index); +} + +static inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_st8, arg, addr, mem_index); +} + +static inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_st16, arg, addr, mem_index); +} + +static inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op(INDEX_op_qemu_st32, arg, addr, mem_index); +} + +static inline void tcg_gen_qemu_st64(TCGv_i64 arg, TCGv addr, int mem_index) +{ + tcg_gen_qemu_ldst_op_i64(INDEX_op_qemu_st64, arg, addr, mem_index); +} + +#define tcg_gen_ld_ptr tcg_gen_ld_i64 +#define tcg_gen_discard_ptr tcg_gen_discard_i64 + +#endif /* TCG_TARGET_REG_BITS != 32 */ + +#if TARGET_LONG_BITS == 64 +#define TCG_TYPE_TL TCG_TYPE_I64 +#define tcg_gen_movi_tl tcg_gen_movi_i64 +#define tcg_gen_mov_tl tcg_gen_mov_i64 +#define tcg_gen_ld8u_tl tcg_gen_ld8u_i64 +#define tcg_gen_ld8s_tl tcg_gen_ld8s_i64 +#define tcg_gen_ld16u_tl tcg_gen_ld16u_i64 +#define tcg_gen_ld16s_tl tcg_gen_ld16s_i64 +#define tcg_gen_ld32u_tl tcg_gen_ld32u_i64 +#define tcg_gen_ld32s_tl tcg_gen_ld32s_i64 +#define tcg_gen_ld_tl tcg_gen_ld_i64 +#define tcg_gen_st8_tl tcg_gen_st8_i64 +#define tcg_gen_st16_tl tcg_gen_st16_i64 +#define tcg_gen_st32_tl tcg_gen_st32_i64 +#define tcg_gen_st_tl tcg_gen_st_i64 +#define tcg_gen_add_tl tcg_gen_add_i64 +#define tcg_gen_addi_tl tcg_gen_addi_i64 +#define tcg_gen_sub_tl tcg_gen_sub_i64 +#define tcg_gen_neg_tl tcg_gen_neg_i64 +#define tcg_gen_subfi_tl tcg_gen_subfi_i64 +#define tcg_gen_subi_tl tcg_gen_subi_i64 +#define tcg_gen_and_tl tcg_gen_and_i64 +#define tcg_gen_andi_tl tcg_gen_andi_i64 +#define tcg_gen_or_tl tcg_gen_or_i64 +#define tcg_gen_ori_tl tcg_gen_ori_i64 +#define tcg_gen_xor_tl tcg_gen_xor_i64 +#define tcg_gen_xori_tl tcg_gen_xori_i64 +#define tcg_gen_not_tl tcg_gen_not_i64 +#define tcg_gen_shl_tl tcg_gen_shl_i64 +#define tcg_gen_shli_tl tcg_gen_shli_i64 +#define tcg_gen_shr_tl tcg_gen_shr_i64 +#define tcg_gen_shri_tl tcg_gen_shri_i64 +#define tcg_gen_sar_tl tcg_gen_sar_i64 +#define tcg_gen_sari_tl tcg_gen_sari_i64 +#define tcg_gen_brcond_tl tcg_gen_brcond_i64 +#define tcg_gen_brcondi_tl tcg_gen_brcondi_i64 +#define tcg_gen_mul_tl tcg_gen_mul_i64 +#define tcg_gen_muli_tl tcg_gen_muli_i64 +#define tcg_gen_div_tl tcg_gen_div_i64 +#define tcg_gen_rem_tl tcg_gen_rem_i64 +#define tcg_gen_divu_tl tcg_gen_divu_i64 +#define tcg_gen_remu_tl tcg_gen_remu_i64 +#define tcg_gen_discard_tl tcg_gen_discard_i64 +#define tcg_gen_trunc_tl_i32 tcg_gen_trunc_i64_i32 +#define tcg_gen_trunc_i64_tl tcg_gen_mov_i64 +#define tcg_gen_extu_i32_tl tcg_gen_extu_i32_i64 +#define tcg_gen_ext_i32_tl tcg_gen_ext_i32_i64 +#define tcg_gen_extu_tl_i64 tcg_gen_mov_i64 +#define tcg_gen_ext_tl_i64 tcg_gen_mov_i64 +#define tcg_gen_ext8u_tl tcg_gen_ext8u_i64 +#define tcg_gen_ext8s_tl tcg_gen_ext8s_i64 +#define tcg_gen_ext16u_tl tcg_gen_ext16u_i64 +#define tcg_gen_ext16s_tl tcg_gen_ext16s_i64 +#define tcg_gen_ext32u_tl tcg_gen_ext32u_i64 +#define tcg_gen_ext32s_tl tcg_gen_ext32s_i64 +#define tcg_gen_bswap16_tl tcg_gen_bswap16_i64 +#define tcg_gen_bswap32_tl tcg_gen_bswap32_i64 +#define tcg_gen_bswap64_tl tcg_gen_bswap64_i64 +#define tcg_gen_concat_tl_i64 tcg_gen_concat32_i64 +#define tcg_gen_andc_tl tcg_gen_andc_i64 +#define tcg_gen_eqv_tl tcg_gen_eqv_i64 +#define tcg_gen_nand_tl tcg_gen_nand_i64 +#define tcg_gen_nor_tl tcg_gen_nor_i64 +#define tcg_gen_orc_tl tcg_gen_orc_i64 +#define tcg_gen_rotl_tl tcg_gen_rotl_i64 +#define tcg_gen_rotli_tl tcg_gen_rotli_i64 +#define tcg_gen_rotr_tl tcg_gen_rotr_i64 +#define tcg_gen_rotri_tl tcg_gen_rotri_i64 +#define tcg_const_tl tcg_const_i64 +#define tcg_const_local_tl tcg_const_local_i64 +#else +#define TCG_TYPE_TL TCG_TYPE_I32 +#define tcg_gen_movi_tl tcg_gen_movi_i32 +#define tcg_gen_mov_tl tcg_gen_mov_i32 +#define tcg_gen_ld8u_tl tcg_gen_ld8u_i32 +#define tcg_gen_ld8s_tl tcg_gen_ld8s_i32 +#define tcg_gen_ld16u_tl tcg_gen_ld16u_i32 +#define tcg_gen_ld16s_tl tcg_gen_ld16s_i32 +#define tcg_gen_ld32u_tl tcg_gen_ld_i32 +#define tcg_gen_ld32s_tl tcg_gen_ld_i32 +#define tcg_gen_ld_tl tcg_gen_ld_i32 +#define tcg_gen_st8_tl tcg_gen_st8_i32 +#define tcg_gen_st16_tl tcg_gen_st16_i32 +#define tcg_gen_st32_tl tcg_gen_st_i32 +#define tcg_gen_st_tl tcg_gen_st_i32 +#define tcg_gen_add_tl tcg_gen_add_i32 +#define tcg_gen_addi_tl tcg_gen_addi_i32 +#define tcg_gen_sub_tl tcg_gen_sub_i32 +#define tcg_gen_neg_tl tcg_gen_neg_i32 +#define tcg_gen_subfi_tl tcg_gen_subfi_i32 +#define tcg_gen_subi_tl tcg_gen_subi_i32 +#define tcg_gen_and_tl tcg_gen_and_i32 +#define tcg_gen_andi_tl tcg_gen_andi_i32 +#define tcg_gen_or_tl tcg_gen_or_i32 +#define tcg_gen_ori_tl tcg_gen_ori_i32 +#define tcg_gen_xor_tl tcg_gen_xor_i32 +#define tcg_gen_xori_tl tcg_gen_xori_i32 +#define tcg_gen_not_tl tcg_gen_not_i32 +#define tcg_gen_shl_tl tcg_gen_shl_i32 +#define tcg_gen_shli_tl tcg_gen_shli_i32 +#define tcg_gen_shr_tl tcg_gen_shr_i32 +#define tcg_gen_shri_tl tcg_gen_shri_i32 +#define tcg_gen_sar_tl tcg_gen_sar_i32 +#define tcg_gen_sari_tl tcg_gen_sari_i32 +#define tcg_gen_brcond_tl tcg_gen_brcond_i32 +#define tcg_gen_brcondi_tl tcg_gen_brcondi_i32 +#define tcg_gen_mul_tl tcg_gen_mul_i32 +#define tcg_gen_muli_tl tcg_gen_muli_i32 +#define tcg_gen_div_tl tcg_gen_div_i32 +#define tcg_gen_rem_tl tcg_gen_rem_i32 +#define tcg_gen_divu_tl tcg_gen_divu_i32 +#define tcg_gen_remu_tl tcg_gen_remu_i32 +#define tcg_gen_discard_tl tcg_gen_discard_i32 +#define tcg_gen_trunc_tl_i32 tcg_gen_mov_i32 +#define tcg_gen_trunc_i64_tl tcg_gen_trunc_i64_i32 +#define tcg_gen_extu_i32_tl tcg_gen_mov_i32 +#define tcg_gen_ext_i32_tl tcg_gen_mov_i32 +#define tcg_gen_extu_tl_i64 tcg_gen_extu_i32_i64 +#define tcg_gen_ext_tl_i64 tcg_gen_ext_i32_i64 +#define tcg_gen_ext8u_tl tcg_gen_ext8u_i32 +#define tcg_gen_ext8s_tl tcg_gen_ext8s_i32 +#define tcg_gen_ext16u_tl tcg_gen_ext16u_i32 +#define tcg_gen_ext16s_tl tcg_gen_ext16s_i32 +#define tcg_gen_ext32u_tl tcg_gen_mov_i32 +#define tcg_gen_ext32s_tl tcg_gen_mov_i32 +#define tcg_gen_bswap16_tl tcg_gen_bswap16_i32 +#define tcg_gen_bswap32_tl tcg_gen_bswap32_i32 +#define tcg_gen_concat_tl_i64 tcg_gen_concat_i32_i64 +#define tcg_gen_andc_tl tcg_gen_andc_i32 +#define tcg_gen_eqv_tl tcg_gen_eqv_i32 +#define tcg_gen_nand_tl tcg_gen_nand_i32 +#define tcg_gen_nor_tl tcg_gen_nor_i32 +#define tcg_gen_orc_tl tcg_gen_orc_i32 +#define tcg_gen_rotl_tl tcg_gen_rotl_i32 +#define tcg_gen_rotli_tl tcg_gen_rotli_i32 +#define tcg_gen_rotr_tl tcg_gen_rotr_i32 +#define tcg_gen_rotri_tl tcg_gen_rotri_i32 +#define tcg_const_tl tcg_const_i32 +#define tcg_const_local_tl tcg_const_local_i32 +#endif + +#if TCG_TARGET_REG_BITS == 32 +#define tcg_gen_add_ptr tcg_gen_add_i32 +#define tcg_gen_addi_ptr tcg_gen_addi_i32 +#define tcg_gen_ext_i32_ptr tcg_gen_mov_i32 +#else /* TCG_TARGET_REG_BITS == 32 */ +#define tcg_gen_add_ptr tcg_gen_add_i64 +#define tcg_gen_addi_ptr tcg_gen_addi_i64 +#define tcg_gen_ext_i32_ptr tcg_gen_ext_i32_i64 +#endif /* TCG_TARGET_REG_BITS != 32 */ diff --git a/qemu/qemu-git/tcg/tcg-opc.h b/qemu/qemu-git/tcg/tcg-opc.h new file mode 100644 index 0000000..b7f3fd7 --- /dev/null +++ b/qemu/qemu-git/tcg/tcg-opc.h @@ -0,0 +1,272 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifndef DEF2 +#define DEF2(name, oargs, iargs, cargs, flags) DEF(name, oargs + iargs + cargs, 0) +#endif + +/* predefined ops */ +DEF2(end, 0, 0, 0, 0) /* must be kept first */ +DEF2(nop, 0, 0, 0, 0) +DEF2(nop1, 0, 0, 1, 0) +DEF2(nop2, 0, 0, 2, 0) +DEF2(nop3, 0, 0, 3, 0) +DEF2(nopn, 0, 0, 1, 0) /* variable number of parameters */ + +DEF2(discard, 1, 0, 0, 0) + +DEF2(set_label, 0, 0, 1, 0) +DEF2(call, 0, 1, 2, TCG_OPF_SIDE_EFFECTS) /* variable number of parameters */ +DEF2(jmp, 0, 1, 0, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +DEF2(br, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) + +DEF2(mov_i32, 1, 1, 0, 0) +DEF2(movi_i32, 1, 0, 1, 0) +/* load/store */ +DEF2(ld8u_i32, 1, 1, 1, 0) +DEF2(ld8s_i32, 1, 1, 1, 0) +DEF2(ld16u_i32, 1, 1, 1, 0) +DEF2(ld16s_i32, 1, 1, 1, 0) +DEF2(ld_i32, 1, 1, 1, 0) +DEF2(st8_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st16_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st_i32, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +/* arith */ +DEF2(add_i32, 1, 2, 0, 0) +DEF2(sub_i32, 1, 2, 0, 0) +DEF2(mul_i32, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_div_i32 +DEF2(div_i32, 1, 2, 0, 0) +DEF2(divu_i32, 1, 2, 0, 0) +DEF2(rem_i32, 1, 2, 0, 0) +DEF2(remu_i32, 1, 2, 0, 0) +#else +DEF2(div2_i32, 2, 3, 0, 0) +DEF2(divu2_i32, 2, 3, 0, 0) +#endif +DEF2(and_i32, 1, 2, 0, 0) +DEF2(or_i32, 1, 2, 0, 0) +DEF2(xor_i32, 1, 2, 0, 0) +/* shifts/rotates */ +DEF2(shl_i32, 1, 2, 0, 0) +DEF2(shr_i32, 1, 2, 0, 0) +DEF2(sar_i32, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_rot_i32 +DEF2(rotl_i32, 1, 2, 0, 0) +DEF2(rotr_i32, 1, 2, 0, 0) +#endif + +DEF2(brcond_i32, 0, 2, 2, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +#if TCG_TARGET_REG_BITS == 32 +DEF2(add2_i32, 2, 4, 0, 0) +DEF2(sub2_i32, 2, 4, 0, 0) +DEF2(brcond2_i32, 0, 4, 2, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +DEF2(mulu2_i32, 2, 2, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext8s_i32 +DEF2(ext8s_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16s_i32 +DEF2(ext16s_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext8u_i32 +DEF2(ext8u_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16u_i32 +DEF2(ext16u_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap16_i32 +DEF2(bswap16_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap32_i32 +DEF2(bswap32_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_not_i32 +DEF2(not_i32, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_neg_i32 +DEF2(neg_i32, 1, 1, 0, 0) +#endif + +#if TCG_TARGET_REG_BITS == 64 +DEF2(mov_i64, 1, 1, 0, 0) +DEF2(movi_i64, 1, 0, 1, 0) +/* load/store */ +DEF2(ld8u_i64, 1, 1, 1, 0) +DEF2(ld8s_i64, 1, 1, 1, 0) +DEF2(ld16u_i64, 1, 1, 1, 0) +DEF2(ld16s_i64, 1, 1, 1, 0) +DEF2(ld32u_i64, 1, 1, 1, 0) +DEF2(ld32s_i64, 1, 1, 1, 0) +DEF2(ld_i64, 1, 1, 1, 0) +DEF2(st8_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st16_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st32_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +DEF2(st_i64, 0, 2, 1, TCG_OPF_SIDE_EFFECTS) +/* arith */ +DEF2(add_i64, 1, 2, 0, 0) +DEF2(sub_i64, 1, 2, 0, 0) +DEF2(mul_i64, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_div_i64 +DEF2(div_i64, 1, 2, 0, 0) +DEF2(divu_i64, 1, 2, 0, 0) +DEF2(rem_i64, 1, 2, 0, 0) +DEF2(remu_i64, 1, 2, 0, 0) +#else +DEF2(div2_i64, 2, 3, 0, 0) +DEF2(divu2_i64, 2, 3, 0, 0) +#endif +DEF2(and_i64, 1, 2, 0, 0) +DEF2(or_i64, 1, 2, 0, 0) +DEF2(xor_i64, 1, 2, 0, 0) +/* shifts/rotates */ +DEF2(shl_i64, 1, 2, 0, 0) +DEF2(shr_i64, 1, 2, 0, 0) +DEF2(sar_i64, 1, 2, 0, 0) +#ifdef TCG_TARGET_HAS_rot_i64 +DEF2(rotl_i64, 1, 2, 0, 0) +DEF2(rotr_i64, 1, 2, 0, 0) +#endif + +DEF2(brcond_i64, 0, 2, 2, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +#ifdef TCG_TARGET_HAS_ext8s_i64 +DEF2(ext8s_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16s_i64 +DEF2(ext16s_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext32s_i64 +DEF2(ext32s_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext8u_i64 +DEF2(ext8u_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext16u_i64 +DEF2(ext16u_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_ext32u_i64 +DEF2(ext32u_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap16_i64 +DEF2(bswap16_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap32_i64 +DEF2(bswap32_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_bswap64_i64 +DEF2(bswap64_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_not_i64 +DEF2(not_i64, 1, 1, 0, 0) +#endif +#ifdef TCG_TARGET_HAS_neg_i64 +DEF2(neg_i64, 1, 1, 0, 0) +#endif +#endif + +/* QEMU specific */ +#if TARGET_LONG_BITS > TCG_TARGET_REG_BITS +DEF2(debug_insn_start, 0, 0, 2, 0) +#else +DEF2(debug_insn_start, 0, 0, 1, 0) +#endif +DEF2(exit_tb, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +DEF2(goto_tb, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_SIDE_EFFECTS) +/* Note: even if TARGET_LONG_BITS is not defined, the INDEX_op + constants must be defined */ +#if TCG_TARGET_REG_BITS == 32 +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld8u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld8u, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld8s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld8s, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld16u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld16u, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld16s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld16s, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld32u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld32u, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld32s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld32s, 1, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_ld64, 2, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_ld64, 2, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif + +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st8, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st8, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st16, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st16, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st32, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st32, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif +#if TARGET_LONG_BITS == 32 +DEF2(qemu_st64, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#else +DEF2(qemu_st64, 0, 4, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +#endif + +#else /* TCG_TARGET_REG_BITS == 32 */ + +DEF2(qemu_ld8u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld8s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld16u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld16s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld32u, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld32s, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_ld64, 1, 1, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) + +DEF2(qemu_st8, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_st16, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_st32, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) +DEF2(qemu_st64, 0, 2, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) + +#endif /* TCG_TARGET_REG_BITS != 32 */ + +#undef DEF2 diff --git a/qemu/qemu-git/tcg/tcg-runtime.h b/qemu/qemu-git/tcg/tcg-runtime.h new file mode 100644 index 0000000..e750cc1 --- /dev/null +++ b/qemu/qemu-git/tcg/tcg-runtime.h @@ -0,0 +1,13 @@ +#ifndef TCG_RUNTIME_H +#define TCG_RUNTIME_H + +/* tcg-runtime.c */ +int64_t tcg_helper_shl_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_shr_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_sar_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_div_i64(int64_t arg1, int64_t arg2); +int64_t tcg_helper_rem_i64(int64_t arg1, int64_t arg2); +uint64_t tcg_helper_divu_i64(uint64_t arg1, uint64_t arg2); +uint64_t tcg_helper_remu_i64(uint64_t arg1, uint64_t arg2); + +#endif diff --git a/qemu/qemu-git/tcg/tcg.c b/qemu/qemu-git/tcg/tcg.c new file mode 100644 index 0000000..3c0e296 --- /dev/null +++ b/qemu/qemu-git/tcg/tcg.c @@ -0,0 +1,2085 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* define it to use liveness analysis (better code) */ +#define USE_LIVENESS_ANALYSIS + +#include "config.h" + +#ifndef CONFIG_DEBUG_TCG +/* define it to suppress various consistency checks (faster) */ +#define NDEBUG +#endif + +#include +#include +#include +#include +#include +#ifdef _WIN32 +#include +#endif +#ifdef _AIX +#include +#endif + +#include "qemu-common.h" +#include "cache-utils.h" +#include "host-utils.h" + +/* Note: the long term plan is to reduce the dependancies on the QEMU + CPU definitions. Currently they are used for qemu_ld/st + instructions */ +#define NO_CPU_IO_DEFS +#include "cpu.h" +#include "exec-all.h" + +#include "tcg-op.h" +#include "elf.h" + +#if defined(CONFIG_USE_GUEST_BASE) && !defined(TCG_TARGET_HAS_GUEST_BASE) +#error GUEST_BASE not supported on this host. +#endif + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend); + +static TCGOpDef tcg_op_defs[] = { +#define DEF(s, n, copy_size) { #s, 0, 0, n, n, 0, copy_size }, +#define DEF2(s, oargs, iargs, cargs, flags) { #s, oargs, iargs, cargs, iargs + oargs + cargs, flags, 0 }, +#include "tcg-opc.h" +#undef DEF +#undef DEF2 +}; + +static TCGRegSet tcg_target_available_regs[2]; +static TCGRegSet tcg_target_call_clobber_regs; + +/* XXX: move that inside the context */ +uint16_t *gen_opc_ptr; +TCGArg *gen_opparam_ptr; + +static inline void tcg_out8(TCGContext *s, uint8_t v) +{ + *s->code_ptr++ = v; +} + +static inline void tcg_out16(TCGContext *s, uint16_t v) +{ + *(uint16_t *)s->code_ptr = v; + s->code_ptr += 2; +} + +static inline void tcg_out32(TCGContext *s, uint32_t v) +{ + *(uint32_t *)s->code_ptr = v; + s->code_ptr += 4; +} + +/* label relocation processing */ + +void tcg_out_reloc(TCGContext *s, uint8_t *code_ptr, int type, + int label_index, long addend) +{ + TCGLabel *l; + TCGRelocation *r; + + l = &s->labels[label_index]; + if (l->has_value) { + /* FIXME: This may break relocations on RISC targets that + modify instruction fields in place. The caller may not have + written the initial value. */ + patch_reloc(code_ptr, type, l->u.value, addend); + } else { + /* add a new relocation entry */ + r = tcg_malloc(sizeof(TCGRelocation)); + r->type = type; + r->ptr = code_ptr; + r->addend = addend; + r->next = l->u.first_reloc; + l->u.first_reloc = r; + } +} + +static void tcg_out_label(TCGContext *s, int label_index, + tcg_target_long value) +{ + TCGLabel *l; + TCGRelocation *r; + + l = &s->labels[label_index]; + if (l->has_value) + tcg_abort(); + r = l->u.first_reloc; + while (r != NULL) { + patch_reloc(r->ptr, r->type, value, r->addend); + r = r->next; + } + l->has_value = 1; + l->u.value = value; +} + +int gen_new_label(void) +{ + TCGContext *s = &tcg_ctx; + int idx; + TCGLabel *l; + + if (s->nb_labels >= TCG_MAX_LABELS) + tcg_abort(); + idx = s->nb_labels++; + l = &s->labels[idx]; + l->has_value = 0; + l->u.first_reloc = NULL; + return idx; +} + +#include "tcg-target.c" + +/* pool based memory allocation */ +void *tcg_malloc_internal(TCGContext *s, int size) +{ + TCGPool *p; + int pool_size; + + if (size > TCG_POOL_CHUNK_SIZE) { + /* big malloc: insert a new pool (XXX: could optimize) */ + p = qemu_malloc(sizeof(TCGPool) + size); + p->size = size; + if (s->pool_current) + s->pool_current->next = p; + else + s->pool_first = p; + p->next = s->pool_current; + } else { + p = s->pool_current; + if (!p) { + p = s->pool_first; + if (!p) + goto new_pool; + } else { + if (!p->next) { + new_pool: + pool_size = TCG_POOL_CHUNK_SIZE; + p = qemu_malloc(sizeof(TCGPool) + pool_size); + p->size = pool_size; + p->next = NULL; + if (s->pool_current) + s->pool_current->next = p; + else + s->pool_first = p; + } else { + p = p->next; + } + } + } + s->pool_current = p; + s->pool_cur = p->data + size; + s->pool_end = p->data + p->size; + return p->data; +} + +void tcg_pool_reset(TCGContext *s) +{ + s->pool_cur = s->pool_end = NULL; + s->pool_current = NULL; +} + +void tcg_context_init(TCGContext *s) +{ + int op, total_args, n; + TCGOpDef *def; + TCGArgConstraint *args_ct; + int *sorted_args; + + memset(s, 0, sizeof(*s)); + s->temps = s->static_temps; + s->nb_globals = 0; + + /* Count total number of arguments and allocate the corresponding + space */ + total_args = 0; + for(op = 0; op < NB_OPS; op++) { + def = &tcg_op_defs[op]; + n = def->nb_iargs + def->nb_oargs; + total_args += n; + } + + args_ct = qemu_malloc(sizeof(TCGArgConstraint) * total_args); + sorted_args = qemu_malloc(sizeof(int) * total_args); + + for(op = 0; op < NB_OPS; op++) { + def = &tcg_op_defs[op]; + def->args_ct = args_ct; + def->sorted_args = sorted_args; + n = def->nb_iargs + def->nb_oargs; + sorted_args += n; + args_ct += n; + } + + tcg_target_init(s); + + /* init global prologue and epilogue */ + s->code_buf = code_gen_prologue; + s->code_ptr = s->code_buf; + tcg_target_qemu_prologue(s); + flush_icache_range((unsigned long)s->code_buf, + (unsigned long)s->code_ptr); +} + +void tcg_set_frame(TCGContext *s, int reg, + tcg_target_long start, tcg_target_long size) +{ + s->frame_start = start; + s->frame_end = start + size; + s->frame_reg = reg; +} + +void tcg_func_start(TCGContext *s) +{ + int i; + tcg_pool_reset(s); + s->nb_temps = s->nb_globals; + for(i = 0; i < (TCG_TYPE_COUNT * 2); i++) + s->first_free_temp[i] = -1; + s->labels = tcg_malloc(sizeof(TCGLabel) * TCG_MAX_LABELS); + s->nb_labels = 0; + s->current_frame_offset = s->frame_start; + + gen_opc_ptr = gen_opc_buf; + gen_opparam_ptr = gen_opparam_buf; +} + +static inline void tcg_temp_alloc(TCGContext *s, int n) +{ + if (n > TCG_MAX_TEMPS) + tcg_abort(); +} + +static inline int tcg_global_reg_new_internal(TCGType type, int reg, + const char *name) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int idx; + +#if TCG_TARGET_REG_BITS == 32 + if (type != TCG_TYPE_I32) + tcg_abort(); +#endif + if (tcg_regset_test_reg(s->reserved_regs, reg)) + tcg_abort(); + idx = s->nb_globals; + tcg_temp_alloc(s, s->nb_globals + 1); + ts = &s->temps[s->nb_globals]; + ts->base_type = type; + ts->type = type; + ts->fixed_reg = 1; + ts->reg = reg; + ts->name = name; + s->nb_globals++; + tcg_regset_set_reg(s->reserved_regs, reg); + return idx; +} + +TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name) +{ + int idx; + + idx = tcg_global_reg_new_internal(TCG_TYPE_I32, reg, name); + return MAKE_TCGV_I32(idx); +} + +TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name) +{ + int idx; + + idx = tcg_global_reg_new_internal(TCG_TYPE_I64, reg, name); + return MAKE_TCGV_I64(idx); +} + +static inline int tcg_global_mem_new_internal(TCGType type, int reg, + tcg_target_long offset, + const char *name) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int idx; + + idx = s->nb_globals; +#if TCG_TARGET_REG_BITS == 32 + if (type == TCG_TYPE_I64) { + char buf[64]; + tcg_temp_alloc(s, s->nb_globals + 2); + ts = &s->temps[s->nb_globals]; + ts->base_type = type; + ts->type = TCG_TYPE_I32; + ts->fixed_reg = 0; + ts->mem_allocated = 1; + ts->mem_reg = reg; +#ifdef TCG_TARGET_WORDS_BIGENDIAN + ts->mem_offset = offset + 4; +#else + ts->mem_offset = offset; +#endif + pstrcpy(buf, sizeof(buf), name); + pstrcat(buf, sizeof(buf), "_0"); + ts->name = strdup(buf); + ts++; + + ts->base_type = type; + ts->type = TCG_TYPE_I32; + ts->fixed_reg = 0; + ts->mem_allocated = 1; + ts->mem_reg = reg; +#ifdef TCG_TARGET_WORDS_BIGENDIAN + ts->mem_offset = offset; +#else + ts->mem_offset = offset + 4; +#endif + pstrcpy(buf, sizeof(buf), name); + pstrcat(buf, sizeof(buf), "_1"); + ts->name = strdup(buf); + + s->nb_globals += 2; + } else +#endif + { + tcg_temp_alloc(s, s->nb_globals + 1); + ts = &s->temps[s->nb_globals]; + ts->base_type = type; + ts->type = type; + ts->fixed_reg = 0; + ts->mem_allocated = 1; + ts->mem_reg = reg; + ts->mem_offset = offset; + ts->name = name; + s->nb_globals++; + } + return idx; +} + +TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset, + const char *name) +{ + int idx; + + idx = tcg_global_mem_new_internal(TCG_TYPE_I32, reg, offset, name); + return MAKE_TCGV_I32(idx); +} + +TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset, + const char *name) +{ + int idx; + + idx = tcg_global_mem_new_internal(TCG_TYPE_I64, reg, offset, name); + return MAKE_TCGV_I64(idx); +} + +static inline int tcg_temp_new_internal(TCGType type, int temp_local) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int idx, k; + + k = type; + if (temp_local) + k += TCG_TYPE_COUNT; + idx = s->first_free_temp[k]; + if (idx != -1) { + /* There is already an available temp with the + right type */ + ts = &s->temps[idx]; + s->first_free_temp[k] = ts->next_free_temp; + ts->temp_allocated = 1; + assert(ts->temp_local == temp_local); + } else { + idx = s->nb_temps; +#if TCG_TARGET_REG_BITS == 32 + if (type == TCG_TYPE_I64) { + tcg_temp_alloc(s, s->nb_temps + 2); + ts = &s->temps[s->nb_temps]; + ts->base_type = type; + ts->type = TCG_TYPE_I32; + ts->temp_allocated = 1; + ts->temp_local = temp_local; + ts->name = NULL; + ts++; + ts->base_type = TCG_TYPE_I32; + ts->type = TCG_TYPE_I32; + ts->temp_allocated = 1; + ts->temp_local = temp_local; + ts->name = NULL; + s->nb_temps += 2; + } else +#endif + { + tcg_temp_alloc(s, s->nb_temps + 1); + ts = &s->temps[s->nb_temps]; + ts->base_type = type; + ts->type = type; + ts->temp_allocated = 1; + ts->temp_local = temp_local; + ts->name = NULL; + s->nb_temps++; + } + } + return idx; +} + +TCGv_i32 tcg_temp_new_internal_i32(int temp_local) +{ + int idx; + + idx = tcg_temp_new_internal(TCG_TYPE_I32, temp_local); + return MAKE_TCGV_I32(idx); +} + +TCGv_i64 tcg_temp_new_internal_i64(int temp_local) +{ + int idx; + + idx = tcg_temp_new_internal(TCG_TYPE_I64, temp_local); + return MAKE_TCGV_I64(idx); +} + +static inline void tcg_temp_free_internal(int idx) +{ + TCGContext *s = &tcg_ctx; + TCGTemp *ts; + int k; + + assert(idx >= s->nb_globals && idx < s->nb_temps); + ts = &s->temps[idx]; + assert(ts->temp_allocated != 0); + ts->temp_allocated = 0; + k = ts->base_type; + if (ts->temp_local) + k += TCG_TYPE_COUNT; + ts->next_free_temp = s->first_free_temp[k]; + s->first_free_temp[k] = idx; +} + +void tcg_temp_free_i32(TCGv_i32 arg) +{ + tcg_temp_free_internal(GET_TCGV_I32(arg)); +} + +void tcg_temp_free_i64(TCGv_i64 arg) +{ + tcg_temp_free_internal(GET_TCGV_I64(arg)); +} + +TCGv_i32 tcg_const_i32(int32_t val) +{ + TCGv_i32 t0; + t0 = tcg_temp_new_i32(); + tcg_gen_movi_i32(t0, val); + return t0; +} + +TCGv_i64 tcg_const_i64(int64_t val) +{ + TCGv_i64 t0; + t0 = tcg_temp_new_i64(); + tcg_gen_movi_i64(t0, val); + return t0; +} + +TCGv_i32 tcg_const_local_i32(int32_t val) +{ + TCGv_i32 t0; + t0 = tcg_temp_local_new_i32(); + tcg_gen_movi_i32(t0, val); + return t0; +} + +TCGv_i64 tcg_const_local_i64(int64_t val) +{ + TCGv_i64 t0; + t0 = tcg_temp_local_new_i64(); + tcg_gen_movi_i64(t0, val); + return t0; +} + +void tcg_register_helper(void *func, const char *name) +{ + TCGContext *s = &tcg_ctx; + int n; + if ((s->nb_helpers + 1) > s->allocated_helpers) { + n = s->allocated_helpers; + if (n == 0) { + n = 4; + } else { + n *= 2; + } + s->helpers = realloc(s->helpers, n * sizeof(TCGHelperInfo)); + s->allocated_helpers = n; + } + s->helpers[s->nb_helpers].func = (tcg_target_ulong)func; + s->helpers[s->nb_helpers].name = name; + s->nb_helpers++; +} + +/* Note: we convert the 64 bit args to 32 bit and do some alignment + and endian swap. Maybe it would be better to do the alignment + and endian swap in tcg_reg_alloc_call(). */ +void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags, + int sizemask, TCGArg ret, int nargs, TCGArg *args) +{ + int call_type; + int i; + int real_args; + int nb_rets; + TCGArg *nparam; + *gen_opc_ptr++ = INDEX_op_call; + nparam = gen_opparam_ptr++; + call_type = (flags & TCG_CALL_TYPE_MASK); + if (ret != TCG_CALL_DUMMY_ARG) { +#if TCG_TARGET_REG_BITS < 64 + if (sizemask & 1) { +#ifdef TCG_TARGET_WORDS_BIGENDIAN + *gen_opparam_ptr++ = ret + 1; + *gen_opparam_ptr++ = ret; +#else + *gen_opparam_ptr++ = ret; + *gen_opparam_ptr++ = ret + 1; +#endif + nb_rets = 2; + } else +#endif + { + *gen_opparam_ptr++ = ret; + nb_rets = 1; + } + } else { + nb_rets = 0; + } + real_args = 0; + for (i = 0; i < nargs; i++) { +#if TCG_TARGET_REG_BITS < 64 + if (sizemask & (2 << i)) { +#ifdef TCG_TARGET_I386 + /* REGPARM case: if the third parameter is 64 bit, it is + allocated on the stack */ + if (i == 2 && call_type == TCG_CALL_TYPE_REGPARM) { + call_type = TCG_CALL_TYPE_REGPARM_2; + flags = (flags & ~TCG_CALL_TYPE_MASK) | call_type; + } +#endif +#ifdef TCG_TARGET_CALL_ALIGN_ARGS + /* some targets want aligned 64 bit args */ + if (real_args & 1) { + *gen_opparam_ptr++ = TCG_CALL_DUMMY_ARG; + real_args++; + } +#endif +#ifdef TCG_TARGET_WORDS_BIGENDIAN + *gen_opparam_ptr++ = args[i] + 1; + *gen_opparam_ptr++ = args[i]; +#else + *gen_opparam_ptr++ = args[i]; + *gen_opparam_ptr++ = args[i] + 1; +#endif + real_args += 2; + } else +#endif + { + *gen_opparam_ptr++ = args[i]; + real_args++; + } + } + *gen_opparam_ptr++ = GET_TCGV_PTR(func); + + *gen_opparam_ptr++ = flags; + + *nparam = (nb_rets << 16) | (real_args + 1); + + /* total parameters, needed to go backward in the instruction stream */ + *gen_opparam_ptr++ = 1 + nb_rets + real_args + 3; +} + +#if TCG_TARGET_REG_BITS == 32 +void tcg_gen_shifti_i64(TCGv_i64 ret, TCGv_i64 arg1, + int c, int right, int arith) +{ + if (c == 0) { + tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg1)); + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1)); + } else if (c >= 32) { + c -= 32; + if (right) { + if (arith) { + tcg_gen_sari_i32(TCGV_LOW(ret), TCGV_HIGH(arg1), c); + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), 31); + } else { + tcg_gen_shri_i32(TCGV_LOW(ret), TCGV_HIGH(arg1), c); + tcg_gen_movi_i32(TCGV_HIGH(ret), 0); + } + } else { + tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_LOW(arg1), c); + tcg_gen_movi_i32(TCGV_LOW(ret), 0); + } + } else { + TCGv_i32 t0, t1; + + t0 = tcg_temp_new_i32(); + t1 = tcg_temp_new_i32(); + if (right) { + tcg_gen_shli_i32(t0, TCGV_HIGH(arg1), 32 - c); + if (arith) + tcg_gen_sari_i32(t1, TCGV_HIGH(arg1), c); + else + tcg_gen_shri_i32(t1, TCGV_HIGH(arg1), c); + tcg_gen_shri_i32(TCGV_LOW(ret), TCGV_LOW(arg1), c); + tcg_gen_or_i32(TCGV_LOW(ret), TCGV_LOW(ret), t0); + tcg_gen_mov_i32(TCGV_HIGH(ret), t1); + } else { + tcg_gen_shri_i32(t0, TCGV_LOW(arg1), 32 - c); + /* Note: ret can be the same as arg1, so we use t1 */ + tcg_gen_shli_i32(t1, TCGV_LOW(arg1), c); + tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c); + tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(ret), t0); + tcg_gen_mov_i32(TCGV_LOW(ret), t1); + } + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); + } +} +#endif + +static void tcg_reg_alloc_start(TCGContext *s) +{ + int i; + TCGTemp *ts; + for(i = 0; i < s->nb_globals; i++) { + ts = &s->temps[i]; + if (ts->fixed_reg) { + ts->val_type = TEMP_VAL_REG; + } else { + ts->val_type = TEMP_VAL_MEM; + } + } + for(i = s->nb_globals; i < s->nb_temps; i++) { + ts = &s->temps[i]; + ts->val_type = TEMP_VAL_DEAD; + ts->mem_allocated = 0; + ts->fixed_reg = 0; + } + for(i = 0; i < TCG_TARGET_NB_REGS; i++) { + s->reg_to_temp[i] = -1; + } +} + +static char *tcg_get_arg_str_idx(TCGContext *s, char *buf, int buf_size, + int idx) +{ + TCGTemp *ts; + + ts = &s->temps[idx]; + if (idx < s->nb_globals) { + pstrcpy(buf, buf_size, ts->name); + } else { + if (ts->temp_local) + snprintf(buf, buf_size, "loc%d", idx - s->nb_globals); + else + snprintf(buf, buf_size, "tmp%d", idx - s->nb_globals); + } + return buf; +} + +char *tcg_get_arg_str_i32(TCGContext *s, char *buf, int buf_size, TCGv_i32 arg) +{ + return tcg_get_arg_str_idx(s, buf, buf_size, GET_TCGV_I32(arg)); +} + +char *tcg_get_arg_str_i64(TCGContext *s, char *buf, int buf_size, TCGv_i64 arg) +{ + return tcg_get_arg_str_idx(s, buf, buf_size, GET_TCGV_I64(arg)); +} + +static int helper_cmp(const void *p1, const void *p2) +{ + const TCGHelperInfo *th1 = p1; + const TCGHelperInfo *th2 = p2; + if (th1->func < th2->func) + return -1; + else if (th1->func == th2->func) + return 0; + else + return 1; +} + +/* find helper definition (Note: A hash table would be better) */ +static TCGHelperInfo *tcg_find_helper(TCGContext *s, tcg_target_ulong val) +{ + int m, m_min, m_max; + TCGHelperInfo *th; + tcg_target_ulong v; + + if (unlikely(!s->helpers_sorted)) { + qsort(s->helpers, s->nb_helpers, sizeof(TCGHelperInfo), + helper_cmp); + s->helpers_sorted = 1; + } + + /* binary search */ + m_min = 0; + m_max = s->nb_helpers - 1; + while (m_min <= m_max) { + m = (m_min + m_max) >> 1; + th = &s->helpers[m]; + v = th->func; + if (v == val) + return th; + else if (val < v) { + m_max = m - 1; + } else { + m_min = m + 1; + } + } + return NULL; +} + +static const char * const cond_name[] = +{ + [TCG_COND_EQ] = "eq", + [TCG_COND_NE] = "ne", + [TCG_COND_LT] = "lt", + [TCG_COND_GE] = "ge", + [TCG_COND_LE] = "le", + [TCG_COND_GT] = "gt", + [TCG_COND_LTU] = "ltu", + [TCG_COND_GEU] = "geu", + [TCG_COND_LEU] = "leu", + [TCG_COND_GTU] = "gtu" +}; + +void tcg_dump_ops(TCGContext *s, FILE *outfile) +{ + const uint16_t *opc_ptr; + const TCGArg *args; + TCGArg arg; + int c, i, k, nb_oargs, nb_iargs, nb_cargs, first_insn; + const TCGOpDef *def; + char buf[128]; + + first_insn = 1; + opc_ptr = gen_opc_buf; + args = gen_opparam_buf; + while (opc_ptr < gen_opc_ptr) { + c = *opc_ptr++; + def = &tcg_op_defs[c]; + if (c == INDEX_op_debug_insn_start) { + uint64_t pc; +#if TARGET_LONG_BITS > TCG_TARGET_REG_BITS + pc = ((uint64_t)args[1] << 32) | args[0]; +#else + pc = args[0]; +#endif + if (!first_insn) + fprintf(outfile, "\n"); + fprintf(outfile, " ---- 0x%" PRIx64, pc); + first_insn = 0; + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + nb_cargs = def->nb_cargs; + } else if (c == INDEX_op_call) { + TCGArg arg; + + /* variable number of arguments */ + arg = *args++; + nb_oargs = arg >> 16; + nb_iargs = arg & 0xffff; + nb_cargs = def->nb_cargs; + + fprintf(outfile, " %s ", def->name); + + /* function name */ + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[nb_oargs + nb_iargs - 1])); + /* flags */ + fprintf(outfile, ",$0x%" TCG_PRIlx, + args[nb_oargs + nb_iargs]); + /* nb out args */ + fprintf(outfile, ",$%d", nb_oargs); + for(i = 0; i < nb_oargs; i++) { + fprintf(outfile, ","); + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[i])); + } + for(i = 0; i < (nb_iargs - 1); i++) { + fprintf(outfile, ","); + if (args[nb_oargs + i] == TCG_CALL_DUMMY_ARG) { + fprintf(outfile, ""); + } else { + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[nb_oargs + i])); + } + } + } else if (c == INDEX_op_movi_i32 +#if TCG_TARGET_REG_BITS == 64 + || c == INDEX_op_movi_i64 +#endif + ) { + tcg_target_ulong val; + TCGHelperInfo *th; + + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + nb_cargs = def->nb_cargs; + fprintf(outfile, " %s %s,$", def->name, + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[0])); + val = args[1]; + th = tcg_find_helper(s, val); + if (th) { + fprintf(outfile, "%s", th->name); + } else { + if (c == INDEX_op_movi_i32) + fprintf(outfile, "0x%x", (uint32_t)val); + else + fprintf(outfile, "0x%" PRIx64 , (uint64_t)val); + } + } else { + fprintf(outfile, " %s ", def->name); + if (c == INDEX_op_nopn) { + /* variable number of arguments */ + nb_cargs = *args; + nb_oargs = 0; + nb_iargs = 0; + } else { + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + nb_cargs = def->nb_cargs; + } + + k = 0; + for(i = 0; i < nb_oargs; i++) { + if (k != 0) + fprintf(outfile, ","); + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[k++])); + } + for(i = 0; i < nb_iargs; i++) { + if (k != 0) + fprintf(outfile, ","); + fprintf(outfile, "%s", + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[k++])); + } + if (c == INDEX_op_brcond_i32 +#if TCG_TARGET_REG_BITS == 32 + || c == INDEX_op_brcond2_i32 +#elif TCG_TARGET_REG_BITS == 64 + || c == INDEX_op_brcond_i64 +#endif + ) { + if (args[k] < ARRAY_SIZE(cond_name) && cond_name[args[k]]) + fprintf(outfile, ",%s", cond_name[args[k++]]); + else + fprintf(outfile, ",$0x%" TCG_PRIlx, args[k++]); + i = 1; + } + else + i = 0; + for(; i < nb_cargs; i++) { + if (k != 0) + fprintf(outfile, ","); + arg = args[k++]; + fprintf(outfile, "$0x%" TCG_PRIlx, arg); + } + } + fprintf(outfile, "\n"); + args += nb_iargs + nb_oargs + nb_cargs; + } +} + +/* we give more priority to constraints with less registers */ +static int get_constraint_priority(const TCGOpDef *def, int k) +{ + const TCGArgConstraint *arg_ct; + + int i, n; + arg_ct = &def->args_ct[k]; + if (arg_ct->ct & TCG_CT_ALIAS) { + /* an alias is equivalent to a single register */ + n = 1; + } else { + if (!(arg_ct->ct & TCG_CT_REG)) + return 0; + n = 0; + for(i = 0; i < TCG_TARGET_NB_REGS; i++) { + if (tcg_regset_test_reg(arg_ct->u.regs, i)) + n++; + } + } + return TCG_TARGET_NB_REGS - n + 1; +} + +/* sort from highest priority to lowest */ +static void sort_constraints(TCGOpDef *def, int start, int n) +{ + int i, j, p1, p2, tmp; + + for(i = 0; i < n; i++) + def->sorted_args[start + i] = start + i; + if (n <= 1) + return; + for(i = 0; i < n - 1; i++) { + for(j = i + 1; j < n; j++) { + p1 = get_constraint_priority(def, def->sorted_args[start + i]); + p2 = get_constraint_priority(def, def->sorted_args[start + j]); + if (p1 < p2) { + tmp = def->sorted_args[start + i]; + def->sorted_args[start + i] = def->sorted_args[start + j]; + def->sorted_args[start + j] = tmp; + } + } + } +} + +void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs) +{ + int op; + TCGOpDef *def; + const char *ct_str; + int i, nb_args; + + for(;;) { + if (tdefs->op < 0) + break; + op = tdefs->op; + assert(op >= 0 && op < NB_OPS); + def = &tcg_op_defs[op]; + nb_args = def->nb_iargs + def->nb_oargs; + for(i = 0; i < nb_args; i++) { + ct_str = tdefs->args_ct_str[i]; + tcg_regset_clear(def->args_ct[i].u.regs); + def->args_ct[i].ct = 0; + if (ct_str[0] >= '0' && ct_str[0] <= '9') { + int oarg; + oarg = ct_str[0] - '0'; + assert(oarg < def->nb_oargs); + assert(def->args_ct[oarg].ct & TCG_CT_REG); + /* TCG_CT_ALIAS is for the output arguments. The input + argument is tagged with TCG_CT_IALIAS. */ + def->args_ct[i] = def->args_ct[oarg]; + def->args_ct[oarg].ct = TCG_CT_ALIAS; + def->args_ct[oarg].alias_index = i; + def->args_ct[i].ct |= TCG_CT_IALIAS; + def->args_ct[i].alias_index = oarg; + } else { + for(;;) { + if (*ct_str == '\0') + break; + switch(*ct_str) { + case 'i': + def->args_ct[i].ct |= TCG_CT_CONST; + ct_str++; + break; + default: + if (target_parse_constraint(&def->args_ct[i], &ct_str) < 0) { + fprintf(stderr, "Invalid constraint '%s' for arg %d of operation '%s'\n", + ct_str, i, def->name); + exit(1); + } + } + } + } + } + + /* sort the constraints (XXX: this is just an heuristic) */ + sort_constraints(def, 0, def->nb_oargs); + sort_constraints(def, def->nb_oargs, def->nb_iargs); + +#if 0 + { + int i; + + printf("%s: sorted=", def->name); + for(i = 0; i < def->nb_oargs + def->nb_iargs; i++) + printf(" %d", def->sorted_args[i]); + printf("\n"); + } +#endif + tdefs++; + } + +} + +#ifdef USE_LIVENESS_ANALYSIS + +/* set a nop for an operation using 'nb_args' */ +static inline void tcg_set_nop(TCGContext *s, uint16_t *opc_ptr, + TCGArg *args, int nb_args) +{ + if (nb_args == 0) { + *opc_ptr = INDEX_op_nop; + } else { + *opc_ptr = INDEX_op_nopn; + args[0] = nb_args; + args[nb_args - 1] = nb_args; + } +} + +/* liveness analysis: end of function: globals are live, temps are + dead. */ +/* XXX: at this stage, not used as there would be little gains because + most TBs end with a conditional jump. */ +static inline void tcg_la_func_end(TCGContext *s, uint8_t *dead_temps) +{ + memset(dead_temps, 0, s->nb_globals); + memset(dead_temps + s->nb_globals, 1, s->nb_temps - s->nb_globals); +} + +/* liveness analysis: end of basic block: globals are live, temps are + dead, local temps are live. */ +static inline void tcg_la_bb_end(TCGContext *s, uint8_t *dead_temps) +{ + int i; + TCGTemp *ts; + + memset(dead_temps, 0, s->nb_globals); + ts = &s->temps[s->nb_globals]; + for(i = s->nb_globals; i < s->nb_temps; i++) { + if (ts->temp_local) + dead_temps[i] = 0; + else + dead_temps[i] = 1; + ts++; + } +} + +/* Liveness analysis : update the opc_dead_iargs array to tell if a + given input arguments is dead. Instructions updating dead + temporaries are removed. */ +static void tcg_liveness_analysis(TCGContext *s) +{ + int i, op_index, op, nb_args, nb_iargs, nb_oargs, arg, nb_ops; + TCGArg *args; + const TCGOpDef *def; + uint8_t *dead_temps; + unsigned int dead_iargs; + + gen_opc_ptr++; /* skip end */ + + nb_ops = gen_opc_ptr - gen_opc_buf; + + s->op_dead_iargs = tcg_malloc(nb_ops * sizeof(uint16_t)); + + dead_temps = tcg_malloc(s->nb_temps); + memset(dead_temps, 1, s->nb_temps); + + args = gen_opparam_ptr; + op_index = nb_ops - 1; + while (op_index >= 0) { + op = gen_opc_buf[op_index]; + def = &tcg_op_defs[op]; + switch(op) { + case INDEX_op_call: + { + int call_flags; + + nb_args = args[-1]; + args -= nb_args; + nb_iargs = args[0] & 0xffff; + nb_oargs = args[0] >> 16; + args++; + call_flags = args[nb_oargs + nb_iargs]; + + /* pure functions can be removed if their result is not + used */ + if (call_flags & TCG_CALL_PURE) { + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + if (!dead_temps[arg]) + goto do_not_remove_call; + } + tcg_set_nop(s, gen_opc_buf + op_index, + args - 1, nb_args); + } else { + do_not_remove_call: + + /* output args are dead */ + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + dead_temps[arg] = 1; + } + + if (!(call_flags & TCG_CALL_CONST)) { + /* globals are live (they may be used by the call) */ + memset(dead_temps, 0, s->nb_globals); + } + + /* input args are live */ + dead_iargs = 0; + for(i = 0; i < nb_iargs; i++) { + arg = args[i + nb_oargs]; + if (arg != TCG_CALL_DUMMY_ARG) { + if (dead_temps[arg]) { + dead_iargs |= (1 << i); + } + dead_temps[arg] = 0; + } + } + s->op_dead_iargs[op_index] = dead_iargs; + } + args--; + } + break; + case INDEX_op_set_label: + args--; + /* mark end of basic block */ + tcg_la_bb_end(s, dead_temps); + break; + case INDEX_op_debug_insn_start: + args -= def->nb_args; + break; + case INDEX_op_nopn: + nb_args = args[-1]; + args -= nb_args; + break; + case INDEX_op_discard: + args--; + /* mark the temporary as dead */ + dead_temps[args[0]] = 1; + break; + case INDEX_op_end: + break; + /* XXX: optimize by hardcoding common cases (e.g. triadic ops) */ + default: + args -= def->nb_args; + nb_iargs = def->nb_iargs; + nb_oargs = def->nb_oargs; + + /* Test if the operation can be removed because all + its outputs are dead. We assume that nb_oargs == 0 + implies side effects */ + if (!(def->flags & TCG_OPF_SIDE_EFFECTS) && nb_oargs != 0) { + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + if (!dead_temps[arg]) + goto do_not_remove; + } + tcg_set_nop(s, gen_opc_buf + op_index, args, def->nb_args); +#ifdef CONFIG_PROFILER + s->del_op_count++; +#endif + } else { + do_not_remove: + + /* output args are dead */ + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + dead_temps[arg] = 1; + } + + /* if end of basic block, update */ + if (def->flags & TCG_OPF_BB_END) { + tcg_la_bb_end(s, dead_temps); + } else if (def->flags & TCG_OPF_CALL_CLOBBER) { + /* globals are live */ + memset(dead_temps, 0, s->nb_globals); + } + + /* input args are live */ + dead_iargs = 0; + for(i = 0; i < nb_iargs; i++) { + arg = args[i + nb_oargs]; + if (dead_temps[arg]) { + dead_iargs |= (1 << i); + } + dead_temps[arg] = 0; + } + s->op_dead_iargs[op_index] = dead_iargs; + } + break; + } + op_index--; + } + + if (args != gen_opparam_buf) + tcg_abort(); +} +#else +/* dummy liveness analysis */ +void tcg_liveness_analysis(TCGContext *s) +{ + int nb_ops; + nb_ops = gen_opc_ptr - gen_opc_buf; + + s->op_dead_iargs = tcg_malloc(nb_ops * sizeof(uint16_t)); + memset(s->op_dead_iargs, 0, nb_ops * sizeof(uint16_t)); +} +#endif + +#ifndef NDEBUG +static void dump_regs(TCGContext *s) +{ + TCGTemp *ts; + int i; + char buf[64]; + + for(i = 0; i < s->nb_temps; i++) { + ts = &s->temps[i]; + printf(" %10s: ", tcg_get_arg_str_idx(s, buf, sizeof(buf), i)); + switch(ts->val_type) { + case TEMP_VAL_REG: + printf("%s", tcg_target_reg_names[ts->reg]); + break; + case TEMP_VAL_MEM: + printf("%d(%s)", (int)ts->mem_offset, tcg_target_reg_names[ts->mem_reg]); + break; + case TEMP_VAL_CONST: + printf("$0x%" TCG_PRIlx, ts->val); + break; + case TEMP_VAL_DEAD: + printf("D"); + break; + default: + printf("???"); + break; + } + printf("\n"); + } + + for(i = 0; i < TCG_TARGET_NB_REGS; i++) { + if (s->reg_to_temp[i] >= 0) { + printf("%s: %s\n", + tcg_target_reg_names[i], + tcg_get_arg_str_idx(s, buf, sizeof(buf), s->reg_to_temp[i])); + } + } +} + +static void check_regs(TCGContext *s) +{ + int reg, k; + TCGTemp *ts; + char buf[64]; + + for(reg = 0; reg < TCG_TARGET_NB_REGS; reg++) { + k = s->reg_to_temp[reg]; + if (k >= 0) { + ts = &s->temps[k]; + if (ts->val_type != TEMP_VAL_REG || + ts->reg != reg) { + printf("Inconsistency for register %s:\n", + tcg_target_reg_names[reg]); + goto fail; + } + } + } + for(k = 0; k < s->nb_temps; k++) { + ts = &s->temps[k]; + if (ts->val_type == TEMP_VAL_REG && + !ts->fixed_reg && + s->reg_to_temp[ts->reg] != k) { + printf("Inconsistency for temp %s:\n", + tcg_get_arg_str_idx(s, buf, sizeof(buf), k)); + fail: + printf("reg state:\n"); + dump_regs(s); + tcg_abort(); + } + } +} +#endif + +static void temp_allocate_frame(TCGContext *s, int temp) +{ + TCGTemp *ts; + ts = &s->temps[temp]; + s->current_frame_offset = (s->current_frame_offset + sizeof(tcg_target_long) - 1) & ~(sizeof(tcg_target_long) - 1); + if (s->current_frame_offset + sizeof(tcg_target_long) > s->frame_end) + tcg_abort(); + ts->mem_offset = s->current_frame_offset; + ts->mem_reg = s->frame_reg; + ts->mem_allocated = 1; + s->current_frame_offset += sizeof(tcg_target_long); +} + +/* free register 'reg' by spilling the corresponding temporary if necessary */ +static void tcg_reg_free(TCGContext *s, int reg) +{ + TCGTemp *ts; + int temp; + + temp = s->reg_to_temp[reg]; + if (temp != -1) { + ts = &s->temps[temp]; + assert(ts->val_type == TEMP_VAL_REG); + if (!ts->mem_coherent) { + if (!ts->mem_allocated) + temp_allocate_frame(s, temp); + tcg_out_st(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + } + ts->val_type = TEMP_VAL_MEM; + s->reg_to_temp[reg] = -1; + } +} + +/* Allocate a register belonging to reg1 & ~reg2 */ +static int tcg_reg_alloc(TCGContext *s, TCGRegSet reg1, TCGRegSet reg2) +{ + int i, reg; + TCGRegSet reg_ct; + + tcg_regset_andnot(reg_ct, reg1, reg2); + + /* first try free registers */ + for(i = 0; i < ARRAY_SIZE(tcg_target_reg_alloc_order); i++) { + reg = tcg_target_reg_alloc_order[i]; + if (tcg_regset_test_reg(reg_ct, reg) && s->reg_to_temp[reg] == -1) + return reg; + } + + /* XXX: do better spill choice */ + for(i = 0; i < ARRAY_SIZE(tcg_target_reg_alloc_order); i++) { + reg = tcg_target_reg_alloc_order[i]; + if (tcg_regset_test_reg(reg_ct, reg)) { + tcg_reg_free(s, reg); + return reg; + } + } + + tcg_abort(); +} + +/* save a temporary to memory. 'allocated_regs' is used in case a + temporary registers needs to be allocated to store a constant. */ +static void temp_save(TCGContext *s, int temp, TCGRegSet allocated_regs) +{ + TCGTemp *ts; + int reg; + + ts = &s->temps[temp]; + if (!ts->fixed_reg) { + switch(ts->val_type) { + case TEMP_VAL_REG: + tcg_reg_free(s, ts->reg); + break; + case TEMP_VAL_DEAD: + ts->val_type = TEMP_VAL_MEM; + break; + case TEMP_VAL_CONST: + reg = tcg_reg_alloc(s, tcg_target_available_regs[ts->type], + allocated_regs); + if (!ts->mem_allocated) + temp_allocate_frame(s, temp); + tcg_out_movi(s, ts->type, reg, ts->val); + tcg_out_st(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + ts->val_type = TEMP_VAL_MEM; + break; + case TEMP_VAL_MEM: + break; + default: + tcg_abort(); + } + } +} + +/* save globals to their cannonical location and assume they can be + modified be the following code. 'allocated_regs' is used in case a + temporary registers needs to be allocated to store a constant. */ +static void save_globals(TCGContext *s, TCGRegSet allocated_regs) +{ + int i; + + for(i = 0; i < s->nb_globals; i++) { + temp_save(s, i, allocated_regs); + } +} + +/* at the end of a basic block, we assume all temporaries are dead and + all globals are stored at their canonical location. */ +static void tcg_reg_alloc_bb_end(TCGContext *s, TCGRegSet allocated_regs) +{ + TCGTemp *ts; + int i; + + for(i = s->nb_globals; i < s->nb_temps; i++) { + ts = &s->temps[i]; + if (ts->temp_local) { + temp_save(s, i, allocated_regs); + } else { + if (ts->val_type == TEMP_VAL_REG) { + s->reg_to_temp[ts->reg] = -1; + } + ts->val_type = TEMP_VAL_DEAD; + } + } + + save_globals(s, allocated_regs); +} + +#define IS_DEAD_IARG(n) ((dead_iargs >> (n)) & 1) + +static void tcg_reg_alloc_movi(TCGContext *s, const TCGArg *args) +{ + TCGTemp *ots; + tcg_target_ulong val; + + ots = &s->temps[args[0]]; + val = args[1]; + + if (ots->fixed_reg) { + /* for fixed registers, we do not do any constant + propagation */ + tcg_out_movi(s, ots->type, ots->reg, val); + } else { + /* The movi is not explicitly generated here */ + if (ots->val_type == TEMP_VAL_REG) + s->reg_to_temp[ots->reg] = -1; + ots->val_type = TEMP_VAL_CONST; + ots->val = val; + } +} + +static void tcg_reg_alloc_mov(TCGContext *s, const TCGOpDef *def, + const TCGArg *args, + unsigned int dead_iargs) +{ + TCGTemp *ts, *ots; + int reg; + const TCGArgConstraint *arg_ct; + + ots = &s->temps[args[0]]; + ts = &s->temps[args[1]]; + arg_ct = &def->args_ct[0]; + + /* XXX: always mark arg dead if IS_DEAD_IARG(0) */ + if (ts->val_type == TEMP_VAL_REG) { + if (IS_DEAD_IARG(0) && !ts->fixed_reg && !ots->fixed_reg) { + /* the mov can be suppressed */ + if (ots->val_type == TEMP_VAL_REG) + s->reg_to_temp[ots->reg] = -1; + reg = ts->reg; + s->reg_to_temp[reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } else { + if (ots->val_type == TEMP_VAL_REG) { + reg = ots->reg; + } else { + reg = tcg_reg_alloc(s, arg_ct->u.regs, s->reserved_regs); + } + if (ts->reg != reg) { + tcg_out_mov(s, reg, ts->reg); + } + } + } else if (ts->val_type == TEMP_VAL_MEM) { + if (ots->val_type == TEMP_VAL_REG) { + reg = ots->reg; + } else { + reg = tcg_reg_alloc(s, arg_ct->u.regs, s->reserved_regs); + } + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + } else if (ts->val_type == TEMP_VAL_CONST) { + if (ots->fixed_reg) { + reg = ots->reg; + tcg_out_movi(s, ots->type, reg, ts->val); + } else { + /* propagate constant */ + if (ots->val_type == TEMP_VAL_REG) + s->reg_to_temp[ots->reg] = -1; + ots->val_type = TEMP_VAL_CONST; + ots->val = ts->val; + return; + } + } else { + tcg_abort(); + } + s->reg_to_temp[reg] = args[0]; + ots->reg = reg; + ots->val_type = TEMP_VAL_REG; + ots->mem_coherent = 0; +} + +static void tcg_reg_alloc_op(TCGContext *s, + const TCGOpDef *def, int opc, + const TCGArg *args, + unsigned int dead_iargs) +{ + TCGRegSet allocated_regs; + int i, k, nb_iargs, nb_oargs, reg; + TCGArg arg; + const TCGArgConstraint *arg_ct; + TCGTemp *ts; + TCGArg new_args[TCG_MAX_OP_ARGS]; + int const_args[TCG_MAX_OP_ARGS]; + + nb_oargs = def->nb_oargs; + nb_iargs = def->nb_iargs; + + /* copy constants */ + memcpy(new_args + nb_oargs + nb_iargs, + args + nb_oargs + nb_iargs, + sizeof(TCGArg) * def->nb_cargs); + + /* satisfy input constraints */ + tcg_regset_set(allocated_regs, s->reserved_regs); + for(k = 0; k < nb_iargs; k++) { + i = def->sorted_args[nb_oargs + k]; + arg = args[i]; + arg_ct = &def->args_ct[i]; + ts = &s->temps[arg]; + if (ts->val_type == TEMP_VAL_MEM) { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + ts->mem_coherent = 1; + s->reg_to_temp[reg] = arg; + } else if (ts->val_type == TEMP_VAL_CONST) { + if (tcg_target_const_match(ts->val, arg_ct)) { + /* constant is OK for instruction */ + const_args[i] = 1; + new_args[i] = ts->val; + goto iarg_end; + } else { + /* need to move to a register */ + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_movi(s, ts->type, reg, ts->val); + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + ts->mem_coherent = 0; + s->reg_to_temp[reg] = arg; + } + } + assert(ts->val_type == TEMP_VAL_REG); + if (arg_ct->ct & TCG_CT_IALIAS) { + if (ts->fixed_reg) { + /* if fixed register, we must allocate a new register + if the alias is not the same register */ + if (arg != args[arg_ct->alias_index]) + goto allocate_in_reg; + } else { + /* if the input is aliased to an output and if it is + not dead after the instruction, we must allocate + a new register and move it */ + if (!IS_DEAD_IARG(i - nb_oargs)) + goto allocate_in_reg; + } + } + reg = ts->reg; + if (tcg_regset_test_reg(arg_ct->u.regs, reg)) { + /* nothing to do : the constraint is satisfied */ + } else { + allocate_in_reg: + /* allocate a new register matching the constraint + and move the temporary register into it */ + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_mov(s, reg, ts->reg); + } + new_args[i] = reg; + const_args[i] = 0; + tcg_regset_set_reg(allocated_regs, reg); + iarg_end: ; + } + + if (def->flags & TCG_OPF_BB_END) { + tcg_reg_alloc_bb_end(s, allocated_regs); + } else { + /* mark dead temporaries and free the associated registers */ + for(i = 0; i < nb_iargs; i++) { + arg = args[nb_oargs + i]; + if (IS_DEAD_IARG(i)) { + ts = &s->temps[arg]; + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } + } + } + + if (def->flags & TCG_OPF_CALL_CLOBBER) { + /* XXX: permit generic clobber register list ? */ + for(reg = 0; reg < TCG_TARGET_NB_REGS; reg++) { + if (tcg_regset_test_reg(tcg_target_call_clobber_regs, reg)) { + tcg_reg_free(s, reg); + } + } + /* XXX: for load/store we could do that only for the slow path + (i.e. when a memory callback is called) */ + + /* store globals and free associated registers (we assume the insn + can modify any global. */ + save_globals(s, allocated_regs); + } + + /* satisfy the output constraints */ + tcg_regset_set(allocated_regs, s->reserved_regs); + for(k = 0; k < nb_oargs; k++) { + i = def->sorted_args[k]; + arg = args[i]; + arg_ct = &def->args_ct[i]; + ts = &s->temps[arg]; + if (arg_ct->ct & TCG_CT_ALIAS) { + reg = new_args[arg_ct->alias_index]; + } else { + /* if fixed register, we try to use it */ + reg = ts->reg; + if (ts->fixed_reg && + tcg_regset_test_reg(arg_ct->u.regs, reg)) { + goto oarg_end; + } + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + } + tcg_regset_set_reg(allocated_regs, reg); + /* if a fixed register is used, then a move will be done afterwards */ + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + /* temp value is modified, so the value kept in memory is + potentially not the same */ + ts->mem_coherent = 0; + s->reg_to_temp[reg] = arg; + } + oarg_end: + new_args[i] = reg; + } + } + + /* emit instruction */ + tcg_out_op(s, opc, new_args, const_args); + + /* move the outputs in the correct register if needed */ + for(i = 0; i < nb_oargs; i++) { + ts = &s->temps[args[i]]; + reg = new_args[i]; + if (ts->fixed_reg && ts->reg != reg) { + tcg_out_mov(s, ts->reg, reg); + } + } +} + +#ifdef TCG_TARGET_STACK_GROWSUP +#define STACK_DIR(x) (-(x)) +#else +#define STACK_DIR(x) (x) +#endif + +static int tcg_reg_alloc_call(TCGContext *s, const TCGOpDef *def, + int opc, const TCGArg *args, + unsigned int dead_iargs) +{ + int nb_iargs, nb_oargs, flags, nb_regs, i, reg, nb_params; + TCGArg arg, func_arg; + TCGTemp *ts; + tcg_target_long stack_offset, call_stack_size, func_addr; + int const_func_arg, allocate_args; + TCGRegSet allocated_regs; + const TCGArgConstraint *arg_ct; + + arg = *args++; + + nb_oargs = arg >> 16; + nb_iargs = arg & 0xffff; + nb_params = nb_iargs - 1; + + flags = args[nb_oargs + nb_iargs]; + + nb_regs = tcg_target_get_call_iarg_regs_count(flags); + if (nb_regs > nb_params) + nb_regs = nb_params; + + /* assign stack slots first */ + /* XXX: preallocate call stack */ + call_stack_size = (nb_params - nb_regs) * sizeof(tcg_target_long); + call_stack_size = (call_stack_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + allocate_args = (call_stack_size > TCG_STATIC_CALL_ARGS_SIZE); + if (allocate_args) { + tcg_out_addi(s, TCG_REG_CALL_STACK, -STACK_DIR(call_stack_size)); + } + + stack_offset = TCG_TARGET_CALL_STACK_OFFSET; + for(i = nb_regs; i < nb_params; i++) { + arg = args[nb_oargs + i]; +#ifdef TCG_TARGET_STACK_GROWSUP + stack_offset -= sizeof(tcg_target_long); +#endif + if (arg != TCG_CALL_DUMMY_ARG) { + ts = &s->temps[arg]; + if (ts->val_type == TEMP_VAL_REG) { + tcg_out_st(s, ts->type, ts->reg, TCG_REG_CALL_STACK, stack_offset); + } else if (ts->val_type == TEMP_VAL_MEM) { + reg = tcg_reg_alloc(s, tcg_target_available_regs[ts->type], + s->reserved_regs); + /* XXX: not correct if reading values from the stack */ + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + tcg_out_st(s, ts->type, reg, TCG_REG_CALL_STACK, stack_offset); + } else if (ts->val_type == TEMP_VAL_CONST) { + reg = tcg_reg_alloc(s, tcg_target_available_regs[ts->type], + s->reserved_regs); + /* XXX: sign extend may be needed on some targets */ + tcg_out_movi(s, ts->type, reg, ts->val); + tcg_out_st(s, ts->type, reg, TCG_REG_CALL_STACK, stack_offset); + } else { + tcg_abort(); + } + } +#ifndef TCG_TARGET_STACK_GROWSUP + stack_offset += sizeof(tcg_target_long); +#endif + } + + /* assign input registers */ + tcg_regset_set(allocated_regs, s->reserved_regs); + for(i = 0; i < nb_regs; i++) { + arg = args[nb_oargs + i]; + if (arg != TCG_CALL_DUMMY_ARG) { + ts = &s->temps[arg]; + reg = tcg_target_call_iarg_regs[i]; + tcg_reg_free(s, reg); + if (ts->val_type == TEMP_VAL_REG) { + if (ts->reg != reg) { + tcg_out_mov(s, reg, ts->reg); + } + } else if (ts->val_type == TEMP_VAL_MEM) { + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + } else if (ts->val_type == TEMP_VAL_CONST) { + /* XXX: sign extend ? */ + tcg_out_movi(s, ts->type, reg, ts->val); + } else { + tcg_abort(); + } + tcg_regset_set_reg(allocated_regs, reg); + } + } + + /* assign function address */ + func_arg = args[nb_oargs + nb_iargs - 1]; + arg_ct = &def->args_ct[0]; + ts = &s->temps[func_arg]; + func_addr = ts->val; + const_func_arg = 0; + if (ts->val_type == TEMP_VAL_MEM) { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_ld(s, ts->type, reg, ts->mem_reg, ts->mem_offset); + func_arg = reg; + tcg_regset_set_reg(allocated_regs, reg); + } else if (ts->val_type == TEMP_VAL_REG) { + reg = ts->reg; + if (!tcg_regset_test_reg(arg_ct->u.regs, reg)) { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_mov(s, reg, ts->reg); + } + func_arg = reg; + tcg_regset_set_reg(allocated_regs, reg); + } else if (ts->val_type == TEMP_VAL_CONST) { + if (tcg_target_const_match(func_addr, arg_ct)) { + const_func_arg = 1; + func_arg = func_addr; + } else { + reg = tcg_reg_alloc(s, arg_ct->u.regs, allocated_regs); + tcg_out_movi(s, ts->type, reg, func_addr); + func_arg = reg; + tcg_regset_set_reg(allocated_regs, reg); + } + } else { + tcg_abort(); + } + + + /* mark dead temporaries and free the associated registers */ + for(i = 0; i < nb_iargs; i++) { + arg = args[nb_oargs + i]; + if (IS_DEAD_IARG(i)) { + ts = &s->temps[arg]; + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } + } + } + + /* clobber call registers */ + for(reg = 0; reg < TCG_TARGET_NB_REGS; reg++) { + if (tcg_regset_test_reg(tcg_target_call_clobber_regs, reg)) { + tcg_reg_free(s, reg); + } + } + + /* store globals and free associated registers (we assume the call + can modify any global. */ + if (!(flags & TCG_CALL_CONST)) { + save_globals(s, allocated_regs); + } + + tcg_out_op(s, opc, &func_arg, &const_func_arg); + + if (allocate_args) { + tcg_out_addi(s, TCG_REG_CALL_STACK, STACK_DIR(call_stack_size)); + } + + /* assign output registers and emit moves if needed */ + for(i = 0; i < nb_oargs; i++) { + arg = args[i]; + ts = &s->temps[arg]; + reg = tcg_target_call_oarg_regs[i]; + assert(s->reg_to_temp[reg] == -1); + if (ts->fixed_reg) { + if (ts->reg != reg) { + tcg_out_mov(s, ts->reg, reg); + } + } else { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_REG; + ts->reg = reg; + ts->mem_coherent = 0; + s->reg_to_temp[reg] = arg; + } + } + + return nb_iargs + nb_oargs + def->nb_cargs + 1; +} + +#ifdef CONFIG_PROFILER + +static int64_t tcg_table_op_count[NB_OPS]; + +static void dump_op_count(void) +{ + int i; + FILE *f; + f = fopen("/tmp/op.log", "w"); + for(i = INDEX_op_end; i < NB_OPS; i++) { + fprintf(f, "%s %" PRId64 "\n", tcg_op_defs[i].name, tcg_table_op_count[i]); + } + fclose(f); +} +#endif + + +static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, + long search_pc) +{ + int opc, op_index; + const TCGOpDef *def; + unsigned int dead_iargs; + const TCGArg *args; + +#ifdef DEBUG_DISAS + if (unlikely(qemu_loglevel_mask(CPU_LOG_TB_OP))) { + qemu_log("OP:\n"); + tcg_dump_ops(s, logfile); + qemu_log("\n"); + } +#endif + +#ifdef CONFIG_PROFILER + s->la_time -= profile_getclock(); +#endif + tcg_liveness_analysis(s); +#ifdef CONFIG_PROFILER + s->la_time += profile_getclock(); +#endif + +#ifdef DEBUG_DISAS + if (unlikely(qemu_loglevel_mask(CPU_LOG_TB_OP_OPT))) { + qemu_log("OP after liveness analysis:\n"); + tcg_dump_ops(s, logfile); + qemu_log("\n"); + } +#endif + + tcg_reg_alloc_start(s); + + s->code_buf = gen_code_buf; + s->code_ptr = gen_code_buf; + + args = gen_opparam_buf; + op_index = 0; + + for(;;) { + opc = gen_opc_buf[op_index]; +#ifdef CONFIG_PROFILER + tcg_table_op_count[opc]++; +#endif + def = &tcg_op_defs[opc]; +#if 0 + printf("%s: %d %d %d\n", def->name, + def->nb_oargs, def->nb_iargs, def->nb_cargs); + // dump_regs(s); +#endif + switch(opc) { + case INDEX_op_mov_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_mov_i64: +#endif + dead_iargs = s->op_dead_iargs[op_index]; + tcg_reg_alloc_mov(s, def, args, dead_iargs); + break; + case INDEX_op_movi_i32: +#if TCG_TARGET_REG_BITS == 64 + case INDEX_op_movi_i64: +#endif + tcg_reg_alloc_movi(s, args); + break; + case INDEX_op_debug_insn_start: + /* debug instruction */ + break; + case INDEX_op_nop: + case INDEX_op_nop1: + case INDEX_op_nop2: + case INDEX_op_nop3: + break; + case INDEX_op_nopn: + args += args[0]; + goto next; + case INDEX_op_discard: + { + TCGTemp *ts; + ts = &s->temps[args[0]]; + /* mark the temporary as dead */ + if (!ts->fixed_reg) { + if (ts->val_type == TEMP_VAL_REG) + s->reg_to_temp[ts->reg] = -1; + ts->val_type = TEMP_VAL_DEAD; + } + } + break; + case INDEX_op_set_label: + tcg_reg_alloc_bb_end(s, s->reserved_regs); + tcg_out_label(s, args[0], (long)s->code_ptr); + break; + case INDEX_op_call: + dead_iargs = s->op_dead_iargs[op_index]; + args += tcg_reg_alloc_call(s, def, opc, args, dead_iargs); + goto next; + case INDEX_op_end: + goto the_end; + default: + /* Note: in order to speed up the code, it would be much + faster to have specialized register allocator functions for + some common argument patterns */ + dead_iargs = s->op_dead_iargs[op_index]; + tcg_reg_alloc_op(s, def, opc, args, dead_iargs); + break; + } + args += def->nb_args; + next: + if (search_pc >= 0 && search_pc < s->code_ptr - gen_code_buf) { + return op_index; + } + op_index++; +#ifndef NDEBUG + check_regs(s); +#endif + } + the_end: + return -1; +} + +int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf) +{ +#ifdef CONFIG_PROFILER + { + int n; + n = (gen_opc_ptr - gen_opc_buf); + s->op_count += n; + if (n > s->op_count_max) + s->op_count_max = n; + + s->temp_count += s->nb_temps; + if (s->nb_temps > s->temp_count_max) + s->temp_count_max = s->nb_temps; + } +#endif + + tcg_gen_code_common(s, gen_code_buf, -1); + + /* flush instruction cache */ + flush_icache_range((unsigned long)gen_code_buf, + (unsigned long)s->code_ptr); + return s->code_ptr - gen_code_buf; +} + +/* Return the index of the micro operation such as the pc after is < + offset bytes from the start of the TB. The contents of gen_code_buf must + not be changed, though writing the same values is ok. + Return -1 if not found. */ +int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset) +{ + return tcg_gen_code_common(s, gen_code_buf, offset); +} + +#ifdef CONFIG_PROFILER +void tcg_dump_info(FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...)) +{ + TCGContext *s = &tcg_ctx; + int64_t tot; + + tot = s->interm_time + s->code_time; + cpu_fprintf(f, "JIT cycles %" PRId64 " (%0.3f s at 2.4 GHz)\n", + tot, tot / 2.4e9); + cpu_fprintf(f, "translated TBs %" PRId64 " (aborted=%" PRId64 " %0.1f%%)\n", + s->tb_count, + s->tb_count1 - s->tb_count, + s->tb_count1 ? (double)(s->tb_count1 - s->tb_count) / s->tb_count1 * 100.0 : 0); + cpu_fprintf(f, "avg ops/TB %0.1f max=%d\n", + s->tb_count ? (double)s->op_count / s->tb_count : 0, s->op_count_max); + cpu_fprintf(f, "deleted ops/TB %0.2f\n", + s->tb_count ? + (double)s->del_op_count / s->tb_count : 0); + cpu_fprintf(f, "avg temps/TB %0.2f max=%d\n", + s->tb_count ? + (double)s->temp_count / s->tb_count : 0, + s->temp_count_max); + + cpu_fprintf(f, "cycles/op %0.1f\n", + s->op_count ? (double)tot / s->op_count : 0); + cpu_fprintf(f, "cycles/in byte %0.1f\n", + s->code_in_len ? (double)tot / s->code_in_len : 0); + cpu_fprintf(f, "cycles/out byte %0.1f\n", + s->code_out_len ? (double)tot / s->code_out_len : 0); + if (tot == 0) + tot = 1; + cpu_fprintf(f, " gen_interm time %0.1f%%\n", + (double)s->interm_time / tot * 100.0); + cpu_fprintf(f, " gen_code time %0.1f%%\n", + (double)s->code_time / tot * 100.0); + cpu_fprintf(f, "liveness/code time %0.1f%%\n", + (double)s->la_time / (s->code_time ? s->code_time : 1) * 100.0); + cpu_fprintf(f, "cpu_restore count %" PRId64 "\n", + s->restore_count); + cpu_fprintf(f, " avg cycles %0.1f\n", + s->restore_count ? (double)s->restore_time / s->restore_count : 0); + + dump_op_count(); +} +#else +void tcg_dump_info(FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...)) +{ + cpu_fprintf(f, "[TCG profiler not compiled]\n"); +} +#endif diff --git a/qemu/qemu-git/tcg/tcg.h b/qemu/qemu-git/tcg/tcg.h new file mode 100644 index 0000000..121b17c --- /dev/null +++ b/qemu/qemu-git/tcg/tcg.h @@ -0,0 +1,468 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include "qemu-common.h" +#include "tcg-target.h" +#include "tcg-runtime.h" + +#if TCG_TARGET_REG_BITS == 32 +typedef int32_t tcg_target_long; +typedef uint32_t tcg_target_ulong; +#define TCG_PRIlx PRIx32 +#define TCG_PRIld PRId32 +#elif TCG_TARGET_REG_BITS == 64 +typedef int64_t tcg_target_long; +typedef uint64_t tcg_target_ulong; +#define TCG_PRIlx PRIx64 +#define TCG_PRIld PRId64 +#else +#error unsupported +#endif + +#if TCG_TARGET_NB_REGS <= 32 +typedef uint32_t TCGRegSet; +#elif TCG_TARGET_NB_REGS <= 64 +typedef uint64_t TCGRegSet; +#else +#error unsupported +#endif + +enum { +#define DEF(s, n, copy_size) INDEX_op_ ## s, +#include "tcg-opc.h" +#undef DEF + NB_OPS, +}; + +#define tcg_regset_clear(d) (d) = 0 +#define tcg_regset_set(d, s) (d) = (s) +#define tcg_regset_set32(d, reg, val32) (d) |= (val32) << (reg) +#define tcg_regset_set_reg(d, r) (d) |= 1L << (r) +#define tcg_regset_reset_reg(d, r) (d) &= ~(1L << (r)) +#define tcg_regset_test_reg(d, r) (((d) >> (r)) & 1) +#define tcg_regset_or(d, a, b) (d) = (a) | (b) +#define tcg_regset_and(d, a, b) (d) = (a) & (b) +#define tcg_regset_andnot(d, a, b) (d) = (a) & ~(b) +#define tcg_regset_not(d, a) (d) = ~(a) + +typedef struct TCGRelocation { + struct TCGRelocation *next; + int type; + uint8_t *ptr; + tcg_target_long addend; +} TCGRelocation; + +typedef struct TCGLabel { + int has_value; + union { + tcg_target_ulong value; + TCGRelocation *first_reloc; + } u; +} TCGLabel; + +typedef struct TCGPool { + struct TCGPool *next; + int size; + uint8_t data[0] __attribute__ ((aligned)); +} TCGPool; + +#define TCG_POOL_CHUNK_SIZE 32768 + +#define TCG_MAX_LABELS 512 + +#define TCG_MAX_TEMPS 512 + +/* when the size of the arguments of a called function is smaller than + this value, they are statically allocated in the TB stack frame */ +#define TCG_STATIC_CALL_ARGS_SIZE 128 + +typedef int TCGType; + +#define TCG_TYPE_I32 0 +#define TCG_TYPE_I64 1 +#define TCG_TYPE_COUNT 2 /* number of different types */ + +#if TCG_TARGET_REG_BITS == 32 +#define TCG_TYPE_PTR TCG_TYPE_I32 +#else +#define TCG_TYPE_PTR TCG_TYPE_I64 +#endif + +typedef tcg_target_ulong TCGArg; + +/* Define a type and accessor macros for varables. Using a struct is + nice because it gives some level of type safely. Ideally the compiler + be able to see through all this. However in practice this is not true, + expecially on targets with braindamaged ABIs (e.g. i386). + We use plain int by default to avoid this runtime overhead. + Users of tcg_gen_* don't need to know about any of this, and should + treat TCGv as an opaque type. + In additon we do typechecking for different types of variables. TCGv_i32 + and TCGv_i64 are 32/64-bit variables respectively. TCGv and TCGv_ptr + are aliases for target_ulong and host pointer sized values respectively. + */ + +#ifdef CONFIG_DEBUG_TCG +#define DEBUG_TCGV 1 +#endif + +#ifdef DEBUG_TCGV + +typedef struct +{ + int i32; +} TCGv_i32; + +typedef struct +{ + int i64; +} TCGv_i64; + +#define MAKE_TCGV_I32(i) __extension__ \ + ({ TCGv_i32 make_tcgv_tmp = {i}; make_tcgv_tmp;}) +#define MAKE_TCGV_I64(i) __extension__ \ + ({ TCGv_i64 make_tcgv_tmp = {i}; make_tcgv_tmp;}) +#define GET_TCGV_I32(t) ((t).i32) +#define GET_TCGV_I64(t) ((t).i64) +#if TCG_TARGET_REG_BITS == 32 +#define TCGV_LOW(t) MAKE_TCGV_I32(GET_TCGV_I64(t)) +#define TCGV_HIGH(t) MAKE_TCGV_I32(GET_TCGV_I64(t) + 1) +#endif + +#else /* !DEBUG_TCGV */ + +typedef int TCGv_i32; +typedef int TCGv_i64; +#define MAKE_TCGV_I32(x) (x) +#define MAKE_TCGV_I64(x) (x) +#define GET_TCGV_I32(t) (t) +#define GET_TCGV_I64(t) (t) + +#if TCG_TARGET_REG_BITS == 32 +#define TCGV_LOW(t) (t) +#define TCGV_HIGH(t) ((t) + 1) +#endif + +#endif /* DEBUG_TCGV */ + +#define TCGV_EQUAL_I32(a, b) (GET_TCGV_I32(a) == GET_TCGV_I32(b)) +#define TCGV_EQUAL_I64(a, b) (GET_TCGV_I64(a) == GET_TCGV_I64(b)) + +/* Dummy definition to avoid compiler warnings. */ +#define TCGV_UNUSED_I32(x) x = MAKE_TCGV_I32(-1) +#define TCGV_UNUSED_I64(x) x = MAKE_TCGV_I64(-1) + +/* call flags */ +#define TCG_CALL_TYPE_MASK 0x000f +#define TCG_CALL_TYPE_STD 0x0000 /* standard C call */ +#define TCG_CALL_TYPE_REGPARM_1 0x0001 /* i386 style regparm call (1 reg) */ +#define TCG_CALL_TYPE_REGPARM_2 0x0002 /* i386 style regparm call (2 regs) */ +#define TCG_CALL_TYPE_REGPARM 0x0003 /* i386 style regparm call (3 regs) */ +/* A pure function only reads its arguments and TCG global variables + and cannot raise exceptions. Hence a call to a pure function can be + safely suppressed if the return value is not used. */ +#define TCG_CALL_PURE 0x0010 +/* A const function only reads its arguments and does not use TCG + global variables. Hence a call to such a function does not + save TCG global variables back to their canonical location. */ +#define TCG_CALL_CONST 0x0020 + +/* used to align parameters */ +#define TCG_CALL_DUMMY_TCGV MAKE_TCGV_I32(-1) +#define TCG_CALL_DUMMY_ARG ((TCGArg)(-1)) + +typedef enum { + TCG_COND_EQ, + TCG_COND_NE, + TCG_COND_LT, + TCG_COND_GE, + TCG_COND_LE, + TCG_COND_GT, + /* unsigned */ + TCG_COND_LTU, + TCG_COND_GEU, + TCG_COND_LEU, + TCG_COND_GTU, +} TCGCond; + +static inline TCGCond tcg_unsigned_cond(TCGCond c) +{ + return (c >= TCG_COND_LT && c <= TCG_COND_GT ? c + 4 : c); +} + +#define TEMP_VAL_DEAD 0 +#define TEMP_VAL_REG 1 +#define TEMP_VAL_MEM 2 +#define TEMP_VAL_CONST 3 + +/* XXX: optimize memory layout */ +typedef struct TCGTemp { + TCGType base_type; + TCGType type; + int val_type; + int reg; + tcg_target_long val; + int mem_reg; + tcg_target_long mem_offset; + unsigned int fixed_reg:1; + unsigned int mem_coherent:1; + unsigned int mem_allocated:1; + unsigned int temp_local:1; /* If true, the temp is saved accross + basic blocks. Otherwise, it is not + preserved accross basic blocks. */ + unsigned int temp_allocated:1; /* never used for code gen */ + /* index of next free temp of same base type, -1 if end */ + int next_free_temp; + const char *name; +} TCGTemp; + +typedef struct TCGHelperInfo { + tcg_target_ulong func; + const char *name; +} TCGHelperInfo; + +typedef struct TCGContext TCGContext; + +struct TCGContext { + uint8_t *pool_cur, *pool_end; + TCGPool *pool_first, *pool_current; + TCGLabel *labels; + int nb_labels; + TCGTemp *temps; /* globals first, temps after */ + int nb_globals; + int nb_temps; + /* index of free temps, -1 if none */ + int first_free_temp[TCG_TYPE_COUNT * 2]; + + /* goto_tb support */ + uint8_t *code_buf; + unsigned long *tb_next; + uint16_t *tb_next_offset; + uint16_t *tb_jmp_offset; /* != NULL if USE_DIRECT_JUMP */ + + /* liveness analysis */ + uint16_t *op_dead_iargs; /* for each operation, each bit tells if the + corresponding input argument is dead */ + + /* tells in which temporary a given register is. It does not take + into account fixed registers */ + int reg_to_temp[TCG_TARGET_NB_REGS]; + TCGRegSet reserved_regs; + tcg_target_long current_frame_offset; + tcg_target_long frame_start; + tcg_target_long frame_end; + int frame_reg; + + uint8_t *code_ptr; + TCGTemp static_temps[TCG_MAX_TEMPS]; + + TCGHelperInfo *helpers; + int nb_helpers; + int allocated_helpers; + int helpers_sorted; + +#ifdef CONFIG_PROFILER + /* profiling info */ + int64_t tb_count1; + int64_t tb_count; + int64_t op_count; /* total insn count */ + int op_count_max; /* max insn per TB */ + int64_t temp_count; + int temp_count_max; + int64_t del_op_count; + int64_t code_in_len; + int64_t code_out_len; + int64_t interm_time; + int64_t code_time; + int64_t la_time; + int64_t restore_count; + int64_t restore_time; +#endif +}; + +extern TCGContext tcg_ctx; +extern uint16_t *gen_opc_ptr; +extern TCGArg *gen_opparam_ptr; +extern uint16_t gen_opc_buf[]; +extern TCGArg gen_opparam_buf[]; + +/* pool based memory allocation */ + +void *tcg_malloc_internal(TCGContext *s, int size); +void tcg_pool_reset(TCGContext *s); +void tcg_pool_delete(TCGContext *s); + +static inline void *tcg_malloc(int size) +{ + TCGContext *s = &tcg_ctx; + uint8_t *ptr, *ptr_end; + size = (size + sizeof(long) - 1) & ~(sizeof(long) - 1); + ptr = s->pool_cur; + ptr_end = ptr + size; + if (unlikely(ptr_end > s->pool_end)) { + return tcg_malloc_internal(&tcg_ctx, size); + } else { + s->pool_cur = ptr_end; + return ptr; + } +} + +void tcg_context_init(TCGContext *s); +void tcg_func_start(TCGContext *s); + +int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf); +int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset); + +void tcg_set_frame(TCGContext *s, int reg, + tcg_target_long start, tcg_target_long size); + +TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name); +TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset, + const char *name); +TCGv_i32 tcg_temp_new_internal_i32(int temp_local); +static inline TCGv_i32 tcg_temp_new_i32(void) +{ + return tcg_temp_new_internal_i32(0); +} +static inline TCGv_i32 tcg_temp_local_new_i32(void) +{ + return tcg_temp_new_internal_i32(1); +} +void tcg_temp_free_i32(TCGv_i32 arg); +char *tcg_get_arg_str_i32(TCGContext *s, char *buf, int buf_size, TCGv_i32 arg); + +TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name); +TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset, + const char *name); +TCGv_i64 tcg_temp_new_internal_i64(int temp_local); +static inline TCGv_i64 tcg_temp_new_i64(void) +{ + return tcg_temp_new_internal_i64(0); +} +static inline TCGv_i64 tcg_temp_local_new_i64(void) +{ + return tcg_temp_new_internal_i64(1); +} +void tcg_temp_free_i64(TCGv_i64 arg); +char *tcg_get_arg_str_i64(TCGContext *s, char *buf, int buf_size, TCGv_i64 arg); + +void tcg_dump_info(FILE *f, + int (*cpu_fprintf)(FILE *f, const char *fmt, ...)); + +#define TCG_CT_ALIAS 0x80 +#define TCG_CT_IALIAS 0x40 +#define TCG_CT_REG 0x01 +#define TCG_CT_CONST 0x02 /* any constant of register size */ + +typedef struct TCGArgConstraint { + uint16_t ct; + uint8_t alias_index; + union { + TCGRegSet regs; + } u; +} TCGArgConstraint; + +#define TCG_MAX_OP_ARGS 16 + +#define TCG_OPF_BB_END 0x01 /* instruction defines the end of a basic + block */ +#define TCG_OPF_CALL_CLOBBER 0x02 /* instruction clobbers call registers + and potentially update globals. */ +#define TCG_OPF_SIDE_EFFECTS 0x04 /* instruction has side effects : it + cannot be removed if its output + are not used */ + +typedef struct TCGOpDef { + const char *name; + uint8_t nb_oargs, nb_iargs, nb_cargs, nb_args; + uint8_t flags; + uint16_t copy_size; + TCGArgConstraint *args_ct; + int *sorted_args; +} TCGOpDef; + +typedef struct TCGTargetOpDef { + int op; + const char *args_ct_str[TCG_MAX_OP_ARGS]; +} TCGTargetOpDef; + +void tcg_target_init(TCGContext *s); +void tcg_target_qemu_prologue(TCGContext *s); + +#define tcg_abort() \ +do {\ + fprintf(stderr, "%s:%d: tcg fatal error\n", __FILE__, __LINE__);\ + abort();\ +} while (0) + +void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs); + +#if TCG_TARGET_REG_BITS == 32 +#define tcg_const_ptr tcg_const_i32 +#define tcg_add_ptr tcg_add_i32 +#define tcg_sub_ptr tcg_sub_i32 +#define TCGv_ptr TCGv_i32 +#define GET_TCGV_PTR GET_TCGV_I32 +#define tcg_global_reg_new_ptr tcg_global_reg_new_i32 +#define tcg_global_mem_new_ptr tcg_global_mem_new_i32 +#define tcg_temp_new_ptr tcg_temp_new_i32 +#define tcg_temp_free_ptr tcg_temp_free_i32 +#else +#define tcg_const_ptr tcg_const_i64 +#define tcg_add_ptr tcg_add_i64 +#define tcg_sub_ptr tcg_sub_i64 +#define TCGv_ptr TCGv_i64 +#define GET_TCGV_PTR GET_TCGV_I64 +#define tcg_global_reg_new_ptr tcg_global_reg_new_i64 +#define tcg_global_mem_new_ptr tcg_global_mem_new_i64 +#define tcg_temp_new_ptr tcg_temp_new_i64 +#define tcg_temp_free_ptr tcg_temp_free_i64 +#endif + +void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags, + int sizemask, TCGArg ret, int nargs, TCGArg *args); + +void tcg_gen_shifti_i64(TCGv_i64 ret, TCGv_i64 arg1, + int c, int right, int arith); + +/* only used for debugging purposes */ +void tcg_register_helper(void *func, const char *name); +const char *tcg_helper_get_name(TCGContext *s, void *func); +void tcg_dump_ops(TCGContext *s, FILE *outfile); + +void dump_ops(const uint16_t *opc_buf, const TCGArg *opparam_buf); +TCGv_i32 tcg_const_i32(int32_t val); +TCGv_i64 tcg_const_i64(int64_t val); +TCGv_i32 tcg_const_local_i32(int32_t val); +TCGv_i64 tcg_const_local_i64(int64_t val); + +void tcg_out_reloc(TCGContext *s, uint8_t *code_ptr, int type, + int label_index, long addend); + +extern uint8_t code_gen_prologue[]; +#if defined(_ARCH_PPC) && !defined(_ARCH_PPC64) +#define tcg_qemu_tb_exec(tb_ptr) \ + ((long REGPARM __attribute__ ((longcall)) (*)(void *))code_gen_prologue)(tb_ptr) +#else +#define tcg_qemu_tb_exec(tb_ptr) ((long REGPARM (*)(void *))code_gen_prologue)(tb_ptr) +#endif diff --git a/qemu/qemu-git/tcg/x86_64/.svn/all-wcprops b/qemu/qemu-git/tcg/x86_64/.svn/all-wcprops new file mode 100644 index 0000000..682e45d --- /dev/null +++ b/qemu/qemu-git/tcg/x86_64/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 50 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/x86_64 +END +tcg-target.c +K 25 +svn:wc:ra_dav:version-url +V 63 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/x86_64/tcg-target.c +END +tcg-target.h +K 25 +svn:wc:ra_dav:version-url +V 63 +/p/x49gp/code/!svn/ver/10/qemu/qemu-git/tcg/x86_64/tcg-target.h +END diff --git a/qemu/qemu-git/tcg/x86_64/.svn/entries b/qemu/qemu-git/tcg/x86_64/.svn/entries new file mode 100644 index 0000000..fb06525 --- /dev/null +++ b/qemu/qemu-git/tcg/x86_64/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/qemu/qemu-git/tcg/x86_64 +http://svn.code.sf.net/p/x49gp/code + + + +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +tcg-target.c +file + + + + +2013-08-23T00:54:47.000000Z +d3f45a7da549459996584a45dd0890e2 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +41621 + +tcg-target.h +file + + + + +2013-08-23T00:54:47.000000Z +1838eb6151ae652ab32eec55d0b3a066 +2010-04-24T23:27:43.537348Z +10 +datajerk + + + + + + + + + + + + + + + + + + + + + +2768 + diff --git a/qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.c.svn-base b/qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.c.svn-base new file mode 100644 index 0000000..cbaabef --- /dev/null +++ b/qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.c.svn-base @@ -0,0 +1,1422 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%rax", + "%rcx", + "%rdx", + "%rbx", + "%rsp", + "%rbp", + "%rsi", + "%rdi", + "%r8", + "%r9", + "%r10", + "%r11", + "%r12", + "%r13", + "%r14", + "%r15", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_RBP, + TCG_REG_RBX, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R9, + TCG_REG_R8, + TCG_REG_RCX, + TCG_REG_RDX, + TCG_REG_RSI, + TCG_REG_RDI, + TCG_REG_RAX, +}; + +static const int tcg_target_call_iarg_regs[6] = { + TCG_REG_RDI, + TCG_REG_RSI, + TCG_REG_RDX, + TCG_REG_RCX, + TCG_REG_R8, + TCG_REG_R9, +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_RAX, + TCG_REG_RDX +}; + +static uint8_t *tb_ret_addr; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch(type) { + case R_X86_64_32: + if (value != (uint32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + case R_X86_64_32S: + if (value != (int32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + case R_386_PC32: + value -= (long)code_ptr; + if (value != (int32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 6; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch(ct_str[0]) { + case 'a': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RAX); + break; + case 'b': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RBX); + break; + case 'c': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RCX); + break; + case 'd': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RDX); + break; + case 'S': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RSI); + break; + case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RDI); + break; + case 'q': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xf); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffff); + break; + case 'L': /* qemu_ld/st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_RSI); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_RDI); + break; + case 'e': + ct->ct |= TCG_CT_CONST_S32; + break; + case 'Z': + ct->ct |= TCG_CT_CONST_U32; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_S32) && val == (int32_t)val) + return 1; + else if ((ct & TCG_CT_CONST_U32) && val == (uint32_t)val) + return 1; + else + return 0; +} + +#define ARITH_ADD 0 +#define ARITH_OR 1 +#define ARITH_ADC 2 +#define ARITH_SBB 3 +#define ARITH_AND 4 +#define ARITH_SUB 5 +#define ARITH_XOR 6 +#define ARITH_CMP 7 + +#define SHIFT_ROL 0 +#define SHIFT_ROR 1 +#define SHIFT_SHL 4 +#define SHIFT_SHR 5 +#define SHIFT_SAR 7 + +#define JCC_JMP (-1) +#define JCC_JO 0x0 +#define JCC_JNO 0x1 +#define JCC_JB 0x2 +#define JCC_JAE 0x3 +#define JCC_JE 0x4 +#define JCC_JNE 0x5 +#define JCC_JBE 0x6 +#define JCC_JA 0x7 +#define JCC_JS 0x8 +#define JCC_JNS 0x9 +#define JCC_JP 0xa +#define JCC_JNP 0xb +#define JCC_JL 0xc +#define JCC_JGE 0xd +#define JCC_JLE 0xe +#define JCC_JG 0xf + +#define P_EXT 0x100 /* 0x0f opcode prefix */ +#define P_REXW 0x200 /* set rex.w = 1 */ +#define P_REXB_R 0x400 /* REG field as byte register */ +#define P_REXB_RM 0x800 /* R/M field as byte register */ + +static const uint8_t tcg_cond_to_jcc[10] = { + [TCG_COND_EQ] = JCC_JE, + [TCG_COND_NE] = JCC_JNE, + [TCG_COND_LT] = JCC_JL, + [TCG_COND_GE] = JCC_JGE, + [TCG_COND_LE] = JCC_JLE, + [TCG_COND_GT] = JCC_JG, + [TCG_COND_LTU] = JCC_JB, + [TCG_COND_GEU] = JCC_JAE, + [TCG_COND_LEU] = JCC_JBE, + [TCG_COND_GTU] = JCC_JA, +}; + +static void tcg_out_opc(TCGContext *s, int opc, int r, int rm, int x) +{ + int rex = 0; + + rex |= (opc & P_REXW) >> 6; /* REX.W */ + rex |= (r & 8) >> 1; /* REX.R */ + rex |= (x & 8) >> 2; /* REX.X */ + rex |= (rm & 8) >> 3; /* REX.B */ + + /* P_REXB_{R,RM} indicates that the given register is the low byte. + For %[abcd]l we need no REX prefix, but for %{si,di,bp,sp}l we do, + as otherwise the encoding indicates %[abcd]h. Note that the values + that are ORed in merely indicate that the REX byte must be present; + those bits get discarded in output. */ + rex |= opc & (r >= 4 ? P_REXB_R : 0); + rex |= opc & (rm >= 4 ? P_REXB_RM : 0); + + if (rex) { + tcg_out8(s, (uint8_t)(rex | 0x40)); + } + if (opc & P_EXT) { + tcg_out8(s, 0x0f); + } + tcg_out8(s, opc & 0xff); +} + +static inline void tcg_out_modrm(TCGContext *s, int opc, int r, int rm) +{ + tcg_out_opc(s, opc, r, rm, 0); + tcg_out8(s, 0xc0 | ((r & 7) << 3) | (rm & 7)); +} + +/* rm < 0 means no register index plus (-rm - 1 immediate bytes) */ +static inline void tcg_out_modrm_offset(TCGContext *s, int opc, int r, int rm, + tcg_target_long offset) +{ + if (rm < 0) { + tcg_target_long val; + tcg_out_opc(s, opc, r, 0, 0); + val = offset - ((tcg_target_long)s->code_ptr + 5 + (-rm - 1)); + if (val == (int32_t)val) { + /* eip relative */ + tcg_out8(s, 0x05 | ((r & 7) << 3)); + tcg_out32(s, val); + } else if (offset == (int32_t)offset) { + tcg_out8(s, 0x04 | ((r & 7) << 3)); + tcg_out8(s, 0x25); /* sib */ + tcg_out32(s, offset); + } else { + tcg_abort(); + } + } else if (offset == 0 && (rm & 7) != TCG_REG_RBP) { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, 0x04 | ((r & 7) << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x00 | ((r & 7) << 3) | (rm & 7)); + } + } else if ((int8_t)offset == offset) { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, 0x44 | ((r & 7) << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x40 | ((r & 7) << 3) | (rm & 7)); + } + tcg_out8(s, offset); + } else { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, 0x84 | ((r & 7) << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x80 | ((r & 7) << 3) | (rm & 7)); + } + tcg_out32(s, offset); + } +} + +#if defined(CONFIG_SOFTMMU) +/* XXX: incomplete. index must be different from ESP */ +static void tcg_out_modrm_offset2(TCGContext *s, int opc, int r, int rm, + int index, int shift, + tcg_target_long offset) +{ + int mod; + if (rm == -1) + tcg_abort(); + if (offset == 0 && (rm & 7) != TCG_REG_RBP) { + mod = 0; + } else if (offset == (int8_t)offset) { + mod = 0x40; + } else if (offset == (int32_t)offset) { + mod = 0x80; + } else { + tcg_abort(); + } + if (index == -1) { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, mod | ((r & 7) << 3) | 0x04); + tcg_out8(s, 0x04 | (rm & 7)); + } else { + tcg_out8(s, mod | ((r & 7) << 3) | (rm & 7)); + } + } else { + tcg_out_opc(s, opc, r, rm, index); + tcg_out8(s, mod | ((r & 7) << 3) | 0x04); + tcg_out8(s, (shift << 6) | ((index & 7) << 3) | (rm & 7)); + } + if (mod == 0x40) { + tcg_out8(s, offset); + } else if (mod == 0x80) { + tcg_out32(s, offset); + } +} +#endif + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_modrm(s, 0x8b | P_REXW, ret, arg); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + if (arg == 0) { + tcg_out_modrm(s, 0x01 | (ARITH_XOR << 3), ret, ret); /* xor r0,r0 */ + } else if (arg == (uint32_t)arg || type == TCG_TYPE_I32) { + tcg_out_opc(s, 0xb8 + (ret & 7), 0, ret, 0); + tcg_out32(s, arg); + } else if (arg == (int32_t)arg) { + tcg_out_modrm(s, 0xc7 | P_REXW, 0, ret); + tcg_out32(s, arg); + } else { + tcg_out_opc(s, (0xb8 + (ret & 7)) | P_REXW, 0, ret, 0); + tcg_out32(s, arg); + tcg_out32(s, arg >> 32); + } +} + +static void tcg_out_goto(TCGContext *s, int call, uint8_t *target) +{ + int32_t disp; + + disp = target - s->code_ptr - 5; + if (disp == (target - s->code_ptr - 5)) { + tcg_out8(s, call ? 0xe8 : 0xe9); + tcg_out32(s, disp); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R10, (tcg_target_long) target); + tcg_out_modrm(s, 0xff, call ? 2 : 4, TCG_REG_R10); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_modrm_offset(s, 0x8b, ret, arg1, arg2); /* movl */ + else + tcg_out_modrm_offset(s, 0x8b | P_REXW, ret, arg1, arg2); /* movq */ +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_modrm_offset(s, 0x89, arg, arg1, arg2); /* movl */ + else + tcg_out_modrm_offset(s, 0x89 | P_REXW, arg, arg1, arg2); /* movq */ +} + +static inline void tgen_arithi32(TCGContext *s, int c, int r0, int32_t val) +{ + if ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1)) { + /* inc */ + tcg_out_modrm(s, 0xff, 0, r0); + } else if ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1)) { + /* dec */ + tcg_out_modrm(s, 0xff, 1, r0); + } else if (val == (int8_t)val) { + tcg_out_modrm(s, 0x83, c, r0); + tcg_out8(s, val); + } else if (c == ARITH_AND && val == 0xffu) { + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXB_RM, r0, r0); + } else if (c == ARITH_AND && val == 0xffffu) { + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, r0, r0); + } else { + tcg_out_modrm(s, 0x81, c, r0); + tcg_out32(s, val); + } +} + +static inline void tgen_arithi64(TCGContext *s, int c, int r0, int64_t val) +{ + if ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1)) { + /* inc */ + tcg_out_modrm(s, 0xff | P_REXW, 0, r0); + } else if ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1)) { + /* dec */ + tcg_out_modrm(s, 0xff | P_REXW, 1, r0); + } else if (c == ARITH_AND && val == 0xffffffffu) { + /* 32-bit mov zero extends */ + tcg_out_modrm(s, 0x8b, r0, r0); + } else if (c == ARITH_AND && val == (uint32_t)val) { + /* AND with no high bits set can use a 32-bit operation. */ + tgen_arithi32(s, c, r0, (uint32_t)val); + } else if (val == (int8_t)val) { + tcg_out_modrm(s, 0x83 | P_REXW, c, r0); + tcg_out8(s, val); + } else if (val == (int32_t)val) { + tcg_out_modrm(s, 0x81 | P_REXW, c, r0); + tcg_out32(s, val); + } else { + tcg_abort(); + } +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) + tgen_arithi64(s, ARITH_ADD, reg, val); +} + +static void tcg_out_jxx(TCGContext *s, int opc, int label_index) +{ + int32_t val, val1; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + val1 = val - 2; + if ((int8_t)val1 == val1) { + if (opc == -1) + tcg_out8(s, 0xeb); + else + tcg_out8(s, 0x70 + opc); + tcg_out8(s, val1); + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + tcg_out32(s, val - 5); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + tcg_out32(s, val - 6); + } + } + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + } + tcg_out_reloc(s, s->code_ptr, R_386_PC32, label_index, -4); + s->code_ptr += 4; + } +} + +static void tcg_out_brcond(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index, int rexw) +{ + if (const_arg2) { + if (arg2 == 0) { + /* test r, r */ + tcg_out_modrm(s, 0x85 | rexw, arg1, arg1); + } else { + if (rexw) + tgen_arithi64(s, ARITH_CMP, arg1, arg2); + else + tgen_arithi32(s, ARITH_CMP, arg1, arg2); + } + } else { + tcg_out_modrm(s, 0x01 | (ARITH_CMP << 3) | rexw, arg2, arg1); + } + tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, r0, r1, mem_index, s_bits, bswap, rexw; + int32_t offset; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + s_bits = opc & 3; + + r0 = TCG_REG_RDI; + r1 = TCG_REG_RSI; + +#if TARGET_LONG_BITS == 32 + rexw = 0; +#else + rexw = P_REXW; +#endif +#if defined(CONFIG_SOFTMMU) + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r1, addr_reg); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + tcg_out_modrm(s, 0xc1 | rexw, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81 | rexw, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* lea offset(r1, env), r1 */ + tcg_out_modrm_offset2(s, 0x8d | P_REXW, r1, r1, TCG_AREG0, 0, + offsetof(CPUState, tlb_table[mem_index][0].addr_read)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b | rexw, r0, r1, 0); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* XXX: move that code at the end of the TB */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_RSI, mem_index); + tcg_out_goto(s, 1, qemu_ld_helpers[s_bits]); + + switch(opc) { + case 0 | 4: + /* movsbq */ + tcg_out_modrm(s, 0xbe | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 1 | 4: + /* movswq */ + tcg_out_modrm(s, 0xbf | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 2 | 4: + /* movslq */ + tcg_out_modrm(s, 0x63 | P_REXW, data_reg, TCG_REG_RAX); + break; + case 0: + /* movzbq */ + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 1: + /* movzwq */ + tcg_out_modrm(s, 0xb7 | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 2: + default: + /* movl */ + tcg_out_modrm(s, 0x8b, data_reg, TCG_REG_RAX); + break; + case 3: + tcg_out_mov(s, data_reg, TCG_REG_RAX); + break; + } + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03 | P_REXW, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_read)); + offset = 0; +#else + if (GUEST_BASE == (int32_t)GUEST_BASE) { + r0 = addr_reg; + offset = GUEST_BASE; + } else { + offset = 0; + /* movq $GUEST_BASE, r0 */ + tcg_out_opc(s, (0xb8 + (r0 & 7)) | P_REXW, 0, r0, 0); + tcg_out32(s, GUEST_BASE); + tcg_out32(s, GUEST_BASE >> 32); + /* addq addr_reg, r0 */ + tcg_out_modrm(s, 0x01 | P_REXW, addr_reg, r0); + } +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, data_reg, r0, offset); + break; + case 0 | 4: + /* movsbX */ + tcg_out_modrm_offset(s, 0xbe | P_EXT | rexw, data_reg, r0, offset); + break; + case 1: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, data_reg, r0, offset); + if (bswap) { + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + } + break; + case 1 | 4: + if (bswap) { + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, data_reg, r0, offset); + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + + /* movswX data_reg, data_reg */ + tcg_out_modrm(s, 0xbf | P_EXT | rexw, data_reg, data_reg); + } else { + /* movswX */ + tcg_out_modrm_offset(s, 0xbf | P_EXT | rexw, data_reg, r0, offset); + } + break; + case 2: + /* movl (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, offset); + if (bswap) { + /* bswap */ + tcg_out_opc(s, (0xc8 + (data_reg & 7)) | P_EXT, 0, data_reg, 0); + } + break; + case 2 | 4: + if (bswap) { + /* movl (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, offset); + /* bswap */ + tcg_out_opc(s, (0xc8 + (data_reg & 7)) | P_EXT, 0, data_reg, 0); + /* movslq */ + tcg_out_modrm(s, 0x63 | P_REXW, data_reg, data_reg); + } else { + /* movslq */ + tcg_out_modrm_offset(s, 0x63 | P_REXW, data_reg, r0, offset); + } + break; + case 3: + /* movq (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b | P_REXW, data_reg, r0, offset); + if (bswap) { + /* bswap */ + tcg_out_opc(s, (0xc8 + (data_reg & 7)) | P_EXT | P_REXW, 0, data_reg, 0); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, r0, r1, mem_index, s_bits, bswap, rexw; + int32_t offset; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + + s_bits = opc; + + r0 = TCG_REG_RDI; + r1 = TCG_REG_RSI; + +#if TARGET_LONG_BITS == 32 + rexw = 0; +#else + rexw = P_REXW; +#endif +#if defined(CONFIG_SOFTMMU) + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r1, addr_reg); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + tcg_out_modrm(s, 0xc1 | rexw, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81 | rexw, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* lea offset(r1, env), r1 */ + tcg_out_modrm_offset2(s, 0x8d | P_REXW, r1, r1, TCG_AREG0, 0, + offsetof(CPUState, tlb_table[mem_index][0].addr_write)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b | rexw, r0, r1, 0); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* XXX: move that code at the end of the TB */ + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXB_RM, TCG_REG_RSI, data_reg); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, TCG_REG_RSI, data_reg); + break; + case 2: + /* movl */ + tcg_out_modrm(s, 0x8b, TCG_REG_RSI, data_reg); + break; + default: + case 3: + tcg_out_mov(s, TCG_REG_RSI, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_RDX, mem_index); + tcg_out_goto(s, 1, qemu_st_helpers[s_bits]); + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03 | P_REXW, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_write)); + offset = 0; +#else + if (GUEST_BASE == (int32_t)GUEST_BASE) { + r0 = addr_reg; + offset = GUEST_BASE; + } else { + offset = 0; + /* movq $GUEST_BASE, r0 */ + tcg_out_opc(s, (0xb8 + (r0 & 7)) | P_REXW, 0, r0, 0); + tcg_out32(s, GUEST_BASE); + tcg_out32(s, GUEST_BASE >> 32); + /* addq addr_reg, r0 */ + tcg_out_modrm(s, 0x01 | P_REXW, addr_reg, r0); + } +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movb */ + tcg_out_modrm_offset(s, 0x88 | P_REXB_R, data_reg, r0, offset); + break; + case 1: + if (bswap) { + tcg_out_modrm(s, 0x8b, r1, data_reg); /* movl */ + tcg_out8(s, 0x66); /* rolw $8, %ecx */ + tcg_out_modrm(s, 0xc1, 0, r1); + tcg_out8(s, 8); + data_reg = r1; + } + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, data_reg, r0, offset); + break; + case 2: + if (bswap) { + tcg_out_modrm(s, 0x8b, r1, data_reg); /* movl */ + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT, 0, r1, 0); + data_reg = r1; + } + /* movl */ + tcg_out_modrm_offset(s, 0x89, data_reg, r0, offset); + break; + case 3: + if (bswap) { + tcg_out_mov(s, r1, data_reg); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT | P_REXW, 0, r1, 0); + data_reg = r1; + } + /* movq */ + tcg_out_modrm_offset(s, 0x89 | P_REXW, data_reg, r0, offset); + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch(opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_RAX, args[0]); + tcg_out_goto(s, 0, tb_ret_addr); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_out8(s, 0xe9); /* jmp im */ + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out32(s, 0); + } else { + /* indirect jump method */ + /* jmp Ev */ + tcg_out_modrm_offset(s, 0xff, 4, -1, + (tcg_target_long)(s->tb_next + + args[0])); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) { + tcg_out_goto(s, 1, (void *) args[0]); + } else { + tcg_out_modrm(s, 0xff, 2, args[0]); + } + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out_goto(s, 0, (void *) args[0]); + } else { + tcg_out_modrm(s, 0xff, 4, args[0]); + } + break; + case INDEX_op_br: + tcg_out_jxx(s, JCC_JMP, args[0]); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], (uint32_t)args[1]); + break; + case INDEX_op_movi_i64: + tcg_out_movi(s, TCG_TYPE_I64, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + case INDEX_op_ld8u_i64: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + /* movsbl */ + tcg_out_modrm_offset(s, 0xbe | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i64: + /* movsbq */ + tcg_out_modrm_offset(s, 0xbe | P_EXT | P_REXW, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + case INDEX_op_ld16u_i64: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + /* movswl */ + tcg_out_modrm_offset(s, 0xbf | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i64: + /* movswq */ + tcg_out_modrm_offset(s, 0xbf | P_EXT | P_REXW, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + case INDEX_op_ld32u_i64: + /* movl */ + tcg_out_modrm_offset(s, 0x8b, args[0], args[1], args[2]); + break; + case INDEX_op_ld32s_i64: + /* movslq */ + tcg_out_modrm_offset(s, 0x63 | P_REXW, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i64: + /* movq */ + tcg_out_modrm_offset(s, 0x8b | P_REXW, args[0], args[1], args[2]); + break; + + case INDEX_op_st8_i32: + case INDEX_op_st8_i64: + /* movb */ + tcg_out_modrm_offset(s, 0x88 | P_REXB_R, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + case INDEX_op_st16_i64: + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + case INDEX_op_st32_i64: + /* movl */ + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_st_i64: + /* movq */ + tcg_out_modrm_offset(s, 0x89 | P_REXW, args[0], args[1], args[2]); + break; + + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith32; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith32; + case INDEX_op_or_i32: + c = ARITH_OR; + goto gen_arith32; + case INDEX_op_xor_i32: + c = ARITH_XOR; + goto gen_arith32; + case INDEX_op_add_i32: + c = ARITH_ADD; + gen_arith32: + if (const_args[2]) { + tgen_arithi32(s, c, args[0], args[2]); + } else { + tcg_out_modrm(s, 0x01 | (c << 3), args[2], args[0]); + } + break; + + case INDEX_op_sub_i64: + c = ARITH_SUB; + goto gen_arith64; + case INDEX_op_and_i64: + c = ARITH_AND; + goto gen_arith64; + case INDEX_op_or_i64: + c = ARITH_OR; + goto gen_arith64; + case INDEX_op_xor_i64: + c = ARITH_XOR; + goto gen_arith64; + case INDEX_op_add_i64: + c = ARITH_ADD; + gen_arith64: + if (const_args[2]) { + tgen_arithi64(s, c, args[0], args[2]); + } else { + tcg_out_modrm(s, 0x01 | (c << 3) | P_REXW, args[2], args[0]); + } + break; + + case INDEX_op_mul_i32: + if (const_args[2]) { + int32_t val; + val = args[2]; + if (val == (int8_t)val) { + tcg_out_modrm(s, 0x6b, args[0], args[0]); + tcg_out8(s, val); + } else { + tcg_out_modrm(s, 0x69, args[0], args[0]); + tcg_out32(s, val); + } + } else { + tcg_out_modrm(s, 0xaf | P_EXT, args[0], args[2]); + } + break; + case INDEX_op_mul_i64: + if (const_args[2]) { + int32_t val; + val = args[2]; + if (val == (int8_t)val) { + tcg_out_modrm(s, 0x6b | P_REXW, args[0], args[0]); + tcg_out8(s, val); + } else { + tcg_out_modrm(s, 0x69 | P_REXW, args[0], args[0]); + tcg_out32(s, val); + } + } else { + tcg_out_modrm(s, 0xaf | P_EXT | P_REXW, args[0], args[2]); + } + break; + case INDEX_op_div2_i32: + tcg_out_modrm(s, 0xf7, 7, args[4]); + break; + case INDEX_op_divu2_i32: + tcg_out_modrm(s, 0xf7, 6, args[4]); + break; + case INDEX_op_div2_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 7, args[4]); + break; + case INDEX_op_divu2_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 6, args[4]); + break; + + case INDEX_op_shl_i32: + c = SHIFT_SHL; + gen_shift32: + if (const_args[2]) { + if (args[2] == 1) { + tcg_out_modrm(s, 0xd1, c, args[0]); + } else { + tcg_out_modrm(s, 0xc1, c, args[0]); + tcg_out8(s, args[2]); + } + } else { + tcg_out_modrm(s, 0xd3, c, args[0]); + } + break; + case INDEX_op_shr_i32: + c = SHIFT_SHR; + goto gen_shift32; + case INDEX_op_sar_i32: + c = SHIFT_SAR; + goto gen_shift32; + case INDEX_op_rotl_i32: + c = SHIFT_ROL; + goto gen_shift32; + case INDEX_op_rotr_i32: + c = SHIFT_ROR; + goto gen_shift32; + + case INDEX_op_shl_i64: + c = SHIFT_SHL; + gen_shift64: + if (const_args[2]) { + if (args[2] == 1) { + tcg_out_modrm(s, 0xd1 | P_REXW, c, args[0]); + } else { + tcg_out_modrm(s, 0xc1 | P_REXW, c, args[0]); + tcg_out8(s, args[2]); + } + } else { + tcg_out_modrm(s, 0xd3 | P_REXW, c, args[0]); + } + break; + case INDEX_op_shr_i64: + c = SHIFT_SHR; + goto gen_shift64; + case INDEX_op_sar_i64: + c = SHIFT_SAR; + goto gen_shift64; + case INDEX_op_rotl_i64: + c = SHIFT_ROL; + goto gen_shift64; + case INDEX_op_rotr_i64: + c = SHIFT_ROR; + goto gen_shift64; + + case INDEX_op_brcond_i32: + tcg_out_brcond(s, args[2], args[0], args[1], const_args[1], + args[3], 0); + break; + case INDEX_op_brcond_i64: + tcg_out_brcond(s, args[2], args[0], args[1], const_args[1], + args[3], P_REXW); + break; + + case INDEX_op_bswap16_i32: + case INDEX_op_bswap16_i64: + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, SHIFT_ROL, args[0]); + tcg_out8(s, 8); + break; + case INDEX_op_bswap32_i32: + case INDEX_op_bswap32_i64: + tcg_out_opc(s, (0xc8 + (args[0] & 7)) | P_EXT, 0, args[0], 0); + break; + case INDEX_op_bswap64_i64: + tcg_out_opc(s, (0xc8 + (args[0] & 7)) | P_EXT | P_REXW, 0, args[0], 0); + break; + + case INDEX_op_neg_i32: + tcg_out_modrm(s, 0xf7, 3, args[0]); + break; + case INDEX_op_neg_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 3, args[0]); + break; + + case INDEX_op_not_i32: + tcg_out_modrm(s, 0xf7, 2, args[0]); + break; + case INDEX_op_not_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 2, args[0]); + break; + + case INDEX_op_ext8s_i32: + tcg_out_modrm(s, 0xbe | P_EXT | P_REXB_RM, args[0], args[1]); + break; + case INDEX_op_ext16s_i32: + tcg_out_modrm(s, 0xbf | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext8s_i64: + tcg_out_modrm(s, 0xbe | P_EXT | P_REXW, args[0], args[1]); + break; + case INDEX_op_ext16s_i64: + tcg_out_modrm(s, 0xbf | P_EXT | P_REXW, args[0], args[1]); + break; + case INDEX_op_ext32s_i64: + tcg_out_modrm(s, 0x63 | P_REXW, args[0], args[1]); + break; + case INDEX_op_ext8u_i32: + case INDEX_op_ext8u_i64: + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXB_RM, args[0], args[1]); + break; + case INDEX_op_ext16u_i32: + case INDEX_op_ext16u_i64: + tcg_out_modrm(s, 0xb7 | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext32u_i64: + tcg_out_modrm(s, 0x8b, args[0], args[1]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld32s: + tcg_out_qemu_ld(s, args, 2 | 4); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + default: + tcg_abort(); + } +} + +static int tcg_target_callee_save_regs[] = { + TCG_REG_RBP, + TCG_REG_RBX, + TCG_REG_R12, + TCG_REG_R13, + /* TCG_REG_R14, */ /* currently used for the global env, so no + need to save */ + TCG_REG_R15, +}; + +static inline void tcg_out_push(TCGContext *s, int reg) +{ + tcg_out_opc(s, (0x50 + (reg & 7)), 0, reg, 0); +} + +static inline void tcg_out_pop(TCGContext *s, int reg) +{ + tcg_out_opc(s, (0x58 + (reg & 7)), 0, reg, 0); +} + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + int i, frame_size, push_size, stack_addend; + + /* TB prologue */ + /* save all callee saved registers */ + for(i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_push(s, tcg_target_callee_save_regs[i]); + + } + /* reserve some stack space */ + push_size = 8 + ARRAY_SIZE(tcg_target_callee_save_regs) * 8; + frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + stack_addend = frame_size - push_size; + tcg_out_addi(s, TCG_REG_RSP, -stack_addend); + + tcg_out_modrm(s, 0xff, 4, TCG_REG_RDI); /* jmp *%rdi */ + + /* TB epilogue */ + tb_ret_addr = s->code_ptr; + tcg_out_addi(s, TCG_REG_RSP, stack_addend); + for(i = ARRAY_SIZE(tcg_target_callee_save_regs) - 1; i >= 0; i--) { + tcg_out_pop(s, tcg_target_callee_save_regs[i]); + } + tcg_out8(s, 0xc3); /* ret */ +} + +static const TCGTargetOpDef x86_64_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, /* XXX: might need a specific constant constraint */ + { INDEX_op_jmp, { "ri" } }, /* XXX: might need a specific constant constraint */ + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "0", "ri" } }, + { INDEX_op_mul_i32, { "r", "0", "ri" } }, + { INDEX_op_div2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_divu2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_sub_i32, { "r", "0", "ri" } }, + { INDEX_op_and_i32, { "r", "0", "ri" } }, + { INDEX_op_or_i32, { "r", "0", "ri" } }, + { INDEX_op_xor_i32, { "r", "0", "ri" } }, + + { INDEX_op_shl_i32, { "r", "0", "ci" } }, + { INDEX_op_shr_i32, { "r", "0", "ci" } }, + { INDEX_op_sar_i32, { "r", "0", "ci" } }, + { INDEX_op_rotl_i32, { "r", "0", "ci" } }, + { INDEX_op_rotr_i32, { "r", "0", "ci" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + + { INDEX_op_mov_i64, { "r", "r" } }, + { INDEX_op_movi_i64, { "r" } }, + { INDEX_op_ld8u_i64, { "r", "r" } }, + { INDEX_op_ld8s_i64, { "r", "r" } }, + { INDEX_op_ld16u_i64, { "r", "r" } }, + { INDEX_op_ld16s_i64, { "r", "r" } }, + { INDEX_op_ld32u_i64, { "r", "r" } }, + { INDEX_op_ld32s_i64, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + { INDEX_op_st8_i64, { "r", "r" } }, + { INDEX_op_st16_i64, { "r", "r" } }, + { INDEX_op_st32_i64, { "r", "r" } }, + { INDEX_op_st_i64, { "r", "r" } }, + + { INDEX_op_add_i64, { "r", "0", "re" } }, + { INDEX_op_mul_i64, { "r", "0", "re" } }, + { INDEX_op_div2_i64, { "a", "d", "0", "1", "r" } }, + { INDEX_op_divu2_i64, { "a", "d", "0", "1", "r" } }, + { INDEX_op_sub_i64, { "r", "0", "re" } }, + { INDEX_op_and_i64, { "r", "0", "reZ" } }, + { INDEX_op_or_i64, { "r", "0", "re" } }, + { INDEX_op_xor_i64, { "r", "0", "re" } }, + + { INDEX_op_shl_i64, { "r", "0", "ci" } }, + { INDEX_op_shr_i64, { "r", "0", "ci" } }, + { INDEX_op_sar_i64, { "r", "0", "ci" } }, + { INDEX_op_rotl_i64, { "r", "0", "ci" } }, + { INDEX_op_rotr_i64, { "r", "0", "ci" } }, + + { INDEX_op_brcond_i64, { "r", "re" } }, + + { INDEX_op_bswap16_i32, { "r", "0" } }, + { INDEX_op_bswap16_i64, { "r", "0" } }, + { INDEX_op_bswap32_i32, { "r", "0" } }, + { INDEX_op_bswap32_i64, { "r", "0" } }, + { INDEX_op_bswap64_i64, { "r", "0" } }, + + { INDEX_op_neg_i32, { "r", "0" } }, + { INDEX_op_neg_i64, { "r", "0" } }, + + { INDEX_op_not_i32, { "r", "0" } }, + { INDEX_op_not_i64, { "r", "0" } }, + + { INDEX_op_ext8s_i32, { "r", "r"} }, + { INDEX_op_ext16s_i32, { "r", "r"} }, + { INDEX_op_ext8s_i64, { "r", "r"} }, + { INDEX_op_ext16s_i64, { "r", "r"} }, + { INDEX_op_ext32s_i64, { "r", "r"} }, + { INDEX_op_ext8u_i32, { "r", "r"} }, + { INDEX_op_ext16u_i32, { "r", "r"} }, + { INDEX_op_ext8u_i64, { "r", "r"} }, + { INDEX_op_ext16u_i64, { "r", "r"} }, + { INDEX_op_ext32u_i64, { "r", "r"} }, + + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L" } }, + + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + /* fail safe */ + if ((1 << CPU_TLB_ENTRY_BITS) != sizeof(CPUTLBEntry)) + tcg_abort(); + + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffff); + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_RDI) | + (1 << TCG_REG_RSI) | + (1 << TCG_REG_RDX) | + (1 << TCG_REG_RCX) | + (1 << TCG_REG_R8) | + (1 << TCG_REG_R9) | + (1 << TCG_REG_RAX) | + (1 << TCG_REG_R10) | + (1 << TCG_REG_R11)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_RSP); + + tcg_add_target_add_op_defs(x86_64_op_defs); +} diff --git a/qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.h.svn-base b/qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.h.svn-base new file mode 100644 index 0000000..3ca392f --- /dev/null +++ b/qemu/qemu-git/tcg/x86_64/.svn/text-base/tcg-target.h.svn-base @@ -0,0 +1,91 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_X86_64 1 + +#define TCG_TARGET_REG_BITS 64 +//#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 16 + +enum { + TCG_REG_RAX = 0, + TCG_REG_RCX, + TCG_REG_RDX, + TCG_REG_RBX, + TCG_REG_RSP, + TCG_REG_RBP, + TCG_REG_RSI, + TCG_REG_RDI, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, +}; + +#define TCG_CT_CONST_S32 0x100 +#define TCG_CT_CONST_U32 0x200 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_RSP +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +/* optional instructions */ +#define TCG_TARGET_HAS_bswap16_i32 +#define TCG_TARGET_HAS_bswap16_i64 +#define TCG_TARGET_HAS_bswap32_i32 +#define TCG_TARGET_HAS_bswap32_i64 +#define TCG_TARGET_HAS_bswap64_i64 +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_neg_i64 +#define TCG_TARGET_HAS_not_i32 +#define TCG_TARGET_HAS_not_i64 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_ext8s_i64 +#define TCG_TARGET_HAS_ext16s_i64 +#define TCG_TARGET_HAS_ext32s_i64 +#define TCG_TARGET_HAS_ext8u_i32 +#define TCG_TARGET_HAS_ext16u_i32 +#define TCG_TARGET_HAS_ext8u_i64 +#define TCG_TARGET_HAS_ext16u_i64 +#define TCG_TARGET_HAS_ext32u_i64 + +#define TCG_TARGET_HAS_rot_i32 +#define TCG_TARGET_HAS_rot_i64 + +#define TCG_TARGET_HAS_GUEST_BASE + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_R14 +#define TCG_AREG1 TCG_REG_R15 +#define TCG_AREG2 TCG_REG_R12 + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +} diff --git a/qemu/qemu-git/tcg/x86_64/tcg-target.c b/qemu/qemu-git/tcg/x86_64/tcg-target.c new file mode 100644 index 0000000..cbaabef --- /dev/null +++ b/qemu/qemu-git/tcg/x86_64/tcg-target.c @@ -0,0 +1,1422 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef NDEBUG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "%rax", + "%rcx", + "%rdx", + "%rbx", + "%rsp", + "%rbp", + "%rsi", + "%rdi", + "%r8", + "%r9", + "%r10", + "%r11", + "%r12", + "%r13", + "%r14", + "%r15", +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + TCG_REG_RBP, + TCG_REG_RBX, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R9, + TCG_REG_R8, + TCG_REG_RCX, + TCG_REG_RDX, + TCG_REG_RSI, + TCG_REG_RDI, + TCG_REG_RAX, +}; + +static const int tcg_target_call_iarg_regs[6] = { + TCG_REG_RDI, + TCG_REG_RSI, + TCG_REG_RDX, + TCG_REG_RCX, + TCG_REG_R8, + TCG_REG_R9, +}; + +static const int tcg_target_call_oarg_regs[2] = { + TCG_REG_RAX, + TCG_REG_RDX +}; + +static uint8_t *tb_ret_addr; + +static void patch_reloc(uint8_t *code_ptr, int type, + tcg_target_long value, tcg_target_long addend) +{ + value += addend; + switch(type) { + case R_X86_64_32: + if (value != (uint32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + case R_X86_64_32S: + if (value != (int32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + case R_386_PC32: + value -= (long)code_ptr; + if (value != (int32_t)value) + tcg_abort(); + *(uint32_t *)code_ptr = value; + break; + default: + tcg_abort(); + } +} + +/* maximum number of register used for input function arguments */ +static inline int tcg_target_get_call_iarg_regs_count(int flags) +{ + return 6; +} + +/* parse target specific constraints */ +static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str) +{ + const char *ct_str; + + ct_str = *pct_str; + switch(ct_str[0]) { + case 'a': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RAX); + break; + case 'b': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RBX); + break; + case 'c': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RCX); + break; + case 'd': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RDX); + break; + case 'S': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RSI); + break; + case 'D': + ct->ct |= TCG_CT_REG; + tcg_regset_set_reg(ct->u.regs, TCG_REG_RDI); + break; + case 'q': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xf); + break; + case 'r': + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffff); + break; + case 'L': /* qemu_ld/st constraint */ + ct->ct |= TCG_CT_REG; + tcg_regset_set32(ct->u.regs, 0, 0xffff); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_RSI); + tcg_regset_reset_reg(ct->u.regs, TCG_REG_RDI); + break; + case 'e': + ct->ct |= TCG_CT_CONST_S32; + break; + case 'Z': + ct->ct |= TCG_CT_CONST_U32; + break; + default: + return -1; + } + ct_str++; + *pct_str = ct_str; + return 0; +} + +/* test if a constant matches the constraint */ +static inline int tcg_target_const_match(tcg_target_long val, + const TCGArgConstraint *arg_ct) +{ + int ct; + ct = arg_ct->ct; + if (ct & TCG_CT_CONST) + return 1; + else if ((ct & TCG_CT_CONST_S32) && val == (int32_t)val) + return 1; + else if ((ct & TCG_CT_CONST_U32) && val == (uint32_t)val) + return 1; + else + return 0; +} + +#define ARITH_ADD 0 +#define ARITH_OR 1 +#define ARITH_ADC 2 +#define ARITH_SBB 3 +#define ARITH_AND 4 +#define ARITH_SUB 5 +#define ARITH_XOR 6 +#define ARITH_CMP 7 + +#define SHIFT_ROL 0 +#define SHIFT_ROR 1 +#define SHIFT_SHL 4 +#define SHIFT_SHR 5 +#define SHIFT_SAR 7 + +#define JCC_JMP (-1) +#define JCC_JO 0x0 +#define JCC_JNO 0x1 +#define JCC_JB 0x2 +#define JCC_JAE 0x3 +#define JCC_JE 0x4 +#define JCC_JNE 0x5 +#define JCC_JBE 0x6 +#define JCC_JA 0x7 +#define JCC_JS 0x8 +#define JCC_JNS 0x9 +#define JCC_JP 0xa +#define JCC_JNP 0xb +#define JCC_JL 0xc +#define JCC_JGE 0xd +#define JCC_JLE 0xe +#define JCC_JG 0xf + +#define P_EXT 0x100 /* 0x0f opcode prefix */ +#define P_REXW 0x200 /* set rex.w = 1 */ +#define P_REXB_R 0x400 /* REG field as byte register */ +#define P_REXB_RM 0x800 /* R/M field as byte register */ + +static const uint8_t tcg_cond_to_jcc[10] = { + [TCG_COND_EQ] = JCC_JE, + [TCG_COND_NE] = JCC_JNE, + [TCG_COND_LT] = JCC_JL, + [TCG_COND_GE] = JCC_JGE, + [TCG_COND_LE] = JCC_JLE, + [TCG_COND_GT] = JCC_JG, + [TCG_COND_LTU] = JCC_JB, + [TCG_COND_GEU] = JCC_JAE, + [TCG_COND_LEU] = JCC_JBE, + [TCG_COND_GTU] = JCC_JA, +}; + +static void tcg_out_opc(TCGContext *s, int opc, int r, int rm, int x) +{ + int rex = 0; + + rex |= (opc & P_REXW) >> 6; /* REX.W */ + rex |= (r & 8) >> 1; /* REX.R */ + rex |= (x & 8) >> 2; /* REX.X */ + rex |= (rm & 8) >> 3; /* REX.B */ + + /* P_REXB_{R,RM} indicates that the given register is the low byte. + For %[abcd]l we need no REX prefix, but for %{si,di,bp,sp}l we do, + as otherwise the encoding indicates %[abcd]h. Note that the values + that are ORed in merely indicate that the REX byte must be present; + those bits get discarded in output. */ + rex |= opc & (r >= 4 ? P_REXB_R : 0); + rex |= opc & (rm >= 4 ? P_REXB_RM : 0); + + if (rex) { + tcg_out8(s, (uint8_t)(rex | 0x40)); + } + if (opc & P_EXT) { + tcg_out8(s, 0x0f); + } + tcg_out8(s, opc & 0xff); +} + +static inline void tcg_out_modrm(TCGContext *s, int opc, int r, int rm) +{ + tcg_out_opc(s, opc, r, rm, 0); + tcg_out8(s, 0xc0 | ((r & 7) << 3) | (rm & 7)); +} + +/* rm < 0 means no register index plus (-rm - 1 immediate bytes) */ +static inline void tcg_out_modrm_offset(TCGContext *s, int opc, int r, int rm, + tcg_target_long offset) +{ + if (rm < 0) { + tcg_target_long val; + tcg_out_opc(s, opc, r, 0, 0); + val = offset - ((tcg_target_long)s->code_ptr + 5 + (-rm - 1)); + if (val == (int32_t)val) { + /* eip relative */ + tcg_out8(s, 0x05 | ((r & 7) << 3)); + tcg_out32(s, val); + } else if (offset == (int32_t)offset) { + tcg_out8(s, 0x04 | ((r & 7) << 3)); + tcg_out8(s, 0x25); /* sib */ + tcg_out32(s, offset); + } else { + tcg_abort(); + } + } else if (offset == 0 && (rm & 7) != TCG_REG_RBP) { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, 0x04 | ((r & 7) << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x00 | ((r & 7) << 3) | (rm & 7)); + } + } else if ((int8_t)offset == offset) { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, 0x44 | ((r & 7) << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x40 | ((r & 7) << 3) | (rm & 7)); + } + tcg_out8(s, offset); + } else { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, 0x84 | ((r & 7) << 3)); + tcg_out8(s, 0x24); + } else { + tcg_out8(s, 0x80 | ((r & 7) << 3) | (rm & 7)); + } + tcg_out32(s, offset); + } +} + +#if defined(CONFIG_SOFTMMU) +/* XXX: incomplete. index must be different from ESP */ +static void tcg_out_modrm_offset2(TCGContext *s, int opc, int r, int rm, + int index, int shift, + tcg_target_long offset) +{ + int mod; + if (rm == -1) + tcg_abort(); + if (offset == 0 && (rm & 7) != TCG_REG_RBP) { + mod = 0; + } else if (offset == (int8_t)offset) { + mod = 0x40; + } else if (offset == (int32_t)offset) { + mod = 0x80; + } else { + tcg_abort(); + } + if (index == -1) { + tcg_out_opc(s, opc, r, rm, 0); + if ((rm & 7) == TCG_REG_RSP) { + tcg_out8(s, mod | ((r & 7) << 3) | 0x04); + tcg_out8(s, 0x04 | (rm & 7)); + } else { + tcg_out8(s, mod | ((r & 7) << 3) | (rm & 7)); + } + } else { + tcg_out_opc(s, opc, r, rm, index); + tcg_out8(s, mod | ((r & 7) << 3) | 0x04); + tcg_out8(s, (shift << 6) | ((index & 7) << 3) | (rm & 7)); + } + if (mod == 0x40) { + tcg_out8(s, offset); + } else if (mod == 0x80) { + tcg_out32(s, offset); + } +} +#endif + +static inline void tcg_out_mov(TCGContext *s, int ret, int arg) +{ + tcg_out_modrm(s, 0x8b | P_REXW, ret, arg); +} + +static inline void tcg_out_movi(TCGContext *s, TCGType type, + int ret, tcg_target_long arg) +{ + if (arg == 0) { + tcg_out_modrm(s, 0x01 | (ARITH_XOR << 3), ret, ret); /* xor r0,r0 */ + } else if (arg == (uint32_t)arg || type == TCG_TYPE_I32) { + tcg_out_opc(s, 0xb8 + (ret & 7), 0, ret, 0); + tcg_out32(s, arg); + } else if (arg == (int32_t)arg) { + tcg_out_modrm(s, 0xc7 | P_REXW, 0, ret); + tcg_out32(s, arg); + } else { + tcg_out_opc(s, (0xb8 + (ret & 7)) | P_REXW, 0, ret, 0); + tcg_out32(s, arg); + tcg_out32(s, arg >> 32); + } +} + +static void tcg_out_goto(TCGContext *s, int call, uint8_t *target) +{ + int32_t disp; + + disp = target - s->code_ptr - 5; + if (disp == (target - s->code_ptr - 5)) { + tcg_out8(s, call ? 0xe8 : 0xe9); + tcg_out32(s, disp); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R10, (tcg_target_long) target); + tcg_out_modrm(s, 0xff, call ? 2 : 4, TCG_REG_R10); + } +} + +static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_modrm_offset(s, 0x8b, ret, arg1, arg2); /* movl */ + else + tcg_out_modrm_offset(s, 0x8b | P_REXW, ret, arg1, arg2); /* movq */ +} + +static inline void tcg_out_st(TCGContext *s, TCGType type, int arg, + int arg1, tcg_target_long arg2) +{ + if (type == TCG_TYPE_I32) + tcg_out_modrm_offset(s, 0x89, arg, arg1, arg2); /* movl */ + else + tcg_out_modrm_offset(s, 0x89 | P_REXW, arg, arg1, arg2); /* movq */ +} + +static inline void tgen_arithi32(TCGContext *s, int c, int r0, int32_t val) +{ + if ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1)) { + /* inc */ + tcg_out_modrm(s, 0xff, 0, r0); + } else if ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1)) { + /* dec */ + tcg_out_modrm(s, 0xff, 1, r0); + } else if (val == (int8_t)val) { + tcg_out_modrm(s, 0x83, c, r0); + tcg_out8(s, val); + } else if (c == ARITH_AND && val == 0xffu) { + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXB_RM, r0, r0); + } else if (c == ARITH_AND && val == 0xffffu) { + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, r0, r0); + } else { + tcg_out_modrm(s, 0x81, c, r0); + tcg_out32(s, val); + } +} + +static inline void tgen_arithi64(TCGContext *s, int c, int r0, int64_t val) +{ + if ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1)) { + /* inc */ + tcg_out_modrm(s, 0xff | P_REXW, 0, r0); + } else if ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1)) { + /* dec */ + tcg_out_modrm(s, 0xff | P_REXW, 1, r0); + } else if (c == ARITH_AND && val == 0xffffffffu) { + /* 32-bit mov zero extends */ + tcg_out_modrm(s, 0x8b, r0, r0); + } else if (c == ARITH_AND && val == (uint32_t)val) { + /* AND with no high bits set can use a 32-bit operation. */ + tgen_arithi32(s, c, r0, (uint32_t)val); + } else if (val == (int8_t)val) { + tcg_out_modrm(s, 0x83 | P_REXW, c, r0); + tcg_out8(s, val); + } else if (val == (int32_t)val) { + tcg_out_modrm(s, 0x81 | P_REXW, c, r0); + tcg_out32(s, val); + } else { + tcg_abort(); + } +} + +static void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) +{ + if (val != 0) + tgen_arithi64(s, ARITH_ADD, reg, val); +} + +static void tcg_out_jxx(TCGContext *s, int opc, int label_index) +{ + int32_t val, val1; + TCGLabel *l = &s->labels[label_index]; + + if (l->has_value) { + val = l->u.value - (tcg_target_long)s->code_ptr; + val1 = val - 2; + if ((int8_t)val1 == val1) { + if (opc == -1) + tcg_out8(s, 0xeb); + else + tcg_out8(s, 0x70 + opc); + tcg_out8(s, val1); + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + tcg_out32(s, val - 5); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + tcg_out32(s, val - 6); + } + } + } else { + if (opc == -1) { + tcg_out8(s, 0xe9); + } else { + tcg_out8(s, 0x0f); + tcg_out8(s, 0x80 + opc); + } + tcg_out_reloc(s, s->code_ptr, R_386_PC32, label_index, -4); + s->code_ptr += 4; + } +} + +static void tcg_out_brcond(TCGContext *s, int cond, + TCGArg arg1, TCGArg arg2, int const_arg2, + int label_index, int rexw) +{ + if (const_arg2) { + if (arg2 == 0) { + /* test r, r */ + tcg_out_modrm(s, 0x85 | rexw, arg1, arg1); + } else { + if (rexw) + tgen_arithi64(s, ARITH_CMP, arg1, arg2); + else + tgen_arithi32(s, ARITH_CMP, arg1, arg2); + } + } else { + tcg_out_modrm(s, 0x01 | (ARITH_CMP << 3) | rexw, arg2, arg1); + } + tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index); +} + +#if defined(CONFIG_SOFTMMU) + +#include "../../softmmu_defs.h" + +static void *qemu_ld_helpers[4] = { + __ldb_mmu, + __ldw_mmu, + __ldl_mmu, + __ldq_mmu, +}; + +static void *qemu_st_helpers[4] = { + __stb_mmu, + __stw_mmu, + __stl_mmu, + __stq_mmu, +}; +#endif + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, r0, r1, mem_index, s_bits, bswap, rexw; + int32_t offset; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + s_bits = opc & 3; + + r0 = TCG_REG_RDI; + r1 = TCG_REG_RSI; + +#if TARGET_LONG_BITS == 32 + rexw = 0; +#else + rexw = P_REXW; +#endif +#if defined(CONFIG_SOFTMMU) + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r1, addr_reg); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + tcg_out_modrm(s, 0xc1 | rexw, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81 | rexw, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* lea offset(r1, env), r1 */ + tcg_out_modrm_offset2(s, 0x8d | P_REXW, r1, r1, TCG_AREG0, 0, + offsetof(CPUState, tlb_table[mem_index][0].addr_read)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b | rexw, r0, r1, 0); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* XXX: move that code at the end of the TB */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_RSI, mem_index); + tcg_out_goto(s, 1, qemu_ld_helpers[s_bits]); + + switch(opc) { + case 0 | 4: + /* movsbq */ + tcg_out_modrm(s, 0xbe | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 1 | 4: + /* movswq */ + tcg_out_modrm(s, 0xbf | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 2 | 4: + /* movslq */ + tcg_out_modrm(s, 0x63 | P_REXW, data_reg, TCG_REG_RAX); + break; + case 0: + /* movzbq */ + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 1: + /* movzwq */ + tcg_out_modrm(s, 0xb7 | P_EXT | P_REXW, data_reg, TCG_REG_RAX); + break; + case 2: + default: + /* movl */ + tcg_out_modrm(s, 0x8b, data_reg, TCG_REG_RAX); + break; + case 3: + tcg_out_mov(s, data_reg, TCG_REG_RAX); + break; + } + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03 | P_REXW, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_read)); + offset = 0; +#else + if (GUEST_BASE == (int32_t)GUEST_BASE) { + r0 = addr_reg; + offset = GUEST_BASE; + } else { + offset = 0; + /* movq $GUEST_BASE, r0 */ + tcg_out_opc(s, (0xb8 + (r0 & 7)) | P_REXW, 0, r0, 0); + tcg_out32(s, GUEST_BASE); + tcg_out32(s, GUEST_BASE >> 32); + /* addq addr_reg, r0 */ + tcg_out_modrm(s, 0x01 | P_REXW, addr_reg, r0); + } +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, data_reg, r0, offset); + break; + case 0 | 4: + /* movsbX */ + tcg_out_modrm_offset(s, 0xbe | P_EXT | rexw, data_reg, r0, offset); + break; + case 1: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, data_reg, r0, offset); + if (bswap) { + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + } + break; + case 1 | 4: + if (bswap) { + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, data_reg, r0, offset); + /* rolw $8, data_reg */ + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, 0, data_reg); + tcg_out8(s, 8); + + /* movswX data_reg, data_reg */ + tcg_out_modrm(s, 0xbf | P_EXT | rexw, data_reg, data_reg); + } else { + /* movswX */ + tcg_out_modrm_offset(s, 0xbf | P_EXT | rexw, data_reg, r0, offset); + } + break; + case 2: + /* movl (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, offset); + if (bswap) { + /* bswap */ + tcg_out_opc(s, (0xc8 + (data_reg & 7)) | P_EXT, 0, data_reg, 0); + } + break; + case 2 | 4: + if (bswap) { + /* movl (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b, data_reg, r0, offset); + /* bswap */ + tcg_out_opc(s, (0xc8 + (data_reg & 7)) | P_EXT, 0, data_reg, 0); + /* movslq */ + tcg_out_modrm(s, 0x63 | P_REXW, data_reg, data_reg); + } else { + /* movslq */ + tcg_out_modrm_offset(s, 0x63 | P_REXW, data_reg, r0, offset); + } + break; + case 3: + /* movq (r0), data_reg */ + tcg_out_modrm_offset(s, 0x8b | P_REXW, data_reg, r0, offset); + if (bswap) { + /* bswap */ + tcg_out_opc(s, (0xc8 + (data_reg & 7)) | P_EXT | P_REXW, 0, data_reg, 0); + } + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, + int opc) +{ + int addr_reg, data_reg, r0, r1, mem_index, s_bits, bswap, rexw; + int32_t offset; +#if defined(CONFIG_SOFTMMU) + uint8_t *label1_ptr, *label2_ptr; +#endif + + data_reg = *args++; + addr_reg = *args++; + mem_index = *args; + + s_bits = opc; + + r0 = TCG_REG_RDI; + r1 = TCG_REG_RSI; + +#if TARGET_LONG_BITS == 32 + rexw = 0; +#else + rexw = P_REXW; +#endif +#if defined(CONFIG_SOFTMMU) + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r1, addr_reg); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + tcg_out_modrm(s, 0xc1 | rexw, 5, r1); /* shr $x, r1 */ + tcg_out8(s, TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + + tcg_out_modrm(s, 0x81 | rexw, 4, r0); /* andl $x, r0 */ + tcg_out32(s, TARGET_PAGE_MASK | ((1 << s_bits) - 1)); + + tcg_out_modrm(s, 0x81, 4, r1); /* andl $x, r1 */ + tcg_out32(s, (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS); + + /* lea offset(r1, env), r1 */ + tcg_out_modrm_offset2(s, 0x8d | P_REXW, r1, r1, TCG_AREG0, 0, + offsetof(CPUState, tlb_table[mem_index][0].addr_write)); + + /* cmp 0(r1), r0 */ + tcg_out_modrm_offset(s, 0x3b | rexw, r0, r1, 0); + + /* mov */ + tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); + + /* je label1 */ + tcg_out8(s, 0x70 + JCC_JE); + label1_ptr = s->code_ptr; + s->code_ptr++; + + /* XXX: move that code at the end of the TB */ + switch(opc) { + case 0: + /* movzbl */ + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXB_RM, TCG_REG_RSI, data_reg); + break; + case 1: + /* movzwl */ + tcg_out_modrm(s, 0xb7 | P_EXT, TCG_REG_RSI, data_reg); + break; + case 2: + /* movl */ + tcg_out_modrm(s, 0x8b, TCG_REG_RSI, data_reg); + break; + default: + case 3: + tcg_out_mov(s, TCG_REG_RSI, data_reg); + break; + } + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_RDX, mem_index); + tcg_out_goto(s, 1, qemu_st_helpers[s_bits]); + + /* jmp label2 */ + tcg_out8(s, 0xeb); + label2_ptr = s->code_ptr; + s->code_ptr++; + + /* label1: */ + *label1_ptr = s->code_ptr - label1_ptr - 1; + + /* add x(r1), r0 */ + tcg_out_modrm_offset(s, 0x03 | P_REXW, r0, r1, offsetof(CPUTLBEntry, addend) - + offsetof(CPUTLBEntry, addr_write)); + offset = 0; +#else + if (GUEST_BASE == (int32_t)GUEST_BASE) { + r0 = addr_reg; + offset = GUEST_BASE; + } else { + offset = 0; + /* movq $GUEST_BASE, r0 */ + tcg_out_opc(s, (0xb8 + (r0 & 7)) | P_REXW, 0, r0, 0); + tcg_out32(s, GUEST_BASE); + tcg_out32(s, GUEST_BASE >> 32); + /* addq addr_reg, r0 */ + tcg_out_modrm(s, 0x01 | P_REXW, addr_reg, r0); + } +#endif + +#ifdef TARGET_WORDS_BIGENDIAN + bswap = 1; +#else + bswap = 0; +#endif + switch(opc) { + case 0: + /* movb */ + tcg_out_modrm_offset(s, 0x88 | P_REXB_R, data_reg, r0, offset); + break; + case 1: + if (bswap) { + tcg_out_modrm(s, 0x8b, r1, data_reg); /* movl */ + tcg_out8(s, 0x66); /* rolw $8, %ecx */ + tcg_out_modrm(s, 0xc1, 0, r1); + tcg_out8(s, 8); + data_reg = r1; + } + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, data_reg, r0, offset); + break; + case 2: + if (bswap) { + tcg_out_modrm(s, 0x8b, r1, data_reg); /* movl */ + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT, 0, r1, 0); + data_reg = r1; + } + /* movl */ + tcg_out_modrm_offset(s, 0x89, data_reg, r0, offset); + break; + case 3: + if (bswap) { + tcg_out_mov(s, r1, data_reg); + /* bswap data_reg */ + tcg_out_opc(s, (0xc8 + r1) | P_EXT | P_REXW, 0, r1, 0); + data_reg = r1; + } + /* movq */ + tcg_out_modrm_offset(s, 0x89 | P_REXW, data_reg, r0, offset); + break; + default: + tcg_abort(); + } + +#if defined(CONFIG_SOFTMMU) + /* label2: */ + *label2_ptr = s->code_ptr - label2_ptr - 1; +#endif +} + +static inline void tcg_out_op(TCGContext *s, int opc, const TCGArg *args, + const int *const_args) +{ + int c; + + switch(opc) { + case INDEX_op_exit_tb: + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_RAX, args[0]); + tcg_out_goto(s, 0, tb_ret_addr); + break; + case INDEX_op_goto_tb: + if (s->tb_jmp_offset) { + /* direct jump method */ + tcg_out8(s, 0xe9); /* jmp im */ + s->tb_jmp_offset[args[0]] = s->code_ptr - s->code_buf; + tcg_out32(s, 0); + } else { + /* indirect jump method */ + /* jmp Ev */ + tcg_out_modrm_offset(s, 0xff, 4, -1, + (tcg_target_long)(s->tb_next + + args[0])); + } + s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf; + break; + case INDEX_op_call: + if (const_args[0]) { + tcg_out_goto(s, 1, (void *) args[0]); + } else { + tcg_out_modrm(s, 0xff, 2, args[0]); + } + break; + case INDEX_op_jmp: + if (const_args[0]) { + tcg_out_goto(s, 0, (void *) args[0]); + } else { + tcg_out_modrm(s, 0xff, 4, args[0]); + } + break; + case INDEX_op_br: + tcg_out_jxx(s, JCC_JMP, args[0]); + break; + case INDEX_op_movi_i32: + tcg_out_movi(s, TCG_TYPE_I32, args[0], (uint32_t)args[1]); + break; + case INDEX_op_movi_i64: + tcg_out_movi(s, TCG_TYPE_I64, args[0], args[1]); + break; + case INDEX_op_ld8u_i32: + case INDEX_op_ld8u_i64: + /* movzbl */ + tcg_out_modrm_offset(s, 0xb6 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i32: + /* movsbl */ + tcg_out_modrm_offset(s, 0xbe | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld8s_i64: + /* movsbq */ + tcg_out_modrm_offset(s, 0xbe | P_EXT | P_REXW, args[0], args[1], args[2]); + break; + case INDEX_op_ld16u_i32: + case INDEX_op_ld16u_i64: + /* movzwl */ + tcg_out_modrm_offset(s, 0xb7 | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i32: + /* movswl */ + tcg_out_modrm_offset(s, 0xbf | P_EXT, args[0], args[1], args[2]); + break; + case INDEX_op_ld16s_i64: + /* movswq */ + tcg_out_modrm_offset(s, 0xbf | P_EXT | P_REXW, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i32: + case INDEX_op_ld32u_i64: + /* movl */ + tcg_out_modrm_offset(s, 0x8b, args[0], args[1], args[2]); + break; + case INDEX_op_ld32s_i64: + /* movslq */ + tcg_out_modrm_offset(s, 0x63 | P_REXW, args[0], args[1], args[2]); + break; + case INDEX_op_ld_i64: + /* movq */ + tcg_out_modrm_offset(s, 0x8b | P_REXW, args[0], args[1], args[2]); + break; + + case INDEX_op_st8_i32: + case INDEX_op_st8_i64: + /* movb */ + tcg_out_modrm_offset(s, 0x88 | P_REXB_R, args[0], args[1], args[2]); + break; + case INDEX_op_st16_i32: + case INDEX_op_st16_i64: + /* movw */ + tcg_out8(s, 0x66); + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_st_i32: + case INDEX_op_st32_i64: + /* movl */ + tcg_out_modrm_offset(s, 0x89, args[0], args[1], args[2]); + break; + case INDEX_op_st_i64: + /* movq */ + tcg_out_modrm_offset(s, 0x89 | P_REXW, args[0], args[1], args[2]); + break; + + case INDEX_op_sub_i32: + c = ARITH_SUB; + goto gen_arith32; + case INDEX_op_and_i32: + c = ARITH_AND; + goto gen_arith32; + case INDEX_op_or_i32: + c = ARITH_OR; + goto gen_arith32; + case INDEX_op_xor_i32: + c = ARITH_XOR; + goto gen_arith32; + case INDEX_op_add_i32: + c = ARITH_ADD; + gen_arith32: + if (const_args[2]) { + tgen_arithi32(s, c, args[0], args[2]); + } else { + tcg_out_modrm(s, 0x01 | (c << 3), args[2], args[0]); + } + break; + + case INDEX_op_sub_i64: + c = ARITH_SUB; + goto gen_arith64; + case INDEX_op_and_i64: + c = ARITH_AND; + goto gen_arith64; + case INDEX_op_or_i64: + c = ARITH_OR; + goto gen_arith64; + case INDEX_op_xor_i64: + c = ARITH_XOR; + goto gen_arith64; + case INDEX_op_add_i64: + c = ARITH_ADD; + gen_arith64: + if (const_args[2]) { + tgen_arithi64(s, c, args[0], args[2]); + } else { + tcg_out_modrm(s, 0x01 | (c << 3) | P_REXW, args[2], args[0]); + } + break; + + case INDEX_op_mul_i32: + if (const_args[2]) { + int32_t val; + val = args[2]; + if (val == (int8_t)val) { + tcg_out_modrm(s, 0x6b, args[0], args[0]); + tcg_out8(s, val); + } else { + tcg_out_modrm(s, 0x69, args[0], args[0]); + tcg_out32(s, val); + } + } else { + tcg_out_modrm(s, 0xaf | P_EXT, args[0], args[2]); + } + break; + case INDEX_op_mul_i64: + if (const_args[2]) { + int32_t val; + val = args[2]; + if (val == (int8_t)val) { + tcg_out_modrm(s, 0x6b | P_REXW, args[0], args[0]); + tcg_out8(s, val); + } else { + tcg_out_modrm(s, 0x69 | P_REXW, args[0], args[0]); + tcg_out32(s, val); + } + } else { + tcg_out_modrm(s, 0xaf | P_EXT | P_REXW, args[0], args[2]); + } + break; + case INDEX_op_div2_i32: + tcg_out_modrm(s, 0xf7, 7, args[4]); + break; + case INDEX_op_divu2_i32: + tcg_out_modrm(s, 0xf7, 6, args[4]); + break; + case INDEX_op_div2_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 7, args[4]); + break; + case INDEX_op_divu2_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 6, args[4]); + break; + + case INDEX_op_shl_i32: + c = SHIFT_SHL; + gen_shift32: + if (const_args[2]) { + if (args[2] == 1) { + tcg_out_modrm(s, 0xd1, c, args[0]); + } else { + tcg_out_modrm(s, 0xc1, c, args[0]); + tcg_out8(s, args[2]); + } + } else { + tcg_out_modrm(s, 0xd3, c, args[0]); + } + break; + case INDEX_op_shr_i32: + c = SHIFT_SHR; + goto gen_shift32; + case INDEX_op_sar_i32: + c = SHIFT_SAR; + goto gen_shift32; + case INDEX_op_rotl_i32: + c = SHIFT_ROL; + goto gen_shift32; + case INDEX_op_rotr_i32: + c = SHIFT_ROR; + goto gen_shift32; + + case INDEX_op_shl_i64: + c = SHIFT_SHL; + gen_shift64: + if (const_args[2]) { + if (args[2] == 1) { + tcg_out_modrm(s, 0xd1 | P_REXW, c, args[0]); + } else { + tcg_out_modrm(s, 0xc1 | P_REXW, c, args[0]); + tcg_out8(s, args[2]); + } + } else { + tcg_out_modrm(s, 0xd3 | P_REXW, c, args[0]); + } + break; + case INDEX_op_shr_i64: + c = SHIFT_SHR; + goto gen_shift64; + case INDEX_op_sar_i64: + c = SHIFT_SAR; + goto gen_shift64; + case INDEX_op_rotl_i64: + c = SHIFT_ROL; + goto gen_shift64; + case INDEX_op_rotr_i64: + c = SHIFT_ROR; + goto gen_shift64; + + case INDEX_op_brcond_i32: + tcg_out_brcond(s, args[2], args[0], args[1], const_args[1], + args[3], 0); + break; + case INDEX_op_brcond_i64: + tcg_out_brcond(s, args[2], args[0], args[1], const_args[1], + args[3], P_REXW); + break; + + case INDEX_op_bswap16_i32: + case INDEX_op_bswap16_i64: + tcg_out8(s, 0x66); + tcg_out_modrm(s, 0xc1, SHIFT_ROL, args[0]); + tcg_out8(s, 8); + break; + case INDEX_op_bswap32_i32: + case INDEX_op_bswap32_i64: + tcg_out_opc(s, (0xc8 + (args[0] & 7)) | P_EXT, 0, args[0], 0); + break; + case INDEX_op_bswap64_i64: + tcg_out_opc(s, (0xc8 + (args[0] & 7)) | P_EXT | P_REXW, 0, args[0], 0); + break; + + case INDEX_op_neg_i32: + tcg_out_modrm(s, 0xf7, 3, args[0]); + break; + case INDEX_op_neg_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 3, args[0]); + break; + + case INDEX_op_not_i32: + tcg_out_modrm(s, 0xf7, 2, args[0]); + break; + case INDEX_op_not_i64: + tcg_out_modrm(s, 0xf7 | P_REXW, 2, args[0]); + break; + + case INDEX_op_ext8s_i32: + tcg_out_modrm(s, 0xbe | P_EXT | P_REXB_RM, args[0], args[1]); + break; + case INDEX_op_ext16s_i32: + tcg_out_modrm(s, 0xbf | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext8s_i64: + tcg_out_modrm(s, 0xbe | P_EXT | P_REXW, args[0], args[1]); + break; + case INDEX_op_ext16s_i64: + tcg_out_modrm(s, 0xbf | P_EXT | P_REXW, args[0], args[1]); + break; + case INDEX_op_ext32s_i64: + tcg_out_modrm(s, 0x63 | P_REXW, args[0], args[1]); + break; + case INDEX_op_ext8u_i32: + case INDEX_op_ext8u_i64: + tcg_out_modrm(s, 0xb6 | P_EXT | P_REXB_RM, args[0], args[1]); + break; + case INDEX_op_ext16u_i32: + case INDEX_op_ext16u_i64: + tcg_out_modrm(s, 0xb7 | P_EXT, args[0], args[1]); + break; + case INDEX_op_ext32u_i64: + tcg_out_modrm(s, 0x8b, args[0], args[1]); + break; + + case INDEX_op_qemu_ld8u: + tcg_out_qemu_ld(s, args, 0); + break; + case INDEX_op_qemu_ld8s: + tcg_out_qemu_ld(s, args, 0 | 4); + break; + case INDEX_op_qemu_ld16u: + tcg_out_qemu_ld(s, args, 1); + break; + case INDEX_op_qemu_ld16s: + tcg_out_qemu_ld(s, args, 1 | 4); + break; + case INDEX_op_qemu_ld32u: + tcg_out_qemu_ld(s, args, 2); + break; + case INDEX_op_qemu_ld32s: + tcg_out_qemu_ld(s, args, 2 | 4); + break; + case INDEX_op_qemu_ld64: + tcg_out_qemu_ld(s, args, 3); + break; + + case INDEX_op_qemu_st8: + tcg_out_qemu_st(s, args, 0); + break; + case INDEX_op_qemu_st16: + tcg_out_qemu_st(s, args, 1); + break; + case INDEX_op_qemu_st32: + tcg_out_qemu_st(s, args, 2); + break; + case INDEX_op_qemu_st64: + tcg_out_qemu_st(s, args, 3); + break; + + default: + tcg_abort(); + } +} + +static int tcg_target_callee_save_regs[] = { + TCG_REG_RBP, + TCG_REG_RBX, + TCG_REG_R12, + TCG_REG_R13, + /* TCG_REG_R14, */ /* currently used for the global env, so no + need to save */ + TCG_REG_R15, +}; + +static inline void tcg_out_push(TCGContext *s, int reg) +{ + tcg_out_opc(s, (0x50 + (reg & 7)), 0, reg, 0); +} + +static inline void tcg_out_pop(TCGContext *s, int reg) +{ + tcg_out_opc(s, (0x58 + (reg & 7)), 0, reg, 0); +} + +/* Generate global QEMU prologue and epilogue code */ +void tcg_target_qemu_prologue(TCGContext *s) +{ + int i, frame_size, push_size, stack_addend; + + /* TB prologue */ + /* save all callee saved registers */ + for(i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_push(s, tcg_target_callee_save_regs[i]); + + } + /* reserve some stack space */ + push_size = 8 + ARRAY_SIZE(tcg_target_callee_save_regs) * 8; + frame_size = push_size + TCG_STATIC_CALL_ARGS_SIZE; + frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & + ~(TCG_TARGET_STACK_ALIGN - 1); + stack_addend = frame_size - push_size; + tcg_out_addi(s, TCG_REG_RSP, -stack_addend); + + tcg_out_modrm(s, 0xff, 4, TCG_REG_RDI); /* jmp *%rdi */ + + /* TB epilogue */ + tb_ret_addr = s->code_ptr; + tcg_out_addi(s, TCG_REG_RSP, stack_addend); + for(i = ARRAY_SIZE(tcg_target_callee_save_regs) - 1; i >= 0; i--) { + tcg_out_pop(s, tcg_target_callee_save_regs[i]); + } + tcg_out8(s, 0xc3); /* ret */ +} + +static const TCGTargetOpDef x86_64_op_defs[] = { + { INDEX_op_exit_tb, { } }, + { INDEX_op_goto_tb, { } }, + { INDEX_op_call, { "ri" } }, /* XXX: might need a specific constant constraint */ + { INDEX_op_jmp, { "ri" } }, /* XXX: might need a specific constant constraint */ + { INDEX_op_br, { } }, + + { INDEX_op_mov_i32, { "r", "r" } }, + { INDEX_op_movi_i32, { "r" } }, + { INDEX_op_ld8u_i32, { "r", "r" } }, + { INDEX_op_ld8s_i32, { "r", "r" } }, + { INDEX_op_ld16u_i32, { "r", "r" } }, + { INDEX_op_ld16s_i32, { "r", "r" } }, + { INDEX_op_ld_i32, { "r", "r" } }, + { INDEX_op_st8_i32, { "r", "r" } }, + { INDEX_op_st16_i32, { "r", "r" } }, + { INDEX_op_st_i32, { "r", "r" } }, + + { INDEX_op_add_i32, { "r", "0", "ri" } }, + { INDEX_op_mul_i32, { "r", "0", "ri" } }, + { INDEX_op_div2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_divu2_i32, { "a", "d", "0", "1", "r" } }, + { INDEX_op_sub_i32, { "r", "0", "ri" } }, + { INDEX_op_and_i32, { "r", "0", "ri" } }, + { INDEX_op_or_i32, { "r", "0", "ri" } }, + { INDEX_op_xor_i32, { "r", "0", "ri" } }, + + { INDEX_op_shl_i32, { "r", "0", "ci" } }, + { INDEX_op_shr_i32, { "r", "0", "ci" } }, + { INDEX_op_sar_i32, { "r", "0", "ci" } }, + { INDEX_op_rotl_i32, { "r", "0", "ci" } }, + { INDEX_op_rotr_i32, { "r", "0", "ci" } }, + + { INDEX_op_brcond_i32, { "r", "ri" } }, + + { INDEX_op_mov_i64, { "r", "r" } }, + { INDEX_op_movi_i64, { "r" } }, + { INDEX_op_ld8u_i64, { "r", "r" } }, + { INDEX_op_ld8s_i64, { "r", "r" } }, + { INDEX_op_ld16u_i64, { "r", "r" } }, + { INDEX_op_ld16s_i64, { "r", "r" } }, + { INDEX_op_ld32u_i64, { "r", "r" } }, + { INDEX_op_ld32s_i64, { "r", "r" } }, + { INDEX_op_ld_i64, { "r", "r" } }, + { INDEX_op_st8_i64, { "r", "r" } }, + { INDEX_op_st16_i64, { "r", "r" } }, + { INDEX_op_st32_i64, { "r", "r" } }, + { INDEX_op_st_i64, { "r", "r" } }, + + { INDEX_op_add_i64, { "r", "0", "re" } }, + { INDEX_op_mul_i64, { "r", "0", "re" } }, + { INDEX_op_div2_i64, { "a", "d", "0", "1", "r" } }, + { INDEX_op_divu2_i64, { "a", "d", "0", "1", "r" } }, + { INDEX_op_sub_i64, { "r", "0", "re" } }, + { INDEX_op_and_i64, { "r", "0", "reZ" } }, + { INDEX_op_or_i64, { "r", "0", "re" } }, + { INDEX_op_xor_i64, { "r", "0", "re" } }, + + { INDEX_op_shl_i64, { "r", "0", "ci" } }, + { INDEX_op_shr_i64, { "r", "0", "ci" } }, + { INDEX_op_sar_i64, { "r", "0", "ci" } }, + { INDEX_op_rotl_i64, { "r", "0", "ci" } }, + { INDEX_op_rotr_i64, { "r", "0", "ci" } }, + + { INDEX_op_brcond_i64, { "r", "re" } }, + + { INDEX_op_bswap16_i32, { "r", "0" } }, + { INDEX_op_bswap16_i64, { "r", "0" } }, + { INDEX_op_bswap32_i32, { "r", "0" } }, + { INDEX_op_bswap32_i64, { "r", "0" } }, + { INDEX_op_bswap64_i64, { "r", "0" } }, + + { INDEX_op_neg_i32, { "r", "0" } }, + { INDEX_op_neg_i64, { "r", "0" } }, + + { INDEX_op_not_i32, { "r", "0" } }, + { INDEX_op_not_i64, { "r", "0" } }, + + { INDEX_op_ext8s_i32, { "r", "r"} }, + { INDEX_op_ext16s_i32, { "r", "r"} }, + { INDEX_op_ext8s_i64, { "r", "r"} }, + { INDEX_op_ext16s_i64, { "r", "r"} }, + { INDEX_op_ext32s_i64, { "r", "r"} }, + { INDEX_op_ext8u_i32, { "r", "r"} }, + { INDEX_op_ext16u_i32, { "r", "r"} }, + { INDEX_op_ext8u_i64, { "r", "r"} }, + { INDEX_op_ext16u_i64, { "r", "r"} }, + { INDEX_op_ext32u_i64, { "r", "r"} }, + + { INDEX_op_qemu_ld8u, { "r", "L" } }, + { INDEX_op_qemu_ld8s, { "r", "L" } }, + { INDEX_op_qemu_ld16u, { "r", "L" } }, + { INDEX_op_qemu_ld16s, { "r", "L" } }, + { INDEX_op_qemu_ld32u, { "r", "L" } }, + { INDEX_op_qemu_ld32s, { "r", "L" } }, + { INDEX_op_qemu_ld64, { "r", "L" } }, + + { INDEX_op_qemu_st8, { "L", "L" } }, + { INDEX_op_qemu_st16, { "L", "L" } }, + { INDEX_op_qemu_st32, { "L", "L" } }, + { INDEX_op_qemu_st64, { "L", "L" } }, + + { -1 }, +}; + +void tcg_target_init(TCGContext *s) +{ + /* fail safe */ + if ((1 << CPU_TLB_ENTRY_BITS) != sizeof(CPUTLBEntry)) + tcg_abort(); + + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffff); + tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffff); + tcg_regset_set32(tcg_target_call_clobber_regs, 0, + (1 << TCG_REG_RDI) | + (1 << TCG_REG_RSI) | + (1 << TCG_REG_RDX) | + (1 << TCG_REG_RCX) | + (1 << TCG_REG_R8) | + (1 << TCG_REG_R9) | + (1 << TCG_REG_RAX) | + (1 << TCG_REG_R10) | + (1 << TCG_REG_R11)); + + tcg_regset_clear(s->reserved_regs); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_RSP); + + tcg_add_target_add_op_defs(x86_64_op_defs); +} diff --git a/qemu/qemu-git/tcg/x86_64/tcg-target.h b/qemu/qemu-git/tcg/x86_64/tcg-target.h new file mode 100644 index 0000000..3ca392f --- /dev/null +++ b/qemu/qemu-git/tcg/x86_64/tcg-target.h @@ -0,0 +1,91 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2008 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#define TCG_TARGET_X86_64 1 + +#define TCG_TARGET_REG_BITS 64 +//#define TCG_TARGET_WORDS_BIGENDIAN + +#define TCG_TARGET_NB_REGS 16 + +enum { + TCG_REG_RAX = 0, + TCG_REG_RCX, + TCG_REG_RDX, + TCG_REG_RBX, + TCG_REG_RSP, + TCG_REG_RBP, + TCG_REG_RSI, + TCG_REG_RDI, + TCG_REG_R8, + TCG_REG_R9, + TCG_REG_R10, + TCG_REG_R11, + TCG_REG_R12, + TCG_REG_R13, + TCG_REG_R14, + TCG_REG_R15, +}; + +#define TCG_CT_CONST_S32 0x100 +#define TCG_CT_CONST_U32 0x200 + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_RSP +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +/* optional instructions */ +#define TCG_TARGET_HAS_bswap16_i32 +#define TCG_TARGET_HAS_bswap16_i64 +#define TCG_TARGET_HAS_bswap32_i32 +#define TCG_TARGET_HAS_bswap32_i64 +#define TCG_TARGET_HAS_bswap64_i64 +#define TCG_TARGET_HAS_neg_i32 +#define TCG_TARGET_HAS_neg_i64 +#define TCG_TARGET_HAS_not_i32 +#define TCG_TARGET_HAS_not_i64 +#define TCG_TARGET_HAS_ext8s_i32 +#define TCG_TARGET_HAS_ext16s_i32 +#define TCG_TARGET_HAS_ext8s_i64 +#define TCG_TARGET_HAS_ext16s_i64 +#define TCG_TARGET_HAS_ext32s_i64 +#define TCG_TARGET_HAS_ext8u_i32 +#define TCG_TARGET_HAS_ext16u_i32 +#define TCG_TARGET_HAS_ext8u_i64 +#define TCG_TARGET_HAS_ext16u_i64 +#define TCG_TARGET_HAS_ext32u_i64 + +#define TCG_TARGET_HAS_rot_i32 +#define TCG_TARGET_HAS_rot_i64 + +#define TCG_TARGET_HAS_GUEST_BASE + +/* Note: must be synced with dyngen-exec.h */ +#define TCG_AREG0 TCG_REG_R14 +#define TCG_AREG1 TCG_REG_R15 +#define TCG_AREG2 TCG_REG_R12 + +static inline void flush_icache_range(unsigned long start, unsigned long stop) +{ +} diff --git a/qemu/qemu-git/translate-all.c b/qemu/qemu-git/translate-all.c new file mode 100644 index 0000000..8ef8a0b --- /dev/null +++ b/qemu/qemu-git/translate-all.c @@ -0,0 +1,194 @@ +/* + * Host code generation + * + * Copyright (c) 2003 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include +#include +#include +#include +#include + +#include "config.h" + +#define NO_CPU_IO_DEFS +#include "cpu.h" +#include "exec-all.h" +#include "disas.h" +#include "tcg.h" + +/* code generation context */ +TCGContext tcg_ctx; + +uint16_t gen_opc_buf[OPC_BUF_SIZE]; +TCGArg gen_opparam_buf[OPPARAM_BUF_SIZE]; + +target_ulong gen_opc_pc[OPC_BUF_SIZE]; +uint16_t gen_opc_icount[OPC_BUF_SIZE]; +uint8_t gen_opc_instr_start[OPC_BUF_SIZE]; +#if defined(TARGET_I386) +uint8_t gen_opc_cc_op[OPC_BUF_SIZE]; +#elif defined(TARGET_SPARC) +target_ulong gen_opc_npc[OPC_BUF_SIZE]; +target_ulong gen_opc_jump_pc[2]; +#elif defined(TARGET_MIPS) || defined(TARGET_SH4) +uint32_t gen_opc_hflags[OPC_BUF_SIZE]; +#endif + +/* XXX: suppress that */ +unsigned long code_gen_max_block_size(void) +{ + static unsigned long max; + + if (max == 0) { + max = TCG_MAX_OP_SIZE; +#define DEF(s, n, copy_size) max = copy_size > max? copy_size : max; +#include "tcg-opc.h" +#undef DEF + max *= OPC_MAX_SIZE; + } + + return max; +} + +void cpu_gen_init(void) +{ + tcg_context_init(&tcg_ctx); + tcg_set_frame(&tcg_ctx, TCG_AREG0, offsetof(CPUState, temp_buf), + CPU_TEMP_BUF_NLONGS * sizeof(long)); +} + +/* return non zero if the very first instruction is invalid so that + the virtual CPU can trigger an exception. + + '*gen_code_size_ptr' contains the size of the generated code (host + code). +*/ +int cpu_gen_code(CPUState *env, TranslationBlock *tb, int *gen_code_size_ptr) +{ + TCGContext *s = &tcg_ctx; + uint8_t *gen_code_buf; + int gen_code_size; +#ifdef CONFIG_PROFILER + int64_t ti; +#endif + +#ifdef CONFIG_PROFILER + s->tb_count1++; /* includes aborted translations because of + exceptions */ + ti = profile_getclock(); +#endif + tcg_func_start(s); + + gen_intermediate_code(env, tb); + + /* generate machine code */ + gen_code_buf = tb->tc_ptr; + tb->tb_next_offset[0] = 0xffff; + tb->tb_next_offset[1] = 0xffff; + s->tb_next_offset = tb->tb_next_offset; +#ifdef USE_DIRECT_JUMP + s->tb_jmp_offset = tb->tb_jmp_offset; + s->tb_next = NULL; + /* the following two entries are optional (only used for string ops) */ + /* XXX: not used ? */ + tb->tb_jmp_offset[2] = 0xffff; + tb->tb_jmp_offset[3] = 0xffff; +#else + s->tb_jmp_offset = NULL; + s->tb_next = tb->tb_next; +#endif + +#ifdef CONFIG_PROFILER + s->tb_count++; + s->interm_time += profile_getclock() - ti; + s->code_time -= profile_getclock(); +#endif + gen_code_size = tcg_gen_code(s, gen_code_buf); + *gen_code_size_ptr = gen_code_size; +#ifdef CONFIG_PROFILER + s->code_time += profile_getclock(); + s->code_in_len += tb->size; + s->code_out_len += gen_code_size; +#endif + +#ifdef DEBUG_DISAS + if (qemu_loglevel_mask(CPU_LOG_TB_OUT_ASM)) { + qemu_log("OUT: [size=%d]\n", *gen_code_size_ptr); + log_disas(tb->tc_ptr, *gen_code_size_ptr); + qemu_log("\n"); + qemu_log_flush(); + } +#endif + return 0; +} + +/* The cpu state corresponding to 'searched_pc' is restored. + */ +int cpu_restore_state(TranslationBlock *tb, + CPUState *env, unsigned long searched_pc, + void *puc) +{ + TCGContext *s = &tcg_ctx; + int j; + unsigned long tc_ptr; +#ifdef CONFIG_PROFILER + int64_t ti; +#endif + +#ifdef CONFIG_PROFILER + ti = profile_getclock(); +#endif + tcg_func_start(s); + + gen_intermediate_code_pc(env, tb); + + if (use_icount) { + /* Reset the cycle counter to the start of the block. */ + env->icount_decr.u16.low += tb->icount; + /* Clear the IO flag. */ + env->can_do_io = 0; + } + + /* find opc index corresponding to search_pc */ + tc_ptr = (unsigned long)tb->tc_ptr; + if (searched_pc < tc_ptr) + return -1; + + s->tb_next_offset = tb->tb_next_offset; +#ifdef USE_DIRECT_JUMP + s->tb_jmp_offset = tb->tb_jmp_offset; + s->tb_next = NULL; +#else + s->tb_jmp_offset = NULL; + s->tb_next = tb->tb_next; +#endif + j = tcg_gen_code_search_pc(s, (uint8_t *)tc_ptr, searched_pc - tc_ptr); + if (j < 0) + return -1; + /* now find start of instruction before */ + while (gen_opc_instr_start[j] == 0) + j--; + env->icount_decr.u16.low -= gen_opc_icount[j]; + + gen_pc_load(env, tb, searched_pc, j, puc); + +#ifdef CONFIG_PROFILER + s->restore_time += profile_getclock() - ti; + s->restore_count++; +#endif + return 0; +} diff --git a/qemu/qemu-git/x86_64.ld b/qemu/qemu-git/x86_64.ld new file mode 100644 index 0000000..24ea77d --- /dev/null +++ b/qemu/qemu-git/x86_64.ld @@ -0,0 +1,170 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") +OUTPUT_ARCH(i386:x86-64) +ENTRY(_start) +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x60000000 + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : + { + KEEP (*(.init)) + } =0x90909090 + .plt : { *(.plt) } + .text : + { + *(.text .stub .text.* .gnu.linkonce.t.*) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + } =0x90909090 + .fini : + { + KEEP (*(.fini)) + } =0x90909090 + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN (0x100000) - ((0x100000 - .) & (0x100000 - 1)); . = DATA_SEGMENT_ALIGN (0x100000, 0x1000); + /* Ensure the __preinit_array_start label is properly aligned. We + could instead move the label definition inside the section, but + the linker would then create the section even if it turns out to + be empty, which isn't pretty. */ + . = ALIGN(64 / 8); + PROVIDE (__preinit_array_start = .); + .preinit_array : { *(.preinit_array) } + PROVIDE (__preinit_array_end = .); + PROVIDE (__init_array_start = .); + .init_array : { *(.init_array) } + PROVIDE (__init_array_end = .); + PROVIDE (__fini_array_start = .); + .fini_array : { *(.fini_array) } + PROVIDE (__fini_array_end = .); + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table) } + .dynamic : { *(.dynamic) } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .got : { *(.got.plt) *(.got) } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .bss : + { + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. */ + . = ALIGN(64 / 8); + } + . = ALIGN(64 / 8); + _end = .; + PROVIDE (end = .); + . = DATA_SEGMENT_END (.); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/s3c2410.c b/s3c2410.c new file mode 100644 index 0000000..b587f6e --- /dev/null +++ b/s3c2410.c @@ -0,0 +1,67 @@ +/* $Id: s3c2410.c,v 1.38 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +/* + * Boot SRAM: 0x40000000 + * Memory Controller: 0x48000000 + * USB Host: 0x49000000 + * Interrupt Controller: 0x4a000000 + * DMA: 0x4b000000 + * Clock and Power Management: 0x4c000000 + * LCD Controller: 0x4d000000 + * NAND Flash Controller: 0x4e000000 + * UART: 0x50000000 + * PWM Timers: 0x51000000 + * USB Device: 0x52000000 + * Watchdog: 0x53000000 + * I2C Master: 0x54000000 + * IIS Interface: 0x55000000 + * GPIO Ports: 0x56000000 + * RTC: 0x57000000 + * ADC Controller: 0x58000000 + * SPI Interface: 0x59000000 + * SDI Interface: 0x5a000000 + */ +int +x49gp_s3c2410_init(x49gp_t *x49gp) +{ + x49gp_s3c2410_sram_init(x49gp); + x49gp_s3c2410_memc_init(x49gp); + /* x49gp_s3c2410_usbhost_init(x49gp); */ + x49gp_s3c2410_intc_init(x49gp); + /* x49gp_s3c2410_dma_init(x49gp); */ + x49gp_s3c2410_power_init(x49gp); + x49gp_s3c2410_lcd_init(x49gp); + x49gp_s3c2410_nand_init(x49gp); + x49gp_s3c2410_uart_init(x49gp); + x49gp_s3c2410_timer_init(x49gp); + x49gp_s3c2410_usbdev_init(x49gp); + x49gp_s3c2410_watchdog_init(x49gp); + /* x49gp_s3c2410_i2c_init(x49gp); */ + /* x49gp_s3c2410_iis_init(x49gp); */ + x49gp_s3c2410_io_port_init(x49gp); + x49gp_s3c2410_rtc_init(x49gp); + x49gp_s3c2410_adc_init(x49gp); + x49gp_s3c2410_spi_init(x49gp); + x49gp_s3c2410_sdi_init(x49gp); + + return 0; +} + +int +s3c2410_exit(x49gp_t *x49gp) +{ + return 0; +} diff --git a/s3c2410_adc.c b/s3c2410_adc.c new file mode 100644 index 0000000..d540f19 --- /dev/null +++ b/s3c2410_adc.c @@ -0,0 +1,270 @@ +/* $Id: s3c2410_adc.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +typedef struct { + uint32_t adccon; + uint32_t adctsc; + uint32_t adcdly; + uint32_t adcdat0; + uint32_t adcdat1; + + unsigned int nr_regs; + s3c2410_offset_t *regs; +} s3c2410_adc_t; + +static int +s3c2410_adc_data_init(s3c2410_adc_t *adc) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(ADC, ADCCON, 0x00003fc4, adc->adccon), + S3C2410_OFFSET(ADC, ADCTSC, 0x00000058, adc->adctsc), + S3C2410_OFFSET(ADC, ADCDLY, 0x000000ff, adc->adcdly), + S3C2410_OFFSET(ADC, ADCDAT0, 0x3ff, adc->adcdat0), + S3C2410_OFFSET(ADC, ADCDAT1, 0x3ff, adc->adcdat1), + }; + + memset(adc, 0, sizeof(s3c2410_adc_t)); + + adc->regs = malloc(sizeof(regs)); + if (NULL == adc->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(adc->regs, regs, sizeof(regs)); + adc->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static uint32_t +s3c2410_adc_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_adc_t *adc = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_ADC_BASE; +#endif + if (! S3C2410_OFFSET_OK(adc, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(adc, offset); + +#ifdef DEBUG_S3C2410_ADC + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-adc", S3C2410_ADC_BASE, + reg->name, offset, *(reg->datap)); +#endif + + switch (offset) { + case S3C2410_ADC_ADCCON: + *(reg->datap) &= ~(0x0001); + *(reg->datap) |= 0x8000; + break; + default: + break; + } + + return *(reg->datap); +} + +static void +s3c2410_adc_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_adc_t *adc = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_ADC_BASE; +#endif + if (! S3C2410_OFFSET_OK(adc, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(adc, offset); + +#ifdef DEBUG_S3C2410_ADC + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-adc", S3C2410_ADC_BASE, + reg->name, offset, data); +#endif + + *(reg->datap) = data; +} + +static int +s3c2410_adc_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_adc_t *adc = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < adc->nr_regs; i++) { + reg = &adc->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_adc_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_adc_t *adc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < adc->nr_regs; i++) { + reg = &adc->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_adc_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_adc_t *adc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < adc->nr_regs; i++) { + reg = &adc->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_adc_readfn[] = +{ + s3c2410_adc_read, + s3c2410_adc_read, + s3c2410_adc_read +}; + +static CPUWriteMemoryFunc *s3c2410_adc_writefn[] = +{ + s3c2410_adc_write, + s3c2410_adc_write, + s3c2410_adc_write +}; + +static int +s3c2410_adc_init(x49gp_module_t *module) +{ + s3c2410_adc_t *adc; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + adc = malloc(sizeof(s3c2410_adc_t)); + if (NULL == adc) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_adc_data_init(adc)) { + free(adc); + return -ENOMEM; + } + + module->user_data = adc; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_adc_readfn, + s3c2410_adc_writefn, adc); +#else + iotype = cpu_register_io_memory(s3c2410_adc_readfn, + s3c2410_adc_writefn, adc); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_ADC_BASE, S3C2410_MAP_SIZE, iotype); + + return 0; +} + +static int +s3c2410_adc_exit(x49gp_module_t *module) +{ + s3c2410_adc_t *adc; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + adc = module->user_data; + if (adc->regs) + free(adc->regs); + free(adc); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_adc_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-adc", + s3c2410_adc_init, + s3c2410_adc_exit, + s3c2410_adc_reset, + s3c2410_adc_load, + s3c2410_adc_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_arm.c b/s3c2410_arm.c new file mode 100644 index 0000000..82d8bc0 --- /dev/null +++ b/s3c2410_arm.c @@ -0,0 +1,288 @@ +/* $Id: s3c2410_arm.c,v 1.7 2008/12/11 12:18:17 ecd Exp $ + */ + + +#include +#include +#include +#include +#include + +#include + +#include +#include + +#ifdef QEMU_OLD +extern void tlb_flush(struct CPUState *, int global); +#else +#include "cpu-all.h" +#endif + +static int +s3c2410_arm_load(x49gp_module_t *module, GKeyFile *key) +{ + struct CPUARMState *env = module->user_data; + char name[32]; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + cpu_reset(env); + tlb_flush(env, 1); + + for (i = 0; i < 16; i++) { + sprintf(name, "reg-%02u", i); + if (x49gp_module_get_u32(module, key, name, 0, &env->regs[i])) + error = -EAGAIN; + } + if (x49gp_module_get_u32(module, key, "cpsr", 0, &env->uncached_cpsr)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "spsr", 0, &env->spsr)) + error = -EAGAIN; + for (i = 0; i < 6; i++) { + sprintf(name, "banked-spsr-%02u", i); + if (x49gp_module_get_u32(module, key, name, 0, &env->banked_spsr[i])) + error = -EAGAIN; + sprintf(name, "banked-r13-%02u", i); + if (x49gp_module_get_u32(module, key, name, 0, &env->banked_r13[i])) + error = -EAGAIN; + sprintf(name, "banked-r14-%02u", i); + if (x49gp_module_get_u32(module, key, name, 0, &env->banked_r14[i])) + error = -EAGAIN; + } + for (i = 8; i < 12; i++) { + sprintf(name, "reg-usr-%02u", i); + if (x49gp_module_get_u32(module, key, name, + 0, &env->usr_regs[i])) + error = -EAGAIN; + sprintf(name, "reg-fiq-%02u", i); + if (x49gp_module_get_u32(module, key, name, + 0, &env->fiq_regs[i])) + error = -EAGAIN; + } + + if (x49gp_module_get_u32(module, key, "CF", 0, &env->CF)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "VF", 0, &env->VF)) + error = -EAGAIN; +#ifdef QEMU_OLD + if (x49gp_module_get_u32(module, key, "NZF", 0, &env->NZF)) + error = -EAGAIN; +#else + if (x49gp_module_get_u32(module, key, "NF", 0, &env->NF)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "ZF", 0, &env->ZF)) + error = -EAGAIN; +#endif + if (x49gp_module_get_u32(module, key, "QF", 0, &env->QF)) + error = -EAGAIN; + if (x49gp_module_get_int(module, key, "thumb", 0, &env->thumb)) + error = -EAGAIN; + + if (x49gp_module_get_u32(module, key, "cp15-c0-cpuid", 0, &env->cp15.c0_cpuid)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c1-sys", 0, &env->cp15.c1_sys)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c1-coproc", 0, &env->cp15.c1_coproc)) + error = -EAGAIN; +#ifdef QEMU_OLD + if (x49gp_module_get_u32(module, key, "cp15-c2", 0, &env->cp15.c2)) + error = -EAGAIN; +#else + if (x49gp_module_get_u32(module, key, "cp15-c2-base0", 0, &env->cp15.c2_base0)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c2-base1", 0, &env->cp15.c2_base1)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c2-control", 0, &env->cp15.c2_control)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c2-mask", 0, &env->cp15.c2_mask)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c2-base-mask", 0, &env->cp15.c2_base_mask)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c2-data", 0, &env->cp15.c2_data)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c2-insn", 0, &env->cp15.c2_insn)) + error = -EAGAIN; +#endif + if (x49gp_module_get_u32(module, key, "cp15-c3", 0, &env->cp15.c3)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c5-insn", 0, &env->cp15.c5_insn)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c5-data", 0, &env->cp15.c5_data)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c6-insn", 0, &env->cp15.c6_insn)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c6-data", 0, &env->cp15.c6_data)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c9-insn", 0, &env->cp15.c9_insn)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c9-data", 0, &env->cp15.c9_data)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c13-fcse", 0, &env->cp15.c13_fcse)) + error = -EAGAIN; + if (x49gp_module_get_u32(module, key, "cp15-c13-context", 0, &env->cp15.c13_context)) + error = -EAGAIN; + + if (x49gp_module_get_u32(module, key, "features", 0, &env->features)) + error = -EAGAIN; + + if (x49gp_module_get_int(module, key, "exception-index", 0, &env->exception_index)) + error = -EAGAIN; + if (x49gp_module_get_int(module, key, "interrupt-request", 0, &env->interrupt_request)) + error = -EAGAIN; + if (x49gp_module_get_int(module, key, "halted", 0, &env->halted)) + error = -EAGAIN; + + env->exception_index = -1; + + if (0 == error) { + if (env->halted) + module->x49gp->arm_idle = 1; + } else { + memset(&env->cp15, 0, sizeof(env->cp15)); + } + +// s3c2410_arm_dump_state(state); + + return error; +} + +static int +s3c2410_arm_save(x49gp_module_t *module, GKeyFile *key) +{ + struct CPUARMState *env = module->user_data; + char name[32]; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < 16; i++) { + sprintf(name, "reg-%02u", i); + x49gp_module_set_u32(module, key, name, env->regs[i]); + } + x49gp_module_set_u32(module, key, "cpsr", env->uncached_cpsr); + x49gp_module_set_u32(module, key, "spsr", env->spsr); + for (i = 0; i < 6; i++) { + sprintf(name, "banked-spsr-%02u", i); + x49gp_module_set_u32(module, key, name, env->banked_spsr[i]); + sprintf(name, "banked-r13-%02u", i); + x49gp_module_set_u32(module, key, name, env->banked_r13[i]); + sprintf(name, "banked-r14-%02u", i); + x49gp_module_set_u32(module, key, name, env->banked_r14[i]); + } + for (i = 8; i < 12; i++) { + sprintf(name, "reg-usr-%02u", i); + x49gp_module_set_u32(module, key, name, env->usr_regs[i]); + sprintf(name, "reg-fiq-%02u", i); + x49gp_module_set_u32(module, key, name, env->fiq_regs[i]); + } + + x49gp_module_set_u32(module, key, "CF", env->CF); + x49gp_module_set_u32(module, key, "VF", env->VF); +#ifdef QEMU_OLD + x49gp_module_set_u32(module, key, "NZF", env->NZF); +#else + x49gp_module_set_u32(module, key, "NF", env->NF); + x49gp_module_set_u32(module, key, "ZF", env->ZF); +#endif + x49gp_module_set_u32(module, key, "QF", env->QF); + x49gp_module_set_int(module, key, "thumb", env->thumb); + + x49gp_module_set_u32(module, key, "cp15-c0-cpuid", env->cp15.c0_cpuid); + x49gp_module_set_u32(module, key, "cp15-c1-sys", env->cp15.c1_sys); + x49gp_module_set_u32(module, key, "cp15-c1-coproc", env->cp15.c1_coproc); +#ifdef QEMU_OLD + x49gp_module_set_u32(module, key, "cp15-c2", env->cp15.c2); +#else + x49gp_module_set_u32(module, key, "cp15-c2-base0", env->cp15.c2_base0); + x49gp_module_set_u32(module, key, "cp15-c2-base1", env->cp15.c2_base1); + x49gp_module_set_u32(module, key, "cp15-c2-control", env->cp15.c2_control); + x49gp_module_set_u32(module, key, "cp15-c2-mask", env->cp15.c2_mask); + x49gp_module_set_u32(module, key, "cp15-c2-base-mask", env->cp15.c2_base_mask); + x49gp_module_set_u32(module, key, "cp15-c2-data", env->cp15.c2_data); + x49gp_module_set_u32(module, key, "cp15-c2-insn", env->cp15.c2_insn); +#endif + x49gp_module_set_u32(module, key, "cp15-c3", env->cp15.c3); + x49gp_module_set_u32(module, key, "cp15-c5-insn", env->cp15.c5_insn); + x49gp_module_set_u32(module, key, "cp15-c5-data", env->cp15.c5_data); + x49gp_module_set_u32(module, key, "cp15-c6-insn", env->cp15.c6_insn); + x49gp_module_set_u32(module, key, "cp15-c6-data", env->cp15.c6_data); + x49gp_module_set_u32(module, key, "cp15-c9-insn", env->cp15.c9_insn); + x49gp_module_set_u32(module, key, "cp15-c9-data", env->cp15.c9_data); + x49gp_module_set_u32(module, key, "cp15-c13-fcse", env->cp15.c13_fcse); + x49gp_module_set_u32(module, key, "cp15-c13-context", env->cp15.c13_context); + + x49gp_module_set_u32(module, key, "features", env->features); + + x49gp_module_set_int(module, key, "exception-index", env->exception_index); + x49gp_module_set_int(module, key, "interrupt-request", env->interrupt_request); + x49gp_module_set_int(module, key, "halted", env->halted); + + return 0; +} + +static int +s3c2410_arm_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + struct CPUARMState *env = module->user_data; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + cpu_reset(env); + tlb_flush(env, 1); + + return 0; +} + +static int +s3c2410_arm_init(x49gp_module_t *module) +{ + x49gp_t *x49gp = module->x49gp; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + +#ifdef QEMU_OLD + cpu_arm_set_model(x49gp->env, ARM_CPUID_ARM926); +#endif + + module->user_data = x49gp->env; + return 0; +} + +static int +s3c2410_arm_exit(x49gp_module_t *module) +{ +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + return 0; +} + +int +x49gp_s3c2410_arm_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-arm", + s3c2410_arm_init, + s3c2410_arm_exit, + s3c2410_arm_reset, + s3c2410_arm_load, + s3c2410_arm_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_intc.c b/s3c2410_intc.c new file mode 100644 index 0000000..211c97a --- /dev/null +++ b/s3c2410_intc.c @@ -0,0 +1,751 @@ +/* $Id: s3c2410_intc.c,v 1.8 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +extern int do_trace; + +typedef struct { + int sel_shift; + uint32_t mode_bit; + int index; + int req[6]; +} s3c2410_arb_t; + +typedef struct { + uint32_t sel; + uint32_t mode; +} s3c2410_arb_data_t; + +static const int s3c2410_arb_order[4][6] = +{ + { 0, 1, 2, 3, 4, 5 }, + { 0, 2, 3, 4, 1, 5 }, + { 0, 3, 4, 1, 2, 5 }, + { 0, 4, 1, 2, 3, 5 } +}; + +static const s3c2410_arb_t s3c2410_arb_table[] = +{ + [0] = { ARB0_SEL_SHIFT, ARB0_MODE, 0, + { -1, EINT0, EINT1, EINT2, EINT3, -1 } }, + [1] = { ARB1_SEL_SHIFT, ARB1_MODE, 1, + { EINT4_7, EINT8_23, -1, nBATT_FLT, INT_TICK, INT_WDT } }, + [2] = { ARB2_SEL_SHIFT, ARB2_MODE, 2, + { INT_TIMER0, INT_TIMER1, INT_TIMER2, INT_TIMER3, INT_TIMER4, INT_UART2} }, + [3] = { ARB3_SEL_SHIFT, ARB3_MODE, 3, + { INT_LCD, INT_DMA0, INT_DMA1, INT_DMA2, INT_DMA3, INT_SDI } }, + [4] = { ARB4_SEL_SHIFT, ARB4_MODE, 4, + { INT_SPI0, INT_UART1, -1, INT_USBD, INT_USBH, INT_IIC } }, + [5] = { ARB5_SEL_SHIFT, ARB5_MODE, 5, + { -1, INT_UART0, INT_SPI1, INT_RTC, INT_ADC, -1, } }, + [6] = { ARB6_SEL_SHIFT, ARB6_MODE, 6, + { 0, 1, 2, 3, 4, 5 } }, +}; +#define INTC_NR_ARB (sizeof(s3c2410_arb_table) / sizeof(s3c2410_arb_table[0])) + + +typedef struct { + uint32_t srcpnd; + uint32_t intmod; + uint32_t intmsk; + uint32_t priority; + uint32_t intpnd; + uint32_t intoffset; + uint32_t subsrcpnd; + uint32_t intsubmsk; + + s3c2410_arb_data_t arb_data[INTC_NR_ARB]; + + x49gp_t *x49gp; + + uint32_t src_pending; + uint32_t subsrc_pending; + + unsigned int nr_regs; + s3c2410_offset_t *regs; +} s3c2410_intc_t; + + +static void s3c2410_intc_gen_int(s3c2410_intc_t *intc); +static void s3c2410_intc_gen_int_from_sub_int(s3c2410_intc_t *intc); + +static int +s3c2410_intc_data_init(s3c2410_intc_t *intc) +{ + int i; + + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(INTC, SRCPND, 0x00000000, intc->srcpnd), + S3C2410_OFFSET(INTC, INTMOD, 0x00000000, intc->intmod), + S3C2410_OFFSET(INTC, INTMSK, 0xffffffff, intc->intmsk), + S3C2410_OFFSET(INTC, PRIORITY, 0x0000007f, intc->priority), + S3C2410_OFFSET(INTC, INTPND, 0x00000000, intc->intpnd), + S3C2410_OFFSET(INTC, INTOFFSET, 0x00000000, intc->intoffset), + S3C2410_OFFSET(INTC, SUBSRCPND, 0x00000000, intc->subsrcpnd), + S3C2410_OFFSET(INTC, INTSUBMSK, 0x000007ff, intc->intsubmsk) + }; + + memset(intc, 0, sizeof(s3c2410_intc_t)); + + intc->regs = malloc(sizeof(regs)); + if (NULL == intc->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(intc->regs, regs, sizeof(regs)); + intc->nr_regs = sizeof(regs) / sizeof(regs[0]); + + for (i = 0; i < INTC_NR_ARB; i++) { + intc->arb_data[i].sel = 0; + intc->arb_data[i].mode = s3c2410_arb_table[i].mode_bit; + } + + return 0; +} + +static void +srcpnd_put_word(s3c2410_intc_t *intc, uint32_t data) +{ + intc->srcpnd &= ~(data); + intc->srcpnd |= intc->src_pending; + + if (intc->src_pending & data) { + s3c2410_intc_gen_int(intc); + } +} + +static void +intmod_put_word(s3c2410_intc_t *intc, uint32_t data) +{ + intc->intmod = data & 0xfeffffbf; + + s3c2410_intc_gen_int(intc); +} + +static void +intmsk_put_word(s3c2410_intc_t *intc, uint32_t data) +{ + uint32_t change; +#ifdef DEBUG_X49GP_ENABLE_IRQ + int i; +#endif + + change = intc->intmsk ^ data; + + intc->intmsk = data | 0x01000040; + +#ifdef DEBUG_X49GP_ENABLE_IRQ + for (i = 0; i < 32; i++) { + if ((change & (1 << i)) && !(intc->intmsk & (1 << i))) { + printf("INTC: Enable IRQ %u\n", i); + } + } +#endif + + s3c2410_intc_gen_int(intc); +} + +static uint32_t +priority_get_word(s3c2410_intc_t *intc) +{ + const s3c2410_arb_t *arb; + s3c2410_arb_data_t *arb_data; + int i; + + intc->priority = 0; + + for (i = 0; i < INTC_NR_ARB; i++) { + arb = &s3c2410_arb_table[i]; + arb_data = &intc->arb_data[i]; + + intc->priority |= (arb_data->sel << arb->sel_shift) | + arb_data->mode; + } + + return intc->priority; +} + +static void +priority_put_word(s3c2410_intc_t *intc, uint32_t data) +{ + const s3c2410_arb_t *arb; + s3c2410_arb_data_t *arb_data; + int i; + + intc->priority = data & 0x001fffff; + + for (i = 0; i < INTC_NR_ARB; i++) { + arb = &s3c2410_arb_table[i]; + arb_data = &intc->arb_data[i]; + + arb_data->sel = (intc->priority >> arb->sel_shift) & ARBx_SEL_MASK; + arb_data->mode = intc->priority & arb->mode_bit; + } + + s3c2410_intc_gen_int(intc); +} + +static void +intpnd_put_word(s3c2410_intc_t *intc, uint32_t data) +{ + intc->intpnd &= ~(data); + + s3c2410_intc_gen_int(intc); +} + +static void +subsrcpnd_put_word(s3c2410_intc_t *intc, uint32_t data) +{ + intc->subsrcpnd &= ~(data); + intc->subsrcpnd |= intc->subsrc_pending; + + if (intc->subsrc_pending & data) { + s3c2410_intc_gen_int_from_sub_int(intc); + } +} + +static void +intsubmsk_put_word(s3c2410_intc_t *intc, uint32_t data) +{ + intc->intsubmsk = data & 0x000007ff; + + s3c2410_intc_gen_int_from_sub_int(intc); +} + +static uint32_t +s3c2410_intc_select_int(s3c2410_intc_t *intc, const s3c2410_arb_t *arb, + uint32_t service, int *offset) +{ + s3c2410_arb_data_t *arb_data = &intc->arb_data[arb->index]; + const int *order; + int i, req; + + order = s3c2410_arb_order[arb_data->sel]; + + for (i = 0; i < 6; i++) { + req = order[i]; + + if (-1 == arb->req[req]) + continue; + + if (service & (1 << arb->req[req])) { + if (arb_data->mode) + arb_data->sel = (arb_data->sel + 1) & ARBx_SEL_MASK; + *offset = arb->req[req]; + return (1 << arb->index); + } + } + + *offset = -1; + return 0; +} + +void +s3c2410_FIQ (CPUState *env) +{ + cpu_interrupt(env, CPU_INTERRUPT_FIQ); +} + +void +s3c2410_IRQ (CPUState *env) +{ + cpu_interrupt(env, CPU_INTERRUPT_HARD); +} + + +static void +s3c2410_intc_gen_int(s3c2410_intc_t *intc) +{ + x49gp_t *x49gp = intc->x49gp; + uint32_t fiq, service; + int offset[6], index; + const s3c2410_arb_t *arb; + uint32_t request; + int i; + + fiq = intc->srcpnd & intc->intmod; + +#ifdef DEBUG_S3C2410_INTC0 + printf("INTC: FIQ service request: %08x\n", fiq); +#endif + + if (fiq) { + /* + * Generate FIQ. + */ +#ifdef DEBUG_S3C2410_INTC + printf("INTC: vector to %08x\n", 0x1c); +#endif + cpu_interrupt(x49gp->env, CPU_INTERRUPT_FIQ); + + x49gp_set_idle(x49gp, 0); + return; + } else { + cpu_reset_interrupt(x49gp->env, CPU_INTERRUPT_FIQ); + } + +#ifdef DEBUG_S3C2410_INTC0 + printf("INTC: IRQ pending request: %08x\n", intc->intpnd); +#endif + + if (intc->intpnd) { + /* + * Generate IRQ. + */ +#ifdef DEBUG_S3C2410_INTC + printf("INTC: vector to %08x\n", 0x18); +#endif + cpu_interrupt(x49gp->env, CPU_INTERRUPT_HARD); + + x49gp_set_idle(x49gp, 0); + return; + } + +#ifdef DEBUG_S3C2410_INTC0 + printf("INTC: srcpnd %08x, intmsk: %08x\n", intc->srcpnd, intc->intmsk); +#endif + + service = intc->srcpnd & ~(intc->intmsk); + +#ifdef DEBUG_S3C2410_INTC0 + printf("INTC: IRQ service request: %08x\n", service); +#endif + + if (0 == service) { + cpu_reset_interrupt(x49gp->env, CPU_INTERRUPT_HARD); + return; + } + + request = 0; + for (i = 0; i < 6; i++) { + arb = &s3c2410_arb_table[i]; + + request |= s3c2410_intc_select_int(intc, arb, service, &offset[i]); + +#ifdef DEBUG_S3C2410_INTC0 + printf("INTC: ARB%u highest %d\n", i, offset[i]); +#endif + } + + arb = &s3c2410_arb_table[6]; + +#ifdef DEBUG_S3C2410_INTC0 + printf("INTC: ARB%u request: %08x\n", 6, request); +#endif + + if (s3c2410_intc_select_int(intc, arb, request, &index)) { + intc->intoffset = offset[index]; + intc->intpnd |= (1 << intc->intoffset); + +#ifdef DEBUG_S3C2410_INTC + printf("INTC: irq pending: %u (%08x)\n", intc->intoffset, intc->intpnd); +#endif + /* + * Generate IRQ. + */ +#ifdef DEBUG_S3C2410_INTC + printf("INTC: vector to %08x\n", 0x18); +#endif + cpu_interrupt(x49gp->env, CPU_INTERRUPT_HARD); + + x49gp_set_idle(x49gp, 0); + return; + } + +#ifdef DEBUG_S3C2410_INTC0 + printf("INTC: No irq pending\n"); +#endif + + cpu_reset_interrupt(x49gp->env, CPU_INTERRUPT_HARD); +} + +void +s3c2410_intc_assert(x49gp_t *x49gp, int irq, int level) +{ + s3c2410_intc_t *intc = x49gp->s3c2410_intc; + + if (irq > 31) + return; + +#ifdef DEBUG_S3C2410_INTC + printf("INTC: assert irq %u (%08x)\n", irq, 1 << irq); +#endif + + if (! (intc->src_pending & (1 << irq))) { + if (level) + intc->src_pending |= (1 << irq); + intc->srcpnd |= (1 << irq); + + s3c2410_intc_gen_int(intc); + } + + if (x49gp->arm_idle == 2) { + if (irq == EINT0 || irq == INT_RTC) + x49gp_set_idle(x49gp, 0); + } +} + +void +s3c2410_intc_deassert(x49gp_t *x49gp, int irq) +{ + s3c2410_intc_t *intc = x49gp->s3c2410_intc; + + if (irq > 31) + return; + +#ifdef DEBUG_S3C2410_INTC + printf("INTC: deassert irq %u (%08x)\n", irq, 1 << irq); +#endif + + intc->src_pending &= ~(1 << irq); +} + +static void +s3c2410_intc_gen_int_from_sub_int(s3c2410_intc_t *intc) +{ + x49gp_t *x49gp = intc->x49gp; + uint32_t service; + + service = intc->subsrcpnd & ~(intc->intsubmsk); + +#ifdef DEBUG_S3C2410_INTC + printf("INTC: subirq service request: %08x\n", service); +#endif + + if (service & ((1 << SUB_INT_ERR0) | (1 << SUB_INT_TXD0) | (1 << SUB_INT_RXD0))) { + s3c2410_intc_assert(x49gp, INT_UART0, 1); + } else { + s3c2410_intc_deassert(x49gp, INT_UART0); + } + + if (service & ((1 << SUB_INT_ERR1) | (1 << SUB_INT_TXD1) | (1 << SUB_INT_RXD1))) { + s3c2410_intc_assert(x49gp, INT_UART1, 1); + } else { + s3c2410_intc_deassert(x49gp, INT_UART1); + } + + if (service & ((1 << SUB_INT_ERR2) | (1 << SUB_INT_TXD2) | (1 << SUB_INT_RXD2))) { + s3c2410_intc_assert(x49gp, INT_UART2, 1); + } else { + s3c2410_intc_deassert(x49gp, INT_UART2); + } + + if (service & ((1 << SUB_INT_ADC) | (1 << SUB_INT_TC))) { + s3c2410_intc_assert(x49gp, INT_ADC, 1); + } else { + s3c2410_intc_deassert(x49gp, INT_ADC); + } + + intc->subsrcpnd = intc->subsrc_pending; +} + +void +s3c2410_intc_sub_assert(x49gp_t *x49gp, int sub_irq, int level) +{ + s3c2410_intc_t *intc = x49gp->s3c2410_intc; + + if (sub_irq > 31) + return; + +#ifdef DEBUG_S3C2410_INTC + printf("INTC: assert subirq %u (%08x)\n", sub_irq, 1 << sub_irq); +#endif + + if (! (intc->subsrc_pending & (1 << sub_irq))) { + if (level) + intc->subsrc_pending |= (1 << sub_irq); + intc->subsrcpnd |= (1 << sub_irq); + + s3c2410_intc_gen_int_from_sub_int(intc); + } +} + +void +s3c2410_intc_sub_deassert(x49gp_t *x49gp, int sub_irq) +{ + s3c2410_intc_t *intc = x49gp->s3c2410_intc; + + if (sub_irq > 31) + return; + +#ifdef DEBUG_S3C2410_INTC + printf("INTC: deassert subirq %u (%08x)\n", sub_irq, 1 << sub_irq); +#endif + + intc->subsrc_pending &= ~(1 << sub_irq); +} + +static uint32_t +s3c2410_intc_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_intc_t *intc = opaque; + s3c2410_offset_t *reg; + uint32_t data; + +#ifdef QEMU_OLD + offset -= S3C2410_INTC_BASE; +#endif + if (! S3C2410_OFFSET_OK(intc, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(intc, offset); + + switch (offset) { + case S3C2410_INTC_PRIORITY: + data = priority_get_word(intc); + break; + default: + data = *(reg->datap); + break; + } + +#ifdef DEBUG_S3C2410_INTC + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-intc", S3C2410_INTC_BASE, + reg->name, offset, data); +#endif + + return data; +} + +static void +s3c2410_intc_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_intc_t *intc = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_INTC_BASE; +#endif + if (! S3C2410_OFFSET_OK(intc, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(intc, offset); + +#ifdef DEBUG_S3C2410_INTC + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-intc", S3C2410_INTC_BASE, + reg->name, offset, data); +#endif + + switch (offset) { + case S3C2410_INTC_SRCPND: + srcpnd_put_word(intc, data); + break; + case S3C2410_INTC_INTMOD: + intmod_put_word(intc, data); + break; + case S3C2410_INTC_INTMSK: + intmsk_put_word(intc, data); + break; + case S3C2410_INTC_PRIORITY: + priority_put_word(intc, data); + break; + case S3C2410_INTC_INTPND: + intpnd_put_word(intc, data); + break; + case S3C2410_INTC_SUBSRCPND: + subsrcpnd_put_word(intc, data); + break; + case S3C2410_INTC_INTSUBMSK: + intsubmsk_put_word(intc, data); + break; + default: + break; + } +} + +static int +s3c2410_intc_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_intc_t *intc = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < intc->nr_regs; i++) { + reg = &intc->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + intc->src_pending = intc->srcpnd; + intc->subsrc_pending = intc->subsrcpnd; + intc->srcpnd = 0; + intc->subsrcpnd = 0; + + priority_put_word(intc, intc->priority); + intsubmsk_put_word(intc, intc->intsubmsk); + intmsk_put_word(intc, intc->intmsk); + + return error; +} + +static int +s3c2410_intc_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_intc_t *intc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + intc->srcpnd = intc->src_pending; + intc->subsrcpnd = intc->subsrc_pending; + + for (i = 0; i < intc->nr_regs; i++) { + reg = &intc->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_intc_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_intc_t *intc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (reset == X49GP_RESET_POWER_OFF) { + return 0; + } + + for (i = 0; i < intc->nr_regs; i++) { + reg = &intc->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_intc_readfn[] = +{ + s3c2410_intc_read, + s3c2410_intc_read, + s3c2410_intc_read +}; + +static CPUWriteMemoryFunc *s3c2410_intc_writefn[] = +{ + s3c2410_intc_write, + s3c2410_intc_write, + s3c2410_intc_write +}; + +static int +s3c2410_intc_init(x49gp_module_t *module) +{ + s3c2410_intc_t *intc; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + intc = malloc(sizeof(s3c2410_intc_t)); + if (NULL == intc) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_intc_data_init(intc)) { + free(intc); + return -ENOMEM; + } + + module->user_data = intc; + + intc->x49gp = module->x49gp; + intc->x49gp->s3c2410_intc = intc; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_intc_readfn, + s3c2410_intc_writefn, intc); +#else + iotype = cpu_register_io_memory(s3c2410_intc_readfn, + s3c2410_intc_writefn, intc); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_INTC_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_intc_exit(x49gp_module_t *module) +{ + s3c2410_intc_t *intc; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + intc = module->user_data; + if (intc->regs) + free(intc->regs); + free(intc); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_intc_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-intc", + s3c2410_intc_init, + s3c2410_intc_exit, + s3c2410_intc_reset, + s3c2410_intc_load, + s3c2410_intc_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_io_port.c b/s3c2410_io_port.c new file mode 100644 index 0000000..8aac85d --- /dev/null +++ b/s3c2410_io_port.c @@ -0,0 +1,727 @@ +/* $Id: s3c2410_io_port.c,v 1.14 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +typedef struct { + uint32_t gpacon; + uint32_t gpadat; + + uint32_t gpbcon; + uint32_t gpbdat; + uint32_t gpbup; + + uint32_t gpccon; + uint32_t gpcdat; + uint32_t gpcup; + + uint32_t gpdcon; + uint32_t gpddat; + uint32_t gpdup; + + uint32_t gpecon; + uint32_t gpedat; + uint32_t gpeup; + + uint32_t gpfcon; + uint32_t gpfdat; + uint32_t gpfup; + + uint32_t gpgcon; + uint32_t gpgdat; + uint32_t gpgup; + + uint32_t gphcon; + uint32_t gphdat; + uint32_t gphup; + + uint32_t misccr; + uint32_t dclkcon; + + uint32_t extint0; + uint32_t extint1; + uint32_t extint2; + uint32_t eintflt0; + uint32_t eintflt1; + uint32_t eintflt2; + uint32_t eintflt3; + uint32_t eintmask; + uint32_t eintpend; + + uint32_t gstatus0; + uint32_t gstatus1; + uint32_t gstatus2; + uint32_t gstatus3; + uint32_t gstatus4; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; +} s3c2410_io_port_t; + +static int +s3c2410_io_port_data_init(s3c2410_io_port_t *io) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(IO_PORT, GPACON, 0x007fffff, io->gpacon), + S3C2410_OFFSET(IO_PORT, GPADAT, 0x00000000, io->gpadat), + + S3C2410_OFFSET(IO_PORT, GPBCON, 0x00000000, io->gpbcon), + S3C2410_OFFSET(IO_PORT, GPBDAT, 0x00000000, io->gpbdat), + S3C2410_OFFSET(IO_PORT, GPBUP, 0x00000000, io->gpbup), + + S3C2410_OFFSET(IO_PORT, GPCCON, 0x00000000, io->gpccon), + S3C2410_OFFSET(IO_PORT, GPCDAT, 0x00000000, io->gpcdat), + S3C2410_OFFSET(IO_PORT, GPCUP, 0x00000000, io->gpcup), + + S3C2410_OFFSET(IO_PORT, GPDCON, 0x00000000, io->gpdcon), + S3C2410_OFFSET(IO_PORT, GPDDAT, 0x0000038c, io->gpddat), + S3C2410_OFFSET(IO_PORT, GPDUP, 0x0000f000, io->gpdup), + + S3C2410_OFFSET(IO_PORT, GPECON, 0x00000000, io->gpecon), + S3C2410_OFFSET(IO_PORT, GPEDAT, 0x0000c7c0, io->gpedat), + S3C2410_OFFSET(IO_PORT, GPEUP, 0x00000000, io->gpeup), + + S3C2410_OFFSET(IO_PORT, GPFCON, 0x00000000, io->gpfcon), + S3C2410_OFFSET(IO_PORT, GPFDAT, 0x00000008, io->gpfdat), + S3C2410_OFFSET(IO_PORT, GPFUP, 0x00000000, io->gpfup), + + S3C2410_OFFSET(IO_PORT, GPGCON, 0x00000000, io->gpgcon), + S3C2410_OFFSET(IO_PORT, GPGDAT, 0x0000fffe, io->gpgdat), + S3C2410_OFFSET(IO_PORT, GPGUP, 0x0000f800, io->gpgup), + + S3C2410_OFFSET(IO_PORT, GPHCON, 0x00000000, io->gphcon), + S3C2410_OFFSET(IO_PORT, GPHDAT, 0x00000000, io->gphdat), + S3C2410_OFFSET(IO_PORT, GPHUP, 0x00000000, io->gphup), + + S3C2410_OFFSET(IO_PORT, MISCCR, 0x00010330, io->misccr), + S3C2410_OFFSET(IO_PORT, DCLKCON, 0x00000000, io->dclkcon), + + S3C2410_OFFSET(IO_PORT, EXTINT0, 0x00000000, io->extint0), + S3C2410_OFFSET(IO_PORT, EXTINT1, 0x00000000, io->extint1), + S3C2410_OFFSET(IO_PORT, EXTINT2, 0x00000000, io->extint2), + S3C2410_OFFSET(IO_PORT, EINTFLT0, 0x00000000, io->eintflt0), + S3C2410_OFFSET(IO_PORT, EINTFLT1, 0x00000000, io->eintflt1), + S3C2410_OFFSET(IO_PORT, EINTFLT2, 0x00000000, io->eintflt2), + S3C2410_OFFSET(IO_PORT, EINTFLT3, 0x00000000, io->eintflt3), + S3C2410_OFFSET(IO_PORT, EINTMASK, 0x00fffff0, io->eintmask), + S3C2410_OFFSET(IO_PORT, EINTPEND, 0x00000000, io->eintpend), + + S3C2410_OFFSET(IO_PORT, GSTATUS0, 0x00000001, io->gstatus0), + S3C2410_OFFSET(IO_PORT, GSTATUS1, 0x32410002, io->gstatus1), + S3C2410_OFFSET(IO_PORT, GSTATUS2, 0x00000001, io->gstatus2), + S3C2410_OFFSET(IO_PORT, GSTATUS3, 0x00000000, io->gstatus3), + S3C2410_OFFSET(IO_PORT, GSTATUS4, 0x00000000, io->gstatus4) + }; + + memset(io, 0, sizeof(s3c2410_io_port_t)); + + io->regs = malloc(sizeof(regs)); + if (NULL == io->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(io->regs, regs, sizeof(regs)); + io->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static uint32_t +s3c2410_scan_keys(x49gp_t *x49gp, uint32_t gpgcon, uint32_t gpgdat) +{ + uint32_t result; + int col, row; + + result = 0xfffe | (gpgdat & 1); + + for (col = 0; col < 8; col++) { + switch ((gpgcon >> (2 * (col + 8))) & 3) { + case 0: /* Input */ + case 2: /* Interrupt */ + case 3: /* Reserved */ + break; + case 1: /* Output */ + result &= ~(1 << (col + 8)); + result |= gpgdat & (1 << (col + 8)); + + if (0 == (gpgdat & (1 << (col + 8)))) { + result &= ~(x49gp->keybycol[col]); + } + break; + } + } + + for (row = 1; row < 8; row++) { + switch ((gpgcon >> (2 * row)) & 3) { + case 0: /* Input */ + case 2: /* Interrupt */ + case 3: /* Reserved */ + break; + case 1: /* Output */ + result &= ~(1 << row); + result |= gpgdat & (1 << row); + + if (0 == (gpgdat & (1 << row))) { + result &= ~(x49gp->keybyrow[row] << 8); + } + break; + } + } + + return result; +} + +static uint32_t +s3c2410_io_port_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_io_port_t *io = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_IO_PORT_BASE; +#endif + if (! S3C2410_OFFSET_OK(io, offset)) { +fprintf(stderr, "%s:%u: offset %08x not OK\n", __FUNCTION__, __LINE__, offset); +abort(); + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(io, offset); + + switch (offset) { + case S3C2410_IO_PORT_MISCCR: +// if (io->x49gp->arm->NresetSig != LOW) { + *(reg->datap) |= 0x00010000; +// } + break; + + case S3C2410_IO_PORT_GPCDAT: + if (0 == ((io->gpccon >> 30) & 3)) { + *(reg->datap) |= 0x8000; + } + if (0 == ((io->gpccon >> 28) & 3)) { + *(reg->datap) |= 0x4000; + } + if (0 == ((io->gpccon >> 26) & 3)) { + *(reg->datap) |= 0x2000; + } + if (0 == ((io->gpccon >> 24) & 3)) { + *(reg->datap) |= 0x1000; + } + break; + + case S3C2410_IO_PORT_GPDDAT: + if (0 == ((io->gpdcon >> 6) & 3)) { + *(reg->datap) |= 0x0008; + } + break; + + case S3C2410_IO_PORT_GPEDAT: + if (0 == ((io->gpecon >> 30) & 3)) { + *(reg->datap) |= 0x8000; + } + if (0 == ((io->gpecon >> 28) & 3)) { + *(reg->datap) |= 0x4000; + } + break; + + case S3C2410_IO_PORT_GPFDAT: +#if 1 + if (1 != ((io->gpfcon >> 6) & 3)) { + *(reg->datap) |= 0x0008; + } +#endif + break; + + case S3C2410_IO_PORT_GPGDAT: + *(reg->datap) = s3c2410_scan_keys(io->x49gp, io->gpgcon, *(reg->datap)); + break; + + case S3C2410_IO_PORT_GPHDAT: + if (0 == ((io->gphcon >> 14) & 3)) { + *(reg->datap) |= 0x80; + } + if (0 == ((io->gphcon >> 12) & 3)) { + *(reg->datap) &= ~(0x40); + } + break; + } + +#ifdef DEBUG_S3C2410_IO_PORT + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-io-port", S3C2410_IO_PORT_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_io_port_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_io_port_t *io = opaque; + s3c2410_offset_t *reg; + uint32_t change; +static uint32_t lcd_data = 0; + +#ifdef QEMU_OLD + offset -= S3C2410_IO_PORT_BASE; +#endif + if (! S3C2410_OFFSET_OK(io, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(io, offset); + +#ifdef DEBUG_S3C2410_IO_PORT + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-io-port", S3C2410_IO_PORT_BASE, + reg->name, offset, data); +#endif + + switch (offset) { + case S3C2410_IO_PORT_GPDDAT: + change = *(reg->datap) ^ data; + *(reg->datap) = data; + + if (!(data & 0x200) && (change & 0x200)) { + lcd_data = 0; + } + + if (!(data & 0x200) && (data & 0x2000) && (change & 0x2000)) { +#ifdef DEBUG_S3C2410_IO_PORT + printf("IO_PORT GPDDAT: clk0 rise: data %u\n", + (data >> 12) & 1); +#endif + lcd_data <<= 1; + lcd_data |= (data >> 12) & 1; + } + + if ((data & 0x200) && (change & 0x200)) { +#ifdef DEBUG_S3C2410_IO_PORT + printf("IO_PORT GPDDAT: cs0 rise: data %04x\n", + lcd_data); +#endif + } + + break; + + case S3C2410_IO_PORT_MISCCR: + *(reg->datap) = data; + if (!(*(reg->datap) & 0x00010000)) { + *(reg->datap) = 0x10330; +// if (io->x49gp->arm->NresetSig != LOW) { +// io->x49gp->arm->NresetSig = LOW; +// io->x49gp->arm->Exception++; +// } + } + break; + + case S3C2410_IO_PORT_GSTATUS0: + case S3C2410_IO_PORT_GSTATUS1: + /* read only */ + break; + + case S3C2410_IO_PORT_GSTATUS2: + *(reg->datap) &= ~(data & 7); + break; + + case S3C2410_IO_PORT_EINTPEND: + *(reg->datap) &= ~(data); + + if (0 == (*(reg->datap) & 0x000000f0)) + s3c2410_intc_deassert(io->x49gp, EINT4_7); + if (0 == (*(reg->datap) & 0x00ffff00)) + s3c2410_intc_deassert(io->x49gp, EINT8_23); + break; + + default: + *(reg->datap) = data; + break; + } +} + +void +s3c2410_io_port_g_set_bit(x49gp_t *x49gp, int n, uint32_t set) +{ + s3c2410_io_port_t *io = x49gp->s3c2410_io_port; + uint32_t value, change; + int pending, level; + + if (n > 7) + return; + +// g_mutex_lock(x49gp->memlock); + + io->gpgdat = s3c2410_scan_keys(x49gp, io->gpgcon, io->gpgdat); + +#ifdef DEBUG_S3C2410_IO_PORT + printf("IO_PORT: %s GPG bit %u\n", set ? "assert" : "deassert", n); + printf("IO_PORT: GPGCON %08x, GPGDAT %08x\n", io->gpgcon, io->gpgdat); +#endif + + if (0 == set) { + value = 1; + } else { + if ((((io->gpgcon >> (2 * (n + 8))) & 3) == 1) && + (((io->gpgdat >> (n + 8)) & 1) == 0)) { + value = 0; + } else { + value = 1; + } + } + +#ifdef DEBUG_S3C2410_IO_PORT + printf("IO_PORT: GPG bit %u value: %u\n", n, value); +#endif + + change = 0; + switch ((io->gpgcon >> (2 * n)) & 3) { + case 0: /* Input */ + io->gpgdat &= ~(1 << n); + io->gpgdat |= (value << n); + goto out; + + case 2: /* Interrupt */ + change = io->gpgdat ^ (value << n); + io->gpgdat &= ~(1 << n); + io->gpgdat |= (value << n); + break; + + case 1: /* Output */ + case 3: /* Reserved */ + goto out; + } + +#ifdef DEBUG_S3C2410_IO_PORT + printf("IO_PORT: GPGDAT %08x, change %08x\n", io->gpgdat, change); +#endif + + pending = -1; + level = 0; + switch ((io->extint1 >> (4 * n)) & 7) { + case 0: /* Low Level */ + if (!(io->gpgdat & (1 << n))) + pending = n; + level = 1; + break; + case 1: /* High Level */ + if (io->gpgdat & (1 << n)) + pending = n; + level = 1; + break; + case 2: /* Falling Edge */ + case 3: + if ((change & (1 << n)) && !(io->gpgdat & (1 << n))) + pending = n; + break; + case 4: /* Rising Edge */ + case 5: + if ((change & (1 << n)) && (io->gpgdat & (1 << n))) + pending = n; + break; + case 6: /* Any Edge */ + case 7: + if (change & (1 << n)) + pending = n; + break; + } + +#ifdef DEBUG_S3C2410_IO_PORT + printf("IO_PORT: IRQ: %d, (Level %u)\n", pending, level); +#endif + + if (-1 == pending) + goto out; + + io->eintpend |= 1 << (n + 8); + if (io->eintpend & ~(io->eintmask)) + s3c2410_intc_assert(x49gp, EINT8_23, 1); + +out: +// g_mutex_unlock(x49gp->memlock); + + return; +} + +void +s3c2410_io_port_f_set_bit(x49gp_t *x49gp, int n, uint32_t value) +{ + s3c2410_io_port_t *io = x49gp->s3c2410_io_port; + uint32_t change; + int pending, level; + + if (n > 7) + return; + +// g_mutex_lock(x49gp->memlock); + + change = 0; + switch ((io->gpfcon >> (2 * n)) & 3) { + case 0: /* Input */ + io->gpfdat &= ~(1 << n); + io->gpfdat |= (value << n); + goto out; + + case 2: /* Interrupt */ + change = io->gpfdat ^ (value << n); + io->gpfdat &= ~(1 << n); + io->gpfdat |= (value << n); + break; + + case 1: /* Output */ + case 3: /* Reserved */ + goto out; + } + + pending = -1; + level = 0; + switch ((io->extint0 >> (4 * n)) & 7) { + case 0: /* Low Level */ + if (!(io->gpfdat & (1 << n))) + pending = n; + level = 1; + break; + + case 1: /* High Level */ + if (io->gpfdat & (1 << n)) + pending = n; + level = 1; + break; + + case 2: /* Falling Edge */ + case 3: + if ((change & (1 << n)) && !(io->gpfdat & (1 << n))) + pending = n; + break; + + case 4: /* Rising Edge */ + case 5: + if ((change & (1 << n)) && (io->gpfdat & (1 << n))) + pending = n; + break; + + case 6: /* Any Edge */ + case 7: + if (change & (1 << n)) + pending = n; + break; + } + + if (-1 == pending) + goto out; + + switch (n) { + case 0: + s3c2410_intc_assert(x49gp, EINT0, level); + break; + case 1: + s3c2410_intc_assert(x49gp, EINT1, level); + break; + case 2: + s3c2410_intc_assert(x49gp, EINT2, level); + break; + case 3: + s3c2410_intc_assert(x49gp, EINT3, level); + break; + case 4: + case 5: + case 6: + case 7: + io->eintpend |= (1 << n); + if (io->eintpend & ~(io->eintmask)) + s3c2410_intc_assert(x49gp, EINT4_7, 1); + break; + } + +out: +// g_mutex_unlock(x49gp->memlock); + + return; +} + +static int +s3c2410_io_port_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_io_port_t *io = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < io->nr_regs; i++) { + reg = &io->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_io_port_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_io_port_t *io = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < io->nr_regs; i++) { + reg = &io->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_io_port_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_io_port_t *io = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (reset == X49GP_RESET_POWER_OFF) { + io->gstatus2 = 2; + return 0; + } + + for (i = 0; i < io->nr_regs; i++) { + reg = &io->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + if (reset == X49GP_RESET_WATCHDOG) { + io->gstatus2 = 4; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_io_port_readfn[] = +{ + s3c2410_io_port_read, + s3c2410_io_port_read, + s3c2410_io_port_read +}; + +static CPUWriteMemoryFunc *s3c2410_io_port_writefn[] = +{ + s3c2410_io_port_write, + s3c2410_io_port_write, + s3c2410_io_port_write +}; + +static int +s3c2410_io_port_init(x49gp_module_t *module) +{ + s3c2410_io_port_t *io; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + io = malloc(sizeof(s3c2410_io_port_t)); + if (NULL == io) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_io_port_data_init(io)) { + free(io); + return -ENOMEM; + } + + module->user_data = io; + module->x49gp->s3c2410_io_port = io; + io->x49gp = module->x49gp; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_io_port_readfn, + s3c2410_io_port_writefn, io); +#else + iotype = cpu_register_io_memory(s3c2410_io_port_readfn, + s3c2410_io_port_writefn, io); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_IO_PORT_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_io_port_exit(x49gp_module_t *module) +{ + s3c2410_io_port_t *io; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + io = module->user_data; + if (io->regs) + free(io->regs); + free(io); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_io_port_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-io-port", + s3c2410_io_port_init, + s3c2410_io_port_exit, + s3c2410_io_port_reset, + s3c2410_io_port_load, + s3c2410_io_port_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_lcd.c b/s3c2410_lcd.c new file mode 100644 index 0000000..3753851 --- /dev/null +++ b/s3c2410_lcd.c @@ -0,0 +1,425 @@ +/* $Id: s3c2410_lcd.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + + +typedef struct { + uint32_t lcdcon1; + uint32_t lcdcon2; + uint32_t lcdcon3; + uint32_t lcdcon4; + uint32_t lcdcon5; + uint32_t lcdsaddr1; + uint32_t lcdsaddr2; + uint32_t lcdsaddr3; + uint32_t redlut; + uint32_t greenlut; + uint32_t bluelut; + uint32_t dithmode; + uint32_t tpal; + uint32_t lcdintpnd; + uint32_t lcdsrcpnd; + uint32_t lcdintmsk; + uint32_t lpcsel; + uint32_t __unknown_68; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; +} s3c2410_lcd_t; + +static int +s3c2410_lcd_data_init(s3c2410_lcd_t *lcd) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(LCD, LCDCON1, 0x00000000, lcd->lcdcon1), + S3C2410_OFFSET(LCD, LCDCON2, 0x00000000, lcd->lcdcon2), + S3C2410_OFFSET(LCD, LCDCON3, 0x00000000, lcd->lcdcon3), + S3C2410_OFFSET(LCD, LCDCON4, 0x00000000, lcd->lcdcon4), + S3C2410_OFFSET(LCD, LCDCON5, 0x00000000, lcd->lcdcon5), + S3C2410_OFFSET(LCD, LCDSADDR1, 0x00000000, lcd->lcdsaddr1), + S3C2410_OFFSET(LCD, LCDSADDR2, 0x00000000, lcd->lcdsaddr2), + S3C2410_OFFSET(LCD, LCDSADDR3, 0x00000000, lcd->lcdsaddr3), + S3C2410_OFFSET(LCD, REDLUT, 0x00000000, lcd->redlut), + S3C2410_OFFSET(LCD, GREENLUT, 0x00000000, lcd->greenlut), + S3C2410_OFFSET(LCD, BLUELUT, 0x00000000, lcd->bluelut), + S3C2410_OFFSET(LCD, DITHMODE, 0x00000000, lcd->dithmode), + S3C2410_OFFSET(LCD, TPAL, 0x00000000, lcd->tpal), + S3C2410_OFFSET(LCD, LCDINTPND, 0x00000000, lcd->lcdintpnd), + S3C2410_OFFSET(LCD, LCDSRCPND, 0x00000000, lcd->lcdsrcpnd), + S3C2410_OFFSET(LCD, LCDINTMSK, 0x00000003, lcd->lcdintmsk), + S3C2410_OFFSET(LCD, LPCSEL, 0x00000004, lcd->lpcsel), + S3C2410_OFFSET(LCD, UNKNOWN_68, 0x00000000, lcd->__unknown_68) + }; + + memset(lcd, 0, sizeof(s3c2410_lcd_t)); + + lcd->regs = malloc(sizeof(regs)); + if (NULL == lcd->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(lcd->regs, regs, sizeof(regs)); + lcd->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +void +x49gp_schedule_lcd_update(x49gp_t *x49gp) +{ + unsigned long ticks; + + ticks = (x49gp->emulator_fclk / x49gp->PCLK_ratio) / 100; + + if (! x49gp_timer_pending(x49gp->lcd_timer)) { + x49gp_mod_timer(x49gp->lcd_timer, + x49gp_get_clock() + X49GP_LCD_REFRESH_INTERVAL); + } +} + +void +x49gp_lcd_update(x49gp_t *x49gp) +{ + x49gp_ui_t *ui = x49gp->ui; + s3c2410_lcd_t *lcd = x49gp->s3c2410_lcd; + GdkRectangle rect; + uint32_t bank, addr, offset, data; + int row, i, b, x, y; + + if (!(lcd->lcdcon1 & 1)) { + gdk_draw_drawable(ui->lcd_pixmap, ui->window->style->bg_gc[0], + ui->bg_pixmap, + ui->lcd_x_offset, ui->lcd_y_offset, + 0, 0, ui->lcd_width, ui->lcd_height); + goto done; + } + + bank = (lcd->lcdsaddr1 << 1) & 0x7fc00000; + addr = bank | ((lcd->lcdsaddr1 << 1) & 0x003ffffe); + + gdk_draw_drawable(ui->lcd_pixmap, ui->window->style->bg_gc[0], + ui->bg_pixmap, + ui->lcd_x_offset, ui->lcd_y_offset, + 0, 0, ui->lcd_width, ui->lcd_height); + + data = ldl_phys(addr + 16); + if (data & (1 << 3)) { + gdk_draw_rectangle(ui->lcd_pixmap, ui->ann_io_gc, TRUE, + 236, 0, 15, 12); + } + data = ldl_phys(addr + 36); + if (data & (1 << 3)) { + gdk_draw_rectangle(ui->lcd_pixmap, ui->ann_left_gc, TRUE, + 11, 0, 15, 12); + } + data = ldl_phys(addr + 56); + if (data & (1 << 3)) { + gdk_draw_rectangle(ui->lcd_pixmap, ui->ann_right_gc, TRUE, + 56, 0, 15, 12); + } + data = ldl_phys(addr + 76); + if (data & (1 << 3)) { + gdk_draw_rectangle(ui->lcd_pixmap, ui->ann_alpha_gc, TRUE, + 101, 0, 15, 12); + } + data = ldl_phys(addr + 96); + if (data & (1 << 3)) { + gdk_draw_rectangle(ui->lcd_pixmap, ui->ann_battery_gc, TRUE, + 146, 0, 15, 12); + } + data = ldl_phys(addr + 116); + if (data & (1 << 3)) { + gdk_draw_rectangle(ui->lcd_pixmap, ui->ann_busy_gc, TRUE, + 191, 0, 15, 12); + } + + offset = 0; + for (row = 0; row < ui->lcd_height / 2; row++) { + y = 2 * row; + x = 0; + for (i = 0; i < 5; i++) { + data = ldl_phys(addr + offset); + offset += sizeof(uint32_t); + + for (b = 0; b < 32; b++) { + if (data & (1 << b)) { + gdk_draw_rectangle(ui->lcd_pixmap, + ui->window->style->fg_gc[0], + TRUE, x, y + ui->lcd_top_margin, 2, 2); + } + x += 2; + + if (x >= ui->lcd_width) { + break; + } + } + } + } + + addr = bank | ((lcd->lcdsaddr2 << 1) & 0x003ffffe); + +done: + rect.x = 0; + rect.y = 0; + rect.width = ui->lcd_width; + rect.height = ui->lcd_height; + + gdk_window_invalidate_rect(ui->lcd_canvas->window, &rect, FALSE); +} + + +static uint32_t +s3c2410_lcd_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_lcd_t *lcd = opaque; + s3c2410_offset_t *reg; + uint32_t linecnt; + +#ifdef QEMU_OLD + offset -= S3C2410_LCD_BASE; +#endif + if (! S3C2410_OFFSET_OK(lcd, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(lcd, offset); + + switch (offset) { + case S3C2410_LCD_LCDCON1: + linecnt = (lcd->lcdcon1 >> 18) & 0x3ff; + if (linecnt > 0) { + linecnt--; + } else { + linecnt = (lcd->lcdcon2 >> 14) & 0x3ff; + } + + lcd->lcdcon1 &= ~(0x3ff << 18); + lcd->lcdcon1 |= (linecnt << 18); + } + +#ifdef DEBUG_S3C2410_LCD + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-lcd", S3C2410_LCD_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_lcd_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_lcd_t *lcd = opaque; + x49gp_t *x49gp = lcd->x49gp; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_LCD_BASE; +#endif + if (! S3C2410_OFFSET_OK(lcd, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(lcd, offset); + +#ifdef DEBUG_S3C2410_LCD + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-lcd", S3C2410_LCD_BASE, + reg->name, offset, data); +#endif + + switch (offset) { + case S3C2410_LCD_LCDCON1: + if ((lcd->lcdcon1 ^ data) & 1) { + x49gp_schedule_lcd_update(x49gp); + } + + lcd->lcdcon1 = (lcd->lcdcon1 & (0x3ff << 18)) | + (data & ~(0x3ff << 18)); + break; + default: + *(reg->datap) = data; + break; + } +} + + +static int +s3c2410_lcd_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_lcd_t *lcd = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < lcd->nr_regs; i++) { + reg = &lcd->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_lcd_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_lcd_t *lcd = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < lcd->nr_regs; i++) { + reg = &lcd->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_lcd_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_lcd_t *lcd = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < lcd->nr_regs; i++) { + reg = &lcd->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_lcd_readfn[] = +{ + s3c2410_lcd_read, + s3c2410_lcd_read, + s3c2410_lcd_read +}; + +static CPUWriteMemoryFunc *s3c2410_lcd_writefn[] = +{ + s3c2410_lcd_write, + s3c2410_lcd_write, + s3c2410_lcd_write +}; + +static int +s3c2410_lcd_init(x49gp_module_t *module) +{ + s3c2410_lcd_t *lcd; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + lcd = malloc(sizeof(s3c2410_lcd_t)); + if (NULL == lcd) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_lcd_data_init(lcd)) { + free(lcd); + return -ENOMEM; + } + + module->user_data = lcd; + module->x49gp->s3c2410_lcd = lcd; + lcd->x49gp = module->x49gp; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_lcd_readfn, + s3c2410_lcd_writefn, lcd); +#else + iotype = cpu_register_io_memory(s3c2410_lcd_readfn, + s3c2410_lcd_writefn, lcd); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_LCD_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_lcd_exit(x49gp_module_t *module) +{ + s3c2410_lcd_t *lcd; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + lcd = module->user_data; + if (lcd->regs) + free(lcd->regs); + free(lcd); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_lcd_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-lcd", + s3c2410_lcd_init, + s3c2410_lcd_exit, + s3c2410_lcd_reset, + s3c2410_lcd_load, + s3c2410_lcd_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_memc.c b/s3c2410_memc.c new file mode 100644 index 0000000..e013845 --- /dev/null +++ b/s3c2410_memc.c @@ -0,0 +1,283 @@ +/* $Id: s3c2410_memc.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +typedef struct { + uint32_t bwscon; + uint32_t bankcon0; + uint32_t bankcon1; + uint32_t bankcon2; + uint32_t bankcon3; + uint32_t bankcon4; + uint32_t bankcon5; + uint32_t bankcon6; + uint32_t bankcon7; + uint32_t refresh; + uint32_t banksize; + uint32_t mrsrb6; + uint32_t mrsrb7; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; +} s3c2410_memc_t; + +static int +s3c2410_memc_data_init(s3c2410_memc_t *memc) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(MEMC, BWSCON, 0x00000000, memc->bwscon), + S3C2410_OFFSET(MEMC, BANKCON0, 0x00000700, memc->bankcon0), + S3C2410_OFFSET(MEMC, BANKCON1, 0x00000700, memc->bankcon1), + S3C2410_OFFSET(MEMC, BANKCON2, 0x00000700, memc->bankcon2), + S3C2410_OFFSET(MEMC, BANKCON3, 0x00000700, memc->bankcon3), + S3C2410_OFFSET(MEMC, BANKCON4, 0x00000700, memc->bankcon4), + S3C2410_OFFSET(MEMC, BANKCON5, 0x00000700, memc->bankcon5), + S3C2410_OFFSET(MEMC, BANKCON6, 0x00018008, memc->bankcon6), + S3C2410_OFFSET(MEMC, BANKCON7, 0x00018008, memc->bankcon7), + S3C2410_OFFSET(MEMC, REFRESH, 0x00ac0000, memc->refresh), + S3C2410_OFFSET(MEMC, BANKSIZE, 0x00000000, memc->banksize), + S3C2410_OFFSET(MEMC, MRSRB6, 0, memc->mrsrb6), + S3C2410_OFFSET(MEMC, MRSRB7, 0, memc->mrsrb7), + }; + + memset(memc, 0, sizeof(s3c2410_memc_t)); + + memc->regs = malloc(sizeof(regs)); + if (NULL == memc->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(memc->regs, regs, sizeof(regs)); + memc->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static uint32_t +s3c2410_memc_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_memc_t *memc = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_MEMC_BASE; +#endif + if (! S3C2410_OFFSET_OK(memc, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(memc, offset); + +#ifdef DEBUG_S3C2410_MEMC + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-memc", S3C2410_MEMC_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_memc_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_memc_t *memc = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_MEMC_BASE; +#endif + if (! S3C2410_OFFSET_OK(memc, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(memc, offset); + +#ifdef DEBUG_S3C2410_MEMC + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-memc", S3C2410_MEMC_BASE, + reg->name, offset, data); +#endif + + *(reg->datap) = data; + +#ifdef DEBUG_S3C2410_MEMC + printf("%s:%u: env %p\n", __FUNCTION__, __LINE__, memc->x49gp->env); +#endif +} + +static int +s3c2410_memc_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_memc_t *memc = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < memc->nr_regs; i++) { + reg = &memc->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_memc_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_memc_t *memc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < memc->nr_regs; i++) { + reg = &memc->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_memc_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_memc_t *memc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < memc->nr_regs; i++) { + reg = &memc->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_memc_readfn[] = +{ + s3c2410_memc_read, + s3c2410_memc_read, + s3c2410_memc_read +}; + +static CPUWriteMemoryFunc *s3c2410_memc_writefn[] = +{ + s3c2410_memc_write, + s3c2410_memc_write, + s3c2410_memc_write +}; + +static int +s3c2410_memc_init(x49gp_module_t *module) +{ + s3c2410_memc_t *memc; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + memc = malloc(sizeof(s3c2410_memc_t)); + if (NULL == memc) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_memc_data_init(memc)) { + free(memc); + return -ENOMEM; + } + + module->user_data = memc; + memc->x49gp = module->x49gp; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_memc_readfn, + s3c2410_memc_writefn, memc); +#else + iotype = cpu_register_io_memory(s3c2410_memc_readfn, + s3c2410_memc_writefn, memc); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_MEMC_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_memc_exit(x49gp_module_t *module) +{ + s3c2410_memc_t *memc; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + memc = module->user_data; + if (memc->regs) + free(memc->regs); + free(memc); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_memc_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-memc", + s3c2410_memc_init, + s3c2410_memc_exit, + s3c2410_memc_reset, + s3c2410_memc_load, + s3c2410_memc_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_nand.c b/s3c2410_nand.c new file mode 100644 index 0000000..42c4c3f --- /dev/null +++ b/s3c2410_nand.c @@ -0,0 +1,264 @@ +/* $Id: s3c2410_nand.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +typedef struct { + uint32_t nfconf; + uint32_t nfcmd; + uint32_t nfaddr; + uint32_t nfdata; + uint32_t nfstat; + uint32_t nfecc; + + unsigned int nr_regs; + s3c2410_offset_t *regs; +} s3c2410_nand_t; + + +static int +s3c2410_nand_data_init(s3c2410_nand_t *nand) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(NAND, NFCONF, 0x00000000, nand->nfconf), + S3C2410_OFFSET(NAND, NFCMD, 0x00000000, nand->nfcmd), + S3C2410_OFFSET(NAND, NFADDR, 0x00000000, nand->nfaddr), + S3C2410_OFFSET(NAND, NFDATA, 0x00000000, nand->nfdata), + S3C2410_OFFSET(NAND, NFSTAT, 0x00000000, nand->nfstat), + S3C2410_OFFSET(NAND, NFECC, 0x00000000, nand->nfecc), + }; + + memset(nand, 0, sizeof(s3c2410_nand_t)); + + nand->regs = malloc(sizeof(regs)); + if (NULL == nand->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(nand->regs, regs, sizeof(regs)); + nand->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +uint32_t +s3c2410_nand_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_nand_t *nand = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_NAND_BASE; +#endif + if (! S3C2410_OFFSET_OK(nand, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(nand, offset); + +#ifdef DEBUG_S3C2410_NAND + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-nand", S3C2410_NAND_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +void +s3c2410_nand_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_nand_t *nand = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_NAND_BASE; +#endif + if (! S3C2410_OFFSET_OK(nand, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(nand, offset); + +#ifdef DEBUG_S3C2410_NAND + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-nand", S3C2410_NAND_BASE, + reg->name, offset, data); +#endif + + *(reg->datap) = data; +} + + +static int +s3c2410_nand_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_nand_t *nand = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < nand->nr_regs; i++) { + reg = &nand->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_nand_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_nand_t *nand = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < nand->nr_regs; i++) { + reg = &nand->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_nand_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_nand_t *nand = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < nand->nr_regs; i++) { + reg = &nand->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_nand_readfn[] = +{ + s3c2410_nand_read, + s3c2410_nand_read, + s3c2410_nand_read +}; + +static CPUWriteMemoryFunc *s3c2410_nand_writefn[] = +{ + s3c2410_nand_write, + s3c2410_nand_write, + s3c2410_nand_write +}; + +static int +s3c2410_nand_init(x49gp_module_t *module) +{ + s3c2410_nand_t *nand; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + nand = malloc(sizeof(s3c2410_nand_t)); + if (NULL == nand) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_nand_data_init(nand)) { + free(nand); + return -ENOMEM; + } + + module->user_data = nand; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_nand_readfn, + s3c2410_nand_writefn, nand); +#else + iotype = cpu_register_io_memory(s3c2410_nand_readfn, + s3c2410_nand_writefn, nand); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_NAND_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_nand_exit(x49gp_module_t *module) +{ + s3c2410_nand_t *nand; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + nand = module->user_data; + if (nand->regs) + free(nand->regs); + free(nand); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_nand_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-nand", + s3c2410_nand_init, + s3c2410_nand_exit, + s3c2410_nand_reset, + s3c2410_nand_load, + s3c2410_nand_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_power.c b/s3c2410_power.c new file mode 100644 index 0000000..5c109a0 --- /dev/null +++ b/s3c2410_power.c @@ -0,0 +1,375 @@ +/* $Id: s3c2410_power.c,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +static const uint32_t EXTCLK = 12000000; + +typedef struct { + uint32_t locktime; + uint32_t mpllcon; + uint32_t upllcon; + uint32_t clkcon; + uint32_t clkslow; + uint32_t clkdivn; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; +} s3c2410_power_t; + +static int +s3c2410_power_data_init(s3c2410_power_t *power) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(POWER, LOCKTIME, 0x00ffffff, power->locktime), + S3C2410_OFFSET(POWER, MPLLCON, 0x0005c080, power->mpllcon), + S3C2410_OFFSET(POWER, UPLLCON, 0x00028080, power->upllcon), + S3C2410_OFFSET(POWER, CLKCON, 0x0007fff0, power->clkcon), + S3C2410_OFFSET(POWER, CLKSLOW, 0x00000004, power->clkslow), + S3C2410_OFFSET(POWER, CLKDIVN, 0x00000000, power->clkdivn) + }; + + memset(power, 0, sizeof(s3c2410_power_t)); + + power->regs = malloc(sizeof(regs)); + if (NULL == power->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(power->regs, regs, sizeof(regs)); + power->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static uint32_t +s3c2410_power_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_power_t *power = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_POWER_BASE; +#endif + if (! S3C2410_OFFSET_OK(power, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(power, offset); + +#ifdef DEBUG_S3C2410_POWER + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-power", S3C2410_POWER_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_power_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_power_t *power = opaque; + x49gp_t *x49gp = power->x49gp; + s3c2410_offset_t *reg; + uint32_t mMdiv, mPdiv, mSdiv; + uint32_t uMdiv, uPdiv, uSdiv; + uint32_t slow_bit, slow_val; + +#ifdef QEMU_OLD + offset -= S3C2410_POWER_BASE; +#endif + if (! S3C2410_OFFSET_OK(power, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(power, offset); + +#ifdef DEBUG_S3C2410_POWER + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-power", S3C2410_POWER_BASE, + reg->name, offset, data); +#endif + + switch (offset) { + case S3C2410_POWER_CLKCON: + if (data & CLKCON_POWER_OFF) { + *(reg->datap) = 0x7fff0; +#ifdef DEBUG_S3C2410_POWER + printf("POWER: enter POWER_OFF\n"); +#endif + + x49gp_modules_reset(x49gp, X49GP_RESET_POWER_OFF); + +// if (x49gp->arm->NresetSig != LOW) { +// x49gp->arm->NresetSig = LOW; +// x49gp->arm->Exception++; +// } + x49gp_set_idle(x49gp, X49GP_ARM_OFF); + return; + } + + if (!(power->clkcon & CLKCON_IDLE) && (data & CLKCON_IDLE)) { + *(reg->datap) = data; +#ifdef DEBUG_S3C2410_POWER + printf("POWER: enter IDLE\n"); +#endif + x49gp_set_idle(x49gp, X49GP_ARM_SLEEP); + return; + } + + *(reg->datap) = data; + return; + + case S3C2410_POWER_LOCKTIME: + *(reg->datap) = data; + return; + + default: + *(reg->datap) = data; + break; + } + + mMdiv = (power->mpllcon >> 12) & 0xff; + mPdiv = (power->mpllcon >> 4) & 0x3f; + mSdiv = (power->mpllcon >> 0) & 0x03; + x49gp->MCLK = (((u64) EXTCLK) * ((u64) (mMdiv + 8))) / ((u64) ((mPdiv + 2) * (1 << mSdiv))); + + uMdiv = (power->upllcon >> 12) & 0xff; + uPdiv = (power->upllcon >> 4) & 0x3f; + uSdiv = (power->upllcon >> 0) & 0x03; + x49gp->UCLK = (((u64) EXTCLK) * ((u64) (uMdiv + 8))) / ((u64) ((uPdiv + 2) * (1 << uSdiv))); + + slow_bit = (power->clkslow & 0x10); + if (slow_bit) { + slow_val = (power->clkslow >> 0) & 0x07; + if (0 == slow_val) + x49gp->FCLK = EXTCLK; + else + x49gp->FCLK = EXTCLK / (2 * slow_val); + } else { + x49gp->FCLK = x49gp->MCLK; + } + + if (power->clkdivn & 4) { + x49gp->HCLK = x49gp->FCLK / 4; + x49gp->PCLK = x49gp->FCLK / 4; + x49gp->PCLK_ratio = 4; + } else { + switch (power->clkdivn & 3) { + case 0: + x49gp->HCLK = x49gp->FCLK; + x49gp->PCLK = x49gp->HCLK; + x49gp->PCLK_ratio = 1; + break; + case 1: + x49gp->HCLK = x49gp->FCLK; + x49gp->PCLK = x49gp->HCLK / 2; + x49gp->PCLK_ratio = 2; + break; + case 2: + x49gp->HCLK = x49gp->FCLK / 2; + x49gp->PCLK = x49gp->HCLK; + x49gp->PCLK_ratio = 2; + break; + case 3: + x49gp->HCLK = x49gp->FCLK / 2; + x49gp->PCLK = x49gp->HCLK / 2; + x49gp->PCLK_ratio = 4; + break; + } + } + +#ifdef DEBUG_S3C2410_POWER + printf("%s: EXTCLK %u, mdiv %u, pdiv %u, sdiv %u: MCLK %u\n", + __FUNCTION__, EXTCLK, mMdiv, mPdiv, mSdiv, x49gp->MCLK); + printf("%s: EXTCLK %u, mdiv %u, pdiv %u, sdiv %u: UCLK %u\n", + __FUNCTION__, EXTCLK, uMdiv, uPdiv, uSdiv, x49gp->UCLK); + printf("%s: FCLK %s: %u\n", + __FUNCTION__, slow_bit ? "(slow)" : "", x49gp->FCLK); + printf("%s: HCLK %u, PCLK %u\n", + __FUNCTION__, x49gp->HCLK, x49gp->PCLK); +#endif +} + +static int +s3c2410_power_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_power_t *power = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < power->nr_regs; i++) { + reg = &power->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + if (error) { + return error; + } + + s3c2410_power_write(power, S3C2410_POWER_BASE | S3C2410_POWER_CLKDIVN, + power->clkdivn); + return 0; +} + +static int +s3c2410_power_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_power_t *power = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < power->nr_regs; i++) { + reg = &power->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_power_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_power_t *power = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < power->nr_regs; i++) { + reg = &power->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_power_readfn[] = +{ + s3c2410_power_read, + s3c2410_power_read, + s3c2410_power_read +}; + +static CPUWriteMemoryFunc *s3c2410_power_writefn[] = +{ + s3c2410_power_write, + s3c2410_power_write, + s3c2410_power_write +}; + +static int +s3c2410_power_init(x49gp_module_t *module) +{ + s3c2410_power_t *power; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + power = malloc(sizeof(s3c2410_power_t)); + if (NULL == power) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_power_data_init(power)) { + free(power); + return -ENOMEM; + } + + module->user_data = power; + power->x49gp = module->x49gp; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_power_readfn, + s3c2410_power_writefn, power); +#else + iotype = cpu_register_io_memory(s3c2410_power_readfn, + s3c2410_power_writefn, power); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_POWER_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_power_exit(x49gp_module_t *module) +{ + s3c2410_power_t *power; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + power = module->user_data; + if (power->regs) + free(power->regs); + free(power); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_power_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-power", + s3c2410_power_init, + s3c2410_power_exit, + s3c2410_power_reset, + s3c2410_power_load, + s3c2410_power_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_rtc.c b/s3c2410_rtc.c new file mode 100644 index 0000000..4699b83 --- /dev/null +++ b/s3c2410_rtc.c @@ -0,0 +1,514 @@ +/* $Id: s3c2410_rtc.c,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +typedef struct { + uint32_t rtccon; + uint32_t ticnt; + uint32_t rtcalm; + uint32_t almsec; + uint32_t almmin; + uint32_t almhour; + uint32_t almdate; + uint32_t almmon; + uint32_t almyear; + uint32_t rtcrst; + uint32_t bcdsec; + uint32_t bcdmin; + uint32_t bcdhour; + uint32_t bcddate; + uint32_t bcdday; + uint32_t bcdmon; + uint32_t bcdyear; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; + x49gp_timer_t *tick_timer; + x49gp_timer_t *alarm_timer; + int64_t interval; /* us */ + int64_t expires; /* us */ +} s3c2410_rtc_t; + + +static int +s3c2410_rtc_data_init(s3c2410_rtc_t *rtc) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(RTC, RTCCON, 0x00, rtc->rtccon), + S3C2410_OFFSET(RTC, TICNT, 0x00, rtc->ticnt), + S3C2410_OFFSET(RTC, RTCALM, 0x00, rtc->rtcalm), + S3C2410_OFFSET(RTC, ALMSEC, 0x00, rtc->almsec), + S3C2410_OFFSET(RTC, ALMMIN, 0x00, rtc->almmin), + S3C2410_OFFSET(RTC, ALMHOUR, 0x00, rtc->almhour), + S3C2410_OFFSET(RTC, ALMDATE, 0x01, rtc->almdate), + S3C2410_OFFSET(RTC, ALMMON, 0x01, rtc->almmon), + S3C2410_OFFSET(RTC, ALMYEAR, 0x00, rtc->almyear), + S3C2410_OFFSET(RTC, RTCRST, 0x00, rtc->rtcrst), + S3C2410_OFFSET(RTC, BCDSEC, 0, rtc->bcdsec), + S3C2410_OFFSET(RTC, BCDMIN, 0, rtc->bcdmin), + S3C2410_OFFSET(RTC, BCDHOUR, 0, rtc->bcdhour), + S3C2410_OFFSET(RTC, BCDDATE, 0, rtc->bcddate), + S3C2410_OFFSET(RTC, BCDDAY, 0, rtc->bcdday), + S3C2410_OFFSET(RTC, BCDMON, 0, rtc->bcdmon), + S3C2410_OFFSET(RTC, BCDYEAR, 0, rtc->bcdyear) + }; + + memset(rtc, 0, sizeof(s3c2410_rtc_t)); + + rtc->regs = malloc(sizeof(regs)); + if (NULL == rtc->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(rtc->regs, regs, sizeof(regs)); + rtc->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static __inline__ uint32_t bin2bcd(uint32_t bin) +{ + return ((bin / 10) << 4) | (bin % 10); +} + +static __inline__ uint32_t bcd2bin(uint32_t bcd) +{ + return ((bcd >> 4) * 10) + (bcd & 0x0f); +} + +static void +s3c2410_rtc_timeout(void * user_data) +{ + s3c2410_rtc_t *rtc = user_data; + x49gp_t *x49gp = rtc->x49gp; + int64_t now, us; + + if (!(rtc->ticnt & 0x80)) { + return; + } + +#ifdef DEBUG_S3C2410_RTC + printf("RTC: assert TICK interrupt\n"); +#endif + + s3c2410_intc_assert(x49gp, INT_TICK, 0); + + now = x49gp_get_clock(); + while (rtc->expires <= now) { + rtc->expires += rtc->interval; + } + + us = rtc->expires - now; + if (us < 1000) + us = 1000; + +#ifdef DEBUG_S3C2410_RTC + printf("RTC: restart TICK timer (%llu us)\n", us); +#endif + + x49gp_mod_timer(rtc->tick_timer, rtc->expires); +} + +static int +s3c2410_rtc_set_ticnt(s3c2410_rtc_t *rtc) +{ + int64_t now, us; + + if (x49gp_timer_pending(rtc->tick_timer)) { + x49gp_del_timer(rtc->tick_timer); +#ifdef DEBUG_S3C2410_RTC + printf("RTC: stop TICK timer\n"); +#endif + } + + if (!(rtc->ticnt & 0x80)) { + return 0; + } + + us = (((rtc->ticnt & 0x7f) + 1) * 1000000) / 128; + + rtc->interval = us; + if (rtc->interval < 1000) + rtc->interval = 1000; + + now = x49gp_get_clock(); + rtc->expires = now + rtc->interval; + + us = rtc->expires - now; + if (us < 1000) + us = 1000; + +#ifdef DEBUG_S3C2410_RTC + printf("RTC: start TICK timer (%lld us)\n", us); +#endif + + x49gp_mod_timer(rtc->tick_timer, rtc->expires); + return 0; +} + +static void +s3c2410_rtc_alarm(void * user_data) +{ + s3c2410_rtc_t *rtc = user_data; + x49gp_t *x49gp = rtc->x49gp; + struct tm *tm; + struct timeval tv; + int64_t now, us; + int match = 1; + + if (!(rtc->rtcalm & 0x40)) { + return; + } + + gettimeofday(&tv, NULL); + tm = localtime(&tv.tv_sec); + + now = x49gp_get_clock(); + us = 1000000LL - tv.tv_usec; + + if (match && (rtc->rtcalm & 0x01)) { + if (tm->tm_sec != bcd2bin(rtc->almsec)) + match = 0; + } + if (match && (rtc->rtcalm & 0x02)) { + if (tm->tm_min != bcd2bin(rtc->almmin)) + match = 0; + } + if (match && (rtc->rtcalm & 0x04)) { + if (tm->tm_hour != bcd2bin(rtc->almhour)) + match = 0; + } + if (match && (rtc->rtcalm & 0x08)) { + if (tm->tm_mday != bcd2bin(rtc->almdate)) + match = 0; + } + if (match && (rtc->rtcalm & 0x10)) { + if ((tm->tm_mon + 1) != bcd2bin(rtc->almmon)) + match = 0; + } + if (match && (rtc->rtcalm & 0x20)) { + if ((tm->tm_year % 100) != bcd2bin(rtc->almyear)) + match = 0; + } + + if (match) { +#ifdef DEBUG_S3C2410_RTC + printf("RTC: assert ALARM interrupt\n"); +#endif + s3c2410_intc_assert(x49gp, INT_RTC, 0); + } + +#ifdef DEBUG_S3C2410_RTC + printf("RTC: reload ALARM timer (%lld us)\n", us); +#endif + + x49gp_mod_timer(rtc->alarm_timer, now + us); +} + +static int +s3c2410_rtc_set_rtcalm(s3c2410_rtc_t *rtc) +{ + struct tm *tm; + struct timeval tv; + int64_t now, us; + + if (!(rtc->rtcalm & 0x40)) { + x49gp_del_timer(rtc->alarm_timer); + return 0; + } + + gettimeofday(&tv, NULL); + tm = localtime(&tv.tv_sec); + + now = x49gp_get_clock(); + us = 1000000LL - tv.tv_usec; + +#ifdef DEBUG_S3C2410_RTC + printf("RTC: start ALARM timer (%lld us)\n", us); +#endif + + x49gp_mod_timer(rtc->alarm_timer, now + us); + return 0; +} + +static uint32_t +s3c2410_rtc_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_rtc_t *rtc = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_RTC_BASE; +#endif + if (! S3C2410_OFFSET_OK(rtc, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(rtc, offset); + + if (S3C2410_RTC_BCDSEC <= offset && offset <= S3C2410_RTC_BCDYEAR) { + struct tm *tm; + time_t t; + + t = time(0); + tm = localtime(&t); + + switch (offset) { + case S3C2410_RTC_BCDSEC: + *(reg->datap) = bin2bcd(tm->tm_sec); + break; + case S3C2410_RTC_BCDMIN: + *(reg->datap) = bin2bcd(tm->tm_min); + break; + case S3C2410_RTC_BCDHOUR: + *(reg->datap) = bin2bcd(tm->tm_hour); + break; + case S3C2410_RTC_BCDDATE: + *(reg->datap) = bin2bcd(tm->tm_mday); + break; + case S3C2410_RTC_BCDDAY: + *(reg->datap) = bin2bcd(tm->tm_wday + 1); + break; + case S3C2410_RTC_BCDMON: + *(reg->datap) = bin2bcd(tm->tm_mon + 1); + break; + case S3C2410_RTC_BCDYEAR: + *(reg->datap) = bin2bcd(tm->tm_year % 100); + break; + } + } + +#ifdef DEBUG_S3C2410_RTC + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-rtc", S3C2410_RTC_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_rtc_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_rtc_t *rtc = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_RTC_BASE; +#endif + if (! S3C2410_OFFSET_OK(rtc, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(rtc, offset); + +#ifdef DEBUG_S3C2410_RTC + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-rtc", S3C2410_RTC_BASE, + reg->name, offset, data); +#endif + + switch (offset) { + case S3C2410_RTC_TICNT: + *(reg->datap) = data; + s3c2410_rtc_set_ticnt(rtc); + break; + case S3C2410_RTC_RTCALM: + *(reg->datap) = data; + s3c2410_rtc_set_rtcalm(rtc); + break; + default: + *(reg->datap) = data; + break; + } +} + +static int +s3c2410_rtc_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_rtc_t *rtc = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < rtc->nr_regs; i++) { + reg = &rtc->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + s3c2410_rtc_set_ticnt(rtc); + s3c2410_rtc_set_rtcalm(rtc); + + return error; +} + +static int +s3c2410_rtc_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_rtc_t *rtc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < rtc->nr_regs; i++) { + reg = &rtc->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_rtc_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_rtc_t *rtc = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < (S3C2410_RTC_RTCALM >> 2); i++) { + reg = &rtc->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + s3c2410_rtc_set_ticnt(rtc); + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_rtc_readfn[] = +{ + s3c2410_rtc_read, + s3c2410_rtc_read, + s3c2410_rtc_read +}; + +static CPUWriteMemoryFunc *s3c2410_rtc_writefn[] = +{ + s3c2410_rtc_write, + s3c2410_rtc_write, + s3c2410_rtc_write +}; + +static int +s3c2410_rtc_init(x49gp_module_t *module) +{ + s3c2410_rtc_t *rtc; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + rtc = malloc(sizeof(s3c2410_rtc_t)); + if (NULL == rtc) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + module->x49gp->progname, __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_rtc_data_init(rtc)) { + free(rtc); + return -ENOMEM; + } + + module->user_data = rtc; + rtc->x49gp = module->x49gp; + + rtc->tick_timer = x49gp_new_timer(X49GP_TIMER_REALTIME, + s3c2410_rtc_timeout, rtc); + rtc->alarm_timer = x49gp_new_timer(X49GP_TIMER_REALTIME, + s3c2410_rtc_alarm, rtc); + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_rtc_readfn, + s3c2410_rtc_writefn, rtc); +#else + iotype = cpu_register_io_memory(s3c2410_rtc_readfn, + s3c2410_rtc_writefn, rtc); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_RTC_BASE, S3C2410_MAP_SIZE, iotype); + + return 0; +} + +static int +s3c2410_rtc_exit(x49gp_module_t *module) +{ + s3c2410_rtc_t *rtc; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + rtc = module->user_data; + if (rtc->regs) + free(rtc->regs); + free(rtc); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_rtc_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-rtc", + s3c2410_rtc_init, + s3c2410_rtc_exit, + s3c2410_rtc_reset, + s3c2410_rtc_load, + s3c2410_rtc_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_sdi.c b/s3c2410_sdi.c new file mode 100644 index 0000000..5e6386d --- /dev/null +++ b/s3c2410_sdi.c @@ -0,0 +1,722 @@ +/* $Id: s3c2410_sdi.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +typedef struct { + uint32_t sdicon; + uint32_t sdipre; + uint32_t sdicarg; + uint32_t sdiccon; + uint32_t sdicsta; + uint32_t sdirsp0; + uint32_t sdirsp1; + uint32_t sdirsp2; + uint32_t sdirsp3; + uint32_t sdidtimer; + uint32_t sdibsize; + uint32_t sdidcon; + uint32_t sdidcnt; + uint32_t sdidsta; + uint32_t sdifsta; + uint32_t sdidat; + uint32_t sdiimsk; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; + + BlockDriverState *bs; + int fd; + + unsigned char *read_data; + uint32_t nr_read_data; + uint32_t read_offset; + unsigned int read_index; + + unsigned char *write_data; + uint32_t nr_write_data; + uint32_t write_offset; + unsigned int write_index; + + int multiple_block; +} s3c2410_sdi_t; + + +static int +s3c2410_sdi_data_init(s3c2410_sdi_t *sdi) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(SDI, SDICON, 0x00000000, sdi->sdicon), + S3C2410_OFFSET(SDI, SDIPRE, 0x00000000, sdi->sdipre), + S3C2410_OFFSET(SDI, SDICARG, 0x00000000, sdi->sdicarg), + S3C2410_OFFSET(SDI, SDICCON, 0x00000000, sdi->sdiccon), + S3C2410_OFFSET(SDI, SDICSTA, 0x00000000, sdi->sdicsta), + S3C2410_OFFSET(SDI, SDIRSP0, 0x00000000, sdi->sdirsp0), + S3C2410_OFFSET(SDI, SDIRSP1, 0x00000000, sdi->sdirsp1), + S3C2410_OFFSET(SDI, SDIRSP2, 0x00000000, sdi->sdirsp2), + S3C2410_OFFSET(SDI, SDIRSP3, 0x00000000, sdi->sdirsp3), + S3C2410_OFFSET(SDI, SDIDTIMER, 0x00002000, sdi->sdidtimer), + S3C2410_OFFSET(SDI, SDIBSIZE, 0x00000000, sdi->sdibsize), + S3C2410_OFFSET(SDI, SDIDCON, 0x00000000, sdi->sdidcon), + S3C2410_OFFSET(SDI, SDIDCNT, 0x00000000, sdi->sdidcnt), + S3C2410_OFFSET(SDI, SDIDSTA, 0x00000000, sdi->sdidsta), + S3C2410_OFFSET(SDI, SDIFSTA, 0x00000000, sdi->sdifsta), + S3C2410_OFFSET(SDI, SDIDAT, 0x00000000, sdi->sdidat), + S3C2410_OFFSET(SDI, SDIIMSK, 0x00000000, sdi->sdiimsk) + }; + + memset(sdi, 0, sizeof(s3c2410_sdi_t)); + + sdi->regs = malloc(sizeof(regs)); + if (NULL == sdi->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(sdi->regs, regs, sizeof(regs)); + sdi->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static int +sdcard_read(s3c2410_sdi_t *sdi) +{ + uint32_t offset; + uint32_t size; + int error; + + offset = sdi->read_offset; + size = sdi->nr_read_data; + +#ifdef DEBUG_S3C2410_SDI + printf("SDI: card read %4u at %08x\n", size, offset); +#endif + + sdi->nr_read_data = 0; + sdi->read_index = 0; + + if ((sdi->fd < 0) && (sdi->bs == NULL)) { + return -ENODEV; + } + + sdi->read_data = malloc(size); + if (NULL == sdi->read_data) { + return -ENOMEM; + } + + if (sdi->bs) { + sdi->nr_read_data = bdrv_pread(sdi->bs, offset, sdi->read_data, size); + } else { + if (sdi->read_offset != lseek(sdi->fd, offset, SEEK_SET)) { + error = errno; + sdi->nr_read_data = 0; + free(sdi->read_data); + sdi->read_data = NULL; + return -error; + } + + sdi->nr_read_data = read(sdi->fd, sdi->read_data, size); + } + + if (sdi->nr_read_data != size) { + error = errno; + sdi->nr_read_data = 0; + free(sdi->read_data); + sdi->read_data = NULL; + return -error; + } + + return 0; +} + +static int +sdcard_write_prepare(s3c2410_sdi_t *sdi) +{ + sdi->write_index = 0; + + if ((sdi->fd < 0) && (sdi->bs == NULL)) { + sdi->nr_write_data = 0; + return -ENODEV; + } + + sdi->write_data = malloc(sdi->nr_write_data); + if (NULL == sdi->write_data) { + sdi->nr_write_data = 0; + return -ENOMEM; + } + + return 0; +} + +static int +sdcard_write(s3c2410_sdi_t *sdi) +{ + uint32_t offset; + uint32_t size; + int error; + + offset = sdi->write_offset; + size = sdi->nr_write_data; + +#ifdef DEBUG_S3C2410_SDI + printf("SDI: card write %4u at %08x\n", size, offset); +#endif + + sdi->write_index = 0; + + if (sdi->bs) { + error = bdrv_pwrite(sdi->bs, offset, sdi->write_data, size); + } else { + if (sdi->fd < 0) { + free(sdi->write_data); + sdi->write_data = NULL; + return -ENODEV; + } + + if (sdi->write_offset != lseek(sdi->fd, offset, SEEK_SET)) { + error = errno; + free(sdi->write_data); + sdi->write_data = NULL; + return -error; + } + + error = write(sdi->fd, sdi->write_data, size); + } + + if (error != size) { + error = errno; + free(sdi->write_data); + sdi->write_data = NULL; + return -error; + } + + free(sdi->write_data); + sdi->write_data = NULL; + return 0; +} + +static uint32_t +s3c2410_sdi_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_sdi_t *sdi = opaque; + s3c2410_offset_t *reg; + unsigned int read_avail, write_avail; + +#ifdef QEMU_OLD + offset -= S3C2410_SDI_BASE; +#endif + if (! S3C2410_OFFSET_OK(sdi, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(sdi, offset); + + switch (offset) { + case S3C2410_SDI_SDIDAT: + read_avail = sdi->nr_read_data - sdi->read_index; + if (read_avail > 0) { + *(reg->datap) = sdi->read_data[sdi->read_index++] << 24; + if ((sdi->nr_read_data - sdi->read_index) > 0) { + *(reg->datap) |= sdi->read_data[sdi->read_index++] << 16; + } + if ((sdi->nr_read_data - sdi->read_index) > 0) { + *(reg->datap) |= sdi->read_data[sdi->read_index++] << 8; + } + if ((sdi->nr_read_data - sdi->read_index) > 0) { + *(reg->datap) |= sdi->read_data[sdi->read_index++] << 0; + } + + if (sdi->read_index >= sdi->nr_read_data) { + sdi->read_index = 0; + free(sdi->read_data); + sdi->read_data = NULL; + + if (sdi->multiple_block) { + sdi->read_offset += sdi->nr_read_data; + + sdcard_read(sdi); + + sdi->sdidsta |= (1 << 9) | (1 << 4); + } else { + sdi->nr_read_data = 0; + } + } + + read_avail = sdi->nr_read_data - sdi->read_index; + + sdi->sdidcnt = read_avail; + } + break; + + case S3C2410_SDI_SDIFSTA: + *(reg->datap) = (1 << 13) | (1 << 10); + + read_avail = sdi->nr_read_data - sdi->read_index; + if (read_avail > 63) + *(reg->datap) |= (1 << 12) | (1 << 8) | (1 << 7) | 0x40; + else if (read_avail > 31) + *(reg->datap) |= (1 << 12) | (1 << 9) | (1 << 7) | read_avail; + else + *(reg->datap) |= (1 << 12) | (1 << 9) | read_avail; + break; + + case S3C2410_SDI_SDIDSTA: + *(reg->datap) &= ~(0x0f); + + read_avail = sdi->nr_read_data - sdi->read_index; + if (read_avail) { + *(reg->datap) |= (1 << 0); + } + + write_avail = sdi->nr_write_data - sdi->write_index; + if (write_avail) { + *(reg->datap) |= (1 << 1); + } + } + +#ifdef DEBUG_S3C2410_SDI + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-sdi", S3C2410_SDI_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_sdi_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_sdi_t *sdi = opaque; + s3c2410_offset_t *reg; + unsigned int read_avail, write_avail; + +#ifdef QEMU_OLD + offset -= S3C2410_SDI_BASE; +#endif + if (! S3C2410_OFFSET_OK(sdi, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(sdi, offset); + +#ifdef DEBUG_S3C2410_SDI + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-sdi", S3C2410_SDI_BASE, + reg->name, offset, data); +#endif + + switch (offset) { + case S3C2410_SDI_SDICON: + *(reg->datap) = data & ~(2); + break; + + case S3C2410_SDI_SDICCON: + *(reg->datap) = data; + +#ifdef DEBUG_S3C2410_SDI + printf("SDI: cmd %02u, start %u, %s response %u, data %u, abort %u\n", + data & 0x3f, (data >> 8) & 1, + (data >> 10) & 1 ? "long" : "short", + (data >> 9) & 1, + (data >> 11) & 1, (data >> 12) & 1); +#endif + + if (data & (1 << 8)) { + sdi->sdicsta |= (1 << 11); + } else { + sdi->sdicsta = 0; + sdi->sdirsp0 = 0; + sdi->sdirsp1 = 0; + sdi->sdirsp2 = 0; + sdi->sdirsp3 = 0; + data = 0; + } + + sdi->sdicsta &= ~(1 << 12); + sdi->sdicsta &= ~(0xff); + + if (data & (1 << 9)) { + sdi->sdicsta |= (1 << 9); + + switch (data & 0x3f) { + case 0: + break; + + case 1: + sdi->sdicsta |= 0x3f; + sdi->sdirsp0 = 0x80ff8000; + sdi->sdirsp1 = 0xff000000; + break; + + case 2: + sdi->sdicsta |= 0x3f; + sdi->sdirsp0 = 0x02000053; + sdi->sdirsp1 = 0x444d3036; + sdi->sdirsp2 = 0x34011234; + sdi->sdirsp3 = 0x567813ff; + break; + + case 3: + sdi->sdicsta |= 3; + sdi->sdirsp0 = 0x00000700; + sdi->sdirsp1 = 0xff000000; + break; + + case 7: + sdi->sdicsta |= 7; + sdi->sdirsp0 = 0x00000900; + sdi->sdirsp1 = 0xff000000; + break; + + case 9: + { + /* c_size_mult + 2 + * blocks = (c_size + 1) * 2 + * + * size = bl_len * blocks; + */ + uint32_t write_bl_len = 9; + uint32_t read_bl_len = 9; + uint32_t c_size_mult = 7; + uint32_t c_size = 256 - 1; + + sdi->sdicsta |= 9; + /* 127 .. 96 */ + sdi->sdirsp0 = 0x8c0f002a; + /* 95 .. 64 */ + sdi->sdirsp1 = 0x0f508000 | ((c_size & 0xffc) >> 2) | ((read_bl_len & 0xf) << 16); + /* 63 .. 32 */ + sdi->sdirsp2 = 0x2dd47c1f | ((c_size & 0x003) << 30) | ((c_size_mult & 7) << 15); + /* 31 .. 0 */ + sdi->sdirsp3 = 0x8a0040ff | ((write_bl_len & 0xf) << 22); + break; + } + + case 10: + sdi->sdicsta |= 10; + sdi->sdirsp0 = 0x02000053; + sdi->sdirsp1 = 0x444d3036; + sdi->sdirsp2 = 0x34011234; + sdi->sdirsp3 = 0x567813ff; + break; + + case 12: + sdi->multiple_block = 0; + + sdi->sdicsta |= 12; + sdi->sdirsp0 = 0x00000900; + sdi->sdirsp1 = 0xff000000; + break; + + case 18: + sdi->multiple_block = 1; + /* fall through */ + case 17: + sdi->read_offset = sdi->sdicarg; + sdi->nr_read_data = sdi->sdibsize & 0xfff; + + sdcard_read(sdi); + + read_avail = sdi->nr_read_data - sdi->read_index; + + sdi->sdicsta |= data & 0x3f; + sdi->sdirsp0 = 0x00000b00; + sdi->sdirsp1 = 0xff000000; + sdi->sdidcnt = (1 << 12) | read_avail; + sdi->sdidsta |= (1 << 9) | (1 << 4); + break; + + case 25: + sdi->multiple_block = 1; + /* fall through */ + case 24: + sdi->write_offset = sdi->sdicarg; + sdi->nr_write_data = sdi->sdibsize & 0xfff; + + sdcard_write_prepare(sdi); + + write_avail = sdi->nr_write_data - sdi->write_index; + + sdi->sdicsta |= data & 0x3f; + sdi->sdirsp0 = 0x00000d00; + sdi->sdirsp1 = 0xff000000; + sdi->sdidcnt = (1 << 12) | write_avail; + break; + + default: + printf("unhandled SDcard CMD %u\n", (data & 0x3f)); + + sdi->sdicsta |= (1 << 10); + sdi->sdicsta &= ~(1 << 9); + +// abort(); + break; + } + } + + break; + + case S3C2410_SDI_SDIDAT: + *(reg->datap) = data; + + write_avail = sdi->nr_write_data - sdi->write_index; + if (write_avail > 0) { + sdi->write_data[sdi->write_index++] = (*(reg->datap) >> 24) & 0xff; + if ((sdi->nr_write_data - sdi->write_index) > 0) { + sdi->write_data[sdi->write_index++] = (*(reg->datap) >> 16) & 0xff; + } + if ((sdi->nr_write_data - sdi->write_index) > 0) { + sdi->write_data[sdi->write_index++] = (*(reg->datap) >> 8) & 0xff; + } + if ((sdi->nr_write_data - sdi->write_index) > 0) { + sdi->write_data[sdi->write_index++] = (*(reg->datap) >> 0) & 0xff; + } + + if (sdi->write_index >= sdi->nr_write_data) { + sdcard_write(sdi); + + if (sdi->multiple_block) { + sdi->write_offset += sdi->nr_write_data; + sdcard_write_prepare(sdi); + } else { + sdi->nr_write_data = 0; + } + + sdi->sdidsta |= (1 << 9) | (1 << 4); + } + + write_avail = sdi->nr_write_data - sdi->write_index; + + sdi->sdidcnt = write_avail; + } + break; + + case S3C2410_SDI_SDICSTA: + *(reg->datap) &= ~(data & 0xf00); + break; + + case S3C2410_SDI_SDIDSTA: + *(reg->datap) &= ~(data & 0x3f8); + break; + + case S3C2410_SDI_SDIFSTA: + /* ignore */ + break; + + default: + *(reg->datap) = data; + break; + } +} + +static int +s3c2410_sdi_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_sdi_t *sdi = module->user_data; + s3c2410_offset_t *reg; + char *filename; + char vvfat_name[1024]; + struct stat st; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + sdi->fd = -1; + sdi->bs = NULL; + + filename = x49gp_module_get_filename(module, key, "filename"); + if (filename && (stat(filename, &st) == 0)) { + if (S_ISDIR(st.st_mode)) { + sprintf(vvfat_name, "fat:rw:16:%s", filename); + sdi->bs = bdrv_new(""); + if (sdi->bs) { + error = bdrv_open(sdi->bs, vvfat_name, 0); + fprintf(stderr, "%s:%u: bdrv_open(%s): %d\n", + __FUNCTION__, __LINE__, vvfat_name, error); + if (error != 0) { + bdrv_delete(sdi->bs); + sdi->bs = NULL; + } + } + } else { + sdi->fd = open(filename, O_RDWR); + } + g_free(filename); + } + + if ((sdi->bs != NULL) || (sdi->fd >= 0)) { + s3c2410_io_port_f_set_bit(sdi->x49gp, 3, 1); + } else { + s3c2410_io_port_f_set_bit(sdi->x49gp, 3, 0); + } + + for (i = 0; i < sdi->nr_regs; i++) { + reg = &sdi->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_sdi_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_sdi_t *sdi = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < sdi->nr_regs; i++) { + reg = &sdi->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_sdi_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_sdi_t *sdi = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < sdi->nr_regs; i++) { + reg = &sdi->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_sdi_readfn[] = +{ + s3c2410_sdi_read, + s3c2410_sdi_read, + s3c2410_sdi_read +}; + +static CPUWriteMemoryFunc *s3c2410_sdi_writefn[] = +{ + s3c2410_sdi_write, + s3c2410_sdi_write, + s3c2410_sdi_write +}; + +static int +s3c2410_sdi_init(x49gp_module_t *module) +{ + s3c2410_sdi_t *sdi; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + sdi = malloc(sizeof(s3c2410_sdi_t)); + if (NULL == sdi) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + module->x49gp->progname, __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_sdi_data_init(sdi)) { + free(sdi); + return -ENOMEM; + } + + module->user_data = sdi; + sdi->x49gp = module->x49gp; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_sdi_readfn, + s3c2410_sdi_writefn, sdi); +#else + iotype = cpu_register_io_memory(s3c2410_sdi_readfn, + s3c2410_sdi_writefn, sdi); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_SDI_BASE, S3C2410_MAP_SIZE, iotype); + + bdrv_init(); + return 0; +} + +static int +s3c2410_sdi_exit(x49gp_module_t *module) +{ + s3c2410_sdi_t *sdi; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + sdi = module->user_data; + if (sdi->regs) + free(sdi->regs); + free(sdi); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_sdi_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-sdi", + s3c2410_sdi_init, + s3c2410_sdi_exit, + s3c2410_sdi_reset, + s3c2410_sdi_load, + s3c2410_sdi_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_spi.c b/s3c2410_spi.c new file mode 100644 index 0000000..4b04677 --- /dev/null +++ b/s3c2410_spi.c @@ -0,0 +1,302 @@ +/* $Id: s3c2410_spi.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +typedef struct { + uint32_t spicon0; + uint32_t spista0; + uint32_t sppin0; + uint32_t sppre0; + uint32_t sptdat0; + uint32_t sprdat0; + uint32_t spicon1; + uint32_t spista1; + uint32_t sppin1; + uint32_t sppre1; + uint32_t sptdat1; + uint32_t sprdat1; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; +} s3c2410_spi_t; + +static int +s3c2410_spi_data_init(s3c2410_spi_t *spi) +{ + s3c2410_offset_t regs[] = + { + S3C2410_OFFSET(SPI, SPICON0, 0x00000000, spi->spicon0), + S3C2410_OFFSET(SPI, SPISTA0, 0x00000000, spi->spista0), + S3C2410_OFFSET(SPI, SPPIN0, 0x00000000, spi->sppin0), + S3C2410_OFFSET(SPI, SPPRE0, 0x00000000, spi->sppre0), + S3C2410_OFFSET(SPI, SPTDAT0, 0x00000000, spi->sptdat0), + S3C2410_OFFSET(SPI, SPRDAT0, 0x00000000, spi->sprdat0), + S3C2410_OFFSET(SPI, SPICON1, 0x00000000, spi->spicon1), + S3C2410_OFFSET(SPI, SPISTA1, 0x00000000, spi->spista1), + S3C2410_OFFSET(SPI, SPPIN1, 0x00000000, spi->sppin1), + S3C2410_OFFSET(SPI, SPPRE1, 0x00000000, spi->sppre1), + S3C2410_OFFSET(SPI, SPTDAT1, 0x00000000, spi->sptdat1), + S3C2410_OFFSET(SPI, SPRDAT1, 0x00000000, spi->sprdat1), + }; + + memset(spi, 0, sizeof(s3c2410_spi_t)); + + spi->regs = malloc(sizeof(regs)); + if (NULL == spi->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(spi->regs, regs, sizeof(regs)); + spi->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +uint32_t +s3c2410_spi_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_spi_t *spi = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_SPI_BASE; +#endif + if (! S3C2410_OFFSET_OK(spi, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(spi, offset); + +#ifdef DEBUG_S3C2410_SPI + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-spi", S3C2410_SPI_BASE, + reg->name, offset, *(reg->datap)); +#endif + + switch (offset) { + case S3C2410_SPI_SPRDAT0: + spi->spista0 &= ~(1); + break; + + case S3C2410_SPI_SPRDAT1: + spi->spista1 &= ~(1); + break; + } + + return *(reg->datap); +} + +void +s3c2410_spi_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_spi_t *spi = opaque; + x49gp_t *x49gp = spi->x49gp; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_SPI_BASE; +#endif + if (! S3C2410_OFFSET_OK(spi, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(spi, offset); + +#ifdef DEBUG_S3C2410_SPI + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-spi", S3C2410_SPI_BASE, + reg->name, offset, data); +#endif + + *(reg->datap) = data; + + switch (offset) { + case S3C2410_SPI_SPTDAT0: + spi->spista0 |= 1; + s3c2410_intc_assert(x49gp, INT_SPI0, 0); + break; + + case S3C2410_SPI_SPTDAT1: + spi->spista1 |= 1; + s3c2410_intc_assert(x49gp, INT_SPI1, 0); + break; + } +} + +static int +s3c2410_spi_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_spi_t *spi = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < spi->nr_regs; i++) { + reg = &spi->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_spi_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_spi_t *spi = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < spi->nr_regs; i++) { + reg = &spi->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_spi_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_spi_t *spi = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < spi->nr_regs; i++) { + reg = &spi->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_spi_readfn[] = +{ + s3c2410_spi_read, + s3c2410_spi_read, + s3c2410_spi_read +}; + +static CPUWriteMemoryFunc *s3c2410_spi_writefn[] = +{ + s3c2410_spi_write, + s3c2410_spi_write, + s3c2410_spi_write +}; + +static int +s3c2410_spi_init(x49gp_module_t *module) +{ + s3c2410_spi_t *spi; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + spi = malloc(sizeof(s3c2410_spi_t)); + if (NULL == spi) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_spi_data_init(spi)) { + free(spi); + return -ENOMEM; + } + + module->user_data = spi; + spi->x49gp = module->x49gp; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_spi_readfn, + s3c2410_spi_writefn, spi); +#else + iotype = cpu_register_io_memory(s3c2410_spi_readfn, + s3c2410_spi_writefn, spi); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_SPI_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_spi_exit(x49gp_module_t *module) +{ + s3c2410_spi_t *spi; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + spi = module->user_data; + if (spi->regs) + free(spi->regs); + free(spi); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_spi_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-spi", + s3c2410_spi_init, + s3c2410_spi_exit, + s3c2410_spi_reset, + s3c2410_spi_load, + s3c2410_spi_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_sram.c b/s3c2410_sram.c new file mode 100644 index 0000000..5fc2c01 --- /dev/null +++ b/s3c2410_sram.c @@ -0,0 +1,184 @@ +/* $Id: s3c2410_sram.c,v 1.8 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +typedef struct { + void *data; + int fd; + uint32_t offset; + size_t size; +} filemap_t; + +static int +s3c2410_sram_load(x49gp_module_t *module, GKeyFile *key) +{ + filemap_t *filemap = module->user_data; + char *filename; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + filename = x49gp_module_get_filename(module, key, "filename"); + if (NULL == filename) { + fprintf(stderr, "%s: %s:%u: key \"filename\" not found\n", + module->name, __FUNCTION__, __LINE__); + return -ENOENT; + } + + filemap->fd = open(filename, O_RDWR); + if (filemap->fd < 0) { + error = -errno; + fprintf(stderr, "%s: %s:%u: open %s: %s\n", + module->name, __FUNCTION__, __LINE__, + filename, strerror(errno)); + g_free(filename); + return error; + } + + filemap->data = mmap(phys_ram_base + filemap->offset, S3C2410_SRAM_SIZE, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, + filemap->fd, 0); + if (filemap->data == (void *) -1) { + error = -errno; + fprintf(stderr, "%s: %s:%u: mmap %s: %s\n", + module->name, __FUNCTION__, __LINE__, + filename, strerror(errno)); + g_free(filename); + close(filemap->fd); + filemap->fd = -1; + return error; + } + filemap->size = S3C2410_SRAM_SIZE; + + g_free(filename); + + x49gp_schedule_lcd_update(module->x49gp); + return 0; +} + +static int +s3c2410_sram_save(x49gp_module_t *module, GKeyFile *key) +{ + filemap_t *filemap = module->user_data; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + error = msync(filemap->data, filemap->size, MS_ASYNC); + if (error) { + fprintf(stderr, "%s:%u: msync: %s\n", + __FUNCTION__, __LINE__, strerror(errno)); + return error; + } + + error = fsync(filemap->fd); + if (error) { + fprintf(stderr, "%s:%u: fsync: %s\n", + __FUNCTION__, __LINE__, strerror(errno)); + return error; + } + + return 0; +} + +static int +s3c2410_sram_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + return 0; +} + +static int +s3c2410_sram_init(x49gp_module_t *module) +{ + filemap_t *filemap; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + filemap = malloc(sizeof(filemap_t)); + if (NULL == filemap) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + filemap->size = 0; + filemap->fd = -1; + + module->user_data = filemap; + + filemap->data = (void *) -1; + filemap->offset = phys_ram_size; + phys_ram_size += S3C2410_SRAM_SIZE; + + cpu_register_physical_memory(S3C2410_SRAM_BASE, S3C2410_SRAM_SIZE, + filemap->offset | IO_MEM_RAM); + + return 0; +} + +static int +s3c2410_sram_exit(x49gp_module_t *module) +{ + filemap_t *filemap; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + filemap = module->user_data; + + if (filemap->data != (void *) -1) { + munmap(filemap->data, filemap->size); + } + if (filemap->fd >= 0) { + close(filemap->fd); + } + + free(filemap); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_sram_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-sram", + s3c2410_sram_init, + s3c2410_sram_exit, + s3c2410_sram_reset, + s3c2410_sram_load, + s3c2410_sram_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_timer.c b/s3c2410_timer.c new file mode 100644 index 0000000..c0929c5 --- /dev/null +++ b/s3c2410_timer.c @@ -0,0 +1,568 @@ +/* $Id: s3c2410_timer.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +typedef struct { + uint32_t reload_bit; + uint32_t update_bit; + uint32_t start_bit; + unsigned int pre_shift; + unsigned int mux_shift; + int irq; +} s3c2410_timer_config_t; + +struct __s3c2410_timer_s__; +typedef struct __s3c2410_timer_s__ s3c2410_timer_t; + +struct __s3c2410_timer_s__ { + uint32_t tcfg0; + uint32_t tcfg1; + uint32_t tcon; + uint32_t prev_tcon; + + x49gp_t *x49gp; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + struct s3c2410_timeout { + uint32_t tcntb; + uint32_t tcmpb; + uint32_t tcnt; + uint32_t tcmp; + + const s3c2410_timer_config_t *tconfig; + int index; + + s3c2410_timer_t *main; + + unsigned long interval; + x49gp_timer_t *timer; + } timeout[5]; +}; + +static const s3c2410_timer_config_t s3c2410_timer_config[] = +{ + { + TCON_TIMER0_RELOAD, TCON_TIMER0_UPDATE, TCON_TIMER0_START, + TCFG0_PRE0_SHIFT, TCFG1_MUX0_SHIFT, INT_TIMER0 + }, + { + TCON_TIMER1_RELOAD, TCON_TIMER1_UPDATE, TCON_TIMER1_START, + TCFG0_PRE0_SHIFT, TCFG1_MUX1_SHIFT, INT_TIMER1 + }, + { + TCON_TIMER2_RELOAD, TCON_TIMER2_UPDATE, TCON_TIMER2_START, + TCFG0_PRE1_SHIFT, TCFG1_MUX2_SHIFT, INT_TIMER2 + }, + { + TCON_TIMER3_RELOAD, TCON_TIMER3_UPDATE, TCON_TIMER3_START, + TCFG0_PRE1_SHIFT, TCFG1_MUX3_SHIFT, INT_TIMER3 + }, + { + TCON_TIMER4_RELOAD, TCON_TIMER4_UPDATE, TCON_TIMER4_START, + TCFG0_PRE1_SHIFT, TCFG1_MUX4_SHIFT, INT_TIMER4 + }, +}; + +static int +s3c2410_timer_data_init(s3c2410_timer_t *timer) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(TIMER, TCFG0, 0, timer->tcfg0), + S3C2410_OFFSET(TIMER, TCFG1, 0, timer->tcfg1), + S3C2410_OFFSET(TIMER, TCON, 0, timer->tcon), + S3C2410_OFFSET(TIMER, TCNTB0, 0, timer->timeout[0].tcntb), + S3C2410_OFFSET(TIMER, TCMPB0, 0, timer->timeout[0].tcmpb), + S3C2410_OFFSET(TIMER, TCNTO0, 0, timer->timeout[0].tcnt), + S3C2410_OFFSET(TIMER, TCNTB1, 0, timer->timeout[1].tcntb), + S3C2410_OFFSET(TIMER, TCMPB1, 0, timer->timeout[1].tcmpb), + S3C2410_OFFSET(TIMER, TCNTO1, 0, timer->timeout[1].tcnt), + S3C2410_OFFSET(TIMER, TCNTB2, 0, timer->timeout[2].tcntb), + S3C2410_OFFSET(TIMER, TCMPB2, 0, timer->timeout[2].tcmpb), + S3C2410_OFFSET(TIMER, TCNTO2, 0, timer->timeout[2].tcnt), + S3C2410_OFFSET(TIMER, TCNTB3, 0, timer->timeout[3].tcntb), + S3C2410_OFFSET(TIMER, TCMPB3, 0, timer->timeout[3].tcmpb), + S3C2410_OFFSET(TIMER, TCNTO3, 0, timer->timeout[3].tcnt), + S3C2410_OFFSET(TIMER, TCNTB4, 0, timer->timeout[4].tcntb), + S3C2410_OFFSET(TIMER, TCNTO4, 0, timer->timeout[4].tcnt) + }; + + memset(timer, 0, sizeof(s3c2410_timer_t)); + + timer->regs = malloc(sizeof(regs)); + if (NULL == timer->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(timer->regs, regs, sizeof(regs)); + timer->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static void +s3c2410_timer_timeout(void *data) +{ + struct s3c2410_timeout *t = data; + s3c2410_timer_t *timer = t->main; + x49gp_t *x49gp = timer->x49gp; + int64_t timeout; + +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: assert TIMER%u interrupt\n", t->index); +#endif + + s3c2410_intc_assert(timer->x49gp, t->tconfig->irq, 0); + + if (timer->tcon & t->tconfig->reload_bit) { + t->tcnt = t->tcntb; + t->tcmp = t->tcmpb; + } else { + timer->tcon &= ~(t->tconfig->start_bit); + return; + } + + timeout = 1000000LL * t->tcnt * t->interval / x49gp->PCLK; +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: reload TIMER%u: CNT %u (%lu PCLKs): %llu us\n", t->index, t->tcnt, t->interval, timeout); +#endif + x49gp_mod_timer(t->timer, x49gp_get_clock() + timeout); +} + +unsigned long +s3c2410_timer_next_interrupt(x49gp_t *x49gp) +{ + s3c2410_timer_t *timer = x49gp->s3c2410_timer; + struct s3c2410_timeout *t; + unsigned long irq, next; + unsigned long ticks; + int i; + + ticks = x49gp_get_clock(); + + next = ~(0); + for (i = 0; i < 5; i++) { + t = &timer->timeout[i]; + + if (!(timer->tcon & t->tconfig->start_bit)) + continue; + + if (x49gp_timer_pending(t->timer)) { + irq = x49gp_timer_expires(t->timer) - ticks; + } else { + irq = 0; + } + + if (t->tcnt) { + irq += (t->tcnt - 1) * t->interval; + } else { + if (!(timer->tcon & t->tconfig->reload_bit)) + continue; + irq += t->tcntb * t->interval; + } + + if (irq < next) + next = irq; + +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: TIMER%u: tcnt %u, interval %lu, pending %u, next irq %lu\n", + t->index, t->tcnt, t->interval, x49gp_timer_pending(t->timer), irq); +#endif + } + + return next; +} + +static void +s3c2410_update_tcfg(s3c2410_timer_t *timer) +{ + struct s3c2410_timeout *t; + x49gp_t *x49gp = timer->x49gp; + uint32_t pre, mux; + int64_t timeout; + int i; + + for (i = 0; i < 5; i++) { + t = &timer->timeout[i]; + + pre = (timer->tcfg0 >> t->tconfig->pre_shift) & TCFG0_PREx_MASK; + mux = (timer->tcfg1 >> t->tconfig->mux_shift) & TCFG1_MUXx_MASK; + + if (mux > 3) { + printf("s3c2410-timer: can't handle MUX %02x for TIMER%u\n", + mux, t->index); + mux = 3; + } + + t->interval = (pre + 1) * (2 << mux); + +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: TIMER%u: pre %u, mux %u, tick %lu PCLKs\n", + t->index, pre, mux, t->interval); +#endif + if (x49gp_timer_pending(t->timer)) { + timeout = 1000000LL * t->tcnt * t->interval / x49gp->PCLK; +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: mod TIMER%u: CNT %u (%lu PCLKs): %llu us\n", t->index, t->tcnt, t->interval, timeout); +#endif + x49gp_mod_timer(t->timer, x49gp_get_clock() + timeout); + } + } +} + +static void +s3c2410_update_tcon(s3c2410_timer_t *timer) +{ + struct s3c2410_timeout *t; + x49gp_t *x49gp = timer->x49gp; + int64_t timeout; + uint32_t change; + int i; + + change = timer->prev_tcon ^ timer->tcon; + timer->prev_tcon = timer->tcon; + + for (i = 0; i < 5; i++) { + t = &timer->timeout[i]; + + if (timer->tcon & t->tconfig->update_bit) { + t->tcnt = t->tcntb; + t->tcmp = t->tcmpb; + +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: update TIMER%u tcnt %u, tcmp %u\n", t->index, t->tcnt, t->tcmp); +#endif + } + + if (change & t->tconfig->start_bit) { + if (timer->tcon & t->tconfig->start_bit) { + timeout = 1000000LL * t->tcnt * t->interval / x49gp->PCLK; +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: start TIMER%u: CNT %u (%lu PCLKs): %llu us\n", t->index, t->tcnt, t->interval, timeout); +#endif + x49gp_mod_timer(t->timer, x49gp_get_clock() + timeout); + } else { + x49gp_del_timer(t->timer); +#ifdef DEBUG_S3C2410_TIMER + printf("s3c2410-timer: stop TIMER%u\n", t->index); +#endif + } + } + } +} + +static uint32_t +s3c2410_read_tcnt(s3c2410_timer_t *timer, int index) +{ + struct s3c2410_timeout *t = &timer->timeout[index]; + x49gp_t *x49gp = timer->x49gp; + int64_t now, expires, timeout; + + if (!(timer->tcon & t->tconfig->start_bit)) + return t->tcnt; + + if (x49gp_timer_pending(t->timer)) { + now = x49gp_get_clock(); + expires = x49gp_timer_expires(t->timer); + + timeout = expires - now; + if (timeout <= 0) + return 0; + + t->tcnt = timeout * x49gp->PCLK / (1000000LL * t->interval); + } + + return t->tcnt; +} + +static uint32_t +s3c2410_timer_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_timer_t *timer = opaque; + s3c2410_offset_t *reg; + uint32_t data; + +#ifdef QEMU_OLD + offset -= S3C2410_TIMER_BASE; +#endif + if (! S3C2410_OFFSET_OK(timer, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(timer, offset); + + switch (offset) { + case S3C2410_TIMER_TCNTO0: + data = s3c2410_read_tcnt(timer, 0); + break; + case S3C2410_TIMER_TCNTO1: + data = s3c2410_read_tcnt(timer, 1); + break; + case S3C2410_TIMER_TCNTO2: + data = s3c2410_read_tcnt(timer, 2); + break; + case S3C2410_TIMER_TCNTO3: + data = s3c2410_read_tcnt(timer, 3); + break; + case S3C2410_TIMER_TCNTO4: + data = s3c2410_read_tcnt(timer, 4); + break; + default: + data = *(reg->datap); + break; + } + +#ifdef DEBUG_S3C2410_TIMER + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-timer", S3C2410_TIMER_BASE, + reg->name, offset, data); +#endif + + return data; +} + +static void +s3c2410_timer_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_timer_t *timer = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_TIMER_BASE; +#endif + if (! S3C2410_OFFSET_OK(timer, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(timer, offset); + +#ifdef DEBUG_S3C2410_TIMER + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-timer", S3C2410_TIMER_BASE, + reg->name, offset, data); +#endif + + switch (offset) { + case S3C2410_TIMER_TCFG0: + *(reg->datap) = data; + s3c2410_update_tcfg(timer); + break; + case S3C2410_TIMER_TCFG1: + *(reg->datap) = data; + s3c2410_update_tcfg(timer); + break; + case S3C2410_TIMER_TCON: + *(reg->datap) = data; + s3c2410_update_tcon(timer); + break; + case S3C2410_TIMER_TCNTO0: + case S3C2410_TIMER_TCNTO1: + case S3C2410_TIMER_TCNTO2: + case S3C2410_TIMER_TCNTO3: + case S3C2410_TIMER_TCNTO4: + /* read only */ + break; + default: + *(reg->datap) = data; + break; + } +} + +static int +s3c2410_timer_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_timer_t *timer = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < timer->nr_regs; i++) { + reg = &timer->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + s3c2410_update_tcon(timer); + s3c2410_update_tcfg(timer); + + return error; +} + +static int +s3c2410_timer_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_timer_t *timer = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < timer->nr_regs; i++) { + reg = &timer->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_timer_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_timer_t *timer = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < timer->nr_regs; i++) { + reg = &timer->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + s3c2410_update_tcon(timer); + s3c2410_update_tcfg(timer); + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_timer_readfn[] = +{ + s3c2410_timer_read, + s3c2410_timer_read, + s3c2410_timer_read +}; + +static CPUWriteMemoryFunc *s3c2410_timer_writefn[] = +{ + s3c2410_timer_write, + s3c2410_timer_write, + s3c2410_timer_write +}; + +static int +s3c2410_timer_init(x49gp_module_t *module) +{ + s3c2410_timer_t *timer; + struct s3c2410_timeout *t; + int iotype; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + timer = malloc(sizeof(s3c2410_timer_t)); + if (NULL == timer) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + module->x49gp->progname, __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_timer_data_init(timer)) { + free(timer); + return -ENOMEM; + } + + module->user_data = timer; + + timer->x49gp = module->x49gp; + module->x49gp->s3c2410_timer = timer; + + for (i = 0; i < 5; i++) { + t = &timer->timeout[i]; + + t->tconfig = &s3c2410_timer_config[i]; + t->index = i; + + t->main = timer; + + t->timer = x49gp_new_timer(X49GP_TIMER_VIRTUAL, s3c2410_timer_timeout, t); + } + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_timer_readfn, + s3c2410_timer_writefn, timer); +#else + iotype = cpu_register_io_memory(s3c2410_timer_readfn, + s3c2410_timer_writefn, timer); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_TIMER_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_timer_exit(x49gp_module_t *module) +{ + s3c2410_timer_t *timer; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + timer = module->user_data; + if (timer->regs) + free(timer->regs); + free(timer); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_timer_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-timer", + s3c2410_timer_init, + s3c2410_timer_exit, + s3c2410_timer_reset, + s3c2410_timer_load, + s3c2410_timer_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_uart.c b/s3c2410_uart.c new file mode 100644 index 0000000..d743b47 --- /dev/null +++ b/s3c2410_uart.c @@ -0,0 +1,484 @@ +/* $Id: s3c2410_uart.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +typedef struct { + uint32_t ulcon; + uint32_t ucon; + uint32_t ufcon; + uint32_t umcon; + uint32_t utrstat; + uint32_t uerstat; + uint32_t ufstat; + uint32_t umstat; + uint32_t utxh; + uint32_t urxh; + uint32_t ubrdiv; + + int int_err; + int int_txd; + int int_rxd; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; +} s3c2410_uart_reg_t; + +typedef struct { + s3c2410_uart_reg_t uart[3]; +} s3c2410_uart_t; + +static int +s3c2410_uart_data_init(s3c2410_uart_t *uart) +{ + s3c2410_offset_t regs0[] = { + S3C2410_OFFSET(UART0, ULCON, 0x00000000, uart->uart[0].ulcon), + S3C2410_OFFSET(UART0, UCON, 0x00000000, uart->uart[0].ucon), + S3C2410_OFFSET(UART0, UFCON, 0x00000000, uart->uart[0].ufcon), + S3C2410_OFFSET(UART0, UMCON, 0x00000000, uart->uart[0].umcon), + S3C2410_OFFSET(UART0, UTRSTAT, 0x00000006, uart->uart[0].utrstat), + S3C2410_OFFSET(UART0, UERSTAT, 0x00000000, uart->uart[0].uerstat), + S3C2410_OFFSET(UART0, UFSTAT, 0x00000000, uart->uart[0].ufstat), + S3C2410_OFFSET(UART0, UMSTAT, 0x00000000, uart->uart[0].umstat), + S3C2410_OFFSET(UART0, UTXH, 0, uart->uart[0].utxh), + S3C2410_OFFSET(UART0, URXH, 0, uart->uart[0].urxh), + S3C2410_OFFSET(UART0, UBRDIV, 0, uart->uart[0].ubrdiv) + }; + s3c2410_offset_t regs1[] = { + S3C2410_OFFSET(UART1, ULCON, 0x00000000, uart->uart[1].ulcon), + S3C2410_OFFSET(UART1, UCON, 0x00000000, uart->uart[1].ucon), + S3C2410_OFFSET(UART1, UFCON, 0x00000000, uart->uart[1].ufcon), + S3C2410_OFFSET(UART1, UMCON, 0x00000000, uart->uart[1].umcon), + S3C2410_OFFSET(UART1, UTRSTAT, 0x00000006, uart->uart[1].utrstat), + S3C2410_OFFSET(UART1, UERSTAT, 0x00000000, uart->uart[1].uerstat), + S3C2410_OFFSET(UART1, UFSTAT, 0x00000000, uart->uart[1].ufstat), + S3C2410_OFFSET(UART1, UMSTAT, 0x00000000, uart->uart[1].umstat), + S3C2410_OFFSET(UART1, UTXH, 0, uart->uart[1].utxh), + S3C2410_OFFSET(UART1, URXH, 0, uart->uart[1].urxh), + S3C2410_OFFSET(UART1, UBRDIV, 0, uart->uart[1].ubrdiv) + }; + s3c2410_offset_t regs2[] = { + S3C2410_OFFSET(UART2, ULCON, 0x00000000, uart->uart[2].ulcon), + S3C2410_OFFSET(UART2, UCON, 0x00000000, uart->uart[2].ucon), + S3C2410_OFFSET(UART2, UFCON, 0x00000000, uart->uart[2].ufcon), + S3C2410_OFFSET(UART2, UTRSTAT, 0x00000006, uart->uart[2].utrstat), + S3C2410_OFFSET(UART2, UERSTAT, 0x00000000, uart->uart[2].uerstat), + S3C2410_OFFSET(UART2, UFSTAT, 0x00000000, uart->uart[2].ufstat), + S3C2410_OFFSET(UART2, UTXH, 0, uart->uart[2].utxh), + S3C2410_OFFSET(UART2, URXH, 0, uart->uart[2].urxh), + S3C2410_OFFSET(UART2, UBRDIV, 0, uart->uart[2].ubrdiv) + }; + + uart->uart[0].regs = malloc(sizeof(regs0)); + if (NULL == uart->uart[0].regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + uart->uart[1].regs = malloc(sizeof(regs1)); + if (NULL == uart->uart[1].regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + free(uart->uart[0].regs); + return -ENOMEM; + } + uart->uart[2].regs = malloc(sizeof(regs2)); + if (NULL == uart->uart[2].regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + free(uart->uart[0].regs); + free(uart->uart[1].regs); + return -ENOMEM; + } + + memcpy(uart->uart[0].regs, regs0, sizeof(regs0)); + uart->uart[0].nr_regs = sizeof(regs0) / sizeof(regs0[0]); + uart->uart[0].int_err = SUB_INT_ERR0; + uart->uart[0].int_txd = SUB_INT_TXD0; + uart->uart[0].int_rxd = SUB_INT_RXD0; + + memcpy(uart->uart[1].regs, regs1, sizeof(regs1)); + uart->uart[1].nr_regs = sizeof(regs1) / sizeof(regs1[0]); + uart->uart[1].int_err = SUB_INT_ERR1; + uart->uart[1].int_txd = SUB_INT_TXD1; + uart->uart[1].int_rxd = SUB_INT_RXD1; + + memcpy(uart->uart[2].regs, regs2, sizeof(regs2)); + uart->uart[2].nr_regs = sizeof(regs2) / sizeof(regs2[0]); + uart->uart[2].int_err = SUB_INT_ERR2; + uart->uart[2].int_txd = SUB_INT_TXD2; + uart->uart[2].int_rxd = SUB_INT_RXD2; + + return 0; +} + +static uint32_t +s3c2410_uart_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_uart_reg_t *uart_regs = opaque; + x49gp_t *x49gp = uart_regs->x49gp; + s3c2410_offset_t *reg; +#ifdef DEBUG_S3C2410_UART + const char *module; + uint32_t mod_offset; + uint32_t base; + + base = (offset & 0x0000c000) >> 14; + + switch (base) { + case 0: + module = "s3c2410-uart0"; + mod_offset = S3C2410_UART0_BASE; + break; + case 1: + module = "s3c2410-uart1"; + mod_offset = S3C2410_UART1_BASE; + break; + case 2: + module = "s3c2410-uart2"; + mod_offset = S3C2410_UART2_BASE; + break; + default: + return ~(0); + } +#endif + + offset &= ~(0xffffc000); + if (! S3C2410_OFFSET_OK(uart_regs, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(uart_regs, offset); + +#ifdef DEBUG_S3C2410_UART + printf("read %s [%08x] %s [%08x] data %08x\n", + module, base, reg->name, offset, *(reg->datap)); +#endif + + switch (offset) { + case S3C2410_UART0_URXH: + uart_regs->utrstat &= ~(1 << 0); + + if (uart_regs->ucon & (1 << 8)) { + s3c2410_intc_sub_deassert(x49gp, uart_regs->int_rxd); + } + + break; + } + + return *(reg->datap); +} + +static void +s3c2410_uart_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_uart_reg_t *uart_regs = opaque; + x49gp_t *x49gp = uart_regs->x49gp; + s3c2410_offset_t *reg; + uint32_t ubrdivn, baud; + uint32_t base; +#ifdef DEBUG_S3C2410_UART + const char *module; + uint32_t mod_offset; +#endif + + base = (offset & 0x0000c000) >> 14; + +#ifdef DEBUG_S3C2410_UART + switch (base) { + case 0: + module = "s3c2410-uart0"; + mod_offset = S3C2410_UART0_BASE; + break; + case 1: + module = "s3c2410-uart1"; + mod_offset = S3C2410_UART1_BASE; + break; + case 2: + module = "s3c2410-uart2"; + mod_offset = S3C2410_UART2_BASE; + break; + default: + return; + } +#endif + + offset &= ~(0xffffc000); + if (! S3C2410_OFFSET_OK(uart_regs, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(uart_regs, offset); + +#ifdef DEBUG_S3C2410_UART + printf("write %s [%08x] %s [%08x] data %08x\n", + module, mod_offset, reg->name, offset, data); +#endif + + *(reg->datap) = data; + + switch (offset) { + case S3C2410_UART0_UCON: + if (*(reg->datap) & (1 << 9)) + s3c2410_intc_sub_assert(x49gp, uart_regs->int_txd, 1); + if (*(reg->datap) & (1 << 8)) + s3c2410_intc_sub_deassert(x49gp, uart_regs->int_rxd); + break; + + case S3C2410_UART0_UBRDIV: + ubrdivn = (data >> 0) & 0xffff; + if (uart_regs->ucon & (1 << 10)) { + baud = x49gp->UCLK / 16 / (ubrdivn + 1); +#ifdef DEBUG_S3C2410_UART + printf("%s: UEXTCLK %u, ubrdivn %u, baud %u\n", + module, x49gp->UCLK, ubrdivn, baud); +#endif + } else { + baud = x49gp->PCLK / 16 / (ubrdivn + 1); +#ifdef DEBUG_S3C2410_UART + printf("%s: PCLK %u, ubrdivn %u, baud %u\n", + module, x49gp->PCLK, ubrdivn, baud); +#endif + } + break; + + case S3C2410_UART0_UTXH: + if (uart_regs->ucon & (1 << 9)) + s3c2410_intc_sub_deassert(x49gp, uart_regs->int_txd); + + uart_regs->utrstat |= (1 << 2) | (1 << 1); + + if (uart_regs->ucon & (1 << 9)) + s3c2410_intc_sub_assert(x49gp, uart_regs->int_txd, 1); + else + s3c2410_intc_sub_assert(x49gp, uart_regs->int_txd, 0); + + if (uart_regs->ucon & (1 << 5)) { + uart_regs->urxh = data; + uart_regs->utrstat |= (1 << 0); + + if (uart_regs->ucon & (1 << 8)) + s3c2410_intc_sub_assert(x49gp, uart_regs->int_rxd, 1); + else + s3c2410_intc_sub_assert(x49gp, uart_regs->int_rxd, 0); + } else if (base == 2) { + uart_regs->urxh = data; + uart_regs->utrstat |= (1 << 0); + + if (uart_regs->ucon & (1 << 8)) + s3c2410_intc_sub_assert(x49gp, uart_regs->int_rxd, 1); + else + s3c2410_intc_sub_assert(x49gp, uart_regs->int_rxd, 0); + } + + break; + } +} + +static int +s3c2410_uart_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_uart_reg_t *uart_regs = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < uart_regs->nr_regs; i++) { + reg = &uart_regs->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_uart_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_uart_reg_t *uart_regs = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < uart_regs->nr_regs; i++) { + reg = &uart_regs->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_uart_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_uart_reg_t *uart_regs = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < uart_regs->nr_regs; i++) { + reg = &uart_regs->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_uart_readfn[] = +{ + s3c2410_uart_read, + s3c2410_uart_read, + s3c2410_uart_read +}; + +static CPUWriteMemoryFunc *s3c2410_uart_writefn[] = +{ + s3c2410_uart_write, + s3c2410_uart_write, + s3c2410_uart_write +}; + +static int +s3c2410_uart_init(x49gp_module_t *module) +{ + s3c2410_uart_reg_t *uart_regs = module->user_data; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_uart_readfn, + s3c2410_uart_writefn, uart_regs); +#else + iotype = cpu_register_io_memory(s3c2410_uart_readfn, + s3c2410_uart_writefn, uart_regs); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_UART0_BASE, S3C2410_MAP_SIZE, iotype); + + return 0; +} + +static int +s3c2410_uart_exit(x49gp_module_t *module) +{ + s3c2410_uart_reg_t *uart_regs; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + uart_regs = module->user_data; + if (uart_regs->regs) + free(uart_regs->regs); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_uart_init(x49gp_t *x49gp) +{ + s3c2410_uart_t *uart; + x49gp_module_t *module; + + uart = malloc(sizeof(s3c2410_uart_t)); + if (NULL == uart) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + memset(uart, 0, sizeof(s3c2410_uart_t)); + + if (s3c2410_uart_data_init(uart)) { + free(uart); + return -ENOMEM; + } + + uart->uart[0].x49gp = x49gp; + uart->uart[1].x49gp = x49gp; + uart->uart[2].x49gp = x49gp; + + if (x49gp_module_init(x49gp, "s3c2410-uart0", + s3c2410_uart_init, + s3c2410_uart_exit, + s3c2410_uart_reset, + s3c2410_uart_load, + s3c2410_uart_save, + &uart->uart[0], &module)) { + return -1; + } + if (x49gp_module_register(module)) { + return -1; + } + + if (x49gp_module_init(x49gp, "s3c2410-uart1", + s3c2410_uart_init, + s3c2410_uart_exit, + s3c2410_uart_reset, + s3c2410_uart_load, + s3c2410_uart_save, + &uart->uart[1], &module)) { + return -1; + } + if (x49gp_module_register(module)) { + return -1; + } + + if (x49gp_module_init(x49gp, "s3c2410-uart2", + s3c2410_uart_init, + s3c2410_uart_exit, + s3c2410_uart_reset, + s3c2410_uart_load, + s3c2410_uart_save, + &uart->uart[2], &module)) { + return -1; + } + if (x49gp_module_register(module)) { + return -1; + } + + return 0; +} diff --git a/s3c2410_usbdev.c b/s3c2410_usbdev.c new file mode 100644 index 0000000..580e7a1 --- /dev/null +++ b/s3c2410_usbdev.c @@ -0,0 +1,342 @@ +/* $Id: s3c2410_usbdev.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +typedef struct { + uint32_t func_addr_reg; + uint32_t pwr_reg; + uint32_t ep_int_reg; + uint32_t usb_int_reg; + uint32_t ep_int_en_reg; + uint32_t usb_int_en_reg; + uint32_t frame_num1_reg; + uint32_t frame_num2_reg; + uint32_t index_reg; + uint32_t ep0_fifo_reg; + uint32_t ep1_fifo_reg; + uint32_t ep2_fifo_reg; + uint32_t ep3_fifo_reg; + uint32_t ep4_fifo_reg; + uint32_t ep1_dma_con; + uint32_t ep1_dma_unit; + uint32_t ep1_dma_fifo; + uint32_t ep1_dma_ttc_l; + uint32_t ep1_dma_ttc_m; + uint32_t ep1_dma_ttc_h; + uint32_t ep2_dma_con; + uint32_t ep2_dma_unit; + uint32_t ep2_dma_fifo; + uint32_t ep2_dma_ttc_l; + uint32_t ep2_dma_ttc_m; + uint32_t ep2_dma_ttc_h; + uint32_t ep3_dma_con; + uint32_t ep3_dma_unit; + uint32_t ep3_dma_fifo; + uint32_t ep3_dma_ttc_l; + uint32_t ep3_dma_ttc_m; + uint32_t ep3_dma_ttc_h; + uint32_t ep4_dma_con; + uint32_t ep4_dma_unit; + uint32_t ep4_dma_fifo; + uint32_t ep4_dma_ttc_l; + uint32_t ep4_dma_ttc_m; + uint32_t ep4_dma_ttc_h; + uint32_t __wrong_maxp_reg; + uint32_t in_csr1_reg_ep0_csr; + uint32_t in_csr2_reg; + uint32_t maxp_reg; + uint32_t out_csr1_reg; + uint32_t out_csr2_reg; + uint32_t out_fifo_cnt1_reg; + uint32_t out_fifo_cnt2_reg; + + unsigned int nr_regs; + s3c2410_offset_t *regs; +} s3c2410_usbdev_t; + +static int +s3c2410_usbdev_data_init(s3c2410_usbdev_t *usbdev) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(USBDEV, FUNC_ADDR_REG, 0x00, usbdev->func_addr_reg), + S3C2410_OFFSET(USBDEV, PWR_REG, 0x00, usbdev->pwr_reg), + S3C2410_OFFSET(USBDEV, EP_INT_REG, 0x00, usbdev->ep_int_reg), + S3C2410_OFFSET(USBDEV, USB_INT_REG, 0x00, usbdev->usb_int_reg), + S3C2410_OFFSET(USBDEV, EP_INT_EN_REG, 0xff, usbdev->ep_int_en_reg), + S3C2410_OFFSET(USBDEV, USB_INT_EN_REG, 0x04, usbdev->usb_int_en_reg), + S3C2410_OFFSET(USBDEV, FRAME_NUM1_REG, 0x00, usbdev->frame_num1_reg), + S3C2410_OFFSET(USBDEV, FRAME_NUM2_REG, 0x00, usbdev->frame_num2_reg), + S3C2410_OFFSET(USBDEV, INDEX_REG, 0x00, usbdev->index_reg), + S3C2410_OFFSET(USBDEV, EP0_FIFO_REG, 0, usbdev->ep0_fifo_reg), + S3C2410_OFFSET(USBDEV, EP1_FIFO_REG, 0, usbdev->ep1_fifo_reg), + S3C2410_OFFSET(USBDEV, EP2_FIFO_REG, 0, usbdev->ep2_fifo_reg), + S3C2410_OFFSET(USBDEV, EP3_FIFO_REG, 0, usbdev->ep3_fifo_reg), + S3C2410_OFFSET(USBDEV, EP4_FIFO_REG, 0, usbdev->ep4_fifo_reg), + S3C2410_OFFSET(USBDEV, EP1_DMA_CON, 0x00, usbdev->ep1_dma_con), + S3C2410_OFFSET(USBDEV, EP1_DMA_UNIT, 0x00, usbdev->ep1_dma_unit), + S3C2410_OFFSET(USBDEV, EP1_DMA_FIFO, 0x00, usbdev->ep1_dma_fifo), + S3C2410_OFFSET(USBDEV, EP1_DMA_TTC_L, 0x00, usbdev->ep1_dma_ttc_l), + S3C2410_OFFSET(USBDEV, EP1_DMA_TTC_M, 0x00, usbdev->ep1_dma_ttc_m), + S3C2410_OFFSET(USBDEV, EP1_DMA_TTC_H, 0x00, usbdev->ep1_dma_ttc_h), + S3C2410_OFFSET(USBDEV, EP2_DMA_CON, 0x00, usbdev->ep2_dma_con), + S3C2410_OFFSET(USBDEV, EP2_DMA_UNIT, 0x00, usbdev->ep2_dma_unit), + S3C2410_OFFSET(USBDEV, EP2_DMA_FIFO, 0x00, usbdev->ep2_dma_fifo), + S3C2410_OFFSET(USBDEV, EP2_DMA_TTC_L, 0x00, usbdev->ep2_dma_ttc_l), + S3C2410_OFFSET(USBDEV, EP2_DMA_TTC_M, 0x00, usbdev->ep2_dma_ttc_m), + S3C2410_OFFSET(USBDEV, EP2_DMA_TTC_H, 0x00, usbdev->ep2_dma_ttc_h), + S3C2410_OFFSET(USBDEV, EP3_DMA_CON, 0x00, usbdev->ep3_dma_con), + S3C2410_OFFSET(USBDEV, EP3_DMA_UNIT, 0x00, usbdev->ep3_dma_unit), + S3C2410_OFFSET(USBDEV, EP3_DMA_FIFO, 0x00, usbdev->ep3_dma_fifo), + S3C2410_OFFSET(USBDEV, EP3_DMA_TTC_L, 0x00, usbdev->ep3_dma_ttc_l), + S3C2410_OFFSET(USBDEV, EP3_DMA_TTC_M, 0x00, usbdev->ep3_dma_ttc_m), + S3C2410_OFFSET(USBDEV, EP3_DMA_TTC_H, 0x00, usbdev->ep3_dma_ttc_h), + S3C2410_OFFSET(USBDEV, EP4_DMA_CON, 0x00, usbdev->ep4_dma_con), + S3C2410_OFFSET(USBDEV, EP4_DMA_UNIT, 0x00, usbdev->ep4_dma_unit), + S3C2410_OFFSET(USBDEV, EP4_DMA_FIFO, 0x00, usbdev->ep4_dma_fifo), + S3C2410_OFFSET(USBDEV, EP4_DMA_TTC_L, 0x00, usbdev->ep4_dma_ttc_l), + S3C2410_OFFSET(USBDEV, EP4_DMA_TTC_M, 0x00, usbdev->ep4_dma_ttc_m), + S3C2410_OFFSET(USBDEV, EP4_DMA_TTC_H, 0x00, usbdev->ep4_dma_ttc_h), + S3C2410_OFFSET(USBDEV, MAXP_REG_WRONG, 0x01, usbdev->__wrong_maxp_reg), + S3C2410_OFFSET(USBDEV, IN_CSR1_REG_EP0_CSR, 0x00, usbdev->in_csr1_reg_ep0_csr), + S3C2410_OFFSET(USBDEV, IN_CSR2_REG, 0x20, usbdev->in_csr2_reg), + S3C2410_OFFSET(USBDEV, MAXP_REG, 0x01, usbdev->maxp_reg), + S3C2410_OFFSET(USBDEV, OUT_CSR1_REG, 0x00, usbdev->out_csr1_reg), + S3C2410_OFFSET(USBDEV, OUT_CSR2_REG, 0x00, usbdev->out_csr2_reg), + S3C2410_OFFSET(USBDEV, OUT_FIFO_CNT1_REG, 0x00, usbdev->out_fifo_cnt1_reg), + S3C2410_OFFSET(USBDEV, OUT_FIFO_CNT2_REG, 0x00, usbdev->out_fifo_cnt2_reg) + }; + + memset(usbdev, 0, sizeof(s3c2410_usbdev_t)); + + usbdev->regs = malloc(sizeof(regs)); + if (NULL == usbdev->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(usbdev->regs, regs, sizeof(regs)); + usbdev->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static uint32_t +s3c2410_usbdev_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_usbdev_t *usbdev = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_USBDEV_BASE; +#endif + if (! S3C2410_OFFSET_OK(usbdev, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(usbdev, offset); + +#ifdef DEBUG_S3C2410_USBDEV + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-usbdev", S3C2410_USBDEV_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_usbdev_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_usbdev_t *usbdev = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_USBDEV_BASE; +#endif + if (! S3C2410_OFFSET_OK(usbdev, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(usbdev, offset); + +#ifdef DEBUG_S3C2410_USBDEV + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-usbdev", S3C2410_USBDEV_BASE, + reg->name, offset, data); +#endif + + *(reg->datap) = data; +} + +static int +s3c2410_usbdev_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_usbdev_t *usbdev = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < usbdev->nr_regs; i++) { + reg = &usbdev->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + return error; +} + +static int +s3c2410_usbdev_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_usbdev_t *usbdev = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < usbdev->nr_regs; i++) { + reg = &usbdev->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_usbdev_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_usbdev_t *usbdev = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < usbdev->nr_regs; i++) { + reg = &usbdev->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_usbdev_readfn[] = +{ + s3c2410_usbdev_read, + s3c2410_usbdev_read, + s3c2410_usbdev_read +}; + +static CPUWriteMemoryFunc *s3c2410_usbdev_writefn[] = +{ + s3c2410_usbdev_write, + s3c2410_usbdev_write, + s3c2410_usbdev_write +}; + +static int +s3c2410_usbdev_init(x49gp_module_t *module) +{ + s3c2410_usbdev_t *usbdev; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + usbdev = malloc(sizeof(s3c2410_usbdev_t)); + if (NULL == usbdev) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_usbdev_data_init(usbdev)) { + free(usbdev); + return -ENOMEM; + } + + module->user_data = usbdev; + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_usbdev_readfn, + s3c2410_usbdev_writefn, usbdev); +#else + iotype = cpu_register_io_memory(s3c2410_usbdev_readfn, + s3c2410_usbdev_writefn, usbdev); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_USBDEV_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_usbdev_exit(x49gp_module_t *module) +{ + s3c2410_usbdev_t *usbdev; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + usbdev = module->user_data; + if (usbdev->regs) + free(usbdev->regs); + free(usbdev); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_usbdev_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-usbdev", + s3c2410_usbdev_init, + s3c2410_usbdev_exit, + s3c2410_usbdev_reset, + s3c2410_usbdev_load, + s3c2410_usbdev_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/s3c2410_watchdog.c b/s3c2410_watchdog.c new file mode 100644 index 0000000..d69acf2 --- /dev/null +++ b/s3c2410_watchdog.c @@ -0,0 +1,388 @@ +/* $Id: s3c2410_watchdog.c,v 1.5 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +typedef struct { + uint32_t wtcon; + uint32_t wtdat; + uint32_t wtcnt; + + unsigned int nr_regs; + s3c2410_offset_t *regs; + + x49gp_t *x49gp; + + unsigned long interval; + x49gp_timer_t *timer; +} s3c2410_watchdog_t; + +static int +s3c2410_watchdog_data_init(s3c2410_watchdog_t *watchdog) +{ + s3c2410_offset_t regs[] = { + S3C2410_OFFSET(WATCHDOG, WTCON, 0x8021, watchdog->wtcon), + S3C2410_OFFSET(WATCHDOG, WTDAT, 0x8000, watchdog->wtdat), + S3C2410_OFFSET(WATCHDOG, WTCNT, 0x8000, watchdog->wtcnt) + }; + + memset(watchdog, 0, sizeof(s3c2410_watchdog_t)); + + watchdog->regs = malloc(sizeof(regs)); + if (NULL == watchdog->regs) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + + memcpy(watchdog->regs, regs, sizeof(regs)); + watchdog->nr_regs = sizeof(regs) / sizeof(regs[0]); + + return 0; +} + +static void +s3c2410_watchdog_tick(void *data) +{ + s3c2410_watchdog_t *watchdog = data; + x49gp_t *x49gp = watchdog->x49gp; + + if (watchdog->wtcnt > 0) { + watchdog->wtcnt--; + } else { + watchdog->wtcnt = watchdog->wtdat; + } + + if (watchdog->wtcnt > 0) { +// watchdog->timer.expires += watchdog->interval; + x49gp_mod_timer(watchdog->timer, x49gp_get_clock() + watchdog->interval); + return; + } + + if (watchdog->wtcon & 0x0004) { +#ifdef DEBUG_S3C2410_WATCHDOG + printf("WATCHDOG: assert WDT interrupt\n"); +#endif +// g_mutex_lock(x49gp->memlock); + + s3c2410_intc_assert(x49gp, INT_WDT, 0); + +// g_mutex_unlock(x49gp->memlock); + } + + if (watchdog->wtcon & 0x0001) { +#ifdef DEBUG_S3C2410_WATCHDOG + printf("WATCHDOG: assert internal RESET\n"); +#endif + + x49gp_modules_reset(x49gp, X49GP_RESET_WATCHDOG); + cpu_reset(x49gp->env); + +// if (x49gp->arm->NresetSig != LOW) { +// x49gp->arm->NresetSig = LOW; +// x49gp->arm->Exception++; +// } + return; + } + +// watchdog->timer.expires += watchdog->interval; + x49gp_mod_timer(watchdog->timer, x49gp_get_clock() + watchdog->interval); +} + +unsigned long +s3c2410_watchdog_next_interrupt(x49gp_t *x49gp) +{ + s3c2410_watchdog_t *watchdog = x49gp->s3c2410_watchdog; + unsigned long irq; + unsigned long ticks; + + ticks = x49gp_get_clock(); + + if (!(watchdog->wtcon & 0x0020)) { + return ~(0); + } + + if (x49gp_timer_pending(watchdog->timer)) { + irq = x49gp_timer_expires(watchdog->timer) - ticks; + } else { + irq = 0; + } + + if (watchdog->wtcnt) { + irq += (watchdog->wtcnt - 1) * watchdog->interval; + } else { + irq += watchdog->wtdat * watchdog->interval; + } + +#ifdef DEBUG_S3C2410_WATCHDOG + printf("WATCHDOG: wtcnt %u, interval %lu, expires %llu, next irq %lu\n", + watchdog->wtcnt, watchdog->interval, x49gp_timer_pending(watchdog->timer) ? x49gp_timer_expires(watchdog->timer) : 0, irq); +#endif + + return irq; +} + +static int +s3c2410_watchdog_update(s3c2410_watchdog_t *watchdog) +{ + uint32_t pre, mux; + + if (!(watchdog->wtcon & 0x0020)) { + x49gp_del_timer(watchdog->timer); +#ifdef DEBUG_S3C2410_WATCHDOG + printf("WATCHDOG: stop timer\n"); +#endif + return 0; + } + + pre = (watchdog->wtcon >> 8) & 0xff; + mux = (watchdog->wtcon >> 3) & 3; + + watchdog->interval = (pre + 1) * (16 << mux); + +#ifdef DEBUG_S3C2410_WATCHDOG + printf("WATCHDOG: start tick (%lu PCLKs)\n", watchdog->interval); +#endif + x49gp_mod_timer(watchdog->timer, x49gp_get_clock() + watchdog->interval); + return 0; +} + +static uint32_t +s3c2410_watchdog_read(void *opaque, target_phys_addr_t offset) +{ + s3c2410_watchdog_t *watchdog = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_WATCHDOG_BASE; +#endif + if (! S3C2410_OFFSET_OK(watchdog, offset)) { + return ~(0); + } + + reg = S3C2410_OFFSET_ENTRY(watchdog, offset); + + +#ifdef DEBUG_S3C2410_WATCHDOG + printf("read %s [%08x] %s [%08x] data %08x\n", + "s3c2410-watchdog", S3C2410_WATCHDOG_BASE, + reg->name, offset, *(reg->datap)); +#endif + + return *(reg->datap); +} + +static void +s3c2410_watchdog_write(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + s3c2410_watchdog_t *watchdog = opaque; + s3c2410_offset_t *reg; + +#ifdef QEMU_OLD + offset -= S3C2410_WATCHDOG_BASE; +#endif + if (! S3C2410_OFFSET_OK(watchdog, offset)) { + return; + } + + reg = S3C2410_OFFSET_ENTRY(watchdog, offset); + +#ifdef DEBUG_S3C2410_WATCHDOG + printf("write %s [%08x] %s [%08x] data %08x\n", + "s3c2410-watchdog", S3C2410_WATCHDOG_BASE, + reg->name, offset, data); +#endif + + *(reg->datap) = data; + + switch (offset) { + case S3C2410_WATCHDOG_WTCON: + case S3C2410_WATCHDOG_WTCNT: + s3c2410_watchdog_update(watchdog); + break; + default: + break; + } +} + +static int +s3c2410_watchdog_load(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_watchdog_t *watchdog = module->user_data; + s3c2410_offset_t *reg; + int error = 0; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < watchdog->nr_regs; i++) { + reg = &watchdog->regs[i]; + + if (NULL == reg->name) + continue; + + if (x49gp_module_get_u32(module, key, reg->name, + reg->reset, reg->datap)) + error = -EAGAIN; + } + + s3c2410_watchdog_update(watchdog); + + return error; +} + +static int +s3c2410_watchdog_save(x49gp_module_t *module, GKeyFile *key) +{ + s3c2410_watchdog_t *watchdog = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < watchdog->nr_regs; i++) { + reg = &watchdog->regs[i]; + + if (NULL == reg->name) + continue; + + x49gp_module_set_u32(module, key, reg->name, *(reg->datap)); + } + + return 0; +} + +static int +s3c2410_watchdog_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + s3c2410_watchdog_t *watchdog = module->user_data; + s3c2410_offset_t *reg; + int i; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + for (i = 0; i < watchdog->nr_regs; i++) { + reg = &watchdog->regs[i]; + + if (NULL == reg->name) + continue; + + *(reg->datap) = reg->reset; + } + + s3c2410_watchdog_update(watchdog); + + return 0; +} + +static CPUReadMemoryFunc *s3c2410_watchdog_readfn[] = +{ + s3c2410_watchdog_read, + s3c2410_watchdog_read, + s3c2410_watchdog_read +}; + +static CPUWriteMemoryFunc *s3c2410_watchdog_writefn[] = +{ + s3c2410_watchdog_write, + s3c2410_watchdog_write, + s3c2410_watchdog_write +}; + +static int +s3c2410_watchdog_init(x49gp_module_t *module) +{ + s3c2410_watchdog_t *watchdog; + int iotype; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + watchdog = malloc(sizeof(s3c2410_watchdog_t)); + if (NULL == watchdog) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + module->x49gp->progname, __FUNCTION__, __LINE__); + return -ENOMEM; + } + if (s3c2410_watchdog_data_init(watchdog)) { + free(watchdog); + return -ENOMEM; + } + + module->user_data = watchdog; + + watchdog->x49gp = module->x49gp; + module->x49gp->s3c2410_watchdog = watchdog; + + watchdog->timer = x49gp_new_timer(X49GP_TIMER_VIRTUAL, + s3c2410_watchdog_tick, watchdog); + +#ifdef QEMU_OLD + iotype = cpu_register_io_memory(0, s3c2410_watchdog_readfn, + s3c2410_watchdog_writefn, watchdog); +#else + iotype = cpu_register_io_memory(s3c2410_watchdog_readfn, + s3c2410_watchdog_writefn, watchdog); +#endif +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_WATCHDOG_BASE, S3C2410_MAP_SIZE, iotype); + return 0; +} + +static int +s3c2410_watchdog_exit(x49gp_module_t *module) +{ + s3c2410_watchdog_t *watchdog; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + watchdog = module->user_data; + if (watchdog->regs) + free(watchdog->regs); + free(watchdog); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_s3c2410_watchdog_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "s3c2410-watchdog", + s3c2410_watchdog_init, + s3c2410_watchdog_exit, + s3c2410_watchdog_reset, + s3c2410_watchdog_load, + s3c2410_watchdog_save, + NULL, &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/sim/.cvsignore b/sim/.cvsignore new file mode 100644 index 0000000..4671378 --- /dev/null +++ b/sim/.cvsignore @@ -0,0 +1 @@ +.depend diff --git a/sim/.svn/all-wcprops b/sim/.svn/all-wcprops new file mode 100644 index 0000000..e97d8f2 --- /dev/null +++ b/sim/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 28 +/p/x49gp/code/!svn/ver/1/sim +END +.cvsignore +K 25 +svn:wc:ra_dav:version-url +V 39 +/p/x49gp/code/!svn/ver/1/sim/.cvsignore +END diff --git a/sim/.svn/entries b/sim/.svn/entries new file mode 100644 index 0000000..87e27c3 --- /dev/null +++ b/sim/.svn/entries @@ -0,0 +1,65 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/sim +http://svn.code.sf.net/p/x49gp/code + + + +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +CVS +dir + +.cvsignore +file + + + + +2013-08-23T00:54:47.000000Z +488f0c41a36feb0e3c34a18494aefd3f +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +8 + diff --git a/sim/.svn/text-base/.cvsignore.svn-base b/sim/.svn/text-base/.cvsignore.svn-base new file mode 100644 index 0000000..4671378 --- /dev/null +++ b/sim/.svn/text-base/.cvsignore.svn-base @@ -0,0 +1 @@ +.depend diff --git a/sim/CVS/.svn/all-wcprops b/sim/CVS/.svn/all-wcprops new file mode 100644 index 0000000..a7665a8 --- /dev/null +++ b/sim/CVS/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 32 +/p/x49gp/code/!svn/ver/1/sim/CVS +END +Repository +K 25 +svn:wc:ra_dav:version-url +V 43 +/p/x49gp/code/!svn/ver/1/sim/CVS/Repository +END +Root +K 25 +svn:wc:ra_dav:version-url +V 37 +/p/x49gp/code/!svn/ver/1/sim/CVS/Root +END +Entries +K 25 +svn:wc:ra_dav:version-url +V 40 +/p/x49gp/code/!svn/ver/1/sim/CVS/Entries +END diff --git a/sim/CVS/.svn/entries b/sim/CVS/.svn/entries new file mode 100644 index 0000000..4fa311f --- /dev/null +++ b/sim/CVS/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +11 +http://svn.code.sf.net/p/x49gp/code/sim/CVS +http://svn.code.sf.net/p/x49gp/code + + + +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + +481df3bd-3408-496c-b7de-451e46197bb5 + +Repository +file + + + + +2013-08-23T00:54:47.000000Z +9f8e001171432a129c6bf43877c5f5a5 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +10 + +Root +file + + + + +2013-08-23T00:54:47.000000Z +f51b768066a9e7d88829b19678326fcd +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +60 + +Entries +file + + + + +2013-08-23T00:54:47.000000Z +1efa19e73f625258cecf55ab9aa867b5 +2008-12-11T16:48:39.837984Z +1 +antiocles + + + + + + + + + + + + + + + + + + + + + +45 + diff --git a/sim/CVS/.svn/text-base/Entries.svn-base b/sim/CVS/.svn/text-base/Entries.svn-base new file mode 100644 index 0000000..abd9e8e --- /dev/null +++ b/sim/CVS/.svn/text-base/Entries.svn-base @@ -0,0 +1,2 @@ +/.cvsignore/1.1/Thu Jun 8 05:41:42 2006// +D diff --git a/sim/CVS/.svn/text-base/Repository.svn-base b/sim/CVS/.svn/text-base/Repository.svn-base new file mode 100644 index 0000000..0374a59 --- /dev/null +++ b/sim/CVS/.svn/text-base/Repository.svn-base @@ -0,0 +1 @@ +x49gp/sim diff --git a/sim/CVS/.svn/text-base/Root.svn-base b/sim/CVS/.svn/text-base/Root.svn-base new file mode 100644 index 0000000..6f29e94 --- /dev/null +++ b/sim/CVS/.svn/text-base/Root.svn-base @@ -0,0 +1 @@ +:pserver:anonymous@x49gp.cvs.sourceforge.net:/cvsroot/x49gp diff --git a/sim/CVS/Entries b/sim/CVS/Entries new file mode 100644 index 0000000..abd9e8e --- /dev/null +++ b/sim/CVS/Entries @@ -0,0 +1,2 @@ +/.cvsignore/1.1/Thu Jun 8 05:41:42 2006// +D diff --git a/sim/CVS/Repository b/sim/CVS/Repository new file mode 100644 index 0000000..0374a59 --- /dev/null +++ b/sim/CVS/Repository @@ -0,0 +1 @@ +x49gp/sim diff --git a/sim/CVS/Root b/sim/CVS/Root new file mode 100644 index 0000000..6f29e94 --- /dev/null +++ b/sim/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@x49gp.cvs.sourceforge.net:/cvsroot/x49gp diff --git a/sram.c b/sram.c new file mode 100644 index 0000000..c34b56f --- /dev/null +++ b/sram.c @@ -0,0 +1,796 @@ +/* $Id: sram.c,v 1.18 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +typedef struct { + void *data; + void *shadow; + int fd; + size_t size; + uint32_t offset; + x49gp_t *x49gp; +} x49gp_sram_t; + +#define S3C2410_SRAM_BASE 0x08000000 +#define S3C2410_SRAM_SIZE 0x00080000 + +#define BASE 0xbcbb5 + +#define SATURN(r) ((target_phys_addr_t) &((saturn_cpu_t *)0)->r) + +static uint32_t +saturn_map_s2a(saturn_cpu_t *saturn, uint32_t saddr) +{ + uint32_t addr; + + addr = ldl_p(&saturn->read_map[saddr >> 12]) | ((saddr >> 1) & 0x7ff); + +// printf("SATURN: saddr %05x, addr %08x\n", saddr, addr); + + return addr; +} + +static uint32_t +saturn_peek(saturn_cpu_t *saturn, uint32_t saddr, uint32_t size) +{ + uint32_t addr, rot, mask, data; + uint64_t value; + + addr = saturn_map_s2a(saturn, saddr) & 0xfffffffc; + if (addr > 0x08080000) + return 0; + +// printf("SATURN: addr %08x\n", addr); + value = ((uint64_t) ldl_phys(addr)) | (((uint64_t) ldl_phys(addr + 4)) << 32); +// printf("SATURN: value %016llx\n", value); + + rot = (saddr & 7) << 2; + mask = (1ULL << (size << 2)) - 1; +// printf("SATURN: rot %u, mask %08x\n", rot, mask); + + data = ((uint32_t) (value >> rot)) & mask; +// printf("SATURN: data %08x\n", data); + + return data; +} + +static uint32_t +saturn_peek_address(saturn_cpu_t *saturn, uint32_t saddr) +{ + return saturn_peek(saturn, saddr, 5); +} + +static int +hxs2real(int hxs) +{ + int n = 0, c = 1; + + while (hxs) { + n += (hxs & 0xf) * c; + c *= 10; + hxs >>= 4; + } + return n; +} + +typedef struct { + uint32_t x; + uint32_t ml; + uint32_t mh; + uint8_t m; + uint8_t s; +} hp_real_t; + +static char * +real_number(saturn_cpu_t *saturn, uint32_t saddr, char *buffer, int ml, int xl) +{ + char *p = buffer; + char fmt[20]; + char m[16]; + hp_real_t r; + int re, xs; + int i; + uint32_t pc; + + pc = saddr; + + /* + * Read the number + */ + r.x = saturn_peek(saturn, pc, xl); + pc += xl; + r.ml = saturn_peek(saturn, pc, ml - 8); + pc += ml - 8; + r.mh = saturn_peek(saturn, pc, 8); + pc += 8; + r.m = saturn_peek(saturn, pc, 1); + pc += 1; + r.s = saturn_peek(saturn, pc, 1); + pc += 1; + + /* + * Figure out the exponent + */ + xs = 5; + while (--xl) + xs *= 10; + re = hxs2real(r.x); + if (re >= xs) + re = re - 2 * xs; + + if ((re >= 0) && (re < ml + 1)) { + if (r.s >= 5) + *p++ = '-'; + + sprintf(fmt, "%%.1X%%.8X%%.%dX", ml - 8); + sprintf(m, fmt, r.m, r.mh, r.ml); + + for (i = 0; i <= re; i++) + *p++ = m[i]; + *p++ = '.'; + for ( ; i < ml + 1; i++) + *p++ = m[i]; + p--; + while(*p == '0') + p--; + if (*p == '.') + p--; + *++p = '\0'; + + return buffer; + } + + if ((re < 0) && (re >= -ml - 1)) { + sprintf(fmt, "%%.1X%%.8X%%.%dX", ml - 8); + sprintf(m, fmt, r.m, r.mh, r.ml); + + for (i = ml; m[i] == '0'; i--) + ; + + if (-re <= ml - i + 1) { + if (r.s >= 5) + *p++ = '-'; + + *p++ = '.'; + + for (i = 1; i < -re; i++) + *p++ = '0'; + + for (i = 0; i < ml + 1; i++) + *p++ = m[i]; + p--; + while(*p == '0') + p--; + *++p = '\0'; + + return buffer; + } + } + + sprintf(fmt, "%%s%%X.%%.8X%%.%dX", ml - 8); + sprintf(p, fmt, (r.s >= 5) ? "-" : "", r.m, r.mh, r.ml); + + p += strlen(p) - 1; + + while(*p == '0') + p--; + *++p = '\0'; + + if (re) { + sprintf(p, "E%d", re); + p += strlen(p); + *p = '\0'; + } + + return buffer; +} + +static uint32_t +dump_object(x49gp_t *x49gp, x49gp_sram_t *sram, uint32_t saddr) +{ + saturn_cpu_t *saturn = (sram->data + 0x3340); + char buffer[128]; + uint32_t prolog, pc; + char c; + int i, n; + + pc = saddr; + + prolog = saturn_peek(saturn, pc, 5); + pc += 5; + + switch (prolog) { + case 0x02e48: + case 0x02e6d: + printf(" "); + n = saturn_peek(saturn, pc, 2); + pc += 2; + for (i = 0; i < n; i++) { + c = saturn_peek(saturn, pc, 2); + printf("%c", c); + pc += 2; + } + break; + + case 0x02a4e: + n = saturn_peek(saturn, pc, 5); + pc += 5; + if (n <= 16) { + printf(" #%08x%08xh", saturn_peek(saturn, pc + 8, 8), + saturn_peek(saturn, pc + 0, 8)); + } else { + printf(" C#"); + for (i = 0; i < n; i++) { + printf("%x", saturn_peek(saturn, pc + i, 1)); + } + } + pc += n; + break; + + case 0x02911: + printf(" <%05x>", saturn_peek(saturn, pc, 5)); + pc += 5; + break; + + case 0x02933: + printf(" %%%s", real_number(saturn, pc, buffer, 11, 3)); + pc += 16; + break; + + case 0x02955: + printf(" %%%%%s", real_number(saturn, pc, buffer, 14, 5)); + pc += 21; + break; + + case 0x02e92: + printf(" <%03x %03x>", saturn_peek(saturn, pc + 0, 3), + saturn_peek(saturn, pc + 3, 3)); + pc += 6; + break; + + case 0x026ac: + printf(" <%03x %04x>", saturn_peek(saturn, pc + 0, 3), + saturn_peek(saturn, pc + 3, 4)); + pc += 7; + break; + + case 0x02ab8: + printf(" '"); + while (1) { + prolog = saturn_peek(saturn, pc, 5); + if (prolog == 0x0312b) { + pc += 5; + break; + } + pc += dump_object(x49gp, sram, pc); + } + printf(" '"); + break; + + case 0x02d9d: + printf(" :"); + while (1) { + prolog = saturn_peek(saturn, pc, 5); + if (prolog == 0x0312b) { + pc += 5; + break; + } + pc += dump_object(x49gp, sram, pc); + } + printf(" ;"); + break; + + default: + printf(" %05x", prolog); + break; + } + + return pc - saddr; +} + +static void +debug_saturn(x49gp_t *x49gp, x49gp_sram_t *sram) +{ + saturn_cpu_t *saturn = (sram->data + 0x3340); + uint32_t sp, se; + uint32_t prolog; + uint32_t rsp; + uint32_t first; + static uint32_t prev_first = 0; + static int state = 0; + int depth; + int i; + +// printf("SATURN: %p, RPLTOP: %08x\n", saturn, saturn_map_s2a(saturn, SAT_RPLTOP)); +// printf("SATURN: %p, RSKTOP: %08x\n", saturn, saturn_map_s2a(saturn, SAT_RSKTOP)); + +// rpltop = saturn_peek_address(saturn, SAT_RPLTOP); +// printf("SATURN: RPLTOP: %05x\n", rpltop); + + rsp = saturn_peek_address(saturn, SAT_RSKTOP); + if (rsp == 0) + return; + + first = saturn_peek_address(saturn, rsp - 5); + if (first == prev_first) { + return; + } + prev_first = first; + + if (first == (BASE + 0x14a54)) { + state = 1; + } + if (state == 0) + return; + + printf("SATURN: %p, rsp: %05x %08x\n", saturn, rsp, saturn_map_s2a(saturn, rsp)); + + for (i = 0; ; i++) { + rsp -= 5; + + se = saturn_peek_address(saturn, rsp); + if (se == 0) + break; + + if (se > BASE) + printf("SATURN: RSTK %02u: %05x <%05x>\n", i, se, se - BASE); + else + printf("SATURN: RSTK %02u: %05x\n", i, se); + } + + + depth = (saturn_peek_address(saturn, SAT_EDITLINE) - saturn_peek_address(saturn, SAT_DSKTOP) - 5) / 5; + + printf("SATURN: depth %d\n", depth); + + sp = saturn_peek_address(saturn, SAT_EDITLINE) - 10; + + for (i = 0; i < depth; i++) { + se = saturn_peek_address(saturn, sp); + sp -= 5; + + prolog = saturn_peek(saturn, se, 5); + + printf("SATURN: %02u: <%05x> <%05x>", depth - i, se, prolog); + + dump_object(x49gp, sram, se); + + printf("\n"); + } +} + +static uint32_t +sram_get_word(void *opaque, target_phys_addr_t offset) +{ + x49gp_sram_t *sram = opaque; + uint32_t data; + +#ifdef QEMU_OLD + offset -= S3C2410_SRAM_BASE; +#endif + data = ldl_p(sram->data + offset); + +#if 0 + if (offset == 0x00000a1c) { + printf("read SRAM at offset %08x: %08x (pc %08x)\n", offset, data, x49gp->arm->Reg[15]); + } +#endif + +#ifdef DEBUG_X49GP_SYSRAM_READ + if ((offset & ~(0x0001ffff)) == 0x00000000) { + printf("read SRAM 4 at offset %08x: %08x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_ERAM_READ + if ((offset & ~(0x0001ffff)) == 0x00020000) { + printf("read SRAM 4 at offset %08x: %08x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_IRAM_READ + if ((offset & ~(0x0003ffff)) == 0x00040000) { + printf("read SRAM 4 at offset %08x: %08x\n", offset, data); + } +#endif + + return data; +} + +static uint32_t +sram_get_halfword(void *opaque, target_phys_addr_t offset) +{ + x49gp_sram_t *sram = opaque; + unsigned short data; + +#ifdef QEMU_OLD + offset -= S3C2410_SRAM_BASE; +#endif + data = lduw_p(sram->data + offset); + +#ifdef DEBUG_X49GP_SYSRAM_READ + if ((offset & ~(0x0001ffff)) == 0x00000000) { + printf("read SRAM 2 at offset %08x: %04x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_ERAM_READ + if ((offset & ~(0x0001ffff)) == 0x00020000) { + printf("read SRAM 2 at offset %08x: %04x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_IRAM_READ + if ((offset & ~(0x0003ffff)) == 0x00040000) { + printf("read SRAM 2 at offset %08x: %04x\n", offset, data); + } +#endif + + return data; +} + +static uint32_t +sram_get_byte(void *opaque, target_phys_addr_t offset) +{ + x49gp_sram_t *sram = opaque; + unsigned char data; + +#ifdef QEMU_OLD + offset -= S3C2410_SRAM_BASE; +#endif + data = ldub_p(sram->data + offset); + +#ifdef DEBUG_X49GP_SYSRAM_READ + if ((offset & ~(0x0001ffff)) == 0x00000000) { + printf("read SRAM 1 at offset %08x: %02x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_ERAM_READ + if ((offset & ~(0x0001ffff)) == 0x00020000) { + printf("read SRAM 1 at offset %08x: %02x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_IRAM_READ + if ((offset & ~(0x0003ffff)) == 0x00040000) { + printf("read SRAM 1 at offset %08x: %02x\n", offset, data); + } +#endif + + return data; +} + +static void +sram_put_word(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + x49gp_sram_t *sram = opaque; + +#ifdef QEMU_OLD + // offset -= S3C2410_SRAM_BASE; + offset -= (target_phys_addr_t)phys_ram_base + sram->offset; +#endif + + if (offset == 0x00000a1c) { + printf("write SRAM 4 at offset %08x: %08x (pc %08x)\n", + offset, data, sram->x49gp->env->regs[15]); + } + + debug_saturn(sram->x49gp, sram); + +#if 0 + if (offset == 0x3340 + SATURN(D1)) { + printf("write D1 at offset %08x: %08x (pc %08x)\n", + offset, data, sram->x49gp->env->regs[15]); + } + if (offset == 0x3340 + SATURN(A)) { + printf("write A at offset %08x: %08x (pc %08x)\n", + offset, data, sram->x49gp->env->regs[15]); + } + if (offset == 0x3340 + SATURN(A) + 8) { + printf("write Al at offset %08x: %08x (pc %08x)\n", + offset, data, sram->x49gp->env->regs[15]); + } +#endif + +#ifdef DEBUG_X49GP_SYSRAM_WRITE + if ((offset & ~(0x0001ffff)) == 0x00000000) { + printf("write SRAM 4 at offset %08x: %08x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_ERAM_WRITE + if ((offset & ~(0x0001ffff)) == 0x00020000) { + printf("write SRAM 4 at offset %08x: %08x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_IRAM_WRITE + if ((offset & ~(0x0003ffff)) == 0x00040000) { + printf("write SRAM 4 at offset %08x: %08x\n", offset, data); + } +#endif + + stl_p(sram->data + offset, data); +} + +static void +sram_put_halfword(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + x49gp_sram_t *sram = opaque; + +#ifdef QEMU_OLD + // offset -= S3C2410_SRAM_BASE; + offset -= (target_phys_addr_t)phys_ram_base + sram->offset; +#endif + data &= 0xffff; + +#ifdef DEBUG_X49GP_SYSRAM_WRITE + if ((offset & ~(0x0001ffff)) == 0x00000000) { + printf("write SRAM 2 at offset %08x: %04x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_ERAM_WRITE + if ((offset & ~(0x0001ffff)) == 0x00020000) { + printf("write SRAM 2 at offset %08x: %04x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_IRAM_WRITE + if ((offset & ~(0x0003ffff)) == 0x00040000) { + printf("write SRAM 2 at offset %08x: %04x\n", offset, data); + } +#endif + + stw_p(sram->data + offset, data); +} + +static void +sram_put_byte(void *opaque, target_phys_addr_t offset, uint32_t data) +{ + x49gp_sram_t *sram = opaque; + +#ifdef QEMU_OLD + // offset -= S3C2410_SRAM_BASE; + offset -= (target_phys_addr_t)phys_ram_base + sram->offset; +#endif + data &= 0xff; + +#ifdef DEBUG_X49GP_SYSRAM_WRITE + if ((offset & ~(0x0001ffff)) == 0x00000000) { + printf("write SRAM 1 at offset %08x: %02x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_ERAM_WRITE + if ((offset & ~(0x0001ffff)) == 0x00020000) { + printf("write SRAM 1 at offset %08x: %02x\n", offset, data); + } +#endif +#ifdef DEBUG_X49GP_IRAM_WRITE + if ((offset & ~(0x0003ffff)) == 0x00040000) { + printf("write SRAM 1 at offset %08x: %02x\n", offset, data); + } +#endif + + stb_p(sram->data + offset, data); +} + +static CPUReadMemoryFunc *sram_readfn[] = +{ + sram_get_byte, + sram_get_halfword, + sram_get_word +}; + +static CPUWriteMemoryFunc *sram_writefn[] = +{ + sram_put_byte, + sram_put_halfword, + sram_put_word +}; + +static int +sram_load(x49gp_module_t *module, GKeyFile *key) +{ + x49gp_sram_t *sram = module->user_data; + char *filename; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + filename = x49gp_module_get_filename(module, key, "filename"); + if (NULL == filename) { + fprintf(stderr, "%s: %s:%u: key \"filename\" not found\n", + module->name, __FUNCTION__, __LINE__); + return -ENOENT; + } + + sram->fd = open(filename, O_RDWR); + if (sram->fd < 0) { + error = -errno; + fprintf(stderr, "%s: %s:%u: open %s: %s\n", + module->name, __FUNCTION__, __LINE__, + filename, strerror(errno)); + g_free(filename); + return error; + } + + sram->size = 0x00080000; + + sram->data = mmap(phys_ram_base + sram->offset, sram->size, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, + sram->fd, 0); + if (sram->data == (void *) -1) { + error = -errno; + fprintf(stderr, "%s: %s:%u: mmap %s: %s\n", + module->name, __FUNCTION__, __LINE__, + filename, strerror(errno)); + g_free(filename); + close(sram->fd); + sram->fd = -1; + return error; + } + + sram->shadow = mmap(phys_ram_base + sram->offset + sram->size, + sram->size, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, + sram->fd, 0); + if (sram->shadow == (void *) -1) { + error = -errno; + fprintf(stderr, "%s: %s:%u: mmap %s (shadow): %s\n", + module->name, __FUNCTION__, __LINE__, + filename, strerror(errno)); + g_free(filename); + close(sram->fd); + sram->fd = -1; + return error; + } + + sram->x49gp->sram = phys_ram_base + sram->offset; + + g_free(filename); + return 0; +} + +static int +sram_save(x49gp_module_t *module, GKeyFile *key) +{ + x49gp_sram_t *sram = module->user_data; + int error; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + error = msync(sram->data, sram->size, MS_ASYNC); + if (error) { + fprintf(stderr, "%s:%u: msync: %s\n", + __FUNCTION__, __LINE__, strerror(errno)); + return error; + } + + error = fsync(sram->fd); + if (error) { + fprintf(stderr, "%s:%u: fsync: %s\n", + __FUNCTION__, __LINE__, strerror(errno)); + return error; + } + + return 0; +} + +static int +sram_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + return 0; +} + +static int +sram_init(x49gp_module_t *module) +{ + x49gp_sram_t *sram; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + sram = malloc(sizeof(x49gp_sram_t)); + if (NULL == sram) { + fprintf(stderr, "%s:%u: Out of memory\n", + __FUNCTION__, __LINE__); + return -ENOMEM; + } + memset(sram, 0, sizeof(x49gp_sram_t)); + + sram->fd = -1; + + module->user_data = sram; + sram->x49gp = module->x49gp; + + sram->data = (void *) -1; + sram->shadow = (void *) -1; + sram->offset = phys_ram_size; + phys_ram_size += S3C2410_SRAM_SIZE; + phys_ram_size += S3C2410_SRAM_SIZE; + +#if 0 +{ + int iotype; + + iotype = cpu_register_io_memory(0, sram_readfn, sram_writefn, sram); +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_SRAM_BASE, + S3C2410_SRAM_SIZE, + sram->offset | iotype | IO_MEM_ROMD); + + iotype = cpu_register_io_memory(0, sram_readfn, sram_writefn, sram); +printf("%s: iotype %08x\n", __FUNCTION__, iotype); + cpu_register_physical_memory(S3C2410_SRAM_BASE + S3C2410_SRAM_SIZE, + S3C2410_SRAM_SIZE, + (sram->offset + S3C2410_SRAM_SIZE) | iotype | IO_MEM_ROMD); +} +#else + cpu_register_physical_memory(S3C2410_SRAM_BASE, S3C2410_SRAM_SIZE, + sram->offset | IO_MEM_RAM); + cpu_register_physical_memory(S3C2410_SRAM_BASE + S3C2410_SRAM_SIZE, + S3C2410_SRAM_SIZE, + (sram->offset + S3C2410_SRAM_SIZE) | IO_MEM_RAM); +#endif + + return 0; +} + +static int +sram_exit(x49gp_module_t *module) +{ + x49gp_sram_t *sram; + +#ifdef DEBUG_X49GP_MODULES + printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__); +#endif + + if (module->user_data) { + sram = module->user_data; + + if (sram->shadow != (void *) -1) { + munmap(sram->shadow, sram->size); + } + if (sram->data != (void *) -1) { + munmap(sram->data, sram->size); + } + if (sram->fd >= 0) { + close(sram->fd); + } + + free(sram); + } + + x49gp_module_unregister(module); + free(module); + + return 0; +} + +int +x49gp_sram_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "sram", sram_init, sram_exit, + sram_reset, sram_load, sram_save, NULL, + &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/symbol.c b/symbol.c new file mode 100644 index 0000000..10d6aa8 --- /dev/null +++ b/symbol.c @@ -0,0 +1,279 @@ +/* $Id: symbol.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include + +#include +#include + +#include + +static const cairo_path_data_t symbol_square_path_data[] = +{ + SYMBOL_MOVE_TO( 0.100, 0.100 ), + SYMBOL_LINE_TO( 0.500, 0.000 ), + SYMBOL_LINE_TO( 0.000, 0.500 ), + SYMBOL_LINE_TO( -0.500, 0.000 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(square, 0.7, 0.0, 0.1, 0.1, 0.6, 0.6); + + +static const cairo_path_data_t symbol_triangleup_path_data[] = +{ + SYMBOL_MOVE_TO( 0.100, 0.000 ), + SYMBOL_LINE_TO( 0.800, 0.000 ), + SYMBOL_LINE_TO( -0.400, 0.693 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(triangleup, 1.0, 0.0, 0.1, 0.0, 0.9, 0.693); + + +static const cairo_path_data_t symbol_triangleright_path_data[] = +{ + SYMBOL_MOVE_TO( 0.100, 0.000 ), + SYMBOL_LINE_TO( 0.000, 0.800 ), + SYMBOL_LINE_TO( 0.693, -0.400 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(triangleright, 0.893, 0.0, 0.1, 0.0, 0.793, 0.8); + + +static const cairo_path_data_t symbol_arrowleftdblfull_path_data[] = +{ + SYMBOL_MOVE_TO( 0.100, 0.370 ), + SYMBOL_LINE_TO( 0.652, 0.500 ), + SYMBOL_LINE_TO( 0.000, -0.250 ), + SYMBOL_LINE_TO( 1.000, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.500 ), + SYMBOL_LINE_TO( -1.000, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.250 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(arrowleftdblfull, 1.852, 0.0, 0.1, -0.13, 1.752, 0.87); + +static const cairo_path_data_t symbol_uparrowleft_path_data[] = +{ + SYMBOL_MOVE_TO( 0.100, 0.500 ), + SYMBOL_LINE_TO( 0.600, 0.200 ), + SYMBOL_LINE_TO( 0.000, -0.150 ), + SYMBOL_LINE_TO( 0.500, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.550 ), + SYMBOL_LINE_TO( -0.100, 0.000 ), + SYMBOL_LINE_TO( 0.000, 0.450 ), + SYMBOL_LINE_TO( -0.400, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.150 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(uparrowleft, 1.3, 0.0, 0.1, 0.0, 1.2, 0.7); + + +static const cairo_path_data_t symbol_uparrowright_path_data[] = +{ + SYMBOL_MOVE_TO( 1.200, 0.500 ), + SYMBOL_LINE_TO( -0.600, 0.200 ), + SYMBOL_LINE_TO( 0.000, -0.150 ), + SYMBOL_LINE_TO( -0.500, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.550 ), + SYMBOL_LINE_TO( 0.100, 0.000 ), + SYMBOL_LINE_TO( 0.000, 0.450 ), + SYMBOL_LINE_TO( 0.400, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.150 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(uparrowright, 1.3, 0.0, 0.1, 0.0, 1.2, 0.7); + + +static const cairo_path_data_t symbol_tick_path_data[] = +{ + SYMBOL_MOVE_TO( 0.100, 0.400 ), + SYMBOL_LINE_TO( 0.000, 0.450 ), + SYMBOL_LINE_TO( 0.150, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.450 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(tick, 0.35, 0.0, 0.1, 0.4, 0.25, 0.85); + + +static const cairo_path_data_t symbol_radical_path_data[] = +{ + SYMBOL_MOVE_TO( 0.000, 0.500 ), + SYMBOL_LINE_TO( 0.214, 0.100 ), + SYMBOL_LINE_TO( 0.213, -0.456 ), + SYMBOL_LINE_TO( 0.229, 0.856 ), + SYMBOL_LINE_TO( 0.077, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.100 ), + SYMBOL_LINE_TO( -0.281, -1.050 ), + SYMBOL_LINE_TO( -0.287, 0.616 ), + SYMBOL_LINE_TO( -0.123, -0.057 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(radical, 0.733, 0.0, 0.0, -0.15, 0.733, 1.0); + + +static const cairo_path_data_t symbol_overscore_path_data[] = +{ + SYMBOL_MOVE_TO( 0.000, 1.000 ), + SYMBOL_LINE_TO( 0.900, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.100 ), + SYMBOL_LINE_TO( -0.900, 0.000 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(overscore, 0.8, 0.0, 0.0, 0.9, 0.9, 1.0); + + +static const cairo_path_data_t symbol_minus_path_data[] = +{ + SYMBOL_MOVE_TO( 0.050, 0.312 ), + SYMBOL_LINE_TO( 0.000, 0.118 ), + SYMBOL_LINE_TO( 0.500, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.118 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(minus, 0.6, 0.0, 0.05, 0.312, 0.55, 0.430); + + +static const cairo_path_data_t symbol_divide_path_data[] = +{ + SYMBOL_MOVE_TO( 0.050, 0.312 ), + SYMBOL_LINE_TO( 0.000, 0.118 ), + SYMBOL_LINE_TO( 0.500, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.118 ), + SYMBOL_CLOSE_PATH(), + SYMBOL_MOVE_TO( 0.180, -0.108 ), + SYMBOL_LINE_TO( 0.135, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.135 ), + SYMBOL_LINE_TO( -0.135, 0.000 ), + SYMBOL_CLOSE_PATH(), + SYMBOL_MOVE_TO( 0.000, 0.334 ), + SYMBOL_LINE_TO( 0.000, 0.135 ), + SYMBOL_LINE_TO( 0.135, 0.000 ), + SYMBOL_LINE_TO( 0.000, -0.135 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(divide, 0.6, 0.0, 0.05, 0.069, 0.55, 0.673); + + +static const cairo_path_data_t symbol_divisionslash_path_data[] = +{ + SYMBOL_MOVE_TO( 0.050, 0.000 ), + SYMBOL_LINE_TO( 0.345, 0.739 ), + SYMBOL_LINE_TO( 0.130, 0.000 ), + SYMBOL_LINE_TO( -0.345, -0.739 ), + SYMBOL_CLOSE_PATH() +}; + +SYMBOL(divisionslash, 0.575, 0.000, 0.050, 0.000, 0.525, 0.739); + + +CONTROL(beginsuperscript, 0.0, 0.5, 1.0, 0.8); +CONTROL(endsuperscript, 0.0, 0.5, 1.25, 1.0); + +CONTROL(kern_m1, -0.1, 0.0, 1.0, 1.0); +CONTROL(kern_m2, -0.2, 0.0, 1.0, 1.0); +CONTROL(kern_m3, -0.3, 0.0, 1.0, 1.0); +CONTROL(kern_m4, -0.4, 0.0, 1.0, 1.0); +CONTROL(kern_m5, -0.5, 0.0, 1.0, 1.0); +CONTROL(kern_m6, -0.6, 0.0, 1.0, 1.0); +CONTROL(kern_m7, -0.7, 0.0, 1.0, 1.0); +CONTROL(kern_m8, -0.8, 0.0, 1.0, 1.0); +CONTROL(kern_m9, -0.9, 0.0, 1.0, 1.0); + + +typedef struct { + const char *name; + const x49gp_symbol_t *symbol; +} symbol_name_t; + +static const symbol_name_t symbol_names[] = +{ + { ".notdef", &symbol_square }, + { "arrowleftdblfull", &symbol_arrowleftdblfull }, + { "divide", &symbol_divide }, + { "divisionslash", &symbol_divisionslash }, + { "minus", &symbol_minus }, + { "overscore", &symbol_overscore }, + { "radical", &symbol_radical }, + { "square", &symbol_square }, + { "tick", &symbol_tick }, + { "triangleright", &symbol_triangleright }, + { "triangleup", &symbol_triangleup }, + { "uparrowleft", &symbol_uparrowleft }, + { "uparrowright", &symbol_uparrowright }, + { "super", &symbol_beginsuperscript }, + { "/super", &symbol_endsuperscript }, + { "kern-1", &symbol_kern_m1 }, + { "kern-2", &symbol_kern_m2 }, + { "kern-3", &symbol_kern_m3 }, + { "kern-4", &symbol_kern_m4 }, + { "kern-5", &symbol_kern_m5 }, + { "kern-6", &symbol_kern_m6 }, + { "kern-7", &symbol_kern_m7 }, + { "kern-8", &symbol_kern_m8 }, + { "kern-9", &symbol_kern_m9 }, + { NULL, NULL } +}; +#define NR_SYMBOLS (sizeof(symbol_names) / sizeof(symbol_names[0]) - 1) + +int +symbol_lookup_glyph_by_name(const char *name, int namelen, gunichar *glyph) +{ + const symbol_name_t *symname; + int i = 0; + + /* + * Code symbols as Unicode Private Use from U+E000 on... + */ + + symname = symbol_names; + while (symname->name) { + if ((strlen(symname->name) == namelen) && + !strncmp(symname->name, name, namelen)) { + if (glyph) { + *glyph = 0xe000 + i; + } + return 1; + } + + symname++; + i++; + } + + return 0; +} + +const x49gp_symbol_t * +symbol_get_by_glyph(gunichar glyph) +{ + int index = glyph - 0xe000; + + if ((index >= 0) && (index < NR_SYMBOLS)) { + return symbol_names[index].symbol; + } + + return NULL; +} + +const x49gp_symbol_t * +symbol_get_by_name(const char *name) +{ + gunichar glyph; + + if (symbol_lookup_glyph_by_name(name, strlen(name), &glyph)) { + return symbol_get_by_glyph(glyph); + } + + return NULL; +} diff --git a/timer.c b/timer.c new file mode 100644 index 0000000..9a5258f --- /dev/null +++ b/timer.c @@ -0,0 +1,329 @@ +/* $Id: timer.c,v 1.4 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +typedef struct { + long type; +} x49gp_clock_t; + +struct x49gp_timer_s { + long type; + int64_t expires; + x49gp_timer_cb_t cb; + void *user_data; + x49gp_timer_t *next; +}; + +#ifdef QEMU_OLD // LD TEMPO HACK +typedef x49gp_timer_t QEMUTimer; +#endif +typedef x49gp_timer_cb_t QEMUTimerCB; +typedef void * QEMUClock; +QEMUClock *rt_clock = (void *) X49GP_TIMER_REALTIME; +QEMUClock *vm_clock = (void *) X49GP_TIMER_VIRTUAL; +int64_t ticks_per_sec = 1000000; + +static x49gp_timer_t *x49gp_timer_lists[2]; + +int64_t +x49gp_get_clock(void) +{ + struct timeval tv; + int64_t us; + + gettimeofday(&tv, NULL); + + us = tv.tv_sec * 1000000LL + tv.tv_usec; + + return us; +} + +x49gp_timer_t * +x49gp_new_timer(long type, x49gp_timer_cb_t cb, void *user_data) +{ + x49gp_timer_t *ts; + + ts = malloc(sizeof(x49gp_timer_t)); + if (NULL == ts) { + return NULL; + } + memset(ts, 0, sizeof(x49gp_timer_t)); + + ts->type = type; + ts->cb = cb; + ts->user_data = user_data; + + return ts; +} + +void +x49gp_free_timer(x49gp_timer_t *ts) +{ + free(ts); +} + +void +x49gp_del_timer(x49gp_timer_t *ts) +{ + x49gp_timer_t **pt, *t; + +// printf("%s: ts %p\n", __FUNCTION__, ts); + pt = &x49gp_timer_lists[ts->type]; + while (1) { + t = *pt; + if (NULL == t) + break; + if (t == ts) { + *pt = t->next; + ts->next = NULL; + break; + } + pt = &t->next; + } +} + +void +x49gp_mod_timer(x49gp_timer_t *ts, int64_t expires) +{ + x49gp_timer_t **pt, *t; + + x49gp_del_timer(ts); + +// printf("%s: ts %p, expires %lld\n", __FUNCTION__, ts, expires); + pt = &x49gp_timer_lists[ts->type]; + while (1) { + t = *pt; + if (NULL == t) + break; + if (t->expires > expires) + break; + pt = &t->next; + } + + ts->expires = expires; + ts->next = *pt; + *pt = ts; +} + +int +x49gp_timer_pending(x49gp_timer_t *ts) +{ + x49gp_timer_t *t; + + for (t = x49gp_timer_lists[ts->type]; t; t = t->next) { + if (t == ts) + return 1; + } + + return 0; +} + +int64_t +x49gp_timer_expires(x49gp_timer_t *ts) +{ + return ts->expires; +} + +static int +x49gp_timer_expired(x49gp_timer_t *timer_head, int64_t current_time) +{ + if (NULL == timer_head) + return 0; + return (timer_head->expires <= current_time); +} + +QEMUTimer * +qemu_new_timer(QEMUClock *clock, QEMUTimerCB cb, void *opaque) +{ + return x49gp_new_timer((long) clock, cb, opaque); +} + +void +qemu_free_timer(QEMUTimer *ts) +{ + return x49gp_free_timer(ts); +} + +void +qemu_mod_timer(QEMUTimer *ts, int64_t expire_time) +{ + return x49gp_mod_timer(ts, expire_time); +} + +void +qemu_del_timer(QEMUTimer *ts) +{ + return x49gp_del_timer(ts); +} + +int +qemu_timer_pending(QEMUTimer *ts) +{ + return x49gp_timer_pending(ts); +} + +int64_t +qemu_get_clock(QEMUClock *clock) +{ + return x49gp_get_clock(); +} + +static void +x49gp_run_timers(x49gp_timer_t **ptimer_head, int64_t current_time) +{ + x49gp_timer_t *ts; + +// printf("%s: now %lld\n", __FUNCTION__, current_time); + while (1) { + ts = *ptimer_head; + if (NULL == ts || ts->expires > current_time) + break; + + *ptimer_head = ts->next; + ts->next = NULL; + +// printf("%s: call ts %p\n", __FUNCTION__, ts); + ts->cb(ts->user_data); +// printf("%s: ts %p done\n", __FUNCTION__, ts); + } + +// printf("%s: timers done\n", __FUNCTION__); +} + +static void +x49gp_alarm_handler(int sig) +{ + if (x49gp_timer_expired(x49gp_timer_lists[X49GP_TIMER_VIRTUAL], + x49gp_get_clock()) || + x49gp_timer_expired(x49gp_timer_lists[X49GP_TIMER_REALTIME], + x49gp_get_clock())) { +#ifdef QEMU_OLD + if (cpu_single_env && ! (cpu_single_env->interrupt_request & CPU_INTERRUPT_EXIT)) { + cpu_interrupt(cpu_single_env, CPU_INTERRUPT_EXIT); + } +#else + if (cpu_single_env && ! cpu_single_env->exit_request) { + cpu_exit(cpu_single_env); + } +#endif + } +} + +static void +x49gp_main_loop_wait(x49gp_t *x49gp, int timeout) +{ +// printf("%s: timeout: %d\n", __FUNCTION__, timeout); + +#if 0 + if (gdb_poll(x49gp->env)) { + gdb_handlesig(x49gp->env, 0); + } else +#endif + poll(NULL, 0, timeout); + + if (x49gp->arm_idle != X49GP_ARM_OFF) { + x49gp_run_timers(&x49gp_timer_lists[X49GP_TIMER_VIRTUAL], + x49gp_get_clock()); + } + + x49gp_run_timers(&x49gp_timer_lists[X49GP_TIMER_REALTIME], + x49gp_get_clock()); + +// printf("%s: done\n", __FUNCTION__); +} + +int +x49gp_main_loop(x49gp_t *x49gp) +{ + int prev_idle; + int ret, timeout; + + while (! x49gp->arm_exit) { + prev_idle = x49gp->arm_idle; + + if (x49gp->arm_idle == X49GP_ARM_RUN) { +#ifdef DEBUG_X49GP_TIMER_IDLE +printf("%lld: %s: call cpu_exec(%p)\n", x49gp_get_clock(), __FUNCTION__, x49gp->env); +#endif + ret = cpu_exec(x49gp->env); +#ifdef DEBUG_X49GP_TIMER_IDLE +printf("%lld: %s: cpu_exec(): %d, PC %08x\n", x49gp_get_clock(), __FUNCTION__, ret, x49gp->env->regs[15]); +#endif + +if (x49gp->env->regs[15] == 0x8620) { +printf("PC %08x: SRAM %08x: %08x %08x %08x <%08x>\n", x49gp->env->regs[15], 0x08000a0c, + * ((uint32_t *) &x49gp->sram[0x0a00]), + * ((uint32_t *) &x49gp->sram[0x0a04]), + * ((uint32_t *) &x49gp->sram[0x0a08]), + * ((uint32_t *) &x49gp->sram[0x0a0c])); +* ((uint32_t *) &x49gp->sram[0x0a0c]) = 0x00000000; +} + +#if 0 + if (ret == EXCP_DEBUG) { + gdb_handlesig(x49gp->env, SIGTRAP); + } +#endif + + if (x49gp->arm_idle != prev_idle) { + if (x49gp->arm_idle == X49GP_ARM_OFF) { + x49gp_lcd_update(x49gp); + cpu_reset(x49gp->env); + } + } + + if (ret == EXCP_HALTED) { + timeout = 10; + } else { + timeout = 0; + } + } else { + timeout = 1; + } + + x49gp_main_loop_wait(x49gp, timeout); + } + + return 0; +} + +int +x49gp_timer_init(x49gp_t *x49gp) +{ + struct sigaction sa; + struct itimerval it; + + x49gp_timer_lists[X49GP_TIMER_VIRTUAL] = NULL; + x49gp_timer_lists[X49GP_TIMER_REALTIME] = NULL; + + sigfillset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sa.sa_handler = x49gp_alarm_handler; + sigaction(SIGALRM, &sa, NULL); + + it.it_interval.tv_sec = 0; + it.it_interval.tv_usec = 1000; + it.it_value.tv_sec = 0; + it.it_value.tv_usec = 1000; + + setitimer(ITIMER_REAL, &it, NULL); + return 0; +} diff --git a/tiny_font.c b/tiny_font.c new file mode 100644 index 0000000..5692bb0 --- /dev/null +++ b/tiny_font.c @@ -0,0 +1,205 @@ +/* $Id: tiny_font.c,v 1.6 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +const bitmap_font_t tiny_font = +{ + 7, + -3, + { + GLYPH(tiny, notdef), + + SPACE("space", 4, 0), + GLYPH(tiny, quotedbl), + GLYPH(tiny, numbersign), + GLYPH(tiny, ampersand), + GLYPH(tiny, parenleft), + GLYPH(tiny, parenright), + GLYPH(tiny, comma), + GLYPH(tiny, hyphen), + GLYPH(tiny, period), + GLYPH(tiny, slash), + + GLYPH(tiny, zero), + GLYPH(tiny, one), + GLYPH(tiny, two), + GLYPH(tiny, three), + + GLYPH(tiny, colon), + + GLYPH(tiny, less), + GLYPH(tiny, equal), + GLYPH(tiny, greater), + + GLYPH(tiny, A), + GLYPH(tiny, B), + GLYPH(tiny, C), + GLYPH(tiny, D), + GLYPH(tiny, E), + GLYPH(tiny, F), + GLYPH(tiny, G), + GLYPH(tiny, H), + GLYPH(tiny, I), + GLYPH(tiny, J), + GLYPH(tiny, K), + GLYPH(tiny, L), + GLYPH(tiny, M), + GLYPH(tiny, N), + GLYPH(tiny, O), + GLYPH(tiny, P), + GLYPH(tiny, Q), + GLYPH(tiny, R), + GLYPH(tiny, S), + GLYPH(tiny, T), + GLYPH(tiny, U), + GLYPH(tiny, V), + GLYPH(tiny, W), + GLYPH(tiny, X), + GLYPH(tiny, Y), + GLYPH(tiny, Z), + + GLYPH(tiny, bracketleft), + GLYPH(tiny, bracketright), + GLYPH(tiny, underscore), + + GLYPH(tiny, i), + + GLYPH(tiny, overscore), + GLYPH(tiny, arrowleft), + GLYPH(tiny, arrowright), + GLYPH(tiny, guillemotleft), + GLYPH(tiny, guillemotright), + + GLYPH(tiny, braceleft), + GLYPH(tiny, braceright), + + GLYPH(tiny, large_comma), + + GLYPH(tiny, xsuperior), + GLYPH(tiny, twosuperior), + + GLYPH(tiny, math_e), + GLYPH(tiny, math_x), + GLYPH(tiny, math_y), + GLYPH(tiny, math_pi), + GLYPH(tiny, math_summation), + GLYPH(tiny, math_radical), + GLYPH(tiny, math_partialdiff), + GLYPH(tiny, math_integral), + GLYPH(tiny, math_infinity), + + GLYPH(tiny, math_numbersign), + GLYPH(tiny, math_less), + GLYPH(tiny, math_greater), + GLYPH(tiny, math_lessequal), + GLYPH(tiny, math_greaterequal), + GLYPH(tiny, math_equal), + GLYPH(tiny, math_notequal), + + GLYPH(tiny, math_arrowleft), + GLYPH(tiny, math_arrowright), + GLYPH(tiny, math_downarrowleft), + GLYPH(tiny, math_downarrowright), + + SPACE("kern-1", -1, -1), + SPACE("kern-2", -2, -2), + SPACE("kern-3", -3, -3), + SPACE("kern-4", -4, -4), + SPACE("kern-5", -5, -5), + SPACE("kern-6", -6, -6), + SPACE("kern-7", -7, -7), + + { NULL } + } +}; diff --git a/ui.c b/ui.c new file mode 100644 index 0000000..16f51f2 --- /dev/null +++ b/ui.c @@ -0,0 +1,2411 @@ +/* $Id: ui.c,v 1.34 2008/12/11 12:18:17 ecd Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(__linux__) +#define X49GP_UI_NORMAL_FONT "urw gothic l" +#else +#define X49GP_UI_NORMAL_FONT "Century Gothic" +#endif + + +static const x49gp_ui_key_t x49gp_ui_keys[] = +{ + { + "F1", "A", "Y=", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 0, 0, 36, 22, 5, 1, (1 << 5), (1 << 1), 1 + }, + { + "F2", "B", "WIN", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 50, 0, 36, 22, 5, 2, (1 << 5), (1 << 2), 2 + }, + { + "F3", "C", "GRAPH", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 99, 0, 36, 22, 5, 3, (1 << 5), (1 << 3), 3 + }, + { + "F4", "D", "2D/3D", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 149, 0, 36, 22, 5, 4, (1 << 5), (1 << 4), 4 + }, + { + "F5", "E", "TBLSET", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 198, 0, 36, 22, 5, 5, (1 << 5), (1 << 5), 5 + }, + { + "F6", "F", "TABLE", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 247, 0, 36, 22, 5, 6, (1 << 5), (1 << 6), 6 + }, + { + "APPS", "G", "FILES", "BEGIN", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 0, 44, 36, 28, 5, 7, (1 << 5), (1 << 7), 7 + }, + { + "MODE", "H", "CUSTOM", "END", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 50, 44, 36, 28, 6, 5, (1 << 6), (1 << 5), 5 + }, + { + "TOOL", "I", "i", "I", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 99, 44, 36, 28, 6, 6, (1 << 6), (1 << 6), 6 + }, + { + "V\\kern-1 AR", "J", "UPDIR", "COPY", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 0, 92, 36, 28, 6, 7, (1 << 6), (1 << 7), 7 + }, + { + "STO \\triangleright", "K", "RCL", "CUT", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 50, 92, 36, 28, 7, 1, (1 << 7), (1 << 1), 1 + }, + { + "NXT", "L", "PREV", "PASTE", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 99, 92, 36, 28, 7, 2, (1 << 7), (1 << 2), 2 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 200, 38, 33, 33, 6, 1, (1 << 6), (1 << 1), 1 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 164, 66, 33, 33, 6, 2, (1 << 6), (1 << 2), 2 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 200, 94, 33, 33, 6, 3, (1 << 6), (1 << 3), 3 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 236, 66, 33, 33, 6, 4, (1 << 6), (1 << 4), 4 + }, + { + "HIST", "M", "CMD", "UNDO", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 0, 141, 46, 28, 4, 1, (1 << 4), (1 << 1), 1 + }, + { + "EV\\kern-1 AL", "N", "PRG", "CHARS", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 59, 141, 46, 28, 3, 1, (1 << 3), (1 << 1), 1 + }, + { + "\\tick", "O", "MTRW", "EQW", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 119, 141, 46, 28, 2, 1, (1 << 2), (1 << 1), 1 + }, + { + "S\\kern-1 Y\\kern-1 M\\kern-1 B", "P", "MTH", "CAT", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 179, 141, 46, 28, 1, 1, (1 << 1), (1 << 1), 1 + }, + { + "\\arrowleftdblfull", NULL, "DEL", "CLEAR", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 0.0, 0, + 238, 141, 46, 28, 0, 1, (1 << 0), (1 << 1), 1 + }, + { + "Y\\super x\\/super", "Q", "\\math_e\\xsuperior", "LN", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 0, 183, 46, 28, 4, 2, (1 << 4), (1 << 2), 2 + }, + { + "\\radical\\overscore\\kern-7 X", "R", + "\\math_x\\twosuperior", + "\\xsuperior\\kern-4\\math_radical\\overscore\\kern-5\\math_y", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 59, 183, 46, 28, 3, 2, (1 << 3), (1 << 2), 2 + }, + { + "SIN", "S", "ASIN", "\\math_summation", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 119, 183, 46, 28, 2, 2, (1 << 2), (1 << 2), 2 + }, + { + "COS", "T", "ACOS", "\\math_partialdiff", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 179, 183, 46, 28, 1, 2, (1 << 1), (1 << 2), 2 + }, + { + "TAN", "U", "ATAN", "\\math_integral", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 238, 183, 46, 28, 0, 2, (1 << 0), (1 << 2), 2 + }, + { + "EEX", "V", "10\\xsuperior", "LOG", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 0, 225, 46, 28, 4, 3, (1 << 4), (1 << 3), 3 + }, + { + "+\\divisionslash\\minus", "W", + "\\math_notequal", + "\\math_equal", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 59, 225, 46, 28, 3, 3, (1 << 3), (1 << 3), 3 + }, + { + "X", "X", + "\\math_lessequal", + "\\math_less", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 119, 225, 46, 28, 2, 3, (1 << 2), (1 << 3), 3 + }, + { + "1/X", "Y", + "\\math_greaterequal", + "\\math_greater", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 179, 225, 46, 28, 1, 3, (1 << 1), (1 << 3), 3 + }, + { + "\\divide", "Z", "ABS", "ARG", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT_NO_SPACE, + 238, 225, 46, 28, 0, 3, (1 << 0), (1 << 3), 3 + }, + { + "ALPHA", NULL, "USER", "ENTRY", NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 267, 46, 32, 0, 0, 0, 0, 4 + }, + { + "7", NULL, "S.SLV", "NUM.SLV", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 267, 46, 32, 3, 4, (1 << 3), (1 << 4), 4 + }, + { + "8", NULL, "EXP&LN", "TRIG", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 267, 46, 32, 2, 4, (1 << 2), (1 << 4), 4 + }, + { + "9", NULL, "FINANCE", "TIME", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 267, 46, 32, 1, 4, (1 << 1), (1 << 4), 4 + }, + { + "\\multiply", NULL, "[ ]", "\" \"", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 267, 46, 32, 0, 4, (1 << 0), (1 << 4), 4 + }, + { + "\\uparrowleft", NULL, NULL, NULL, NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 313, 46, 32, 0, 0, 0, 0, 5 + }, + { + "4", NULL, "CALC", "ALG", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 313, 46, 32, 3, 5, (1 << 3), (1 << 5), 5 + }, + { + "5", NULL, "MATRICES", "STAT", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 313, 46, 32, 2, 5, (1 << 2), (1 << 5), 5 + }, + { + "6", NULL, "CONVERT", "UNITS", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 313, 46, 32, 1, 5, (1 << 1), (1 << 5), 5 + }, + { + "\\minus", NULL, "( )", "_", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 313, 46, 32, 0, 5, (1 << 0), (1 << 5), 5 + }, + { + "\\uparrowright", NULL, NULL, NULL, NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 359, 46, 32, 0, 0, 0, 0, 6 + }, + { + "1", NULL, "ARITH", "CMPLX", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 359, 46, 32, 3, 6, (1 << 3), (1 << 6), 6 + }, + { + "2", NULL, "DEF", "LIB", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 359, 46, 32, 2, 6, (1 << 2), (1 << 6), 6 + }, + { + "3", NULL, "\\math_numbersign", "BASE", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 359, 46, 32, 1, 6, (1 << 1), (1 << 6), 6 + }, + { + "+", NULL, + "{ }", + "\\guillemotleft\\ \\guillemotright", + NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 359, 46, 32, 0, 6, (1 << 0), (1 << 6), 6 + }, + { + "ON", NULL, "CONT", "OFF", "CANCEL", + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 405, 46, 32, 0, 0, 0, 0, 0 + }, + { + "0", NULL, + "\\math_infinity", + "\\math_arrowright", + NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 405, 46, 32, 3, 7, (1 << 3), (1 << 7), 7 + }, + { + "\\bullet", NULL, + ": :", + "\\math_downarrowleft", + NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 405, 46, 32, 2, 7, (1 << 2), (1 << 7), 7 + }, + { + "SPC", NULL, + "\\math_pi", + "\\large_comma", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 405, 46, 32, 1, 7, (1 << 1), (1 << 7), 7 + }, + { + "ENTER", NULL, "ANS", "\\arrowright NUM", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 405, 46, 32, 0, 7, (1 << 0), (1 << 7), 7 + }, +}; +#define X49GP_UI_NR_KEYS (sizeof(x49gp_ui_keys) / sizeof(x49gp_ui_keys[0])) + +static const x49gp_ui_key_t x50g_ui_keys[] = +{ + { + "F1", "A", "Y=", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 0, 0, 36, 22, 5, 1, (1 << 5), (1 << 1), 1 + }, + { + "F2", "B", "WIN", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 50, 0, 36, 22, 5, 2, (1 << 5), (1 << 2), 2 + }, + { + "F3", "C", "GRAPH", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 99, 0, 36, 22, 5, 3, (1 << 5), (1 << 3), 3 + }, + { + "F4", "D", "2D/3D", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 149, 0, 36, 22, 5, 4, (1 << 5), (1 << 4), 4 + }, + { + "F5", "E", "TBLSET", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 198, 0, 36, 22, 5, 5, (1 << 5), (1 << 5), 5 + }, + { + "F6", "F", "TABLE", NULL, NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_TINY, 12.0, UI_LAYOUT_LEFT, + 247, 0, 36, 22, 5, 6, (1 << 5), (1 << 6), 6 + }, + { + "APPS", "G", "FILES", "BEGIN", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 0, 44, 36, 28, 5, 7, (1 << 5), (1 << 7), 7 + }, + { + "MODE", "H", "CUSTOM", "END", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 50, 44, 36, 28, 6, 5, (1 << 6), (1 << 5), 5 + }, + { + "TOOL", "I", "i", "I", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 99, 44, 36, 28, 6, 6, (1 << 6), (1 << 6), 6 + }, + { + "V\\kern-1 AR", "J", "UPDIR", "COPY", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 0, 92, 36, 28, 6, 7, (1 << 6), (1 << 7), 7 + }, + { + "STO \\triangleright", "K", "RCL", "CUT", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 50, 92, 36, 28, 7, 1, (1 << 7), (1 << 1), 1 + }, + { + "NXT", "L", "PREV", "PASTE", NULL, + UI_COLOR_WHITE, 10.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_SMALL, 10.0, UI_LAYOUT_BELOW, + 99, 92, 36, 28, 7, 2, (1 << 7), (1 << 2), 2 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 200, 38, 33, 33, 6, 1, (1 << 6), (1 << 1), 1 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 164, 66, 33, 33, 6, 2, (1 << 6), (1 << 2), 2 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 200, 94, 33, 33, 6, 3, (1 << 6), (1 << 3), 3 + }, + { + NULL, NULL, NULL, NULL, NULL, + UI_COLOR_SILVER, 0.0, 0, + UI_SHAPE_BUTTON_ROUND, 0.0, 0, + 236, 66, 33, 33, 6, 4, (1 << 6), (1 << 4), 4 + }, + { + "HIST", "M", "CMD", "UNDO", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 0, 141, 46, 28, 4, 1, (1 << 4), (1 << 1), 1 + }, + { + "EV\\kern-1 AL", "N", "PRG", "CHARS", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 59, 141, 46, 28, 3, 1, (1 << 3), (1 << 1), 1 + }, + { + "\\tick", "O", "MTRW", "EQW", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 119, 141, 46, 28, 2, 1, (1 << 2), (1 << 1), 1 + }, + { + "S\\kern-1 Y\\kern-1 M\\kern-1 B", "P", "MTH", "CAT", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 179, 141, 46, 28, 1, 1, (1 << 1), (1 << 1), 1 + }, + { + "\\arrowleftdblfull", NULL, "DEL", "CLEAR", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 0.0, 0, + 238, 141, 46, 28, 0, 1, (1 << 0), (1 << 1), 1 + }, + { + "Y\\super x\\/super", "Q", "\\math_e\\xsuperior", "LN", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 0, 183, 46, 28, 4, 2, (1 << 4), (1 << 2), 2 + }, + { + "\\radical\\overscore\\kern-7 X", "R", + "\\math_x\\twosuperior", + "\\xsuperior\\kern-4\\math_radical\\overscore\\kern-5\\math_y", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 59, 183, 46, 28, 3, 2, (1 << 3), (1 << 2), 2 + }, + { + "SIN", "S", "ASIN", "\\math_summation", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 119, 183, 46, 28, 2, 2, (1 << 2), (1 << 2), 2 + }, + { + "COS", "T", "ACOS", "\\math_partialdiff", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 179, 183, 46, 28, 1, 2, (1 << 1), (1 << 2), 2 + }, + { + "TAN", "U", "ATAN", "\\math_integral", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 238, 183, 46, 28, 0, 2, (1 << 0), (1 << 2), 2 + }, + { + "EEX", "V", "10\\xsuperior", "LOG", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 0, 225, 46, 28, 4, 3, (1 << 4), (1 << 3), 3 + }, + { + "+\\divisionslash\\minus", "W", + "\\math_notequal", + "\\math_equal", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 59, 225, 46, 28, 3, 3, (1 << 3), (1 << 3), 3 + }, + { + "X", "X", + "\\math_lessequal", + "\\math_less", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 119, 225, 46, 28, 2, 3, (1 << 2), (1 << 3), 3 + }, + { + "1/X", "Y", + "\\math_greaterequal", + "\\math_greater", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT, + 179, 225, 46, 28, 1, 3, (1 << 1), (1 << 3), 3 + }, + { + "\\divide", "Z", "ABS", "ARG", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_NORMAL, 12.0, UI_LAYOUT_LEFT_NO_SPACE, + 238, 225, 46, 28, 0, 3, (1 << 0), (1 << 3), 3 + }, + { + "ALPHA", NULL, "USER", "ENTRY", NULL, + UI_COLOR_BLACK, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 267, 46, 32, 0, 0, 0, 0, 4 + }, + { + "7", NULL, "S.SLV", "NUM.SLV", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 267, 46, 32, 3, 4, (1 << 3), (1 << 4), 4 + }, + { + "8", NULL, "EXP&LN", "TRIG", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 267, 46, 32, 2, 4, (1 << 2), (1 << 4), 4 + }, + { + "9", NULL, "FINANCE", "TIME", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 267, 46, 32, 1, 4, (1 << 1), (1 << 4), 4 + }, + { + "\\multiply", NULL, "[ ]", "\" \"", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 267, 46, 32, 0, 4, (1 << 0), (1 << 4), 4 + }, + { + "\\uparrowleft", NULL, NULL, NULL, NULL, + UI_COLOR_BLACK, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 313, 46, 32, 0, 0, 0, 0, 5 + }, + { + "4", NULL, "CALC", "ALG", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 313, 46, 32, 3, 5, (1 << 3), (1 << 5), 5 + }, + { + "5", NULL, "MATRICES", "STAT", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 313, 46, 32, 2, 5, (1 << 2), (1 << 5), 5 + }, + { + "6", NULL, "CONVERT", "UNITS", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 313, 46, 32, 1, 5, (1 << 1), (1 << 5), 5 + }, + { + "\\minus", NULL, "( )", "_", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 313, 46, 32, 0, 5, (1 << 0), (1 << 5), 5 + }, + { + "\\uparrowright", NULL, NULL, NULL, NULL, + UI_COLOR_BLACK, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 359, 46, 32, 0, 0, 0, 0, 6 + }, + { + "1", NULL, "ARITH", "CMPLX", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 359, 46, 32, 3, 6, (1 << 3), (1 << 6), 6 + }, + { + "2", NULL, "DEF", "LIB", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 359, 46, 32, 2, 6, (1 << 2), (1 << 6), 6 + }, + { + "3", NULL, "\\math_numbersign", "BASE", NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 359, 46, 32, 1, 6, (1 << 1), (1 << 6), 6 + }, + { + "+", NULL, + "{ }", + "\\guillemotleft\\ \\guillemotright", + NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 359, 46, 32, 0, 6, (1 << 0), (1 << 6), 6 + }, + { + "ON", NULL, "CONT", "OFF", "CANCEL", + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 0, 405, 46, 32, 0, 0, 0, 0, 0 + }, + { + "0", NULL, + "\\math_infinity", + "\\math_arrowright", + NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 59, 405, 46, 32, 3, 7, (1 << 3), (1 << 7), 7 + }, + { + "\\bullet", NULL, + ": :", + "\\math_downarrowleft", + NULL, + UI_COLOR_WHITE, 19.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 119, 405, 46, 32, 2, 7, (1 << 2), (1 << 7), 7 + }, + { + "SPC", NULL, + "\\math_pi", + "\\large_comma", + NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 179, 405, 46, 32, 1, 7, (1 << 1), (1 << 7), 7 + }, + { + "ENTER", NULL, "ANS", "\\arrowright NUM", NULL, + UI_COLOR_WHITE, 12.0, CAIRO_FONT_WEIGHT_BOLD, + UI_SHAPE_BUTTON_LARGE, 0.0, 0, + 238, 405, 46, 32, 0, 7, (1 << 0), (1 << 7), 7 + }, +}; +#define X50G_UI_NR_KEYS (sizeof(x50g_ui_keys) / sizeof(x50g_ui_keys[0])) + +static void +x49gp_ui_color_init(GdkColor *color, u8 red, u8 green, u8 blue) +{ + color->red = (red << 8) | red; + color->green = (green << 8) | green; + color->blue = (blue << 8) | blue; +} + +static void +x49gp_ui_style_init(GtkStyle *style, GtkWidget *widget, + GdkColor *fg, GdkColor *bg) +{ + int i; + + for (i = 0; i < 5; i++) { + style->fg[i] = *fg; + style->bg[i] = *bg; + + style->text[i] = style->fg[i]; + style->base[i] = style->bg[i]; + } + + style->xthickness = 0; + style->ythickness = 0; +} + +static int +x49gp_ui_button_pixmaps_init(x49gp_t *x49gp, x49gp_ui_button_t *button, + x49gp_ui_color_t color) +{ + x49gp_ui_t *ui = x49gp->ui; + GdkPixbuf *src, *dst; + GtkStyle *style; + int i; + + style = gtk_style_new(); + x49gp_ui_style_init(style, button->button, + &ui->colors[button->key->color], + &ui->colors[UI_COLOR_BLACK]); + + for (i = 0; i < 5; i++) { + style->bg_pixmap[i] = gdk_pixmap_new(ui->window->window, + button->key->width, + button->key->height, -1); + + if (i == GTK_STATE_ACTIVE) { + if (color == UI_COLOR_SILVER) { + GError *gerror = NULL; + + src = gdk_pixbuf_new_subpixbuf(ui->bg_pixbuf, + ui->kb_x_offset + button->key->x, + ui->kb_y_offset + button->key->y, + button->key->width, + button->key->height); + dst = gdk_pixbuf_copy(src); + g_object_unref(src); + + src = gdk_pixbuf_new_from_inline(sizeof(button_round), + button_round, FALSE, &gerror); + + gdk_pixbuf_composite(src, dst, + 0, 0, + button->key->width, + button->key->height, + 0.0, 0.0, 1.0, 1.0, + GDK_INTERP_HYPER, 0xff); + + g_object_unref(src); + src = dst; + } else { + src = gdk_pixbuf_new_subpixbuf(ui->bg_pixbuf, + ui->kb_x_offset + button->key->x, + ui->kb_y_offset + button->key->y + 1, + button->key->width, + button->key->height); + } + } else { + src = gdk_pixbuf_new_subpixbuf(ui->bg_pixbuf, + ui->kb_x_offset + button->key->x, + ui->kb_y_offset + button->key->y, + button->key->width, + button->key->height); + } + + gdk_draw_pixbuf(style->bg_pixmap[i], + ui->window->style->black_gc, + src, 0, 0, 0, 0, + button->key->width, button->key->height, + GDK_RGB_DITHER_NORMAL, 0, 0); + + g_object_unref(src); + } + + gtk_widget_set_style(button->button, style); + return 0; +} + +static void +x49gp_ui_symbol_path(cairo_t *cr, double size, + double xoffset, double yoffset, + const x49gp_symbol_t *symbol) +{ + const symbol_path_t *path; + const cairo_path_data_t *data; + int i; + + path = symbol->path; + if (NULL == path) { + return; + } + + cairo_move_to(cr, xoffset, yoffset); + + for (i = 0; i < path->num_data; i += path->data[i].header.length) { + data = &path->data[i]; + + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: + cairo_rel_move_to(cr, size * data[1].point.x, + -size * data[1].point.y); + break; + case CAIRO_PATH_LINE_TO: + cairo_rel_line_to(cr, size * data[1].point.x, + -size * data[1].point.y); + break; + case CAIRO_PATH_CURVE_TO: + cairo_rel_curve_to(cr, size * data[1].point.x, + -size * data[1].point.y, + size * data[2].point.x, + -size * data[2].point.y, + size * data[3].point.x, + -size * data[3].point.y); + break; + case CAIRO_PATH_CLOSE_PATH: + cairo_close_path(cr); + break; + } + } +} + +static void +x49gp_ui_draw_symbol(cairo_t *cr, GdkColor *color, double size, + double line_width, gboolean fill, + double xoffset, double yoffset, + const x49gp_symbol_t *symbol) +{ + cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER); + cairo_set_line_width(cr, line_width); + cairo_set_source_rgb(cr, ((double) color->red) / 65535.0, + ((double) color->green) / 65535.0, + ((double) color->blue) / 65535.0); + + x49gp_ui_symbol_path(cr, size, xoffset, yoffset, symbol); + + if (fill) { + cairo_fill(cr); + } else { + cairo_stroke(cr); + } +} + +static int +x49gp_ui_lookup_glyph(const char *name, int namelen, gunichar *glyph) +{ + int i; + + for (i = 0; i < NR_GLYPHNAMES; i++) { + if ((strlen(x49gp_glyphs[i].name) == namelen) && + !strncmp(x49gp_glyphs[i].name, name, namelen)) { + if (glyph) + *glyph = x49gp_glyphs[i].unichar; + return 1; + } + } + + return 0; +} + +static int +x49gp_text_strlen(const char *text) +{ + const char *p, *q; + char c; + int namelen; + int n = 0; + + p = text; + while ((c = *p++)) { + if (c != '\\') { + n++; + continue; + } + + q = p; + while (*q) { + if ((*q == '\\') || (*q == ' ')) + break; + q++; + } + if (q == p) { + n++; + p++; + continue; + } + namelen = q - p; + if (*q == ' ') + q++; + + if (symbol_lookup_glyph_by_name(p, namelen, NULL)) { + p = q; + n++; + continue; + } + + if (x49gp_ui_lookup_glyph(p, namelen, NULL)) { + p = q; + n++; + continue; + } + + /* + * Insert symbol .notdef here... + */ + p = q; + n++; + } + + return n; +} + +static int +x49gp_text_to_ucs4(const char *text, gunichar **ucs4p) +{ + const char *p, *q; + gunichar glyph; + gunichar *ucs4; + char c; + int namelen; + int i, n; + + n = x49gp_text_strlen(text); + if (n <= 0) + return n; + + ucs4 = malloc(n * sizeof(gunichar)); + + i = 0; + + p = text; + while ((c = *p++)) { + if (i == n) { + free(ucs4); + return -1; + } + + if (c != '\\') { + ucs4[i++] = c; + continue; + } + + q = p; + while (*q) { + if ((*q == '\\') || (*q == ' ')) + break; + q++; + } + if (q == p) { + ucs4[i++] = *p++; + continue; + } + namelen = q - p; + if (*q == ' ') + q++; + + if (symbol_lookup_glyph_by_name(p, namelen, &glyph)) { + ucs4[i++] = glyph; + p = q; + continue; + } + + if (x49gp_ui_lookup_glyph(p, namelen, &glyph)) { + ucs4[i++] = glyph; + p = q; + continue; + } + + /* + * Insert symbol .notdef here... + */ + ucs4[i++] = 0xe000; + p = q; + } + + *ucs4p = ucs4; + return n; +} + +static void +x49gp_ui_vtext_path(cairo_t *cr, const char *family, double size, + double x, double y, int n, va_list ap) +{ + cairo_text_extents_t extents; + cairo_font_weight_t weight; + cairo_font_slant_t slant; + const x49gp_symbol_t *symbol; + const char *text; + gunichar *ucs4; + char out[8]; + int bytes; + int i, j, len; + + for (i = 0; i < n; i++) { + slant = va_arg(ap, cairo_font_slant_t); + weight = va_arg(ap, cairo_font_weight_t); + text = va_arg(ap, const char *); + + cairo_select_font_face(cr, family, slant, weight); + cairo_set_font_size(cr, size); + + ucs4 = NULL; + len = x49gp_text_to_ucs4(text, &ucs4); + if (len <= 0) { + continue; + } + + for (j = 0; j < len; j++) { + if (g_unichar_type(ucs4[j]) == G_UNICODE_PRIVATE_USE) { + /* + * Draw Symbol, Increment x... + */ + symbol = symbol_get_by_glyph(ucs4[j]); + if (NULL == symbol) + symbol = symbol_get_by_glyph(0xe000); + + size *= symbol->prescale; + + x49gp_ui_symbol_path(cr, size, x, y, symbol); + + x += size * symbol->x_advance; + y -= size * symbol->y_advance; + + size *= symbol->postscale; + + if (symbol->prescale * symbol->postscale != 1.) + cairo_set_font_size(cr, size); + + continue; + } + + bytes = g_unichar_to_utf8(ucs4[j], out); + out[bytes] = '\0'; + + cairo_text_extents(cr, out, &extents); + + cairo_move_to(cr, x, y); + + cairo_text_path(cr, out); + + x += extents.x_advance; + y += extents.y_advance; + } + + free(ucs4); + } +} + +static void +x49gp_ui_text_size(cairo_t *cr, const char *family, double size, + double *x_bearing, double *y_bearing, + double *width, double *height, + double *ascent, double *descent, + int n, ...) +{ + va_list ap; + cairo_font_extents_t font_extents; + cairo_font_weight_t weight; + cairo_font_slant_t slant; + double x1, y1, x2, y2, a, d; + const char *text; + int i; + + if (n < 1) + return; + + va_start(ap, n); + + x49gp_ui_vtext_path(cr, family, size, 0.0, 0.0, n, ap); + + cairo_fill_extents(cr, &x1, &y1, &x2, &y2); + + if (y2 < 0.0) + y2 = 0.0; + + a = 0.0; + d = 0.0; + + for (i = 0; i < n; i++) { + slant = va_arg(ap, cairo_font_slant_t); + weight = va_arg(ap, cairo_font_weight_t); + text = va_arg(ap, const char *); + + cairo_select_font_face(cr, family, slant, weight); + cairo_set_font_size(cr, size); + + cairo_font_extents(cr, &font_extents); + + /* + * Cairo seems to return overall height in ascent, + * so fix this by calculating ascent = height - descent. + */ + if (font_extents.ascent - font_extents.descent > a) + a = font_extents.ascent - font_extents.descent; + if (font_extents.descent > -d) + d = -font_extents.descent; + } + + *x_bearing = x1; + *y_bearing = y2; + *width = x2 - x1; + *height = y2 - y1; + *ascent = a; + *descent = d; + + va_end(ap); +} + +static void +x49gp_ui_draw_text(cairo_t *cr, GdkColor *color, + const char *family, double size, double line_width, + int xoffset, int yoffset, int n, ...) +{ + va_list ap; + + if (n < 1) + return; + + va_start(ap, n); + + cairo_set_line_width(cr, line_width); + cairo_set_source_rgb(cr, ((double) color->red) / 65535.0, + ((double) color->green) / 65535.0, + ((double) color->blue) / 65535.0); + + x49gp_ui_vtext_path(cr, family, size, xoffset, yoffset, n, ap); + + if (line_width == 0.0) + cairo_fill(cr); + else + cairo_stroke(cr); + + va_end(ap); +} + +#if 0 +static void +x49gp_ui_dump_path(cairo_t *cr, const char *family, int n, ...) +{ + va_list ap; + const cairo_path_t *path; + const cairo_path_data_t *data; + int i; + + if (n < 1) + return; + + va_start(ap, n); + + x49gp_ui_vtext_path(cr, family, 1000.0, 0.0, 0.0, n, ap); + + path = cairo_copy_path(cr); + if (NULL == path) { + return; + } + cairo_new_path(cr); + + for (i = 0; i < path->num_data; i += path->data[i].header.length) { + data = &path->data[i]; + + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: + printf("path: move to %4.0f %4.0f\n", + data[1].point.x, -data[1].point.y); + break; + case CAIRO_PATH_LINE_TO: + printf("path: line to %4.0f %4.0f\n", + data[1].point.x, -data[1].point.y); + break; + case CAIRO_PATH_CURVE_TO: + printf("path: curve to %4.0f %4.0f\n" + " %4.0f %4.0f\n" + " %4.0f %4.0f\n", + data[1].point.x, -data[1].point.y, + data[2].point.x, -data[2].point.y, + data[3].point.x, -data[3].point.y); + break; + case CAIRO_PATH_CLOSE_PATH: + printf("path: close path\n"); + break; + } + } + + va_end(ap); +} +#endif + +static unsigned char +bitmap_font_lookup_glyph(const bitmap_font_t *font, + const char *name, int namelen) +{ + int i; + + for (i = 0; font->glyphs[i].name; i++) { + if ((strlen(font->glyphs[i].name) == namelen) && + !strncmp(font->glyphs[i].name, name, namelen)) { + return i; + } + } + + return 0; +} + +static unsigned char +bitmap_font_lookup_ascii(const bitmap_font_t *font, char c) +{ + int namelen = 0; + char *name; + + switch (c) { + case ' ': name = "space"; break; + case '!': name = "exclam"; break; + case '"': name = "quotedbl"; break; + case '#': name = "numbersign"; break; + case '$': name = "dollar"; break; + case '%': name = "percent"; break; + case '&': name = "ampersand"; break; + case '(': name = "parenleft"; break; + case ')': name = "parenright"; break; + case '*': name = "asterisk"; break; + case '+': name = "plus"; break; + case ',': name = "comma"; break; + case '-': name = "hyphen"; break; + case '.': name = "period"; break; + case '/': name = "slash"; break; + case '0': name = "zero"; break; + case '1': name = "one"; break; + case '2': name = "two"; break; + case '3': name = "three"; break; + case '4': name = "four"; break; + case '5': name = "five"; break; + case '6': name = "six"; break; + case '7': name = "seven"; break; + case '8': name = "eight"; break; + case '9': name = "nine"; break; + case ':': name = "colon"; break; + case ';': name = "semicolon"; break; + case '<': name = "less"; break; + case '=': name = "equal"; break; + case '>': name = "greater"; break; + case '?': name = "question"; break; + case '@': name = "at"; break; + case '[': name = "bracketleft"; break; + case '\\': name = "backslash"; break; + case ']': name = "bracketright"; break; + case '^': name = "asciicircum"; break; + case '_': name = "underscore"; break; + case '`': name = "quoteleft"; break; + case '{': name = "braceleft"; break; + case '|': name = "bar"; break; + case '}': name = "braceright"; break; + case '~': name = "asciitilde"; break; + default: + name = &c; + namelen = 1; + break; + } + + if (0 == namelen) + namelen = strlen(name); + + return bitmap_font_lookup_glyph(font, name, namelen); +} + +static int +bitmap_font_strlen(const char *text) +{ + const char *p, *q; + char c; + int n = 0; + + p = text; + while ((c = *p++)) { + if (c != '\\') { + n++; + continue; + } + + q = p; + while (*q) { + if ((*q == '\\') || (*q == ' ')) + break; + q++; + } + if (q == p) { + n++; + p++; + continue; + } + if (*q == ' ') + q++; + + n++; + p = q; + } + + return n; +} + +static int +bitmap_font_text_to_glyphs(const bitmap_font_t *font, + const char *text, unsigned char **glyphp) +{ + unsigned char *glyphs; + const char *p, *q; + unsigned char c; + int namelen; + int i, n; + + n = bitmap_font_strlen(text); + if (n <= 0) + return n; + + glyphs = malloc(n); + + i = 0; + + p = text; + while ((c = *p++)) { + if (i == n) { + free(glyphs); + return -1; + } + + if (c != '\\') { + glyphs[i++] = bitmap_font_lookup_ascii(font, c); + continue; + } + + q = p; + while (*q) { + if ((*q == '\\') || (*q == ' ')) + break; + q++; + } + if (q == p) { + glyphs[i++] = bitmap_font_lookup_ascii(font, *p++); + continue; + } + namelen = q - p; + if (*q == ' ') + q++; + + glyphs[i++] = bitmap_font_lookup_glyph(font, p, namelen); + p = q; + } + + *glyphp = glyphs; + return n; + +} + +static void +bitmap_font_text_size(const bitmap_font_t *font, const char *text, + int *width, int *height, int *ascent, int *descent) +{ + const bitmap_glyph_t *glyph; + unsigned char *glyphs; + int i, n, w, a, d; + + w = 0; + a = 0; + d = 0; + + n = bitmap_font_text_to_glyphs(font, text, &glyphs); + + for (i = 0; i < n; i++) { + glyph = &font->glyphs[glyphs[i]]; + + w += glyph->width; + + if (glyph->ascent > a) + a = glyph->ascent; + if (glyph->descent < d) + d = glyph->descent; + } + + *width = w - 1; + *height = font->ascent - font->descent; + *ascent = a; + *descent = d; + + if (n > 0) { + free(glyphs); + } +} + +static void +bitmap_font_draw_text(GdkDrawable *drawable, GdkColor *color, + const bitmap_font_t *font, + int x, int y, const char *text) +{ + const bitmap_glyph_t *glyph; + unsigned char *glyphs; + GdkBitmap *bitmap; + GdkGC *gc; + int i, n, w, h; + + gc = gdk_gc_new(drawable); + gdk_gc_set_rgb_fg_color(gc, color); + + n = bitmap_font_text_to_glyphs(font, text, &glyphs); + + for (i = 0; i < n; i++) { + glyph = &font->glyphs[glyphs[i]]; + + w = glyph->width - glyph->kern; + h = glyph->ascent - glyph->descent; + + if (w <= 0 || h <= 0) { + x += glyph->width; + continue; + } + + bitmap = gdk_bitmap_create_from_data(NULL, (char *) glyph->bits, w, h); + + gdk_gc_set_ts_origin(gc, x + glyph->kern, + y + font->ascent - glyph->ascent); + gdk_gc_set_stipple(gc, bitmap); + gdk_gc_set_fill(gc, GDK_STIPPLED); + + gdk_draw_rectangle(drawable, gc, TRUE, x + glyph->kern, + y + font->ascent - glyph->ascent, w, h); + + g_object_unref(bitmap); + + x += glyph->width; + } + + g_object_unref(gc); + + if (n > 0) { + free(glyphs); + } +} + +static gboolean +x49gp_ui_button_press(GtkWidget *widget, GdkEventButton *event, + gpointer user_data) +{ + x49gp_ui_button_t *button = user_data; + const x49gp_ui_key_t *key = button->key; + x49gp_t *x49gp = button->x49gp; + +#ifdef DEBUG_X49GP_UI +fprintf(stderr, "%s:%u: type %u, button %u\n", __FUNCTION__, __LINE__, event->type, event->button); +#endif + + if (event->type != GDK_BUTTON_PRESS) + return FALSE; + + switch (event->button) { + case 1: + button->down = TRUE; + break; + case 3: + if (!button->down) { + gtk_button_pressed(GTK_BUTTON(button->button)); + } + button->down = TRUE; + button->hold = TRUE; + break; + default: + return TRUE; + } + +#ifdef DEBUG_X49GP_UI + printf("%s: button %u: col %u, row %u, eint %u\n", __FUNCTION__, + event->button, + button->key->column, button->key->row, button->key->eint); +#endif + + if (key->rowbit) { + s3c2410_io_port_g_set_bit(x49gp, key->eint, 1); + x49gp->keybycol[key->column] |= key->rowbit; + x49gp->keybyrow[key->row] |= key->columnbit; + } else { + s3c2410_io_port_f_set_bit(x49gp, key->eint, 1); + } + + return FALSE; +} + +static gboolean +x49gp_ui_button_release(GtkWidget *widget, GdkEventButton *event, + gpointer user_data) +{ + x49gp_ui_button_t *button = user_data; + x49gp_t *x49gp = button->x49gp; + x49gp_ui_t *ui = x49gp->ui; + const x49gp_ui_key_t *key; + GtkButton *gtkbutton; + int i; + + if (event->type != GDK_BUTTON_RELEASE) + return FALSE; + + switch (event->button) { + case 1: + break; + default: + return TRUE; + } + + for (i = 0; i < ui->nr_buttons; i++) { + button = &ui->buttons[i]; + + if (! button->down) + continue; + +#ifdef DEBUG_X49GP_UI + printf("%s: button %u: col %u, row %u, eint %u\n", __FUNCTION__, + event->button, + button->key->column, button->key->row, button->key->eint); +#endif + + button->down = FALSE; + button->hold = FALSE; + + gtkbutton = GTK_BUTTON(button->button); + + if (button != user_data) + gtkbutton->in_button = FALSE; + gtk_button_released(gtkbutton); + + key = button->key; + + if (key->rowbit) { + s3c2410_io_port_g_set_bit(x49gp, key->eint, 0); + x49gp->keybycol[key->column] &= ~(key->rowbit); + x49gp->keybyrow[key->row] &= ~(key->columnbit); + } else { + s3c2410_io_port_f_set_bit(x49gp, key->eint, 0); + } + } + + return FALSE; +} + +static gboolean +x49gp_ui_button_leave(GtkWidget *widget, GdkEventCrossing *event, + gpointer user_data) +{ + x49gp_ui_button_t *button = user_data; + + if (event->type != GDK_LEAVE_NOTIFY) + return FALSE; + + if (!button->hold) + return FALSE; + + return TRUE; +} + +static gboolean +x49gp_ui_key_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data) +{ + x49gp_t *x49gp = user_data; + x49gp_ui_t *ui = x49gp->ui; + x49gp_ui_button_t *button; + GdkEventButton bev; + gboolean save_in; + int index; + +#ifdef DEBUG_X49GP_UI +fprintf(stderr, "%s:%u: type %u, keyval %04x\n", __FUNCTION__, __LINE__, event->type, event->keyval); +#endif + + switch (event->keyval) { + case GDK_A: case GDK_a: case GDK_F1: index = 0; break; + case GDK_B: case GDK_b: case GDK_F2: index = 1; break; + case GDK_C: case GDK_c: case GDK_F3: index = 2; break; + case GDK_D: case GDK_d: case GDK_F4: index = 3; break; + case GDK_E: case GDK_e: case GDK_F5: index = 4; break; + case GDK_F: case GDK_f: case GDK_F6: index = 5; break; + case GDK_G: case GDK_g: index = 6; break; + case GDK_H: case GDK_h: index = 7; break; + case GDK_I: case GDK_i: index = 8; break; + case GDK_J: case GDK_j: index = 9; break; + case GDK_K: case GDK_k: index = 10; break; + case GDK_L: case GDK_l: index = 11; break; + case GDK_Up: case GDK_KP_Up: index = 12; break; + case GDK_Left: case GDK_KP_Left: index = 13; break; + case GDK_Down: case GDK_KP_Down: index = 14; break; + case GDK_Right: case GDK_KP_Right: index = 15; break; + case GDK_M: case GDK_m: index = 16; break; + case GDK_N: case GDK_n: index = 17; break; + case GDK_O: case GDK_o: + case GDK_apostrophe: index = 18; break; + case GDK_P: case GDK_p: index = 19; break; + case GDK_BackSpace: case GDK_Delete: + case GDK_KP_Delete: index = 20; break; + case GDK_Q: case GDK_q: index = 21; break; + case GDK_R: case GDK_r: index = 22; break; + case GDK_S: case GDK_s: index = 23; break; + case GDK_T: case GDK_t: index = 24; break; + case GDK_U: case GDK_u: index = 25; break; + case GDK_V: case GDK_v: index = 26; break; + case GDK_W: case GDK_w: index = 27; break; + case GDK_X: case GDK_x: index = 28; break; + case GDK_Y: case GDK_y: index = 29; break; + case GDK_Z: case GDK_z: + case GDK_slash: case GDK_KP_Divide: index = 30; break; +#ifdef __APPLE__ + case GDK_Tab: index = 31; break; +#else + case GDK_Tab: index = 31; break; + case GDK_Alt_L: case GDK_Alt_R: + case GDK_Meta_L: case GDK_Meta_R: + case GDK_Mode_switch: index = 31; break; +#endif + case GDK_7: case GDK_KP_7: index = 32; break; + case GDK_8: case GDK_KP_8: index = 33; break; + case GDK_9: case GDK_KP_9: index = 34; break; + case GDK_multiply: case GDK_backslash: + case GDK_KP_Multiply: index = 35; break; + case GDK_Shift_L: index = 36; break; + case GDK_4: case GDK_KP_4: index = 37; break; + case GDK_5: case GDK_KP_5: index = 38; break; + case GDK_6: case GDK_KP_6: index = 39; break; + case GDK_minus: case GDK_KP_Subtract: index = 40; break; + case GDK_Shift_R: case GDK_Control_L: index = 41; break; + case GDK_1: case GDK_KP_1: index = 42; break; + case GDK_2: case GDK_KP_2: index = 43; break; + case GDK_3: case GDK_KP_3: index = 44; break; + case GDK_plus: case GDK_equal: + case GDK_KP_Add: index = 45; break; + case GDK_Escape: index = 46; break; + case GDK_0: case GDK_KP_0: index = 47; break; + case GDK_period: case GDK_comma: + case GDK_KP_Decimal: index = 48; break; + case GDK_space: case GDK_KP_Space: index = 49; break; + case GDK_Return: case GDK_KP_Enter: index = 50; break; + default: + return FALSE; + } + + button = &ui->buttons[index]; + + memset(&bev, 0, sizeof(GdkEventButton)); + + bev.time = event->time; + bev.button = 1; + bev.state = event->state; + + save_in = GTK_BUTTON(button->button)->in_button; + + switch (event->type) { + case GDK_KEY_PRESS: + bev.type = GDK_BUTTON_PRESS; + x49gp_ui_button_press(button->button, &bev, button); + GTK_BUTTON(button->button)->in_button = TRUE; + gtk_button_pressed(GTK_BUTTON(button->button)); + GTK_BUTTON(button->button)->in_button = save_in; + break; + case GDK_KEY_RELEASE: + bev.type = GDK_BUTTON_RELEASE; + GTK_BUTTON(button->button)->in_button = TRUE; + gtk_button_released(GTK_BUTTON(button->button)); + GTK_BUTTON(button->button)->in_button = save_in; + x49gp_ui_button_release(button->button, &bev, button); + break; + default: + return FALSE; + } + + return TRUE; +} + +static int +x49gp_button_expose_event(GtkWidget *widget, GdkEventExpose *event, + gpointer user_data) +{ + x49gp_ui_button_t *button = user_data; + int x, y; + + x = widget->allocation.x; + y = widget->allocation.y; + + if (GTK_WIDGET_STATE(widget) == GTK_STATE_ACTIVE) + y -= 1; + + gdk_draw_drawable(widget->window, widget->style->black_gc, + button->pixmap, 0, 0, x, y, + widget->allocation.width, widget->allocation.height); + + return FALSE; +} + +static void +x49gp_button_realize(GtkWidget *widget, gpointer user_data) +{ + x49gp_ui_button_t *button = user_data; + x49gp_ui_t *ui = button->x49gp->ui; + const x49gp_ui_key_t *key = button->key; + cairo_t *cr; + double xoff, yoff, width, height, ascent, descent; + unsigned int w, h; + int xoffset, yoffset, x, y; + + xoffset = widget->allocation.x; + yoffset = widget->allocation.y; + w = widget->allocation.width; + h = widget->allocation.height; + + button->pixmap = gdk_pixmap_new(widget->style->bg_pixmap[0], w, h, -1); + + gdk_draw_drawable(button->pixmap, widget->style->black_gc, + widget->style->bg_pixmap[0], + xoffset, yoffset, + 0, 0, button->key->width, button->key->height); + + xoffset += 2; + yoffset += 2; + w -= 4; + h -= 4; + + cr = gdk_cairo_create(button->pixmap); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER); + +#if 0 /* Layout Debug */ + cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); + cairo_set_line_width(cr, 1.0); + cairo_move_to(cr, xoffset, yoffset); + cairo_line_to(cr, xoffset + w - 1, yoffset); + cairo_line_to(cr, xoffset + w - 1, yoffset + h - 1); + cairo_line_to(cr, xoffset, yoffset + h - 1); + cairo_close_path(cr); + cairo_stroke(cr); +#endif + + if (key->letter) { + x49gp_ui_text_size(cr, X49GP_UI_NORMAL_FONT, key->letter_size, + &xoff, &yoff, &width, &height, &ascent, &descent, + 1, CAIRO_FONT_SLANT_NORMAL, key->font_weight, + key->letter); + + switch (key->layout) { + case UI_LAYOUT_LEFT: + default: + x = (int) floor(w - 1.0 - width - xoff + 0.5); + y = (int) floor((h - 1.0 + ascent) / 2.0 + 0.5); + w -= width; + break; + case UI_LAYOUT_LEFT_NO_SPACE: + x = (int) floor(w - 1.0 - width - xoff + 0.5); + y = (int) floor((h - 1.0 + ascent) / 2.0 + 0.5); + break; + case UI_LAYOUT_BELOW: + x = (int) floor((w - 1.0 - width) / 2.0 - xoff + 0.5); + y = (int) h - 1.0; + h -= ascent; + break; + } + + x49gp_ui_draw_text(cr, &ui->colors[UI_COLOR_YELLOW], + X49GP_UI_NORMAL_FONT, key->letter_size, 0.0, + x + xoffset, y + yoffset, + 1, CAIRO_FONT_SLANT_NORMAL, key->font_weight, + key->letter); + } + + x49gp_ui_text_size(cr, X49GP_UI_NORMAL_FONT, key->font_size, + &xoff, &yoff, &width, &height, &ascent, &descent, + 1, CAIRO_FONT_SLANT_NORMAL, key->font_weight, + key->label); + + x = (int) floor((w - 1.0 - width) / 2.0 - xoff + 0.5); + y = (int) floor((h - 1.0 + ascent) / 2.0 + 0.5); + + x49gp_ui_draw_text(cr, &widget->style->text[0], + X49GP_UI_NORMAL_FONT, key->font_size, 0.0, + x + xoffset, y + yoffset, + 1, CAIRO_FONT_SLANT_NORMAL, key->font_weight, + key->label); + + cairo_destroy(cr); +} + +static int +x49gp_lcd_expose_event(GtkWidget *widget, GdkEventExpose *event, + gpointer user_data) +{ + x49gp_t *x49gp = user_data; + x49gp_ui_t *ui = x49gp->ui; + GdkRectangle *rects; + int i, n; + + gdk_region_get_rectangles(event->region, &rects, &n); + for (i = 0; i < n; i++) { + gdk_draw_drawable(widget->window, widget->style->black_gc, + ui->lcd_pixmap, + rects[i].x, rects[i].y, + rects[i].x, rects[i].y, + rects[i].width, rects[i].height); + } + g_free(rects); + + return FALSE; +} + +static int +x49gp_lcd_configure_event(GtkWidget *widget, GdkEventConfigure *event, + gpointer user_data) +{ + x49gp_t *x49gp = user_data; + x49gp_ui_t *ui = x49gp->ui; + + if (NULL != ui->lcd_pixmap) { + return FALSE; + } + + ui->ann_left = gdk_bitmap_create_from_data(ui->lcd_canvas->window, + (char *) ann_left_bits, + ann_left_width, + ann_left_height); + ui->ann_right = gdk_bitmap_create_from_data(ui->lcd_canvas->window, + (char *) ann_right_bits, + ann_right_width, + ann_right_height); + ui->ann_alpha = gdk_bitmap_create_from_data(ui->lcd_canvas->window, + (char *) ann_alpha_bits, + ann_alpha_width, + ann_alpha_height); + ui->ann_battery = gdk_bitmap_create_from_data(ui->lcd_canvas->window, + (char *) ann_battery_bits, + ann_battery_width, + ann_battery_height); + ui->ann_busy = gdk_bitmap_create_from_data(ui->lcd_canvas->window, + (char *) ann_busy_bits, + ann_busy_width, + ann_busy_height); + ui->ann_io = gdk_bitmap_create_from_data(ui->lcd_canvas->window, + (char *) ann_io_bits, + ann_io_width, + ann_io_height); + + ui->ann_left_gc = gdk_gc_new(ui->lcd_canvas->window); + gdk_gc_copy(ui->ann_left_gc, widget->style->black_gc); + gdk_gc_set_ts_origin(ui->ann_left_gc, 11, 0); + gdk_gc_set_stipple(ui->ann_left_gc, ui->ann_left); + gdk_gc_set_fill(ui->ann_left_gc, GDK_STIPPLED); + + ui->ann_right_gc = gdk_gc_new(ui->lcd_canvas->window); + gdk_gc_copy(ui->ann_right_gc, widget->style->black_gc); + gdk_gc_set_ts_origin(ui->ann_right_gc, 56, 0); + gdk_gc_set_stipple(ui->ann_right_gc, ui->ann_right); + gdk_gc_set_fill(ui->ann_right_gc, GDK_STIPPLED); + + ui->ann_alpha_gc = gdk_gc_new(ui->lcd_canvas->window); + gdk_gc_copy(ui->ann_alpha_gc, widget->style->black_gc); + gdk_gc_set_ts_origin(ui->ann_alpha_gc, 101, 0); + gdk_gc_set_stipple(ui->ann_alpha_gc, ui->ann_alpha); + gdk_gc_set_fill(ui->ann_alpha_gc, GDK_STIPPLED); + + ui->ann_battery_gc = gdk_gc_new(ui->lcd_canvas->window); + gdk_gc_copy(ui->ann_battery_gc, widget->style->black_gc); + gdk_gc_set_ts_origin(ui->ann_battery_gc, 146, 0); + gdk_gc_set_stipple(ui->ann_battery_gc, ui->ann_battery); + gdk_gc_set_fill(ui->ann_battery_gc, GDK_STIPPLED); + + ui->ann_busy_gc = gdk_gc_new(ui->lcd_canvas->window); + gdk_gc_copy(ui->ann_busy_gc, widget->style->black_gc); + gdk_gc_set_ts_origin(ui->ann_busy_gc, 191, 0); + gdk_gc_set_stipple(ui->ann_busy_gc, ui->ann_busy); + gdk_gc_set_fill(ui->ann_busy_gc, GDK_STIPPLED); + + ui->ann_io_gc = gdk_gc_new(ui->lcd_canvas->window); + gdk_gc_copy(ui->ann_io_gc, widget->style->black_gc); + gdk_gc_set_ts_origin(ui->ann_io_gc, 236, 0); + gdk_gc_set_stipple(ui->ann_io_gc, ui->ann_io); + gdk_gc_set_fill(ui->ann_io_gc, GDK_STIPPLED); + + + ui->lcd_pixmap = gdk_pixmap_new(ui->lcd_canvas->window, + ui->lcd_width, ui->lcd_height, -1); + +#if 0 /* Debug Symbols on LCD screen ;) */ +{ + cairo_t *cr; + + cr = gdk_cairo_create(ui->bg_pixmap); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER); + +#if 1 + x49gp_ui_draw_text(cr, &widget->style->black, + X49GP_UI_NORMAL_FONT, 100.0, 1.0, + ui->lcd_x_offset + 10, ui->lcd_y_offset + 160, + 1, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD, + "\\arrowleftdblfull"); +#else + x49gp_ui_dump_path(cr, X49GP_UI_NORMAL_FONT, + 1, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD, + "\\arrowleftdblfull"); +#endif + + cairo_destroy(cr); +} +#endif + + gdk_draw_drawable(ui->lcd_pixmap, widget->style->black_gc, + ui->bg_pixmap, ui->lcd_x_offset, ui->lcd_y_offset, + 0, 0, ui->lcd_width, ui->lcd_height); + + return FALSE; +} + +static int +x49gp_window_configure_event(GtkWidget *widget, GdkEventConfigure *event, + gpointer user_data) +{ + x49gp_t *x49gp = user_data; + x49gp_ui_t *ui = x49gp->ui; + const x49gp_ui_key_t *key; + cairo_t *cr; + int left_color; + int right_color; + int below_color; + int xl, xr, a; + int wl = 0, wr = 0; + int hl = 0, hr = 0; + int dl = 0, dr = 0; + int i; + + if (NULL != ui->bg_pixmap) { + return FALSE; + } + + ui->bg_pixmap = gdk_pixmap_new(widget->window, + ui->width, ui->height, -1); + + gdk_draw_pixbuf(ui->bg_pixmap, widget->style->black_gc, + ui->bg_pixbuf, 0, 0, 0, 0, ui->width, ui->height, + GDK_RGB_DITHER_NORMAL, 0, 0); + + cr = gdk_cairo_create(ui->bg_pixmap); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER); + + switch (ui->calculator) { + default: + ui->calculator = UI_CALCULATOR_HP49GP; + /* fall through */ + + case UI_CALCULATOR_HP49GP: + x49gp_ui_draw_text(cr, &widget->style->black, + X49GP_UI_NORMAL_FONT, 15.0, 0.0, + 38, 42, 2, + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_BOLD, + "hp", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL, + " 49g+"); + + x49gp_ui_draw_text(cr, &widget->style->black, + X49GP_UI_NORMAL_FONT, 13.0, 0.0, + 38, 56, 1, + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL, + "graphing calculator"); + + x49gp_ui_draw_symbol(cr, &widget->style->black, 10.0, 0.0, TRUE, + 138, 25, symbol_get_by_name("triangleup")); + + left_color = UI_COLOR_GREEN; + right_color = UI_COLOR_RED; + below_color = UI_COLOR_BLACK; + break; + + case UI_CALCULATOR_HP50G: + x49gp_ui_draw_text(cr, &widget->style->white, + X49GP_UI_NORMAL_FONT, 15.0, 0.0, + 38, 42, 2, + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL, + "HP", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL, + " 50g"); + + x49gp_ui_draw_text(cr, &widget->style->white, + X49GP_UI_NORMAL_FONT, 13.0, 0.0, + 38, 56, 1, + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL, + "Graphing Calculator"); + + x49gp_ui_draw_symbol(cr, &widget->style->white, 10.0, 0.0, TRUE, + 168, 25, symbol_get_by_name("triangleup")); + + left_color = UI_COLOR_WHITE; + right_color = UI_COLOR_ORANGE; + below_color = UI_COLOR_BLUE; + break; + } + + cairo_destroy(cr); + + for (i = 0; i < ui->nr_buttons; i++) { + key = &x49gp_ui_keys[i]; + key = &x50g_ui_keys[i]; + + if (key->left) { + bitmap_font_text_size(&tiny_font, key->left, &wl, &hl, &a, &dl); + if (!key->right) { + xl = key->x + (key->width - wl) / 2; + bitmap_font_draw_text(ui->bg_pixmap, + &ui->colors[left_color], + &tiny_font, + ui->kb_x_offset + xl, + ui->kb_y_offset + key->y - hl + dl + 1, + key->left); + } + } + + if (key->right) { + bitmap_font_text_size(&tiny_font, key->right, &wr, &hr, &a, &dr); + if (!key->left) { + xr = key->x + (key->width - wr) / 2; + bitmap_font_draw_text(ui->bg_pixmap, + &ui->colors[right_color], + &tiny_font, + ui->kb_x_offset + xr, + ui->kb_y_offset + key->y - hr + dr + 1, + key->right); + } + } + + if (key->left && key->right) { + xl = key->x; + xr = key->x + key->width - 1 - wr; + + if (wl + wr > key->width - 4) { + xl += (key->width - 4 - (wl + wr)) / 2; + xr -= (key->width - 4 - (wl + wr)) / 2; + } + + bitmap_font_draw_text(ui->bg_pixmap, + &ui->colors[left_color], + &tiny_font, + ui->kb_x_offset + xl, + ui->kb_y_offset + key->y - hl + dl + 1, + key->left); + + bitmap_font_draw_text(ui->bg_pixmap, + &ui->colors[right_color], + &tiny_font, + ui->kb_x_offset + xr, + ui->kb_y_offset + key->y - hr + dr + 1, + key->right); + } + + if (key->below) { + bitmap_font_text_size(&tiny_font, key->below, &wl, &hl, &a, &dl); + xl = key->x + (key->width - wl) / 2; + + bitmap_font_draw_text(ui->bg_pixmap, + &ui->colors[below_color], + &tiny_font, + ui->kb_x_offset + xl, + ui->kb_y_offset + key->y + key->height + 2, + key->below); + } + +#if 0 /* Debug Button Layout */ + gdk_draw_rectangle(ui->bg_pixmap, ui->window->style->white_gc, + FALSE, + ui->kb_x_offset + key->x, + ui->kb_y_offset + key->y, + key->width, key->height); +#endif + } + + gdk_window_set_back_pixmap(widget->window, ui->bg_pixmap, FALSE); + + return FALSE; +} + +static gboolean +x49gp_window_button_press(GtkWidget *widget, GdkEventButton *event, + gpointer user_data) +{ +#ifdef DEBUG_X49GP_UI +fprintf(stderr, "%s:%u: type %u, button %u\n", __FUNCTION__, __LINE__, event->type, event->button); +#endif + + gdk_window_focus(widget->window, event->time); + gdk_window_raise(widget->window); + + if (event->type != GDK_BUTTON_PRESS) + return FALSE; + + if (event->button != 1) + return FALSE; + + gdk_window_begin_move_drag(widget->window, event->button, + event->x_root, event->y_root, + event->time); + + return FALSE; +} + +static void +x49gp_ui_quit(GtkWidget *widget, GdkEvent *event, gpointer user_data) +{ + x49gp_t *x49gp = user_data; + + x49gp->arm_exit++; +} + +static void +x49gp_ui_place_at(x49gp_t *x49gp, GtkFixed *fixed, GtkWidget *widget, + gint x, gint y, gint width, gint height) +{ + gtk_widget_set_size_request(widget, width, height); + gtk_fixed_put(fixed, widget, x, y); +} + +static int +gui_init(x49gp_module_t *module) +{ + x49gp_t *x49gp = module->x49gp; + x49gp_ui_t *ui; + + ui = malloc(sizeof(x49gp_ui_t)); + if (NULL == ui) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + x49gp->progname, __FUNCTION__, __LINE__); + return -ENOMEM; + } + memset(ui, 0, sizeof(x49gp_ui_t)); + + ui->nr_buttons = X49GP_UI_NR_KEYS; + ui->buttons = malloc(ui->nr_buttons * sizeof(x49gp_ui_button_t)); + if (NULL == ui->buttons) { + fprintf(stderr, "%s: %s:%u: Out of memory\n", + x49gp->progname, __FUNCTION__, __LINE__); + free(ui); + return -ENOMEM; + } + memset(ui->buttons, 0, ui->nr_buttons * sizeof(x49gp_ui_button_t)); + + module->user_data = ui; + x49gp->ui = ui; + + return 0; +} + +static int +gui_exit(x49gp_module_t *module) +{ + return 0; +} + +static int +gui_reset(x49gp_module_t *module, x49gp_reset_t reset) +{ + return 0; +} + +static int +gui_load(x49gp_module_t *module, GKeyFile *keyfile) +{ + x49gp_t *x49gp = module->x49gp; + x49gp_ui_t *ui = module->user_data; + x49gp_ui_button_t *button; + const x49gp_ui_key_t *key; + GError *gerror = NULL; + GdkBitmap *shape; + char *imagefile; + char *name; + int i; + + imagefile = x49gp_module_get_filename(module, keyfile, "image"); + x49gp_module_get_string(module, keyfile, "name", "hp49g+", &name); + + if (!strcmp(name, "hp49g+")) { + ui->calculator = UI_CALCULATOR_HP49GP; + } else if (!strcmp(name, "hp50g")) { + ui->calculator = UI_CALCULATOR_HP50G; + } else { + ui->calculator = 0; + } + + gdk_pixbuf_get_file_info(imagefile, &ui->width, &ui->height); + + ui->lcd_width = 131 * 2; + ui->lcd_top_margin = 16; + ui->lcd_height = 80 * 2 + ui->lcd_top_margin; + + ui->lcd_x_offset = (ui->width - ui->lcd_width) / 2; + ui->lcd_y_offset = 69; + + ui->kb_x_offset = 36; + ui->kb_y_offset = 301; + + ui->bg_pixbuf = gdk_pixbuf_new_from_file(imagefile, &gerror); + + + ui->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_widget_set(ui->window, "can-focus", TRUE, NULL); + gtk_widget_set(ui->window, "accept-focus", TRUE, NULL); + gtk_widget_set(ui->window, "focus-on-map", TRUE, NULL); + gtk_widget_set(ui->window, "resizable", FALSE, NULL); + gtk_window_set_decorated(GTK_WINDOW(ui->window), FALSE); + + gtk_widget_set_name(ui->window, name); + gtk_window_set_title(GTK_WINDOW(ui->window), name); + +// gtk_window_set_icon(GTK_WINDOW(ui->window), ui->bg_pixbuf); + + gdk_pixbuf_render_pixmap_and_mask(ui->bg_pixbuf, NULL, &shape, 255); + + gtk_widget_set_size_request(ui->window, ui->width, ui->height); + gtk_widget_shape_combine_mask(ui->window, shape, 0, 0); + + g_object_unref(shape); + + gtk_widget_realize(ui->window); + + ui->shapes[UI_SHAPE_BUTTON_TINY] = gdk_bitmap_create_from_data(NULL, + (char *) button_tiny_bits, + button_tiny_width, + button_tiny_height); + ui->shapes[UI_SHAPE_BUTTON_SMALL] = gdk_bitmap_create_from_data(NULL, + (char *) button_small_bits, + button_small_width, + button_small_height); + ui->shapes[UI_SHAPE_BUTTON_NORMAL] = gdk_bitmap_create_from_data(NULL, + (char *) button_normal_bits, + button_normal_width, + button_normal_height); + ui->shapes[UI_SHAPE_BUTTON_LARGE] = gdk_bitmap_create_from_data(NULL, + (char *) button_large_bits, + button_large_width, + button_large_height); + ui->shapes[UI_SHAPE_BUTTON_ROUND] = gdk_bitmap_create_from_data(NULL, + (char *) button_round_bits, + button_round_width, + button_round_height); + + + ui->fixed = gtk_fixed_new(); + gtk_container_add(GTK_CONTAINER(ui->window), ui->fixed); + + ui->background = gtk_drawing_area_new(); + gtk_drawing_area_size(GTK_DRAWING_AREA(ui->background), + ui->width, ui->height); + x49gp_ui_place_at(x49gp, GTK_FIXED(ui->fixed), ui->background, + 0, 0, ui->width, ui->height); + + x49gp_ui_color_init(&ui->colors[UI_COLOR_BLACK], 0x00, 0x00, 0x00); + x49gp_ui_color_init(&ui->colors[UI_COLOR_WHITE], 0xff, 0xff, 0xff); + x49gp_ui_color_init(&ui->colors[UI_COLOR_YELLOW], 0xfa, 0xe8, 0x2c); + x49gp_ui_color_init(&ui->colors[UI_COLOR_RED], 0x8e, 0x25, 0x18); + x49gp_ui_color_init(&ui->colors[UI_COLOR_GREEN], 0x14, 0x4d, 0x49); + x49gp_ui_color_init(&ui->colors[UI_COLOR_SILVER], 0xe0, 0xe0, 0xe0); + x49gp_ui_color_init(&ui->colors[UI_COLOR_ORANGE], 0xc0, 0x6e, 0x60); + x49gp_ui_color_init(&ui->colors[UI_COLOR_BLUE], 0x40, 0x60, 0xa4); + + + ui->lcd_canvas = gtk_drawing_area_new(); + gtk_drawing_area_size(GTK_DRAWING_AREA(ui->lcd_canvas), + ui->lcd_width, ui->lcd_height); + x49gp_ui_place_at(x49gp, GTK_FIXED(ui->fixed), ui->lcd_canvas, + ui->lcd_x_offset, ui->lcd_y_offset, + ui->lcd_width, ui->lcd_height); + + + for (i = 0; i < ui->nr_buttons; i++) { + key = &x49gp_ui_keys[i]; + key = &x50g_ui_keys[i]; + button = &ui->buttons[i]; + + button->x49gp = x49gp; + button->key = key; + + button->button = gtk_button_new(); + gtk_widget_set_size_request(button->button, + key->width, key->height); + gtk_widget_set(button->button, "can-focus", FALSE, NULL); + + x49gp_ui_button_pixmaps_init(x49gp, button, key->color); + + if (key->label) { + button->label = gtk_label_new(""); + gtk_widget_set_style(button->label, + button->button->style); + gtk_container_add(GTK_CONTAINER(button->button), + button->label); + + g_signal_connect(G_OBJECT(button->label), + "expose-event", + G_CALLBACK(x49gp_button_expose_event), + button); + + g_signal_connect_after(G_OBJECT(button->label), + "realize", + G_CALLBACK(x49gp_button_realize), + button); + } + + button->box = gtk_event_box_new(); + gtk_event_box_set_visible_window(GTK_EVENT_BOX(button->box), + TRUE); + gtk_event_box_set_above_child(GTK_EVENT_BOX(button->box), + FALSE); + gtk_widget_shape_combine_mask(button->box, + ui->shapes[key->shape], 0, 0); + gtk_container_add(GTK_CONTAINER(button->box), button->button); + + + x49gp_ui_place_at(x49gp, GTK_FIXED(ui->fixed), button->box, + ui->kb_x_offset + key->x, + ui->kb_y_offset + key->y, + key->width, key->height); + + g_signal_connect(G_OBJECT(button->button), + "button-press-event", + G_CALLBACK(x49gp_ui_button_press), button); + + g_signal_connect(G_OBJECT(button->button), + "button-release-event", + G_CALLBACK(x49gp_ui_button_release), button); + + g_signal_connect(G_OBJECT(button->button), + "leave-notify-event", + G_CALLBACK(x49gp_ui_button_leave), button); + + gtk_widget_add_events(button->button, + GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | + GDK_LEAVE_NOTIFY_MASK); + } + + g_signal_connect(G_OBJECT(ui->background), "configure-event", + G_CALLBACK(x49gp_window_configure_event), x49gp); + + g_signal_connect(G_OBJECT(ui->lcd_canvas), "expose-event", + G_CALLBACK(x49gp_lcd_expose_event), x49gp); + g_signal_connect(G_OBJECT(ui->lcd_canvas), "configure-event", + G_CALLBACK(x49gp_lcd_configure_event), x49gp); + + g_signal_connect(G_OBJECT(ui->window), "delete-event", + G_CALLBACK(x49gp_ui_quit), x49gp); + g_signal_connect(G_OBJECT(ui->window), "destroy", + G_CALLBACK(x49gp_ui_quit), x49gp); + + g_signal_connect(G_OBJECT(ui->window), "key-press-event", + G_CALLBACK(x49gp_ui_key_event), x49gp); + g_signal_connect(G_OBJECT(ui->window), "key-release-event", + G_CALLBACK(x49gp_ui_key_event), x49gp); + + g_signal_connect(G_OBJECT(ui->window), "button-press-event", + G_CALLBACK(x49gp_window_button_press), x49gp); + + gtk_widget_add_events(ui->window, + GDK_BUTTON_PRESS_MASK | + GDK_KEY_PRESS_MASK | + GDK_KEY_RELEASE_MASK); + + gtk_widget_show_all(ui->window); + return 0; +} + +static int +gui_save(x49gp_module_t *module, GKeyFile *keyfile) +{ + return 0; +} + +int +x49gp_ui_init(x49gp_t *x49gp) +{ + x49gp_module_t *module; + + if (x49gp_module_init(x49gp, "gui", gui_init, gui_exit, + gui_reset, gui_load, gui_save, NULL, + &module)) { + return -1; + } + + return x49gp_module_register(module); +} diff --git a/update.scp b/update.scp new file mode 100644 index 0000000..638aa44 --- /dev/null +++ b/update.scp @@ -0,0 +1 @@ +4950_92.bin diff --git a/x49gp.gif b/x49gp.gif new file mode 100644 index 0000000000000000000000000000000000000000..edb3a35ae1808e57a8fa8fd417f4ca8d13fd578b GIT binary patch literal 144961 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

      Oi5U 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 literal 0 HcmV?d00001

      )Y7#R@%6&tkX_osy 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 y?_7yrEv0bdwq{@Jx86+ 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�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

      r_hBQLUlRCpT%{87=NL8=KY8QYX6AKYEdAbBNTg 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≥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

    XrR{Cs#eq)mRYq97L3x&fo^9BX>!)5Y?jGNGg z=v@QDo7zVQPHggx3Y^k}qSBhqlm=>=&^~`qdjY7%jIFb+YPO08jtMFINh7-Ok{_A{ zETNek7*(__je1&R3-c}{(UVJHS>9LxCF|lSFyg&fq)^~*<7GGtj72s8e3k-h!%-wb zRyR`rngt&r5b@LwvLnfss`c-=lhtu{O=vONu|C5C9tLU*49Z=$%CuZwQHy$7uXb^= z2$`WR(*9BaHeyN^&KNnZM)UwmSEshwH_mSCjH=V_hyL;HjJMp)49ix8EUk=^-(M4LE)VPEz16=cdXqBvFUr3mE*#|6Gq2xt6C5S$bN!YOli3e}3>5efu2rd)F|HL*4Y zJ(J4f<1FyEXb|2mK)*dnK_mts3ts1@HXLytn{O;YFtI*KXn3S~CMOE7ip*6gC06 z@?6}p)7ygC08Lhd4+fE_a)(LTQu^M(P{!q>lAeoG8n`4!S5Xr5jzv^&%NPWYL$6Ao zZme>bKBZ4~L371@Qnd=^2ITrWmuuyR?iDNBeHBwz;Ro?s9x3*JNO|4)xetPE?bEtt zBd$4C$A0Z2<;IumU8-ZQIJ)!_?Vwj5h@1rk35!k(%=$#(-GetJXjoQ)-x z_Y+xgwdcRL5asr`PY`)+GEQ$Rs_b!ZExO&~K1LL}**JZi=#L)vZ;0OBV*FkqYVC0! zAR1C<{60)Hv&a1?QFD*`(V~~@jnfB;;(Oe`DZ1F>K13A0)j0hG(b69GQKAby?#GHI zeq@|}vS@FQ`ynEekB#5wiL^cL)uLZ|+~)t)2eAlBEJ7|#rHg} z_&&!K-@CZt`xRGw55ht>HXDaR0b!UdGvSa+&Q}0()ms;Zt_A_j9dUF-(RX2^UoA4s zi7TG&AxHOUZ-?Q+c+frUHqQveYNNkuOS3H;IBP&Ycw;gM^?;5=2mjjA? zvc3I=xqApvTEng1_V$G%mgZ~jc^+K_%Pf8NMOeu_&)iiYyoiFv+!VVrttuTsZ%3@g zTNobLTl)6Mh$4Gs<8#mMZ=FKnj8vPis`aO)^5x=?1|WM8zKM-eKBMba91tBZdUqOL z@U=%Z`tPG!Q6;I)RUf*)(1bPHv7b1F4!#e_TX#)e!UGmBF1+VSHSOI=HFbW9&W2-X z@?-8$t=<7RGpQZq%JA9LRcB(0mhnGZJcg$Z-iaT?UVUF(%?_$So&C1s$clD#>?Z7; zxP|&@gV$-bJ`vsCb_0i)&@91T{B!{d-~S=#GxkaTYD8`G1uvdpu5a`*jVxKu9djCc zAoNm^#WDKUau?CX7!&@U5}w~`l<@r?38PH-drDZp*C^p^j*{{@PBP)|DPhK!MhPGE zNI24jzo&!_XN(dK`o_49K_>h?C3L%LlrZ$9aYC61f6wK3+bH4X9tqzt;qNJ-#UrDH z`cuX^Dopr$O8C%(A{A`E2xw7T+!A<3>sToQ;YS3EC8)|-0~CCvA23qq0| zT918dh!TKXuq&6{v#9eavD3u8T9044-u}|{_Jz`>uClgphY_eswrCN?pEUnfq+{PD?ZUCff;Kke ziZtyG->f{1U9jUvw<8*a27o~S%-obU>}IJ;n^BPvOY0~Y zp>c=M!~d-t`0sWY8iu}yaOG;$o2l6>T)MMSFQF&7hbmi6l9GsbN;Zus?&GKRFYe=; zno?}yho52veh#poo$QA?2r)c2%t5r4XXa;PX?!q*kfZ{+w{1z%HHg~=zbkl(_CiR{ z)@>q0?2m*H1sER;gX`SMy0ftW(ktY>a=55Nz&)kX?iao@-KNZ=h8?$o-FuV!^$JX8 z7`1L9&^C}yLCiylBwtwJPvh_=Sa~3$-865G%UJD3;_oeXB>Jy!0kQscKj4PyjfrYu=#B0u0>5@E3>rFpGeMO^JV{NR=V^JWpF zVq*A{x7wUIyW-RR^@C(M5~*ztT#no3@Ma6Wuee$gJFOVP>kV`2ri-)MotR~D!yK&T zw*kRyTI&Wow6$2}Ruos9)-9kY;o;ESE@K1)(1r3QC<44>WJUf#$;EO$it? zUTDVj<|ct9hyHg?FNQbhXI`@s{ETy@HB6L%t=GfcG+UDbH#(f2kpivEom#o@JEDgK zX@Ky_2hKjjB0_`zyXRj&Sa!W4)GLr;pcJ$CpRh6wkdd;0v;$TiPzp6p(MKyB*M`=c zIxCT1Lb?FQTe5L}^gZkdIAgT|)+o#+zsC^QJ(W^>&e4HjhE)t^2oqPoK@uwfRxgz! z18O^1wdKY2H61m@z+Ld$2mh>njnT7^DHwM80x~c=i49cg`9YZQe?7aExX>v!GBx zd6S&)%g^MHzb48JU=#Vcs_@g|MKJom9vPwiv>4}F-L$}Bc@G*4s0Xno79qMo)Bq@H zU@7~q)R%X{K*-e@?iA1ZxXQP=nA|7wLjYnWdkq3Vk8<})J9Dr&(YI-LaSwG06k%k=ySq8jCndte9 z)L}!ZHQ~Ns>!CknlLG=0)#FJiJQM~eo#%BMI6;Nc2`VyblSko7Oee&NU*VoN3DXh) z`Gc?PGgvCAJ0-~Tli!&UUoB#9W z?F`KLy=nGZ>;qp0q{<*fV9lKhqdAH*BRmT%cZhDjMeDG2V{ze1-x7E1UR7RH`(aZO zctK#GZ>+CypfB7>gOu>QOlOXueq0?I5bLU|L28Rw@-4bq=&S>PGReBVaV9BKahvn^Ip$(l*MFB>NnJOA(FktLaz~ zb>o*0kgk(LC}G%+Bw#yK56mA*;IZ>Nv&iO6waA5_rr!dZzrGZaVwIa|2rhn)S{uFXFdpW~v`c{*;iF2UF#t+#!4h=7X?iD0ST$VG z&yQW|>C&HFuBXcpNZMJHT8kA-SB<`40om&&ri`2DM_L&6c_4e(M&G>2E(K=nX$ZS? z2ATm$d4&_McvTawcqJ3Ac=Zylc*PQ~3@W7wexaK;P0$TFNW+E~yey;0Af_62uJWXEZQE*vL`C?UVEqbp(r}Z^;=6dsvM(cJBuNLpkLWb%%0r z5-27&BaY;lglCwam;7BhRRKsRF_!ejqZ!u^VEJPNiS|D8AG|@@{S1u7dhezW0U2xh z5WMHA+QQxdoPyV$#__k7(K=$i`RW3X6qI(IKX3zcZIX^+<`;Rk#p=eTVQw&hM0*V( zY4WuMepr%505ts+9fB3c=*Vf{#IQ;e!K0S6h4A0X_wg~l)%y5oBo_9gqemCm{JH7s z*lkxugBm?nyZD%#4G;UoL#0M;DhTO$LpeIYm`shVlooch{j)~YmObGl5X2Q)=^nMcY_2Yq{m55=+2;Ej8_1;E zln*`Rt5W9ck{?@_L2SThQ&+`o!WE^%sKwO4yii|*B>bqYpXGsB#U#t%3LOJkz_AjR zd5PTG#5bz<)5^j9ngXWX@lW48tk0e;?Y-Yyf8dj8y8otX^n%hLw`- zF`^df4&`jxqQg#a%doRs4E=zn!RUfuz}dhXQ~h@20`gd!FF1}i|Cg?cVwT}7W6y6Rvq-&MP~t_r=xbrn^fy6S2kQa~Ont{@J+bgG2hpD zCz7}nf~bLqA~k5P~TV;r~Fgi4Pbi^J@^Ma_~{v#&D*Hu3vBy?^I zLx5fN>%xB_9D4J1m%kM7amnCXrrTcjS_$1gW@>(H^7@j(m5@uc3!B|azAnIdQ@qm+ zTcfp*JgAdMfv|cZ=pzpB@RD}~w7m{i-lqgKqhqT_UM<$ovQ_9-ve2GXV+$-TbSPrG zONdQup2XaKbZPJu1S`c|*qGsZPk9*pl{`JdFd*6gp&+I*iQLRfy!BcD8uMuji*ect zgaz@k;)?JnN{Oxw}iv|YT|^iR)$MSc%F#}^^LK1F_WJZ`K_{m`R#C#293wT3B=`NB{B zJhnmfT?3ue-?RVBzhdQ?ChRqa#ETcFJoNle5vnUFMos$^xjpstEk+r&>*34+8;)_N zR5hA#UYkJgW)=0U_)5$~7*DhYBGsyUu?8m?JCXd@P&nUV)~O}4bQXVlexd`lzpEQv zY{=mMk@qH0Q5{YH@SPck0aTb_cV%P|abt!VFly8pRy8ieChiU(?$H5MP*4XqqH#e{ zaTj;8iqXWx#7JDTXo5@B_+%lt$0UMACC0@6uj<|r^W=Ho^Pcbje&>AWe8f!OzPFd^ z>gww5>guYRYl_1$Xe!#4OQRO+CGjYdKP3MpPM2r`CBfPH#$s@RJ!_NbgEccx@3(hs zUg8}nCMMqfBzQ}D6Zz#Mm4WuoO*%r0)wMe=0FmM!bh2?O+ye{xlHa3Kt}O{_EW`lyY1 zuLQH7m$kFrIcmZ8-Nu*b7QEXHYLpd=)XqL0ewlCCx4`OOu)CQK zo@IZx8|(Ok>CpgD&&d0j%>Bg_fykLVV2XwxX;5%@ffOrHZ-wZ_ zL=id`7T7QW^Dw=&ci#HE`ISk#^LT}P_$~RHiWYZquV!Rl!@<1R2-9@TiFIWng|krV z=@{NpU^Uh+5dw_df<1kV{TH2EV~n2ls1LTRu&ma&#b!lKD5w1C96bvpcxxuq$I}+$ zpzCnVu>;f5n_Dnhg6qzm$pnhpQp%va(O6}+J!4fU48_jqDy>u0^TOcVDjix23>BCm zD^C0|>ybN_cMt+LFF;Y5q$u;ptV>(4p)J`bLXUfY^PVgDalS*q+;*J<0;f1g-40E~ zuITwX&^u|gW(v^}=AXlSTsKRt3L7MeR^IKu}3pUqo=Dj&#+zA_t z(U^_J+!N@)_#Ob9i*IZow&=AA*|NabaBNCf1J*(Ej4SHYW0KBM?ZuO%c>{+tx1Bc? z=FLa1@@LERKG(D6pUji6V;L3Ie^Jt?sF%Mjihv3Upfu-;Go{)fX=uPl+Xu55(a`w$ zWij+2W~~LQ=0!HP6YJV9rmlf(78*5gVgLH+E9ln6i}3_H-4*sxPl%e=4u=-RL&;=X zpn|nxn2No!yuJs)KsiOP!8szoE1z9_HY{%MkTOl7sr!W`P`}~13*Pu1ilpp58QuE!91v08t=Nw`6i-MuOKXe3-bEgo zL64pg7gSG!yk^Gwxd7my?ogXOom<_LaiT&#D5VqXf4DrmZ&Bwm#7QK`2 zv%vw*(=mAJyVbE9{KKC2SfrqKGizV+;fBqf%l`8KCd37$;q7Jy_VIah&Hd6`?YEEv zaTK;IR~TO&3en)EOmqgUc)bWuCF!d|<>!tK>-N*XprR{fbL4>Xs9V1FTe$bZ@<#fK zB-)+0mn)VjwJ$Dajw=Vz9h}XZ^k7@DB8{R3{=6aD(!G_ zj}x|%8hvf9kAmcDoP%#T)V<)TcpUbJ5t0P&<|1ssSW}K++LRI42}2i`=f)EcOP{a0 zl85O5j-Q8Pwv4#wXa$7){gl~uEOshKE4D={FQOxH`)98V|g*mbddpH(pUYqlL^pOBur zrhV`N2pgQ@c7l7H3G=d>W3|`k2Evvmlp-n?|**1mi;RwcZ$#ZZ-C;o8FK5;s3drhV8R58%Vl z563DSPayiCQ3HEHsQIWDSfpfB2Tzc{-gagh!F;wp%6NgRtezh=GzE#Vp&Km9>3fcc z);`oFZ#&0cLXx~i(uy_PJMz-Xh21+J+TG-wrFn&LI5~Cej#h_Wk6EZSti0WJb%|4J zxoH6G#$TQr2{>?tvlP~7uqKCT#1~bqMuPFM)2h*m%)Vk@z+@F^saU7wV;ROgHyHka znel3E(acbwj*rPQ;FVLP<43+~r_BbFlMp6|)wn8RFV(GyP~V8u#Dns_TZG-RZ~Xo5V2HFl!}!)>Xz;zM z$CVQJ#)#5^a}JLRb^$lyTl2l*6PAtEM~%f#%<@mTUku6-Iz}%?ct_?Bo)mP4f=)K0&aEp{?mDl?t-@p zJ_Q~uCS6Nbk$7zHfYar=t5yEZE{9orwYP5L5Ms&MTiekB#H<3vV-U#7tl2$Jw zxm-cxK`GKY5OBU<0&bcZ3kEr3J=Ra^VPMfCmP35~WYe+h`G|hs?L&(8-FoaUqFB&} ztw2=qb?Mc77=W)6=Lu#k+xkKBiWLGcSi|9r7pUnt6nk3OY~29nm2?H-Cae(JEyL0V zei=#hf&~+ISbY*~KTcX6x)=94v2Jb=?UioCQD82n0p@-n>~3^u&r3Vt^p03Bt_YPH zo2(cYBc90fsWyx|NKoxM9I?$fs z#z2Pg1UXn~N%Plh>#@_(O5-)%IB4Zfvh`5YV&;JoCO0P4*&W**m z=$#mAcp+-kR2G=96>jhhFspp5Fj)d=YBCd$60WNELiq5v91x{RhPrnh#`*yD5(vi{0OpykE2xmuP>{c|^o; z7@lXnFjxqxATo<3hlBpOpxj6iPr7gxrpRtBb1|5)a zJHU(TlQ1JMSyi?nY}a9!+e)+6STKcB7TV=YQ55KT zIf)4GOwp|m#Co%I7B>dSi7Tk;&N}2EYJPWT3V`hX8W<+m(QX-dB}Oz&^ZS2whL6hq zQKex}elJ@Myhw#|jYKm);gF8@F0 z0Ho2Y{n~>cqvf0zXPN)=L(^#;tgAwAQJ;ybn$WUglzcWGi9<^Fj0>9*0X*Yc>^9?oY?LCE z%zflY-2Jt*D;@cSbxK4D6~%`p{1ppD^*-ECh6m84;zY}PjBa|2WZqPS>%l1aXrnd) z24FBJdBPzo7hh*^ z-7z~X4;^w27<0T^5sG~iNngFBCn*WA+K`QyBBUqB*ISzb z+Wj@Cx3M-9N`Rx}A?F&QvR(Kaa&k7}ECo;!M*^E-ks6+aRpc)UPmdHEFZ zS4l4)q!_&sazAPLjOeE4qmMg4pv8hTPsNdq#Z#}f&$XF`=j964QF#hg-RL~{xQ576 z(*9%NCwJB%uI~VkT{d2=doW5J74-GyXx|(Hqk~#t5jq2>hcW9we}+hF$g+wC`71`>Kaw z6AVGw4M#eV8YkwVadOk14N(wY-vK}{$cWP_5@Ul_uZv<|)O%zL>fN*j^?onbi}N>L z3t;SDMWI!^?Q3wJr6mQ!%yKM+ zK3In+mO`{b*^v9{1!>=2K|iSJrW;Ji%fuoefN(t!ZxqtJf$i7! zsMpFL*|36v@_TVH^8T?Gr^ReB;#`8787C0b{b~FNg9UxA= z8a?*YPqr}`+PJ(5)XVA;0NryV^EqCbU`YUunuTQy_@m@hL9J;QIx+VT=OwXlnTlDt zkFiS+%)8TjKn{9jJ8m9f4Z13F&)QWx#qPsBBB}!?n>=Me#h-FunZ*T67uT=0{PrHj zfE2!BbHk)j^WRmpb_bU62dC2ReJCb?zM>QtJF(D-rEasBcD83@c??Ge?BNzd%?H_k(&;gdhS#)Dk}&zJGp~K6g%6H~B~1iS z>T5esC5R|y<*Y?z&_uX%xO%I>v%8_Gs^d`XGbN=fB$o8I8oy$nd1?a~Dl2iZ*4EE( z7iadIRx#FkL>&YpzhoewMXIFWM?o=sk1aR?}|J zOR?Fd+0>EW?$m_%P4|14y>(pkZ+E#5@JaMc^lLs(Yuy@NrwMY`t8=&LvwWVF4&&cd z{e#)bn?|pW_kX+%;{UaGb&}juXNw?{Wr|Q68!t+71`SnD!#P*h?$9oZhkGtfnU%8} zi}txwf>zEtv?p}tEF3oB;B9x>SbPA5iTX4&s$*t?m0>k7O1b1U47OwW8Jmz~&-Pht zQFsXH@Or+6;;|B=`}?q+3IjXiW`)kSjGe{y46}CQ>~__j;#R5?yP1^jS+mSTum>JO zA0+w4-xBBS##y&i3fMUvi_LnAuGx50@G+K=Pp#VWsg;jQdz?|x$yBQZ^BX6PZT!qV z(pQbW;L;xFZa&|U90OF26?Tkqe+9HI)5l>U-EnBlgs4xm!5o=@4!;FqZsUqQD^|Sw zv9vv(1oMd^3k(Ba;V}yMa|lsbZ9Kca2dP&2C@?9QLFuA!tH53*^bM?p!p6fP8_TvO zX%H~;az*I4S+I%^W7LFzU&djO|M)s%248DQdV9ALJPR5%5^8gHL+OTb$vK!UNI8V_ zk$Z<5c7mAgJ7W3CGdaT_MlvU$`cPox0XLv(wU{C zrRDi%apFAU(x)2veqv)n<*%WkA=xi;~ie<7me3&@)4#%+V_Xb)p=nWQD zJf=(Nq~Lh%O4J^A^8-HVkfx347lD)@wR^h8&>ev z!wmSRU(QLje`Uk>B7pw3|KoiF-z@uy3~a!3ctcYv1tD9Tazbuf(?BT z`ku;hO$yGDr!FY|(G6Hj(}JTBkpE(YoSn6&^3<2JPE_(4mi3*eJ(UM%83*phk;aQ} zg|>!N3Pio?P3{sb-?5Nijk5`eidgp+OuF%%s=f3M_TBeXs)%e&%?d(i*Gw+BS_y?A z9wd$BefgeBQ^32cJ(UT~3KHJydTAEBNB=Ml1L8s@=waXDXp8YeWmngzF>$cL2&^|n zdDxZUEX);85Z<1hs{KsF|Gi2a(sX~Vm=v9HRxjI!0^UdniVB-f`)J4nyLS`@c&Q8c z9xBZGsHp(5l~sEOtwd31mbw5In)VwH$>3;~hXbRI$qjfptKz5k=n3bTZUygEhAuNs zeRJINSj*n)z}k?#jJ2vSfnvuA;o+EEw}P6UsP_Vu^5uJ7-3yja#ey8dQEH6+0U85@ zsrPYX^4to5h%p5fdoN9czAmb4IU8H!F623tv5P(0M(7U4G%F~zLXDI$36Ipbof+Ks z2(cVxm|^+#w(~lw7qbW6ZSx2FjAewBbcw3v`3Ck0y<1tlAB*mPN)m(Avgk_d}RyAzGv%MVX z9@oz4!~D>K=RW{{xATGVn;8*HL%Wa_)YW5Qz6!@@qa$U@ASi$^eQ79I_*ue`v~(r6 zfd;6SH&r>s0bD2m6^iNz=#<)7tRWe^Z;!SB>+tR!Z>MTIiKnuB40vrCHq(&g2V)pO z*wlp#)MH$Fi0>qsT+OQ;q4nnvp#^rfHA%?_VaCkfxg8r8yWb54XljzYx)j`aAMg!+ z)9)8BT#SHTFX4m+He&m#X04sKqkYa0-c4bKz=rcC^j0c+i+kp7`j~gSLUVL|Ag}S< zLT%~Ore)nqNz`Jp&olMX7J+I+(AB6MP3MlXX6G46E)!TeE-ylsEr4CSlRMAcO2^VV%X`< zS~YA9j)A;NAd5XyRepiS5<+bjJ7zR18m2KYMq78s3#0Ht74^ z-vqXRo!ih$0PT7YuN}s($f_;uNKm%wj~qz=+D6hdFHLlm0{%Ftu;&Rz3WmvI3yu)r zsbP!AW(FNCZh>_(l=251&5JbR%F4&^Q)I8e2-*KSE{vE03ePK&U%<&kaXe?HTfAv>w*iH#Co;=XCDARP@-#DxG?s7%fc4X*xq>cGrZmz zqmlXrE*lvFHyg0>W;>nWD_T~37WWh5oel$k8=u~j01o*$ue%N+RY~^+mOx%AhDqWc`}ovT?~|&v8|T5ogQ$jgy`B$KeFc_E+IwCk}p%I^OxZP#bUXgtcja z_RZ-_$%VW(fUExy*5&4m=KkmC zsSrmL^t|VIT9{&`;@Ggz8D+OC|9 z{owS@xz*SYzI@5k9Z~SIl@!gpwB2L2Ya)2)*-@);S0|#TbJU3AWxI^k$BOCP4HdPB zhObku=xtITz%r_>@$I92?z4HK!eu{q<=MM9H!8g%|Fa8Z+rCPl;Z<>k7(K6b24kii zaJdT3w7fZ%jdY_9A5ee++zP`gZ7k0zVE)}FWjdkC{ktOLDBJouj>Gm#W`}kPYWqgc zVDODPZtBqpT}u=Sb_bz}O2jEA2{?fr-Ov~LGAgp|O#$G>(>Je)9ShR>x&x-`yv}U7 zv?zta0NRIMs->}ywLAo#!wPZj&kaj^(AOI$Xy?)%PcW4uHB+TBy zGsb{l=Q(qpRE++1!5Ox$lv%j^6i7JoOf6n~`ymx>vLt;N5cr=((Z>qiDX$?t z_b2R@Fid3QVVRxPh1@4&^kdSZOO*FVf`uW6A$>=l2*%h`c|YO&+&ZIh)+weuC?^=w zc_iVTLygMI0B3zGB3Z<9Qtx|;Qhit&>R}erS^~5s! z#n1i?T)4>?pwBfM*T-UIr5c=^1CL9FzJ-6LD!z;aXmG~T1LtD=1T*+u6kl1-Tcb{A zfgQ1Fp-I;Jec;LuWct(R313Bxpr@42)A|^Xk4D?T5R=HyWz@en#=Vz`dJ8|WW;HTW z@@5RB1JGp+e$ePIVo}G6ScA9WyI6GDYI^D!haG!}{`>%(9Ad3FCJs6d?D_PI*!|8h z`-s}4r5TPCxu>5m4@o%h544=bQ?gOtFL%300*C1sx%)}X)t!6k4i(~(bqm#wFJPz* z2c6TftOGGz&xTqnk2FI%PQAOIRK2Nir5z~fYJSw8qC;k;#B(#m9Gs4QZNOwO9YW%3 z<|U{FJAi}>0t1#$Tquu2!x^w-n1xmwQr?2l_h>}TH$=++QVgPOU>k*ziLs?846Nrp z=n^ zLd<8)UozXh_fsL)wymGxXA$?hA;}R~=%WsJF75^E|JW#L`(CXp?D{*FV}E>wiD!!e zf+|>FRg-c688`v-$G*HIJwZN_ZiI*Jz95F0Za^^>W^hGCcC)d%U<~m|xbZY5!GXQ1 z&i;E*8Kp^iB5iQVEIC^|4w^1KiQm2Ym868;W8dnru3nQK=!z&DZ*Jz7EUElrHe1z2 z-82yHw7CSH*ZGNw+>m}%;#wHl#C`z2@pQtmLfm1cD4=B4g{7xcRN>^(E8;>U#%k!P z!!;ydk(s~w^yulxeok0pxY=^Oo43uWdI7$1u~KfE16LdyGaWN>NAkEWO(&$s^OU^| zYt=%`2e1IT5h7eg%&jn(`838h5zOB4;Mo-M7C7Q2kO5G+;)`&3HQ=1`E0~5YI$d`pvP@@rI}hdr78tz3R5JS+Bax>}QAB(K+KS8e{e~nn*5^`ZQFoH3{b8qP=mQvKQ3Z zf6{9FW5!piGxdI%iN1+Ga+r^;Y*N&(zkq-D6rq(nFKF(P%8$$Vr1Il<2LUoX&H{h$ zVfCWx3ER%q2gA=R_Fo6*0V$q{XKr5d_4rxwrAuR1^}}V>E9WpRzDZ6__t4k0^Lsjd zF{Oz$YWC+5v3Koyzf|w!%Y75kQ;~cK{Fg%_ zzdBz$sGeR0^_tx<^kX|-;n*k~5&_}GaIb#g*($ow*ZP8ArnRBaN$`tdy6JhLtFcsW zHLHAar6Cu6VxOqNZMd?_HHq`TYa3Z`q3g6Vx$l#P`oChFAF3Ljo=9@`Rn^BS+q?Ot zWIK&`pjpzkp>)c;Z2`@{UNWe#e|@IX|G|=N9*e_owew%J%?XbkTJ$%ooJTxpr*GJB zYJvTbv$L*Q>z)l4-t|7B7R-C!b{XQc`k+rA^;Z+@=8aXO8oZw-M|kDsd3E;lQe=0~ z%cckF_4zHbbw$ee1h2F_b^S8u{AHTa6YO2Rb~lq!A8gh+t(hX{OPy@`Nu56bW7`Eg zrA|2LR=*i$X0w}5t4LCpsXXhqH^$PMjJMhrsDD7UUZ9Aw3c1Gk$>NF1PiCI|PcMh4 z3EUO-A?BASXu>su`Bl5B;jFK@nZZezqhC;|a~Zzl#%kO5mOortD!hz(-91J9250{R z6GoK3J!zhE>$mWIl$T}F`nQ!oUD=J4ODun=&0ZdAAu-gYqF;@-qJ9;~y`q+`XW3w^Q{Dcaxw$st!`_ZRS6uuHI9o zKH!pX4+!z{b*ad=uT;2He1>2DZt9mctA~xKn&@71B;qB;|NG_zo4~%y<4JEKcDsBmOM*X5u`SN z;IJ+owyZ?w0^9G^F3eXxUCmPxrj>ymN@zQpHda>(%Z&7AkxOjBv>H~Up+%hjJA6?| zLIf@+%BaD0HxwWBRIik~3Ya(^W_YfJz9Ww$T{&(F!n$Z{K|L+| znqMxh1Q*&N=D7Y%@lL(x#(cYZ(N7UYFb28Ys}CLr(&IoMdK~7g@^5%4#c$IpWl_5~-C{?YrUtNgPxsTzfxG4rBcYY%wM zYsf?$j@n<*oBW}0Ie-7`Lozrg{q2W&IjvptLpmwGi-5{1FAkdb#M+1z&8GK&>*Ixe zV}5dKei0i6%&Z4y_xqNgfFlK=NZZ_Hk79>c=IPGmO4eN@=H!*#e7c{#VYo(JLM}ps zD>fA!@sVlTe$-Y|a{F6mPCVTmnGMxnpLPS%qd#lHoq_qXOFMXB^_QlFf8l_ouQl2U z7hu3xu*y9$8%{X=+S$l6aYrlfn(W7BL+B$HlhkKKC>>Apo;}t6y#NpaEQb4`q7vx? z7!O5F6b1W}N-qDxQL^^@Y-(4>I{R2z-|vVE?+f(s4+&i{cdt9+I9Gh>=`sH6y_dzb z_w6_Sz~z>j*`IwUE|R~SUH@HKcX4j&`+Wj6S^NF$u8R5ykMWbNKg@n4t4IE{@|xKP zh5A5`@i8K);LH)!65}k?EU#84JXS}_e!Mn2?@7Jf!`}y9SN)U4UIqj0)7y~7>j*rx z9l}r6Or>-Up>mw#N$o0b(9mThcT1Qfb{VXmHw?L47zr}x9a?{KV~Z|_=1q;S?j_ND z-a>0q-`?Hza9-YB4>ff3h~#;*|L+;9cHMs9mO`riI6qS|6*?);@dU-mFw~q`7M^Q? z%<wLIDxg%|++7v~RN# z8`0ibSRX#jzz=`$-%P5mb$*OT=JNHpe9<|Xzd_2Q@#P-UQLQlJ7vdW)EuFdS%-{a`PAp5? zwbCl~wv>=XS5_fMA%TaPx??gVFPF*BjywZ*G^m-migjXzyoLQp*|hR#sK26Tal(#dRwS!X29hJ47MISk-r5u0(V^Sx)%Jz!#a~2)4P%J^R@3q8 zsOk81)MUMmnyl9yHMvp_>1H$cHaeqC=Bgfsh#P+0@KY9N7<CbbwE+sB5(v<@c$xAAJ*_NF6Au_4B(-J7J7eV;87qhm%XHr?_| zM+xGnD47z)QlU+^aM_7!YI{_L8QUz}jF=GB z>m@V=+e-LprKPDM4QO8TTaY$N(tx(T0Il?-SEC9BS1q0cb2LBT!+fa@AgvUuTx`OM z4RF@U-d-KovS2-kOlPCye#&OahIg^B0AWAs1J8T7EH+MAF_zzfkPf$dj~oXwXw@${ zOS<3KgiN>%f@2(cWf`tvTw^@qOoYfa5(iizsIj%5X&WP}jYAkSynMm5|2MwJm zW+-7|Ul;~+&$=H_1gtPTp{iDqyFV`5|IR^4fpZT&*; zj4KO2NFs#+*|rw2>IWrvhN?c__}N2w`3Q-Ny7SXPI(=heZn4yP}zer5=uIJ>Ri)fr&lV4F|JfNe5TaU@C~ z00w_B#$WwDavSxRT3c_RRML~`Mtwd|AMO5|3d2o^Lc+oLvx+F&u0C_o6X~~eQaia{iL~K%B17o z@b%$)e1KjT{GQx=p=EMsvrqpRO_(|*d*Rbdu8G}57a(M^r>U^5U+K?E2)u4P*WZ9N zy?G`RBPdN?B>)^;dZo`$XLyseKY3a%yw#Wx`MTX~j8eX8K|CjJ9{61b4y>SS0244a z@fwB4-Qr))%Rq}zkAR&R7w+ituU)Ws{LY1ynXzBYSHW~uu);MDU%?X|p%;aQIZy&| ztZ;q29NYcItXC)ET8_0r^;2J99wtXN8h^eET-D$8!|vA4kZrs-HxXAO$>x5ml~{#e z{zm@OJxrOy>&Er!CEb?BoN(jnelo9vv55nM7cwO6NS=5UP3GRXiffPj^{0E8y?RM{ zs^FQoo=t&VsIne~O4g&fP&S3bh2Ad^XD&#syY!x7CX?J@rZK|WdfXeq*11BGNy%N0{-b927Tl`rcX@II8_Tm7F5jB zqsSdNU*tXH3vTJicjGFwPo+wEdGM?PPT2EVLat!`{l*G(FNhT=X#Mf+J+Lk5D^?=& zS~o~F#85OKHs=ZG4FER2t1xFCa&!j-?fG;@QFeb1bqo^c|At;<9X;^h z7RDc+wWj5iky-Wv1$uN>vsQs%A{of%krgwkB^FM~j2B=&}296V#ewiOAN z`CYZdlBYgM8|4iBfR~)1G$c&{uczR~$4&9hFR_USe$qPoyl4>(WrfQ zuAaz~0KwuLM;Tp2UMaGm#`yRKc7i9ee^)FY;MX@se}3j%m^zy|H(ft}4u-;xWHIx( z!>kelEUn6@ZE(J?-u`>YCR$`yG=MzkrSNVN)7UN1A_%n5*i_u5?xmeWOB0dpU%7B_ zq{0z#b7kM0lG#!BV&^ZJdwaO9xzd=6&oC9Zssj>EOY-W64FD950&#+FUow}A?w-Yr zk^#iDF@WZdM%cz?Kr*}VuVcl%m|Dj-tlc|ihq$YR{V)o4Jq~6z3R=(bU^jmp?K!BN57k@qHr&vby1)VwEkU5?Twu%0$-aIZ!Mm`$_ z#JdV5zXf-Kp%kn)3CHi45Q}e-G-Q97kLKu--{uuXoPP?Iu zdV6)Gp=;))DBdird;#h(+xp>5cjXH>?!l8Zp#J=0PZx0^@@J~0Aq+oH=;tZ@$UAVM z3B!F~$6BtuAhdXZ{f`iJUe0Bw#E8;IQJqL`(>JM8hiXB{n~;-rCi(myAuZ^0miSpM z6EY@DNza+dKCaBkF@5`R_L8t2K zoKq{ZVAxyTF82~jZjALixi%hKv@^-ao`k$W@P_`C7tk(ReDeDfxU{<`aN7ao!VYJW zd1|j-H8?9`|4+@spD^MPP5gTldQhjrS3Sx3Jp7|4o@cPj)p;ATpN5|7!$ozT5Vr>! zJrGUJpbdUYz1O3;9hM!SMFWb0DK~N`D}G&vyl^+2{j~V==kj)?yTa+eXO!V9cKX>* zZ+IP#YH*u}_6d9W=yd1U4!}d?E ztzW$O>0dpCrzBJQ|MQ;*N!4~gQD{XZxC_gtT6PW_eCFLLVihZYnj$D&XjbZM{Hbd?D*Knu@{o!LWf+NA6GdjB{c5n;AyAgcAfe9;Z&zZ zJ6}(=XFV7)_)6CFnS;L`x3Fk%*7%TD2Rlu8cg^662|k+#yG`_|9NaZ$;fWC?y~n1E znVJ^gt^da3*L(&v{XW)x;DBq>CM3@Ci#wCJtc_1}(wW|a&yMQ&OXQ+HZC**q>a(o) zz=%GBHSgXURMKRPZ}QKX7h}iT#tfb?Hg%kH({VMnc+EKZqj%dUD5rTRCX~-OFfXC& z%;P%}UMfgAmT+(G0na`k6zvS?6E*Mnus-eYKhTYyFd}X6h(%vqKQ!XEFWwCp?$kcy zn}J)iiigjL8S^N5hSP=At0V4Sc(>0;{|k}VM<~92;5xGF4+|fS?Ah$vMf29qW4^Op zZ+7a2t)oZT9a}~0uH~a1-U=xhWtcQ>Pi!b#H8XHS+4qBP^ndut@OvMo?i#+}!*`br zPCb^_t?=Tpgy_PI;|VVn-adXXsW9inrKyGOP9@Bq)4P66lgtl4R6ZFVaU|~g@OXXv zlZ^Jd!OG0d`uNtFvWSOoj_KyUHa~BNG5(!dN8UJfbk>Rcc` z_LaXssa%RY8f!?TF3Tv$<$^rW>=`YnRO)C?U9eW$ zHC;PBRTmj))uiiEBW?O@IPA10W?81E+5&S-v00YLRJA7Cl9#GWP1UA`=pr@R)J$Du zs0`4a!jTa&&X75V6-qjRY*=1l0t;!NZH^lCtr;aWz>d73#nN`YKV}U zCWIsjsqu=09II!BHZV{Z9U+t}EyIQh!P9M)Bq2?14Gb~`dfM7%t8=}CgjDUA5L1p# zonteF`U%5!3BNfB_vAugs5VqCq_hic8)D5)7j`XaKRrZfi*|Vlqe28!_rX*lNmZAE zH%Zj3Yuv2*bS*l-FVvcoBTQIp2?^E81FhLn=o_J(vo*^@80IF}oCKSoi&UZ$Y|{lH zCr9n6&_zUOq0ETi~-*Id(G`BS0|;JlG3zkY2|5Y z7Ca=S)jaqbec{zL+tf8%+cn$LHCr8;V+zgDhUQp8bF7CZT9Z@NNg<}B5N%pWd0L1C zNDEP#()`p((@ja!waV!h3m!t%$zIyXNKHnTHa$z5l~taVWwB;yty#kN*U=YVgELKo zGqq`%7W^7>Oc6QS$Q+9F$}Ec| z%aj!FmF8!$#AAPVx?{CW<|4Qx4^2*q8=!r`MG)NG-O=LzwNUNt8{iB=`rj`1|6zG9 zP1^*tY3d>bh=1Ht!N=$CA!1JSCpZaiZmc(qFaZC#2~KU4?%p0wg2KziN#5Ka4xp5B zA6H*W&t>4PT<+u|;C~l93xbLc@@nYyC zr&cgKq*M|fgC%jVS zln>=|`+-FIqk1?!e%#!|xQ|auD$mWyjmyPbyl1=+{(v009F$EBRs+xI9v2tj*-Zm1 zIQ{~_WTj3L+|_N+9yAkGcpyO=fYk==X@hth#N9OkGRiMk5#A{djJu2JHNYfwAo@#a zih5j~Wimzpzoqwr(8LEAKuG0NNEo2^)M6k&Ks{~LfV8!O@Im#vt33c8s&gY4DI39o zK#KeL5TP*w#P@&){fzz%0G*)Urg~}tqLq*Fxj1G(sU>AU+-?`QRMmJNMOMp`Vp-B*Y zUD26$xV#A5y!%Nln-=aTu33x=Qw(VLuWTnKTkJj zpo;3Z;nS z4)F1~M|~WkJ`Pcz7)pEr?dP~4wDb;8QtyF3w4wF`FQ8M#AM*z>P83J)LF?Q#=tm9# z7l)u5@qH^04Cvk4jTr-_M+2!mF+_Tf<2#4Q$00f}0RQ99*VV_f8RbKJ+fY6Z#rC%$ z`fPkp{6VI2bydk^{2p;hMWpH@d26*zun6mtam&zKTNpIpQ{a|j_;25Sm|;8D*9e|_S`!wSILE{AM5LX{6r?y)zhC$ zuvh)~NfD*1srk`_(D8?|Q8=}?Tzpktx2Qf`6dh7_RrSfZRD4xn!i|LT92A_qJ5{r&Pbz&m=1#zpD%cJa8#OqAj zI)I}^ziUlsAN>h})`WgH(SxN3i3H2GB>E2n!lbnzeVwD6I!3QhWj0x?CbY+7PP8Cf zotE&5_Sov`>TNodP`8bSiq-_Ut&|S6;ydVzL&07Lgdv$=U0Gs9yG?d<4WdZbmP3=} zM-FQ&W(oyuBGI{{JfPpEw$l4@i`T=ue%k&nCJDxmb}63AS0vO)`3_v(qm^`cY?R@8j`H z5&TKq6X|PAHHb^>7a>tAUegc%q5o|fp(Z;!-JDM4TCL)H{F-!tsfMG}8C(%+-(~^) z7OmwInG9jMrpPW6wEL_!ikr{^8sH|vYl$GBIUJTSqCp>0oTK;-B=Glgi>1y|P1LLA z_M7U^Pjvu63d^NXkV0UQ>E97rq_`l3HQKiNw!oW3D5XKbYtAQyC4!W$@jVS!L0hB!k;bFdLYz(wJc#4o5tc}CixfVKYsGXz zrMW&4e1qA8NsIhe<_lUWEdRGqYeLtUXncsFsay;}IQ+h5-1qi)dojjW(lq-E{ z`-Am8ekjE5kseuIfbgI40!du(Y>Oc7=OuZ8!0TPg&&x+z4K~F#1-lE#3uuSI@&be; zFrYZLQM6poPctOpj- zT#tsf6TF?}xVZdhIKWm24iXp8YLvDUi1YFvj89Es4ZL@Sr~#o2e^fC92AodZ77*OL z?8hpZcgu*AxPa>O;C$kC8TFxDf)mNbavQhH5EtM*$qU4g(}~+z$M|&*~Op51(Li#6d2$;=+KSQ2Y_<1i4Y(!U~*~2;sUhC zo5Tfp?@8hUl;_?C+kAQS%5ki!~VCEG~G)??icl z&`RzhC;lLc0uZ(#aRC*t;&DjBi|LES1^7-0={w#NJX{w-cONew!h_t2#RdPByg+b= zynxaXZ1mSCFhB)}L$*l83hqr=UO*c_>5s$(APdL~SX>~o5&8yk0n-^33$k+Oq9u8O zAju05vb;d>66FPGublhMndAV-hxTyDas$L!UVxD01XQl{y#?e2ttqad?K0{OAh7`Q zOQE|Ix=Eok7y|*;R0`dtkmLsR-W~D+3cZ^^j))NOFkFC#L)6P5$qOhQ$qy)WjC*mr zOkyzcy^9p0`^EGU-*E9EF{2=;ATLlMB!K~qJKFHmxS|a|g(RS$kOUMQA|-_+Frm;P zE`Yp1Y`?@8no6O&6uLS1g^R=&z~BjPCpR%9xdFvpATXc~_jUv0K}hiMdnqJ%DDEwV zBsbu4KtW6zkV`2!pU59vAUGj7Nnjwt|LncUuUK9{bSv@;78vx303TxM)&yh~26iZ? zBL8Q9N}*<_e3Y!jN4PGtwH2!6R=qGwp^g)Fw63`&>l0x8Lv}B~u8=R&+MCIRwst@H zgSK_S^0xykBjoLZYK-!RAbYHQUvSkR`S1|+FnN85Hd8*kUF8J%r|pEP^3YJrG*^^V0+;e`N{U$5_zvM+Xnfgu<9N1aUJSjm)CSGKPJ!Ur2AaHrIW2%p5D3q zTY1keCH3+b!^QDLO@Ja==3!sL=4*A0Bw+4k@*-^U?5u+!K4=ETDPg@#6&|7o1Tdi@!PhGT_fc1DnAbllMf7*%sM2#Ivax;r zJ!=8|-JVsKJ1WVHK2)}GRW=&;-e77G_m_vpxP>oXjKsL=xdRS?lB_-9d&#AJ+jVFH z8wTcgz1G5fDz}K8+qJBN`BdEyScR8--L3i}ET;}8DEF*|+xa;c8rxxUY2R_^)&F;^ zWSf4l)wlF89LvI}rgR-dQmBEZb>3*!4}#(fiWeo-Ydf2NJ-MhTd;uXu{NdLz3+LXy;VXU_|%%56+i)D3KQ<8BTE=`MCwXRSFV})%GsL#O|Q#ee` zKtBvuYe{>_E_3~5J#^t}<1RoA?0(>=Sf-v^{V90&E$#(}D|+N*6*}wa zST5j?xMxi+azA70uD`hO?(f3U!?)HnX~^}kw7Av9#R`LJLh&+hpN5#k@~l|t@{Ya8 zec?PgQG_23z272dmC%QLkQ`vh4MbhmvO~NUe%n+=*8Z9?; z3f9HN3YXhIJ^w3Gs+B^vH|*3K^?vGsc(Hlq(+UQetCauAVPF(ZxK{ zkt8fMA`a#tZVZCz6tt$C@fE5+sia_u@e!zC1jJi#-RC<}0ZhFI68N^FdW$Qg3qHF84_+ z0*xf}oi^SWd^D)IcTDw*IlsW%-PPC*u*XAwNgHds z>a?btf$lp(A0I}KzIR+GJhollTqwB~byI#W<>GDy@c3B;lp{NJP|E~u^vr2lxuuDX zneDGrb77@#0mc$860WiL+@d%KF>TK|TA zNT7p0nb~J}o;`5`Ec!v|J#pQ>Z*dV2CjZRpHy+p(UMH%Lx?h^OJo@9Ri0*oZ;q(_5j zDEaSc-Z+w^J|mY3+X9xp9*6sO^ZZ^~_Q!!i^zXRNNoMLoxPmFetx3+8hbGMj0%y-V z7_THNikE*FWPi2G%Z}7bUJ?fU?oz(uFl-#EVa4!$XJG#PtJ^%>ih%xR{*Sd#=sfNJ zSoe6_CG&jvgGiuX4Qpandk48M8v@->jJXa%Oa}e-QTK;sEVBX3sv?K2Hp=C8jQ{Kl zp1)0*?B8(DzagoWI$E((8>LvKO_j$y92mT_>YBYMd}mcwxSH-szpR$Wv=Z$0u0l*} z1b#vc&hXmmuv2x(Z=&<2z*YB~Oi+7@tB)Gq3rQ;xFTo@ed<3gZ@DuDZp}9~l6J8ob zq-6H;G8>NXmA@UM6zre-XD^uhui%&0=u!mXEugCUN!>FnPFW7b~* z125mohX~}80@*o>6MNGm-<+cI=~CbnhAP!5%wd=9X1a;=Zte!+^qC6V4_r8xT3mh&25hWVi2Qa=$B>wuYfA0Jz9n{vqb#3Kx zx*s19=cPk$XZv0duP^`HHqJ|b@z0J)#C z8{2@Ioo{O~6)w9dYnU@I&?LY@Ld3vmL4;EtL2$kkA;Q^5h}c;aJUgSIMV}-=8xsg% z7KI-TQtF(}1mSJXvrHPGu; zQ#%KL42!5^m9>B;`kk1kPp9_QE(bgZx*d2rw+j-M)B>jHFJk_9dJ}dF>QByt!Qou} zg0Eh6C;qHa#K2KSN;Z5{E-KpV9q-`0FgIMAqG@m*Uk8d^0`fp&Gpwx6`-&_KX_*IZvkuHS)RmZVu@21ml!};fwhqjA zoHH@w;lzwpN@B)w#EkbSh#7|yGft2bGj2}I_@)5XOLL30Psp-gw|Eo}7Od~w`tJ8g zdGW{NJZR>@2;{|0AEm0@vbQ%-3gTBejMsO+QS|r$jN4` zH2R*O+pL(`giAh|dY=!oVX?U-etZ=b^E~4l9teGmMczT1tqo`A3zxFK2#8ONO5c8U zwQLazoaTGd)_v3+yvaFD9R=yz@2`Oo3vFUlw_5eX?xX9*w3%V{?PETt zQWb4o8y6=i79DasEZ@^qul8?d-f+^l;*IK#*>53>u76A$p{h1fe6yGe(ckdQES=T? zO5}-~vlkb6czb6rC|a>#rN?P=n+xe0ztcVezT!2q3+fOr?`$K_#R*)bii-5_(J*0X zij&StuWUw*qUfx8XaAV?jrBB@N%g=~707GB^OYDi*UYVbvp*S8pRVtlE>{ZbubY=` zwl+(Q=-hgg#bvyy>a&F_Ju1F+pOz$CihP!Ws~=JQ>LHitM@|*p&t9orRJ0=6X-b}8 z(>n#Nu2EGl^k|i;>2EGB0lM|YCHhdIXdm?LwvNUnPkBvv z=-NeCJ-n)z=)FNDpU1s6Vm18)KXu{{*sRe7Ijq`oi?MUN=_OcI zjv8nhANxLCC!e^gva{>ifhdokIEO1;4!u3x<{o~d?%WTCVfC=P+oy}o{@aC=*ww+; zuRBdI!S(YN^)MFGuO2X+zBlgah+PeOo&aSgF16xM*sK@#i7m}rSdG)xE`C%Pz zdmLVeJ`6+iwswQ<1zaa$+e74LgOlJQe%p0$jmU=QC3i#sc2fqnh^o6-_Q9>7D*V7X ztgBnMq=)KzFIDgOq1$09clT7d&;F%~H~vT$Sa$S5 z7kGSS@mp zpChUbaA3qvL2&bVP8c^If*4siyBD5CN!ZEblTAUf-8=5!Ta!o!Ujc$Ro_y+n&XF6C z4j$sj`y<+Ww+vNQkdr#p7HDKYwtcq(mOX3XxrMuov)$^3B(m38sDb`q@828BlHP`Q z!t>9kW4~YUleR;IdGZF_afDCZ{b(RxBLqOR>l;hP<&%E^&QL+t;3|$SH1H91GJ9MO zEOWGS$VRkM@&oi=l!q44z0&`L1Fjd|wk6L{0P-J2ZJ!xdxC=;h`#TtrSB>k=vLxx2 zBEyG1+E4}`EB}U#bNBE8&0iIXudV?1-*5$*j%Q?n=+WIUEDAg~ zL^U=mom^f+-1NXf%8qND5+UJU5xlez61A~t`9EQvQHpMy*1?nkx5{X~M9vsqaD~^%zv0d%azm{ooEy0Tj#Q>ZfX89zcp8)! zGhtF;DBOzdSqo}ok3R6iv?B~6(m-QNJ$fW1W()WkniwW| z?!(o#MB+)DErTpQMA%^cgC!JF6EGPy&KsB>EO6cg8v|b#!B$d-aXcb+Du3Q!Q-)EC@pi1^p zbbV^{InhE0yQx{R0T%a^bud1T*=JScms7#Eq>dDpg0~{dLkCjX|BwwvvCrOvXEiu{ z$q$pg4oA9dLvU_=?HW)Fd&L5s^xf*nJFO1J_Gat@#v^QADmd*a|Emi~xHXw>Rdhvn z=Z8h_L@9y&kmK=Ph7@xwZ2S_D);@{aPzHbMW#vf1x08oW;F9b7!VgVlcP6DzItL=oO*=Nb`{TP2PrHm--}o+OL3igmw4<@8 zXh)Fm7Qlm#_inLp*L9OAdeIZ$N(PC8)*Y zk?SOm7}&u|Ct&z{iGKPECY7*Kurw9IWR+g@=J`LpOsDk@o-Qb31`X^RBeMt(j(Z1( z2+EYC)RaC>R;#x$E;43;;G7(nm|~7@YO|(XH^%w|uNG9vG3Jz%xFn@b7v~cj=M#KE zaEVVH7?aX>&_Ka1_yqf0K)M5hi)B!Ma}x5p*>w+&k4eSL-=N=-Vor&`OZO7{YGd4k zX-GXraI=_`%md<5lKRFdN?e6@vMPbccnOP3t}tE;Y4%CFD0VZ5Ea`6Mh!@dRQ8S zk335L5?XnX&GyQShy$Syf5m8;)&VAweCq>m%j-*o-r@oQBa)twj%^9r z;xj*nz!DWggj1n-ss5-pYy)Y9k;0byNe{=~s>4lqd9@0>QC_J6l$|<2VQ47X#oi)X zo@nJEW8ib%eGd3B^|j=+5Cz^&MbZEFz-+zm=^MU$io+KoLlN^gDC7*qJMTRQ#hE%n zVfk|?Jb(9pio*XX)O9~Jfw`Mf`MUMpEJK|8DzFfMgsVH_v(h`fe?8+*DRdA2v~Hd| zqjru!2>w5;eFt0=*B1A%OHo&0sbXIXAQpC)T_9qkTal$KB{o2aF)AQMO;Hgvro03M zmEEajOxJZ&T53-bWmXMO9SylS0B>s z6L}rDIqCWhX;rO!V;{F`HY!gKS~#`uQ;3hOQiS32FNps+hbrt*yU+9NJR2qP0@^dvYGlz z6eM=(L+h&yRL>O$i2hI~)&V=JuP2MExz}Pf(I>>-bpQ%-&;KVBseVeofwCSeoBwW! zfF}+nJOR$i>j|!UI?y^*q~6%~&`i+!n`h#`0v7PD55sr;Fm;BA^A_XBM-gd4)&~aT zfr!3@@{S^7V4a%JZoHZXN~n!ZTN=YoW)qDW+= zhJ*IzBB{pja80bfUTyjW&lS4HLwTTUJsrB3KJjV>=96BmwRjPPUK$gJzX{dCJY^?n z4x4^E3biGlQ5=cd5X{(<6ES3JqTZqjX$orl`y)rvY5y7U7iWyeV z#v=_o^hu7om%>iYgLMtTpumuf)lV?Y*e;J4UcSfQEj7ngw{_-ug}BibN8>9TE37uA z(oNkf8b9vQ2p{54SBP5)cE8pQVZ)H{-A%n=nyJ;F@&O23``u7zoR#h8=bd6(z6bJrfApcaO(RbfcD4vo_kFRGuARcz**yxdut8AF8{mrHBxZg|?AyJ_ot>qz{VvfG#Z17yND zkE9s2At^@nqH3sCqv;AGDaY8bJ-6LT7?&|WWzMWL70Nx@3VdZo&$8PQ{$1rTz^0`? zF)IW1*SPpdReVbJtd!I_>8^s|LYVc5+Y#|=tb~y8G2D287a#LmhfB z*vRVTfMP_$8|&&bomUf)xIU<`cJ!`Ew$Dn9_Le((SF~MKOIO@TKohip+7*Fi!inmwewRR2Q*=u7c{Kx3fsg>HlmP#IJ%>#a@eYB>q-dH~GcXM4BY4@-yExh2(K|oc zenq5`y0y(mGod5!a~Ww5dHcL~9{>mS>;jaYSU$+nyPPW5jPQF#lux05#upF9kMXMo^nn&dS@lu7gD}iIMr*C}k1OvbivH+P?c2A{pr&WT?ab9m_-_x%* zI^CJKY|BLL=?ymvq86)9!w%%z*m$C#NUvStVx8~cGjy}FwQ6m#&Da;z!?lg?xfZI2 z4Q+J)GDK*6?PP&kJ=7{!wKOVlXyczJvhA1F4I6s5yieo%D2dfJzUkb5ZH=|2ajbJ; zrVn0nEj*j44e0#ju5yRFOP6(ZXpDDuKJevBRr;aS?iMt%*|~7Kc$ev?ZHzuyuuNv3+?2(8orw?>1EE=JeZSCUV zezC%5t3CeY=Relrg#wqvg3%+jr$0xpiUa1(85$xFaoH8Jq0hNDzM1B{WtT0?N{Wl$ zcak0YSvJ`!fBL_Ntgu?0KQwb_Bc|r97u5p`i_}ADEYumxd5Cu|RKGW*G2glH>~QVT zE{)rqEB~Ylqfsx=xp2w$AvA&Zjr*NT>#a4LJ0_NVHg;^ml0a?a=#$xt@}+6DsGU#k zSbz0gK#;oeRp%VQW_r140v!lB!SoNjhQe_d=J(O>xo z11o3_qjnCl&OatDfI2|?YJEv4c&ZDQ_MGBWzpcr;K79pHP!@T2!{~DguY$84+U;2vTgmhcxF18V8ob_)WjD#t8zBcGRz$Q!>|Q`M~58^=xS%3Ux#)l zoXnn4`E`PgbyjY$aHmgN^4V9P7%GRI1u&j^YP&=*0&iYhoao>)L0)Xte64RJ>(CxX7udf|&K|@pAs>7WEM`gyz zgr#X%@`9*I+H)PBElzU*8pTY)q-ql9k1HT7c>iQ}Kmjcc@T&&ckrSJ(+xDkj-yizV zopbBQei|ssH#F)_p7^1kMz!l?hk4&G1zv4dVOp}koi`&$SkcR?cjC)ShWoD0-~SFl zBp_WiH)BrjQcPc&`-<*mJv5lC?6RfnbVC!|H3OHn)@o@`Vf5gu#mRlw7LQoq(($M4 z$B!S0?>AKD>@;M@foaN$Acd{XgboQx%^e3-W43eU*E^Ms!!QzmjHJnF{k26yV>(3b z>Z%QU{qO$ybXjln2f!-dS>|)13}>oi=w0=rE?^9UD74 z#~~lr-rf0UfSu!qOBUEIuvua2Wp_trXZ?fl)pH}VB85T_fdre&vK8{vtGX4wqSu}V zI(;)tdm3b7=y2_6AjMmcYk>iUbMv&Pi(CumCThPPn%|Mho;#Dh0`+(`h+KhhV<&x-OP7hON*-ulLMhd!;k8|neA-`=Rxv?ety32421 zOP$*q-(2@=>l-Z&+hsS03PJYg2OHj(JvIbv4DbA$ThdR@5%{oQm1Q8ipS71E)K`iC z4B1(%;?k~4r^wj2lufL6YZ+m zM8@W3JYiWUt48l}@rfhz+f}oTjE#I^&P>aC$<$Va9Wq?Ls9m~D^e>C?0!>?~5sRw*i1{aU9uJDb5;Q{hcZRN9me>`>mJJHhmZ4RWZyD>pJj0mMe22~)R$Ha+u zV`>6)c_|yDz`*>i4-ClbNlaO?-B}}s_Mx`iN8dRfj<%SLV9)jAa|Q;`r(A1YStX+u zN_(xm1ceKhXByd;Eyss^g#9Q`VOSCZl72l@V zwxM^%L?ODXqb_(nGtXk&^D_0y8dyq^Cirde>Y6JQf7o4q)`(`Hr5oUbX1c-w6WkB@ z%ndRJA=#)8^T?yp%HBRt{06@3R4p@K^tpNg;qX7TLFi*g-PTcAUyHK@VXN)7)E!M~ zy6I+X&u^8DhC&pMVfC%8IEny%9p@)a|Ap(Vty>0R_{_`#DA2>J@}nbaEA>zOc47bu z3|+*@5!WXNq2kzXB90m|pce!|NP1_D2pJa`QaL{WLANh}n**o;=vdc?aFUpDdwM0` zYS4D5<}hK;q@o%k0EY~wLP!2SvN2o`&=U~9&C-IP=+Loz1W*&Jl2grGCkx=J9|M1RRZG-+zo11i3ot6h9g^q*3PXgSQln5ynDp) z%}{pt(Zd@n*rsdj>5(z$2n|(RzXzGREGF@pROEmK&v3K^`tdLDPteVe1~hcLhu z<<^70b?k@4!; z$7U`|O?C8SjRD6+{=c2i0pI&mw}$iVLz%Ehhr}BQ0^74kgaKgZ_t8?3$U6XV%@_`4 z7ZD5*^`ICUi7RSGNxiHU0SEeI+!RCVgT90cok0qJPUQ4iS-lvbb$HEDTNv+;mfdt7 zI(oqXMOQ_q1x!@wUS-A3JG{s{Gw}lEUMa@x-T4V(@fs`8Lla$RYvs~FevcGp1X37O zgdt~kkJ%XjB+edeotr*43-*ghyOPus*rVwdd4J#HnHXR?fMV*uIQ8Z7XHp41G*-x% z>Zp4%9j8B1w6VTCY!99Y_$aQBT^r=lbN==uhbvJn`9l#22l} zH9;7SzDC9%#R@W-dl$_8PlS+k6F@bxm|XaCf0-x+*?Wq6ibzP*0P5A*_@OsCVSk{% zb|8cz`qj#yqq^k76F)8^mkQ+)5cpsV@R^Re=LNtIZNA7HM|B3F!NQTXlp4*{G<7Bj zvsyWlYxr=FK+ii|$U1Gki;j=<&E^jCRD027GB#J}0jNPW_vn#*rJ8@!O%d;sWo5&u zQjN@x@NW{Cx~a{!0oZ9{z3uE6Bg+LU8I1e{^w$nU?H)q#kOg%$V$st>YicWBrb(pd z$?fY?QMs&cB>&|iZ`CW9O71uslV-`#o9DojsT~wd3wF!d{>!~Wdi5KDNF4BGN`bA7 zqqnA9NQe{w}AxJaT^h8r7sYI&J=bAKX;P z;M-Khn5jXZ81F7kO#V`w?Sh5pYQTXg|H2PS#gA0W2F;^aYpq1A%NL;J`4qj&BIr-n z`*F_!5WA+s{%*-3nKn?EDKC3{P>C_r3*QNZQvhSWjMCrcjI$dw59y{Xd)AIO zg(pVYaKIRigYv8vEbRA+zVOM=?{Rts?U&^uXUycsaip#O8jPn`CS&D#2<7saixKfp zthp2)@%;#>oOy<1Y*gJpJ;qypP&^a`6k+G~$J3DKfqijm2qA^GSU|1k)7EP_J5e6El92x(xr$6MkwBS1Q! zAY`;K6(f%P<8=TF(>)6?VC))J10G74_sVA!c?`ppP)*{1oUsUb(;CLxe4YkJ4fB3% z;$^Xm4?xl%)Jh_^Ld*=sJkBWsKL|^PbvQyG*N)7JrrX})tnSQ2WnN9}d+*RmAis|e zj33M*0viFvJ%|KDNgM=6SCdPXhBqt~5JJYp2;vOsrZb)8AUyx$wMJuwskA zu1P_&2Y>U)2}uaKGge%jnGjeo)m!+LYLUZ-Q!H_zsPH!+3eX-hMB7h}RO-Bgx!Hgp z8Y1_PudPKg7L1(b1`fgI-3~ z$n--Us>c}cvA>p_Xz^lSa+q_Ltrp8+8j=TfLMc~a>!&=c6YM+UQ{>c{X7f`rc&nLH zQp%Y8=>g9#Xkk+8#~2j^;!x4WjaLg2qZ>|2_V0=xq-mZ+`K>P)_pP`zunLlS%PHtH)Am2>= zf!beV%N4tiykhPk2_V6IppRDE4}AaK7)*6X!QkT8PyU}&B#gyY?Zry$FOpcP+JfNt z(0)+MBv$hFE((*?!qW%9xr)0i@%^B~&&F4bw9`y=CfEfrerJTJMIZtVjANAm)&O=B zO7H@%3p>>R{!;f4oX562jK>BMUea$IN@NDY0UQ=K5~Sua);sBv z;%HV?ARhq84bwJGh2jZieR$(k{y$H4J=5Rb6306Zy%iThdM=SH%jf%_k}Owt(o174 zUNRR-Z<-5htq%HPwtmVf5BG=K;|h3yEPFdl2EoHPEZ_+``i8F$;r+y(c{9|Y;R|Nz zJc_wR$i_D>i!DgKm}t=plYq1&Lxc~JsjUVpC+&mon9KMi-3YrmQ$uxj;uIHKd;^P3 zy=v=2{krzj5*0?#CL(FrOdo2UMYyDrNk{it6r%puf{lP53)5K8w+%dI%KY`acaXDa z5$+(=m<_t5Hta8GR$rQbB;Gd0C828s%)#Hwgz#vU$>#e+X0|GF+@x`FUP92V+qNgj zd>nJ}lS{YfU-sWA6N2Z=X*2lds3v4&E`W`>__HJN^WBcvhQxW5U7BxuV!*ANVW+GF z7@_CS%9yF5Cc6q6qnl^I^J^~6zx1~3acF!0yMG39Xsquhe10->RI~MW>X7D%-yMr+ zF8R)3LUYY`QBloqr;1{mkDpR6Y~FdM&s)v?e(bZkx%j6gpEb|^x$cYR{XZ}HrrGKj zhZD_Fzf}F$yy(}~znX`fUDw!r@$6YyOYm=XJz932o33q%KYz@>W#M`CV=b%Bs{>m; zK3_Mytk9M5ZE9knd%DuW7rN^L+ML;G48iM$K_*`}tl@Q??F?Ko`I33X z&-GDd$xdC8$-J`YvgEr6y&W@01p+K%IP z>xKdSdPi+an@CSmcg(a|qRpuT@q*s8-*}vzanzoS_G3LizR+WlGGK_8QQdeUpQQ`&T(xW|J7ICOM6ysVZ_ zJQ9O9z|W7z7M~yOe<-JTfSrd99ZL*LAAb0w?e;pH# z+diaZZ%xCjFry4tkyj@=dMDQ_ur>qr+|N@VAk800IvikZBYFRDPY1;rmu>KsYYm&6 zFyWv*oN%#jBsSVl1?V*xj5<`|`?Kk*xr55zoA{y@UOUVEpfmbQi$gIfbQ`KIb=L7{ z-QsUK>FgiFyKqdXSHRbRI)Qgt3A35fccp%TqsZWr=`518I(KILxYyJOLS$4-IQK$wpGkHd;0H*dFneAWm+?*f04w43BR^$mU`_VC;c{jix>SmruoqbA0O^Hq4FAqMBW z@_$2%3@2#z7heoZA5nTf8Iw3ezij+%sdYw;l4EETXDY$9ep<@&O^%WXqIkPh@&0#{Dvai2$(J6cZ z6;BIFHvkEiW|&szf>pt;4M!JRh6Y?|L*Gps5yef$L;dG2SL}9LDN|5G%f^F}FtDKg znp|KM6m#$Ci|Lr2`&%3O0Wd49;nM{;fqc>=b{K%^EiRyh3}s&9z+=+<)~tqb zcYTi^5QjkS2=RsGa)fD+9{6{&Supy%k4;4E$!@wHTF|Gm48yr;aLrW+z}4qSbtBF6 zHbvy9i1TVuu;nQ_6m^jx3#^SQ)ym5aY}Np`tW;(SlRd?&IdumwlaYn#M0(AI8G6?5 zhrUw~?LRB(R+N9}JJ}NL$iC+LsHzZ!Mx^pM)MiXcnbID&TN-GXDQ14!{}jB6 z9zcE^!2C&fO(Y0Ts*1h8FxW(GdhxHw7=9Rr8xaZ#XcE4v4!F@V|;mC z0B!@sdh!o}9SvPEC0MIzr_q3Ym1epzCEm|Xy=8L42z{TGeTT@e)I+aXn6PQA{!0Cg zv3mRIt^@To$zZF%Es>?9zmJGxHv)^@b*eE>X#AN;lY50>yM#V=-XUa{Z3@jJ?n{#u z@*pRK9gg$BzDRoqEZdHl4$K5^=C!AJGcR`5{qiFa{!tVk-;y*S4%lbm(AsYe_%bwV z-dStT;9bk@P_vp?w=+0Q!Fwzd|7~vAp?GJl|I9y<`Vy+u9ZZ`|S1EJ_$LMjm!jC0w zr}G>YisI2YYCv=;Fa)|S4rRo42SjliG7zMUh`pgJ%wX6Vypx&iR1Ag~ZSm7&gjaQU z`E2o{_(~pK<BvR8a#Q+3;tad7)o7tg2kbt5Z&j^t^? zA@b37eX|X}B$Go=r z!@Aue8{3;<5oGeh8w{>|rH{aeu2M`a99^d6@uG>x@~J1B4RQSo3&ZcyI!#!a2A+6unHX3 z_v4s1MiS?>bAjw*&gTB^#mMp35|~VwtBp;H4Egt2AP8#_9RxlQx2hEg!t>9#0hXX8 zhNTeZ8yhAvFDrtjE>r{5myiTm&#bh7Jdst+E>pxO2pEFT6Y3|W{ zOAI(7zmFV=>-O&_zb-Bw2EAmADVRD(-J4-V$R5!An6~n=&tdv`Nbmr_^7^t=<>+mwR}f+J7Y_%j$=+H~-ARN1?|e+8 zwi4T)cX5MaxSp@d=@}A{!)2bX8v5d@no9YqhMtvr=@h$TdJ^Mgxid=$RNG*|DzNl1 zQvf{z5BAVLJ6hT;X$P+?9t@c2q3fk@SFbFiBGTySE!=F^C_b+6J?U$~7VsAQQ=BXO zdMp|RzVEsMT%1X40h)iP2O(nR%44P;0M#Ge15NuLK&YB2U|;7(myq-kO-yE3Rld=< zRojqgTsI8NStRZ2A74ff!mEPvKuP4;Y1ob5(=WXYn1LLuGER%xG0?ax#zSko7<20} z5wCZ~u2vf-#U37FTo>cvW$YKj8Q?M&47fzD@v3;P? zgD{-wiCOrCE!i2mcZeO3?vKm!NLn`U*bLYke}5RThf!sO9d*%l8)?`nkD5bSZTU;w z^r={^K!ga-K|xr!teYaa(b3Y36$?}mC@7`^KJuj;hudR{Ta z2yDOq1Mm-ongO^9#J*_)ZQ+&)pp|sRV637m5sU}_4H#=~i4f-$3ldqDQGR^V4&T24 zPaF&*cAI%Statan;sz6V20sj*x2D=i^-x)A^lu=}vQg|#Oy6&)wB()i#g2lE8Dgxssf%>#~pqe zQ5CQTI1)Dw`$Nzz1s39IKL#coaieDj>6x19sl{i>{H%>yf$iX}&&+XLHL#x&NdC-E z;fBIwgH=kB@wxOk_V3y^^(L$vv#HeEsL5mEPMCaBKt{i0H9cc zWG;lIA(lTn?>7S!KBU;4{g_EEgRsZCLY5~?!dZ<7stj68ai0>DQp+B+dBVlm1;B`= zxOsbv<^iwCH*WSN-I5wrAd5h$)dMuYzDALq;o3v@e8$C{@uMcp_&t7I1|*2W8>{?v z>AsjIQ)LfS7LF^%uSVr3SFa9Cf_l;?DoGExW=Rix8uh^R@!q>N$w}ahOVuxui&rSl zQ~?v}dq!b8Yp@xEIKCd1vps&bZ$+;(cC=(Z=6WiO)PqB?c!|EX`{H@Yz9H2(R?rcW zIx}#fXbfwvH%x4*#G4~T61z;E>H_ZZ^M<$~gG05kza&fIN6k?2wTK4OYs{s?I6flk z2C?NpDqr2_4c`sbMKl1U9wh|=@kKC+*TaonhTf>0&^hL=f;h1sfNL`h$yn`ouB*KF13})dI%n*^g zP(s*J?}GTGQg7&__}PSOt1eC2ehmb}i6HiA-x=2?jjzkSf*6bc!*UO}gUa|g!3J3M zhd@tr+yeB}B4bq^i?vi97uWJ7TFd^lmLujc+}At@oJNOw5JaH8?xbCOJc{Q9GQkr- z(+5oPOwJZE%@S8#EC^8(=*f1G?O`>bC?A^p z^V^)mw|z{nVG<=!x#461D(QCsD(Xjo%9-0HP)Wao*qRV7JuyQYs~mxn9S}VXz=gB3 z#KDQ=MuLs>JAe%{Sft-EwE{GKH|?ijQ9`;fX%?-U+kSx0VQuKuNtdp@eRGmx_laOo z0meMjQb+_K%W@T%7=b{kbk_;Em^Wd0$6>$fa{N{;FnRH8Xg{CNxOD}1gii9_f>mf+ z84ww)0!=#zp6h<>HzngYj@6Huy`xv!khvoHqE3cgoy0V;+kVuWBGmWAYsmy=*7;G~ zjU+v~@qp^1yGVT?4V4iklz;{cU`A*2$K5SIz9;^t;O9??xG#bCXRk!@YC58gYkilS256OxkmUK8}+1TtJL#8aZh6K0T-8yWbEf;y<5& z0NE%WJXFU-9;z$}uc1y1)k1j*a%xh7S?m&E&WGx-l&t*v+c)~Re*>H8!+Ni_#fJ=3 zJQ#bh4U}o%#2#o=0&K$x3-U6o&79FoTuS*_aY}faN>W42+(NYisnku}!oG^%#ianZ zP^~CdZ~<1qRR}sCa_jaH|2uuJ$lfak>Vni`5+u9lXV&3=L`l>Z;BB)Hb3B_2T(G=V zn>Ymk0|y5PbkH&9&~|^Q?H>CYRR`b6{lt*z7DMJ+ep~IJGZl;XhuYu!JW%c z#&*@M7G)+d7reiB+-GJV&|fGqo-#oE>ha)y3~;xO24hmKczOZ0_F&}>7K4aCf)XRh z_LMK^4Xcjv!=#_3teXyCuQA6mjW`z8#hQhw zF8eB$B!FNoOOQ;A=vA%lYDk~H5BDlqiC)=L^INqzwQYXmnGP7o-@f7Sh&OUO{?j)e z^~M~#fBMFwdbPU~x;u`<(g&C%o>OpC2LSnC&TcyRl~U*o{44IrT4-JacLlmAX`$OK z&Z{&Hj{9nI63Q}aJ48$R`kGG+D|Em{h%nNQ0E@o^)?Rf$(eoKFZgZc3I(as+e^|uF zv4}wcQtx_&;Gu)rS~bQkV94QZA<+hjeZeg6%GlIbA3(?F*JkbLr)LWn!eo}JM?Z6` zD~#m8C4kX=19NXnNh`}gsN$hd2zAzp(hI9=`3J(_MeF>WdiFffmRyrct;&P42GZvtzVsb|%bcdDovq(l8J-tz*&C)> zdGs*2$u@ZzewBIX4IlwO1D9)U1gInW1207JjwH6A1B#Sqf%tjPGUBsFwDtrlYYr$j zci!O!I}&gnI^J(E6#)NT85cVy3=TQe9m=095B;-wyk5mg2@=|s_XmH(KQMCdA>X?F zq0Wv8Fn7l#9LN+aOVU|%mj}?e#QC4lnDF9}XlxSOuD7-Kfo~-nk$S_7g-{(~$=MS9 zfz8xKmq$N57>IYypbhNQ0(O0Hh}ll_u$@64asI`WlJS+j()1Ax3D9^y?=Ii$vF3a- zH>HnY{C=Xr6AaBUb)Jk}ywS=;3Oshu7mx}z^6}JR_F(EP-vHHt1*jIZ0awez03Cew z{5*KRf*d92C69?2RPW(dKA=!?++H4u4tuPa}+&;LPyHTVsL-}VE-6&)Hj=Ayfo{_>zZ_vMS~GgI^N2ps_D7Utg7)` z><3*BrQ#@GtKXY&(oG!^D}KJ&Flk)FR2xhg4eZD&^@lR{_sQy+wjvVr)8ko;?x$e? zeSUn)jPJ{Oj0B|flB|nY=#!b5Iq9);Q|8PW&8Ev~bolpWJ)*5(!}7p}RdGlG3-PB3 zSBzlCN_;d50nPGh8fPb0+A%bJqswxYZ;0E=%leZKHY-7f$zV2J=lrfbM_0Kw!Asw; zFF~u<`9z27nQKCJSx~r%B%k_C;f?QaQP=kXl!Sdo!k3JT;6^2}F=ZT0-bPJsm-@*ZSvEMN5p>(~6 zKTcow8;|K-5`MCQj%yC`_Z$KbM}O-$+0Eo-=b0C^+>Ta}Ys) zM3szhi1I(Y=#<}-4|dzk(Jv!EGTz1ZMnHZn-@$YRQV^P-Xn4B?+LEb@?2oS$1j+1qU z<#D^csLaA%hrMvJV=tGEd$V-nRj0ibk>ZttO4;+JGnMjH7b<<4cptWGvdVIk4m_b` zV*?h88p6GhcuWSlUlX_+F!>}xSI(UG1Nw*h3QFsS2+a3V7 zT4~ai%{bA-(j(jV%$js_<9)=&ArP{?OHw)%Zxxl3>Aj7&MBq*cnNgeYQrP*+33O^n ze72-3Jfi`T+bo2ANKD%l*Gc^?p{9mPO~N}P6^85zSkJPBYQ<#gmed)wKhnD;0rXxtOjK5fLRUbxz}KwxK&$d zo7iVDdLSvy1p64^=QeR(_Ny-52I~$Q;I-G}^fHjHc+lEV%#iKkyuNAw7SCFm43qM{ zd6IX7c_Zl}2p+~TD863qi;tOH99%BwKciiuo(@U1+c$y~Ob@XSnT(h8@8}(u$=?OY}ugd4eSMpvpJKY?3qkdl+KE z!xH*qGPthjRiF+1w#}4^%x3#l9@c8uIcDf{2Z3wgNR-RQ&u>hC%kRN7Fao3+)VQDk zrEv6VN?=zhHXKN@2;}WoGpi+*b4gd8CLpR$8+xkuLQ>{UL9@5GpLnI+TcH-Od}#w1 zBfuBa(OXkVssI~-E9rr*PQ$w130ZlpmVbgPk;c8BNkx#H694XGRqBEHE- zZ%fF-^4&jBZNpvA%=&HZ2zJmtJQFI#XA-T}+{ZJe^h_ets%AV>NzWt-t!%+FtOsuZ z5^)w<@hnJsCeh^}vnsS)v1=e>9@b5^r=njXs}|5ox#DXvxHSr__hhZb0I?6jrdzI< zr8T`_yT@R!W{{E$r>I=Jn;8(y5GXEf>t<31m}FUvnFzZ*++KdUVrd{qJS$%$>v#XH zI2EoeBkU;$$#Ig{b(3EG^+zI3Z1|+GFTBl&BdW#iF(6P2(KfpWJ>#Pc5PIJd$u@Sm zaz%pV$5O6fO)6LJvPY@L{sfi>mCFI*wYEYZVvVq3xNXzWVzJhPySqj%hcpP7UJ zkgl6!MiRAW%3`LlPJ0YzL17z)BQ}5RwZslZ5V67S^an!(D<1C(mlM>Wz><}ha3|TV1>(sA7}RwScMYP_x?#*bqP@dJQ+dxdYi!;3)U+lZ6GtxZoD^D& zMp<8ZS;Oj1;N}BwblanGPTH!S;VOFka=rP4!)7mG^KRZ6M7QKwgNno$Z(S^YT-}5?@Y4zLf;=P<{P~#MQpZ!%+p#idOjP z6JaB*NrV<-s0dQIgTO%d(B_bZQdt)xStxUE0a5qQg^C|}l-04fmNl6W%ujXkC!?@v7NlbzW<>>BeZYKer7`JMpaJXwtMc^@o*rb0 zWM>V_MsJg0l3T`)>8yce^L?|c$EERUQpo^PBN;GzYgsvIvTOI&nm)-E^WIvh!Px@O z^-Rj*;p)TN7+G)kPD2cyA#$JLa676Ftlb8;Bb?J^1pd<->)3OTW&{uz<|~QF;HnoP zT!y$6)vg!0t%yOW+(*PjSREG)+VNftJjL>3tq2{lQAt|vX!6NY?WwtBLPr4a(FUgx zYIb*;R}|iaRmiUg3_#WH^O$iQ2{>eoGW$U&Hz;-%0YSbZEQac#1mE~4s@L!DsUE&D zb(E1@*BE2XNT}JMupuPuMo5Sg9~b`{WHr^ZBjp|mQQTewxvB`@4yh) zcI2b}3;g3f55)YT&DyZRg7UDG10Rn#bTWB^!paX4jif9rjfv&8OkTF*KIYUp30QZl zKm_#A7j7*~{B-$p5BWJd9>_aqDV<$lKl2Jd1|+aEDFG;bKtuk(F|oCyfFG=dK#s(C z)DW4sUsS9ab!LcL$ z;>+sf?1t`sozU(3q{G`<4$#Pa|1a*C;22BPyre%a=J!AKRf$T zOcU@S#3HfmLEmhsG1)Jhi3MoF8}Q!--C-XViGX0gWWum^lyS&l<1iE1I7`7vcnkE} zQ}G6%M`Rf`D4K@xEX*Sb?iVcdQ8kC)8+`dn|&=#&j3aV^R60#KRFMNp*)AX4RdfwOc*S=B{W_AN+f-?@4RNVLTYda5R#2HDJo_fhrnG zp`%uoB$;*8Vj!(?cD!RFcmtg&j6hmL3g>`xj@5xMvc5VB;T&*k?h;PTRgWH+ISMCt zC1o|D;z{@l^pG^xp+!kv`oiKQt^T|$PJ+?;0dWkY(IpR`vV}KWaS~k1b#V~vOOl|^ zN!M>nMvT}$tdx2ymobz!*CiJL9Nn9ois!lLtenRzUYsASgNM?)G5I!>KQvhDcsaQ6 z*wHR?seIY=-?~^Si>~Jfznt&pl=xzPh^?R$tX?WY^zG#2LgfLit5v9-P8nm55GvQb$mjIeQ3J_k$DJ6V>eE9Uk zi;eFjtj;#F(*L`7JY(!Q5iFkyM{@>YrAj>B)AcKy3gUw_AB!md!`dEt+DBkoC zH0OP9Uh*H)6@mZl4zBUM4d0s&@(~P!-_4Q6k`YHmtK z%FOia4?Tl~nWk1XGT||w$dugdSqoJQvS;O{XNOSed~UXnP<%eb`1}~Vn20qIcRanW z$TrrSx{DYZS`EGUq-t(@Mjizvdf(J0GA?MfKB2*}ZAI^)2y>2eX|B2fQBJq~If_eC z9M<;92pj{EAs+-qkDX~#H!|yv2WO-A8Iv+M9ogssPf!LR(^FjS%Y(PXCBHg&a1x*9 z%~F~S2M?`K+hoLCitsACa{$%{-W_;YeFc@cgxO`6B5u#8QtK=mbdO7EnX(6TwOwHw zvc});sN0%5$Ir-qFQl_}^;W1P&1$_Bmdh|FGgp<9o|~72r3w<_OcNk36{Uc%D2+9h z8f1dMPaKz~&C1D|lkzk#bgDQZ@ud!)jnxH9d>c;`E{SVgzx>#=M#b~T(i^j%pPt!R|H|1*jr(8C{Hw9{ z)pa);ql+^;HJvLia%wWHT;kreWo1?GCg&1|0Zq@96lt2embU7eVpchfY5H_kQFK$~ z>ONDOZmw=!(DYWBdP&os*BpwQM!(+Yv!+>Z_W7b|%bUl3X!_S$^Db-nM7+HltA?q3@+HFqa&To-Wn^v0s}yRW~~I`?k#JALNg{bcj#!n1-aoeWZt4ehyYFuMp!MM08z1(mx$E94!T#hZOhPmx3<-3?s-+J_4lS$76sfpQ+YP@-umrZ4EG-2v2OA` z_fMA0y!ZVlqnF=XyK8#Mz0loNZ`}K2_m=hdChi&i(Y?p_F4=$Y>wSHGzGwGopG)_) ze%kuyz2BiL(%=HFV1ebKlIDYx9?y5a?AGn)!!^Rdq3@%gG00P z@gm1&?eQ%x%`=WK>DfI0goAJMsFTP1n$MnG7u4MAyQsM4)KluD=7jGvUv0KNQ?;S_ z#~xwbB7s0wP0y{R74+U3@g_||Q=`V_T# zO%@D_DY39*Y^5KVXeWc%f-=__!QjCfnt~Hvq`{#G2gt4D2pWab2IHnq#*Bo@wvdWA zl?L|zv^8R)ax5Qr`HDzp^-=kKI?y*bc_qiv@KA#{bME`$>e7L3t!bt!rrTP_gO3k; zG1W>E2_`=-n(03dIOvP-&Y7AsI{>czj&Lduy5d?8$MFx!I~m0@*og^Gki}9%I(iNi z2Pv6jW)2k{58gLGupH~7%+E{b6kG2Cce!try-5(?LSsY~OT;1;D{>5APDWgZ>82zG zS08$22^|r`ElcQxO8B5%g~(jh&i5lXhPhUT(%;S?>ySnmEG!8>f6M7Vy^sBTV*L>%lT@54tW7-=$NQag?*;K@v5wHmBxOK z$!CN!xuB=7i%lgO{U`?wm~x!M*#~cI%x+yU4(V=rUOz`nNrN*)t68x$nu3EaFbx=6 z%8aL(TFb$cKTYXr_-!~*lv!4n28HU2EUTMFh1OrQtS$|U7gZ$$i;HRo=Cj6P4>b<_ zQb=Af&9TV`=eUBOB9A`70UXBdeG($F>dC zElzRKkEH1moZa4!LtJ9Xxf4TUklYFjuxOgnq^uwB>O3AQRJV9WHdL88d^1?{U{G1ctfeFdIwV#3@|B9DJ9zq%|PWpDN|}M$~2VdD+cFm z`=qJ8QP*Yk2HM*yen?QN?Zvb~n7UR%RrIgi=FV6M-M3SnBucc$3I)i7nCK_13>NgN zSQ*Ue*GWOtNj!5NA6n;gJ@w$5HaEqQa|B&jxY#>tZj#?8fR|)ScnQ${tbRjZ#8@e> z@`p@+R}I|0s}7XwMrye9>p6&?K1U8Sv1ljOSY46hiSziA!}TAw;>h^iB;#Y6H(D9t zAI<^^Kh;N91xdY>$gqO`&XLQHtFOp;Rccy%7?P}{73gpL@mi|2xIQ?)yn4j#$*apo z^q!KpW<2b9%i~r^e zZ}Q(7;TZp|5MfnR%aJW`GE{Cto~ZTr=h3SH_4b7mpaPPg#B3 z7(8|L_r^D;-ul@nn`S(3CBa0p9u9Q}k?h`)9N1Swj0~bLd%V`)70M znUw$1)LsTXC_Pisvn(kSr1VV1&nRMJ zMW@cm1VN_H<(NO0-|llk7O!+^_e!4mm5O$+BwM`Fsog6J%&!!iUcoRqX)9|6;0V?q zF*k5fHZ1vslnJa)n;%{uUx1?|urm+>tr60e@EGG@WM)7f9&=c!X8hbTd1GIFM(~Wj z{uKmc2ts5IIO3Knmr(hSkc~e2_YEFH~*;eJ4Ac^FCq* zC(#T_^1W#D; z7A<3E{JlO^sV+=_n<1mlsOtx@&rN5XTHoIkTLbRPKqqD$2kMuGAhe!{4BFxVi(_Db zN)LHJ)4^3}IqRTJ=j*aA@m+|WZ8b0-hu!jaD$qHB8bCldV2;X8*~~0*rpPiuNeVLS z4KS6?YXUA0iy2%1u$(MoM{Nh51CEPQ;$u)0F>qlh?TQ`gRHnJOrkk!*TPZ$ym0!RU z&=s;{BJ#tIda=egKvmq@H#UsU-ono4#QhMz z3X~Weg2#YfDzo@>3TZ#ueHyWS`pFYa9}+(eb0bbeTYef(FbHkIIx`vKk>xoU9U&tubg z*Y(7j^14b~GaQv!*s`X$gOUJ-Da%UfC*g{t)}$zOq&`{hFREV@Oglc^U;d+*%HG`o z@o36-g;%YgOGJcS z%$J|v=BWGE{sNDY?jlQ9>!z2bR>qGEO99zOF!uR=m!I#a^56aDws?d}1Slucu7g|+ z^pll=cuV*})PU226Hkj?#&|u7HLCyyE4+Ag&%2_Is6l-6rVZfxO==$ z?g<99sQEFpVkE;%?x18kOEN!zKl63+;Ec}i7Kas)-#BxGMtj1#on6%JIbtAM(`2 z*?}5q8Y%}7+-?9z!wq0{_>cm;)!p>y%SEp%^1@Q|4{tyufGV+Ch7~iHOqVzKX@-m6 zM7MtT7HkA~MF~P@0gA?+^wYcTr;ku;B}hLtlz+Iqhu(1}vI&3Si>#?SdJX?%-e9Tt zO7O;Zf-b=!e!O0*0@u2@vIB}YGgkYk}n`WzHg{DYcBatADF^G;MfOeYPoNo%;7-Grm>d zyDvMg_GsR4QXSPC^1b@$=5wdj8=DJ$Qh(Fj?^kR&XuxG*`m%(D3r%FK*FHdauYKq^ zr)D<`RlTX8w^+a$7c3bQzCKi-q5@8-A-y3KC3Jk+qa1(gNhw(1z!8g z-!v8EA5@%eEAZZj6HU@L$`2}jr|`r4jluf>m{LLYK?Q5matGCKOql!3j`tG2cqVTP zK#J*k%|RH&p-Mn>$K<}@t8r|IAJ-mKK)xxJbpRQ7VWFL!^tk?@0!MgC>GYkTTDeNh z77xq%AqBvoRAxg&BW9(k5#=ET+;mH!0;THRz;SWgszU%X4gCbskAZ%Y4*}{>n)mGT z-KMT(Q9=G8QRT(M8b<38xX)y+UU+>QWg)@xG}VITm{CK|hogZgZp$i^Uz z5XIw!A5V+VZx22zwNalFpMl*#y%tfD;Rb%SD3D17FDGK7R!P#RlRBv0NzyQdiNn%J zw_~MMmTt$1x7E_^cGad=ho7C5Al0nxm`?}BpStekp{r^*CsF-oKOFB%hYuUf3amSZ_7(9nulfYiuvpK( zb19$g!-w1=PEOa^zG9QAPbY89K@rX#xWx(Q)cR~nWF&5&ufwQ~oF7vu*$A>=a2MqLUkzGf#B>Z*(1~p&G7!Zmgr1p6rm4kN}N}O=>qF; zC-LH|j1Kj^aljL3<1-vQ3xs_3X@oK$23W)_SF|sN2NmlU`DE&`X}bOtA!EQRx2F1K z_(E$6F@BX^J`eN5SJ$#|#gz*!^aW_8(4rMsfuKnpsNoMm1EYkRKj=had{XFrKc}Qv zU-|O|=Y}C@yoSUP4A88r|LR({lW8NaAFg&DUs#{Wt9F#;0BF5VKdH!d1SE6}brlVo zXJZmwJun*}BE8cfre>|}sT4#GTbSqA}>m-;!L+02mkfb&)#bC&7o1K@@d~@YNS5!VUGZCBk zX4#_q{k~9dzJKs5^_{r~Yd!mBq@MSjkm2+VW*4mN>;)h(=Zjsfk_Hv~Stm^?Hrge< zTAbG@sk(TFGKs735Ogc^JTP9?z<{}Lu7vVHt*!jopSz2CZML3w`s?e0-E{g*ufTWX zD)kin9%<&#T`*c6;we`StiZv8SZQ%I7$=nX-G~0C-}sz#+gCz2N{X9I0wjim%(f|J zFN3ggF)DQehaL${dKp%|uZIR9!*%cz`QS~5TD{=#p8c+flShAc&zU$xyF6@+Z2Q@6 z`75k;ob6V8+GTW2{x=Eo`(bsi+vjPmN<6zecbw()+w+UNV&TZ>AzURVlG`0E>G1Xf9*hjJLC+MZcdp3>KbfCst7D2{O>%}oS5{1XB|lg*gXUsHaBYjvIk)l zzS~2KS$&l<&rYKLjqyG7lRWS73J;s#=`=Vm`Iw}aO`bur0vn>ep$_VOqP@mMEx9dO z0nlvJ1kltE1Y~8b=oDoNh$OvdqS;*AQdPl9kYvFl+{SePti@@>xco>8yGi3Vc2Pe$ z1;|)9l2wLKx%^0EpNH|Im?{hlT$Z8f?!~X25nn6qqDDSl7u}?hu%e%-H>r1+g69r` zOE;8rM8ScP7hiRiNZ0||b6~rR-USV8|8DI~)4RBm-sO$9dIR{j znhh4atq=L9`|L4oxnTU>Miu&@a0a{~hf@{&kk*@95jLR;eppk%Ridd%^d3+&uJTn; zcnikHmFq3PrV&4cx#FFb<0h8e2fRh@!MelC@=G<2xV$YgocpLCN-8+(2~Jch=$wIq zF=B!8918NK0)HwPCl*v(KtVYbaLee+B5H3Ul{yx0lHuG(_-5I0dNzTcVJXsWxzF({ zS9eW%bLFibN#|Aq$#{T)G{C?;uysnqQf|Z?;D>F5T*a5F;Af4giiWD-2U3*Oik_EEkQO-`y^ZJMG1yD1a?9xswhhpbz+s`j3j9$xmT)Eg}%%*7~SstTvN+IrHUu0 z02a^gB8vlNryH)ayNiqx-$tgGZggXbf6Y7JU%GAE z)hl33!h#h$f4FS-`3BkM_U-=vXmuBFgA0@V$;kp6;=&{-gr^K*C}XEs*0;SxQ|iAP zrK^1nn~?_-%mCA?uZQLXs6~z=G)Bn(z>6LI|4tBgy_CPy zVJWzd=qGb1fGj|Ue~_ub}Qa zvHcp6F$n!yvACcoL>g?KXt}Tcqx=o0Iv{4uHZftD_&z69~?j?D1+M?KsJ9ePD}w`PX*YYc4p$;_l)q9sSd2PH-29!Cf#!WpU799FtT7+%kmY6~Ob}b__ zG|tQs$qLe~#e_!eShR9l!!s>hq>CvyZRAi2a`anN%b)T0b7v=p9cYQDxx_ zl;RwyvrzaXRtU=;?z-^?M8~{oxP@u`|4{emaZy+MA2|MI1_nfvVHGiBWOG4bh8Zwa zb{NG}hTR2aSltCd&1`XS&r)!&+bvNmH7y{`s5B9`77N@hO~?heVi7fzS-#KndcOzI z+r7X0`Q7h7UwbsX-)DQD<#k@?bzUp9#gc$^`^^T!QmxtXHOOQQi_W~X)@GGLJ_vph znln{0HCCKDsb89)R@tn90YZGV@B(Bq?%%?6z40k6(k-Aj)56%dsTM zp84GY?^7t!92aD>hC*4>6Qrdyb!uLiq+tqLOG5`th)2AJ@Em-XU;zPH!h;F8;eakO zczN{o>>w!Y4DsomMM_7QKiV-#@jF@o8sbEsZ<)HHuoM)u`1(uE?=Yn@-0?|IU^LK6 z;;ld$IYd%E{?MfK_c<6sJwC#8Ax&Y|^-!+XVTQ?tjGGTAni6?LEwfp%=?5APp zpRE2g?DCV-pO)1%lU`-%txuxMiXT3iT6XxaC#%bv9zXfC z%w7Matt?L5o?32a-TsgAxE}3|<;C{xkrlAS&VIl25?>ijUZo5A{yq()07tyZSUpKP-?fr{KwO`r4IH7&Q z7j_fc8@^ba)gExbJ-dCxf%Keq&4I1C?XMpwp4wh`peeU~`T_rW?d!ixf3^M6mxmX( zzfkGEtUa&N|IPL(zGAw@ugE6TY>()!yrH`os2*4*QGraaCKb^jTF~ZS~!& z>pb)%Z$0jwp5qNa z^qzk64~KW_O+T0p==+@VKc%1eQ`mj|OEqzi^eby>tPQ7X1j`x*3S>=XvCv&Blon6q|4hIwcGgALox<_$L-KU)@JxO28C z%?y}*+Z*gq~_xdK0F{J*mr!nqYn2)jkT3&$h$Lo1f#-tlzYU7q0=`R_7zLA$` zjJaty!6)XX^jE`=|tuuPwao=c6zf-)$xcN@pd&V<&?6w*$?-p+} z4!&En(^zu1Y>)BU-M9+lfO~oSjmh`IzBDemXZN+S;hyQRaqu5y$Bfhd$otNC>JPi0 zjmAG}P8)~)*>ujB`Dflmd zP$B>Y<_oj}TsnIK=^)`$#3Amgj4Hz2d*TmPd&R#f&YsHNTJ1eJ?PfI`QdLzhUp8sa zSAlCMT|YVhgGmdIJX|sfr^A7XaAsaNapfD=rm0@bfyJ*(jUN}WPm=HK#wD4)it6(X zeuLCUccl^kK?pNWSWAYCxw?ZBNBrP@+mD=uBM|1{iCK*h?wzWOyp7zF>WQ=Yi@Ee@ zUnuC@^1F6$euLkl#_Anu9-}u1?miS(pcwv2BNMU8yXzkFj7CaCK_tq$qc)BZA+~v^ z859}N37$$id}zOqX#$QU9R5sEvK4^^<9}x&Wj21K50F=|f*)bXTbHaoo<&qUTa>L( z1($K9^jpqMfyo!wzq204VHM<;4>)_bJ9=wMzm_)iLT@T=<^p67%`ziS@St*$n zS8X>~(6R*fb*Xpo;2gNED#;Pg4%(LkNGZvI<#@g&qc@epeq=7ot~ltyPbEh}>JY&$bm%9{;>kNA<*t$@UWpvg>k?jB!= zRR>wdA~j+(f)e^gG)j$I1ZcKw)g0#dj$%9uF7QCDcD7<}?2d7hpeLCPKaxC+ zo2_b17hnC`251F7Z*=$s_KHhar4?(db5!~2tX%kYg@eL_A*EBHmyM_DP;QbpB93+1 zHEN5~7Vrp3cFzweC0n)XyN5PDX=?FQRW5Ul2|Lrv&}{v0T7Y5_?rHC+7BCU!s_&Ms z>S+4Qw2D~Pv;tqYPgZ8b5#Wxgs=mp9hkDkz#WC;;hzZC>8gg+X_$T^-ITEl8Ea?M3 zt=N~AdZ@xh8F#=O?4*jhsXUZmw!T=V2F2WOUyOigi}`T@EDL_52I9-m!0Fz~(_I>X zcwvLApA63B06J7-tslgQv$-}Y`&s(VbOvmxvWeoHM0OG4% z7Q??GgMS=m2s`y<8WfGr0^j{>8Z57cauZZbx2Fk0PN_;c;0FwAzIy3&Xek1`9{hNm z9U_>L`D`LS>v$#8?LN$RFl9h-gVjYy;T1og&*raMuPf0qwUVLUmy0x=&?tPjv79oihU0hC=Jkkc?bn%H{>Yhgt$#)#^}9L7IKa_1l1GJQ3LAXP%e+DL6{5aeKF2Zbpdv`ZIV8AqIw65sHnWs|9F9y< zAR=RDX2i7ON2|$!M<+oDLtTkdWL2hp&UjWIXz$zj6HCKL`x`bS{iMk0uMp^)p?Dq<(l>P6w$gpUJ{@^| z$WRshm^>xufI4wX&|Wp}V7M+ZPncw5FPovt%>)t?(w3hdNI00ZqTf`T<4FS>E3Mb6 zq0b^7NQc;x~`{r-9P6?-a0ujSFN0vR+kK40{QCeH^lTh zE)*h_G_~V`w1XkF>4DJI%>h#M{6l<@hXn+ofVP}8XloNJTe@f9b!*e-(xC1ct&jb> zXW){*F&a^u$da{gDX(%G>f^wnbo4y6ovObyfYTB#X zCDT;^m*r`+WFIlG0$!UA)hEwCCjId(?ak(4{CMpSLoZ&`%*@XqF&%DBbZ+ye%18Oi z*JrB&HURjsaYFeb1wUf4s@U>7PXn+XEd-wLR{$k6!X+U*cL0h*O(D>Jg!MSur+~SS zc$`)n!8ZfHz~Zz`3?26l(au!8mIh2FKo-*@z>u&`;7= zCuMyIKJ=Cf`g720ae`(OI4OVUW_H*qZ^3Qt;+Uf|m{OP%w30#dysE99p>iAzs|ILl zEKP&cgEHl`H&wn6f&D1{`D-C z&^(wl0QIhoqF2^Fu!HZ$ySboh)7d%>nu{yJPKLxFA`V0+fdH$9$*1!z$FP7b-5iOJVZkmSNDw-k2zNkMlk=lbW>qk75uw3-2kVjpuQ&m5x5ovib|Bd`eejVF+>A!)cv5f7<_gP)sTQ;Bv5U$eecGkdNg>3%NLwpoM zrkRpJAS+u5Svic0KxVOP%3n644R95wkZGvj+%Mi02^{Db0E4SE$2A)S-$$I-4DIHlr&w0 zMM$}o@zv&*?eVR^J*{AKll5|r*Bzytz)6@tZ(82F$ncoYd0)eYjQ8&C7&`XaZE%}MaDASm0v_eKBX#f zveUBRPPZFQaX<@oeKqI4e-gRy-YDb>ujX7Lc9yce39xcj5_%*wYJKtxYsfnQLfFH* zfl#0tK>G_86$~!1Ca_7FsY;BeSCk`INO&23ps5;lvJ>aVPs26>LS-KUIad*zHB(g) z3y&}PYRKKY;uFHs=q@4XgCVjhpbDvfwXa~;JHCsPv+(`2=YF8o2I@Z;0)QACg`JD& zxYjJ&0&HaU3>~+oSP4?E^1FU-G>S0VMvr@b`x_C2ONd?3 z{52Q?h_LxZBZS6_8Uyb6fg^p(Z$5in*cf>WudTQIbnJC+;~C-VeSlvGjEAVE#WB=b z4C)&-NE7O@P=wBY&_Lg)fjFc1eTFf9%nKySM?vlY3-Gauvz~}fK^>RYQ?fRs=zvJBpyG&LS`=Zu5REoz|HhFyxaOOFmfqWipu1Et$|q zp`h=O$$t@qXbT>^T~x0az=t7OdjX!4EDVo;lhLqXoo0} zUNJy>{HH0AILdb>K^!rHlV)ivTX3JcuX(N4Fs zG2xRxItw0*@VY#r%j=2x+Zit$fcoAnQ+8CdU)8YuJRTMV z&q^4ub?x(zfXf(8-!cyv8ut|_T8&O@1)m7&0rrfGM1}`d!(c{74mEMVe8`3|hi~iu z-ub{!i(JL0-p1FUmZ0E*W0eongpT70;;XafyE$eqSmC)ArwR%aAD%ctY%MqrveH{= z_iC^MyYi3B?3#sj$RI`$a}7VQb+W)sBAo{q^jsT-Ax8)3LI?cCHUVN5`~vA0Ihopz+IfTTF;PM{m3__doVr!-DjLt3P&&$ zl!Fz$UWjxXi|WigX}ZZr&B|;R-D4&y%S5LmU7bQqR_?)QLzn& z^TNrL=y?4F-{wy^4JSSRg6E|b!w`gGWr1?M_eO1jR7n@2i^@W!a%nP{kJQ@45p6bz z0|8Qs(l%;wMb;HMGX1>55am!MNTgJS=L9nvhEr+RbA%G>-}3#o62P02nYq@tp%Oph z^W5f?$pB1vlr{=>EtA4wx6bIW3Kuy_$afDodfqk^Ty=l&O>UwSIV&qtd=IP z5U*O*rjJwcYB?b(FCQj^;Tz$`W@AH2(8UIk6-x_1p^}(~lA&nHdcvrj=~JhnnS54m ztb(&1}DLY4R5Jm(2Q5IumRNH~{F))C=Ec_t%6>+#bEv`!ZB3ixQ^7 z#!1Fya~b6KNh1MV(3N_X0wfUPWiW9pw$LI5>SGz^Kfok!q`sNJ7%t!p10%{M0EnFm zT3#5b#B#td!5pqK%e4RqsGFt*`m?ieZ77a-Lo%+!L}2$(;J{v+M<2n5X#sJ-J`a)s z!a5N4Chy}ch(wQ+4M|XtElmNqfVAtAf(BG-N7g91m8Ql`DOHW&-aSK!a7K|_h7+S$ zS}yx8$qdt2T2n|#7V4tsbi`j*w?41@MV*+atWm?q<#Dy+DCIZmeZr|kR51?V8{)a_ z5==k`N0JiIFrcIBlJjS%#tqVR(pc{^x*&n^zaS!?hTDKrt$a%bI{CdicvGaAgUnbo zrLq3_Xx~NZC_g(wO?oxVP#)AlY)BXd_H_p*uY3c}6+7p;6NL#Vi-LRu=?Kj1Wq$#V zI~mMF84fe!Eqiz}21`-^ikI(5rZjpa`A!+9%k(8}J=#Y54`6`w^wR;4JS+;F3*yvZ z#;K*>yKVgj$Q=UTBX0ZHQ+cDqJ-^QzBk%b&RG!)2{XbJ30{L6bNte^55769$P=|MmZKYNT>+C|sUJIH}t{p5~~EkgBgQQYTIZEJ}~Bg^5>w z#BxT;KQ9m<@cT#5aV*Kn>-_6Hil;PdF8@r|_wJlL=Ha=gQxHp~GX-!doaWGD#eToc zn_&ORlYkf)R3+v>K|(5UZ}QoF3yi`mh_K1@aiJtry9#%t%7W`fKMv^mzLs4)Zn?I3 zVxZj0re^V)=N1_Hx){7!J^N(fCE94vl+Osn-nQ{cP+xz`_o^Ctp~cZhrBjwM4&d56 z5P7uAVRSZ-k>DOGz-v9Gu!Of)bDF1EdeppxoPpqzstAk-16 zgAclp#*>YV~gI_`F79cLPfjxeQD5O{mfx-{Wh2tnSkTSl@`0`-7 z;*P`CgY}J@9n@et>ZQVF`a%^j%qwN*EDHY7zo;l_iv4folw$gTex!QE&AI z5kK;ozk|E3 zWrd-E@Do@Kot+zS`>D_4@5+`UL=inaZlJUD^`Ss}Np6BbLnYacvvr z`nc9bJ$G4Mh}TA4n3EO5JC~R6cz}`R3m~)&=U%4Yh4lLh{VwAE@A@^5EwtVBzaBAp z=rgMG2I#-2&Xen3J6asA|K`}@Wc`8T=^6U>Px$BQN1iNRsQ>z8-eUc8-=)8;ANYOK z$NJkpEIy#$_~YU#eefyMNqxmB_gcO7C%en~vp?n4>1}_myQP2c=cb4HO*Q^{{pFfC zlm3O%cFu++r_0<7)6S%a80^n&jWSF*S2NP^k8@!OhIQu;PcxjlV7Jh4=i*|W!TVD2 zn}(`O#cK^e|8n?4!@w*4#|)FM#GN#(xsvyT;p;2@KO2VpmUqsu@VBswhAY4M-!iPY z+H}`&>}uJchUTlLCWC8T`UAu6x-z5T`TD~mcT)(_O)AK^*ogC z`QLRFVb6rFDx$DoQkm9f@xSXTc$0sC)eFgxAUg#m+9@`RQp4IfshK*1i4n9WuKoYk zaUdBX>*r_aCpJ9&fHUDHUbZs<(#TKknfAc-#wqamvO)Dm6G%^J542D5XRp_qu;Yl} z06yC(vQh$x^DctxnFBlu{n+LGKPUh|BT#6Eds?BOGXv@eg1P}I8FXg+_g^NBh0cn# z!-1PUy>Knlq@>MB1sH7^Zg!RcizG&*;)Vf}7v{wSlA39=KtzCA_dvLMXe*CWBdu5q zS5a2z=Nbweac1?k)rrplx=EaVk;s-r^!&CqTnu z+XEsY;ctSZCjS)FTyX~C;1UeT;WlPGuG+d2L693FzN89#ZK&6>=D|=x;N~Vc0mNw#>;-Odrrn$5fTDVaW(Pm~GRB z#)3PNGp*QaS07p>1*z2LtwxuVDUH=E*tm?T4dH3P0kUp1?=s;M(A?WU;^?*bbf^v8 z@;g-*;5Vq-12bz&aRrX@`af7MP#`Zn{3ug3Zg!%4aBjwW|G^+;+9ciLA^BmD@6Ta5 z2Mo1l0WzQTsj&8W;UUi>$YKNqn=)KLExw`%kYM1ESf(f)Asyhhg>vorNV~<_&pjA> zQfOr=Pi|mu*B8v{NFT<<5f^#iK|Opgw^YQfDQmK;#!1UX12P?uObI*xYi;R6}u zXsbgB$}gaFtBVghT3F&`?X84%D*34*Nh^dk%n2c86;eyV^AfZ@hWMxop*;(SewgG) zv_dwf#E-=-S`hv~y_H!7m0kidg~*?rhqp2E7CJD?AGg7LzHO&{MFHP9&fQP@VR&9ug|^gOn0y!9iw)LaN2N znYd+<8aK2;h}>jT0}DHl*9sqRM({?nVNr|*Ks|_+OyGIq6q7$g914sx3f40@7Q+qU z>mc7q6lvjoaG@?PB$>+XfpDUamL2d4;Z#FAEYZA!JSS!m-Ayj+F$5OH3%8I7NzMJN zRE1Dgo{$6)X7{fg20&e4$K*h2r6@9sxtKS1ji3@9l{4TOs{Wifai&?yP0?la%>Z1% zb0?Yy2rA)of;>4$2S8R1MFb*b1&@@NL_}p8EFQ-g=fWfcfr80l7bXywpn9pW&_C?1 zZ@CjJf`N$a-@qpzt0R{VX*;o-IxACK)DKfO`awogKxqs@Izf!q8}_Q!OezZ#KnDbd zhY>w+q%(_c<$~xs*c_1F%pdyk2y|5dHrnc#!0J$)3`U!1^iDFm4@n;LOn>GY+#V6| z0%V0=nGcKHOz>P5WkQ>U+y~HN!sg5wA&>US5Vs3o!v)mC8rqNyOXILOkODr{)?kD) zy$}oTl=9*3n;R z9`J)8X_t9u{VNnxUL6Vo7{OC-Ky3z{gm!_GGNc85jzU^80kVm-j<6Adji{v-vx^!5 zu#Q+b^u%RACYpkykpLd?t&WB;>~#*l$iVlH5A19dzD*qcp(o?$pBjli6R?p#qUF(! z%Y&*}E@UZ!Ts=wwt%jx$sf%(G^KzD|Kuj6Lh4EqgS#U!_vq3sw5XWDF{dJVP3bSj0 z;Ja9ON%{_dE8j@iHzK&*^9W=G?Zbbmi+xJ&j^;$5Fg8EaBLIXE%p<&PQPA>eS`Unf zj=*O!I!|FZ3Svqa1R&T4P&#o|{xl{x7sdqu5THv2APyeZzvfp%{;q`VOjU?WJmvQ3 z$bFLy8mb%t;<8D&)Cw>}{7TYxKzA|s|29KuO&6~OCIKYv+5h{!;#*F(*?9V{|7XUp z?)e`w2K?dvz47@!x1KXD_%rOP@%zTQKaEvQb{3|{W;+|x#^$Y#rkO2quBHX|%LbSR zw}u6oUTaMcHhtDwGs0wQt&24EcwG0cX{y2hf~nYW_=@S}B#!I8I}R61Bl`hbe(cvU zhVb=KEB~Tk&o!#kXt{@joGp0v^nWfur zzk(7LxS9X~Ku+sTN3swB;aZmJpCRxtOy)2#(XmN{xjRVYFVH{K?JRtWFU*8JqvGNc zpDumi+0p@_XgX!YBS9F(6UO;M#7ATQuIK$ZGacQ`=x9JihqiA=XZD+$C%&yLS(O|O zClq|6I=)fVqT-?IqrYScL4o8>$5aoV>OslBD{RMwZ?Z~OnT2mEfjPFV_Fn(Q&J6*-ho>0gI6M$Fj@YHeV79YL8G6& zaE$z)UcSfIZ18btxPjz54773@N2P2i~t{kZH&$!kNcjfJ#DmY*h z`ZB+xmEKYe9oDd(yv`emfZtQ@^H;tePR&a@B)v3aICE1KSr)O|{a2=n{hU%RG(^)pGd_QvosP+!)E`%7&A{BLE z>$(s%aLW>EU_`5)TdG}LoQ=?U?#*bNOI`j?NRyEo^8D@4O;={nE5;f@dhjXMMT z5Pp7Q6Y&ny@u!J^gnJZN{;*xfqU_Fgi-de>TnJ1LR=z<_f?-X(D+0!(q#jB|3dW-@ z%>li_>i8V&Bd`j)BB0m{je6z+6+d*pqyawjNxEqsiXz}b;9`Q{chp!Tnn_`lSPxqB zoBUG1EQZSAuKRR3tU}jv2ufz&_pahcAq~t!H8d(I7AZsxd$VML{LX>xw}2m9#i0Xe zYv9iLO3RW4U+|z@AnJ-*KWOqUVE4(pK&a8ge$A*Rv^N()exNkozd!tC3t2Cu-k*$% zIL3q>-RK94@J7F>&D8?(h7$5EIOCMv@+)Kv3ul~s}=w_xu1H=y}{eKsNPd6>2 zI)FL$84eJ{9SutL%rc$KEM`wY`{QCk|EbhxKg~*w1m}T5?;$*vzPN0( zPZ@4w^6KoJ-ZbTK{Y3r2P59G{4FkcJ8yEYrzg2|-jUVarasMDA({qK(j}mxm(3W)f zjRaPt&j8}BnTIYgSeUPH-~`gQhZck|zqs)9%f8jPzR@p=c{1&tS|IUX)JTz7Fz15! zjAp+RX93j-;n(s%=MmvEAp&WY1R@)xYIhFe;0{8ywi|*d5cYdU6X7XJqP82RkV;Ww zc^yl>XBajid>k^?1eEM1$8MNnwJ0-+xm*HA<8mP`)%^-U{8JIa*EY<-2E29cg>!Ri z6t@$~==N*|P!eU>vJCk0+AAh#9WanO0v--U=qQ0Be*iD3Y<1&g9t4))(@@nOPgk7; ztqOe8pRZcWs-h%SMX=80>(3BV50`nW-1F(muf9%|qxj0rtTK9t(0PoON2{rP2Dh$D ztKGSB+t0sYQ-_N-HEPc{3M?aRJ*qpCuPbA9&4aP#haE+|x;XqQbj z*5=7rs6`y3!v4Y2VZIZf34^DC-8s|y<40@*24otNrMG=?VC6{a@Pvt#UK&*3>B7>m zd6<09j)T#jCD0nQ{0U*gsQ}YzD*Y^IY%4hHsk!LFlyN1Gc;8iTWmh{fMVK4nLs4fx z8fX~c-ZLhK%Xsh!kt{0Z|PZ(mub1_2+{_&EF5){V}b@>a^XR>Ddr;3?=3$A z+X8oI!0HZ^UJM&4^n;7*3cKh@JT1q3Xhknf=w2hS_}G0hCDr zL&%}(4cE1GDxzuvI;fiFM?fbKevBL{zHP?dgg=-FpSYZ4;!*Dk162Nd19KXOR2H7MCwn=hOckF;Bb4eNp9L{&# z0A$y*1U<*_$ZW*t-KQEh{KVH;6u$y2_t!FEOSmWdpQ%|{R>ZLbM?Y0HP;lQNu=2KN zdY%Oz2axnyI^t>WA}yT=N5{D@s9c|LN1RmST%Sl02~#(Sg!g%)>=h1fO8SywbtSH{yk+yv zpru3L#p!(omaKv_vbEj8Gi5ii1Ke>%YZHiVD!I=ds)Wc{F#CE?FdA}2_-%+ML7RUYG;dA8R5s|9#V889Et>4TY%&QH+-KRmaGoB~+9F(W?^4)R>Qemy$ zkpViPGXuuv9T@;MQZH2dZIjy^LN*d@g+q6A=92_7lY&Hk zk7GT1`xDy`O895p?j)D=dLD;Id{Es{oK~jn!pv;kPf*26suQ`Ah@P=IhUWAy?*p{;V^**$&Ld#|I6N;U!sphw$Mkw_5b@COsS1U_zG8> zj|Z~Crc)knFn`H{f77#Wms}pbYc?&RZ(!4bVY?CCDq0Rw74!^s6?d!ad<{IklL7p( zD;sRX%B(ZP!IcnLBGtm39kVmghdwSao*@D%XgtI2@pR&`Q8Gy>(Ba#Ra(=DxOj8CK zpH?xkzhFX)0j$r2^fXjA^!?(SuFuwUG>(MghiAKNGvoS%eql~g9RvzUYcq*@_IS(Jn%J_(9#h@9y zPI>y3U1X(x8Kjs(_f@)@(*+fF6t+CG3Zd!Q;fuR-sRLL=H%8Dk97F|98g}mncy@k6 zP+G)Ti=9$f1LnSv4LWgCJRG0NnCqsLsA#OHR_Z{xSY*;Zgf&nUkL_`?`aRqGfKcFK zwgg{tk9feHd%ll*fMX=jQvrCoK|>L=8Ko_l!#%}T$ zy|3F)RUxMQ#t0I(;)&=4d*)eInJQxkx!IfncYO~m4L3Q^S^-o+3xs!;NwZRl-Q@hdBMPnDG2=Z*Cfk1i`6;`4xRbXoPnGcO>EO{1Qg@MbeCX*HlQLq%0 zanN+|Xi0C39bboH(?Ic^STZAnI2(b7nBr|`8k~s;L?v(@P3Yn|m|sCz1Zgx2G|W4( zz^2gr>Ij)tvV#Zz1fGXl{xRP`=4|s4yx@x%$lW+CB!NP>bM9Y~+`A-&h57dncrhd_ zth1DmBmgfJjpK^-u7F~5Q)==v%^lQ|b=G+lE?27oT1^_;w`pwaJ6qsYxaDq~55A57rZ zbw|L{yIBvzd|nKG91G*lQ1$iqGR$|gOOV}w0we)Y(gaORVut|eGmhW|tqO`uU0o=3 zDJ5_WsAsjy2N9pCv;`#4v_`nfb^eOK4mRKNTf(~w04*J?xPByy)XJu6J?@AqINZL$ zETaLu$y7RC7_k8MGk?YiQeq(ue#6b>1&BJyh$I z5F$*QMZRD_0|;_Cv_}UcDUiMQT?N|?zzVOhgABGs!c%Xi5h3IP4$_$2#if&^3t!dU zXDlHpcd~Xi6?Z5y?O)6qxVl!y2?)1R2B>GrF0EiFSZl1TXL$!iM z?8e#(Qd^jr3l2$2pX)zJz3){ppfN>Bqb^(%e>5L@n<5SEWuYaKrX z>WiZ=d_hVHD#0ucXCvAmj9eIzc}nE57?Chn)JkVLjHolizDolbQD=sAmkf-kGsBSF z*%Vf=Goy1oh*K>7Kr!i&L*KABUTaTfUy7DgYE#uvtqxZ2bI;hJ@~P5pnIpZKjZ;IP9i9UN zC~~s6sKd$Pk`0bW`y!yjZ9j@=m&SZ9Zkb0qZ)WA`hQ>3(X}LcYf;DoN<}q5y1Z%a8 zeuHzOZUdn}DQ#k-2lL1%eNl_k55b8#GB(F;9-p;6HFH0&85*uWz)+B!6~?5Us#`xk zYujkgMc&&+XWfNUw5-ScTrX+NZ1DRwHQ`I(XVQ5q8K31b+VMs0ZZWn;_h_H(s?*{N z4Sw5Gp}ZBvJ69(+k8qZgn*p;yQni@Y!75Hw5FZm~%Cato3Q<-$qzIic0H-eWqPJv{ zp+fl}Fpb~@@te#jX16eIFzratGvJ?jFpiZ^)_>q_NfN-3qtOW*xdVN=aOB9ZG&xRO zro7Nwc|f_qO?g`x)LZGUa&b}iS3l~fOi^v_YpwwwgrsRamT54|*#I%pn+n(^{2gEH zbe`6mXZ(b!_x0h~mfKTdl~FYeRLIvMkPI$o6nXY;1ylm(g#Qd{S3+38#htvNwM^Na z0NOJEh}&O%ePgzu*A99ldw0M5K@e9nQxEWMhJC4qX2sf(HJ# z|1=ydo;WopDle9_zg6C3+a6d^7t!whMcK6W1z(z$wtrB$_^tLID@|M4H+&WMe*3_$ zn?7ux`gPvkc9(CO_O<7JQ+BX@%|W{#+kZY-Q`^4wP|dIHKOD0Ay?x}jb`9;TzOA{_ z{>8Upf418lKK!74U)5rnKB2m9p#FAsUZ_6&*wz^RKaOop)t4XNI!kYNGH#Ln@(*!k z`saSEtJ2^7d2y?LVNH!epH*99ZwNfyO}np$6kQQ>G!{V%Tej zq)Sa}4WeK2))@x<(zL;l@JrachU35Ze`xsN*Sa!8+U2-P!}ZIDPZ$neG5u`l^_%Ie zq2RalUk%^>w)i(g|Er5{89uz~{-@#Y)utvxue!tc4TW`OPYexpWtPS%^>I$dLD#l= z8s}eg_cf|++&R46`0CxJ-Nrk2%f2*L+_O7q zthv{8$oS{In#0EKf0%wX{`9B&Rbx`);oHVTjiyFpW>cQt_-j+0$vBdElC^Cqb}+@Z zEbe1E(Nfme)Y`IGW^%b-=3xrG@9%BOxS!tNwD!LLAk#PZO@mF>?=SW@b#FB(Ov=_8 zl}XzgH`KJMb#bt%yftow=~`=En91%zSfpv_gTv9L^ao)hO)DQ9jy07%2peO%_#khb z$@CyB-lTX~mSoC$SjYG@9zFe`>pQ}Fb`yNQLK#PC4ehPT&^q81eSx|9cY@~ivIUkidIrN%X_hqcu zL0cOXE6;@K3kx7)Ljl-Djg*I_N0BLBn9&|s&F!n>_Yg5ggFxwMP7 z%qa=>AK4%N7;wPs6;rh_EEF{v*9>Z2BJ%IwjN4L+)`Ifr2lPJk4phn_nUgbAhzIwS zunzh{bSOhi8zJaB#KgPA>sqhfmaLtF*5?f>b@Ugt-0$vBTCXrY5B7hDc_UjphcFH9 zF`HWp<`vN84rqy0gZCTi3XZ-W{zsZcJ^aCGv~!_6`oSEKA|Ql9$62pR=(iN&@4Y^9 z@-ItsW!rVG_+a%kSK7n*UFXU}+GVb0^k4b(T$L^;__uRq*Agl97q|TFTy^7go1U7i z@~)Fr&OKrW5lz;nrzgw3xpT5g|7EiN@$VT=`uGPo`oa%e}JRu&D9eBng0%sN}igU+OAVm+huABJ#I0807MZS&FC^U zvVWPH_5WdNdiWo0_V_zE`kSfg*>!4qc1{i3tel7d5FNUc4CwyrRdDV@SeO^Gh{2`Z ziFe!t0*gHX42O2?td}5_@MpVwGPjjq@@Ifqdu+StIZig+>s`PzJ;Xi@(v`M$)HmRc z6X9n+@=DExFqrlT(2V}~ z=M4zKOdw6evZN~JUKQLwFg9dC#LR3-Ag`7%vm*BAjn^HNDl(&>dy!BMd`r>22DT-Uj< zw}avfRzzos5s__FSrYXCw4ra#=Yl;Kd5?j{D0{`t6M7Jn1Bs=4Efb#8UY&`azR?2O z5G1OL|ICa?u|EMmT;AjdIOnFi+}L~plwR#T_N7uwqJ!}{nsVw0TD9-LvH&y`8L&R% zkcS9(Fks2~@Ca+@5sa{2poJ6zc3@Xwz5i)8l9fLBNr=OSk@s84GeE=1iX*^$HHSN0|s!1n)xrKCq