diff --git a/bl32/tsp/aarch64/tsp_entrypoint.S b/bl32/tsp/aarch64/tsp_entrypoint.S
index a859e17..2c32578 100644
--- a/bl32/tsp/aarch64/tsp_entrypoint.S
+++ b/bl32/tsp/aarch64/tsp_entrypoint.S
@@ -156,7 +156,7 @@
 	 * -------------------------------------------
 	 */
 func tsp_vector_table
-	b	tsp_std_smc_entry
+	b	tsp_yield_smc_entry
 	b	tsp_fast_smc_entry
 	b	tsp_cpu_on_entry
 	b	tsp_cpu_off_entry
@@ -165,7 +165,7 @@
 	b	tsp_sel1_intr_entry
 	b	tsp_system_off_entry
 	b	tsp_system_reset_entry
-	b	tsp_abort_std_smc_entry
+	b	tsp_abort_yield_smc_entry
 endfunc tsp_vector_table
 
 	/*---------------------------------------------
@@ -413,12 +413,12 @@
 
 	/*---------------------------------------------
 	 * This entrypoint is used by the TSPD to ask
-	 * the TSP to service a std smc request.
+	 * the TSP to service a Yielding SMC request.
 	 * We will enable preemption during execution
 	 * of tsp_smc_handler.
 	 * ---------------------------------------------
 	 */
-func tsp_std_smc_entry
+func tsp_yield_smc_entry
 	msr	daifclr, #DAIF_FIQ_BIT | DAIF_IRQ_BIT
 	bl	tsp_smc_handler
 	msr	daifset, #DAIF_FIQ_BIT | DAIF_IRQ_BIT
@@ -426,15 +426,15 @@
 
 	/* Should never reach here */
 	no_ret	plat_panic_handler
-endfunc tsp_std_smc_entry
+endfunc tsp_yield_smc_entry
 
 	/*---------------------------------------------------------------------
-	 * This entrypoint is used by the TSPD to abort a pre-empted Standard
+	 * This entrypoint is used by the TSPD to abort a pre-empted Yielding
 	 * SMC. It could be on behalf of non-secure world or because a CPU
 	 * suspend/CPU off request needs to abort the preempted SMC.
 	 * --------------------------------------------------------------------
 	 */
-func tsp_abort_std_smc_entry
+func tsp_abort_yield_smc_entry
 
 	/*
 	 * Exceptions masking is already done by the TSPD when entering this
@@ -453,4 +453,4 @@
 
 	/* Should never reach here */
 	bl	plat_panic_handler
