/* cache.S: cache management routines1*2* Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.3* Written by David Howells ([email protected])4*5* This program is free software; you can redistribute it and/or6* modify it under the terms of the GNU General Public License7* as published by the Free Software Foundation; either version8* 2 of the License, or (at your option) any later version.9*/1011#include <asm/spr-regs.h>12#include <asm/cache.h>1314.text15.p2align 41617###############################################################################18#19# Write back a range of dcache20# - void frv_dcache_writeback(unsigned long start [GR8], unsigned long size [GR9])21#22###############################################################################23.globl frv_dcache_writeback24.type frv_dcache_writeback,@function25frv_dcache_writeback:26andi gr8,~(L1_CACHE_BYTES-1),gr827282: dcf @(gr8,gr0)29addi gr8,#L1_CACHE_BYTES,gr830cmp gr9,gr8,icc031bhi icc0,#2,2b3233membar34bralr35.size frv_dcache_writeback, .-frv_dcache_writeback3637##############################################################################38#39# Invalidate a range of dcache and icache40# - void frv_cache_invalidate(unsigned long start [GR8], unsigned long end [GR9]);41#42###############################################################################43.globl frv_cache_invalidate44.type frv_cache_invalidate,@function45frv_cache_invalidate:46andi gr8,~(L1_CACHE_BYTES-1),gr847482: dci @(gr8,gr0)49ici @(gr8,gr0)50addi gr8,#L1_CACHE_BYTES,gr851cmp gr9,gr8,icc052bhi icc0,#2,2b5354membar55bralr56.size frv_cache_invalidate, .-frv_cache_invalidate5758##############################################################################59#60# Invalidate a range of icache61# - void frv_icache_invalidate(unsigned long start [GR8], unsigned long end [GR9]);62#63###############################################################################64.globl frv_icache_invalidate65.type frv_icache_invalidate,@function66frv_icache_invalidate:67andi gr8,~(L1_CACHE_BYTES-1),gr868692: ici @(gr8,gr0)70addi gr8,#L1_CACHE_BYTES,gr871cmp gr9,gr8,icc072bhi icc0,#2,2b7374membar75bralr76.size frv_icache_invalidate, .-frv_icache_invalidate7778###############################################################################79#80# Write back and invalidate a range of dcache and icache81# - void frv_cache_wback_inv(unsigned long start [GR8], unsigned long end [GR9])82#83###############################################################################84.globl frv_cache_wback_inv85.type frv_cache_wback_inv,@function86frv_cache_wback_inv:87andi gr8,~(L1_CACHE_BYTES-1),gr888892: dcf @(gr8,gr0)90ici @(gr8,gr0)91addi gr8,#L1_CACHE_BYTES,gr892cmp gr9,gr8,icc093bhi icc0,#2,2b9495membar96bralr97.size frv_cache_wback_inv, .-frv_cache_wback_inv9899100