|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 11/21] arm: context switch virtual timer registers
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Acked-by: Tim Deegan <tim@xxxxxxx>
---
xen/arch/arm/domain.c | 10 ++++++++++
xen/include/asm-arm/cpregs.h | 3 +++
xen/include/asm-arm/domain.h | 5 +++++
3 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index a7b7d4a..2b5515d 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -49,6 +49,11 @@ static void ctxt_switch_from(struct vcpu *p)
p->arch.tpidruro = READ_CP32(TPIDRURO);
p->arch.tpidrprw = READ_CP32(TPIDRPRW);
+ /* Arch timer */
+ p->arch.cntvoff = READ_CP64(CNTVOFF);
+ p->arch.cntv_cval = READ_CP64(CNTV_CVAL);
+ p->arch.cntv_ctl = READ_CP32(CNTV_CTL);
+
/* XXX only save these if ThumbEE e.g. ID_PFR0.THUMB_EE_SUPPORT */
p->arch.teecr = READ_CP32(TEECR);
p->arch.teehbr = READ_CP32(TEEHBR);
@@ -128,6 +133,11 @@ static void ctxt_switch_to(struct vcpu *n)
WRITE_CP32(n->arch.mair1, MAIR1);
isb();
+ /* Arch timer */
+ WRITE_CP64(n->arch.cntvoff, CNTVOFF);
+ WRITE_CP64(n->arch.cntv_cval, CNTV_CVAL);
+ WRITE_CP32(n->arch.cntv_ctl, CNTV_CTL);
+
/* Control Registers */
WRITE_CP32(n->arch.actlr, ACTLR);
WRITE_CP32(n->arch.sctlr, SCTLR);
diff --git a/xen/include/asm-arm/cpregs.h b/xen/include/asm-arm/cpregs.h
index bd46942..34a9e93 100644
--- a/xen/include/asm-arm/cpregs.h
+++ b/xen/include/asm-arm/cpregs.h
@@ -238,10 +238,13 @@
#define CNTP_CTL p15,0,c14,c2,1 /* Physical Timer control register */
#define CNTVCT p15,1,c14 /* Time counter value + offset */
#define CNTP_CVAL p15,2,c14 /* Physical Timer comparator */
+#define CNTV_CVAL p15,3,c14 /* Virt. Timer comparator */
#define CNTVOFF p15,4,c14 /* Time counter offset */
#define CNTHCTL p15,4,c14,c1,0 /* Time counter hyp. control */
#define CNTHP_TVAL p15,4,c14,c2,0 /* Hyp. Timer value */
#define CNTHP_CTL p15,4,c14,c2,1 /* Hyp. Timer control register */
+#define CNTV_TVAL p15,0,c14,c3,0 /* Virt. Timer value */
+#define CNTV_CTL p15,0,c14,c3,1 /* Virt. TImer control register */
#define CNTHP_CVAL p15,6,c14 /* Hyp. Timer comparator */
/* CP15 CR15: Implementation Defined Registers */
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index 32deb52..230ea8c 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -111,6 +111,11 @@ struct arch_vcpu
uint32_t teecr, teehbr;
uint32_t joscr, jmcr;
+ /* Arch timers */
+ uint64_t cntvoff;
+ uint64_t cntv_cval;
+ uint32_t cntv_ctl;
+
/* CP 15 */
uint32_t csselr;
--
1.7.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |