diff --git a/lib/smc/include/smc-rmi.h b/lib/smc/include/smc-rmi.h
index f9e5773..b0c0176 100644
--- a/lib/smc/include/smc-rmi.h
+++ b/lib/smc/include/smc-rmi.h
@@ -465,7 +465,7 @@
 			/* Base address of pending RIPAS change */
 			unsigned long ripas_base;	/* 0x500 */
 			/* Size of pending RIPAS change */
-			unsigned long ripas_size;	/* 0x508 */
+			unsigned long ripas_top;	/* 0x508 */
 			/* RIPAS value of pending RIPAS change */
 			unsigned char ripas_value;	/* 0x510 */
 		   }, 0x500, 0x600);
diff --git a/lib/smc/src/smc-rmi-offsets.c b/lib/smc/src/smc-rmi-offsets.c
index 81bfdbc..06fc811 100644
--- a/lib/smc/src/smc-rmi-offsets.c
+++ b/lib/smc/src/smc-rmi-offsets.c
@@ -49,7 +49,7 @@
 COMPILER_ASSERT(offsetof(struct rmi_rec_exit, cntv_ctl) == 0x410);
 COMPILER_ASSERT(offsetof(struct rmi_rec_exit, cntv_cval) == 0x418);
 COMPILER_ASSERT(offsetof(struct rmi_rec_exit, ripas_base) == 0x500);
-COMPILER_ASSERT(offsetof(struct rmi_rec_exit, ripas_size) == 0x508);
+COMPILER_ASSERT(offsetof(struct rmi_rec_exit, ripas_top) == 0x508);
 COMPILER_ASSERT(offsetof(struct rmi_rec_exit, ripas_value) == 0x510);
 COMPILER_ASSERT(offsetof(struct rmi_rec_exit, imm) == 0x600);
 COMPILER_ASSERT(offsetof(struct rmi_rec_exit, pmu_ovf) == 0x700);
diff --git a/plat/host/common/include/host_rmi_wrappers.h b/plat/host/common/include/host_rmi_wrappers.h
index f95d307..f1f09f6 100644
--- a/plat/host/common/include/host_rmi_wrappers.h
+++ b/plat/host/common/include/host_rmi_wrappers.h
@@ -8,26 +8,26 @@
 
 #include <smc-rmi.h>
 
-void host_rmi_granule_delegate(void *granule_address, struct smc_result *ret);
-void host_rmi_granule_undelegate(void *granule_address, struct smc_result *ret);
-void host_rmi_realm_create(void *rd, void *params_ptr, struct smc_result *ret);
-void host_rmi_realm_destroy(void *rd, struct smc_result *ret);
+void host_rmi_granule_delegate(void *granule_address, struct smc_result *res);
+void host_rmi_granule_undelegate(void *granule_address, struct smc_result *res);
+void host_rmi_realm_create(void *rd, void *params_ptr, struct smc_result *res);
+void host_rmi_realm_destroy(void *rd, struct smc_result *res);
 void host_rmi_rtt_create(void *rd, void *rtt, void *ipa,
-			 unsigned int level, struct smc_result *ret);
+			 unsigned int level, struct smc_result *res);
 void host_rmi_rtt_destroy(void *rd, void *ipa, unsigned int level,
-			  struct smc_result *ret);
-void host_rmi_rec_aux_count(void *rd, struct smc_result *ret);
+			  struct smc_result *res);
+void host_rmi_rec_aux_count(void *rd, struct smc_result *res);
 void host_rmi_rec_create(void *rd, void *rec, void *params_ptr,
-			 struct smc_result *ret);
-void host_rmi_rec_destroy(void *rec, struct smc_result *ret);
-void host_rmi_realm_activate(void *rd, struct smc_result *ret);
-void host_rmi_rec_enter(void *rec, void *run_ptr, struct smc_result *ret);
+			 struct smc_result *res);
+void host_rmi_rec_destroy(void *rec, struct smc_result *res);
+void host_rmi_realm_activate(void *rd, struct smc_result *res);
+void host_rmi_rec_enter(void *rec, void *run_ptr, struct smc_result *res);
 void host_rmi_data_create(uintptr_t data, void *rd, uintptr_t ipa,
-			 uintptr_t src, struct smc_result *ret);
+			 uintptr_t src, struct smc_result *res);
 void host_rmi_data_create_unknown(void *rd, uintptr_t data, uintptr_t ipa,
-			struct smc_result *ret);
+			struct smc_result *res);
 void host_rmi_rtt_init_ripas(void *rd, uintptr_t base, uintptr_t top,
-			struct smc_result *ret);
-void host_rmi_data_destroy(void *rd, uintptr_t ipa, struct smc_result *ret);
+			struct smc_result *res);
+void host_rmi_data_destroy(void *rd, uintptr_t ipa, struct smc_result *res);
 
 #endif /* HOST_RMI_WRAPPERS_H */
