>>>>> On Wed, 16 Apr 2003 15:46:54 +0200 (MET DST), "Maciej W. Rozycki"
>>>>> <macro@ds2.pg.gda.pl> said:
>> AFAIK TX49's SYNC instruction correctly flushes the write buffer.
macro> That would be an overkill; we only need to enforce strong
macro> ordering here.
Hmm... But SYNC is a only TX49 instruction that enforce completions of
preceding read operations. (TX49 have "non-blocking load" feature
which allows non-cached read/write to overtake preceding cached read)
I can imagine three configurations:
1. Enable CONFIG_CPU_HAS_SYNC and disable CONFIG_CPU_HAS_WB. In this
case, wmb/rmb/mb/iob/wbflush macro all issues a SYNC instruction.
2. Disable CONFIG_CPU_HAS_SYNC and enable CONFIG_CPU_HAS_WB, In this
case, wmb/rmb macro does nothing and mb/iob/wbflush macro calls
__wbflush().
3. Enable both CONFIG_CPU_HAS_SYNC and CONFIG_CPU_HAS_WB, In this
case, wmb/rmb macro issues a SYNC instruction, mb/iob macro calls
__wbflush() and wbflush macro do both.
In the case 2 and 3, __wbflush() must be implemented with SYNC instruction
and/or bc0f loop.
I think the case 1 is good and enough for TX49.
>> No bc0f loop is required.
macro> But an external buffer may be attached to a TX49 core, IIRC,
macro> so if it is the case for TOSHIBA_RBTX4927, it's obviously
macro> needed.
Although I'm not sure whether TX49 core can be integrated with such an
external write buffer, all TX49XX (not TX39) I have ever seen does not
have it.
---
Atsushi Nemoto
|