diff --git a/src/arch/aarch64/hftest/power_mgmt.c b/src/arch/aarch64/hftest/power_mgmt.c
index ab2332e..ea46cce 100644
--- a/src/arch/aarch64/hftest/power_mgmt.c
+++ b/src/arch/aarch64/hftest/power_mgmt.c
@@ -36,7 +36,7 @@
 bool arch_cpu_start(uintptr_t id, struct arch_cpu_start_state *state)
 {
 	void vm_cpu_entry(uintptr_t arg);
-	smc_res_t smc_res;
+	struct smc_result smc_res;
 
 	/* Try to start the CPU. */
 	smc_res = smc64(PSCI_CPU_ON, id, (uintptr_t)&vm_cpu_entry,
@@ -69,7 +69,7 @@
 enum power_status arch_cpu_status(cpu_id_t cpu_id)
 {
 	uint32_t lowest_affinity_level = 0;
-	smc_res_t smc_res;
+	struct smc_result smc_res;
 
 	/*
 	 * This works because the power_status enum values happen to be the same
diff --git a/src/arch/aarch64/hypervisor/handler.c b/src/arch/aarch64/hypervisor/handler.c
index 8c97203..26b5496 100644
--- a/src/arch/aarch64/hypervisor/handler.c
+++ b/src/arch/aarch64/hypervisor/handler.c
@@ -273,7 +273,7 @@
  * Forwards the call if access is granted.
  * Returns true if call is forwarded.
  */
-static bool smc_forwarder(const struct vcpu *vcpu, smc_res_t *ret)
+static bool smc_forwarder(const struct vcpu *vcpu, struct smc_result *ret)
 {
 	uint32_t func = vcpu->regs.r[0];
 	/* TODO(b/132421503): obtain vmid according to new scheme. */
@@ -362,7 +362,8 @@
 /**
  * Processes SMC instruction calls.
  */
-static bool smc_handler(struct vcpu *vcpu, smc_res_t *ret, struct vcpu **next)
+static bool smc_handler(struct vcpu *vcpu, struct smc_result *ret,
+			struct vcpu **next)
 {
 	uint32_t func = vcpu->regs.r[0];
 
@@ -582,7 +583,7 @@
 
 	case 0x17: /* EC = 010111, SMC instruction. */ {
 		uintreg_t smc_pc = vcpu->regs.pc;
-		smc_res_t ret = {0};
+		struct smc_result ret = {0};
 		struct vcpu *next = NULL;
 
 		if (!smc_handler(vcpu, &ret, &next)) {
diff --git a/src/arch/aarch64/hypervisor/psci_handler.c b/src/arch/aarch64/hypervisor/psci_handler.c
index 8df6ff6..9aa8570 100644
--- a/src/arch/aarch64/hypervisor/psci_handler.c
+++ b/src/arch/aarch64/hypervisor/psci_handler.c
@@ -37,7 +37,7 @@
 /* Performs arch specific boot time initialisation. */
 void arch_one_time_init(void)
 {
-	smc_res_t smc_res =
+	struct smc_result smc_res =
 		smc32(PSCI_VERSION, 0, 0, 0, 0, 0, 0, SMCCC_CALLER_HYPERVISOR);
 
 	el3_psci_version = smc_res.res0;
@@ -72,7 +72,7 @@
 			     uintreg_t arg1, uintreg_t arg2, uintreg_t *ret)
 {
 	struct cpu *c;
-	smc_res_t smc_res;
+	struct smc_result smc_res;
 
 	/*
 	 * If there's a problem with the EL3 PSCI, block standard secure service
diff --git a/src/arch/aarch64/smc.c b/src/arch/aarch64/smc.c
index 34a8847..44d97ce 100644
--- a/src/arch/aarch64/smc.c
+++ b/src/arch/aarch64/smc.c
@@ -18,9 +18,10 @@
 
 #include <stdint.h>
 
-static smc_res_t smc_internal(uint32_t func, uint64_t arg0, uint64_t arg1,
-			      uint64_t arg2, uint64_t arg3, uint64_t arg4,
-			      uint64_t arg5, uint32_t caller_id)
+static struct smc_result smc_internal(uint32_t func, uint64_t arg0,
+				      uint64_t arg1, uint64_t arg2,
+				      uint64_t arg3, uint64_t arg4,
+				      uint64_t arg5, uint32_t caller_id)
 {
 	register uint64_t r0 __asm__("x0") = func;
 	register uint64_t r1 __asm__("x1") = arg0;
@@ -37,33 +38,35 @@
 		"+r"(r0), "+r"(r1), "+r"(r2), "+r"(r3), "+r"(r4), "+r"(r5),
 		"+r"(r6), "+r"(r7));
 
-	return (smc_res_t){.res0 = r0,
-			   .res1 = r1,
-			   .res2 = r2,
-			   .res3 = r3,
-			   .res4 = r4,
-			   .res5 = r5,
-			   .res6 = r6,
-			   .res7 = r7};
+	return (struct smc_result){.res0 = r0,
+				   .res1 = r1,
+				   .res2 = r2,
+				   .res3 = r3,
+				   .res4 = r4,
+				   .res5 = r5,
+				   .res6 = r6,
+				   .res7 = r7};
 }
 
-smc_res_t smc32(uint32_t func, uint32_t arg0, uint32_t arg1, uint32_t arg2,
-		uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t caller_id)
+struct smc_result smc32(uint32_t func, uint32_t arg0, uint32_t arg1,
+			uint32_t arg2, uint32_t arg3, uint32_t arg4,
+			uint32_t arg5, uint32_t caller_id)
 {
 	return smc_internal(func | SMCCC_32_BIT, arg0, arg1, arg2, arg3, arg4,
 			    arg5, caller_id);
 }
 
-smc_res_t smc64(uint32_t func, uint64_t arg0, uint64_t arg1, uint64_t arg2,
-		uint64_t arg3, uint64_t arg4, uint64_t arg5, uint32_t caller_id)
+struct smc_result smc64(uint32_t func, uint64_t arg0, uint64_t arg1,
+			uint64_t arg2, uint64_t arg3, uint64_t arg4,
+			uint64_t arg5, uint32_t caller_id)
 {
 	return smc_internal(func | SMCCC_64_BIT, arg0, arg1, arg2, arg3, arg4,
 			    arg5, caller_id);
 }
 
-smc_res_t smc_forward(uint32_t func, uint64_t arg0, uint64_t arg1,
-		      uint64_t arg2, uint64_t arg3, uint64_t arg4,
-		      uint64_t arg5, uint32_t caller_id)
+struct smc_result smc_forward(uint32_t func, uint64_t arg0, uint64_t arg1,
+			      uint64_t arg2, uint64_t arg3, uint64_t arg4,
+			      uint64_t arg5, uint32_t caller_id)
 {
 	return smc_internal(func, arg0, arg1, arg2, arg3, arg4, arg5,
 			    caller_id);
diff --git a/src/arch/aarch64/smc.h b/src/arch/aarch64/smc.h
index 5e04f26..1d06a1d 100644
--- a/src/arch/aarch64/smc.h
+++ b/src/arch/aarch64/smc.h
@@ -47,7 +47,7 @@
 
 /* clang-format on */
 
-typedef struct smc_res {
+struct smc_result {
 	uint64_t res0;
 	uint64_t res1;
 	uint64_t res2;
@@ -56,16 +56,16 @@
 	uint64_t res5;
 	uint64_t res6;
 	uint64_t res7;
-} smc_res_t;
+};
 
-smc_res_t smc32(uint32_t func, uint32_t arg0, uint32_t arg1, uint32_t arg2,
-		uint32_t arg3, uint32_t arg4, uint32_t arg5,
-		uint32_t caller_id);
+struct smc_result smc32(uint32_t func, uint32_t arg0, uint32_t arg1,
+			uint32_t arg2, uint32_t arg3, uint32_t arg4,
+			uint32_t arg5, uint32_t caller_id);
 
-smc_res_t smc64(uint32_t func, uint64_t arg0, uint64_t arg1, uint64_t arg2,
-		uint64_t arg3, uint64_t arg4, uint64_t arg5,
-		uint32_t caller_id);
+struct smc_result smc64(uint32_t func, uint64_t arg0, uint64_t arg1,
+			uint64_t arg2, uint64_t arg3, uint64_t arg4,
+			uint64_t arg5, uint32_t caller_id);
 
-smc_res_t smc_forward(uint32_t func, uint64_t arg0, uint64_t arg1,
-		      uint64_t arg2, uint64_t arg3, uint64_t arg4,
-		      uint64_t arg5, uint32_t caller_id);
+struct smc_result smc_forward(uint32_t func, uint64_t arg0, uint64_t arg1,
+			      uint64_t arg2, uint64_t arg3, uint64_t arg4,
+			      uint64_t arg5, uint32_t caller_id);
