#
14024:abe47b13653d |
|
02-May-2019 |
Gabe Black <gabeblack@google.com> |
arch, base, cpu, gpu, sim: Merge getMemProxy and getVirtProxy.
These two functions were performing the same function but had two different names for historical reasons. This change merges them together, keeping the getVirtProxy name to be consistent with the getPhysProxy method used to get a non-translating proxy port.
Change-Id: Idd83c6b899f9343795075b030ccbc723a79e52a4 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18581 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
|
#
14014:ce216ee5d886 |
|
21-May-2019 |
Ciro Santilli <ciro.santilli@arm.com> |
sim-se: add a release parameter to Process.py
Set the default release to that single value for all ISAs.
glibc has checks for the kernel version based on uname, and refuses to start any syscall emulation programs if those checks don't pass with error:
FATAL: kernel too old
The ideal solution to this problem is to actually implement all missing system calls for the required kernel version and bumping the release accordingly.
However, it is very hard to implement all missing syscalls and verify compliance.
Previously, we have simply bumped the version manually from time to time when major glibc versions started breaking.
This commit alleviates the problem in two ways.
Firstly, having a single kernel version for all versions means that it is easier to bump all versions at once.
Secondly, it makes it is possible to set the release with a parameter, which in turn can be set from the command line with:
se.py --param 'system.cpu[:].workload[:].release = "4.18.0"'
Change-Id: I9e3c31073bfe68735f7b0775c8e299aa62b98222 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17849 Maintainer: Brandon Potter <Brandon.Potter@amd.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Tested-by: kokoro <noreply+kokoro@google.com>
|
#
14010:0e1e887507c0 |
|
01-May-2019 |
Gabe Black <gabeblack@google.com> |
arch, base, dev, sim: Remove now unnecessary casts from PortProxy methods.
Change-Id: Ia73b2d86a10d02fa09c924a4571477bb5f200eb7 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18572 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
|
#
13995:5d459168a680 |
|
28-Aug-2018 |
Brandon Potter <brandon.potter@amd.com> |
sim-se: change syscall function signature
The system calls had four parameters. One of the parameters is ThreadContext and another is Process. The ThreadContext holds the value of the current process so the Process parameter is redundant since the system call functions already have indirect access.
With the old API, it is possible to call into the functions with the wrong supplied Process which could end up being a confusing error.
This patch removes the redundancy by forcing access through the ThreadContext field within each system call.
Change-Id: Ib43d3f65824f6d425260dfd9f67de1892b6e8b7c Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12299 Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Brandon Potter <Brandon.Potter@amd.com> Tested-by: kokoro <noreply+kokoro@google.com>
|
#
13984:7200989d951c |
|
03-May-2019 |
Gabe Black <gabeblack@google.com> |
arm: Add an object file loader for linux and freebsd.
Change-Id: Ie5fd187a4897aa608ffc12278b23d3ee8c0f323c Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18585 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
|
#
13678:1ad51de4cb42 |
|
24-Jan-2019 |
Ayaz Akram <yazakram@ucdavis.edu> |
sim-se: update the arm kernel version
This change is needed to run cpu tests with ARM binaries compiled with newer linux kernel headers
Change-Id: I6cbf132c38d4b18f971ee32272ddb6a5a791a625 Signed-off-by: Ayaz Akram <yazakram@ucdavis.edu> Reviewed-on: https://gem5-review.googlesource.com/c/15855 Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
|
#
13570:b6484720c6a9 |
|
18-Apr-2018 |
Brandon Potter <brandon.potter@amd.com> |
sim-se: add syscalls related to polling
Fix poll so that it will use the syscall retry capability instead of causing a blocking call.
Add the accept and wait4 system calls.
Add polling to read to remove deadlocks that occur in the event queue that are caused by blocking system calls.
Modify the write system call to return an error number in case of error.
Change-Id: I0b4091a2e41e4187ebf69d63e0088f988f37d5da Reviewed-on: https://gem5-review.googlesource.com/c/12115 Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com> Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>
|
#
13539:22b36f5a7a95 |
|
09-Jan-2019 |
Javier Setoain <javier.setoain@arm.com> |
sim-se, arch-arm: Add support for getdents64
Change-Id: Ib27950144d4c9802ffb842db98aec9e433ccbfc5 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Cc: Giacomo Travaglini <giacomo.travaglini@arm.com> Cc: Javier Setoain <javier.setoain@arm.com> Cc: Brandon Potter <Brandon.Potter@amd.com> Reviewed-on: https://gem5-review.googlesource.com/c/15438 Maintainer: Brandon Potter <Brandon.Potter@amd.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
|
#
13533:c19aabc6fe2b |
|
08-Jan-2019 |
Javier Setoain <javier.setoain@arm.com> |
arch-arm, sim-se: Wire up syscalls needed for pthreads
Change-Id: I8da5e3e0d7dc5d31ac82ed2045109d6d73cbf99d Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Cc: Giacomo Travaglini <giacomo.travaglini@arm.com> Cc: Javier Setoain <javier.setoain@arm.com> Cc: Brandon Potter <Brandon.Potter@amd.com> Reviewed-on: https://gem5-review.googlesource.com/c/15415 Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Brandon Potter <Brandon.Potter@amd.com>
|
#
13370:f6f338f61b0f |
|
26-Sep-2018 |
Ciro Santilli <ciro.santilli@arm.com> |
syscall_emul: implement arm openat
This is especially important because the Ubuntu 18.04 packaged arm-linux-gnueabihf-gcc uses the system call on the program initialization, which leads all programs to fail with:
fatal: syscall openat (#322) unimplemented.
Change-Id: I5596162ad19644df7b6d21f2a46acc07030001ae Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/13004 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
|
#
13226:77114f781d94 |
|
25-Sep-2018 |
Ciro Santilli <ciro.santilli@arm.com> |
syscall_emul: update arm uname release to 3.7.0+
Trying to compile an ARM C hello world with arm-linux-gnueabihf-gcc from Ubuntu 16.04 leads to a runtime failure with se.py:
FATAL: kernel too old
because the glibc tests if the kernel is at least 3.2.0, and gem5 was reporting 3.0.0.
Furthermore, it is hard to obtain such toolchain at all: for example crosstool-NG currently only allows for minimum kernels above 3.2.0.
3.7.0+ was chosen to match the aarch64 value, as it is likely that the level of support will be very similar.
This commit does not guarantee that full 3.7.0 is supported, but it is not likely that we had full 3.0.0 support previously either.
However, it is more likely that such support will be eventually achieved if users can at least try out their programs and implement the missing system calls as they are found.
Change-Id: I8df3763ae49788a6cb11cb0920e8202cd56b0f09 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/12986 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
|
#
11886:43b882cada33 |
|
27-Feb-2017 |
Brandon Potter <brandon.potter@amd.com> |
syscall_emul: [PATCH 15/22] add clone/execve for threading and multiprocess simulations
Modifies the clone system call and adds execve system call. Requires allowing processes to steal thread contexts from other processes in the same system object and the ability to detach pieces of process state (such as MemState) to allow dynamic sharing.
|
#
11851:824055fe6b30 |
|
09-Nov-2016 |
Brandon Potter <brandon.potter@amd.com> |
syscall_emul: [patch 5/22] remove LiveProcess class and use Process instead
The EIOProcess class was removed recently and it was the only other class which derived from Process. Since every Process invocation is also a LiveProcess invocation, it makes sense to simplify the organization by combining the fields from LiveProcess into Process.
|
#
11794:97eebddaae84 |
|
09-Nov-2016 |
Brandon Potter <brandon.potter@amd.com> |
syscall_emul: [patch 2/22] move SyscallDesc into its own .hh and .cc
The class was crammed into syscall_emul.hh which has tons of forward declarations and template definitions. To clean it up a bit, moved the class into separate files and commented the class with doxygen style comments. Also, provided some encapsulation by adding some accessors and a mutator.
The syscallreturn.hh file was renamed syscall_return.hh to make it consistent with other similarly named files in the src/sim directory.
The DPRINTF_SYSCALL macro was moved into its own header file with the include the Base and Verbose flags as well.
|
#
11793:ef606668d247 |
|
09-Nov-2016 |
Brandon Potter <brandon.potter@amd.com> |
style: [patch 1/22] use /r/3648/ to reorganize includes
|
#
11337:4e3bf51208ba |
|
13-Feb-2016 |
Michael LeBeane <Michael.Lebeane@amd.com> |
syscall_emul: Implement clock_getres() system call
This patch implements the clock_getres() system call for arm and x86 in linux SE mode.
|
#
10850:e4328e028961 |
|
26-May-2015 |
Giacomo Gabrielli <Giacomo.Gabrielli@arm.com> |
arm: Implement some missing syscalls (SE mode)
Adding a few syscalls that were previously considered unimplemented.
|
#
10831:fbdaa08aaa42 |
|
05-May-2015 |
Steve Reinhardt <steve.reinhardt@amd.com> |
syscall_emul: fix warn_once behavior
The current ignoreWarnOnceFunc doesn't really work as expected, since it will only generate one warning total, for whichever "warn-once" syscall is invoked first. This patch fixes that behavior by keeping a "warned" flag in the SyscallDesc object, allowing suitably flagged syscalls to warn exactly once per syscall.
|
#
10633:ae3b12c845b8 |
|
03-Jan-2015 |
mike upton <michaelupton@gmail.com> |
arm: Add unlinkat syscall implementation
added ARM aarch64 unlinkat syscall support, modeled on other <xxx>at syscalls. This gets all of the cpu2006 int workloads passing in SE mode on aarch64.
Committed by: Nilay Vaish <nilay@cs.wisc.edu>
|
#
10495:75d2f19fecce |
|
22-Oct-2014 |
Nilay Vaish <nilay@cs.wisc.edu> |
sim: revert 6709bbcf564d The identifier SYS_getdents is not available on Mac OS X. Therefore, its use results in compilation failure. It seems there is no straight forward way to implement the system call getdents using readdir() or similar C functions. Hence the commit 6709bbcf564d is being rolled back.
|
#
10484:6709bbcf564d |
|
20-Oct-2014 |
Michael Adler <Michael.Adler@intel.com> |
sim: implement getdents/getdents64 in user mode
Has been tested only for alpha. Committed by: Nilay Vaish <nilay@cs.wisc.edu>
|
#
10203:3b9e1fa3da47 |
|
17-Apr-2014 |
Ali Saidi <Ali.Saidi@ARM.com> |
sim, arm: implement more of the at variety syscalls
Needed for new AArch64 binaries
|
#
10050:d222a22f78e9 |
|
28-Jan-2014 |
Mitch Hayenga <mitch.hayenga+gem5@gmail.com> |
arm: Enable umask syscall in SE mode
Committed by: Nilay Vaish <nilay@cs.wisc.edu>
|
#
10037:5cac77888310 |
|
24-Jan-2014 |
ARM gem5 Developers |
arm: Add support for ARMv8 (AArch64 & AArch32)
Note: AArch64 and AArch32 interworking is not supported. If you use an AArch64 kernel you are restricted to AArch64 user-mode binaries. This will be addressed in a later patch.
Note: Virtualization is only supported in AArch32 mode. This will also be fixed in a later patch.
Contributors: Giacomo Gabrielli (TrustZone, LPAE, system-level AArch64, AArch64 NEON, validation) Thomas Grocutt (AArch32 Virtualization, AArch64 FP, validation) Mbou Eyole (AArch64 NEON, validation) Ali Saidi (AArch64 Linux support, code integration, validation) Edmund Grimley-Evans (AArch64 FP) William Wang (AArch64 Linux support) Rene De Jong (AArch64 Linux support, performance opt.) Matt Horsnell (AArch64 MP, validation) Matt Evans (device models, code integration, validation) Chris Adeniyi-Jones (AArch64 syscall-emulation) Prakash Ramrakhyani (validation) Dam Sunwoo (validation) Chander Sudanthi (validation) Stephan Diestelhorst (validation) Andreas Hansson (code integration, performance opt.) Eric Van Hensbergen (performance opt.) Gabe Black
|
#
9455:31afddc29cd4 |
|
08-Jan-2013 |
Mitch Hayenga <mitch.hayenga+gem5@gmail.com> |
arm: add access syscall for ARM SE mode
This patch adds the "access" syscall for ARM SE as required by some spec2006 benchmarks.
|
#
9146:a61fdbbc1d45 |
|
06-Aug-2012 |
Marc Orr <marc.orr@gmail.com> |
syscall emulation: Enabled getrlimit and getrusage for x86. Added/moved rlimit constants to base linux header file.
This patch is a revised version of Vince Weaver's earlier patch.
|
#
9075:b423daedefe5 |
|
29-Jun-2012 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Update version of linux we claim to be to 3.0.0.
Static binaries generated with new versions of libc complain that the kernel is too old otherwise.
|
#
8852:c744483edfcf |
|
24-Feb-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
MEM: Make port proxies use references rather than pointers
This patch is adding a clearer design intent to all objects that would not be complete without a port proxy by making the proxies members rathen than dynamically allocated. In essence, if NULL would not be a valid value for the proxy, then we avoid using a pointer to make this clear.
The same approach is used for the methods using these proxies, such as loadSections, that now use references rather than pointers to better reflect the fact that NULL would not be an acceptable value (in fact the code would break and that is how this patch started out).
Overall the concept of "using a reference to express unconditional composition where a NULL pointer is never valid" could be done on a much broader scale throughout the code base, but for now it is only done in the locations affected by the proxies.
|
#
8706:b1838faf3bcc |
|
17-Jan-2012 |
Andreas Hansson <andreas.hansson@arm.com> |
MEM: Add port proxies instead of non-structural ports
Port proxies are used to replace non-structural ports, and thus enable all ports in the system to correspond to a structural entity. This has the advantage of accessing memory through the normal memory subsystem and thus allowing any constellation of distributed memories, address maps, etc. Most accesses are done through the "system port" that is used for loading binaries, debugging etc. For the entities that belong to the CPU, e.g. threads and thread contexts, they wrap the CPU data port in a port proxy.
The following replacements are made: FunctionalPort > PortProxy TranslatingPort > SETranslatingPortProxy VirtualPort > FSTranslatingPortProxy
|
#
8601:af28085882dc |
|
23-Oct-2011 |
Steve Reinhardt <steve.reinhardt@amd.com> |
SE: move page allocation from PageTable to Process
PageTable supported an allocate() call that called back through the Process to allocate memory, but did not have a method to map addresses without allocating new pages. It makes more sense for Process to do the allocation, so this method was renamed allocateMem() and moved to Process, and uses a new map() call on PageTable.
The remaining uses of the process pointer in PageTable were only to get the name and the PID, so by passing these in directly in the constructor, we can make PageTable completely independent of Process.
|
#
8229:78bf55f23338 |
|
15-Apr-2011 |
Nathan Binkert <nate@binkert.org> |
includes: sort all includes
|
#
8216:70e61aa65759 |
|
10-Apr-2011 |
Ali Saidi <saidi@eecs.umich.edu> |
ARM: Fix checkpoint restoration in ARM_SE.
|
#
8215:1c89a6d235b9 |
|
10-Apr-2011 |
Ali Saidi <saidi@eecs.umich.edu> |
ARM: Get rid of some comments/todos that no longer apply.
|
#
8149:12bd3ad81f9d |
|
17-Mar-2011 |
Chris Emmons <Chris.Emmons@ARM.com> |
ARM: Add minimal ARM_SE support for m5threads.
Updated some of the assembly code sequences to use armv7 instructions and coprocessor 15 for storing the TLS pointer.
|
#
7441:be2acdfb8bdc |
|
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Fix SPEC2000 benchmarks in SE mode. With this patch all Spec2k benchmarks seem to run with atomic or timing mode simple CPUs. Fixed up some constants, handling of 64 bit arguments, and marked a few more syscalls ignoreFunc.
|
#
7416:e1a7a9f33a00 |
|
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: fix sizes of structs for ARM Linux
|
#
7414:0a05aa495903 |
|
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Fixup native trace support and add some v7/recent stack code
|
#
7411:b70c71ac7399 |
|
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Implement the getrusage syscall.
|
#
7096:e81026b9dfe0 |
|
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Allow ARM processes to start in Thumb mode.
|
#
6701:4842482e1bd1 |
|
30-Oct-2009 |
Gabe Black <gblack@eecs.umich.edu> |
Syscalls: Make system calls access arguments like a stack, not an array.
When accessing arguments for a syscall, the position of an argument depends on the policies of the ISA, how much space preceding arguments took up, and the "alignment" of the index for this particular argument into the number of possible storate locations. This change adjusts getSyscallArg to take its index parameter by reference instead of value and to adjust it to point to the possible location of the next argument on the stack, basically just after the current one. This way, the rules for the new argument can be applied locally without knowing about other arguments since those have already been taken into account implicitly.
All system calls have also been changed to reflect the new interface. In a number of cases this made the implementation clearer since it encourages arguments to be collected in one place in order and then used as necessary later, as opposed to scattering them throughout the function or using them in place in long expressions. It also discourages using getSyscallArg over and over to retrieve the same value when a temporary would do the job.
|
#
6640:30d92d2b66a1 |
|
16-Sep-2009 |
Vince Weaver <vince@csl.cornell.edu> |
Syscalls: Implement sysinfo() syscall.
|
#
6421:1aa0b4673699 |
|
29-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Fix an instruction in the cmpxchg kernel provided routine. The instruction was encoded as a load instead of the intended store.
|
#
6420:7d0e7547be5e |
|
29-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Get rid of a stray line in the set_tls handler.
|
#
6416:425703ea71c9 |
|
29-Jul-2009 |
Ali Saidi <saidi@eecs.umich.edu> |
ARM: Ignore the "times" system call.
|
#
6395:05f1d2cd7e9e |
|
27-Jul-2009 |
Ali Saidi <saidi@eecs.umich.edu> |
ARM: Fix fstat/fstat64 structs to match EABI definitions.
|
#
6393:1895318a1b26 |
|
27-Jul-2009 |
Ali Saidi <saidi@eecs.umich.edu> |
ARM: Handle register indexed system calls.
|
#
6236:9c0f2130478b |
|
10-Jun-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Hook in the mmap2 system call. Make ArmLinuxProcess handle 5,6 syscall params.
|
#
6235:33adfb8af4c0 |
|
10-Jun-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add a memory_barrier function to the "comm page". This function doesn't actually provide a memory barrier (I don't think they're implemented) and instead just returns.
|
#
6234:17e7ab512377 |
|
10-Jun-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add a cmpxchg implementation to the "comm page". This implementation does what it's supposed to (I think), but it's not atomic and doesn't have memory barriers like the kernel's version.
|
#
6233:014ae6da6c2a |
|
10-Jun-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement TLS. This is not tested.
|
#
6232:e0ea733d2105 |
|
10-Jun-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Make ArmLinuxProcess understand "ARM private" system calls.
|
#
6231:8130f3faa584 |
|
10-Jun-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Update the kernel version M5 reports to 2.6.16.19
|
#
6020:0647c8b31a99 |
|
06-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
Merge ARM into the head. ARM will compile but may not actually work.
|
#
6019:76890d8b28f5 |
|
05-Apr-2009 |
Stephen Hines <hines@cs.fsu.edu> |
arm: add ARM support to M5
|