|
gem5
v21.2.1.1
|
#include "arch/x86/kvm/x86_cpu.hh"#include <linux/kvm.h>#include <algorithm>#include <cerrno>#include <memory>#include "arch/x86/cpuid.hh"#include "arch/x86/faults.hh"#include "arch/x86/interrupts.hh"#include "arch/x86/regs/int.hh"#include "arch/x86/regs/msr.hh"#include "arch/x86/utility.hh"#include "base/compiler.hh"#include "cpu/kvm/base.hh"#include "debug/Drain.hh"#include "debug/Kvm.hh"#include "debug/KvmContext.hh"#include "debug/KvmIO.hh"#include "debug/KvmInt.hh"Go to the source code of this file.
Classes | |
| struct | gem5::FXSave |
Namespaces | |
| gem5 | |
| Reference material can be found at the JEDEC website: UFS standard http://www.jedec.org/standards-documents/results/jesd220 UFS HCI specification http://www.jedec.org/standards-documents/results/jesd223. | |
Macros | |
| #define | MSR_TSC 0x10 |
| #define | IO_PCI_CONF_ADDR 0xCF8 |
| #define | IO_PCI_CONF_DATA_BASE 0xCFC |
| #define | SEG_SYS_TYPE_TSS_AVAILABLE 9 |
| #define | SEG_SYS_TYPE_TSS_BUSY 11 |
| #define | SEG_CS_TYPE_ACCESSED 9 |
| #define | SEG_CS_TYPE_READ_ACCESSED 11 |
| #define | SEG_TYPE_BIT_ACCESSED 1 |
| #define | FOREACH_IREG() |
| #define | FOREACH_SREG() |
| #define | FOREACH_DREG() |
| #define | FOREACH_SEGMENT() |
| #define | FOREACH_DTABLE() |
| #define | APPLY_IREG(kreg, mreg) inform("\t" # kreg ": 0x%llx\n", regs.kreg) |
| #define | APPLY_SREG(kreg, mreg) inform("\t" # kreg ": 0x%llx\n", sregs.kreg); |
| #define | APPLY_SEGMENT(kreg, idx) dumpKvm(# kreg, sregs.kreg); |
| #define | APPLY_DTABLE(kreg, idx) dumpKvm(# kreg, sregs.kreg); |
| #define | APPLY_IREG(kreg, mreg) regs.kreg = tc->readIntReg(mreg) |
| #define | APPLY_SREG(kreg, mreg) sregs.kreg = tc->readMiscRegNoEffect(mreg) |
| #define | APPLY_SEGMENT(kreg, idx) setKvmSegmentReg(tc, sregs.kreg, idx) |
| #define | APPLY_DTABLE(kreg, idx) setKvmDTableReg(tc, sregs.kreg, idx) |
| #define | APPLY_SEGMENT(kreg, idx) checkSeg(# kreg, idx + MISCREG_SEG_SEL_BASE, sregs.kreg, sregs) |
| #define | APPLY_IREG(kreg, mreg) tc->setIntReg(mreg, regs.kreg) |
| #define | APPLY_SREG(kreg, mreg) tc->setMiscRegNoEffect(mreg, sregs.kreg) |
| #define | APPLY_SEGMENT(kreg, idx) setContextSegment(tc, sregs.kreg, idx) |
| #define | APPLY_DTABLE(kreg, idx) setContextSegment(tc, sregs.kreg, idx) |
Functions | |
| template<typename Struct , typename Entry > | |
| static auto | gem5::newVarStruct (size_t entries) |
| static void | gem5::dumpKvm (const struct kvm_regs ®s) |
| static void | gem5::dumpKvm (const char *reg_name, const struct kvm_segment &seg) |
| static void | gem5::dumpKvm (const char *reg_name, const struct kvm_dtable &dtable) |
| static void | gem5::dumpKvm (const struct kvm_sregs &sregs) |
| static void | gem5::dumpFpuSpec (const struct FXSave &xs) |
| static void | gem5::dumpFpuSpec (const struct kvm_fpu &fpu) |
| template<typename T > | |
| static void | gem5::dumpFpuCommon (const T &fpu) |
| static void | gem5::dumpKvm (const struct kvm_fpu &fpu) |
| static void | gem5::dumpKvm (const struct kvm_xsave &xsave) |
| static void | gem5::dumpKvm (const struct kvm_msrs &msrs) |
| static void | gem5::dumpKvm (const struct kvm_xcrs ®s) |
| static void | gem5::dumpKvm (const struct kvm_vcpu_events &events) |
| static bool | gem5::isCanonicalAddress (uint64_t addr) |
| static void | gem5::checkSeg (const char *name, const int idx, const struct kvm_segment &seg, struct kvm_sregs sregs) |
| static void | gem5::setKvmSegmentReg (ThreadContext *tc, struct kvm_segment &kvm_seg, const int index) |
| static void | gem5::setKvmDTableReg (ThreadContext *tc, struct kvm_dtable &kvm_dtable, const int index) |
| static void | gem5::forceSegAccessed (struct kvm_segment &seg) |
| template<typename T > | |
| static void | gem5::updateKvmStateFPUCommon (ThreadContext *tc, T &fpu) |
| void | gem5::setContextSegment (ThreadContext *tc, const struct kvm_segment &kvm_seg, const int index) |
| void | gem5::setContextSegment (ThreadContext *tc, const struct kvm_dtable &kvm_dtable, const int index) |
| template<typename T > | |
| static void | gem5::updateThreadContextFPUCommon (ThreadContext *tc, const T &fpu) |
| static struct kvm_cpuid_entry2 | gem5::makeKvmCpuid (uint32_t function, uint32_t index, CpuidResult &result) |
| #define APPLY_DTABLE | ( | kreg, | |
| idx | |||
| ) | dumpKvm(# kreg, sregs.kreg); |
| #define APPLY_DTABLE | ( | kreg, | |
| idx | |||
| ) | setKvmDTableReg(tc, sregs.kreg, idx) |
| #define APPLY_DTABLE | ( | kreg, | |
| idx | |||
| ) | setContextSegment(tc, sregs.kreg, idx) |
| #define APPLY_IREG | ( | kreg, | |
| mreg | |||
| ) | inform("\t" # kreg ": 0x%llx\n", regs.kreg) |
| #define APPLY_IREG | ( | kreg, | |
| mreg | |||
| ) | regs.kreg = tc->readIntReg(mreg) |
| #define APPLY_IREG | ( | kreg, | |
| mreg | |||
| ) | tc->setIntReg(mreg, regs.kreg) |
| #define APPLY_SEGMENT | ( | kreg, | |
| idx | |||
| ) | dumpKvm(# kreg, sregs.kreg); |
| #define APPLY_SEGMENT | ( | kreg, | |
| idx | |||
| ) | setKvmSegmentReg(tc, sregs.kreg, idx) |
| #define APPLY_SEGMENT | ( | kreg, | |
| idx | |||
| ) | checkSeg(# kreg, idx + MISCREG_SEG_SEL_BASE, sregs.kreg, sregs) |
| #define APPLY_SEGMENT | ( | kreg, | |
| idx | |||
| ) | setContextSegment(tc, sregs.kreg, idx) |
| #define APPLY_SREG | ( | kreg, | |
| mreg | |||
| ) | inform("\t" # kreg ": 0x%llx\n", sregs.kreg); |
| #define APPLY_SREG | ( | kreg, | |
| mreg | |||
| ) | sregs.kreg = tc->readMiscRegNoEffect(mreg) |
| #define APPLY_SREG | ( | kreg, | |
| mreg | |||
| ) | tc->setMiscRegNoEffect(mreg, sregs.kreg) |
| #define FOREACH_DREG | ( | ) |
Definition at line 142 of file x86_cpu.cc.
| #define FOREACH_DTABLE | ( | ) |
Definition at line 164 of file x86_cpu.cc.
| #define FOREACH_IREG | ( | ) |
Definition at line 111 of file x86_cpu.cc.
| #define FOREACH_SEGMENT | ( | ) |
Definition at line 152 of file x86_cpu.cc.
| #define FOREACH_SREG | ( | ) |
Definition at line 131 of file x86_cpu.cc.
| #define IO_PCI_CONF_ADDR 0xCF8 |
Definition at line 58 of file x86_cpu.cc.
| #define IO_PCI_CONF_DATA_BASE 0xCFC |
Definition at line 59 of file x86_cpu.cc.
| #define MSR_TSC 0x10 |
Definition at line 56 of file x86_cpu.cc.
| #define SEG_CS_TYPE_ACCESSED 9 |
Definition at line 67 of file x86_cpu.cc.
| #define SEG_CS_TYPE_READ_ACCESSED 11 |
Definition at line 69 of file x86_cpu.cc.
| #define SEG_SYS_TYPE_TSS_AVAILABLE 9 |
Definition at line 62 of file x86_cpu.cc.
| #define SEG_SYS_TYPE_TSS_BUSY 11 |
Definition at line 64 of file x86_cpu.cc.
| #define SEG_TYPE_BIT_ACCESSED 1 |
Definition at line 73 of file x86_cpu.cc.