You've already forked linux-packaging-mono
Imported Upstream version 4.2.0.179
Former-commit-id: 0a113cb3a6feb7873f632839b1307cc6033cd595
This commit is contained in:
committed by
Jo Shields
parent
183bba2c9a
commit
6992685b86
@@ -1,8 +1,12 @@
|
||||
if SUPPORT_SGEN
|
||||
sgen_dirs = sgen
|
||||
endif
|
||||
|
||||
if CROSS_COMPILING
|
||||
SUBDIRS = arch utils io-layer cil metadata mini dis profiler
|
||||
SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis profiler
|
||||
else
|
||||
if INSTALL_MONOTOUCH
|
||||
SUBDIRS = utils io-layer metadata arch mini profiler
|
||||
SUBDIRS = utils io-layer metadata arch $(sgen_dirs) mini profiler
|
||||
|
||||
monotouch-do-build:
|
||||
@list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
@@ -26,7 +30,7 @@ monotouch-do-clean:
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
|
||||
done;
|
||||
else
|
||||
SUBDIRS = arch utils io-layer cil metadata mini dis tests unit-tests benchmark profiler
|
||||
SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler
|
||||
endif
|
||||
endif
|
||||
DIST_SUBDIRS = arch utils io-layer cil metadata mini dis tests unit-tests benchmark profiler
|
||||
DIST_SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler
|
||||
|
||||
@@ -384,10 +384,11 @@ target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@CROSS_COMPILING_FALSE@@INSTALL_MONOTOUCH_FALSE@SUBDIRS = arch utils io-layer cil metadata mini dis tests unit-tests benchmark profiler
|
||||
@CROSS_COMPILING_FALSE@@INSTALL_MONOTOUCH_TRUE@SUBDIRS = utils io-layer metadata arch mini profiler
|
||||
@CROSS_COMPILING_TRUE@SUBDIRS = arch utils io-layer cil metadata mini dis profiler
|
||||
DIST_SUBDIRS = arch utils io-layer cil metadata mini dis tests unit-tests benchmark profiler
|
||||
@SUPPORT_SGEN_TRUE@sgen_dirs = sgen
|
||||
@CROSS_COMPILING_FALSE@@INSTALL_MONOTOUCH_FALSE@SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler
|
||||
@CROSS_COMPILING_FALSE@@INSTALL_MONOTOUCH_TRUE@SUBDIRS = utils io-layer metadata arch $(sgen_dirs) mini profiler
|
||||
@CROSS_COMPILING_TRUE@SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis profiler
|
||||
DIST_SUBDIRS = arch utils io-layer cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
@@ -1,17 +1,8 @@
|
||||
|
||||
AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
|
||||
noinst_LTLIBRARIES = libmonoarch-arm.la
|
||||
|
||||
BUILT_SOURCES = arm_dpimacros.h arm_vfpmacros.h
|
||||
|
||||
|
||||
libmonoarch_arm_la_SOURCES = $(BUILT_SOURCES) \
|
||||
arm-codegen.c \
|
||||
arm-codegen.h \
|
||||
arm-dis.c \
|
||||
arm-dis.h
|
||||
|
||||
arm_dpimacros.h: dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th
|
||||
(cd $(srcdir); bash ./dpiops.sh) > $@t
|
||||
mv $@t $@
|
||||
@@ -22,6 +13,6 @@ arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
EXTRA_DIST = dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \
|
||||
EXTRA_DIST = arm-codegen.h dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \
|
||||
vfpm_macros.th vfp_macros.th arm-vfp-codegen.h vfpops.sh
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__make_running_with_option = \
|
||||
@@ -81,7 +80,7 @@ host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = mono/arch/arm
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
|
||||
$(top_srcdir)/mkinstalldirs
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
@@ -97,16 +96,6 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
libmonoarch_arm_la_LIBADD =
|
||||
am__objects_1 =
|
||||
am_libmonoarch_arm_la_OBJECTS = $(am__objects_1) arm-codegen.lo \
|
||||
arm-dis.lo
|
||||
libmonoarch_arm_la_OBJECTS = $(am_libmonoarch_arm_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
@@ -119,50 +108,14 @@ AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
AM_V_CC = $(am__v_CC_@AM_V@)
|
||||
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
||||
am__v_CC_0 = @echo " CC " $@;
|
||||
am__v_CC_1 =
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = $(libmonoarch_arm_la_SOURCES)
|
||||
DIST_SOURCES = $(libmonoarch_arm_la_SOURCES)
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
@@ -373,23 +326,15 @@ top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
noinst_LTLIBRARIES = libmonoarch-arm.la
|
||||
BUILT_SOURCES = arm_dpimacros.h arm_vfpmacros.h
|
||||
libmonoarch_arm_la_SOURCES = $(BUILT_SOURCES) \
|
||||
arm-codegen.c \
|
||||
arm-codegen.h \
|
||||
arm-dis.c \
|
||||
arm-dis.h
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
EXTRA_DIST = dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \
|
||||
EXTRA_DIST = arm-codegen.h dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \
|
||||
vfpm_macros.th vfp_macros.th arm-vfp-codegen.h vfpops.sh
|
||||
|
||||
all: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
@@ -421,110 +366,17 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLTLIBRARIES:
|
||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||
@list='$(noinst_LTLIBRARIES)'; \
|
||||
locs=`for p in $$list; do echo $$p; done | \
|
||||
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||
sort -u`; \
|
||||
test -z "$$locs" || { \
|
||||
echo rm -f $${locs}; \
|
||||
rm -f $${locs}; \
|
||||
}
|
||||
|
||||
libmonoarch-arm.la: $(libmonoarch_arm_la_OBJECTS) $(libmonoarch_arm_la_DEPENDENCIES) $(EXTRA_libmonoarch_arm_la_DEPENDENCIES)
|
||||
$(AM_V_CCLD)$(LINK) $(libmonoarch_arm_la_OBJECTS) $(libmonoarch_arm_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm-codegen.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm-dis.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
TAGS: tags
|
||||
ctags CTAGS:
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-am
|
||||
cscope cscopelist:
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-am
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
@@ -559,7 +411,7 @@ distdir: $(DISTFILES)
|
||||
check-am: all-am
|
||||
check: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-am
|
||||
@@ -596,14 +448,11 @@ maintainer-clean-generic:
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
@@ -646,14 +495,12 @@ install-ps-am:
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
@@ -667,19 +514,17 @@ uninstall-am:
|
||||
|
||||
.MAKE: all check install install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
|
||||
ctags-am distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
|
||||
arm_dpimacros.h: dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th
|
||||
|
||||
@@ -1,193 +0,0 @@
|
||||
/*
|
||||
* arm-codegen.c
|
||||
* Copyright (c) 2002 Sergey Chaban <serge@wildwestsoftware.com>
|
||||
*/
|
||||
|
||||
#include "arm-codegen.h"
|
||||
|
||||
|
||||
arminstr_t* arm_emit_std_prologue(arminstr_t* p, unsigned int local_size) {
|
||||
ARM_MOV_REG_REG(p, ARMREG_IP, ARMREG_SP);
|
||||
|
||||
/* save args */
|
||||
ARM_PUSH(p, (1 << ARMREG_A1)
|
||||
| (1 << ARMREG_A2)
|
||||
| (1 << ARMREG_A3)
|
||||
| (1 << ARMREG_A4));
|
||||
|
||||
ARM_PUSH(p, (1U << ARMREG_IP) | (1U << ARMREG_LR));
|
||||
|
||||
if (local_size != 0) {
|
||||
if ((local_size & (~0xFF)) == 0) {
|
||||
ARM_SUB_REG_IMM8(p, ARMREG_SP, ARMREG_SP, local_size);
|
||||
} else {
|
||||
/* TODO: optimize */
|
||||
p = arm_mov_reg_imm32(p, ARMREG_IP, local_size);
|
||||
ARM_SUB_REG_REG(p, ARMREG_SP, ARMREG_SP, ARMREG_IP);
|
||||
ARM_ADD_REG_IMM8(p, ARMREG_IP, ARMREG_IP, sizeof(armword_t));
|
||||
ARM_LDR_REG_REG(p, ARMREG_IP, ARMREG_SP, ARMREG_IP);
|
||||
}
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
arminstr_t* arm_emit_std_epilogue(arminstr_t* p, unsigned int local_size, int pop_regs) {
|
||||
if (local_size != 0) {
|
||||
if ((local_size & (~0xFF)) == 0) {
|
||||
ARM_ADD_REG_IMM8(p, ARMREG_SP, ARMREG_SP, local_size);
|
||||
} else {
|
||||
/* TODO: optimize */
|
||||
p = arm_mov_reg_imm32(p, ARMREG_IP, local_size);
|
||||
ARM_ADD_REG_REG(p, ARMREG_SP, ARMREG_SP, ARMREG_IP);
|
||||
}
|
||||
}
|
||||
|
||||
ARM_POP_NWB(p, (1 << ARMREG_SP) | (1 << ARMREG_PC) | (pop_regs & 0x3FF));
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
/* do not push A1-A4 */
|
||||
arminstr_t* arm_emit_lean_prologue(arminstr_t* p, unsigned int local_size, int push_regs) {
|
||||
ARM_MOV_REG_REG(p, ARMREG_IP, ARMREG_SP);
|
||||
/* push_regs upto R10 will be saved */
|
||||
ARM_PUSH(p, (1U << ARMREG_IP) | (1U << ARMREG_LR) | (push_regs & 0x3FF));
|
||||
|
||||
if (local_size != 0) {
|
||||
if ((local_size & (~0xFF)) == 0) {
|
||||
ARM_SUB_REG_IMM8(p, ARMREG_SP, ARMREG_SP, local_size);
|
||||
} else {
|
||||
/* TODO: optimize */
|
||||
p = arm_mov_reg_imm32(p, ARMREG_IP, local_size);
|
||||
ARM_SUB_REG_REG(p, ARMREG_SP, ARMREG_SP, ARMREG_IP);
|
||||
/* restore IP from stack */
|
||||
ARM_ADD_REG_IMM8(p, ARMREG_IP, ARMREG_IP, sizeof(armword_t));
|
||||
ARM_LDR_REG_REG(p, ARMREG_IP, ARMREG_SP, ARMREG_IP);
|
||||
}
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
/* Bit scan forward. */
|
||||
int arm_bsf(armword_t val) {
|
||||
int i;
|
||||
armword_t mask;
|
||||
|
||||
if (val == 0) return 0;
|
||||
for (i=1, mask=1; (i <= 8 * sizeof(armword_t)) && ((val & mask) == 0); ++i, mask<<=1);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
int arm_is_power_of_2(armword_t val) {
|
||||
return ((val & (val-1)) == 0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* returns:
|
||||
* 1 - unable to represent
|
||||
* positive even number - MOV-representable
|
||||
* negative even number - MVN-representable
|
||||
*/
|
||||
int calc_arm_mov_const_shift(armword_t val) {
|
||||
armword_t mask;
|
||||
int res = 1, shift;
|
||||
|
||||
for (shift=0; shift < 32; shift+=2) {
|
||||
mask = ARM_SCALE(0xFF, shift);
|
||||
if ((val & (~mask)) == 0) {
|
||||
res = shift;
|
||||
break;
|
||||
}
|
||||
if (((~val) & (~mask)) == 0) {
|
||||
res = -shift - 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
int is_arm_const(armword_t val) {
|
||||
int res;
|
||||
res = arm_is_power_of_2(val);
|
||||
if (!res) {
|
||||
res = calc_arm_mov_const_shift(val);
|
||||
res = !(res < 0 || res == 1);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
int arm_const_steps(armword_t val) {
|
||||
int shift, steps = 0;
|
||||
|
||||
while (val != 0) {
|
||||
shift = (arm_bsf(val) - 1) & (~1);
|
||||
val &= ~(0xFF << shift);
|
||||
++steps;
|
||||
}
|
||||
return steps;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ARM cannot load arbitrary 32-bit constants directly into registers;
|
||||
* widely used work-around for this is to store constants into a
|
||||
* PC-addressable pool and use LDR instruction with PC-relative address
|
||||
* to load constant into register. Easiest way to implement this is to
|
||||
* embed constant inside a function with unconditional branch around it.
|
||||
* The above method is not used at the moment.
|
||||
* This routine always emits sequence of instructions to generate
|
||||
* requested constant. In the worst case it takes 4 instructions to
|
||||
* synthesize a constant - 1 MOV and 3 subsequent ORRs.
|
||||
*/
|
||||
arminstr_t* arm_mov_reg_imm32_cond(arminstr_t* p, int reg, armword_t imm32, int cond) {
|
||||
int mov_op;
|
||||
int step_op;
|
||||
int snip;
|
||||
int shift = calc_arm_mov_const_shift(imm32);
|
||||
|
||||
if ((shift & 0x80000001) != 1) {
|
||||
if (shift >= 0) {
|
||||
ARM_MOV_REG_IMM_COND(p, reg, imm32 >> ((32 - shift) & 31), shift, cond);
|
||||
} else {
|
||||
ARM_MVN_REG_IMM_COND(p, reg, (imm32 ^ (~0)) >> ((32 + 2 + shift) & 31), (-shift - 2), cond);
|
||||
}
|
||||
} else {
|
||||
mov_op = ARMOP_MOV;
|
||||
step_op = ARMOP_ORR;
|
||||
|
||||
if (arm_const_steps(imm32) > arm_const_steps(~imm32)) {
|
||||
mov_op = ARMOP_MVN;
|
||||
step_op = ARMOP_SUB;
|
||||
imm32 = ~imm32;
|
||||
}
|
||||
|
||||
shift = (arm_bsf(imm32) - 1) & (~1);
|
||||
snip = imm32 & (0xFF << shift);
|
||||
ARM_EMIT(p, ARM_DEF_DPI_IMM_COND((unsigned)snip >> shift, (32 - shift) >> 1, reg, 0, 0, mov_op, cond));
|
||||
|
||||
while ((imm32 ^= snip) != 0) {
|
||||
shift = (arm_bsf(imm32) - 1) & (~1);
|
||||
snip = imm32 & (0xFF << shift);
|
||||
ARM_EMIT(p, ARM_DEF_DPI_IMM_COND((unsigned)snip >> shift, (32 - shift) >> 1, reg, reg, 0, step_op, cond));
|
||||
}
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
arminstr_t* arm_mov_reg_imm32(arminstr_t* p, int reg, armword_t imm32) {
|
||||
return arm_mov_reg_imm32_cond(p, reg, imm32, ARMCOND_AL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -16,19 +16,6 @@ extern "C" {
|
||||
typedef unsigned int arminstr_t;
|
||||
typedef unsigned int armword_t;
|
||||
|
||||
/* Helper functions */
|
||||
arminstr_t* arm_emit_std_prologue(arminstr_t* p, unsigned int local_size);
|
||||
arminstr_t* arm_emit_std_epilogue(arminstr_t* p, unsigned int local_size, int pop_regs);
|
||||
arminstr_t* arm_emit_lean_prologue(arminstr_t* p, unsigned int local_size, int push_regs);
|
||||
int arm_is_power_of_2(armword_t val);
|
||||
int calc_arm_mov_const_shift(armword_t val);
|
||||
int is_arm_const(armword_t val);
|
||||
int arm_bsf(armword_t val);
|
||||
arminstr_t* arm_mov_reg_imm32_cond(arminstr_t* p, int reg, armword_t imm32, int cond);
|
||||
arminstr_t* arm_mov_reg_imm32(arminstr_t* p, int reg, armword_t imm32);
|
||||
|
||||
|
||||
|
||||
#if defined(_MSC_VER) || defined(__CC_NORCROFT)
|
||||
void __inline _arm_emit(arminstr_t** p, arminstr_t i) {**p = i; (*p)++;}
|
||||
# define ARM_EMIT(p, i) _arm_emit((arminstr_t**)&p, (arminstr_t)(i))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2002 Sergey Chaban <serge@wildwestsoftware.com>
|
||||
*/
|
||||
|
||||
#ifndef ARM_DIS
|
||||
#define ARM_DIS
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct _ARMDis {
|
||||
FILE* dis_out;
|
||||
void* pi;
|
||||
} ARMDis;
|
||||
|
||||
|
||||
void _armdis_set_output(FILE* f);
|
||||
FILE* _armdis_get_output(void);
|
||||
void _armdis_decode(void* p, int size);
|
||||
void _armdis_open(const char* dump_name);
|
||||
void _armdis_close(void);
|
||||
void _armdis_dump(const char* dump_name, void* p, int size);
|
||||
|
||||
|
||||
void armdis_init(ARMDis* dis);
|
||||
void armdis_set_output(ARMDis* dis, FILE* f);
|
||||
FILE* armdis_get_output(ARMDis* dis);
|
||||
void armdis_decode(ARMDis* dis, void* p, int size);
|
||||
void armdis_open(ARMDis* dis, const char* dump_name);
|
||||
void armdis_close(ARMDis* dis);
|
||||
void armdis_dump(ARMDis* dis, const char* dump_name, void* p, int size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ARM_DIS */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,299 +0,0 @@
|
||||
/* Macros for VFP ops, auto-generated from template */
|
||||
|
||||
|
||||
/* dyadic */
|
||||
|
||||
/* -- ADD -- */
|
||||
|
||||
|
||||
/* Fd := Fn ADD Fm */
|
||||
#define ARM_VFP_ADDD_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_DOUBLE,ARM_VFP_ADD,rd,rn,rm))
|
||||
#define ARM_VFP_ADDD(p, rd, rn, rm) \
|
||||
ARM_VFP_ADDD_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
#define ARM_VFP_ADDS_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_SINGLE,ARM_VFP_ADD,rd,rn,rm))
|
||||
#define ARM_VFP_ADDS(p, rd, rn, rm) \
|
||||
ARM_VFP_ADDS_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- SUB -- */
|
||||
|
||||
|
||||
/* Fd := Fn SUB Fm */
|
||||
#define ARM_VFP_SUBD_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_DOUBLE,ARM_VFP_SUB,rd,rn,rm))
|
||||
#define ARM_VFP_SUBD(p, rd, rn, rm) \
|
||||
ARM_VFP_SUBD_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
#define ARM_VFP_SUBS_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_SINGLE,ARM_VFP_SUB,rd,rn,rm))
|
||||
#define ARM_VFP_SUBS(p, rd, rn, rm) \
|
||||
ARM_VFP_SUBS_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- MUL -- */
|
||||
|
||||
|
||||
/* Fd := Fn MUL Fm */
|
||||
#define ARM_VFP_MULD_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_DOUBLE,ARM_VFP_MUL,rd,rn,rm))
|
||||
#define ARM_VFP_MULD(p, rd, rn, rm) \
|
||||
ARM_VFP_MULD_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
#define ARM_VFP_MULS_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_SINGLE,ARM_VFP_MUL,rd,rn,rm))
|
||||
#define ARM_VFP_MULS(p, rd, rn, rm) \
|
||||
ARM_VFP_MULS_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- NMUL -- */
|
||||
|
||||
|
||||
/* Fd := Fn NMUL Fm */
|
||||
#define ARM_VFP_NMULD_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_DOUBLE,ARM_VFP_NMUL,rd,rn,rm))
|
||||
#define ARM_VFP_NMULD(p, rd, rn, rm) \
|
||||
ARM_VFP_NMULD_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
#define ARM_VFP_NMULS_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_SINGLE,ARM_VFP_NMUL,rd,rn,rm))
|
||||
#define ARM_VFP_NMULS(p, rd, rn, rm) \
|
||||
ARM_VFP_NMULS_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- DIV -- */
|
||||
|
||||
|
||||
/* Fd := Fn DIV Fm */
|
||||
#define ARM_VFP_DIVD_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_DOUBLE,ARM_VFP_DIV,rd,rn,rm))
|
||||
#define ARM_VFP_DIVD(p, rd, rn, rm) \
|
||||
ARM_VFP_DIVD_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
#define ARM_VFP_DIVS_COND(p, rd, rn, rm, cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_DYADIC(cond,ARM_VFP_COPROC_SINGLE,ARM_VFP_DIV,rd,rn,rm))
|
||||
#define ARM_VFP_DIVS(p, rd, rn, rm) \
|
||||
ARM_VFP_DIVS_COND(p, rd, rn, rm, ARMCOND_AL)
|
||||
|
||||
|
||||
|
||||
/* monadic */
|
||||
|
||||
/* -- CPY -- */
|
||||
|
||||
|
||||
/* Fd := CPY Fm */
|
||||
|
||||
#define ARM_CPYD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_CPY,(dreg),(sreg)))
|
||||
#define ARM_CPYD(p,dreg,sreg) ARM_CPYD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_CPYS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_CPY,(dreg),(sreg)))
|
||||
#define ARM_CPYS(p,dreg,sreg) ARM_CPYS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- ABS -- */
|
||||
|
||||
|
||||
/* Fd := ABS Fm */
|
||||
|
||||
#define ARM_ABSD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_ABS,(dreg),(sreg)))
|
||||
#define ARM_ABSD(p,dreg,sreg) ARM_ABSD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_ABSS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_ABS,(dreg),(sreg)))
|
||||
#define ARM_ABSS(p,dreg,sreg) ARM_ABSS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- NEG -- */
|
||||
|
||||
|
||||
/* Fd := NEG Fm */
|
||||
|
||||
#define ARM_NEGD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_NEG,(dreg),(sreg)))
|
||||
#define ARM_NEGD(p,dreg,sreg) ARM_NEGD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_NEGS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_NEG,(dreg),(sreg)))
|
||||
#define ARM_NEGS(p,dreg,sreg) ARM_NEGS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- SQRT -- */
|
||||
|
||||
|
||||
/* Fd := SQRT Fm */
|
||||
|
||||
#define ARM_SQRTD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_SQRT,(dreg),(sreg)))
|
||||
#define ARM_SQRTD(p,dreg,sreg) ARM_SQRTD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_SQRTS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_SQRT,(dreg),(sreg)))
|
||||
#define ARM_SQRTS(p,dreg,sreg) ARM_SQRTS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- CMP -- */
|
||||
|
||||
|
||||
/* Fd := CMP Fm */
|
||||
|
||||
#define ARM_CMPD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_CMP,(dreg),(sreg)))
|
||||
#define ARM_CMPD(p,dreg,sreg) ARM_CMPD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_CMPS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_CMP,(dreg),(sreg)))
|
||||
#define ARM_CMPS(p,dreg,sreg) ARM_CMPS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- CMPE -- */
|
||||
|
||||
|
||||
/* Fd := CMPE Fm */
|
||||
|
||||
#define ARM_CMPED_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_CMPE,(dreg),(sreg)))
|
||||
#define ARM_CMPED(p,dreg,sreg) ARM_CMPED_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_CMPES_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_CMPE,(dreg),(sreg)))
|
||||
#define ARM_CMPES(p,dreg,sreg) ARM_CMPES_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- CMPZ -- */
|
||||
|
||||
|
||||
/* Fd := CMPZ Fm */
|
||||
|
||||
#define ARM_CMPZD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_CMPZ,(dreg),(sreg)))
|
||||
#define ARM_CMPZD(p,dreg,sreg) ARM_CMPZD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_CMPZS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_CMPZ,(dreg),(sreg)))
|
||||
#define ARM_CMPZS(p,dreg,sreg) ARM_CMPZS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- CMPEZ -- */
|
||||
|
||||
|
||||
/* Fd := CMPEZ Fm */
|
||||
|
||||
#define ARM_CMPEZD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_CMPEZ,(dreg),(sreg)))
|
||||
#define ARM_CMPEZD(p,dreg,sreg) ARM_CMPEZD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_CMPEZS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_CMPEZ,(dreg),(sreg)))
|
||||
#define ARM_CMPEZS(p,dreg,sreg) ARM_CMPEZS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- CVT -- */
|
||||
|
||||
|
||||
/* Fd := CVT Fm */
|
||||
|
||||
#define ARM_CVTD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_CVT,(dreg),(sreg)))
|
||||
#define ARM_CVTD(p,dreg,sreg) ARM_CVTD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_CVTS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_CVT,(dreg),(sreg)))
|
||||
#define ARM_CVTS(p,dreg,sreg) ARM_CVTS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- UITO -- */
|
||||
|
||||
|
||||
/* Fd := UITO Fm */
|
||||
|
||||
#define ARM_UITOD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_UITO,(dreg),(sreg)))
|
||||
#define ARM_UITOD(p,dreg,sreg) ARM_UITOD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_UITOS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_UITO,(dreg),(sreg)))
|
||||
#define ARM_UITOS(p,dreg,sreg) ARM_UITOS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- SITO -- */
|
||||
|
||||
|
||||
/* Fd := SITO Fm */
|
||||
|
||||
#define ARM_SITOD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_SITO,(dreg),(sreg)))
|
||||
#define ARM_SITOD(p,dreg,sreg) ARM_SITOD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_SITOS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_SITO,(dreg),(sreg)))
|
||||
#define ARM_SITOS(p,dreg,sreg) ARM_SITOS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- TOUI -- */
|
||||
|
||||
|
||||
/* Fd := TOUI Fm */
|
||||
|
||||
#define ARM_TOUID_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_TOUI,(dreg),(sreg)))
|
||||
#define ARM_TOUID(p,dreg,sreg) ARM_TOUID_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_TOUIS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_TOUI,(dreg),(sreg)))
|
||||
#define ARM_TOUIS(p,dreg,sreg) ARM_TOUIS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- TOSI -- */
|
||||
|
||||
|
||||
/* Fd := TOSI Fm */
|
||||
|
||||
#define ARM_TOSID_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_TOSI,(dreg),(sreg)))
|
||||
#define ARM_TOSID(p,dreg,sreg) ARM_TOSID_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_TOSIS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_TOSI,(dreg),(sreg)))
|
||||
#define ARM_TOSIS(p,dreg,sreg) ARM_TOSIS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- TOUIZ -- */
|
||||
|
||||
|
||||
/* Fd := TOUIZ Fm */
|
||||
|
||||
#define ARM_TOUIZD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_TOUIZ,(dreg),(sreg)))
|
||||
#define ARM_TOUIZD(p,dreg,sreg) ARM_TOUIZD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_TOUIZS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_TOUIZ,(dreg),(sreg)))
|
||||
#define ARM_TOUIZS(p,dreg,sreg) ARM_TOUIZS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
/* -- TOSIZ -- */
|
||||
|
||||
|
||||
/* Fd := TOSIZ Fm */
|
||||
|
||||
#define ARM_TOSIZD_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_DOUBLE,ARM_VFP_TOSIZ,(dreg),(sreg)))
|
||||
#define ARM_TOSIZD(p,dreg,sreg) ARM_TOSIZD_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
#define ARM_TOSIZS_COND(p,dreg,sreg,cond) \
|
||||
ARM_EMIT((p), ARM_DEF_VFP_MONADIC((cond),ARM_VFP_COPROC_SINGLE,ARM_VFP_TOSIZ,(dreg),(sreg)))
|
||||
#define ARM_TOSIZS(p,dreg,sreg) ARM_TOSIZS_COND(p,dreg,sreg,ARMCOND_AL)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* end generated */
|
||||
|
||||
@@ -242,6 +242,14 @@ typedef struct {
|
||||
char r2 : 4;
|
||||
} RRF_Format_3;
|
||||
|
||||
typedef struct {
|
||||
short op;
|
||||
char m3 : 4;
|
||||
char m4 : 4;
|
||||
char r1 : 4;
|
||||
char r2 : 4;
|
||||
} RRF_Format_4;
|
||||
|
||||
typedef struct {
|
||||
char op;
|
||||
char r1 : 4;
|
||||
@@ -502,6 +510,8 @@ typedef struct {
|
||||
|
||||
#define S390_RRF_3(c,opc,g1,g2,k4,g3) s390_emit32(c, (opc << 16 | (g3) << 12 | (k4) << 8 | (g1) << 4 | g2))
|
||||
|
||||
#define S390_RRF_4(c,opc,g1,m3,g2,m4) s390_emit32(c, (opc << 16 | (m3) << 12 | (m4) << 8 | (g1) << 4 | g2))
|
||||
|
||||
#define S390_RX(c,opc,g1,n2,s2,p2) s390_emit32(c, (opc << 24 | (g1) << 20 | (n2) << 16 | (s2) << 12 | ((p2) & 0xfff)))
|
||||
|
||||
#define S390_RXE(c,opc,g1,n2,s2,p2) do \
|
||||
@@ -614,6 +624,14 @@ typedef struct {
|
||||
(opc & 0xff))); \
|
||||
} while (0)
|
||||
|
||||
#define S390_SIY_1(c,opc,d1,b1,i2) do \
|
||||
{ \
|
||||
s390_emit16(c, ((opc & 0xff00) | i2)); \
|
||||
s390_emit32(c, ((b1) << 28 | (((d1) & 0xfff) << 16) | \
|
||||
((((d1) & 0xff000) >> 12) << 8) | \
|
||||
(opc & 0xff))); \
|
||||
} while (0)
|
||||
|
||||
#define S390_S(c,opc,s2,p2) s390_emit32(c, (opc << 16 | (s2) << 12 | ((p2) & 0xfff)))
|
||||
|
||||
#define S390_SS_1(c,opc,ln,s1,p1,s2,p2) do \
|
||||
@@ -691,19 +709,20 @@ typedef struct {
|
||||
#define s390_algfr(c, r1, r2) S390_RRE(c, 0xb91a, r1, r2)
|
||||
#define s390_alghsik(c, r, v) S390_RIE_1(c, 0xecd8, r, v)
|
||||
#define s390_algr(c, r1, r2) S390_RRE(c, 0xb90a, r1, r2)
|
||||
#define s390_algsi(c, r, v) S390_SIY(c, 0xeb7e, r, v)
|
||||
#define s390_algsi(c, d1, b1, i2) S390_SIY_1(c, 0xeb7e, d1, b1, i2)
|
||||
#define s390_alhhhr(c, r1, r2, r3) S390_RRF_1(c, 0xb9ca, r1, r2, r3)
|
||||
#define s390_alhhlr(c, r1, r2, r3) S390_RRF_1(c, 0xb9da, r1, r2, r3)
|
||||
#define s390_alhsik(c, r, v) S390_RIE_1(c, 0xecda, r, v)
|
||||
#define s390_alr(c, r1, r2) S390_RR(c, 0x1e, r1, r2)
|
||||
#define s390_alrk(c, r1, r2) S390_RRF(c, 0xb9fa, r1, r2)
|
||||
#define s390_alsi(c, r, v) S390_SIY(c, 0xeb6e, r, v)
|
||||
#define s390_alsi(c, d1, b1, i2) S390_SIY_1(c, 0xeb6e, d1, b1, i2)
|
||||
#define s390_alsih(c, r, v) S390_RIL_1(c, 0xcca, r, v)
|
||||
#define s390_alsihn(c, r, v) S390_RIL_1(c, 0xccb, r, v)
|
||||
#define s390_aly(c, r, x, b, d) S390_RXY(c, 0xe35e, r, x, b, d)
|
||||
#define s390_ar(c, r1, r2) S390_RR(c, 0x1a, r1, r2)
|
||||
#define s390_ark(c, r1, r2, r3) S390_RRF_1(c, 0xb9f8, r1, r2, r3)
|
||||
#define s390_asi(c, r, v) S390_SIY(c, 0xeb6a, r, v)
|
||||
#define s390_axbr(c, r1, r2) S390_RRE(c, 0xb34a, r1, r2)
|
||||
#define s390_ay(c, r, x, b, d) S390_RXY(c, 0xe35a, r, x, b, d)
|
||||
#define s390_basr(c, r1, r2) S390_RR(c, 0x0d, r1, r2)
|
||||
#define s390_bctr(c, r1, r2) S390_RR(c, 0x06, r1, r2)
|
||||
@@ -721,6 +740,8 @@ typedef struct {
|
||||
#define s390_cdbr(c, r1, r2) S390_RRE(c, 0xb319, r1, r2)
|
||||
#define s390_cdfbr(c, r1, r2) S390_RRE(c, 0xb395, r1, r2)
|
||||
#define s390_cdgbr(c, r1, r2) S390_RRE(c, 0xb3a5, r1, r2)
|
||||
#define s390_cdlfbr(c, r1, m3, r2, m4) S390_RRF_4(c, 0xb391, r1, m3, r2, m4)
|
||||
#define s390_cdlgbr(c, r1, m3, r2, m4) S390_RRF_4(c, 0xb3a1, r1, m3, r2, m4)
|
||||
#define s390_cds(c, r1, r2, b, d) S390_RX(c, 0xbb, r1, r2, b, d)
|
||||
#define s390_cdsg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb3e, r1, r2, b, d)
|
||||
#define s390_cdsy(c, r1, r2, b, d) S390_RSY_1(c, 0xeb31, r1, r2, b, d)
|
||||
@@ -745,12 +766,15 @@ typedef struct {
|
||||
#define s390_cij(c, r, i, m, d) S390_RIE_3(c, 0xec7e, r, i, m, d)
|
||||
#define s390_cit(c, r, i, m) S390_RIE_4(c, 0xec72, r, i m);
|
||||
#define s390_cl(c, r, x, b, d) S390_RX(c, 0x55, r, x, b, d)
|
||||
#define s390_clfdbr(c, r1, m3, r2, m4) S390_RRF_4(c, 0xb39d, r1, m3, r2, m4)
|
||||
#define s390_clg(c, r, x, b, d) S390_RXY(c, 0xe321, r, x, b, d)
|
||||
#define s390_clgib(c, r, i, m, b, d) S390_RIS(c, 0xecfd, r, i, m, b, d)
|
||||
#define s390_clgij(c, r, i, b) S390_RIE_3(c, 0xec7d, r, i, m, d)
|
||||
#define s390_clgr(c, r1, r2) S390_RRE(c, 0xb921, r1, r2)
|
||||
#define s390_clgdbr(c, r1, m3, r2, m4) S390_RRF_4(c, 0xb3ad, r1, m3, r2, m4)
|
||||
#define s390_clgrj(c, r1, r2, m, v) S390_RIE_2(c, 0xec65, r1, r2, m, v)
|
||||
#define s390_clgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece5, r1, r2, m3, b, d)
|
||||
#define s390_cli(c, b, d, v) S390_SI(c, 0x95, b, d, v)
|
||||
#define s390_clib(c, r, i, m, b, d) S390_RIS(c, 0xecff, r, i, m, b, d)
|
||||
#define s390_clij(c, r, i, b) S390_RIE_3(c, 0xec7f, r, i, m, d)
|
||||
#define s390_clr(c, r1, r2) S390_RR(c, 0x15, r1, r2)
|
||||
@@ -766,6 +790,7 @@ typedef struct {
|
||||
#define s390_csg(c, r1, r2, b, d) S390_RSY_1(c, 0xeb30, r1, r2, b, d)
|
||||
#define s390_csst(c, d1, b1, d2, b2, r) S390_SSF(c, 0xc82, b1, d1, b2, d2, r)
|
||||
#define s390_csy(c, r1, r2, b, d) S390_RSY_1(c, 0xeb14, r1, r2, b, d)
|
||||
#define s390_cxgbr(c, r1, r2) S390_RRE(c, 0xb3a6, r1, r2)
|
||||
#define s390_ddbr(c, r1, r2) S390_RRE(c, 0xb31d, r1, r2)
|
||||
#define s390_debr(c, r1, r2) S390_RRE(c, 0xb30d, r1, r2)
|
||||
#define s390_didbr(c, r1, r2, m, r3) S390_RRF_3(c, 0xb35b, r1, r2, m, r3)
|
||||
@@ -839,6 +864,7 @@ typedef struct {
|
||||
#define s390_ldeb(c, r, x, b, d) S390_RXE(c, 0xed04, r, x, b, d)
|
||||
#define s390_ldebr(c, r1, r2) S390_RRE(c, 0xb304, r1, r2)
|
||||
#define s390_ldgr(c, r1, r2) S390_RRE(c, 0xb3c1, r1, r2)
|
||||
#define s390_ldxbr(c, r1, r2) S390_RRE(c, 0xb345, r1, r2)
|
||||
#define s390_ldr(c, r1, r2) S390_RR(c, 0x28, r1, r2)
|
||||
#define s390_le(c, f, x, b, d) S390_RX(c, 0x78, f, x, b, d)
|
||||
#define s390_ledbr(c, r1, r2) S390_RRE(c, 0xb344, r1, r2)
|
||||
@@ -907,6 +933,7 @@ typedef struct {
|
||||
#define s390_mvc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
|
||||
#define s390_mvcl(c, r1, r2) S390_RR(c, 0x0e, r1, r2)
|
||||
#define s390_mvcle(c, r1, r3, d2, b2) S390_RS_1(c, 0xa8, r1, r3, d2, b2)
|
||||
#define s390_mvi(c, b, d, v) S390_SI(c, 0x92, b, d, v)
|
||||
#define s390_n(c, r, x, b, d) S390_RX(c, 0x54, r, x, b, d)
|
||||
#define s390_nc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd4, l, b1, d1, b2, d2)
|
||||
#define s390_ng(c, r, x, b, d) S390_RXY(c, 0xe380, r, x, b, d)
|
||||
@@ -931,7 +958,7 @@ typedef struct {
|
||||
#define s390_oihl(c, r, v) S390_RI(c, 0xa59, r, v)
|
||||
#define s390_oilf(c, r, v) S390_RIL_1(c, 0xc0d, r, v)
|
||||
#define s390_oilh(c, r, v) S390_RI(c, 0xa5a, r, v)
|
||||
#define s390_oill(c, r, v) S390_RI(c, 0xa5b` r, v)
|
||||
#define s390_oill(c, r, v) S390_RI(c, 0xa5b, r, v)
|
||||
#define s390_oiy(c, b, d, v) S390_SIY(c, 0xeb56 b, d, v)
|
||||
#define s390_og(c, r, x, b, d) S390_RXY(c, 0xe381, r, x, b, d)
|
||||
#define s390_ogr(c, r1, r2) S390_RRE(c, 0xb981, r1, r2)
|
||||
@@ -988,6 +1015,11 @@ typedef struct {
|
||||
#define s390_sty(c, r, x, b, d) S390_RXY(c, 0xe350, r, x, b, d)
|
||||
#define s390_tcdb(c, r, x, b, d) S390_RXE(c, 0xed11, r, x, b, d)
|
||||
#define s390_tceb(c, r, x, b, d) S390_RXE(c, 0xed10, r, x, b, d)
|
||||
#define s390_tmhh(c, r, m) S390_RI(c, 0xa73, r, m)
|
||||
#define s390_tmhl(c, r, m) S390_RI(c, 0xa72, r, m)
|
||||
#define s390_tmlh(c, r, m) S390_RI(c, 0xa70, r, m)
|
||||
#define s390_tmll(c, r, m) S390_RI(c, 0xa71, r, m)
|
||||
#define s390_tm(c, b, d, v) S390_SI(c, 0x91, b, d, v)
|
||||
#define s390_x(c, r, x, b, d) S390_RX(c, 0x57, r, x, b, d)
|
||||
#define s390_xihf(c, r, v) S390_RIL_1(c, 0xc06, r, v)
|
||||
#define s390_xilf(c, r, v) S390_RIL_1(c, 0xc07, r, v)
|
||||
|
||||
@@ -312,4 +312,7 @@
|
||||
<opcode name="mono_jit_attach" input="Pop0" output="Push0" args="InlineNone" o1="0xF0" o2="0x11" flow="next" />
|
||||
<opcode name="mono_jit_detach" input="Pop0" output="Push0" args="InlineNone" o1="0xF0" o2="0x12" flow="next" />
|
||||
<opcode name="mono_jit_icall_addr" input="Pop0" output="PushI" args="InlineI" o1="0xF0" o2="0x13" flow="next" />
|
||||
<opcode name="mono_ldptr_int_req_flag" input="Pop0" output="PushI" args="InlineNone" o1="0xF0" o2="0x14" flow="next" />
|
||||
<opcode name="mono_ldptr_card_table" input="Pop0" output="PushI" args="InlineNone" o1="0xF0" o2="0x15" flow="next" />
|
||||
<opcode name="mono_ldptr_nursery_start" input="Pop0" output="PushI" args="InlineNone" o1="0xF0" o2="0x16" flow="next" />
|
||||
</opdesc>
|
||||
|
||||
@@ -305,14 +305,16 @@ OPDEF(CEE_MONO_SAVE_LMF, "mono_save_lmf", Pop0, Push0, InlineNone, X, 2, 0xF0, 0
|
||||
OPDEF(CEE_MONO_RESTORE_LMF, "mono_restore_lmf", Pop0, Push0, InlineNone, X, 2, 0xF0, 0x0A, NEXT)
|
||||
OPDEF(CEE_MONO_CLASSCONST, "mono_classconst", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0B, NEXT)
|
||||
OPDEF(CEE_MONO_NOT_TAKEN, "mono_not_taken", Pop0, Push0, InlineNone, X, 2, 0xF0, 0x0C, NEXT)
|
||||
/* The argument should be one of the TLS_KEY values defined in mono-tls.h */
|
||||
OPDEF(CEE_MONO_TLS, "mono_tls", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0D, NEXT)
|
||||
OPDEF(CEE_MONO_ICALL_ADDR, "mono_icall_addr", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0E, NEXT)
|
||||
OPDEF(CEE_MONO_DYN_CALL, "mono_dyn_call", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0F, NEXT)
|
||||
OPDEF(CEE_MONO_MEMORY_BARRIER, "mono_memory_barrier", Pop0, Push0, InlineI, X, 2, 0xF0, 0x10, NEXT)
|
||||
OPDEF(CEE_MONO_JIT_ATTACH, "mono_jit_attach", Pop0, Push0, InlineNone, X, 2, 0xF0, 0x11, NEXT)
|
||||
OPDEF(CEE_MONO_JIT_DETACH, "mono_jit_detach", Pop0, Push0, InlineNone, X, 2, 0xF0, 0x12, NEXT)
|
||||
OPDEF(CEE_MONO_JIT_ICALL_ADDR, "mono_jit_icall_addr", Pop0, Push0, InlineNone, X, 2, 0xF0, 0x13, NEXT)
|
||||
OPDEF(CEE_MONO_JIT_ICALL_ADDR, "mono_jit_icall_addr", Pop0, PushI, InlineI, X, 2, 0xF0, 0x13, NEXT)
|
||||
OPDEF(CEE_MONO_LDPTR_INT_REQ_FLAG, "mono_ldptr_int_req_flag", Pop0, PushI, InlineNone, X, 2, 0xF0, 0x14, NEXT)
|
||||
OPDEF(CEE_MONO_LDPTR_CARD_TABLE, "mono_ldptr_card_table", Pop0, PushI, InlineNone, X, 2, 0xF0, 0x15, NEXT)
|
||||
OPDEF(CEE_MONO_LDPTR_NURSERY_START, "mono_ldptr_nursery_start", Pop0, PushI, InlineNone, X, 2, 0xF0, 0x16, NEXT)
|
||||
#ifndef OPALIAS
|
||||
#define _MONO_CIL_OPALIAS_DEFINED_
|
||||
#define OPALIAS(a,s,r)
|
||||
|
||||
@@ -6,6 +6,7 @@ endif
|
||||
|
||||
if SUPPORT_SGEN
|
||||
metadata_lib=$(top_builddir)/mono/metadata/libmonoruntimesgen-static.la
|
||||
gc_lib=$(top_builddir)/mono/sgen/libmonosgen-static.la
|
||||
else
|
||||
metadata_lib=$(top_builddir)/mono/metadata/libmonoruntime-static.a
|
||||
gc_lib=$(LIBGC_STATIC_LIBS)
|
||||
@@ -13,10 +14,10 @@ endif
|
||||
|
||||
runtime_lib= \
|
||||
$(metadata_lib) \
|
||||
$(gc_lib) \
|
||||
$(top_builddir)/mono/io-layer/libwapi.la \
|
||||
$(top_builddir)/mono/utils/libmonoutils.la \
|
||||
$(GLIB_LIBS) $(LIBICONV) \
|
||||
$(gc_lib)
|
||||
$(GLIB_LIBS) $(LIBICONV)
|
||||
|
||||
if DISABLE_EXECUTABLES
|
||||
bin_PROGRAMS =
|
||||
|
||||
@@ -83,8 +83,7 @@ target_triplet = @target@
|
||||
@DISABLE_EXECUTABLES_FALSE@@DISABLE_LIBRARIES_FALSE@bin_PROGRAMS = monodis$(EXEEXT)
|
||||
subdir = mono/dis
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp ChangeLog \
|
||||
TODO
|
||||
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp ChangeLog
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
@@ -117,11 +116,11 @@ am_monodis_OBJECTS = dump.$(OBJEXT) main.$(OBJEXT) declsec.$(OBJEXT)
|
||||
monodis_OBJECTS = $(am_monodis_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
@SUPPORT_SGEN_FALSE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
|
||||
am__DEPENDENCIES_3 = $(metadata_lib) \
|
||||
@SUPPORT_SGEN_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/mono/sgen/libmonosgen-static.la
|
||||
am__DEPENDENCIES_3 = $(metadata_lib) $(am__DEPENDENCIES_2) \
|
||||
$(top_builddir)/mono/io-layer/libwapi.la \
|
||||
$(top_builddir)/mono/utils/libmonoutils.la \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_2)
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
monodis_DEPENDENCIES = libmonodis.a $(am__DEPENDENCIES_3) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
@@ -431,12 +430,13 @@ AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
@SUPPORT_SGEN_FALSE@metadata_lib = $(top_builddir)/mono/metadata/libmonoruntime-static.a
|
||||
@SUPPORT_SGEN_TRUE@metadata_lib = $(top_builddir)/mono/metadata/libmonoruntimesgen-static.la
|
||||
@SUPPORT_SGEN_FALSE@gc_lib = $(LIBGC_STATIC_LIBS)
|
||||
@SUPPORT_SGEN_TRUE@gc_lib = $(top_builddir)/mono/sgen/libmonosgen-static.la
|
||||
runtime_lib = \
|
||||
$(metadata_lib) \
|
||||
$(gc_lib) \
|
||||
$(top_builddir)/mono/io-layer/libwapi.la \
|
||||
$(top_builddir)/mono/utils/libmonoutils.la \
|
||||
$(GLIB_LIBS) $(LIBICONV) \
|
||||
$(gc_lib)
|
||||
$(GLIB_LIBS) $(LIBICONV)
|
||||
|
||||
noinst_LIBRARIES = libmonodis.a
|
||||
libmonodis_a_SOURCES = \
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
* Write test cases
|
||||
|
||||
Write test cases to stress test TypeSpec. This is done by
|
||||
creating arrays of various dimensions, sizes, and lower
|
||||
bounds.
|
||||
@@ -371,7 +371,6 @@ dump_table_property (MonoImage *m)
|
||||
for (i = 0; i < t->rows; i++){
|
||||
guint32 cols [MONO_PROPERTY_SIZE];
|
||||
char *type;
|
||||
int bsize;
|
||||
int prop_flags;
|
||||
|
||||
mono_metadata_decode_row (t, i, cols, MONO_PROPERTY_SIZE);
|
||||
@@ -385,7 +384,7 @@ dump_table_property (MonoImage *m)
|
||||
strcat (flags, "hasdefault ");
|
||||
|
||||
ptr = mono_metadata_blob_heap (m, cols [MONO_PROPERTY_TYPE]);
|
||||
bsize = mono_metadata_decode_blob_size (ptr, &ptr);
|
||||
/* bsize = */ mono_metadata_decode_blob_size (ptr, &ptr);
|
||||
/* ECMA claims 0x08 ... */
|
||||
if (*ptr != 0x28 && *ptr != 0x08)
|
||||
g_warning("incorrect signature in propert blob: 0x%x", *ptr);
|
||||
|
||||
@@ -1 +1 @@
|
||||
c19cf04398ba462b8f10983d53130b3b14963e61
|
||||
a78324d012f8f136f75fb2a059b6d53b0dc2b4b0
|
||||
@@ -626,16 +626,14 @@ dis_locals (MonoImage *m, MonoMethodHeader *mh, const char *ptr)
|
||||
unsigned char flags = *(const unsigned char *) ptr;
|
||||
unsigned char format = flags & METHOD_HEADER_FORMAT_MASK;
|
||||
guint16 fat_flags;
|
||||
guint32 local_var_sig_tok, max_stack, code_size, init_locals;
|
||||
int hsize;
|
||||
guint32 local_var_sig_tok, init_locals;
|
||||
|
||||
g_assert (format == METHOD_HEADER_FAT_FORMAT);
|
||||
fat_flags = read16 (ptr);
|
||||
ptr += 2;
|
||||
hsize = (fat_flags >> 12) & 0xf;
|
||||
max_stack = read16 (ptr);
|
||||
/* max_stack = read16 (ptr); */
|
||||
ptr += 2;
|
||||
code_size = read32 (ptr);
|
||||
/* code_size = read32 (ptr); */
|
||||
ptr += 4;
|
||||
local_var_sig_tok = read32 (ptr);
|
||||
ptr += 4;
|
||||
@@ -1602,15 +1600,14 @@ disassemble_file (const char *file)
|
||||
{
|
||||
MonoImageOpenStatus status;
|
||||
MonoImage *img;
|
||||
MonoAssembly *assembly;
|
||||
|
||||
|
||||
img = mono_image_open (file, &status);
|
||||
if (!img) {
|
||||
fprintf (stderr, "Error while trying to process %s\n", file);
|
||||
return;
|
||||
} else {
|
||||
assembly = mono_assembly_load_from_full (img, file, &status, FALSE);
|
||||
/* FIXME: is this call necessary? */
|
||||
mono_assembly_load_from_full (img, file, &status, FALSE);
|
||||
}
|
||||
|
||||
setup_filter (img);
|
||||
|
||||
@@ -28,7 +28,6 @@ OTHER_H = \
|
||||
semaphores.h \
|
||||
sockets.h \
|
||||
status.h \
|
||||
system.h \
|
||||
threads.h \
|
||||
timefuncs.h \
|
||||
types.h \
|
||||
@@ -83,8 +82,6 @@ OTHER_SRC = \
|
||||
socket-private.h \
|
||||
socket-wrappers.h \
|
||||
status.h \
|
||||
system.c \
|
||||
system.h \
|
||||
threads.h \
|
||||
thread-private.h \
|
||||
timefuncs.c \
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user