From d0d29805f636a87a97ee90810209672cd8d0f3f6 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Tue, 24 Mar 2020 22:20:43 -0700 Subject: [PATCH] util: Convert the other architecture's m5 utility builds to scons. Because I don't have a canonical toolchain to set SPARC's defaults to, it will by default build for Linux instead of Solaris like it used to. This will make it hard to test, but without a compiler there's not much I can do. This also coincidentally brings the SPARC version more in line with the other variants which all target Linux. Change-Id: Ie19217e988782da124306160920f40ef168840e4 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27219 Maintainer: Bobby R. Bruce Tested-by: kokoro Reviewed-by: Daniel Carvalho --- util/m5/src/Makefile.arm | 95 ------------------- util/m5/src/{Makefile.sparc => arm/SConsopts} | 30 +----- util/m5/src/arm/m5op.S | 57 +++++++++++ util/m5/src/{Makefile.x86 => sparc/SConsopts} | 43 +-------- util/m5/src/{m5op_sparc.S => sparc/m5op.S} | 0 .../src/{Makefile.thumb => thumb/SConsopts} | 51 +--------- util/m5/src/{m5op_arm.S => thumb/m5op.S} | 6 -- util/m5/src/x86/SConsopts | 31 ++++++ util/m5/src/{m5op_x86.S => x86/m5op.S} | 0 9 files changed, 103 insertions(+), 210 deletions(-) delete mode 100644 util/m5/src/Makefile.arm rename util/m5/src/{Makefile.sparc => arm/SConsopts} (73%) create mode 100644 util/m5/src/arm/m5op.S rename util/m5/src/{Makefile.x86 => sparc/SConsopts} (64%) rename util/m5/src/{m5op_sparc.S => sparc/m5op.S} (100%) rename util/m5/src/{Makefile.thumb => thumb/SConsopts} (52%) rename util/m5/src/{m5op_arm.S => thumb/m5op.S} (96%) create mode 100644 util/m5/src/x86/SConsopts rename util/m5/src/{m5op_x86.S => x86/m5op.S} (100%) diff --git a/util/m5/src/Makefile.arm b/util/m5/src/Makefile.arm deleted file mode 100644 index 2588f09c6..000000000 --- a/util/m5/src/Makefile.arm +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright (c) 2010 ARM Limited -# All rights reserved. -# -# The license below extends only to copyright in the software and shall -# not be construed as granting a license to any other intellectual -# property including but not limited to intellectual property relating -# to a hardware implementation of the functionality of the software -# licensed hereunder. You may use the software subject to the license -# terms below provided that you ensure that this notice is replicated -# unmodified and in its entirety in all distributions of the software, -# modified or unmodified, in source code or in binary form. -# -# Copyright (c) 2005-2006 The Regents of The University of Michigan -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer; -# redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution; -# neither the name of the copyright holders nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -### If we are not compiling on an arm, we must use cross tools ### -ifneq ($(shell uname -m), armv7l) -CROSS_COMPILE?=arm-linux-gnueabi- -endif -CC=$(CROSS_COMPILE)gcc -AS=$(CROSS_COMPILE)as -LD=$(CROSS_COMPILE)ld -AR=$(CROSS_COMPILE)ar - -JC=javac -JR=jar -### JDK_PATH must be set to build gem5OpJni -#JDK_PATH=/path/to/jdk/version_number - -CFLAGS=-O2 -I $(JDK_PATH)/include/ -I $(JDK_PATH)/include/linux \ - -I../../../include -march=armv7-a -LDFLAGS=-L. -lm5 -static - -LIB_OBJS=m5op_arm.o m5_mmap.o -OBJS=m5.o -JNI_OBJS=m5op_arm.o jni_gem5Op.o -LUA_OBJS=lua_gem5Op.o m5op_arm.o m5_mmap.o - -### Need to install lua5.1 library to compile gem5OpLua.so -LUA_HEADER_INCLUDE=$(shell pkg-config --cflags lua51) \ - -I/usr/include/x86_64-linux-gnu - -all: libm5.a m5 - -%.o: %.S - $(CC) $(CFLAGS) -o $@ -c $< - -%.o: %.c - $(CC) $(CFLAGS) -o $@ -c $< - -m5: $(OBJS) libm5.a - $(CC) -o $@ $^ $(LDFLAGS) - -libm5.a: $(LIB_OBJS) - $(AR) rcs $@ $^ - -gem5OpJni: gem5OpJni.jar $(JNI_OBJS) - $(CC) --shared -o lib$@.so $(JNI_OBJS) - -gem5OpJni.jar: - $(JC) jni/gem5Op.java -h .; \ - $(JR) cvf $@ jni/*.class - -lua_gem5Op.o: lua_gem5Op.c - $(CC) $(CFLAGS) $(LUA_HEADER_INCLUDE) -o $@ -c $< -fPIC - -gem5OpLua.so: $(LUA_OBJS) - $(CC) $(CFLAGS) $^ -o $@ -shared - -clean: - rm -f *.o m5 libgem5OpJni.so gem5OpJni.jar jni/*.class libm5.a \ - jni_gem5Op.h gem5OpLua.so diff --git a/util/m5/src/Makefile.sparc b/util/m5/src/arm/SConsopts similarity index 73% rename from util/m5/src/Makefile.sparc rename to util/m5/src/arm/SConsopts index 242478436..fb46668fc 100644 --- a/util/m5/src/Makefile.sparc +++ b/util/m5/src/arm/SConsopts @@ -1,5 +1,4 @@ -# Copyright (c) 2005-2006 The Regents of The University of Michigan -# All rights reserved. +# Copyright 2020 Google, Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -24,27 +23,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -### If we are not compiling on an alpha, we must use cross tools ### -ifneq ($(shell uname -m), sun4v) -CROSS_COMPILE?=sparc64-sun-solaris2.10- -endif -CC=$(CROSS_COMPILE)gcc -AS=$(CROSS_COMPILE)as -LD=$(CROSS_COMPILE)ld +Import('*') -CFLAGS=-O2 -m64 -I../../../include -OBJS=m5.o m5op_sparc.o m5_mmap.o - -all: m5 - -%.o: %.S - $(CC) $(CFLAGS) -o $@ -c $< - -%.o: %.c - $(CC) $(CFLAGS) -o $@ -c $< - -m5: $(OBJS) - $(CC) -m64 -o $@ $(OBJS) - -clean: - rm -f *.o m5 +env['VARIANT'] = 'arm' +get_variant_opt('CROSS_COMPILE', 'arm-linux-gnueabihf-') +env.Append(CFLAGS='-march=armv7-a') diff --git a/util/m5/src/arm/m5op.S b/util/m5/src/arm/m5op.S new file mode 100644 index 000000000..3b18d272c --- /dev/null +++ b/util/m5/src/arm/m5op.S @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010, 2016 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * + * Copyright (c) 2003-2006 The Regents of The University of Michigan + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +.syntax unified + +#include + +.text + +.macro m5op_func name, func + .align 2 + .globl \name +\name: + .long 0xEE000110 | (\func << 16) + mov pc,lr +.endm + +.text +#define M5OP(name, func) m5op_func name, func + M5OP_FOREACH +#undef M5OP diff --git a/util/m5/src/Makefile.x86 b/util/m5/src/sparc/SConsopts similarity index 64% rename from util/m5/src/Makefile.x86 rename to util/m5/src/sparc/SConsopts index 59493ce3a..89b2db981 100644 --- a/util/m5/src/Makefile.x86 +++ b/util/m5/src/sparc/SConsopts @@ -1,5 +1,4 @@ -# Copyright (c) 2005-2006 The Regents of The University of Michigan -# All rights reserved. +# Copyright 2020 Google, Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -24,40 +23,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -CC=gcc -AS=as -LD=ld +Import('*') -CFLAGS?=-O2 -DM5OP_ADDR=0xFFFF0000 -I../../../include -OBJS=m5.o m5op_x86.o m5_mmap.o -LUA_HEADER_INCLUDE=$(shell pkg-config --cflags-only-I lua51) -LUA_OBJS=lua_gem5Op.opic m5op_x86.opic m5_mmap.opic - -all: m5 - -%.o: %.S - $(CC) $(CFLAGS) -o $@ -c $< - -%.o: %.c - $(CC) $(CFLAGS) -o $@ -c $< - -%.opic : %.S - $(CC) $(CFLAGS) -fPIC -o $@ -c $< - -%.opic : %.c - $(CC) $(CFLAGS) -fPIC -o $@ -c $< - -m5: $(OBJS) - $(CC) -o $@ $(OBJS) -no-pie - -m5op_x86.opic: m5op_x86.S - $(CC) $(CFLAGS) -DM5OP_PIC -fPIC -o $@ -c $< - -lua_gem5Op.opic: lua_gem5Op.c - $(CC) $(CFLAGS) $(LUA_HEADER_INCLUDE) -fPIC -o $@ -c $< - -gem5OpLua.so: $(LUA_OBJS) - $(CC) $(CFLAGS) -fPIC $^ -o $@ -shared - -clean: - rm -f *.o *.opic m5 gem5OpLua.so +env['VARIANT'] = 'sparc' +get_variant_opt('CROSS_COMPILE', 'sparc64-linux-gnu-') +env.Append(CFLAGS='-m64') diff --git a/util/m5/src/m5op_sparc.S b/util/m5/src/sparc/m5op.S similarity index 100% rename from util/m5/src/m5op_sparc.S rename to util/m5/src/sparc/m5op.S diff --git a/util/m5/src/Makefile.thumb b/util/m5/src/thumb/SConsopts similarity index 52% rename from util/m5/src/Makefile.thumb rename to util/m5/src/thumb/SConsopts index 1eb5b3d5d..ffa6c3730 100644 --- a/util/m5/src/Makefile.thumb +++ b/util/m5/src/thumb/SConsopts @@ -1,17 +1,4 @@ -# Copyright (c) 2010 ARM Limited -# All rights reserved. -# -# The license below extends only to copyright in the software and shall -# not be construed as granting a license to any other intellectual -# property including but not limited to intellectual property relating -# to a hardware implementation of the functionality of the software -# licensed hereunder. You may use the software subject to the license -# terms below provided that you ensure that this notice is replicated -# unmodified and in its entirety in all distributions of the software, -# modified or unmodified, in source code or in binary form. -# -# Copyright (c) 2005-2006 The Regents of The University of Michigan -# All rights reserved. +# Copyright 2020 Google, Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are @@ -36,36 +23,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -### If we are not compiling on an arm, we must use cross tools ### -ifneq ($(shell uname -m), arm) -CROSS_COMPILE?=arm-none-linux-gnueabi- -endif -CC=$(CROSS_COMPILE)gcc -AS=$(CROSS_COMPILE)as -LD=$(CROSS_COMPILE)ld -AR=$(CROSS_COMPILE)ar - -#CFLAGS=-O2 -march=armv7 -mthumb -I../../include -CFLAGS=-O2 -mthumb -I../../../include -LDFLAGS=-L. -lm5 - -OBJS=m5.o -LIB_OBJS=m5op_arm.o m5_mmap.o - -all: libm5.a m5 - -%.o: %.S - $(CC) $(CFLAGS) -o $@ -c $< - -%.o: %.c - $(CC) $(CFLAGS) -o $@ -c $< - -m5: $(OBJS) libm5.a - $(CC) -o $@ -march=armv7 -mthumb $(OBJS) $(LDFLAGS) - -libm5.a: $(LIB_OBJS) - $(AR) rcs $@ $^ - +Import('*') -clean: - rm -f *.o m5 libm5.a +env['VARIANT'] = 'thumb' +get_variant_opt('CROSS_COMPILE', 'arm-linux-gnueabihf-') +env.Append(CFLAGS=[ '-mthumb', '-march=armv7' ]) diff --git a/util/m5/src/m5op_arm.S b/util/m5/src/thumb/m5op.S similarity index 96% rename from util/m5/src/m5op_arm.S rename to util/m5/src/thumb/m5op.S index bd3bb4dc6..8aebf1053 100644 --- a/util/m5/src/m5op_arm.S +++ b/util/m5/src/thumb/m5op.S @@ -38,9 +38,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .syntax unified -#ifdef __thumb__ .thumb -#endif #include @@ -50,12 +48,8 @@ .align 2 .globl \name \name: -#ifdef __thumb__ .short 0xEE00 | \func .short 0x0110 -#else - .long 0xEE000110 | (\func << 16) -#endif mov pc,lr .endm diff --git a/util/m5/src/x86/SConsopts b/util/m5/src/x86/SConsopts new file mode 100644 index 000000000..8bfbe0a4f --- /dev/null +++ b/util/m5/src/x86/SConsopts @@ -0,0 +1,31 @@ +# Copyright 2020 Google, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Import('*') + +env['VARIANT'] = 'x86' +get_variant_opt('CROSS_COMPILE', '') +env.Append(CFLAGS='-DM5OP_ADDR=0xFFFF0000') +env.Append(ASFLAGS='-DM5OP_ADDR=0xFFFF0000') diff --git a/util/m5/src/m5op_x86.S b/util/m5/src/x86/m5op.S similarity index 100% rename from util/m5/src/m5op_x86.S rename to util/m5/src/x86/m5op.S -- 2.30.2