cbo.flush

Cache Block Flush

This instruction is defined by:

Encoding

svg

Synopsis

Flushes an entire cache block by cleaning it and then invalidating it in all caches.

cbo.flush is ordered by FENCE instructions but not FENCE.I or SFENCE.VMA.

<%- if CACHE_BLOCK_SIZE.bit_length > [PMP_GRANULARITY, PMA_GRANULARITY].min -%> Both PMP and PMA access control must be the same for all bytes in the block; otherwise, cbo.flush has UNSPECIFIED behavior. <%- end -%>

Flush operations are treated as stores for page and access permissions. If permission checks fail, one of the following exceptions will occur:

<%- if ext?(:H) -%>
* `Store/AMO Guest-Page Fault` if virtual memory translation fails during G-stage translation.
<%- end -%>
* `Store/AMO Page Fault` if virtual memory translation fails <% if ext?(:H) %>when V=0 or during VS-stage translation<% end %>
* `Store/AMO Access Fault` if a PMP or PMA access check fails.

<%- if CACHE_BLOCK_SIZE.bit_length ⇐ [PMP_GRANULARITY, PMA_GRANULARITY].min -%> Because cache blocks are naturally aligned and always fit in a single PMP or PMA regions, the PMP and PMA access checks only need to check a single address in the line. <%- end -%>

CBO operations never raise a misaligned address fault.

Access

M

HS

U

VS

VU

Always

Sometimes

Sometimes

Sometimes

Sometimes

Access is controled through menvcfg.CBZE, senvcfg.CBZE, and henvcfg.CBZE. When access is denied, the instruction either raises an Illegal Instruction or Virtual Instruction exception according to the table below.

menvcfg.CBCFE

senvcfg.CBCFE

henvcfg.CBCFE

cbo.flush Instruction Behavior

S-mode

U-mode

VS-mode

VU-mode

0

-

-

Illegal Instruction

Illegal Instruction

Virtual Instruction

Virtual Instruction

1

0

0

executes

Illegal Instruction

Virtual Instruction

Virtual Instruction

1

1

0

executes

executes

Virtual Instruction

Virtual Instruction

1

0

1

executes

Illegal Instruction

executes

Virtual Instruction

1

1

1

executes

executes

executes

executes

Decode Variables

Bits<5> rs1 = $encoding[19:15];

Execution