55 lines
1.2 KiB
C++
55 lines
1.2 KiB
C++
/*
|
|
* \brief Fiasco.OC pager framework
|
|
* \author Stefan Kalkowski
|
|
* \date 2011-09-08
|
|
*
|
|
* X86_32 specific parts, when handling cpu-exceptions.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2011-2017 Genode Labs GmbH
|
|
*
|
|
* This file is part of the Genode OS framework, which is distributed
|
|
* under the terms of the GNU Affero General Public License version 3.
|
|
*/
|
|
|
|
/* core includes */
|
|
#include <ipc_pager.h>
|
|
|
|
|
|
void Genode::Ipc_pager::get_regs(Foc_thread_state *state)
|
|
{
|
|
state->ip = _regs.ip;
|
|
state->sp = _regs.sp;
|
|
state->edi = _regs.edi;
|
|
state->esi = _regs.esi;
|
|
state->ebp = _regs.ebp;
|
|
state->ebx = _regs.ebx;
|
|
state->edx = _regs.edx;
|
|
state->ecx = _regs.ecx;
|
|
state->eax = _regs.eax;
|
|
state->gs = _regs.gs;
|
|
state->fs = _regs.fs;
|
|
state->eflags = _regs.flags;
|
|
state->trapno = _regs.trapno;
|
|
}
|
|
|
|
|
|
void Genode::Ipc_pager::set_regs(Foc_thread_state state)
|
|
{
|
|
_regs.ip = state.ip;
|
|
_regs.sp = state.sp;
|
|
_regs.edi = state.edi;
|
|
_regs.esi = state.esi;
|
|
_regs.ebp = state.ebp;
|
|
_regs.ebx = state.ebx;
|
|
_regs.edx = state.edx;
|
|
_regs.ecx = state.ecx;
|
|
_regs.eax = state.eax;
|
|
_regs.gs = state.gs;
|
|
_regs.fs = state.fs;
|
|
_regs.flags = state.eflags;
|
|
_regs.trapno = state.trapno;
|
|
}
|
|
|