background image

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.