diff --git a/sys/arch/riscv/include/frame.h b/sys/arch/riscv/include/frame.h
index c847fc61fee6..1fae5ca1491d 100644
--- a/sys/arch/riscv/include/frame.h
+++ b/sys/arch/riscv/include/frame.h
@@ -39,6 +39,10 @@ struct trapframe {
 	register_t tf_tval;		// supervisor trap value
 	register_t tf_cause;		// supervisor cause register
 	register_t tf_sr;		// supervisor status register
+	register_t tf_pad;		// required by ABI:
+					// stack should be aligned to
+					// 16-byte boundaries both for
+					// 64- and 32-bit ABIs
 #define tf_reg		tf_regs.r_reg
 #define tf_pc		tf_regs.r_pc
 #define tf_ra		tf_reg[_X_RA]
@@ -81,6 +85,7 @@ struct trapframe32 {
 	register32_t tf_tval;
 	register32_t tf_cause;
 	register32_t tf_sr;
+	register32_t tf_pad;		// see above
 };
 #endif