/* * \brief x86-specific OKL4 thread facility * \author Christian Prochaska * \date 2011-04-15 */ /* * Copyright (C) 2011-2012 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU General Public License version 2. */ /* core includes */ #include /* OKL4 includes */ namespace Okl4 { extern "C" { #include } } using namespace Genode; using namespace Okl4; int Platform_thread::state(Thread_state *state_dst) { state_dst->tid = _l4_thread_id; L4_Copy_regs_to_mrs(_l4_thread_id); enum { MR_EIP = 0, MR_EFLAGS = 1, MR_EDI = 2, MR_ESI = 3, MR_EBP = 4, MR_ESP = 5, MR_EBX = 6, MR_EDX = 7, MR_ECX = 8, MR_EAX = 9, }; L4_StoreMR(MR_EIP, &state_dst->ip); L4_StoreMR(MR_EFLAGS, &state_dst->eflags); L4_StoreMR(MR_EDI, &state_dst->edi); L4_StoreMR(MR_ESI, &state_dst->esi); L4_StoreMR(MR_EBP, &state_dst->ebp); L4_StoreMR(MR_ESP, &state_dst->sp); L4_StoreMR(MR_EBX, &state_dst->ebx); L4_StoreMR(MR_EDX, &state_dst->edx); L4_StoreMR(MR_ECX, &state_dst->ecx); L4_StoreMR(MR_EAX, &state_dst->eax); return 0; }