summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAndrew Boie <andrew.p.boie@intel.com>2016-09-26 13:03:36 -0700
committerAndrew Boie <andrew.p.boie@intel.com>2016-09-28 20:28:27 +0000
commit26b1651f0cb478a016ccd7233e5dc3b002e4481b (patch)
tree4838694e3bbe3d243e0dd08f0a36d7991aea4eca /arch
parent70d8a327405f8c9bd6030c5bf989a5fe49b1d83a (diff)
intstub.S: fix argument to _sys_power_save_idle_exit on IAMCU
Change-Id: I5aa1abe464ba2b8f9c36be78a95705ffcf993c7d Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/core/intstub.S10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/core/intstub.S b/arch/x86/core/intstub.S
index c2821a23b..102651399 100644
--- a/arch/x86/core/intstub.S
+++ b/arch/x86/core/intstub.S
@@ -450,7 +450,14 @@ handle_idle:
#if defined(CONFIG_NANOKERNEL) && defined(CONFIG_TICKLESS_IDLE)
call _power_save_idle_exit
#else
+ /* Populate 'ticks' argument to _sys_power_save_idle_exit */
+#ifdef CONFIG_X86_IAMCU
+ movl __tNANO_idle_OFFSET(%ecx), %eax
+#else
+ /* SYS V calling convention */
push __tNANO_idle_OFFSET(%ecx)
+#endif
+ /* Zero out _nanokernel.idle */
movl $0, __tNANO_idle_OFFSET(%ecx)
/*
@@ -461,7 +468,10 @@ handle_idle:
*/
call _sys_power_save_idle_exit
+#ifndef CONFIG_X86_IAMCU
+ /* SYS V: discard 'ticks' argument passed on the stack */
add $0x4, %esp
+#endif
#endif /* CONFIG_NANOKERNEL && CONFIG_TICKLESS_IDLE */
popl %edx
popl %eax