diff options
Diffstat (limited to 'core/minute-ia/irq_handler.h')
-rw-r--r-- | core/minute-ia/irq_handler.h | 14 |
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 |