immunio 1.2.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -5
- data/ext/immunio/Rakefile +14 -6
- data/lib/immunio/context.rb +2 -0
- data/lib/immunio/plugins/action_view.rb +7 -668
- data/lib/immunio/plugins/action_view/action_view.rb +22 -0
- data/lib/immunio/plugins/action_view/active_support_hash.rb +29 -0
- data/lib/immunio/plugins/action_view/cache_store.rb +24 -0
- data/lib/immunio/plugins/action_view/erubi.rb +38 -0
- data/lib/immunio/plugins/action_view/erubis.rb +39 -0
- data/lib/immunio/plugins/action_view/fragment_caching.rb +29 -0
- data/lib/immunio/plugins/action_view/haml.rb +46 -0
- data/lib/immunio/plugins/action_view/slim.rb +42 -0
- data/lib/immunio/plugins/action_view/template.rb +431 -0
- data/lib/immunio/plugins/action_view/template_rendering.rb +45 -0
- data/lib/immunio/plugins/http_tracker.rb +2 -0
- data/lib/immunio/plugins/io.rb +34 -0
- data/lib/immunio/version.rb +1 -1
- data/lua-hooks/Makefile +36 -9
- data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
- data/lua-hooks/ext/luajit/Makefile +22 -15
- data/lua-hooks/ext/luajit/README +2 -2
- data/lua-hooks/ext/luajit/doc/bluequad-print.css +1 -1
- data/lua-hooks/ext/luajit/doc/bluequad.css +1 -1
- data/lua-hooks/ext/luajit/doc/changes.html +69 -3
- data/lua-hooks/ext/luajit/doc/contact.html +10 -3
- data/lua-hooks/ext/luajit/doc/ext_c_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +3 -4
- data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_jit.html +3 -3
- data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
- data/lua-hooks/ext/luajit/doc/extensions.html +47 -20
- data/lua-hooks/ext/luajit/doc/faq.html +2 -2
- data/lua-hooks/ext/luajit/doc/install.html +74 -45
- data/lua-hooks/ext/luajit/doc/luajit.html +5 -5
- data/lua-hooks/ext/luajit/doc/running.html +3 -3
- data/lua-hooks/ext/luajit/doc/status.html +13 -8
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +8 -5
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +66 -11
- data/lua-hooks/ext/luajit/dynasm/dasm_mips64.lua +12 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +5 -1
- data/lua-hooks/ext/luajit/dynasm/dynasm.lua +2 -2
- data/lua-hooks/ext/luajit/etc/luajit.1 +1 -1
- data/lua-hooks/ext/luajit/etc/luajit.pc +1 -1
- data/lua-hooks/ext/luajit/src/Makefile +15 -11
- data/lua-hooks/ext/luajit/src/Makefile.dep +16 -16
- data/lua-hooks/ext/luajit/src/host/buildvm.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +9 -4
- data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +14 -3
- data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +27 -3
- data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
- data/lua-hooks/ext/luajit/src/host/genminilua.lua +6 -5
- data/lua-hooks/ext/luajit/src/host/minilua.c +1 -1
- data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/bcsave.lua +8 -8
- data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_arm64.lua +1216 -0
- data/lua-hooks/ext/luajit/src/jit/dis_arm64be.lua +12 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +35 -20
- data/lua-hooks/ext/luajit/src/jit/dis_mips64.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips64el.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +7 -4
- data/lua-hooks/ext/luajit/src/jit/dump.lua +17 -12
- data/lua-hooks/ext/luajit/src/jit/p.lua +3 -2
- data/lua-hooks/ext/luajit/src/jit/v.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
- data/lua-hooks/ext/luajit/src/lauxlib.h +14 -20
- data/lua-hooks/ext/luajit/src/lib_aux.c +38 -27
- data/lua-hooks/ext/luajit/src/lib_base.c +12 -5
- data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_debug.c +5 -5
- data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -2
- data/lua-hooks/ext/luajit/src/lib_init.c +16 -16
- data/lua-hooks/ext/luajit/src/lib_io.c +6 -7
- data/lua-hooks/ext/luajit/src/lib_jit.c +14 -4
- data/lua-hooks/ext/luajit/src/lib_math.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_os.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_package.c +14 -23
- data/lua-hooks/ext/luajit/src/lib_string.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_table.c +21 -1
- data/lua-hooks/ext/luajit/src/lj.supp +3 -3
- data/lua-hooks/ext/luajit/src/lj_alloc.c +174 -83
- data/lua-hooks/ext/luajit/src/lj_api.c +97 -18
- data/lua-hooks/ext/luajit/src/lj_arch.h +54 -22
- data/lua-hooks/ext/luajit/src/lj_asm.c +172 -53
- data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_asm_arm.h +19 -16
- data/lua-hooks/ext/luajit/src/lj_asm_arm64.h +2022 -0
- data/lua-hooks/ext/luajit/src/lj_asm_mips.h +564 -158
- data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +19 -18
- data/lua-hooks/ext/luajit/src/lj_asm_x86.h +578 -92
- data/lua-hooks/ext/luajit/src/lj_bc.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcdump.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcread.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcwrite.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ccall.c +172 -7
- data/lua-hooks/ext/luajit/src/lj_ccall.h +21 -5
- data/lua-hooks/ext/luajit/src/lj_ccallback.c +71 -17
- data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cconv.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cdata.c +7 -5
- data/lua-hooks/ext/luajit/src/lj_cdata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_clib.c +5 -5
- data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cparse.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_crecord.c +70 -14
- data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.h +8 -8
- data/lua-hooks/ext/luajit/src/lj_debug.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_debug.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_def.h +6 -9
- data/lua-hooks/ext/luajit/src/lj_dispatch.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_dispatch.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_emit_arm.h +5 -4
- data/lua-hooks/ext/luajit/src/lj_emit_arm64.h +419 -0
- data/lua-hooks/ext/luajit/src/lj_emit_mips.h +100 -20
- data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +4 -4
- data/lua-hooks/ext/luajit/src/lj_emit_x86.h +116 -25
- data/lua-hooks/ext/luajit/src/lj_err.c +34 -13
- data/lua-hooks/ext/luajit/src/lj_err.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_errmsg.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ff.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ffrecord.c +58 -49
- data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_frame.h +33 -6
- data/lua-hooks/ext/luajit/src/lj_func.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gc.c +16 -7
- data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.c +31 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ir.c +69 -96
- data/lua-hooks/ext/luajit/src/lj_ir.h +29 -18
- data/lua-hooks/ext/luajit/src/lj_ircall.h +24 -30
- data/lua-hooks/ext/luajit/src/lj_iropt.h +9 -9
- data/lua-hooks/ext/luajit/src/lj_jit.h +67 -9
- data/lua-hooks/ext/luajit/src/lj_lex.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lex.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_load.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_mcode.c +11 -10
- data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.h +7 -3
- data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_fold.c +84 -17
- data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_mem.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +24 -22
- data/lua-hooks/ext/luajit/src/lj_opt_sink.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_opt_split.c +11 -2
- data/lua-hooks/ext/luajit/src/lj_parse.c +9 -7
- data/lua-hooks/ext/luajit/src/lj_parse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_record.c +201 -117
- data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_snap.c +72 -26
- data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_state.c +6 -6
- data/lua-hooks/ext/luajit/src/lj_state.h +2 -2
- data/lua-hooks/ext/luajit/src/lj_str.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_str.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt.c +7 -3
- data/lua-hooks/ext/luajit/src/lj_strfmt.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +4 -3
- data/lua-hooks/ext/luajit/src/lj_strscan.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_strscan.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_tab.c +1 -2
- data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target.h +3 -3
- data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_arm64.h +239 -7
- data/lua-hooks/ext/luajit/src/lj_target_mips.h +111 -22
- data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_x86.h +21 -4
- data/lua-hooks/ext/luajit/src/lj_trace.c +63 -18
- data/lua-hooks/ext/luajit/src/lj_trace.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vm.h +5 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmmath.c +1 -1
- data/lua-hooks/ext/luajit/src/ljamalg.c +1 -1
- data/lua-hooks/ext/luajit/src/lua.h +9 -1
- data/lua-hooks/ext/luajit/src/luaconf.h +3 -7
- data/lua-hooks/ext/luajit/src/luajit.c +69 -54
- data/lua-hooks/ext/luajit/src/luajit.h +4 -4
- data/lua-hooks/ext/luajit/src/lualib.h +1 -1
- data/lua-hooks/ext/luajit/src/msvcbuild.bat +12 -4
- data/lua-hooks/ext/luajit/src/vm_arm.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_arm64.dasc +255 -32
- data/lua-hooks/ext/luajit/src/vm_mips.dasc +26 -23
- data/lua-hooks/ext/luajit/src/vm_mips64.dasc +5062 -0
- data/lua-hooks/ext/luajit/src/vm_ppc.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_x64.dasc +24 -25
- data/lua-hooks/ext/luajit/src/vm_x86.dasc +77 -4
- data/lua-hooks/libluahooks.darwin.a +0 -0
- data/lua-hooks/libluahooks.linux.a +0 -0
- data/lua-hooks/options.mk +1 -1
- metadata +37 -77
- data/lua-hooks/ext/all.c +0 -69
- data/lua-hooks/ext/libinjection/COPYING +0 -37
- data/lua-hooks/ext/libinjection/libinjection.h +0 -65
- data/lua-hooks/ext/libinjection/libinjection_html5.c +0 -847
- data/lua-hooks/ext/libinjection/libinjection_html5.h +0 -54
- data/lua-hooks/ext/libinjection/libinjection_sqli.c +0 -2301
- data/lua-hooks/ext/libinjection/libinjection_sqli.h +0 -295
- data/lua-hooks/ext/libinjection/libinjection_sqli_data.h +0 -9349
- data/lua-hooks/ext/libinjection/libinjection_xss.c +0 -531
- data/lua-hooks/ext/libinjection/libinjection_xss.h +0 -21
- data/lua-hooks/ext/libinjection/lualib.c +0 -145
- data/lua-hooks/ext/libinjection/module.mk +0 -5
- data/lua-hooks/ext/lpeg/HISTORY +0 -96
- data/lua-hooks/ext/lpeg/lpcap.c +0 -537
- data/lua-hooks/ext/lpeg/lpcap.h +0 -56
- data/lua-hooks/ext/lpeg/lpcode.c +0 -1014
- data/lua-hooks/ext/lpeg/lpcode.h +0 -40
- data/lua-hooks/ext/lpeg/lpeg-128.gif +0 -0
- data/lua-hooks/ext/lpeg/lpeg.html +0 -1445
- data/lua-hooks/ext/lpeg/lpprint.c +0 -244
- data/lua-hooks/ext/lpeg/lpprint.h +0 -36
- data/lua-hooks/ext/lpeg/lptree.c +0 -1303
- data/lua-hooks/ext/lpeg/lptree.h +0 -82
- data/lua-hooks/ext/lpeg/lptypes.h +0 -149
- data/lua-hooks/ext/lpeg/lpvm.c +0 -364
- data/lua-hooks/ext/lpeg/lpvm.h +0 -58
- data/lua-hooks/ext/lpeg/makefile +0 -55
- data/lua-hooks/ext/lpeg/module.mk +0 -6
- data/lua-hooks/ext/lpeg/re.html +0 -498
- data/lua-hooks/ext/lua-cmsgpack/.gitignore +0 -13
- data/lua-hooks/ext/lua-cmsgpack/CMakeLists.txt +0 -45
- data/lua-hooks/ext/lua-cmsgpack/README.md +0 -115
- data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +0 -970
- data/lua-hooks/ext/lua-cmsgpack/module.mk +0 -2
- data/lua-hooks/ext/lua-cmsgpack/test.lua +0 -570
- data/lua-hooks/ext/lua-snapshot/LICENSE +0 -7
- data/lua-hooks/ext/lua-snapshot/Makefile +0 -12
- data/lua-hooks/ext/lua-snapshot/README.md +0 -18
- data/lua-hooks/ext/lua-snapshot/dump.lua +0 -15
- data/lua-hooks/ext/lua-snapshot/module.mk +0 -2
- data/lua-hooks/ext/lua-snapshot/snapshot.c +0 -462
- data/lua-hooks/ext/luautf8/README.md +0 -152
- data/lua-hooks/ext/luautf8/lutf8lib.c +0 -1274
- data/lua-hooks/ext/luautf8/module.mk +0 -2
- data/lua-hooks/ext/luautf8/unidata.h +0 -3064
- data/lua-hooks/ext/module.mk +0 -15
- data/lua-hooks/ext/modules.h +0 -17
- data/lua-hooks/ext/perf/luacpu.c +0 -114
- data/lua-hooks/ext/perf/lualoadavg.c +0 -40
- data/lua-hooks/ext/perf/luameminfo.c +0 -38
- data/lua-hooks/ext/perf/luaoslib.c +0 -203
- data/lua-hooks/ext/perf/module.mk +0 -5
- data/lua-hooks/ext/sha1/luasha1.c +0 -74
- data/lua-hooks/ext/sha1/module.mk +0 -5
- data/lua-hooks/ext/sha1/sha1.c +0 -145
- data/lua-hooks/ext/sha2/luasha256.c +0 -77
- data/lua-hooks/ext/sha2/module.mk +0 -5
- data/lua-hooks/ext/sha2/sha256.c +0 -196
- data/lua-hooks/ext/sysutils/lua_utils.c +0 -56
- data/lua-hooks/ext/sysutils/module.mk +0 -2
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Definitions for target CPU.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
*/
|
5
5
|
|
6
6
|
#ifndef _LJ_TARGET_H
|
@@ -55,7 +55,7 @@ typedef uint32_t RegSP;
|
|
55
55
|
/* Bitset for registers. 32 registers suffice for most architectures.
|
56
56
|
** Note that one set holds bits for both GPRs and FPRs.
|
57
57
|
*/
|
58
|
-
#if LJ_TARGET_PPC || LJ_TARGET_MIPS
|
58
|
+
#if LJ_TARGET_PPC || LJ_TARGET_MIPS || LJ_TARGET_ARM64
|
59
59
|
typedef uint64_t RegSet;
|
60
60
|
#else
|
61
61
|
typedef uint32_t RegSet;
|
@@ -69,7 +69,7 @@ typedef uint32_t RegSet;
|
|
69
69
|
#define rset_set(rs, r) (rs |= RID2RSET(r))
|
70
70
|
#define rset_clear(rs, r) (rs &= ~RID2RSET(r))
|
71
71
|
#define rset_exclude(rs, r) (rs & ~RID2RSET(r))
|
72
|
-
#if LJ_TARGET_PPC || LJ_TARGET_MIPS
|
72
|
+
#if LJ_TARGET_PPC || LJ_TARGET_MIPS || LJ_TARGET_ARM64
|
73
73
|
#define rset_picktop(rs) ((Reg)(__builtin_clzll(rs)^63))
|
74
74
|
#define rset_pickbot(rs) ((Reg)__builtin_ctzll(rs))
|
75
75
|
#else
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Definitions for ARM64 CPUs.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
*/
|
5
5
|
|
6
6
|
#ifndef _LJ_TARGET_ARM64_H
|
@@ -55,7 +55,8 @@ enum {
|
|
55
55
|
|
56
56
|
/* Make use of all registers, except for x18, fp, lr and sp. */
|
57
57
|
#define RSET_FIXED \
|
58
|
-
(RID2RSET(RID_X18)|RID2RSET(RID_FP)|RID2RSET(RID_LR)|RID2RSET(RID_SP)
|
58
|
+
(RID2RSET(RID_X18)|RID2RSET(RID_FP)|RID2RSET(RID_LR)|RID2RSET(RID_SP)|\
|
59
|
+
RID2RSET(RID_GL))
|
59
60
|
#define RSET_GPR (RSET_RANGE(RID_MIN_GPR, RID_MAX_GPR) - RSET_FIXED)
|
60
61
|
#define RSET_FPR RSET_RANGE(RID_MIN_FPR, RID_MAX_FPR)
|
61
62
|
#define RSET_ALL (RSET_GPR|RSET_FPR)
|
@@ -73,25 +74,256 @@ enum {
|
|
73
74
|
#define REGARG_LASTFPR RID_D7
|
74
75
|
#define REGARG_NUMFPR 8
|
75
76
|
|
77
|
+
/* -- Spill slots --------------------------------------------------------- */
|
78
|
+
|
79
|
+
/* Spill slots are 32 bit wide. An even/odd pair is used for FPRs.
|
80
|
+
**
|
81
|
+
** SPS_FIXED: Available fixed spill slots in interpreter frame.
|
82
|
+
** This definition must match with the vm_arm64.dasc file.
|
83
|
+
** Pre-allocate some slots to avoid sp adjust in every root trace.
|
84
|
+
**
|
85
|
+
** SPS_FIRST: First spill slot for general use. Reserve min. two 32 bit slots.
|
86
|
+
*/
|
87
|
+
#define SPS_FIXED 4
|
88
|
+
#define SPS_FIRST 2
|
89
|
+
|
90
|
+
#define SPOFS_TMP 0
|
91
|
+
|
92
|
+
#define sps_scale(slot) (4 * (int32_t)(slot))
|
93
|
+
#define sps_align(slot) (((slot) - SPS_FIXED + 3) & ~3)
|
94
|
+
|
95
|
+
/* -- Exit state ---------------------------------------------------------- */
|
96
|
+
|
97
|
+
/* This definition must match with the *.dasc file(s). */
|
98
|
+
typedef struct {
|
99
|
+
lua_Number fpr[RID_NUM_FPR]; /* Floating-point registers. */
|
100
|
+
intptr_t gpr[RID_NUM_GPR]; /* General-purpose registers. */
|
101
|
+
int32_t spill[256]; /* Spill slots. */
|
102
|
+
} ExitState;
|
103
|
+
|
104
|
+
/* Highest exit + 1 indicates stack check. */
|
105
|
+
#define EXITSTATE_CHECKEXIT 1
|
106
|
+
|
107
|
+
/* Return the address of a per-trace exit stub. */
|
108
|
+
static LJ_AINLINE uint32_t *exitstub_trace_addr_(uint32_t *p, uint32_t exitno)
|
109
|
+
{
|
110
|
+
while (*p == (LJ_LE ? 0xd503201f : 0x1f2003d5)) p++; /* Skip A64I_NOP. */
|
111
|
+
return p + 3 + exitno;
|
112
|
+
}
|
113
|
+
/* Avoid dependence on lj_jit.h if only including lj_target.h. */
|
114
|
+
#define exitstub_trace_addr(T, exitno) \
|
115
|
+
exitstub_trace_addr_((MCode *)((char *)(T)->mcode + (T)->szmcode), (exitno))
|
116
|
+
|
76
117
|
/* -- Instructions -------------------------------------------------------- */
|
77
118
|
|
119
|
+
/* ARM64 instructions are always little-endian. Swap for ARM64BE. */
|
120
|
+
#if LJ_BE
|
121
|
+
#define A64I_LE(x) (lj_bswap(x))
|
122
|
+
#else
|
123
|
+
#define A64I_LE(x) (x)
|
124
|
+
#endif
|
125
|
+
|
78
126
|
/* Instruction fields. */
|
79
127
|
#define A64F_D(r) (r)
|
80
|
-
#define A64F_N(r)
|
81
|
-
#define A64F_A(r)
|
82
|
-
#define A64F_M(r)
|
128
|
+
#define A64F_N(r) ((r) << 5)
|
129
|
+
#define A64F_A(r) ((r) << 10)
|
130
|
+
#define A64F_M(r) ((r) << 16)
|
131
|
+
#define A64F_IMMS(x) ((x) << 10)
|
132
|
+
#define A64F_IMMR(x) ((x) << 16)
|
83
133
|
#define A64F_U16(x) ((x) << 5)
|
134
|
+
#define A64F_U12(x) ((x) << 10)
|
84
135
|
#define A64F_S26(x) (x)
|
85
|
-
#define A64F_S19(x) ((x) << 5)
|
136
|
+
#define A64F_S19(x) (((uint32_t)(x) & 0x7ffffu) << 5)
|
137
|
+
#define A64F_S14(x) ((x) << 5)
|
138
|
+
#define A64F_S9(x) ((x) << 12)
|
139
|
+
#define A64F_BIT(x) ((x) << 19)
|
140
|
+
#define A64F_SH(sh, x) (((sh) << 22) | ((x) << 10))
|
141
|
+
#define A64F_EX(ex) (A64I_EX | ((ex) << 13))
|
142
|
+
#define A64F_EXSH(ex,x) (A64I_EX | ((ex) << 13) | ((x) << 10))
|
143
|
+
#define A64F_FP8(x) ((x) << 13)
|
144
|
+
#define A64F_CC(cc) ((cc) << 12)
|
145
|
+
#define A64F_LSL16(x) (((x) / 16) << 21)
|
146
|
+
#define A64F_BSH(sh) ((sh) << 10)
|
86
147
|
|
87
148
|
typedef enum A64Ins {
|
149
|
+
A64I_S = 0x20000000,
|
150
|
+
A64I_X = 0x80000000,
|
151
|
+
A64I_EX = 0x00200000,
|
152
|
+
A64I_ON = 0x00200000,
|
153
|
+
A64I_K12 = 0x1a000000,
|
154
|
+
A64I_K13 = 0x18000000,
|
155
|
+
A64I_LS_U = 0x01000000,
|
156
|
+
A64I_LS_S = 0x00800000,
|
157
|
+
A64I_LS_R = 0x01200800,
|
158
|
+
A64I_LS_SH = 0x00001000,
|
159
|
+
A64I_LS_UXTWx = 0x00004000,
|
160
|
+
A64I_LS_SXTWx = 0x0000c000,
|
161
|
+
A64I_LS_SXTXx = 0x0000e000,
|
162
|
+
A64I_LS_LSLx = 0x00006000,
|
163
|
+
|
164
|
+
A64I_ADDw = 0x0b000000,
|
165
|
+
A64I_ADDx = 0x8b000000,
|
166
|
+
A64I_ADDSw = 0x2b000000,
|
167
|
+
A64I_ADDSx = 0xab000000,
|
168
|
+
A64I_NEGw = 0x4b0003e0,
|
169
|
+
A64I_NEGx = 0xcb0003e0,
|
170
|
+
A64I_SUBw = 0x4b000000,
|
171
|
+
A64I_SUBx = 0xcb000000,
|
172
|
+
A64I_SUBSw = 0x6b000000,
|
173
|
+
A64I_SUBSx = 0xeb000000,
|
174
|
+
|
175
|
+
A64I_MULw = 0x1b007c00,
|
176
|
+
A64I_MULx = 0x9b007c00,
|
177
|
+
A64I_SMULL = 0x9b207c00,
|
178
|
+
|
179
|
+
A64I_ANDw = 0x0a000000,
|
180
|
+
A64I_ANDx = 0x8a000000,
|
181
|
+
A64I_ANDSw = 0x6a000000,
|
182
|
+
A64I_ANDSx = 0xea000000,
|
183
|
+
A64I_EORw = 0x4a000000,
|
184
|
+
A64I_EORx = 0xca000000,
|
185
|
+
A64I_ORRw = 0x2a000000,
|
186
|
+
A64I_ORRx = 0xaa000000,
|
187
|
+
A64I_TSTw = 0x6a00001f,
|
188
|
+
A64I_TSTx = 0xea00001f,
|
189
|
+
|
190
|
+
A64I_CMPw = 0x6b00001f,
|
191
|
+
A64I_CMPx = 0xeb00001f,
|
192
|
+
A64I_CMNw = 0x2b00001f,
|
193
|
+
A64I_CMNx = 0xab00001f,
|
194
|
+
A64I_CCMPw = 0x7a400000,
|
195
|
+
A64I_CCMPx = 0xfa400000,
|
196
|
+
A64I_CSELw = 0x1a800000,
|
197
|
+
A64I_CSELx = 0x9a800000,
|
198
|
+
|
199
|
+
A64I_ASRw = 0x13007c00,
|
200
|
+
A64I_ASRx = 0x9340fc00,
|
201
|
+
A64I_LSLx = 0xd3400000,
|
202
|
+
A64I_LSRx = 0xd340fc00,
|
203
|
+
A64I_SHRw = 0x1ac02000,
|
204
|
+
A64I_SHRx = 0x9ac02000, /* lsl/lsr/asr/ror x0, x0, x0 */
|
205
|
+
A64I_REVw = 0x5ac00800,
|
206
|
+
A64I_REVx = 0xdac00c00,
|
207
|
+
|
208
|
+
A64I_EXTRw = 0x13800000,
|
209
|
+
A64I_EXTRx = 0x93c00000,
|
210
|
+
A64I_SBFMw = 0x13000000,
|
211
|
+
A64I_SBFMx = 0x93400000,
|
212
|
+
A64I_SXTBw = 0x13001c00,
|
213
|
+
A64I_SXTHw = 0x13003c00,
|
214
|
+
A64I_SXTW = 0x93407c00,
|
215
|
+
A64I_UBFMw = 0x53000000,
|
216
|
+
A64I_UBFMx = 0xd3400000,
|
217
|
+
A64I_UXTBw = 0x53001c00,
|
218
|
+
A64I_UXTHw = 0x53003c00,
|
219
|
+
|
220
|
+
A64I_MOVw = 0x2a0003e0,
|
221
|
+
A64I_MOVx = 0xaa0003e0,
|
222
|
+
A64I_MVNw = 0x2a2003e0,
|
223
|
+
A64I_MVNx = 0xaa2003e0,
|
224
|
+
A64I_MOVKw = 0x72800000,
|
225
|
+
A64I_MOVKx = 0xf2800000,
|
88
226
|
A64I_MOVZw = 0x52800000,
|
89
227
|
A64I_MOVZx = 0xd2800000,
|
228
|
+
A64I_MOVNw = 0x12800000,
|
229
|
+
A64I_MOVNx = 0x92800000,
|
230
|
+
|
231
|
+
A64I_LDRB = 0x39400000,
|
232
|
+
A64I_LDRH = 0x79400000,
|
233
|
+
A64I_LDRw = 0xb9400000,
|
234
|
+
A64I_LDRx = 0xf9400000,
|
90
235
|
A64I_LDRLw = 0x18000000,
|
91
236
|
A64I_LDRLx = 0x58000000,
|
92
|
-
|
237
|
+
A64I_STRB = 0x39000000,
|
238
|
+
A64I_STRH = 0x79000000,
|
239
|
+
A64I_STRw = 0xb9000000,
|
240
|
+
A64I_STRx = 0xf9000000,
|
241
|
+
A64I_STPw = 0x29000000,
|
242
|
+
A64I_STPx = 0xa9000000,
|
243
|
+
A64I_LDPw = 0x29400000,
|
244
|
+
A64I_LDPx = 0xa9400000,
|
245
|
+
|
93
246
|
A64I_B = 0x14000000,
|
247
|
+
A64I_BCC = 0x54000000,
|
248
|
+
A64I_BL = 0x94000000,
|
94
249
|
A64I_BR = 0xd61f0000,
|
250
|
+
A64I_BLR = 0xd63f0000,
|
251
|
+
A64I_TBZ = 0x36000000,
|
252
|
+
A64I_TBNZ = 0x37000000,
|
253
|
+
A64I_CBZ = 0x34000000,
|
254
|
+
A64I_CBNZ = 0x35000000,
|
255
|
+
|
256
|
+
A64I_NOP = 0xd503201f,
|
257
|
+
|
258
|
+
/* FP */
|
259
|
+
A64I_FADDd = 0x1e602800,
|
260
|
+
A64I_FSUBd = 0x1e603800,
|
261
|
+
A64I_FMADDd = 0x1f400000,
|
262
|
+
A64I_FMSUBd = 0x1f408000,
|
263
|
+
A64I_FNMADDd = 0x1f600000,
|
264
|
+
A64I_FNMSUBd = 0x1f608000,
|
265
|
+
A64I_FMULd = 0x1e600800,
|
266
|
+
A64I_FDIVd = 0x1e601800,
|
267
|
+
A64I_FNEGd = 0x1e614000,
|
268
|
+
A64I_FABS = 0x1e60c000,
|
269
|
+
A64I_FSQRTd = 0x1e61c000,
|
270
|
+
A64I_LDRs = 0xbd400000,
|
271
|
+
A64I_LDRd = 0xfd400000,
|
272
|
+
A64I_STRs = 0xbd000000,
|
273
|
+
A64I_STRd = 0xfd000000,
|
274
|
+
A64I_LDPs = 0x2d400000,
|
275
|
+
A64I_LDPd = 0x6d400000,
|
276
|
+
A64I_STPs = 0x2d000000,
|
277
|
+
A64I_STPd = 0x6d000000,
|
278
|
+
A64I_FCMPd = 0x1e602000,
|
279
|
+
A64I_FCMPZd = 0x1e602008,
|
280
|
+
A64I_FCSELd = 0x1e600c00,
|
281
|
+
A64I_FRINTMd = 0x1e654000,
|
282
|
+
A64I_FRINTPd = 0x1e64c000,
|
283
|
+
A64I_FRINTZd = 0x1e65c000,
|
284
|
+
|
285
|
+
A64I_FCVT_F32_F64 = 0x1e624000,
|
286
|
+
A64I_FCVT_F64_F32 = 0x1e22c000,
|
287
|
+
A64I_FCVT_F32_S32 = 0x1e220000,
|
288
|
+
A64I_FCVT_F64_S32 = 0x1e620000,
|
289
|
+
A64I_FCVT_F32_U32 = 0x1e230000,
|
290
|
+
A64I_FCVT_F64_U32 = 0x1e630000,
|
291
|
+
A64I_FCVT_F32_S64 = 0x9e220000,
|
292
|
+
A64I_FCVT_F64_S64 = 0x9e620000,
|
293
|
+
A64I_FCVT_F32_U64 = 0x9e230000,
|
294
|
+
A64I_FCVT_F64_U64 = 0x9e630000,
|
295
|
+
A64I_FCVT_S32_F64 = 0x1e780000,
|
296
|
+
A64I_FCVT_S32_F32 = 0x1e380000,
|
297
|
+
A64I_FCVT_U32_F64 = 0x1e790000,
|
298
|
+
A64I_FCVT_U32_F32 = 0x1e390000,
|
299
|
+
A64I_FCVT_S64_F64 = 0x9e780000,
|
300
|
+
A64I_FCVT_S64_F32 = 0x9e380000,
|
301
|
+
A64I_FCVT_U64_F64 = 0x9e790000,
|
302
|
+
A64I_FCVT_U64_F32 = 0x9e390000,
|
303
|
+
|
304
|
+
A64I_FMOV_S = 0x1e204000,
|
305
|
+
A64I_FMOV_D = 0x1e604000,
|
306
|
+
A64I_FMOV_R_S = 0x1e260000,
|
307
|
+
A64I_FMOV_S_R = 0x1e270000,
|
308
|
+
A64I_FMOV_R_D = 0x9e660000,
|
309
|
+
A64I_FMOV_D_R = 0x9e670000,
|
310
|
+
A64I_FMOV_DI = 0x1e601000,
|
95
311
|
} A64Ins;
|
96
312
|
|
313
|
+
typedef enum A64Shift {
|
314
|
+
A64SH_LSL, A64SH_LSR, A64SH_ASR, A64SH_ROR
|
315
|
+
} A64Shift;
|
316
|
+
|
317
|
+
typedef enum A64Extend {
|
318
|
+
A64EX_UXTB, A64EX_UXTH, A64EX_UXTW, A64EX_UXTX,
|
319
|
+
A64EX_SXTB, A64EX_SXTH, A64EX_SXTW, A64EX_SXTX,
|
320
|
+
} A64Extend;
|
321
|
+
|
322
|
+
/* ARM condition codes. */
|
323
|
+
typedef enum A64CC {
|
324
|
+
CC_EQ, CC_NE, CC_CS, CC_CC, CC_MI, CC_PL, CC_VS, CC_VC,
|
325
|
+
CC_HI, CC_LS, CC_GE, CC_LT, CC_GT, CC_LE, CC_AL,
|
326
|
+
CC_HS = CC_CS, CC_LO = CC_CC
|
327
|
+
} A64CC;
|
328
|
+
|
97
329
|
#endif
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
** Definitions for MIPS CPUs.
|
3
|
-
** Copyright (C) 2005-
|
3
|
+
** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
|
4
4
|
*/
|
5
5
|
|
6
6
|
#ifndef _LJ_TARGET_MIPS_H
|
@@ -32,6 +32,7 @@ enum {
|
|
32
32
|
RID_MAX,
|
33
33
|
RID_ZERO = RID_R0,
|
34
34
|
RID_TMP = RID_RA,
|
35
|
+
RID_GP = RID_R28,
|
35
36
|
|
36
37
|
/* Calling conventions. */
|
37
38
|
RID_RET = RID_R2,
|
@@ -74,46 +75,64 @@ enum {
|
|
74
75
|
|
75
76
|
/* -- Register sets ------------------------------------------------------- */
|
76
77
|
|
77
|
-
/* Make use of all registers, except ZERO, TMP, SP, SYS1, SYS2 and
|
78
|
+
/* Make use of all registers, except ZERO, TMP, SP, SYS1, SYS2, JGL and GP. */
|
78
79
|
#define RSET_FIXED \
|
79
80
|
(RID2RSET(RID_ZERO)|RID2RSET(RID_TMP)|RID2RSET(RID_SP)|\
|
80
|
-
RID2RSET(RID_SYS1)|RID2RSET(RID_SYS2)|RID2RSET(RID_JGL))
|
81
|
+
RID2RSET(RID_SYS1)|RID2RSET(RID_SYS2)|RID2RSET(RID_JGL)|RID2RSET(RID_GP))
|
81
82
|
#define RSET_GPR (RSET_RANGE(RID_MIN_GPR, RID_MAX_GPR) - RSET_FIXED)
|
82
83
|
#if LJ_SOFTFP
|
83
|
-
#define RSET_FPR
|
84
|
+
#define RSET_FPR 0
|
84
85
|
#else
|
86
|
+
#if LJ_32
|
85
87
|
#define RSET_FPR \
|
86
88
|
(RID2RSET(RID_F0)|RID2RSET(RID_F2)|RID2RSET(RID_F4)|RID2RSET(RID_F6)|\
|
87
89
|
RID2RSET(RID_F8)|RID2RSET(RID_F10)|RID2RSET(RID_F12)|RID2RSET(RID_F14)|\
|
88
90
|
RID2RSET(RID_F16)|RID2RSET(RID_F18)|RID2RSET(RID_F20)|RID2RSET(RID_F22)|\
|
89
91
|
RID2RSET(RID_F24)|RID2RSET(RID_F26)|RID2RSET(RID_F28)|RID2RSET(RID_F30))
|
92
|
+
#else
|
93
|
+
#define RSET_FPR RSET_RANGE(RID_MIN_FPR, RID_MAX_FPR)
|
94
|
+
#endif
|
90
95
|
#endif
|
91
|
-
#define RSET_ALL
|
92
|
-
#define RSET_INIT
|
96
|
+
#define RSET_ALL (RSET_GPR|RSET_FPR)
|
97
|
+
#define RSET_INIT RSET_ALL
|
93
98
|
|
94
99
|
#define RSET_SCRATCH_GPR \
|
95
100
|
(RSET_RANGE(RID_R1, RID_R15+1)|\
|
96
|
-
RID2RSET(RID_R24)|RID2RSET(RID_R25)
|
101
|
+
RID2RSET(RID_R24)|RID2RSET(RID_R25))
|
97
102
|
#if LJ_SOFTFP
|
98
103
|
#define RSET_SCRATCH_FPR 0
|
99
104
|
#else
|
105
|
+
#if LJ_32
|
100
106
|
#define RSET_SCRATCH_FPR \
|
101
107
|
(RID2RSET(RID_F0)|RID2RSET(RID_F2)|RID2RSET(RID_F4)|RID2RSET(RID_F6)|\
|
102
108
|
RID2RSET(RID_F8)|RID2RSET(RID_F10)|RID2RSET(RID_F12)|RID2RSET(RID_F14)|\
|
103
109
|
RID2RSET(RID_F16)|RID2RSET(RID_F18))
|
110
|
+
#else
|
111
|
+
#define RSET_SCRATCH_FPR RSET_RANGE(RID_F0, RID_F24)
|
112
|
+
#endif
|
104
113
|
#endif
|
105
114
|
#define RSET_SCRATCH (RSET_SCRATCH_GPR|RSET_SCRATCH_FPR)
|
106
115
|
#define REGARG_FIRSTGPR RID_R4
|
116
|
+
#if LJ_32
|
107
117
|
#define REGARG_LASTGPR RID_R7
|
108
118
|
#define REGARG_NUMGPR 4
|
119
|
+
#else
|
120
|
+
#define REGARG_LASTGPR RID_R11
|
121
|
+
#define REGARG_NUMGPR 8
|
122
|
+
#endif
|
109
123
|
#if LJ_ABI_SOFTFP
|
110
124
|
#define REGARG_FIRSTFPR 0
|
111
125
|
#define REGARG_LASTFPR 0
|
112
126
|
#define REGARG_NUMFPR 0
|
113
127
|
#else
|
114
128
|
#define REGARG_FIRSTFPR RID_F12
|
129
|
+
#if LJ_32
|
115
130
|
#define REGARG_LASTFPR RID_F14
|
116
131
|
#define REGARG_NUMFPR 2
|
132
|
+
#else
|
133
|
+
#define REGARG_LASTFPR RID_F19
|
134
|
+
#define REGARG_NUMFPR 8
|
135
|
+
#endif
|
117
136
|
#endif
|
118
137
|
|
119
138
|
/* -- Spill slots --------------------------------------------------------- */
|
@@ -125,7 +144,11 @@ enum {
|
|
125
144
|
**
|
126
145
|
** SPS_FIRST: First spill slot for general use.
|
127
146
|
*/
|
147
|
+
#if LJ_32
|
128
148
|
#define SPS_FIXED 5
|
149
|
+
#else
|
150
|
+
#define SPS_FIXED 4
|
151
|
+
#endif
|
129
152
|
#define SPS_FIRST 4
|
130
153
|
|
131
154
|
#define SPOFS_TMP 0
|
@@ -140,7 +163,7 @@ typedef struct {
|
|
140
163
|
#if !LJ_SOFTFP
|
141
164
|
lua_Number fpr[RID_NUM_FPR]; /* Floating-point registers. */
|
142
165
|
#endif
|
143
|
-
|
166
|
+
intptr_t gpr[RID_NUM_GPR]; /* General-purpose registers. */
|
144
167
|
int32_t spill[256]; /* Spill slots. */
|
145
168
|
} ExitState;
|
146
169
|
|
@@ -169,32 +192,41 @@ static LJ_AINLINE uint32_t *exitstub_trace_addr_(uint32_t *p)
|
|
169
192
|
#define MIPSF_F(r) ((r) << 6)
|
170
193
|
#define MIPSF_A(n) ((n) << 6)
|
171
194
|
#define MIPSF_M(n) ((n) << 11)
|
195
|
+
#define MIPSF_L(n) ((n) << 6)
|
172
196
|
|
173
197
|
typedef enum MIPSIns {
|
198
|
+
MIPSI_D = 0x38,
|
199
|
+
MIPSI_DV = 0x10,
|
200
|
+
MIPSI_D32 = 0x3c,
|
174
201
|
/* Integer instructions. */
|
175
|
-
MIPSI_MOVE =
|
202
|
+
MIPSI_MOVE = 0x00000025,
|
176
203
|
MIPSI_NOP = 0x00000000,
|
177
204
|
|
178
205
|
MIPSI_LI = 0x24000000,
|
179
206
|
MIPSI_LU = 0x34000000,
|
180
207
|
MIPSI_LUI = 0x3c000000,
|
181
208
|
|
182
|
-
|
209
|
+
MIPSI_AND = 0x00000024,
|
183
210
|
MIPSI_ANDI = 0x30000000,
|
211
|
+
MIPSI_OR = 0x00000025,
|
184
212
|
MIPSI_ORI = 0x34000000,
|
213
|
+
MIPSI_XOR = 0x00000026,
|
185
214
|
MIPSI_XORI = 0x38000000,
|
215
|
+
MIPSI_NOR = 0x00000027,
|
216
|
+
|
217
|
+
MIPSI_SLT = 0x0000002a,
|
218
|
+
MIPSI_SLTU = 0x0000002b,
|
186
219
|
MIPSI_SLTI = 0x28000000,
|
187
220
|
MIPSI_SLTIU = 0x2c000000,
|
188
221
|
|
189
222
|
MIPSI_ADDU = 0x00000021,
|
223
|
+
MIPSI_ADDIU = 0x24000000,
|
224
|
+
MIPSI_SUB = 0x00000022,
|
190
225
|
MIPSI_SUBU = 0x00000023,
|
191
226
|
MIPSI_MUL = 0x70000002,
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
MIPSI_NOR = 0x00000027,
|
196
|
-
MIPSI_SLT = 0x0000002a,
|
197
|
-
MIPSI_SLTU = 0x0000002b,
|
227
|
+
MIPSI_DIV = 0x0000001a,
|
228
|
+
MIPSI_DIVU = 0x0000001b,
|
229
|
+
|
198
230
|
MIPSI_MOVZ = 0x0000000a,
|
199
231
|
MIPSI_MOVN = 0x0000000b,
|
200
232
|
MIPSI_MFHI = 0x00000010,
|
@@ -204,19 +236,24 @@ typedef enum MIPSIns {
|
|
204
236
|
MIPSI_SLL = 0x00000000,
|
205
237
|
MIPSI_SRL = 0x00000002,
|
206
238
|
MIPSI_SRA = 0x00000003,
|
207
|
-
MIPSI_ROTR = 0x00200002, /*
|
239
|
+
MIPSI_ROTR = 0x00200002, /* MIPSXXR2 */
|
240
|
+
MIPSI_DROTR = 0x0020003a,
|
241
|
+
MIPSI_DROTR32 = 0x0020003e,
|
208
242
|
MIPSI_SLLV = 0x00000004,
|
209
243
|
MIPSI_SRLV = 0x00000006,
|
210
244
|
MIPSI_SRAV = 0x00000007,
|
211
|
-
MIPSI_ROTRV = 0x00000046, /*
|
245
|
+
MIPSI_ROTRV = 0x00000046, /* MIPSXXR2 */
|
246
|
+
MIPSI_DROTRV = 0x00000056,
|
212
247
|
|
213
|
-
MIPSI_SEB = 0x7c000420, /*
|
214
|
-
MIPSI_SEH = 0x7c000620, /*
|
215
|
-
MIPSI_WSBH = 0x7c0000a0, /*
|
248
|
+
MIPSI_SEB = 0x7c000420, /* MIPSXXR2 */
|
249
|
+
MIPSI_SEH = 0x7c000620, /* MIPSXXR2 */
|
250
|
+
MIPSI_WSBH = 0x7c0000a0, /* MIPSXXR2 */
|
251
|
+
MIPSI_DSBH = 0x7c0000a4,
|
216
252
|
|
217
253
|
MIPSI_B = 0x10000000,
|
218
254
|
MIPSI_J = 0x08000000,
|
219
255
|
MIPSI_JAL = 0x0c000000,
|
256
|
+
MIPSI_JALX = 0x74000000,
|
220
257
|
MIPSI_JR = 0x00000008,
|
221
258
|
MIPSI_JALR = 0x0000f809,
|
222
259
|
|
@@ -229,7 +266,9 @@ typedef enum MIPSIns {
|
|
229
266
|
|
230
267
|
/* Load/store instructions. */
|
231
268
|
MIPSI_LW = 0x8c000000,
|
269
|
+
MIPSI_LD = 0xdc000000,
|
232
270
|
MIPSI_SW = 0xac000000,
|
271
|
+
MIPSI_SD = 0xfc000000,
|
233
272
|
MIPSI_LB = 0x80000000,
|
234
273
|
MIPSI_SB = 0xa0000000,
|
235
274
|
MIPSI_LH = 0x84000000,
|
@@ -241,6 +280,50 @@ typedef enum MIPSIns {
|
|
241
280
|
MIPSI_LDC1 = 0xd4000000,
|
242
281
|
MIPSI_SDC1 = 0xf4000000,
|
243
282
|
|
283
|
+
/* MIPS64 instructions. */
|
284
|
+
MIPSI_DADD = 0x0000002c,
|
285
|
+
MIPSI_DADDI = 0x60000000,
|
286
|
+
MIPSI_DADDU = 0x0000002d,
|
287
|
+
MIPSI_DADDIU = 0x64000000,
|
288
|
+
MIPSI_DSUB = 0x0000002e,
|
289
|
+
MIPSI_DSUBU = 0x0000002f,
|
290
|
+
MIPSI_DDIV = 0x0000001e,
|
291
|
+
MIPSI_DDIVU = 0x0000001f,
|
292
|
+
MIPSI_DMULT = 0x0000001c,
|
293
|
+
MIPSI_DMULTU = 0x0000001d,
|
294
|
+
|
295
|
+
MIPSI_DSLL = 0x00000038,
|
296
|
+
MIPSI_DSRL = 0x0000003a,
|
297
|
+
MIPSI_DSLLV = 0x00000014,
|
298
|
+
MIPSI_DSRLV = 0x00000016,
|
299
|
+
MIPSI_DSRA = 0x0000003b,
|
300
|
+
MIPSI_DSRAV = 0x00000017,
|
301
|
+
MIPSI_DSRA32 = 0x0000003f,
|
302
|
+
MIPSI_DSLL32 = 0x0000003c,
|
303
|
+
MIPSI_DSRL32 = 0x0000003e,
|
304
|
+
MIPSI_DSHD = 0x7c000164,
|
305
|
+
|
306
|
+
MIPSI_AADDU = LJ_32 ? MIPSI_ADDU : MIPSI_DADDU,
|
307
|
+
MIPSI_AADDIU = LJ_32 ? MIPSI_ADDIU : MIPSI_DADDIU,
|
308
|
+
MIPSI_ASUBU = LJ_32 ? MIPSI_SUBU : MIPSI_DSUBU,
|
309
|
+
MIPSI_AL = LJ_32 ? MIPSI_LW : MIPSI_LD,
|
310
|
+
MIPSI_AS = LJ_32 ? MIPSI_SW : MIPSI_SD,
|
311
|
+
|
312
|
+
/* Extract/insert instructions. */
|
313
|
+
MIPSI_DEXTM = 0x7c000001,
|
314
|
+
MIPSI_DEXTU = 0x7c000002,
|
315
|
+
MIPSI_DEXT = 0x7c000003,
|
316
|
+
MIPSI_DINSM = 0x7c000005,
|
317
|
+
MIPSI_DINSU = 0x7c000006,
|
318
|
+
MIPSI_DINS = 0x7c000007,
|
319
|
+
|
320
|
+
MIPSI_RINT_D = 0x4620001a,
|
321
|
+
MIPSI_RINT_S = 0x4600001a,
|
322
|
+
MIPSI_RINT = 0x4400001a,
|
323
|
+
MIPSI_FLOOR_D = 0x4620000b,
|
324
|
+
MIPSI_CEIL_D = 0x4620000a,
|
325
|
+
MIPSI_ROUND_D = 0x46200008,
|
326
|
+
|
244
327
|
/* FP instructions. */
|
245
328
|
MIPSI_MOV_S = 0x46000006,
|
246
329
|
MIPSI_MOV_D = 0x46200006,
|
@@ -265,24 +348,30 @@ typedef enum MIPSIns {
|
|
265
348
|
MIPSI_CVT_W_D = 0x46200024,
|
266
349
|
MIPSI_CVT_S_W = 0x46800020,
|
267
350
|
MIPSI_CVT_D_W = 0x46800021,
|
351
|
+
MIPSI_CVT_S_L = 0x46a00020,
|
352
|
+
MIPSI_CVT_D_L = 0x46a00021,
|
268
353
|
|
269
354
|
MIPSI_TRUNC_W_S = 0x4600000d,
|
270
355
|
MIPSI_TRUNC_W_D = 0x4620000d,
|
356
|
+
MIPSI_TRUNC_L_S = 0x46000009,
|
357
|
+
MIPSI_TRUNC_L_D = 0x46200009,
|
271
358
|
MIPSI_FLOOR_W_S = 0x4600000f,
|
272
359
|
MIPSI_FLOOR_W_D = 0x4620000f,
|
273
360
|
|
274
361
|
MIPSI_MFC1 = 0x44000000,
|
275
362
|
MIPSI_MTC1 = 0x44800000,
|
363
|
+
MIPSI_DMTC1 = 0x44a00000,
|
364
|
+
MIPSI_DMFC1 = 0x44200000,
|
276
365
|
|
277
366
|
MIPSI_BC1F = 0x45000000,
|
278
367
|
MIPSI_BC1T = 0x45010000,
|
279
368
|
|
280
369
|
MIPSI_C_EQ_D = 0x46200032,
|
370
|
+
MIPSI_C_OLT_S = 0x46000034,
|
281
371
|
MIPSI_C_OLT_D = 0x46200034,
|
282
372
|
MIPSI_C_ULT_D = 0x46200035,
|
283
373
|
MIPSI_C_OLE_D = 0x46200036,
|
284
374
|
MIPSI_C_ULE_D = 0x46200037,
|
285
|
-
|
286
375
|
} MIPSIns;
|
287
376
|
|
288
377
|
#endif
|