41-16 Vol. 3D
SGX INSTRUCTION REFERENCES
Operation
Temp Variables in EAUG Operational Flow
IF (DS:RBX is not 32Byte Aligned)
THEN #GP(0); FI;
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;
TMP_SECS DS:RBX.SECS;
TMP_LINADDR DS:RBX.LINADDR;
IF ( DS:TMP_SECS is not 4KByte aligned or TMP_LINADDR is not 4KByte aligned )
THEN #GP(0); FI;
IF ( (DS:RBX.SRCPAGE is not 0) or (DS:RBX:SECINFO is not 0) )
THEN #GP(0); FI;
IF (DS:TMP_SECS does not resolve within an EPC)
THEN #PF(DS:SECS); FI;
(* Check the EPC page for concurrency *)
IF (EPC page in use)
THEN #GP(0); FI;
IF (EPCM(DS:RCX).VALID ≠ 0)
THEN #PF(DS:RCX); FI;
(* Check the SECS for concurrency *)
IF (SECS is not available for EAUG)
THEN #GP(0); FI;
Table 41-8. Concurrency Restrictions of EAUG 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
EAUG
Targ
N
N
N
N
N
N
N
N
SECS
N
Y
Y
Y
N
Y
N
Y
Y
N
Y
Y
Name
Type
Size (bits)
Description
TMP_SECS
Effective Address
32/64
Effective address of the SECS destination page.
TMP_SECINFO
Effective Address
32/64
Effective address of an SECINFO structure which contains security
attributes of the page to be added.
SCRATCH_SECINFO
SECINFO
512
Scratch storage for holding the contents of DS:TMP_SECINFO.
TMP_LINADDR
Unsigned Integer
64
Holds the linear address to be stored in the EPCM and used to
calculate TMP_ENCLAVEOFFSET.