background image

41-96 Vol. 3D

SGX INSTRUCTION REFERENCES

EREPORT Faulting Conditions

Concurrency Restrictions

Operation

Temp Variables in EREPORT Operational Flow

TMP_MODE64  ((IA32_EFER.LMA = 1) && (CS.L = 1));

(* Address verification for TARGETINFO (RBX) *)
IF ( (DS:RBX is not 128Byte Aligned) or (DS:RBX is not within CR_ELRANGE) )

THEN #GP(0); FI;

IF (DS:RBX does not resolve within an EPC) 

THEN #PF(DS:RBX); FI;

IF (EPCM(DS:RBX). VALID = 0)

THEN #PF(DS:RBX); FI;

IF (EPCM(DS:RBX).BLOCKED = 1) ) 

THEN #PF(DS:RBX); FI;

(* Check page parameters for correctness *)
IF ( (EPCM(DS:RBX).PT ≠ PT_REG) or (EPCM(DS:RBX).ENCLAVESECS ≠ CR_ACTIVE_SECS) or (EPCM(DS:RBX).PENDING = 1) or

(EPCM(DS:RBX).MODIFIED = 1) or (EPCM(DS:RBX).ENCLAVEADDRESS ≠ (DS:RBX & ~0FFFH) ) or (EPCM(DS:RBX).R = 0) ) 

An effective address not properly aligned.

An memory address does not resolve in an EPC page.

If accessing an invalid EPC page.

If the EPC page is blocked.

May page fault.

Table 41-62.  Concurrency Restrictions of EREPORT with Other Intel® SGX Operations 1 of 2

Operation

EEXIT

EADD

EBLOCK

ECRE

ATE

EDBGRD/

WR

EENTER/

ERESUME

EEXTEND

EGETKEY

EINIT

ELDB/ELDU

EPA

Param TCS SSA SECS Targ SECS Targ SECS SECS

Targ SECS TCS SSA SECS Targ SECS Param SECS SECS Targ VA

SECS VA

EREPORT Param

U

Y

U

U

SECS

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Table 41-63.  Concurrency Restrictions of EREPORT 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

EREPORT Param

U

Y

U

Y

U

Y

U

SECS

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Name

Type

Size (bits)

Description

TMP_ATTRIBUTES

 

32

Physical address of SECS of the enclave to which source operand belongs.

TMP_CURRENTSECS

Address of the SECS for the currently executing enclave.

TMP_KEYDEPENDENCIES

Temp space for key derivation.

TMP_REPORTKEY

 

128

REPORTKEY generated by the instruction.

TMP_REPORT

 3712