mirror of https://github.com/acidanthera/audk.git
Deleted CacheFlush as it's in the MDE Cache library
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1812 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
92ea7f231b
commit
c01bfb76c6
|
@ -1,88 +0,0 @@
|
|||
//++
|
||||
// Copyright (c) 2006, Intel Corporation
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
// http://opensource.org/licenses/bsd-license.php
|
||||
//
|
||||
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
//
|
||||
// Module Name:
|
||||
//
|
||||
// IpfCpuCache.s
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// Contains Misc assembly procedures to support IPF CPU AP.
|
||||
//
|
||||
// Revision History:
|
||||
//
|
||||
//--
|
||||
|
||||
.file "IpfCpuCache.s"
|
||||
|
||||
#include "IpfMacro.i"
|
||||
#include "IpfDefines.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//++
|
||||
// Flush Cache
|
||||
//
|
||||
// Arguments :
|
||||
|
||||
// Input = in0 = Starting Address to Flush.
|
||||
// Input = in1 = Length in bytes.
|
||||
// Input = b0 = return branch register.
|
||||
// On Entry :
|
||||
//
|
||||
// Return Value:
|
||||
//
|
||||
// VOID
|
||||
// SalFlushCache (
|
||||
// IN UINT64 BaseToFlush,
|
||||
// IN UINT64 LengthToFlush
|
||||
// );
|
||||
//
|
||||
//--
|
||||
//---------------------------------------------------------------------------
|
||||
PROCEDURE_ENTRY (SalFlushCache)
|
||||
|
||||
NESTED_SETUP (5,8,0,0)
|
||||
|
||||
mov loc2 = ar.lc
|
||||
|
||||
mov loc3 = in0 // Start address.
|
||||
mov loc4 = in1;; // Length in bytes.
|
||||
|
||||
cmp.eq p6,p7 = loc4, r0;; // If Length is zero then don't flush any cache
|
||||
(p6) br.spnt.many DoneFlushingC;;
|
||||
|
||||
add loc4 = loc4,loc3
|
||||
mov loc5 = 1;;
|
||||
sub loc4 = loc4, loc5 ;; // the End address to flush
|
||||
|
||||
dep loc3 = r0,loc3,0,5
|
||||
dep loc4 = r0,loc4,0,5;;
|
||||
shr loc3 = loc3,5
|
||||
shr loc4 = loc4,5;; // 32 byte cache line
|
||||
|
||||
sub loc4 = loc4,loc3;; // total flush count, It should be add 1 but
|
||||
// the br.cloop will first execute one time
|
||||
mov loc3 = in0
|
||||
mov loc5 = 32
|
||||
mov ar.lc = loc4;;
|
||||
|
||||
StillFlushingC:
|
||||
fc loc3;;
|
||||
sync.i;;
|
||||
srlz.i;;
|
||||
add loc3 = loc5,loc3;;
|
||||
br.cloop.sptk.few StillFlushingC;;
|
||||
|
||||
DoneFlushingC:
|
||||
mov ar.lc = loc2
|
||||
NESTED_RETURN
|
||||
|
||||
PROCEDURE_EXIT (SalFlushCache)
|
||||
|
Loading…
Reference in New Issue