45beec4a59f6ec6c71b6632665a628703bf45dd7
This test does two things. First, it makes sure that the "inst" call type detects that it's being requested in the command line arguments correctly. Second, it detects whether it's running in gem5 or not, really just detecting an environment variable which tells it whether it is. If it is, then it attempts to run the "sum" op which it expects to succeed and give the right answer. If not, it expects to get a SIGILL signal from the OS when it tries to execute the otherwise illegal instruction. It sets up a signal handler to catch it, and in that handler saves off information about what happened. It then uses siglongjmp to return to sanity (before the signal) and to examine what happened to see if the right instruction was attempted. It looks like, depending on the architecture, Linux will either set si_code to ILL_ILLOPC (illegal opcode) or ILL_ILLOPN (illegal operand). The later doesn't seem right since the entire instruction is illegal, not just some operand, but it is what it is and we need to handle either. The test then calls a small function, abi_verify, which takes the siginfo_t and does any abi specific verification. That includes extracting fields from the instruction if the instruction trigger the signal, or checking for architecture specific constants, etc. Also, to centralize setting the macro which lets a call type know that it's the default, the call types are now also responsible for setting up their own tweaks to the environment. Change-Id: I8710e39e20bd9c03b1375a2dccefb27bd6fe0c10 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27689 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Maintainer: Gabe Black <gabeblack@google.com> Tested-by: kokoro <noreply+kokoro@google.com>
This is the gem5 simulator. The main website can be found at http://www.gem5.org A good starting point is http://www.gem5.org/about, and for more information about building the simulator and getting started please see http://www.gem5.org/documentation and http://www.gem5.org/documentation/learning_gem5/introduction. To build gem5, you will need the following software: g++ or clang, Python (gem5 links in the Python interpreter), SCons, SWIG, zlib, m4, and lastly protobuf if you want trace capture and playback support. Please see http://www.gem5.org/documentation/general_docs/building for more details concerning the minimum versions of the aforementioned tools. Once you have all dependencies resolved, type 'scons build/<ARCH>/gem5.opt' where ARCH is one of ARM, NULL, MIPS, POWER, SPARC, or X86. This will build an optimized version of the gem5 binary (gem5.opt) for the the specified architecture. See http://www.gem5.org/documentation/general_docs/building for more details and options. The basic source release includes these subdirectories: - configs: example simulation configuration scripts - ext: less-common external packages needed to build gem5 - src: source code of the gem5 simulator - system: source for some optional system software for simulated systems - tests: regression tests - util: useful utility programs and files To run full-system simulations, you will need compiled system firmware (console and PALcode for Alpha), kernel binaries and one or more disk images. If you have questions, please send mail to gem5-users@gem5.org Enjoy using gem5 and please share your modifications and extensions.
Description