Restore stack after curG function call
This commit is contained in:
parent
f9c64d30c2
commit
f7632eb5b0
@ -93,6 +93,18 @@ func (thread *ThreadContext) CallFn(name string, fn func() error) error {
|
||||
if err = thread.saveRegisters(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
regs, err := thread.Registers()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
previousFrame := make([]byte, f.FrameSize)
|
||||
frameSize := uintptr(regs.SP() + uint64(f.FrameSize))
|
||||
if _, err := readMemory(thread, frameSize, previousFrame); err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() { writeMemory(thread, frameSize, previousFrame) }()
|
||||
|
||||
if err = thread.SetPC(f.Entry); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user