4 * \brief Kernel Interface Page (KIP).
8 * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
9 * Alexander Warg <warg@os.inf.tu-dresden.de>,
10 * Björn Döbel <doebel@os.inf.tu-dresden.de>,
11 * Frank Mehnert <fm3@os.inf.tu-dresden.de>,
12 * Torsten Frenzel <frenzel@os.inf.tu-dresden.de>,
13 * Martin Pohlack <mp26@os.inf.tu-dresden.de>,
14 * Lars Reuther <reuther@os.inf.tu-dresden.de>
15 * economic rights: Technische Universität Dresden (Germany)
17 * This file is part of TUD:OS and distributed under the terms of the
18 * GNU General Public License 2.
19 * Please see the COPYING-GPL-2 file for details.
21 * As a special exception, you may use this file as part of a free software
22 * library without restriction. Specifically, if other files instantiate
23 * templates or use macros or inline functions from this file, or you compile
24 * this file and link it with other files to produce an executable, this
25 * file does not by itself cause the resulting executable to be covered by
26 * the GNU General Public License. This exception does not however
27 * invalidate any other reasons why the executable file might be covered by
28 * the GNU General Public License.
32 #include <l4/sys/types.h>
35 * \brief L4 Kernel Interface Page.
38 typedef struct l4_kernel_info_t
41 l4_uint32_t magic; /**< Kernel Info Page
42 ** identifier ("L4µK").
44 l4_uint32_t version; ///< Kernel version
45 l4_uint8_t offset_version_strings; ///< offset to version string
46 l4_uint8_t fill0[3]; ///< reserved \internal
47 l4_uint8_t kip_sys_calls; ///< pointer to system calls
48 l4_uint8_t fill1[3]; ///< reserved \internal
50 /* the following stuff is undocumented; we assume that the kernel
51 info page is located at offset 0x1000 into the L4 kernel boot
52 image so that these declarations are consistent with section 2.9
53 of the L4 Reference Manual */
57 l4_umword_t scheduler_granularity; ///< for rounding time slices
58 l4_umword_t _res00[3]; ///< default_kdebug_end
62 l4_umword_t sigma0_esp; ///< Sigma0 start stack pointer
63 l4_umword_t sigma0_eip; ///< Sigma0 instruction pointer
64 l4_umword_t _res01[2]; ///< reserved \internal
68 l4_umword_t sigma1_esp; ///< Sigma1 start stack pointer
69 l4_umword_t sigma1_eip; ///< Sigma1 instruction pointer
70 l4_umword_t _res02[2]; ///< reserved \internal
74 l4_umword_t root_esp; ///< Root task stack pointer
75 l4_umword_t root_eip; ///< Root task instruction pointer
76 l4_umword_t _res03[2]; ///< reserved \internal
79 /* L4 configuration */
80 l4_umword_t _res50[1]; ///< reserved \internal
81 l4_umword_t mem_info; ///< memory information
82 l4_umword_t _res58[2]; ///< reserved \internal
85 l4_umword_t _res04[16]; ///< reserved \internal
88 volatile l4_cpu_time_t clock; ///< L4 system clock (µs)
89 l4_umword_t _res05[2]; ///< reserved \internal
92 l4_umword_t frequency_cpu; ///< CPU frequency in kHz
93 l4_umword_t frequency_bus; ///< Bus frequency
96 l4_umword_t _res06[10]; ///< reserved \internal
99 l4_umword_t user_ptr; ///< user_ptr
100 l4_umword_t vhw_offset; ///< offset to vhw structure
101 l4_umword_t _res07[2];
104 struct l4_kip_platform_info platform_info;