;
; Copyright (c) Microsoft Corporation.  All rights reserved.
;
;
; Use of this sample source code is subject to the terms of the Microsoft
; license agreement under which you licensed this sample source code. If
; you did not accept the terms of the license agreement, you are not
; authorized to use this sample source code. For the terms of the license,
; please see the license agreement between you and Microsoft or, if applicable,
; see the LICENSE.RTF on your install media or the root of your tools installation.
; THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
;
;-------------------------------------------------------------------------------
;
;  File:  flushic.s
;
;
        INCLUDE kxarm.h
        INCLUDE armmacros.s

        TEXTAREA

;-------------------------------------------------------------------------------
;
;  Function:  OALFlushICache
;
        LEAF_ENTRY OALFlushICache

        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0       ; invalidate all instruction caches

        mov     r2, #0
        ;mcr     p15, 0, r2, c7, c5, 4          ; prefetch flush to sync the change to the cachesize id reg
        DCD     0xf57ff06f                      ; ISB (Instruction Synchronization Barrier)
        mcr     p15, 0, r2, c7, c5, 6       ; flush entire branch target cache

        DCD     0xf57ff04f                      ; DSB (Data Synchronization Barrier)
        DCD     0xf57ff06f                      ; ISB (Instruction Synchronization Barrier)
 
        RETURN

        END
