Skip to content

Commit 6d525ab

Browse files
committed
Revert wrongfully removed description. Changed encoding only
Signed-off-by: Afonso Oliveira <[email protected]>
1 parent 09649ef commit 6d525ab

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

arch/inst/Zifencei/fence.i.yaml

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,37 @@
11
# yaml-language-server: $schema=../../../schemas/inst_schema.json
22

33
fence.i:
4-
long_name: No synopsis available.
4+
long_name: Instruction fence
55
description: |
6-
No description available.
6+
The FENCE.I instruction is used to synchronize the instruction and data
7+
streams. RISC-V does not guarantee that stores to instruction memory
8+
will be made visible to instruction fetches on a RISC-V hart until that
9+
hart executes a FENCE.I instruction. A FENCE.I instruction ensures that
10+
a subsequent instruction fetch on a RISC-V hart will see any previous
11+
data stores already visible to the same RISC-V hart. FENCE.I does _not_
12+
ensure that other RISC-V harts' instruction fetches will observe the
13+
local hart's stores in a multiprocessor system. To make a store to
14+
instruction memory visible to all RISC-V harts, the writing hart also
15+
has to execute a data FENCE before requesting that all remote RISC-V
16+
harts execute a FENCE.I.
17+
18+
The unused fields in the FENCE.I instruction, _imm[11:0]_, _rs1_, and
19+
_rd_, are reserved for finer-grain fences in future extensions. For
20+
forward compatibility, base implementations shall ignore these fields,
21+
and standard software shall zero these fields.
22+
(((FENCE.I, finer-grained)))
23+
(((FENCE.I, forward compatibility)))
24+
25+
[NOTE]
26+
====
27+
Because FENCE.I only orders stores with a hart's own instruction
28+
fetches, application code should only rely upon FENCE.I if the
29+
application thread will not be migrated to a different hart. The EEI can
30+
provide mechanisms for efficient multiprocessor instruction-stream
31+
synchronization.
32+
====
733
definedBy: Zifencei
8-
assembly: xs1, xd, imm
34+
assembly: ""
935
encoding:
1036
match: -----------------001-----0001111
1137
variables:
@@ -20,6 +46,5 @@ fence.i:
2046
u: always
2147
vs: always
2248
vu: always
23-
data_independent_timing: true
2449
operation(): |
25-
50+
ifence();

0 commit comments

Comments
 (0)