Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/49755 )

Change subject: arch-x86: Stop using (read|set)IntReg.
......................................................................

arch-x86: Stop using (read|set)IntReg.

These accessors just translate a RegIndex x into a RegId(IntRegClass, x)
and then does (get|set)Reg. Instead, we can just do (get|set)Reg
directly, since all the integer register named constants are just RegIds
now.

Change-Id: I9e7551ed66a6979e83c745f2891c452ded1eff0e
---
M src/arch/x86/faults.cc
M src/arch/x86/isa.cc
M src/arch/x86/linux/fs_workload.cc
M src/arch/x86/linux/linux.hh
M src/arch/x86/linux/se_workload.cc
M src/arch/x86/nativetrace.cc
M src/arch/x86/process.cc
M src/arch/x86/pseudo_inst_abi.hh
M src/arch/x86/remote_gdb.cc
M src/cpu/kvm/x86_cpu.cc
10 files changed, 85 insertions(+), 83 deletions(-)



diff --git a/src/arch/x86/faults.cc b/src/arch/x86/faults.cc
index a53397d..e34004e 100644
--- a/src/arch/x86/faults.cc
+++ b/src/arch/x86/faults.cc
@@ -77,8 +77,8 @@
     } else {
         entry = extern_label_legacyModeInterrupt;
     }
-    tc->setIntReg(intRegMicro(1), vector);
-    tc->setIntReg(intRegMicro(7), pc);
+    tc->setReg(intRegMicro(1), vector);
+    tc->setReg(intRegMicro(7), pc);
     if (errorCode != (uint64_t)(-1)) {
         if (m5reg.mode == LongMode) {
             entry = extern_label_longModeInterruptWithError;
@@ -89,7 +89,7 @@
         // Software interrupts shouldn't have error codes. If one
         // does, there would need to be microcode to set it up.
         assert(!isSoft());
-        tc->setIntReg(intRegMicro(15), errorCode);
+        tc->setReg(intRegMicro(15), errorCode);
     }
     pcState.upc(romMicroPC(entry));
     pcState.nupc(romMicroPC(entry) + 1);
@@ -190,7 +190,7 @@
     DPRINTF(Faults, "Init interrupt.\n");
     // The otherwise unmodified integer registers should be set to 0.
     for (int index = 0; index < int_reg::NumArchRegs; index++) {
-        tc->setIntReg(index, 0);
+        tc->setReg(RegId(IntRegClass, index), (RegVal)0);
     }

     CR0 cr0 = tc->readMiscReg(MISCREG_CR0);
@@ -279,7 +279,7 @@
     // This value should be the family/model/stepping of the processor.
     // (page 418). It should be consistent with the value from CPUID, but
     // the actual value probably doesn't matter much.
-    tc->setIntReg(int_reg::Rdx, 0);
+    tc->setReg(int_reg::Rdx, (RegVal)0);

     tc->setMiscReg(MISCREG_DR0, 0);
     tc->setMiscReg(MISCREG_DR1, 0);
diff --git a/src/arch/x86/isa.cc b/src/arch/x86/isa.cc
index 769e4a3..ea09831 100644
--- a/src/arch/x86/isa.cc
+++ b/src/arch/x86/isa.cc
@@ -181,14 +181,16 @@
 ISA::copyRegsFrom(ThreadContext *src)
 {
     //copy int regs
-    for (int i = 0; i < int_reg::NumRegs; ++i)
-         tc->setIntRegFlat(i, src->readIntRegFlat(i));
+    for (int i = 0; i < int_reg::NumRegs; ++i) {
+        RegId reg(IntRegClass, i);
+        tc->setRegFlat(reg, tc->getRegFlat(reg));
+    }
     //copy float regs
     for (int i = 0; i < NumFloatRegs; ++i)
-         tc->setFloatRegFlat(i, src->readFloatRegFlat(i));
+        tc->setFloatRegFlat(i, src->readFloatRegFlat(i));
     //copy condition-code regs
     for (int i = 0; i < NUM_CCREGS; ++i)
-         tc->setCCRegFlat(i, src->readCCRegFlat(i));
+        tc->setCCRegFlat(i, src->readCCRegFlat(i));
     copyMiscRegs(src, tc);
     tc->pcState(src->pcState());
 }
diff --git a/src/arch/x86/linux/fs_workload.cc b/src/arch/x86/linux/fs_workload.cc
index 7b794e6..d30eca3 100644
--- a/src/arch/x86/linux/fs_workload.cc
+++ b/src/arch/x86/linux/fs_workload.cc
@@ -126,7 +126,7 @@
      * Pass the location of the real mode data structure to the kernel
      * using register %esi. We'll use %rsi which should be equivalent.
      */
-    system->threads[0]->setIntReg(int_reg::Rsi, realModeData);
+    system->threads[0]->setReg(int_reg::Rsi, realModeData);
 }

 } // namespace X86ISA
