Vol. 3D 41-19
SGX INSTRUCTION REFERENCES
Operation
Temp Variables in EBLOCK Operational Flow
IF (DS:RCX is not 4KByte Aligned)
THEN #GP(0); FI;
IF (DS:RCX does not resolve within an EPC)
THEN #PF(DS:RCX); FI;
RFLAGS.ZF,CF,PF,AF,OF,SF 0;
RAX 0;
IF (EPCM(DS:RCX). VALID = 0)
THEN
RFLAGS.ZF 1;
RAX SGX_PG_INVLD;
GOTO DONE;
FI;
IF ( (EPCM(DS:RCX).PT ≠ PT_REG) and (EPCM(DS:RCX).PT ≠ PT_TCS) and (EPCM(DS:RCX).PT ≠ PT_TRIM) )
THEN
RFLAGS.CF 1;
IF (EPCM(DS:RCX).PT = PT_SECS)
THEN RAX SGX_PG_IS_SECS;
ELSE RAX SGX_NOTBLOCKABLE;
FI;
GOTO DONE;
FI;
(* Check if the page is already blocked and report blocked state *)
TMP_BLKSTATE EPCM(DS:RCX).BLOCKED;
(* at this point, the page must be valid and PT_TCS or PT_REG or PT_TRIM*)
IF (TMP_BLKSTATE = 1) )
THEN
RFLAGS.CF 1;
RAX SGX_BLKSTATE;
ELSE
EPCM(DS:RCX).BLOCKED 1
FI;
DONE:
Table 41-11. Concurrency Restrictions of EBLOCK with Other Intel® SGX Operations 2 of 2
Operation
EREMOVE
EREPORT
ETRACK
EWB
EAUG
EMODPE
EMODPR
EMODT
EACCEPT
EACCEPTCOPY
Param Targ SECS Param SECS SECS
SRC VA SECS Targ SECS Targ SECI
NFO
Targ SEC
S
Targ SEC
S
Targ SECI
NFO
SECS Targ SR
C
SECI
NFO
EBLOCK
Targ
N
C
Y
C
C
N
C
C
N
C
Y
Y
Y
C
N
C
Y
Y
C
Y
Y
Y
SECS
Y
Y
Y
Y
U
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Name
Type
Size (Bits)
Description
TMP_BLKSTATE
Integer
64
Page is already blocked.