/[pupa]/pupa/kern/i386/pc/init.c
ViewVC logotype

Diff of /pupa/kern/i386/pc/init.c

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

revision 1.1.1.1 by okuji, Fri Dec 27 08:53:09 2002 UTC revision 1.2 by okuji, Sat Dec 28 07:16:30 2002 UTC
# Line 30  void Line 30  void
30  pupa_machine_init (void)  pupa_machine_init (void)
31  {  {
32    pupa_uint32_t cont;    pupa_uint32_t cont;
33    struct pupa_machine_mmap_entry entry;    struct pupa_machine_mmap_entry *entry
34        = (struct pupa_machine_mmap_entry *) PUPA_MEMORY_MACHINE_SCRATCH_ADDR;
35    pupa_size_t lower_mem = (pupa_get_memsize (0) << 10);    pupa_size_t lower_mem = (pupa_get_memsize (0) << 10);
36    pupa_addr_t end_addr = pupa_get_end_addr ();    pupa_addr_t end_addr = pupa_get_end_addr ();
37    
# Line 53  pupa_machine_init (void) Line 54  pupa_machine_init (void)
54                         PUPA_MEMORY_MACHINE_RESERVED_START - end_addr);                         PUPA_MEMORY_MACHINE_RESERVED_START - end_addr);
55    
56    /* Check if pupa_get_mmap_entry works.  */    /* Check if pupa_get_mmap_entry works.  */
57    cont = pupa_get_mmap_entry (&entry, 0);    cont = pupa_get_mmap_entry (entry, 0);
58    
59    if (entry.size)    if (entry->size)
60      do      do
61        {        {
62          /* Avoid the lower memory.  */          /* Avoid the lower memory.  */
63          if (entry.addr < 0x100000)          if (entry->addr < 0x100000)
64            {            {
65              if (entry.len <= 0x100000 - entry.addr)              if (entry->len <= 0x100000 - entry->addr)
66                goto next;                goto next;
67    
68              entry.len -= 0x100000 - entry.addr;              entry->len -= 0x100000 - entry->addr;
69              entry.addr = 0x100000;              entry->addr = 0x100000;
70            }            }
71                    
72          /* Ignore >4GB.  */          /* Ignore >4GB.  */
73          if (entry.addr <= 0xFFFFFFFF && entry.type == 1)          if (entry->addr <= 0xFFFFFFFF && entry->type == 1)
74            {            {
75              pupa_addr_t addr;              pupa_addr_t addr;
76              pupa_size_t len;              pupa_size_t len;
77    
78              addr = (pupa_addr_t) entry.addr;              addr = (pupa_addr_t) entry->addr;
79              len = ((addr + entry.len > 0xFFFFFFFF)              len = ((addr + entry->len > 0xFFFFFFFF)
80                     ? 0xFFFFFFFF - addr                     ? 0xFFFFFFFF - addr
81                     : (pupa_size_t) entry.len);                     : (pupa_size_t) entry->len);
82              pupa_mm_init_region ((void *) addr, len);              pupa_mm_init_region ((void *) addr, len);
83            }            }
84                    
# Line 85  pupa_machine_init (void) Line 86  pupa_machine_init (void)
86          if (! cont)          if (! cont)
87            break;            break;
88                    
89          cont = pupa_get_mmap_entry (&entry, cont);          cont = pupa_get_mmap_entry (entry, cont);
90        }        }
91      while (entry.size);      while (entry->size);
92    else    else
93      {      {
94        pupa_uint32_t eisa_mmap = pupa_get_eisa_mmap ();        pupa_uint32_t eisa_mmap = pupa_get_eisa_mmap ();

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.2

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