diff --git a/src/arch/x86/linux/linux.hh b/src/arch/x86/linux/linux.hh
index a411c73..dfb0760 100644
--- a/src/arch/x86/linux/linux.hh
+++ b/src/arch/x86/linux/linux.hh
@@ -71,7 +71,7 @@
         }

         if (stack)
-            ctc->setIntReg(X86ISA::int_reg::Rsp, stack);
+            ctc->setReg(X86ISA::int_reg::Rsp, stack);
     }

     class SyscallABI {};
@@ -91,7 +91,7 @@
         if (ret.suppressed() || ret.needsRetry())
             return;

-        tc->setIntReg(X86ISA::int_reg::Rax, ret.encodedValue());
+        tc->setReg(X86ISA::int_reg::Rax, ret.encodedValue());
     }
 };

diff --git a/src/arch/x86/linux/se_workload.cc b/src/arch/x86/linux/se_workload.cc
index 30c92c6..4e4459c 100644
--- a/src/arch/x86/linux/se_workload.cc
+++ b/src/arch/x86/linux/se_workload.cc
@@ -115,7 +115,7 @@
     // This will move into the base SEWorkload function at some point.
     process->Process::syscall(tc);

-    RegVal rax = tc->readIntReg(int_reg::Rax);
+    RegVal rax = tc->getReg(int_reg::Rax);
     if (dynamic_cast<X86_64Process *>(process)) {
         syscallDescs64.get(rax)->doSyscall(tc);
     } else if (auto *proc32 = dynamic_cast<I386Process *>(process)) {
diff --git a/src/arch/x86/nativetrace.cc b/src/arch/x86/nativetrace.cc
index 20ba545..0ced21c 100644
--- a/src/arch/x86/nativetrace.cc
+++ b/src/arch/x86/nativetrace.cc
@@ -71,22 +71,22 @@
 void
 X86NativeTrace::ThreadState::update(ThreadContext *tc)
 {
-    rax = tc->readIntReg(X86ISA::int_reg::Rax);
-    rcx = tc->readIntReg(X86ISA::int_reg::Rcx);
-    rdx = tc->readIntReg(X86ISA::int_reg::Rdx);
-    rbx = tc->readIntReg(X86ISA::int_reg::Rbx);
-    rsp = tc->readIntReg(X86ISA::int_reg::Rsp);
-    rbp = tc->readIntReg(X86ISA::int_reg::Rbp);
-    rsi = tc->readIntReg(X86ISA::int_reg::Rsi);
-    rdi = tc->readIntReg(X86ISA::int_reg::Rdi);
-    r8 = tc->readIntReg(X86ISA::int_reg::R8);
-    r9 = tc->readIntReg(X86ISA::int_reg::R9);
-    r10 = tc->readIntReg(X86ISA::int_reg::R10);
-    r11 = tc->readIntReg(X86ISA::int_reg::R11);
-    r12 = tc->readIntReg(X86ISA::int_reg::R12);
-    r13 = tc->readIntReg(X86ISA::int_reg::R13);
-    r14 = tc->readIntReg(X86ISA::int_reg::R14);
-    r15 = tc->readIntReg(X86ISA::int_reg::R15);
+    rax = tc->getReg(X86ISA::int_reg::Rax);
+    rcx = tc->getReg(X86ISA::int_reg::Rcx);
+    rdx = tc->getReg(X86ISA::int_reg::Rdx);
+    rbx = tc->getReg(X86ISA::int_reg::Rbx);
+    rsp = tc->getReg(X86ISA::int_reg::Rsp);
+    rbp = tc->getReg(X86ISA::int_reg::Rbp);
+    rsi = tc->getReg(X86ISA::int_reg::Rsi);
+    rdi = tc->getReg(X86ISA::int_reg::Rdi);
+    r8 = tc->getReg(X86ISA::int_reg::R8);
+    r9 = tc->getReg(X86ISA::int_reg::R9);
+    r10 = tc->getReg(X86ISA::int_reg::R10);
+    r11 = tc->getReg(X86ISA::int_reg::R11);
+    r12 = tc->getReg(X86ISA::int_reg::R12);
+    r13 = tc->getReg(X86ISA::int_reg::R13);
+    r14 = tc->getReg(X86ISA::int_reg::R14);
+    r15 = tc->getReg(X86ISA::int_reg::R15);
     rip = tc->pcState().npc();
     //This should be expanded if x87 registers are considered
     for (int i = 0; i < 8; i++)
diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc
index 7203c3d..391db0a 100644
--- a/src/arch/x86/process.cc
+++ b/src/arch/x86/process.cc
@@ -987,7 +987,7 @@

     ThreadContext *tc = system->threads[contextIds[0]];
     // Set the stack pointer register
-    tc->setIntReg(int_reg::Rsp, stack_min);
+    tc->setReg(int_reg::Rsp, stack_min);

// There doesn't need to be any segment base added in since we're dealing
     // with the flat segmentation model.
diff --git a/src/arch/x86/pseudo_inst_abi.hh b/src/arch/x86/pseudo_inst_abi.hh
index 386b8a4..05bf66f 100644
--- a/src/arch/x86/pseudo_inst_abi.hh
+++ b/src/arch/x86/pseudo_inst_abi.hh
@@ -59,7 +59,7 @@
         // This assumes that all pseudo ops have their return value set
// by the pseudo op instruction. This may need to be revisited if we
         // modify the pseudo op ABI in util/m5/m5op_x86.S
-        tc->setIntReg(X86ISA::int_reg::Rax, ret);
+        tc->setReg(X86ISA::int_reg::Rax, ret);
     }
 };

