1 /* 2 * (c) 2010 Adam Lackorzynski <adam@os.inf.tu-dresden.de>, 3 * economic rights: Technische Universität Dresden (Germany) 4 * 5 * This file is part of TUD:OS and distributed under the terms of the 6 * GNU General Public License 2. 7 * Please see the COPYING-GPL-2 file for details. 8 * 9 * As a special exception, you may use this file as part of a free software 10 * library without restriction. Specifically, if other files instantiate 11 * templates or use macros or inline functions from this file, or you compile 12 * this file and link it with other files to produce an executable, this 13 * file does not by itself cause the resulting executable to be covered by 14 * the GNU General Public License. This exception does not however 15 * invalidate any other reasons why the executable file might be covered by 16 * the GNU General Public License. 17 */ 18 #pragma once 19 20 #include <l4/sys/types.h> 21 22 enum 23 { 24 /** 25 * Architecture specific version ID. 26 * 27 * This ID must match the version field in the l4_vcpu_state_t structure 28 * after enabling vCPU mode or extended vCPU mode for a thread. 29 */ 30 L4_VCPU_STATE_VERSION = 0x99 31 }; 32 33 /** 34 * \brief vCPU registers. 35 * \ingroup l4_vcpu_api 36 */ 37 typedef struct l4_vcpu_regs_t 38 { 39 l4_umword_t pfa; 40 l4_umword_t err; 41 42 l4_umword_t r[28]; 43 l4_umword_t sp; 44 l4_umword_t lr; 45 l4_umword_t _dummy; 46 l4_umword_t ip; 47 l4_umword_t flags; 48 49 /* And some more */ 50 } l4_vcpu_regs_t; 51 52 typedef struct l4_vcpu_arch_state_t {} l4_vcpu_arch_state_t; 53 54 /** 55 * \brief vCPU message registers. 56 * \ingroup l4_vcpu_api 57 */ 58 typedef struct l4_vcpu_ipc_regs_t 59 { 60 l4_msgtag_t tag; 61 l4_umword_t _d1[3]; 62 l4_umword_t label; 63 l4_umword_t _d2[8]; 64 } l4_vcpu_ipc_regs_t; 65