diff options
author | Alexandru Dutu <alexandru.dutu@amd.com> | 2014-11-23 18:01:08 -0800 |
---|---|---|
committer | Alexandru Dutu <alexandru.dutu@amd.com> | 2014-11-23 18:01:08 -0800 |
commit | adbaa4dfde96d5aaf84adf0ae4989ef880aad726 (patch) | |
tree | d0f597266fc27c9b7bfa36312fee1de1fea6c450 /src/sim/system.cc | |
parent | 335514dfdc63c6f8e34cc172e2582ceca548a07c (diff) | |
download | gem5-adbaa4dfde96d5aaf84adf0ae4989ef880aad726.tar.xz |
kvm, x86: Adding support for SE mode execution
This patch adds methods in KvmCPU model to handle KVM exits caused by syscall
instructions and page faults. These types of exits will be encountered if
KvmCPU is run in SE mode.
Diffstat (limited to 'src/sim/system.cc')
-rw-r--r-- | src/sim/system.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sim/system.cc b/src/sim/system.cc index 1f63dbf33..c311d65b9 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -324,6 +324,16 @@ System::allocPhysPages(int npages) { Addr return_addr = pagePtr << PageShift; pagePtr += npages; + + Addr next_return_addr = pagePtr << PageShift; + + AddrRange m5opRange(0xffff0000, 0xffffffff); + if (m5opRange.contains(next_return_addr)) { + warn("Reached m5ops MMIO region\n"); + return_addr = 0xffffffff; + pagePtr = 0xffffffff >> PageShift; + } + if ((pagePtr << PageShift) > physmem.totalSize()) fatal("Out of memory, please increase size of physical memory."); return return_addr; |