|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] arm: context switch virtual timer registers
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1341309149 -3600
# Node ID 1b7c5fbfbcdf146c9bc99b2ef768aea79dda28cf
# Parent 126681c08a6274e07861c455cf7d59d107b78296
arm: context switch virtual timer registers
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Acked-by: Tim Deegan <tim@xxxxxxx>
Committed-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
diff -r 126681c08a62 -r 1b7c5fbfbcdf xen/arch/arm/domain.c
--- a/xen/arch/arm/domain.c Tue Jul 03 10:52:28 2012 +0100
+++ b/xen/arch/arm/domain.c Tue Jul 03 10:52:29 2012 +0100
@@ -49,6 +49,11 @@ static void ctxt_switch_from(struct vcpu
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 *
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 -r 126681c08a62 -r 1b7c5fbfbcdf xen/include/asm-arm/cpregs.h
--- a/xen/include/asm-arm/cpregs.h Tue Jul 03 10:52:28 2012 +0100
+++ b/xen/include/asm-arm/cpregs.h Tue Jul 03 10:52:29 2012 +0100
@@ -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 -r 126681c08a62 -r 1b7c5fbfbcdf xen/include/asm-arm/domain.h
--- a/xen/include/asm-arm/domain.h Tue Jul 03 10:52:28 2012 +0100
+++ b/xen/include/asm-arm/domain.h Tue Jul 03 10:52:29 2012 +0100
@@ -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;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |