diff options
-rw-r--r-- | arch/sh/mm/Makefile_64 | 2 | ||||
-rw-r--r-- | arch/sh/mm/cache-sh5.c | 48 |
2 files changed, 1 insertions, 49 deletions
diff --git a/arch/sh/mm/Makefile_64 b/arch/sh/mm/Makefile_64 index 2863ffb7006d..66c39106d0a8 100644 --- a/arch/sh/mm/Makefile_64 +++ b/arch/sh/mm/Makefile_64 | |||
@@ -9,7 +9,7 @@ mmu-$(CONFIG_MMU) := fault_64.o ioremap_64.o tlbflush_64.o tlb-sh5.o \ | |||
9 | extable_64.o | 9 | extable_64.o |
10 | 10 | ||
11 | ifndef CONFIG_CACHE_OFF | 11 | ifndef CONFIG_CACHE_OFF |
12 | obj-y += cache-sh5.o | 12 | obj-y += cache-sh5.o flush-sh4.o |
13 | endif | 13 | endif |
14 | 14 | ||
15 | obj-y += $(mmu-y) | 15 | obj-y += $(mmu-y) |
diff --git a/arch/sh/mm/cache-sh5.c b/arch/sh/mm/cache-sh5.c index 3e2d7321b636..698113fce814 100644 --- a/arch/sh/mm/cache-sh5.c +++ b/arch/sh/mm/cache-sh5.c | |||
@@ -539,54 +539,6 @@ static void sh64_dcache_purge_user_range(struct mm_struct *mm, | |||
539 | sh64_dcache_purge_user_pages(mm, start, end); | 539 | sh64_dcache_purge_user_pages(mm, start, end); |
540 | } | 540 | } |
541 | } | 541 | } |
542 | |||
543 | /* | ||
544 | * Purge the range of addresses from the D-cache. | ||
545 | * | ||
546 | * The addresses lie in the superpage mapping. There's no harm if we | ||
547 | * overpurge at either end - just a small performance loss. | ||
548 | */ | ||
549 | void __flush_purge_region(void *start, int size) | ||
550 | { | ||
551 | unsigned long long ullend, addr, aligned_start; | ||
552 | |||
553 | aligned_start = (unsigned long long)(signed long long)(signed long) start; | ||
554 | addr = L1_CACHE_ALIGN(aligned_start); | ||
555 | ullend = (unsigned long long) (signed long long) (signed long) start + size; | ||
556 | |||
557 | while (addr <= ullend) { | ||
558 | __asm__ __volatile__ ("ocbp %0, 0" : : "r" (addr)); | ||
559 | addr += L1_CACHE_BYTES; | ||
560 | } | ||
561 | } | ||
562 | |||
563 | void __flush_wback_region(void *start, int size) | ||
564 | { | ||
565 | unsigned long long ullend, addr, aligned_start; | ||
566 | |||
567 | aligned_start = (unsigned long long)(signed long long)(signed long) start; | ||
568 | addr = L1_CACHE_ALIGN(aligned_start); | ||
569 | ullend = (unsigned long long) (signed long long) (signed long) start + size; | ||
570 | |||
571 | while (addr < ullend) { | ||
572 | __asm__ __volatile__ ("ocbwb %0, 0" : : "r" (addr)); | ||
573 | addr += L1_CACHE_BYTES; | ||
574 | } | ||
575 | } | ||
576 | |||
577 | void __flush_invalidate_region(void *start, int size) | ||
578 | { | ||
579 | unsigned long long ullend, addr, aligned_start; | ||
580 | |||
581 | aligned_start = (unsigned long long)(signed long long)(signed long) start; | ||
582 | addr = L1_CACHE_ALIGN(aligned_start); | ||
583 | ullend = (unsigned long long) (signed long long) (signed long) start + size; | ||
584 | |||
585 | while (addr < ullend) { | ||
586 | __asm__ __volatile__ ("ocbi %0, 0" : : "r" (addr)); | ||
587 | addr += L1_CACHE_BYTES; | ||
588 | } | ||
589 | } | ||
590 | #endif /* !CONFIG_DCACHE_DISABLED */ | 542 | #endif /* !CONFIG_DCACHE_DISABLED */ |
591 | 543 | ||
592 | /* | 544 | /* |