@@ -76,12 +76,12 @@

         using namespace X86ISA;

-        constexpr RegIndex int_reg_map[] = {
+        constexpr RegId int_reg_map[] = {
             int_reg::Rdi, int_reg::Rsi, int_reg::Rdx,
             int_reg::Rcx, int_reg::R8, int_reg::R9
         };

-        return tc->readIntReg(int_reg_map[state++]);
+        return tc->getReg(int_reg_map[state++]);
     }
 };

diff --git a/src/arch/x86/remote_gdb.cc b/src/arch/x86/remote_gdb.cc
index 5096e19..c643efb 100644
--- a/src/arch/x86/remote_gdb.cc
+++ b/src/arch/x86/remote_gdb.cc
@@ -125,22 +125,22 @@
 RemoteGDB::AMD64GdbRegCache::getRegs(ThreadContext *context)
 {
     DPRINTF(GDBAcc, "getRegs in remotegdb \n");
-    r.rax = context->readIntReg(int_reg::Rax);
-    r.rbx = context->readIntReg(int_reg::Rbx);
-    r.rcx = context->readIntReg(int_reg::Rcx);
-    r.rdx = context->readIntReg(int_reg::Rdx);
-    r.rsi = context->readIntReg(int_reg::Rsi);
-    r.rdi = context->readIntReg(int_reg::Rdi);
-    r.rbp = context->readIntReg(int_reg::Rbp);
-    r.rsp = context->readIntReg(int_reg::Rsp);
-    r.r8 = context->readIntReg(int_reg::R8);
-    r.r9 = context->readIntReg(int_reg::R9);
-    r.r10 = context->readIntReg(int_reg::R10);
-    r.r11 = context->readIntReg(int_reg::R11);
-    r.r12 = context->readIntReg(int_reg::R12);
-    r.r13 = context->readIntReg(int_reg::R13);
-    r.r14 = context->readIntReg(int_reg::R14);
-    r.r15 = context->readIntReg(int_reg::R15);
+    r.rax = context->getReg(int_reg::Rax);
+    r.rbx = context->getReg(int_reg::Rbx);
+    r.rcx = context->getReg(int_reg::Rcx);
+    r.rdx = context->getReg(int_reg::Rdx);
+    r.rsi = context->getReg(int_reg::Rsi);
+    r.rdi = context->getReg(int_reg::Rdi);
+    r.rbp = context->getReg(int_reg::Rbp);
+    r.rsp = context->getReg(int_reg::Rsp);
+    r.r8 = context->getReg(int_reg::R8);
+    r.r9 = context->getReg(int_reg::R9);
+    r.r10 = context->getReg(int_reg::R10);
+    r.r11 = context->getReg(int_reg::R11);
+    r.r12 = context->getReg(int_reg::R12);
+    r.r13 = context->getReg(int_reg::R13);
+    r.r14 = context->getReg(int_reg::R14);
+    r.r15 = context->getReg(int_reg::R15);
     r.rip = context->pcState().pc();
     r.eflags = context->readMiscRegNoEffect(MISCREG_RFLAGS);
     r.cs = context->readMiscRegNoEffect(MISCREG_CS);
@@ -155,14 +155,14 @@
 RemoteGDB::X86GdbRegCache::getRegs(ThreadContext *context)
 {
     DPRINTF(GDBAcc, "getRegs in remotegdb \n");
-    r.eax = context->readIntReg(int_reg::Rax);
-    r.ecx = context->readIntReg(int_reg::Rcx);
-    r.edx = context->readIntReg(int_reg::Rdx);
-    r.ebx = context->readIntReg(int_reg::Rbx);
-    r.esp = context->readIntReg(int_reg::Rsp);
-    r.ebp = context->readIntReg(int_reg::Rbp);
-    r.esi = context->readIntReg(int_reg::Rsi);
-    r.edi = context->readIntReg(int_reg::Rdi);
+    r.eax = context->getReg(int_reg::Rax);
+    r.ecx = context->getReg(int_reg::Rcx);
+    r.edx = context->getReg(int_reg::Rdx);
+    r.ebx = context->getReg(int_reg::Rbx);
+    r.esp = context->getReg(int_reg::Rsp);
+    r.ebp = context->getReg(int_reg::Rbp);
+    r.esi = context->getReg(int_reg::Rsi);
+    r.edi = context->getReg(int_reg::Rdi);
     r.eip = context->pcState().pc();
     r.eflags = context->readMiscRegNoEffect(MISCREG_RFLAGS);
     r.cs = context->readMiscRegNoEffect(MISCREG_CS);
@@ -177,22 +177,22 @@
 RemoteGDB::AMD64GdbRegCache::setRegs(ThreadContext *context) const
 {
     DPRINTF(GDBAcc, "setRegs in remotegdb \n");
-    context->setIntReg(int_reg::Rax, r.rax);
-    context->setIntReg(int_reg::Rbx, r.rbx);
-    context->setIntReg(int_reg::Rcx, r.rcx);
-    context->setIntReg(int_reg::Rdx, r.rdx);
-    context->setIntReg(int_reg::Rsi, r.rsi);
-    context->setIntReg(int_reg::Rdi, r.rdi);
-    context->setIntReg(int_reg::Rbp, r.rbp);
-    context->setIntReg(int_reg::Rsp, r.rsp);
-    context->setIntReg(int_reg::R8, r.r8);
-    context->setIntReg(int_reg::R9, r.r9);
-    context->setIntReg(int_reg::R10, r.r10);
-    context->setIntReg(int_reg::R11, r.r11);
-    context->setIntReg(int_reg::R12, r.r12);
-    context->setIntReg(int_reg::R13, r.r13);
-    context->setIntReg(int_reg::R14, r.r14);
-    context->setIntReg(int_reg::R15, r.r15);
+    context->setReg(int_reg::Rax, r.rax);
+    context->setReg(int_reg::Rbx, r.rbx);
+    context->setReg(int_reg::Rcx, r.rcx);
+    context->setReg(int_reg::Rdx, r.rdx);
+    context->setReg(int_reg::Rsi, r.rsi);
+    context->setReg(int_reg::Rdi, r.rdi);
+    context->setReg(int_reg::Rbp, r.rbp);
+    context->setReg(int_reg::Rsp, r.rsp);
+    context->setReg(int_reg::R8, r.r8);
+    context->setReg(int_reg::R9, r.r9);
+    context->setReg(int_reg::R10, r.r10);
+    context->setReg(int_reg::R11, r.r11);
+    context->setReg(int_reg::R12, r.r12);
+    context->setReg(int_reg::R13, r.r13);
+    context->setReg(int_reg::R14, r.r14);
+    context->setReg(int_reg::R15, r.r15);
     context->pcState(r.rip);
     context->setMiscReg(MISCREG_RFLAGS, r.eflags);
     if (r.cs != context->readMiscRegNoEffect(MISCREG_CS))
@@ -213,14 +213,14 @@
 RemoteGDB::X86GdbRegCache::setRegs(ThreadContext *context) const
 {
     DPRINTF(GDBAcc, "setRegs in remotegdb \n");
-    context->setIntReg(int_reg::Rax, r.eax);
-    context->setIntReg(int_reg::Rcx, r.ecx);
-    context->setIntReg(int_reg::Rdx, r.edx);
-    context->setIntReg(int_reg::Rbx, r.ebx);
-    context->setIntReg(int_reg::Rsp, r.esp);
-    context->setIntReg(int_reg::Rbp, r.ebp);
-    context->setIntReg(int_reg::Rsi, r.esi);
-    context->setIntReg(int_reg::Rdi, r.edi);
+    context->setReg(int_reg::Rax, r.eax);
+    context->setReg(int_reg::Rcx, r.ecx);
+    context->setReg(int_reg::Rdx, r.edx);
+    context->setReg(int_reg::Rbx, r.ebx);
+    context->setReg(int_reg::Rsp, r.esp);
+    context->setReg(int_reg::Rbp, r.ebp);
+    context->setReg(int_reg::Rsi, r.esi);
+    context->setReg(int_reg::Rdi, r.edi);
     context->pcState(r.eip);
     context->setMiscReg(MISCREG_RFLAGS, r.eflags);
     if (r.cs != context->readMiscRegNoEffect(MISCREG_CS))
diff --git a/src/cpu/kvm/x86_cpu.cc b/src/cpu/kvm/x86_cpu.cc
index c36f6d8..f6fa25e 100644
--- a/src/cpu/kvm/x86_cpu.cc
+++ b/src/cpu/kvm/x86_cpu.cc
@@ -696,7 +696,7 @@
 {
     struct kvm_regs regs;

-#define APPLY_IREG(kreg, mreg) regs.kreg = tc->readIntReg(mreg)
+#define APPLY_IREG(kreg, mreg) regs.kreg = tc->getReg(mreg)
     FOREACH_IREG();
 #undef APPLY_IREG

@@ -979,7 +979,7 @@
 X86KvmCPU::updateThreadContextRegs(const struct kvm_regs &regs,
                                    const struct kvm_sregs &sregs)
 {
-#define APPLY_IREG(kreg, mreg) tc->setIntReg(mreg, regs.kreg)
+#define APPLY_IREG(kreg, mreg) tc->setReg(mreg, regs.kreg)

     FOREACH_IREG();


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/49755
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I9e7551ed66a6979e83c745f2891c452ded1eff0e
Gerrit-Change-Number: 49755
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to