-endfunc tsp_abort_std_smc_entry
+endfunc tsp_abort_yield_smc_entry
diff --git a/bl32/tsp/tsp_main.c b/bl32/tsp/tsp_main.c
index dd8936f..0de0ca8 100644
--- a/bl32/tsp/tsp_main.c
+++ b/bl32/tsp/tsp_main.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -348,7 +348,7 @@
 	tsp_stats[linear_id].eret_count++;
 
 	INFO("TSP: cpu 0x%lx received %s smc 0x%lx\n", read_mpidr(),
-		((func >> 31) & 1) == 1 ? "fast" : "standard",
+		((func >> 31) & 1) == 1 ? "fast" : "yielding",
 		func);
 	INFO("TSP: cpu 0x%lx: %d smcs, %d erets\n", read_mpidr(),
 		tsp_stats[linear_id].smc_count,
@@ -394,7 +394,7 @@
 
 /*******************************************************************************
  * TSP smc abort handler. This function is called when aborting a preemtped
- * standard SMC request. It should cleanup all resources owned by the SMC
+ * yielding SMC request. It should cleanup all resources owned by the SMC
  * handler such as locks or dynamically allocated memory so following SMC
  * request are executed in a clean environment.
  ******************************************************************************/
diff --git a/common/runtime_svc.c b/common/runtime_svc.c
index 8b8145e..7b38847 100644
--- a/common/runtime_svc.c
+++ b/common/runtime_svc.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -69,7 +69,8 @@
 	if (desc->end_oen >= OEN_LIMIT)
 		return -EINVAL;
 
-	if (desc->call_type != SMC_TYPE_FAST && desc->call_type != SMC_TYPE_STD)
+	if (desc->call_type != SMC_TYPE_FAST &&
+			desc->call_type != SMC_TYPE_YIELD)
 		return -EINVAL;
 
 	/* A runtime service having no init or handle function doesn't make sense */
@@ -119,7 +120,7 @@
 
 		/*
 		 * The runtime service may have separate rt_svc_desc_t
-		 * for its fast smc and standard smc. Since the service itself
+		 * for its fast smc and yielding smc. Since the service itself
 		 * need to be initialized only once, only one of them will have
 		 * an initialisation routine defined. Call the initialisation
 		 * routine for this runtime service, if it is defined.
diff --git a/docs/firmware-design.md b/docs/firmware-design.md
index 45e56e6..def802c 100644
--- a/docs/firmware-design.md
+++ b/docs/firmware-design.md
@@ -686,7 +686,7 @@
 
 The design of the runtime services depends heavily on the concepts and
 definitions described in the [SMCCC], in particular SMC Function IDs, Owning
-Entity Numbers (OEN), Fast and Standard calls, and the SMC32 and SMC64 calling
+Entity Numbers (OEN), Fast and Yielding calls, and the SMC32 and SMC64 calling
 conventions. Please refer to that document for more detailed explanation of
 these terms.
 
@@ -812,7 +812,7 @@
 ignored and return the Unknown SMC Function Identifier result code `0xFFFFFFFF`
 in R0/X0.
 
-Bit[31] (fast/standard call) and bits[29:24] (owning entity number) of the SMC
+Bit[31] (fast/yielding call) and bits[29:24] (owning entity number) of the SMC
 Function ID are combined to index into the `rt_svc_descs_indices[]` array. The
 resulting value might indicate a service that has no handler, in this case the
 framework will also report an Unknown SMC Function ID. Otherwise, the value is
diff --git a/docs/interrupt-framework-design.md b/docs/interrupt-framework-design.md
index b468949..1deab02 100644
--- a/docs/interrupt-framework-design.md
+++ b/docs/interrupt-framework-design.md
@@ -761,7 +761,7 @@
 3.  It sets the `ELR_EL3` system register to `tsp_sel1_intr_entry` and sets the
     `SPSR_EL3.DAIF` bits in the secure CPU context. It sets `x0` to
     `TSP_HANDLE_SEL1_INTR_AND_RETURN`. If the TSP was preempted earlier by a non
-    secure interrupt during `standard` SMC processing, save the registers that
+    secure interrupt during `yielding` SMC processing, save the registers that
     will be trashed, which is the `ELR_EL3` and `SPSR_EL3`, in order to be able
     to re-enter TSP for Secure-EL1 interrupt processing. It does not need to
     save any other secure context since the TSP is expected to preserve it
@@ -809,17 +809,17 @@
 
 ##### 2.3.2.4 Test secure payload dispatcher non-secure interrupt handling
 The TSP in Secure-EL1 can be preempted by a non-secure interrupt during
-`standard` SMC processing or by a higher priority EL3 interrupt during
+`yielding` SMC processing or by a higher priority EL3 interrupt during
 Secure-EL1 interrupt processing. Currently only non-secure interrupts can
 cause preemption of TSP since there are no EL3 interrupts in the
 system.
 
 It should be noted that while TSP is preempted, the TSPD only allows entry into
 the TSP either for Secure-EL1 interrupt handling or for resuming the preempted
-`standard` SMC in response to the `TSP_FID_RESUME` SMC from the normal world.
+`yielding` SMC in response to the `TSP_FID_RESUME` SMC from the normal world.
 (See Section 3).
 
-The non-secure interrupt triggered in Secure-EL1 during `standard` SMC processing
+The non-secure interrupt triggered in Secure-EL1 during `yielding` SMC processing
 can be routed to either EL3 or Secure-EL1 and is controlled by build option
 `TSP_NS_INTR_ASYNC_PREEMPT` (see Section 2.2.2.1). If the build option is set,
 the TSPD will set the routing model for the non-secure interrupt to be routed to
@@ -835,7 +835,7 @@
 
 If the `TSP_NS_INTR_ASYNC_PREEMPT` build option is zero (default), the default
 routing model for non-secure interrupt in secure state is in effect
-i.e. __TEL3=0, CSS=0__. During `standard` SMC processing, the IRQ
+i.e. __TEL3=0, CSS=0__. During `yielding` SMC processing, the IRQ
 exceptions are unmasked i.e. `PSTATE.I=0`, and a non-secure interrupt will
 trigger at Secure-EL1 IRQ exception vector. The TSP saves the general purpose
 register context and issues an SMC with `TSP_PREEMPTED` as the function
@@ -860,7 +860,7 @@
 4.  `SMC_PREEMPTED` is set in x0 and return to non secure state after
     restoring non secure context.
 
-The Normal World is expected to resume the TSP after the `standard` SMC preemption
+The Normal World is expected to resume the TSP after the `yielding` SMC preemption
 by issuing an SMC with `TSP_FID_RESUME` as the function identifier (see section 3).
 The TSPD service takes the following actions in `tspd_smc_handler()` function
 upon receiving this SMC:
@@ -951,9 +951,9 @@
 -----------------------
 
 ### 3.1 Implication of preempted SMC on Non-Secure Software
-A `standard` SMC call to Secure payload can be preempted by a non-secure
+A `yielding` SMC call to Secure payload can be preempted by a non-secure
 interrupt and the execution can return to the non-secure world for handling
-the interrupt (For details on `standard` SMC refer [SMC calling convention]).
+the interrupt (For details on `yielding` SMC refer [SMC calling convention]).
 In this case, the SMC call has not completed its execution and the execution
 must return back to the secure payload to resume the preempted SMC call.
 This can be achieved by issuing an SMC call which instructs to resume the
@@ -964,26 +964,26 @@
 
 In the Test Secure Payload implementation, `TSP_FID_RESUME` is designated
 as the resume SMC FID. It is important to note that `TSP_FID_RESUME` is a
-`standard` SMC which means it too can be be preempted. The typical non
-secure software sequence for issuing a `standard` SMC would look like this,
+`yielding` SMC which means it too can be be preempted. The typical non
+secure software sequence for issuing a `yielding` SMC would look like this,
 assuming `P.STATE.I=0` in the non secure state :
 
     int rc;
-    rc = smc(TSP_STD_SMC_FID, ...);     /* Issue a Standard SMC call */
+    rc = smc(TSP_YIELD_SMC_FID, ...);     /* Issue a Yielding SMC call */
     /* The pending non-secure interrupt is handled by the interrupt handler
        and returns back here. */
     while (rc == SMC_PREEMPTED) {       /* Check if the SMC call is preempted */
         rc = smc(TSP_FID_RESUME);       /* Issue resume SMC call */
     }
 
-The `TSP_STD_SMC_FID` is any `standard` SMC function identifier and the smc()
+The `TSP_YIELD_SMC_FID` is any `yielding` SMC function identifier and the smc()
 function invokes a SMC call with the required arguments. The pending non-secure
 interrupt causes an IRQ exception and the IRQ handler registered at the
 exception vector handles the non-secure interrupt and returns. The return value
 from the SMC call is tested for `SMC_PREEMPTED` to check whether it is
 preempted. If it is, then the resume SMC call `TSP_FID_RESUME` is issued. The
 return value of the SMC call is tested again to check if it is preempted.
-This is done in a loop till the SMC call succeeds or fails. If a `standard`
+This is done in a loop till the SMC call succeeds or fails. If a `yielding`
 SMC is preempted, until it is resumed using `TSP_FID_RESUME` SMC and
 completed, the current TSPD prevents any other SMC call from re-entering
 TSP by returning `SMC_UNK` error.
diff --git a/docs/rt-svc-writers-guide.md b/docs/rt-svc-writers-guide.md
index 4b811fe..ea599ed 100644
--- a/docs/rt-svc-writers-guide.md
+++ b/docs/rt-svc-writers-guide.md
@@ -51,24 +51,24 @@
 The SMC Function Identifier includes a OEN field. These values and their
 meaning are described in [SMCCC] and summarized in table 1 below. Some entities
 are allocated a range of of OENs. The OEN must be interpreted in conjunction
-with the SMC call type, which is either _Fast_ or _Standard_. Fast calls are
-uninterruptible whereas Standard calls can be pre-empted. The majority of
-Owning Entities only have allocated ranges for Fast calls: Standard calls are
+with the SMC call type, which is either _Fast_ or _Yielding_. Fast calls are
+uninterruptible whereas Yielding calls can be pre-empted. The majority of
+Owning Entities only have allocated ranges for Fast calls: Yielding calls are
 reserved exclusively for Trusted OS providers or for interoperability with
 legacy 32-bit software that predates the [SMCCC].
 
-    Type    OEN     Service
-    Fast     0      ARM Architecture calls
-    Fast     1      CPU Service calls
-    Fast     2      SiP Service calls
-    Fast     3      OEM Service calls
-    Fast     4      Standard Service calls
-    Fast    5-47    Reserved for future use
-    Fast   48-49    Trusted Application calls
-    Fast   50-63    Trusted OS calls
+    Type       OEN     Service
+    Fast        0      ARM Architecture calls
+    Fast        1      CPU Service calls
+    Fast        2      SiP Service calls
+    Fast        3      OEM Service calls
+    Fast        4      Standard Service calls
+    Fast       5-47    Reserved for future use
+    Fast      48-49    Trusted Application calls
+    Fast      50-63    Trusted OS calls
 
-    Std     0- 1    Reserved for existing ARMv7 calls
-    Std     2-63    Trusted OS Standard Calls
+    Yielding   0- 1    Reserved for existing ARMv7 calls
+    Yielding   2-63    Trusted OS Standard Calls
 
 _Table 1: Service types and their corresponding Owning Entity Numbers_
 
@@ -115,7 +115,7 @@
 *   `_start` and `_end` values must be based on the `OEN_*` values defined in
     [`smcc.h`]
 
-*   `_type` must be one of `SMC_TYPE_FAST` or `SMC_TYPE_STD`
+*   `_type` must be one of `SMC_TYPE_FAST` or `SMC_TYPE_YIELD`
 
 *   `_setup` is the initialization function with the `rt_svc_init` signature:
 
@@ -138,7 +138,7 @@
 
 1.  The `_start` OEN is not greater than the `_end` OEN
 2.  The `_end` OEN does not exceed the maximum OEN value (63)
-3.  The `_type` is one of `SMC_TYPE_FAST` or `SMC_TYPE_STD`
+3.  The `_type` is one of `SMC_TYPE_FAST` or `SMC_TYPE_YIELD`
 4.  `_setup` and `_smch` routines have been specified
 
 [`std_svc_setup.c`] provides an example of registering a runtime service:
diff --git a/include/bl32/tsp/tsp.h b/include/bl32/tsp/tsp.h
index 599cd2c..43bba8f 100644
--- a/include/bl32/tsp/tsp.h
+++ b/include/bl32/tsp/tsp.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -22,7 +22,7 @@
 #define TSP_SYSTEM_RESET_DONE	0xf2000009
 
 /*
- * Function identifiers to handle S-El1 interrupt through the synchronous
+ * Function identifiers to handle S-EL1 interrupt through the synchronous
  * handling model. If the TSP was previously interrupted then control has to
  * be returned to the TSPD after handling the interrupt else execution can
  * remain in the TSP.
@@ -34,7 +34,7 @@
 
 /*
  * Identifiers for various TSP services. Corresponding function IDs (whether
- * fast or standard) are generated by macros defined below
+ * fast or yielding) are generated by macros defined below
  */
 #define TSP_ADD		0x2000
 #define TSP_SUB		0x2001
@@ -50,15 +50,15 @@
 
 /*
  * Generate function IDs for TSP services to be used in SMC calls, by
- * appropriately setting bit 31 to differentiate standard and fast SMC calls
+ * appropriately setting bit 31 to differentiate yielding and fast SMC calls
  */
-#define TSP_STD_FID(fid)	((TSP_BARE_FID(fid) | 0x72000000))
+#define TSP_YIELD_FID(fid)	((TSP_BARE_FID(fid) | 0x72000000))
 #define TSP_FAST_FID(fid)	((TSP_BARE_FID(fid) | 0x72000000) | (1u << 31))
 
-/* SMC function ID to request a previously preempted std smc */
-#define TSP_FID_RESUME		TSP_STD_FID(0x3000)
+/* SMC function ID to request a previously preempted yielding smc */
+#define TSP_FID_RESUME		TSP_YIELD_FID(0x3000)
 /*
- * SMC function ID to request abortion of a previously preempted std smc. A
+ * SMC function ID to request abortion of a previously preempted yielding SMC. A
  * fast SMC is used so that the TSP abort handler does not have to be
  * reentrant.
  */
@@ -92,7 +92,7 @@
 typedef uint32_t tsp_vector_isn_t;
 
 typedef struct tsp_vectors {
-	tsp_vector_isn_t std_smc_entry;
+	tsp_vector_isn_t yield_smc_entry;
 	tsp_vector_isn_t fast_smc_entry;
 	tsp_vector_isn_t cpu_on_entry;
 	tsp_vector_isn_t cpu_off_entry;
@@ -101,7 +101,7 @@
 	tsp_vector_isn_t sel1_intr_entry;
 	tsp_vector_isn_t system_off_entry;
 	tsp_vector_isn_t system_reset_entry;
-	tsp_vector_isn_t abort_std_smc_entry;
+	tsp_vector_isn_t abort_yield_smc_entry;
 } tsp_vectors_t;
 
 
diff --git a/include/lib/smcc.h b/include/lib/smcc.h
index 41b68b6..7270a88 100644
--- a/include/lib/smcc.h
+++ b/include/lib/smcc.h
@@ -37,7 +37,10 @@
 #define SMC_OK				0
 #define SMC_UNK				0xffffffff
 #define SMC_TYPE_FAST			ULL(1)
+#if !ERROR_DEPRECATED
 #define SMC_TYPE_STD			0
+#endif
+#define SMC_TYPE_YIELD			0
 #define SMC_PREEMPTED		0xfffffffe
 /*******************************************************************************
  * Owning entity number definitions inside the function id as per the SMC
@@ -51,7 +54,7 @@
 #define OEN_SIP_END			2
 #define OEN_OEM_START			3
 #define OEN_OEM_END			3
-#define OEN_STD_START			4	/* Standard Calls */
+#define OEN_STD_START			4	/* Standard Service Calls */
 #define OEN_STD_END			4
 #define OEN_TAP_START			48	/* Trusted Applications */
 #define OEN_TAP_END			49
diff --git a/lib/xlat_tables/xlat_tables_common.c b/lib/xlat_tables/xlat_tables_common.c
index 6980042..f322a9a 100644
--- a/lib/xlat_tables/xlat_tables_common.c
+++ b/lib/xlat_tables/xlat_tables_common.c
@@ -249,15 +249,19 @@
 }
 
 /*
- * Returns attributes of area at `base_va` with size `size`. It returns the
- * attributes of the innermost region that contains it. If there are partial
- * overlaps, it returns -1, as a smaller size is needed.
+ * Look for the innermost region that contains the area at `base_va` with size
+ * `size`. Populate *attr with the attributes of this region.
+ *
+ * On success, this function returns 0.
+ * If there are partial overlaps (meaning that a smaller size is needed) or if
+ * the region can't be found in the given area, it returns -1. In this case the
+ * value pointed by attr should be ignored by the caller.
  */
