/[hurd]/hurd-l4/laden/laden.c
ViewVC logotype

Diff of /hurd-l4/laden/laden.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by marcus, Mon Sep 8 01:39:14 2003 UTC revision 1.6 by marcus, Mon Sep 8 14:23:17 2003 UTC
# Line 25  Line 25 
25  #include "laden.h"  #include "laden.h"
26    
27    
28    /* The program name.  */
29    char *program_name = "laden";
30    
31  rootserver_t kernel;  rootserver_t kernel;
32  rootserver_t sigma0;  rootserver_t sigma0;
33  rootserver_t sigma1;  rootserver_t sigma1;
# Line 33  rootserver_t rootserver; Line 36  rootserver_t rootserver;
36  /* The boot info to be inserted into the L4 KIP.  */  /* The boot info to be inserted into the L4 KIP.  */
37  l4_word_t boot_info;  l4_word_t boot_info;
38    
39    
40  struct l4_memory_desc memory_map[MEMORY_MAP_MAX];  struct l4_memory_desc memory_map[MEMORY_MAP_MAX];
 int memory_map_size;  
41    
42    l4_word_t memory_map_size;
43  /* True if debug mode is enabled.  */  
44  int debug;  
45    /* Return the number of memory descriptors.  */
46    l4_word_t
47    loader_get_num_memory_desc (void)
48    {
49      return memory_map_size;
50    }
51    
52    
53    /* Return the NRth memory descriptor.  The first memory descriptor is
54       indexed by 0.  */
55    l4_memory_desc_t
56    loader_get_memory_desc (l4_word_t nr)
57    {
58      return &memory_map[nr];
59    }
60    
61    
62    /* Load the ELF images of the kernel and the initial servers into
63       memory, checking for overlaps.  Update the start and end
64       information with the information from the ELF program, and fill in
65       the entry points.  */
66    static void
67    load_components (void)
68    {
69      if (!kernel.low)
70        panic ("No L4 kernel found");
71      loader_add_region ("kernel-mod", kernel.low, kernel.high);
72    
73      if (!sigma0.low)
74        panic ("No sigma0 server found");
75      loader_add_region ("sigma0-mod", sigma0.low, sigma0.high);
76    
77      if (sigma1.low)
78        loader_add_region ("sigma1-mod", sigma1.low, sigma1.high);
79    
80      if (!rootserver.low)
81        panic ("No rootserver server found");
82      loader_add_region ("rootserver-mod", rootserver.low, rootserver.high);
83    
84      loader_elf_load ("kernel", kernel.low, kernel.high,
85                       &kernel.low, &kernel.high, &kernel.ip);
86      loader_remove_region ("kernel-mod");
87    
88      loader_elf_load ("sigma0", sigma0.low, sigma0.high,
89                       &sigma0.low, &sigma0.high, &sigma0.ip);
90      loader_remove_region ("sigma0-mod");
91    
92      if (sigma1.low)
93        {
94          loader_elf_load ("sigma1", sigma1.low, sigma1.high,
95                           &sigma1.low, &sigma1.high, &sigma1.ip);
96          loader_remove_region ("sigma1-mod");
97        }
98    
99      loader_elf_load ("rootserver", rootserver.low, rootserver.high,
100                       &rootserver.low, &rootserver.high, &rootserver.ip);
101      loader_remove_region ("rootserver-mod");
102    }
103    
104    
105  static void  static void
# Line 52  parse_args (int argc, char *argv[]) Line 113  parse_args (int argc, char *argv[])
113          {          {
114            i++;            i++;
115            printf ("Usage %s [OPTION...]\n", argv[0]);            printf ("Usage %s [OPTION...]\n", argv[0]);
116            printf ("Try `" PROGRAM_NAME " --help' for more information\n");            printf ("Try `%s --help' for more information\n", program_name);
117            shutdown ();                shutdown ();    
118          }          }
119        else if (!strcmp (argv[i], "--help"))        else if (!strcmp (argv[i], "--help"))
# Line 95  parse_args (int argc, char *argv[]) Line 156  parse_args (int argc, char *argv[])
156        else if (!strcmp (argv[i], "--version"))        else if (!strcmp (argv[i], "--version"))
157          {          {
158            i++;            i++;
159            printf (PROGRAM_NAME " " PACKAGE_VERSION "\n");            printf ("%s " PACKAGE_VERSION "\n", program_name);
160            shutdown ();                shutdown ();    
161          }          }
162        else if (!strcmp (argv[i], "-o") || !strcmp (argv[i], "--output"))        else if (!strcmp (argv[i], "-o") || !strcmp (argv[i], "--output"))
# Line 118  parse_args (int argc, char *argv[]) Line 179  parse_args (int argc, char *argv[])
179        else if (!strcmp (argv[i], "-D") || !strcmp (argv[i], "--debug"))        else if (!strcmp (argv[i], "-D") || !strcmp (argv[i], "--debug"))
180          {          {
181            i++;            i++;
182            debug = 1;            output_debug = 1;
183          }          }
184        else if (argv[i][0] == '-')        else if (argv[i][0] == '-')
185          panic ("Unsupported option %s", argv[i]);          panic ("Unsupported option %s", argv[i]);
# Line 133  main (int argc, char *argv[]) Line 194  main (int argc, char *argv[])
194  {  {
195    parse_args (argc, argv);    parse_args (argc, argv);
196    
197    debug (PROGRAM_NAME " " PACKAGE_VERSION "\n");    debug ("%s " PACKAGE_VERSION "\n", program_name);
198    
199    find_components ();    find_components ();
200    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26