Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include        "u.h"
#include        "../port/lib.h"
#include        "mem.h"
#include        "dat.h"
#include        "fns.h"
#include        "io.h"
#include        "ureg.h"

Mbi     mbhdr;
int     nmmap;

/* these need to end up in low memory */
Mbi     *multibootheader = &mbhdr;
MMap    mmap[32+1];

void
mkmultiboot(void)
{
        MMap *lmmap;

        /* reuse the bios table memory */
        multibootheader = (Mbi *)KADDR(BIOSTABLES);
        memset(multibootheader, 0, sizeof *multibootheader);

        lmmap = (MMap *)(multibootheader + 1);
        memmove(lmmap, mmap, sizeof mmap);

        multibootheader->cmdline = PADDR(BOOTLINE);
        multibootheader->flags |= Fcmdline;
        if(nmmap != 0){
                multibootheader->mmapaddr = PADDR(lmmap);
                multibootheader->mmaplength = nmmap*sizeof(MMap);
                multibootheader->flags |= Fmmap;
        }
        multibootheader = (Mbi *)PADDR(multibootheader);
        if(v_flag)
                print("PADDR(&multibootheader) %#p\n", multibootheader);
}