background image

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.