-static mmap_attr_t mmap_region_attr(mmap_region_t *mm, uintptr_t base_va,
-					size_t size)
+static int mmap_region_attr(mmap_region_t *mm, uintptr_t base_va,
+					size_t size, mmap_attr_t *attr)
 {
 	/* Don't assume that the area is contained in the first region */
-	mmap_attr_t attr = -1;
+	int ret = -1;
 
 	/*
 	 * Get attributes from last (innermost) region that contains the
@@ -277,23 +281,25 @@
 	for (;; ++mm) {
 
 		if (!mm->size)
-			return attr; /* Reached end of list */
+			return ret; /* Reached end of list */
 
 		if (mm->base_va > base_va + size - 1)
-			return attr; /* Next region is after area so end */
+			return ret; /* Next region is after area so end */
 
 		if (mm->base_va + mm->size - 1 < base_va)
 			continue; /* Next region has already been overtaken */
 
-		if (mm->attr == attr)
+		if (!ret && mm->attr == *attr)
 			continue; /* Region doesn't override attribs so skip */
 
 		if (mm->base_va > base_va ||
 			mm->base_va + mm->size - 1 < base_va + size - 1)
 			return -1; /* Region doesn't fully cover our area */
 
-		attr = mm->attr;
+		*attr = mm->attr;
+		ret = 0;
 	}
