-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 242224 b: refs/heads/master c: b75bb23 h: refs/heads/master v: v3
- Loading branch information
David Howells
committed
Mar 18, 2011
1 parent
07d2170
commit b0692b7
Showing
4 changed files
with
141 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 9ee21723ccc30070f47c411826d4ed013cd050c2 | ||
refs/heads/master: b75bb2365d50f73c09e42cf2de07f5805a3988ea |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
/* MN10300 CPU core caching macros -*- asm -*- | ||
* | ||
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
* Written by David Howells (dhowells@redhat.com) | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public Licence | ||
* as published by the Free Software Foundation; either version | ||
* 2 of the Licence, or (at your option) any later version. | ||
*/ | ||
|
||
|
||
############################################################################### | ||
# | ||
# Invalidate the instruction cache. | ||
# A0: Should hold CHCTR | ||
# D0: Should have been read from CHCTR | ||
# D1: Will be clobbered | ||
# | ||
# On some cores it is necessary to disable the icache whilst we do this. | ||
# | ||
############################################################################### | ||
.macro invalidate_icache,disable_irq | ||
|
||
#if defined(CONFIG_AM33_2) || defined(CONFIG_AM33_3) | ||
.if \disable_irq | ||
# don't want an interrupt routine seeing a disabled cache | ||
mov epsw,d1 | ||
and ~EPSW_IE,epsw | ||
or EPSW_NMID,epsw | ||
nop | ||
nop | ||
.endif | ||
|
||
# disable the icache | ||
and ~CHCTR_ICEN,d0 | ||
movhu d0,(a0) | ||
|
||
# and wait for it to calm down | ||
setlb | ||
movhu (a0),d0 | ||
btst CHCTR_ICBUSY,d0 | ||
lne | ||
|
||
# invalidate | ||
or CHCTR_ICINV,d0 | ||
movhu d0,(a0) | ||
|
||
# wait for the cache to finish | ||
setlb | ||
movhu (a0),d0 | ||
btst CHCTR_ICBUSY,d0 | ||
lne | ||
|
||
# and reenable it | ||
or CHCTR_ICEN,d0 | ||
movhu d0,(a0) | ||
movhu (a0),d0 | ||
|
||
.if \disable_irq | ||
LOCAL_IRQ_RESTORE(d1) | ||
.endif | ||
|
||
#else /* CONFIG_AM33_2 || CONFIG_AM33_3 */ | ||
|
||
# invalidate | ||
or CHCTR_ICINV,d0 | ||
movhu d0,(a0) | ||
movhu (a0),d0 | ||
|
||
#endif /* CONFIG_AM33_2 || CONFIG_AM33_3 */ | ||
.endm | ||
|
||
############################################################################### | ||
# | ||
# Invalidate the data cache. | ||
# A0: Should hold CHCTR | ||
# D0: Should have been read from CHCTR | ||
# D1: Will be clobbered | ||
# | ||
# On some cores it is necessary to disable the dcache whilst we do this. | ||
# | ||
############################################################################### | ||
.macro invalidate_dcache,disable_irq | ||
|
||
#if defined(CONFIG_AM33_2) || defined(CONFIG_AM33_3) | ||
.if \disable_irq | ||
# don't want an interrupt routine seeing a disabled cache | ||
mov epsw,d1 | ||
and ~EPSW_IE,epsw | ||
or EPSW_NMID,epsw | ||
nop | ||
nop | ||
.endif | ||
# disable the dcache | ||
and ~CHCTR_DCEN,d0 | ||
movhu d0,(a0) | ||
|
||
# and wait for it to calm down | ||
setlb | ||
movhu (a0),d0 | ||
btst CHCTR_DCBUSY,d0 | ||
lne | ||
|
||
# invalidate | ||
or CHCTR_DCINV,d0 | ||
movhu d0,(a0) | ||
|
||
# wait for the cache to finish | ||
setlb | ||
movhu (a0),d0 | ||
btst CHCTR_DCBUSY,d0 | ||
lne | ||
|
||
# and reenable it | ||
or CHCTR_DCEN,d0 | ||
movhu d0,(a0) | ||
movhu (a0),d0 | ||
|
||
.if \disable_irq | ||
LOCAL_IRQ_RESTORE(d1) | ||
.endif | ||
|
||
#else /* CONFIG_AM33_2 || CONFIG_AM33_3 */ | ||
|
||
# invalidate | ||
or CHCTR_DCINV,d0 | ||
movhu d0,(a0) | ||
movhu (a0),d0 | ||
|
||
#endif /* CONFIG_AM33_2 || CONFIG_AM33_3 */ | ||
.endm |