2011-12-22 15:19:25 +00:00
|
|
|
/*
|
|
|
|
* \brief Constants definitions for the x86 architecture.
|
|
|
|
* \author Stefan Kalkowski
|
|
|
|
* \date 2011-09-08
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
2013-01-10 20:44:47 +00:00
|
|
|
* Copyright (C) 2011-2013 Genode Labs GmbH
|
2011-12-22 15:19:25 +00:00
|
|
|
*
|
|
|
|
* This file is part of the Genode OS framework, which is distributed
|
|
|
|
* under the terms of the GNU General Public License version 2.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _INCLUDE__X86__CPU__CONSTS_H_
|
|
|
|
#define _INCLUDE__X86__CPU__CONSTS_H_
|
|
|
|
|
2014-02-20 10:27:26 +00:00
|
|
|
#include <base/stdint.h>
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
namespace X86 {
|
|
|
|
|
|
|
|
enum Eflags_masks {
|
|
|
|
CARRY = 1 << 0,
|
|
|
|
PARITY = 1 << 2,
|
|
|
|
ADJUST = 1 << 4,
|
|
|
|
ZERO = 1 << 6,
|
|
|
|
SIGN = 1 << 7,
|
|
|
|
TRAP = 1 << 8,
|
|
|
|
INT_ENABLE = 1 << 9,
|
|
|
|
DIRECTION = 1 << 10,
|
|
|
|
OVERFLOW = 1 << 11,
|
|
|
|
IOPL = 3 << 12,
|
|
|
|
NESTED_TASK = 1 << 14,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2015-03-04 20:12:14 +00:00
|
|
|
|
2014-02-20 10:27:26 +00:00
|
|
|
namespace Abi {
|
2015-03-04 20:12:14 +00:00
|
|
|
|
2014-02-20 10:27:26 +00:00
|
|
|
/**
|
|
|
|
* On x86 a call will result in a growth of the stack by machine word size
|
|
|
|
*/
|
|
|
|
static constexpr Genode::size_t stack_adjustment() { return sizeof(Genode::addr_t); }
|
2014-02-21 09:59:39 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Do ABI specific initialization to a freshly created stack
|
|
|
|
*
|
|
|
|
* \param stack_top top of the stack
|
|
|
|
*/
|
|
|
|
inline void init_stack(Genode::addr_t const stack_top)
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* The value at the top of the stack might get interpreted as return
|
|
|
|
* address of the thread start function by GDB, so we set it to 0.
|
|
|
|
*/
|
|
|
|
*(Genode::addr_t *)stack_top = 0;
|
|
|
|
}
|
2014-02-20 10:27:26 +00:00
|
|
|
}
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
#endif /* _INCLUDE__X86__CPU__CONSTS_H_ */
|