mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 10:05:29 +00:00
Necessary changes to support nanoMIPS on Linux. Part 1/4 - VEX changes Patch by Aleksandar Rikalo, Dimitrije Nikolic, Tamara Vlahovic and Aleksandra Karadzic. nanoMIPS architecture in brief Designed for embedded devices, nanoMIPS is a variable lengths instruction set architecture (ISA) offering high performance in substantially reduced code size. The nanoMIPS ISA combines recoded and new 16-, 32-, and 48-bit instructions to achieve an ideal balance of performance and code density. It incorporates all MIPS32 instructions and architecture modules including MIPS DSP and MIPS MT, as well as new instructions for advanced code size reduction. nanoMIPS is supported in release 6 of the MIPS architecture. It is first implemented in the new MIPS I7200 multi-threaded multi-core processor series. Compiler support is included in the MIPS GNU-based development tools. Related KDE issue: #400872.
216 lines
6.6 KiB
Makefile
216 lines
6.6 KiB
Makefile
# VEX/Makefile is generated from this file at configure-time.
|
|
|
|
include $(top_srcdir)/Makefile.all.am
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Headers, etc
|
|
#----------------------------------------------------------------------------
|
|
|
|
EXTRA_DIST = \
|
|
HACKING.README \
|
|
LICENSE.README \
|
|
LICENSE.GPL \
|
|
auxprogs/genoffsets.c
|
|
|
|
pkginclude_HEADERS = \
|
|
pub/libvex.h \
|
|
pub/libvex_basictypes.h \
|
|
pub/libvex_emnote.h \
|
|
pub/libvex_guest_offsets.h \
|
|
pub/libvex_guest_x86.h \
|
|
pub/libvex_guest_amd64.h \
|
|
pub/libvex_guest_ppc32.h \
|
|
pub/libvex_guest_ppc64.h \
|
|
pub/libvex_guest_arm.h \
|
|
pub/libvex_guest_arm64.h \
|
|
pub/libvex_guest_s390x.h \
|
|
pub/libvex_guest_mips32.h \
|
|
pub/libvex_guest_mips64.h \
|
|
pub/libvex_s390x_common.h \
|
|
pub/libvex_ir.h \
|
|
pub/libvex_trc_values.h \
|
|
pub/libvex_inner.h
|
|
# libvex_inner.h is special: it is a public header for valgrind core,
|
|
# but should not be used by the end user
|
|
|
|
noinst_HEADERS = \
|
|
priv/main_globals.h \
|
|
priv/main_util.h \
|
|
priv/ir_match.h \
|
|
priv/ir_opt.h \
|
|
priv/guest_generic_bb_to_IR.h \
|
|
priv/guest_generic_x87.h \
|
|
priv/guest_x86_defs.h \
|
|
priv/guest_amd64_defs.h \
|
|
priv/guest_ppc_defs.h \
|
|
priv/guest_arm_defs.h \
|
|
priv/guest_arm64_defs.h \
|
|
priv/guest_s390_defs.h \
|
|
priv/guest_mips_defs.h \
|
|
priv/mips_defs.h \
|
|
priv/guest_nanomips_defs.h \
|
|
priv/host_generic_regs.h \
|
|
priv/host_generic_simd64.h \
|
|
priv/host_generic_simd128.h \
|
|
priv/host_generic_simd256.h \
|
|
priv/host_generic_maddf.h \
|
|
priv/host_x86_defs.h \
|
|
priv/host_amd64_defs.h \
|
|
priv/host_ppc_defs.h \
|
|
priv/host_arm_defs.h \
|
|
priv/host_arm64_defs.h \
|
|
priv/host_s390_defs.h \
|
|
priv/s390_disasm.h \
|
|
priv/s390_defs.h \
|
|
priv/host_mips_defs.h \
|
|
priv/host_nanomips_defs.h \
|
|
priv/common_nanomips_defs.h
|
|
|
|
BUILT_SOURCES = pub/libvex_guest_offsets.h
|
|
CLEANFILES = pub/libvex_guest_offsets.h
|
|
|
|
if COMPILER_IS_CLANG
|
|
CFLAGS_FOR_GENOFFSETS = $(CFLAGS) -no-integrated-as
|
|
else
|
|
CFLAGS_FOR_GENOFFSETS = $(CFLAGS)
|
|
endif
|
|
|
|
# for VEX building, use the LTO versions, in case they differ from non lto versions
|
|
AR = ${LTO_AR}
|
|
RANLIB = ${LTO_RANLIB}
|
|
|
|
# This is very uggerly. Need to sed out both "xyzzyN" and
|
|
# "xyzzy$N" since gcc on different targets emits the constants
|
|
# differently -- with a leading $ on x86/amd64 but none on ppc32/64.
|
|
# ICC also emits the constants differently with a leading # #define
|
|
pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \
|
|
pub/libvex_basictypes.h \
|
|
pub/libvex_guest_x86.h \
|
|
pub/libvex_guest_amd64.h \
|
|
pub/libvex_guest_ppc32.h \
|
|
pub/libvex_guest_ppc64.h \
|
|
pub/libvex_guest_arm.h \
|
|
pub/libvex_guest_arm64.h \
|
|
pub/libvex_guest_s390x.h \
|
|
pub/libvex_guest_mips32.h \
|
|
pub/libvex_guest_mips64.h
|
|
rm -f auxprogs/genoffsets.s
|
|
$(mkdir_p) auxprogs pub
|
|
$(CC) $(CFLAGS_FOR_GENOFFSETS) \
|
|
$(LIBVEX_CFLAGS_NO_LTO) \
|
|
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
|
|
-O -S -o auxprogs/genoffsets.s \
|
|
$(srcdir)/auxprogs/genoffsets.c
|
|
grep xyzzy auxprogs/genoffsets.s | grep "^[# ]*#define" \
|
|
| sed "s/# #define/#define/g" \
|
|
| sed "s/xyzzy\\$$//g" \
|
|
| sed "s/xyzzy#//g" \
|
|
| sed "s/xyzzy//g" \
|
|
> pub/libvex_guest_offsets.h
|
|
rm -f auxprogs/genoffsets.s
|
|
|
|
#----------------------------------------------------------------------------
|
|
# libvex-<platform>-<os>.a : containing all VEX objects, including
|
|
# a main_main.o compiled in single arch (guest==host).
|
|
# libvexmultiarch-<platform>-<os>.a, only containing multiarch_main_main.o,
|
|
# which is main_main.c compiled so that any guest/host combination
|
|
# can be done at runtime.
|
|
#----------------------------------------------------------------------------
|
|
|
|
pkglib_LIBRARIES = libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \
|
|
libvexmultiarch-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a
|
|
if VGCONF_HAVE_PLATFORM_SEC
|
|
pkglib_LIBRARIES += libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a \
|
|
libvexmultiarch-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
|
|
endif
|
|
|
|
LIBVEX_SOURCES_COMMON = \
|
|
priv/main_globals.c \
|
|
priv/main_main.c \
|
|
priv/main_util.c \
|
|
priv/ir_defs.c \
|
|
priv/ir_inject.c \
|
|
priv/ir_match.c \
|
|
priv/ir_opt.c \
|
|
priv/guest_generic_bb_to_IR.c \
|
|
priv/guest_generic_x87.c \
|
|
priv/guest_x86_helpers.c \
|
|
priv/guest_x86_toIR.c \
|
|
priv/guest_amd64_helpers.c \
|
|
priv/guest_amd64_toIR.c \
|
|
priv/guest_ppc_helpers.c \
|
|
priv/guest_ppc_toIR.c \
|
|
priv/guest_arm_helpers.c \
|
|
priv/guest_arm_toIR.c \
|
|
priv/guest_arm64_helpers.c \
|
|
priv/guest_arm64_toIR.c \
|
|
priv/guest_s390_helpers.c \
|
|
priv/guest_s390_toIR.c \
|
|
priv/guest_mips_helpers.c \
|
|
priv/guest_mipsdsp_toIR.c \
|
|
priv/guest_mips_toIR.c \
|
|
priv/guest_nanomips_helpers.c \
|
|
priv/guest_nanomips_toIR.c \
|
|
priv/host_generic_regs.c \
|
|
priv/host_generic_simd64.c \
|
|
priv/host_generic_simd128.c \
|
|
priv/host_generic_simd256.c \
|
|
priv/host_generic_maddf.c \
|
|
priv/host_generic_reg_alloc2.c \
|
|
priv/host_generic_reg_alloc3.c \
|
|
priv/host_x86_defs.c \
|
|
priv/host_x86_isel.c \
|
|
priv/host_amd64_defs.c \
|
|
priv/host_amd64_isel.c \
|
|
priv/host_ppc_defs.c \
|
|
priv/host_ppc_isel.c \
|
|
priv/host_arm_defs.c \
|
|
priv/host_arm_isel.c \
|
|
priv/host_arm64_defs.c \
|
|
priv/host_arm64_isel.c \
|
|
priv/host_s390_defs.c \
|
|
priv/host_s390_isel.c \
|
|
priv/s390_disasm.c \
|
|
priv/host_mips_defs.c \
|
|
priv/host_nanomips_defs.c \
|
|
priv/host_mips_isel.c \
|
|
priv/host_nanomips_isel.c
|
|
|
|
LIBVEXMULTIARCH_SOURCES = priv/multiarch_main_main.c
|
|
|
|
LIBVEX_CFLAGS_NO_LTO = \
|
|
-Wbad-function-cast \
|
|
-fstrict-aliasing
|
|
|
|
LIBVEX_CFLAGS = ${LTO_CFLAGS} \
|
|
${LIBVEX_CFLAGS_NO_LTO}
|
|
|
|
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = $(LIBVEX_SOURCES_COMMON)
|
|
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
|
|
$(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
|
|
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS = \
|
|
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
|
|
if VGCONF_HAVE_PLATFORM_SEC
|
|
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES = $(LIBVEX_SOURCES_COMMON)
|
|
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
|
|
$(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
|
|
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS = \
|
|
$(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
|
|
endif
|
|
|
|
libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES = \
|
|
$(LIBVEXMULTIARCH_SOURCES)
|
|
libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
|
|
$(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
|
|
libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS = \
|
|
$(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
|
|
if VGCONF_HAVE_PLATFORM_SEC
|
|
libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES = \
|
|
$(LIBVEXMULTIARCH_SOURCES)
|
|
libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
|
|
$(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
|
|
libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS = \
|
|
$(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
|
|
endif
|
|
|