00001 // AUTOMATICALLY GENERATED -- DO NOT EDIT! -*- c++ -*- 00002 00003 #ifndef kip_h 00004 #define kip_h 00005 00006 #include "types.h" 00007 00008 #include "types.h" 00009 00010 // 00011 // INTERFACE definition follows 00012 // 00013 00014 00015 class Kip 00016 { 00017 public: 00018 void print() const; 00019 00020 char const *version_string() const; 00021 00022 // returns the 1st address beyond all available physical memory 00023 Address main_memory_high() const; 00024 00025 private: 00026 static Kip *global_kip asm ("GLOBAL_KIP"); 00027 private: 00028 00029 public: 00030 00031 /* 00 */ 00032 Mword magic; 00033 Mword version; 00034 Unsigned8 offset_version_strings; 00035 Unsigned8 reserved[3]; 00036 Unsigned8 kip_sys_calls; 00037 Unsigned8 reserved01[3]; 00038 00039 /* the following stuff is undocumented; we assume that the kernel 00040 info page is located at offset 0x1000 into the L4 kernel boot 00041 image so that these declarations are consistent with section 2.9 00042 of the L4 Reference Manual */ 00043 00044 /* 10 */ 00045 Mword init_default_kdebug, default_kdebug_exception, 00046 sched_granularity, default_kdebug_end; 00047 00048 /* 20 */ 00049 Mword sigma0_sp, sigma0_ip; 00050 l4_low_high_t sigma0_memory; 00051 00052 /* 30 */ 00053 Mword sigma1_sp, sigma1_ip; 00054 l4_low_high_t sigma1_memory; 00055 00056 /* 40 */ 00057 Mword root_sp, root_ip; 00058 l4_low_high_t root_memory; 00059 00060 /* 50 */ 00061 Mword l4_config; 00062 Mword reserved2; 00063 Mword kdebug_config; 00064 Mword kdebug_permission; 00065 00066 /* 60 */ 00067 l4_low_high_t main_memory; 00068 l4_low_high_t reserved0; 00069 00070 /* 70 */ 00071 l4_low_high_t reserved1; 00072 l4_low_high_t semi_reserved; 00073 00074 /* 80 */ 00075 l4_low_high_t dedicated[4]; 00076 00077 /* A0 */ 00078 volatile Cpu_time clock; 00079 volatile Cpu_time switch_time; 00080 00081 /* B0 */ 00082 Mword frequency_cpu; 00083 Mword frequency_bus; 00084 volatile Cpu_time thread_time; 00085 00086 /* C0 */ 00087 Mword sys_ipc; 00088 Mword sys_id_nearest; 00089 Mword sys_fpage_unmap; 00090 Mword sys_thread_switch; 00091 00092 /* D0 */ 00093 Mword sys_thread_schedule; 00094 Mword sys_lthread_ex_regs; 00095 Mword sys_task_new; 00096 Mword unused_6; 00097 00098 /* E0 */ 00099 char version_strings[512]; 00100 00101 /* 2E0 */ 00102 char sys_calls[256]; 00103 00104 /* 3E0 */ 00105 char pad[288]; 00106 00107 /* ======================================== */ 00108 00109 /* 0x500, 00110 * Here resides the LIPC code. If the offset changes, then application 00111 * LIPC binding needs to be adjusted. 00112 */ 00113 char lipc_code[256]; 00114 00115 public: 00116 static inline void init_global_kip(Kip *kip); 00117 00118 static inline Kip *const k(); 00119 }; 00120 00121 #define L4_KERNEL_INFO_MAGIC (0x4BE6344CL) /* "L4ľK" */ 00122 /* 00123 * IA-32 Kernel-Info Page 00124 */ 00125 00126 00127 // 00128 // IMPLEMENTATION of inline functions (and needed classes) 00129 // 00130 00131 00132 inline void Kip::init_global_kip(Kip *kip) { global_kip = kip; } 00133 00134 inline Kip *const Kip::k() { return global_kip; } 00135 00136 00137 00138 inline Address Kip::main_memory_high() const 00139 { 00140 return main_memory.high; 00141 } 00142 00143 #endif // kip_h