[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 |