csdb
Consumption of Speculative Data Barrier (A32)
CSDB
Prevents speculative data consumption (v8.0).
Pseudocode Operation
// Prevent consumption of speculatively-loaded data
ConsumptionBarrier()
// Subsequent instructions cannot use data obtained through speculative execution prior to this barrier
Encoding
Binary Layout
cond
31:28
00110
27:23
0
22
10
21:20
0000
19:16
1
15
1
14
1
13
1
12
000000010100
11:0
Operands
Reference
View in Arm A64 ISA Reference ↗
Arm AArch32 ISA
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0x0320F014 | CSDB{<c>}{<q>} | A32 | cond | 00110 | 0 | 10 | 0000 | 1 | 1 | 1 | 1 | 000000010100 | ||
| 0xF3AF8014 | CSDB{<c>}{<q>} | T32 | 111100111010 | 1 | 1 | 1 | 1 | 10 | 0 | 0 | 0 | 000 | 0001 | 0100 |
Description
Consumption of Speculative Data Barrier is a memory barrier that controls speculative execution and data value prediction. No instruction other than branch instructions and instructions that write to the PC appearing in program order after the CSDB can be speculatively executed using the results of any:
Operation
if ConditionPassed() then
EncodingSpecificOperations();
ConsumptionOfSpeculativeDataBarrier();