diff --git a/plat/host/common/src/host_rmi_wrappers.c b/plat/host/common/src/host_rmi_wrappers.c
index 131744c..6d98ffb 100644
--- a/plat/host/common/src/host_rmi_wrappers.c
+++ b/plat/host/common/src/host_rmi_wrappers.c
@@ -13,42 +13,42 @@
 		   unsigned long arg3,
 		   unsigned long arg4,
 		   unsigned long arg5,
-		   struct smc_result *ret);
+		   struct smc_result *res);
 
-void host_rmi_granule_delegate(void *granule_address, struct smc_result *ret)
+void host_rmi_granule_delegate(void *granule_address, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_GRANULE_DELEGATE,
 		(uintptr_t)granule_address,
 		0, 0, 0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_granule_undelegate(void *granule_address, struct smc_result *ret)
+void host_rmi_granule_undelegate(void *granule_address, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_GRANULE_UNDELEGATE,
 		(uintptr_t)granule_address,
 		0, 0, 0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_realm_create(void *rd, void *params_ptr, struct smc_result *ret)
+void host_rmi_realm_create(void *rd, void *params_ptr, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_REALM_CREATE,
 		(uintptr_t)rd,
 		(uintptr_t)params_ptr,
 		0, 0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_realm_destroy(void *rd, struct smc_result *ret)
+void host_rmi_realm_destroy(void *rd, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_REALM_DESTROY,
 		(uintptr_t)rd,
 		0, 0, 0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_rtt_create(void *rd, void *rtt, void *ipa, unsigned int level, struct smc_result *ret)
+void host_rmi_rtt_create(void *rd, void *rtt, void *ipa, unsigned int level, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_RTT_CREATE,
 		(uintptr_t)rd,
@@ -56,97 +56,97 @@
 		(uintptr_t)ipa,
 		level,
 		0, 0,
-		ret);
+		res);
 }
 
 void host_rmi_rtt_destroy(void *rd, void *ipa, unsigned int level,
-			  struct smc_result *ret)
+			  struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_RTT_DESTROY,
 		(uintptr_t)rd,
 		(uintptr_t)ipa,
 		level,
 		0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_rec_aux_count(void *rd, struct smc_result *ret)
+void host_rmi_rec_aux_count(void *rd, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_REC_AUX_COUNT,
 		(uintptr_t)rd,
 		0, 0, 0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_rec_create(void *rd, void *rec, void *params_ptr, struct smc_result *ret)
+void host_rmi_rec_create(void *rd, void *rec, void *params_ptr, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_REC_CREATE,
 		(uintptr_t)rd,
 		(uintptr_t)rec,
 		(uintptr_t)params_ptr,
 		0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_rec_destroy(void *rec, struct smc_result *ret)
+void host_rmi_rec_destroy(void *rec, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_REC_DESTROY,
 		(uintptr_t)rec,
 		0, 0, 0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_realm_activate(void *rd, struct smc_result *ret)
+void host_rmi_realm_activate(void *rd, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_REALM_ACTIVATE,
 		(uintptr_t)rd,
 		0, 0, 0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_rec_enter(void *rec, void *run_ptr, struct smc_result *ret)
+void host_rmi_rec_enter(void *rec, void *run_ptr, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_REC_ENTER,
 		(uintptr_t)rec,
 		(uintptr_t)run_ptr,
 		0, 0, 0, 0,
-		ret);
+		res);
 }
 
 void host_rmi_data_create(uintptr_t data, void *rd, uintptr_t ipa,
-			 uintptr_t src, struct smc_result *ret)
+			 uintptr_t src, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_DATA_CREATE,
 		(uintptr_t)data,
 		(uintptr_t)rd, ipa, src,
 		0, 0,
-		ret);
+		res);
 }
 
 void host_rmi_data_create_unknown(void *rd, uintptr_t data, uintptr_t ipa,
-			struct smc_result *ret)
+			struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_DATA_CREATE_UNKNOWN,
 		(uintptr_t)rd,
 		(uintptr_t)data, ipa,
 		0, 0, 0,
-		ret);
+		res);
 }
 
 void host_rmi_rtt_init_ripas(void *rd, uintptr_t base, uintptr_t top,
-			struct smc_result *ret)
+			struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_RTT_INIT_RIPAS,
 		(uintptr_t)rd,
 		base, top,
 		0, 0, 0,
