SSBS, Speculative Store Bypass Safe

The SSBS characteristics are:

Purpose

Allows access to the Speculative Store Bypass Safe bit.

Configuration

This register is present only when FEAT_SSBS2 is implemented. Otherwise, direct accesses to SSBS are UNDEFINED.

Attributes

SSBS is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0
RES0SSBSRES0

Bits [63:13]

Reserved, RES0.

SSBS, bit [12]

Speculative Store Bypass Safe.

Prohibits speculative loads or stores which might practically allow a cache timing side channel.

A speculative value in a register is used in a potentially speculatively exploitable manner if it is used to form an address, generate condition codes, or generate SVE predicate values to be used by other instructions in the speculative sequence or if the execution timing of any other instructions in the speculative sequence is a function of the data loaded under speculation.

SSBSMeaning
0b0

Hardware is not permitted to use speculative register values in a potentially speculatively exploitable manner if the speculative read that loads the register is from earlier in the coherence order than the entry generated by the latest store to that location using the same virtual address as the load instruction.

0b1

When the value of PSTATE.SSBS is 1, hardware is permitted to use speculative register values in a potentially speculatively exploitable manner if the speculative read that loads the register is from earlier in the coherence order than the entry generated by the latest store to that location using the same virtual address as the load instruction.

The value of this bit is set to the value in the SCTLR_ELx.DSSBS field on taking an exception to ELx.

The reset behavior of this field is:

Bits [11:0]

Reserved, RES0.

Accessing SSBS

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, SSBS

op0op1CRnCRmop2
0b110b0110b01000b00100b110

if !IsFeatureImplemented(FEAT_SSBS2) then UNDEFINED; elsif PSTATE.EL == EL0 then X[t, 64] = Zeros(51):PSTATE.SSBS:Zeros(12); elsif PSTATE.EL == EL1 then X[t, 64] = Zeros(51):PSTATE.SSBS:Zeros(12); elsif PSTATE.EL == EL2 then X[t, 64] = Zeros(51):PSTATE.SSBS:Zeros(12); elsif PSTATE.EL == EL3 then X[t, 64] = Zeros(51):PSTATE.SSBS:Zeros(12);

MSR SSBS, <Xt>

op0op1CRnCRmop2
0b110b0110b01000b00100b110

if !IsFeatureImplemented(FEAT_SSBS2) then UNDEFINED; elsif PSTATE.EL == EL0 then PSTATE.SSBS = X[t, 64]<12>; elsif PSTATE.EL == EL1 then PSTATE.SSBS = X[t, 64]<12>; elsif PSTATE.EL == EL2 then PSTATE.SSBS = X[t, 64]<12>; elsif PSTATE.EL == EL3 then PSTATE.SSBS = X[t, 64]<12>;

MSR SSBS, #<imm>

op0op1CRnop2
0b000b0110b01000b001

15/12/2024 22:27; 5e0a212688c6bd7aee92394b6f5e491b4d0fee1d

Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.