arch: Make ThreadInfo::curThreadInfo virtual, protected.
authorGabe Black <gabeblack@google.com>
Wed, 19 Aug 2020 09:07:25 +0000 (02:07 -0700)
committerGabe Black <gabeblack@google.com>
Thu, 20 Aug 2020 05:43:14 +0000 (05:43 +0000)
Also remove it's Alpha centric implementation. All existing ISAs will
panic since they all define the guarding constant as false. Even if they
defined it as true, this function assumes that there is necessarily a misc
reg which can be read to find the current thread_info struct, and how
the contents of that register should be manipulated.

This code is already fairly fragile since it depends on things in the
Linux kernel having certain names and relationships with each other, but
that's a larger problem I don't want to fix right now.

Change-Id: Ic107793ebcd25ee25c4d3713c84c1d2b5209f1a3
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32921
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/generic/linux/threadinfo.hh

index 7bbf2dfdbaa89bfca38345a810fdf000db67bcd2..01271051cb076650c5f9f9b72d3b1ddcecd9670d 100644 (file)
@@ -71,22 +71,10 @@ class ThreadInfo
     ~ThreadInfo()
     {}
 
-    Addr
+    virtual Addr
     curThreadInfo()
     {
-        if (!TheISA::CurThreadInfoImplemented)
-            panic("curThreadInfo() not implemented for this ISA");
-
-        Addr addr = pcbb;
-        Addr sp;
-
-        if (!addr)
-            addr = tc->readMiscRegNoEffect(TheISA::CurThreadInfoReg);
-
-        PortProxy &p = tc->getPhysProxy();
-        p.readBlob(addr, &sp, sizeof(Addr));
-
-        return sp & ~ULL(0x3fff);
+        panic("curThreadInfo() not implemented.");
     }
 
     Addr