arch-arm, sim-se: Add support for TLS in clone
authorAndreas Sandberg <andreas.sandberg@arm.com>
Wed, 9 Jan 2019 16:20:20 +0000 (16:20 +0000)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Thu, 10 Jan 2019 17:55:42 +0000 (17:55 +0000)
Change-Id: I1f78dce05a48a2e3adfaf027cd38ab55507b9611
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/15437
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

src/arch/arm/linux/linux.hh

index e1f27a761ee1c9590f1b4cbd02211892731e4130..cff1e47fdc3d0c7cccca82d8e72f80072f2d2d89 100644 (file)
@@ -58,6 +58,12 @@ class ArmLinux : public Linux
               uint64_t stack, uint64_t tls)
     {
         ArmISA::copyRegs(ptc, ctc);
+
+        if (flags & TGT_CLONE_SETTLS) {
+            /* TPIDR_EL0 is architecturally mapped to TPIDRURW, so
+             * this works for both aarch32 and aarch64. */
+            ctc->setMiscReg(ArmISA::MISCREG_TPIDR_EL0, tls);
+        }
     }
 };