+	return ret;
 }
 
 static mmap_region_t *init_xlation_table_inner(mmap_region_t *mm,
@@ -336,9 +342,10 @@
 			 * there are partially overlapping regions. On success,
 			 * it will return the innermost region's attributes.
 			 */
-			mmap_attr_t attr = mmap_region_attr(mm, base_va,
-							level_size);
-			if (attr >= 0) {
+			mmap_attr_t attr;
+			int r = mmap_region_attr(mm, base_va, level_size, &attr);
+
+			if (!r) {
 				desc = mmap_desc(attr,
 					base_va - mm->base_va + mm->base_pa,
 					level);
diff --git a/services/spd/tspd/tspd_common.c b/services/spd/tspd/tspd_common.c
index 8eddb2b..1538232 100644
--- a/services/spd/tspd/tspd_common.c
+++ b/services/spd/tspd/tspd_common.c
@@ -41,7 +41,7 @@
 	tsp_ctx->mpidr = read_mpidr_el1();
 	tsp_ctx->state = 0;
 	set_tsp_pstate(tsp_ctx->state, TSP_PSTATE_OFF);
-	clr_std_smc_active_flag(tsp_ctx->state);
+	clr_yield_smc_active_flag(tsp_ctx->state);
 
 	cm_set_context(&tsp_ctx->cpu_ctx, SECURE);
 
@@ -116,18 +116,18 @@
  ******************************************************************************/
 int tspd_abort_preempted_smc(tsp_context_t *tsp_ctx)
 {
-	if (!get_std_smc_active_flag(tsp_ctx->state))
+	if (!get_yield_smc_active_flag(tsp_ctx->state))
 		return 0;
 
 	/* Abort any preempted SMC request */
-	clr_std_smc_active_flag(tsp_ctx->state);
+	clr_yield_smc_active_flag(tsp_ctx->state);
 
 	/*
 	 * Arrange for an entry into the test secure payload. It will
 	 * be returned via TSP_ABORT_DONE case in tspd_smc_handler.
 	 */
 	cm_set_elr_el3(SECURE,
-		       (uint64_t) &tsp_vectors->abort_std_smc_entry);
+		       (uint64_t) &tsp_vectors->abort_yield_smc_entry);
 	uint64_t rc = tspd_synchronous_sp_entry(tsp_ctx);
 
 	if (rc != 0)
diff --git a/services/spd/tspd/tspd_main.c b/services/spd/tspd/tspd_main.c
index 0bf03a4..afa7e2a 100644
--- a/services/spd/tspd/tspd_main.c
+++ b/services/spd/tspd/tspd_main.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -78,7 +78,7 @@
 	cm_set_next_eret_context(NON_SECURE);
 
 	/*
-	 * The TSP was preempted during STD SMC execution.
+	 * The TSP was preempted during execution of a Yielding SMC Call.
 	 * Return back to the normal world with SMC_PREEMPTED as error
 	 * code in x0.
 	 */
@@ -122,7 +122,7 @@
 	 * context since the TSP is supposed to preserve it during S-EL1
 	 * interrupt handling.
 	 */
-	if (get_std_smc_active_flag(tsp_ctx->state)) {
+	if (get_yield_smc_active_flag(tsp_ctx->state)) {
 		tsp_ctx->saved_spsr_el3 = SMC_GET_EL3(&tsp_ctx->cpu_ctx,
 						      CTX_SPSR_EL3);
 		tsp_ctx->saved_elr_el3 = SMC_GET_EL3(&tsp_ctx->cpu_ctx,
@@ -321,7 +321,7 @@
 		 * Restore the relevant EL3 state which saved to service
 		 * this SMC.
 		 */
-		if (get_std_smc_active_flag(tsp_ctx->state)) {
+		if (get_yield_smc_active_flag(tsp_ctx->state)) {
 			SMC_SET_EL3(&tsp_ctx->cpu_ctx,
 				    CTX_SPSR_EL3,
 				    tsp_ctx->saved_spsr_el3);
@@ -437,7 +437,7 @@
 #endif
 	/*
 	 * This function ID is used only by the SP to indicate it has finished
-	 * aborting a preempted Standard SMC request.
+	 * aborting a preempted Yielding SMC Call.
 	 */
 	case TSP_ABORT_DONE:
 
@@ -485,10 +485,10 @@
 	case TSP_FAST_FID(TSP_MUL):
 	case TSP_FAST_FID(TSP_DIV):
 
-	case TSP_STD_FID(TSP_ADD):
-	case TSP_STD_FID(TSP_SUB):
-	case TSP_STD_FID(TSP_MUL):
-	case TSP_STD_FID(TSP_DIV):
+	case TSP_YIELD_FID(TSP_ADD):
+	case TSP_YIELD_FID(TSP_SUB):
+	case TSP_YIELD_FID(TSP_MUL):
+	case TSP_YIELD_FID(TSP_DIV):
 		if (ns) {
 			/*
 			 * This is a fresh request from the non-secure client.
@@ -499,7 +499,7 @@
 			assert(handle == cm_get_context(NON_SECURE));
 
 			/* Check if we are already preempted */
-			if (get_std_smc_active_flag(tsp_ctx->state))
+			if (get_yield_smc_active_flag(tsp_ctx->state))
 				SMC_RET1(handle, SMC_UNK);
 
 			cm_el1_sysregs_context_save(NON_SECURE);
@@ -529,13 +529,14 @@
 				cm_set_elr_el3(SECURE, (uint64_t)
 						&tsp_vectors->fast_smc_entry);
 			} else {
-				set_std_smc_active_flag(tsp_ctx->state);
+				set_yield_smc_active_flag(tsp_ctx->state);
 				cm_set_elr_el3(SECURE, (uint64_t)
-						&tsp_vectors->std_smc_entry);
+						&tsp_vectors->yield_smc_entry);
 #if TSP_NS_INTR_ASYNC_PREEMPT
 				/*
 				 * Enable the routing of NS interrupts to EL3
-				 * during STD SMC processing on this core.
+				 * during processing of a Yielding SMC Call on
+				 * this core.
 				 */
 				enable_intr_rm_local(INTR_TYPE_NS, SECURE);
 #endif
@@ -561,13 +562,13 @@
 			/* Restore non-secure state */
 			cm_el1_sysregs_context_restore(NON_SECURE);
 			cm_set_next_eret_context(NON_SECURE);
-			if (GET_SMC_TYPE(smc_fid) == SMC_TYPE_STD) {
-				clr_std_smc_active_flag(tsp_ctx->state);
+			if (GET_SMC_TYPE(smc_fid) == SMC_TYPE_YIELD) {
+				clr_yield_smc_active_flag(tsp_ctx->state);
 #if TSP_NS_INTR_ASYNC_PREEMPT
 				/*
 				 * Disable the routing of NS interrupts to EL3
-				 * after STD SMC processing is finished on this
-				 * core.
+				 * after processing of a Yielding SMC Call on
+				 * this core is finished.
 				 */
 				disable_intr_rm_local(INTR_TYPE_NS, SECURE);
 #endif
@@ -578,8 +579,8 @@
 
 		break;
 	/*
-	 * Request from the non-secure world to abort a preempted Standard SMC
-	 * call.
+	 * Request from the non-secure world to abort a preempted Yielding SMC
+	 * Call.
 	 */
 	case TSP_FID_ABORT:
 		/* ABORT should only be invoked by normal world */
@@ -611,7 +612,7 @@
 
 		/*
 		 * Request from non secure world to resume the preempted
-		 * Standard SMC call.
+		 * Yielding SMC Call.
 		 */
 	case TSP_FID_RESUME:
 		/* RESUME should be invoked only by normal world */
@@ -628,7 +629,7 @@
 		assert(handle == cm_get_context(NON_SECURE));
 
 		/* Check if we are already preempted before resume */
-		if (!get_std_smc_active_flag(tsp_ctx->state))
+		if (!get_yield_smc_active_flag(tsp_ctx->state))
 			SMC_RET1(handle, SMC_UNK);
 
 		cm_el1_sysregs_context_save(NON_SECURE);
@@ -640,7 +641,7 @@
 #if TSP_NS_INTR_ASYNC_PREEMPT
 		/*
 		 * Enable the routing of NS interrupts to EL3 during resumption
-		 * of STD SMC call on this core.
+		 * of a Yielding SMC Call on this core.
 		 */
 		enable_intr_rm_local(INTR_TYPE_NS, SECURE);
 #endif
@@ -700,13 +701,13 @@
 	tspd_smc_handler
 );
 
-/* Define a SPD runtime service descriptor for standard SMC calls */
+/* Define a SPD runtime service descriptor for Yielding SMC Calls */
 DECLARE_RT_SVC(
 	tspd_std,
 
 	OEN_TOS_START,
 	OEN_TOS_END,
-	SMC_TYPE_STD,
+	SMC_TYPE_YIELD,
 	NULL,
 	tspd_smc_handler
 );
diff --git a/services/spd/tspd/tspd_private.h b/services/spd/tspd/tspd_private.h
index edcad2a..8fadb7a 100644
--- a/services/spd/tspd/tspd_private.h
+++ b/services/spd/tspd/tspd_private.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -33,7 +33,7 @@
 
 
 /*
- * This flag is used by the TSPD to determine if the TSP is servicing a standard
+ * This flag is used by the TSPD to determine if the TSP is servicing a yielding
  * SMC request prior to programming the next entry into the TSP e.g. if TSP
  * execution is preempted by a non-secure interrupt and handed control to the
  * normal world. If another request which is distinct from what the TSP was
@@ -41,15 +41,16 @@
  * reject the new request or service it while ensuring that the previous context
  * is not corrupted.
  */
-#define STD_SMC_ACTIVE_FLAG_SHIFT	2
-#define STD_SMC_ACTIVE_FLAG_MASK	1
-#define get_std_smc_active_flag(state)	((state >> STD_SMC_ACTIVE_FLAG_SHIFT) \
-					 & STD_SMC_ACTIVE_FLAG_MASK)
-#define set_std_smc_active_flag(state)	(state |=                             \
-					 1 << STD_SMC_ACTIVE_FLAG_SHIFT)
-#define clr_std_smc_active_flag(state)	(state &=                             \
-					 ~(STD_SMC_ACTIVE_FLAG_MASK           \
-					   << STD_SMC_ACTIVE_FLAG_SHIFT))
+#define YIELD_SMC_ACTIVE_FLAG_SHIFT	2
+#define YIELD_SMC_ACTIVE_FLAG_MASK	1
+#define get_yield_smc_active_flag(state)				\
+				((state >> YIELD_SMC_ACTIVE_FLAG_SHIFT) \
+				& YIELD_SMC_ACTIVE_FLAG_MASK)
+#define set_yield_smc_active_flag(state)	(state |=		\
+					1 << YIELD_SMC_ACTIVE_FLAG_SHIFT)
+#define clr_yield_smc_active_flag(state)	(state &=		\
+					~(YIELD_SMC_ACTIVE_FLAG_MASK	\
+					<< YIELD_SMC_ACTIVE_FLAG_SHIFT))
 
 /*******************************************************************************
  * Secure Payload execution state information i.e. aarch32 or aarch64
