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