summaryrefslogtreecommitdiff
path: root/core/minute-ia/irq_handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/minute-ia/irq_handler.h')
-rw-r--r--core/minute-ia/irq_handler.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/core/minute-ia/irq_handler.h b/core/minute-ia/irq_handler.h
index c561ee472b..4df2b14da6 100644
--- a/core/minute-ia/irq_handler.h
+++ b/core/minute-ia/irq_handler.h
@@ -9,10 +9,20 @@
#define __CROS_EC_IRQ_HANDLER_H
#include "registers.h"
+#include "task_defs.h"
#ifdef CONFIG_FPU
-#define save_fpu_ctx "fnsave 20(%eax)\n"
-#define rstr_fpu_ctx "frstor 20(%eax)\n"
+#define save_fpu_ctx "movl "USE_FPU_OFFSET_STR"(%eax), %ebx\n" \
+ "test %ebx, %ebx\n" \
+ "jz 9f\n" \
+ "fnsave "FPU_CTX_OFFSET_STR"(%eax)\n" \
+ "9:\n"
+
+#define rstr_fpu_ctx "movl "USE_FPU_OFFSET_STR"(%eax), %ebx\n" \
+ "test %ebx, %ebx\n" \
+ "jz 9f\n" \
+ "frstor "FPU_CTX_OFFSET_STR"(%eax)\n" \
+ "9:\n"
#else
#define save_fpu_ctx
#define rstr_fpu_ctx