* Patch by Andreas: we did not store ebp in vregs::ebp, and we did not store

ebx at all.
* This fixes bug #2569.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26818 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2008-08-05 17:13:06 +00:00
parent 7bcc8f0f61
commit afa9fe8958
+4 -2
View File
@@ -472,11 +472,12 @@ arch_setup_signal_frame(struct thread *thread, struct sigaction *action,
regs.eax = frame->eax;
regs.ecx = frame->ecx;
regs.edx = frame->edx;
regs.ebp = frame->ebp;
regs.esp = frame->esp;
regs._reserved_1 = frame->user_esp;
regs._reserved_2[0] = frame->edi;
regs._reserved_2[1] = frame->esi;
regs._reserved_2[2] = frame->ebp;
regs._reserved_2[2] = frame->ebx;
i386_fnsave((void *)(&regs.xregs));
userStack -= (sizeof(struct vregs) + 3) / 4;
@@ -565,11 +566,12 @@ arch_restore_signal_frame(void)
frame->eax = regs.eax;
frame->ecx = regs.ecx;
frame->edx = regs.edx;
frame->ebp = regs.ebp;
frame->esp = regs.esp;
frame->user_esp = regs._reserved_1;
frame->edi = regs._reserved_2[0];
frame->esi = regs._reserved_2[1];
frame->ebp = regs._reserved_2[2];
frame->ebx = regs._reserved_2[2];
i386_frstor((void *)(&regs.xregs));