00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __info_h
00009 #define __info_h
00010
00011 #include <system/config.h>
00012
00013 __BEGIN_SYS
00014
00015 class System_Info
00016 {
00017 public:
00018 typedef unsigned int Log_Addr;
00019 typedef unsigned int Phy_Addr;
00020
00021
00022 struct Boot_Map
00023 {
00024 Phy_Addr mem_base;
00025 unsigned int mem_size;
00026 int cpu_type;
00027 int cpu_clock;
00028 int n_threads;
00029 int n_tasks;
00030 unsigned short host_id;
00031 unsigned short n_nodes;
00032 int img_size;
00033 int setup_off;
00034 int system_off;
00035 int loader_off;
00036 int app_off;
00037 };
00038
00039
00040 struct Physical_Memory_Map
00041 {
00042 Phy_Addr app_lo;
00043 Phy_Addr app_hi;
00044 Phy_Addr int_vec;
00045 Phy_Addr sys_pt;
00046 Phy_Addr sys_pd;
00047 Phy_Addr sys_info;
00048 Phy_Addr phy_mem_pts;
00049 Phy_Addr io_mem_pts;
00050 Phy_Addr sys_code;
00051 Phy_Addr sys_data;
00052 Phy_Addr sys_stack;
00053 Phy_Addr free;
00054 unsigned int free_size;
00055 Phy_Addr mach1;
00056 Phy_Addr mach2;
00057 Phy_Addr mach3;
00058 Phy_Addr free1_base;
00059 Phy_Addr free1_top;
00060 Phy_Addr free2_base;
00061 Phy_Addr free2_top;
00062
00063 };
00064
00065
00066 struct Logical_Memory_Map
00067 {
00068 Log_Addr base;
00069 Log_Addr top;
00070 Log_Addr app_lo;
00071 Log_Addr app_entry;
00072 Log_Addr app_code;
00073 Log_Addr app_data;
00074 Log_Addr app_hi;
00075 Log_Addr phy_mem;
00076 Log_Addr io_mem;
00077 Log_Addr int_vec;
00078 Log_Addr sys_pt;
00079 Log_Addr sys_pd;
00080 Log_Addr sys_info;
00081 Log_Addr sys_code;
00082 Log_Addr sys_data;
00083 Log_Addr sys_stack;
00084 Log_Addr mach1;
00085 Log_Addr mach2;
00086 Log_Addr mach3;
00087 };
00088
00089
00090 struct IO_Memory_Map
00091 {
00092 int locator;
00093 Phy_Addr phy_addr;
00094 Log_Addr log_addr;
00095 unsigned int size;
00096 };
00097
00098 public:
00099 unsigned int mem_size;
00100 unsigned int mem_free;
00101 unsigned int iomm_size;
00102 Boot_Map bm;
00103 Physical_Memory_Map pmm;
00104 Logical_Memory_Map lmm;
00105 IO_Memory_Map iomm[];
00106 };
00107
00108 template <class Machine>
00109 struct Memory_Map {};
00110
00111 __END_SYS
00112
00113 #include __HEADER_MACH(memory_map)
00114
00115 #endif