aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/arch
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2007-11-23 16:22:36 +0000
committerKeir Fraser <keir.fraser@citrix.com>2007-11-23 16:22:36 +0000
commitbb44bead1012120e08e81ce206612618384481de (patch)
tree5994c57fa757a48652180ff9077f26fddaae2bc8 /extras/mini-os/arch
parent8d71c3dfb8f23ff68a03e6640cc4a8c40d25ea99 (diff)
downloadxen-bb44bead1012120e08e81ce206612618384481de.tar.gz
xen-bb44bead1012120e08e81ce206612618384481de.tar.bz2
xen-bb44bead1012120e08e81ce206612618384481de.zip
[Mini-OS] Fix stack closures
So as to make backtracing tools happy, correctly close x86 stacks for new threads as well as on callback in the x86_32 case since there is no unwind marker. Signed-off-by: Samuel Thibault <samuel.thibault@citrix.com>
Diffstat (limited to 'extras/mini-os/arch')
-rw-r--r--extras/mini-os/arch/x86/x86_32.S3
-rw-r--r--extras/mini-os/arch/x86/x86_64.S2
2 files changed, 5 insertions, 0 deletions
diff --git a/extras/mini-os/arch/x86/x86_32.S b/extras/mini-os/arch/x86/x86_32.S
index b6f1be3a01..2d359ab44a 100644
--- a/extras/mini-os/arch/x86/x86_32.S
+++ b/extras/mini-os/arch/x86/x86_32.S
@@ -126,6 +126,7 @@ ENTRY(hypervisor_callback)
cmpl $ecrit,%eax
jb critical_region_fixup
11: push %esp
+ xorl %ebp,%ebp
call do_hypervisor_callback
add $4,%esp
movl HYPERVISOR_shared_info,%esi
@@ -281,6 +282,8 @@ ENTRY(spurious_interrupt_bug)
ENTRY(thread_starter)
popl %eax
popl %ebx
+ pushl $0
+ xorl %ebp,%ebp
pushl %eax
call *%ebx
call exit_thread
diff --git a/extras/mini-os/arch/x86/x86_64.S b/extras/mini-os/arch/x86/x86_64.S
index 1b5e0f7b37..0f85577716 100644
--- a/extras/mini-os/arch/x86/x86_64.S
+++ b/extras/mini-os/arch/x86/x86_64.S
@@ -380,6 +380,8 @@ ENTRY(page_fault)
ENTRY(thread_starter)
popq %rdi
popq %rbx
+ pushq $0
+ xorq %rbp,%rbp
call *%rbx
call exit_thread