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;