-		ret);
+		res);
 }
 
-void host_rmi_data_destroy(void *rd, uintptr_t ipa,	struct smc_result *ret)
+void host_rmi_data_destroy(void *rd, uintptr_t ipa, struct smc_result *res)
 {
 	handle_ns_smc(SMC_RMM_DATA_DESTROY,
 		(uintptr_t)rd, ipa,
 		0, 0, 0, 0,
-		ret);
+		res);
 }
diff --git a/runtime/core/handler.c b/runtime/core/handler.c
index 9550bb2..891b043 100644
--- a/runtime/core/handler.c
+++ b/runtime/core/handler.c
@@ -52,14 +52,14 @@
 typedef unsigned long (*handler_5)(unsigned long arg0, unsigned long arg1,
 				   unsigned long arg2, unsigned long arg3,
 				   unsigned long arg4);
-typedef void (*handler_1_o)(unsigned long arg0, struct smc_result *ret);
+typedef void (*handler_1_o)(unsigned long arg0, struct smc_result *res);
 typedef void (*handler_2_o)(unsigned long arg0, unsigned long arg1,
-			    struct smc_result *ret);
+			    struct smc_result *res);
 typedef void (*handler_3_o)(unsigned long arg0, unsigned long arg1,
-			    unsigned long arg2, struct smc_result *ret);
+			    unsigned long arg2, struct smc_result *res);
 typedef void (*handler_4_o)(unsigned long arg0, unsigned long arg1,
 			    unsigned long arg2, unsigned long arg3,
-			    struct smc_result *ret);
+			    struct smc_result *res);
 
 /*
  * SMC RMI handler type encoding:
@@ -167,7 +167,7 @@
 
 static void rmi_log_on_exit(unsigned long handler_id,
 			    unsigned long args[],
-			    struct smc_result *ret)
+			    struct smc_result *res)
 {
 	const struct smc_handler *handler = &smc_handlers[handler_id];
 	unsigned long function_id = SMC64_RMI_FID(handler_id);
@@ -183,11 +183,11 @@
 		 * RMM_VERSION is special because it returns the
 		 * version number, not the error code.
 		 */
-		INFO("SMC_RMM_%-21s > %lx\n", handler->fn_name, ret->x[0]);
+		INFO("SMC_RMM_%-21s > %lx\n", handler->fn_name, res->x[0]);
 		return;
 	}
 
-	rc = unpack_return_code(ret->x[0]);
+	rc = unpack_return_code(res->x[0]);
 
 	if ((handler->log_exec) ||
 	    (handler->log_error && (rc.status != RMI_SUCCESS))) {
@@ -204,7 +204,7 @@
 
 		/* Print status */
 		if (rc.status >= RMI_ERROR_COUNT) {
-			INFO(" > %lx", ret->x[0]);
+			INFO(" > %lx", res->x[0]);
 		} else {
 			INFO(" > RMI_%s", rmi_status_string[rc.status]);
 		}
@@ -225,7 +225,7 @@
 			assert(num <= MAX_NUM_OUTPUT_VALS);
 
 			for (unsigned int i = 1U; i <= num; i++) {
-				INFO(" %lx", ret->x[i]);
+				INFO(" %lx", res->x[i]);
 			}
 		}
 		INFO("\n");
@@ -239,7 +239,7 @@
 		   unsigned long arg3,
 		   unsigned long arg4,
 		   unsigned long arg5,
-		   struct smc_result *ret)
+		   struct smc_result *res)
 {
 	unsigned long handler_id;
 	const struct smc_handler *handler = NULL;
@@ -262,7 +262,7 @@
 	if ((handler == NULL) || (handler->fn_dummy == NULL)) {
 		VERBOSE("[%s] unknown function_id: %lx\n",
 			__func__, function_id);
-		ret->x[0] = SMC_UNKNOWN;
+		res->x[0] = SMC_UNKNOWN;
 		return;
 	}
 
@@ -279,40 +279,40 @@
 
 	switch (handler->type) {
 	case rmi_type_00:
-		ret->x[0] = handler->f_00();
+		res->x[0] = handler->f_00();
 		break;
 	case rmi_type_10:
-		ret->x[0] = handler->f_10(arg0);
+		res->x[0] = handler->f_10(arg0);
 		break;
 	case rmi_type_20:
-		ret->x[0] = handler->f_20(arg0, arg1);
+		res->x[0] = handler->f_20(arg0, arg1);
 		break;
 	case rmi_type_30:
-		ret->x[0] = handler->f_30(arg0, arg1, arg2);
+		res->x[0] = handler->f_30(arg0, arg1, arg2);
 		break;
 	case rmi_type_40:
-		ret->x[0] = handler->f_40(arg0, arg1, arg2, arg3);
+		res->x[0] = handler->f_40(arg0, arg1, arg2, arg3);
 		break;
 	case rmi_type_50:
-		ret->x[0] = handler->f_50(arg0, arg1, arg2, arg3, arg4);
+		res->x[0] = handler->f_50(arg0, arg1, arg2, arg3, arg4);
 		break;
 	case rmi_type_11:
-		handler->f_11(arg0, ret);
+		handler->f_11(arg0, res);
 		break;
 	case rmi_type_22:
-		handler->f_22(arg0, arg1, ret);
+		handler->f_22(arg0, arg1, res);
 		break;
 	case rmi_type_31:
-		handler->f_31(arg0, arg1, arg2, ret);
+		handler->f_31(arg0, arg1, arg2, res);
 		break;
 	case rmi_type_32:
-		handler->f_32(arg0, arg1, arg2, ret);
+		handler->f_32(arg0, arg1, arg2, res);
 		break;
 	case rmi_type_34:
-		handler->f_34(arg0, arg1, arg2, ret);
+		handler->f_34(arg0, arg1, arg2, res);
 		break;
 	case rmi_type_41:
-		handler->f_41(arg0, arg1, arg2, arg3, ret);
+		handler->f_41(arg0, arg1, arg2, arg3, res);
 		break;
 	default:
 		assert(false);
@@ -321,7 +321,7 @@
 	if (rmi_call_log_enabled) {
 		unsigned long args[] = {arg0, arg1, arg2, arg3, arg4};
 
-		rmi_log_on_exit(handler_id, args, ret);
+		rmi_log_on_exit(handler_id, args, res);
 	}
 
 	/* If the handler uses FPU, restore the saved  NS simd context. */
diff --git a/runtime/include/smc-handler.h b/runtime/include/smc-handler.h
index fb42e6b..1d6a41a 100644
--- a/runtime/include/smc-handler.h
+++ b/runtime/include/smc-handler.h
@@ -11,7 +11,7 @@
 unsigned long smc_version(void);
 
 void smc_read_feature_register(unsigned long index,
-				struct smc_result *ret_struct);
+				struct smc_result *res);
 
 unsigned long smc_data_create(unsigned long rd_addr,
 			      unsigned long data_addr,
@@ -25,7 +25,7 @@
 
 void smc_data_destroy(unsigned long rd_addr,
 		      unsigned long map_addr,
-		      struct smc_result *ret_struct);
+		      struct smc_result *res);
 
 unsigned long smc_granule_delegate(unsigned long addr);
 
@@ -48,7 +48,7 @@
 			    unsigned long rec_run_addr);
 
 void smc_rec_aux_count(unsigned long rd_addr,
-			struct smc_result *ret_struct);
+			struct smc_result *res);
 
 unsigned long smc_rtt_create(unsigned long rd_addr,
 			     unsigned long rtt_addr,
@@ -58,12 +58,12 @@
 void smc_rtt_destroy(unsigned long rd_addr,
 		     unsigned long map_addr,
 		     unsigned long ulevel,
-		     struct smc_result *ret_struct);
+		     struct smc_result *res);
 
 void smc_rtt_fold(unsigned long rd_addr,
 		  unsigned long map_addr,
 		  unsigned long ulevel,
-		  struct smc_result *ret_struct);
+		  struct smc_result *res);
 
 unsigned long smc_rtt_map_unprotected(unsigned long rd_addr,
 				      unsigned long map_addr,
@@ -78,7 +78,7 @@
 void smc_rtt_read_entry(unsigned long rd_addr,
 			unsigned long map_addr,
 			unsigned long ulevel,
-			struct smc_result *ret_struct);
+			struct smc_result *res);
 
 unsigned long smc_psci_complete(unsigned long calling_rec_addr,
 				unsigned long target_rec_addr);
@@ -92,6 +92,6 @@
 			unsigned long rec_addr,
 			unsigned long base,
 			unsigned long top,
-			struct smc_result *ret_struct);
+			struct smc_result *res);
 
 #endif /* SMC_HANDLER_H */
diff --git a/runtime/rmi/feature.c b/runtime/rmi/feature.c
index dc086c8..1f67b3c 100644
--- a/runtime/rmi/feature.c
+++ b/runtime/rmi/feature.c
@@ -51,15 +51,15 @@
 }
 
 void smc_read_feature_register(unsigned long index,
-				struct smc_result *ret_struct)
+				struct smc_result *res)
 {
 	switch (index) {
 	case RMM_FEATURE_REGISTER_0_INDEX:
-		ret_struct->x[0] = RMI_SUCCESS;
-		ret_struct->x[1] = get_feature_register_0();
+		res->x[0] = RMI_SUCCESS;
+		res->x[1] = get_feature_register_0();
 		break;
 	default:
-		ret_struct->x[0] = RMI_ERROR_INPUT;
-		ret_struct->x[1] = 0UL;
+		res->x[0] = RMI_ERROR_INPUT;
+		res->x[1] = 0UL;
 	}
 }
diff --git a/runtime/rmi/rec.c b/runtime/rmi/rec.c
index 7226f90..52ff304 100644
--- a/runtime/rmi/rec.c
+++ b/runtime/rmi/rec.c
@@ -378,7 +378,7 @@
 	return RMI_SUCCESS;
 }
 
-void smc_rec_aux_count(unsigned long rd_addr, struct smc_result *ret_struct)
+void smc_rec_aux_count(unsigned long rd_addr, struct smc_result *res)
 {
 	unsigned int num_rec_aux;
 	struct granule *g_rd;
@@ -386,7 +386,7 @@
 
 	g_rd = find_lock_granule(rd_addr, GRANULE_STATE_RD);
 	if (g_rd == NULL) {
-		ret_struct->x[0] = RMI_ERROR_INPUT;
+		res->x[0] = RMI_ERROR_INPUT;
 		return;
 	}
 
@@ -395,8 +395,8 @@
 	buffer_unmap(rd);
 	granule_unlock(g_rd);
 
-	ret_struct->x[0] = RMI_SUCCESS;
-	ret_struct->x[1] = (unsigned long)num_rec_aux;
+	res->x[0] = RMI_SUCCESS;
+	res->x[1] = (unsigned long)num_rec_aux;
 }
 
 unsigned long smc_psci_complete(unsigned long calling_rec_addr,
diff --git a/runtime/rsi/memory.c b/runtime/rsi/memory.c
index 1affda7..3899031 100644
--- a/runtime/rsi/memory.c
+++ b/runtime/rsi/memory.c
@@ -14,28 +14,27 @@
 			      struct rmi_rec_exit *rec_exit,
 			      struct rsi_result *res)
 {
-	unsigned long start = rec->regs[1];
-	unsigned long size = rec->regs[2];
-	unsigned long end = start + size;
+	unsigned long base = rec->regs[1];
+	unsigned long top = base + rec->regs[2];
 	enum ripas ripas_val = (enum ripas)rec->regs[3];
 
-	if ((ripas_val > RIPAS_RAM)	    ||
-	    !GRANULE_ALIGNED(start) || !GRANULE_ALIGNED(size) ||
-	    (end <= start)	    || /* Size is zero, or range overflows */
-	    !region_in_rec_par(rec, start, end)) {
+	if ((ripas_val > RIPAS_RAM) ||
+	    !GRANULE_ALIGNED(base) || !GRANULE_ALIGNED(top) ||
+	    (top <= base)	    || /* Size is zero, or range overflows */
+	    !region_in_rec_par(rec, base, top)) {
 		res->action = UPDATE_REC_RETURN_TO_REALM;
 		res->smc_res.x[0] = RSI_ERROR_INPUT;
 		return;
 	}
 
-	rec->set_ripas.base = start;
-	rec->set_ripas.top = end;
-	rec->set_ripas.addr = start;
+	rec->set_ripas.base = base;
+	rec->set_ripas.top = top;
+	rec->set_ripas.addr = base;
 	rec->set_ripas.ripas_val = ripas_val;
 
 	rec_exit->exit_reason = RMI_EXIT_RIPAS_CHANGE;
-	rec_exit->ripas_base = start;
-	rec_exit->ripas_size = size;
+	rec_exit->ripas_base = base;
+	rec_exit->ripas_top = top;
 	rec_exit->ripas_value = (unsigned int)ripas_val;
 
 	res->action = UPDATE_REC_EXIT_TO_HOST;
