[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [XEN][POWERPC] Add Function to completely flush the I-Cache for a processor
# HG changeset patch # User Jimi Xenidis <jimix@xxxxxxxxxxxxxx> # Node ID 1c996041fcde13648b5447241ae2b34d885ff429 # Parent 24fd597879823265b4144f09a71128d9c636dc22 [XEN][POWERPC] Add Function to completely flush the I-Cache for a processor Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx> Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> --- xen/arch/powerpc/powerpc64/ppc970.c | 27 +++++++++++++++++++++++++++ xen/include/asm-powerpc/cache.h | 1 + 2 files changed, 28 insertions(+) diff -r 24fd59787982 -r 1c996041fcde xen/arch/powerpc/powerpc64/ppc970.c --- a/xen/arch/powerpc/powerpc64/ppc970.c Mon Oct 02 11:06:10 2006 -0400 +++ b/xen/arch/powerpc/powerpc64/ppc970.c Mon Oct 02 11:07:54 2006 -0400 @@ -39,10 +39,37 @@ struct cpu_caches cpu_caches = { .dline_size = 0x80, .log_dline_size = 7, .dlines_per_page = PAGE_SIZE >> 7, + .isize = (64 << 10), /* 64 KiB */ .iline_size = 0x80, .log_iline_size = 7, .ilines_per_page = PAGE_SIZE >> 7, }; + + +void cpu_flush_icache(void) +{ + union hid1 hid1; + ulong flags; + ulong ra; + + local_irq_save(flags); + + /* uses special processor mode that forces a real address match */ + hid1.word = mfhid1(); + hid1.bits.en_icbi = 1; + mthid1(hid1.word); + + for (ra = 0; ra < cpu_caches.isize; ra += cpu_caches.iline_size) + icbi(ra); + + sync(); + + hid1.bits.en_icbi = 0; + mthid1(hid1.word); + + local_irq_save(flags); +} + struct rma_settings { int log; diff -r 24fd59787982 -r 1c996041fcde xen/include/asm-powerpc/cache.h --- a/xen/include/asm-powerpc/cache.h Mon Oct 02 11:06:10 2006 -0400 +++ b/xen/include/asm-powerpc/cache.h Mon Oct 02 11:07:54 2006 -0400 @@ -70,4 +70,5 @@ struct cpu_caches { u32 ilines_per_page; }; extern struct cpu_caches cpu_caches; +extern void cpu_flush_icache(void); #endif _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |