#include "config.h"
#include "kernel/kernel.h"
#include "libopenbios/sys_info.h"
#include "context.h"

#define printf printk
#ifdef CONFIG_DEBUG_BOOT
#define debug printk
#else
#define debug(x...)
#endif

void collect_multiboot_info(struct sys_info *);
void collect_sys_info(struct sys_info *info);

void collect_sys_info(struct sys_info *info)
{
    int i;
    unsigned long long total = 0;
    struct memrange *mmap;

    /* Pick up parameters given by bootloader to us */
    info->boot_type = boot_ctx->eax;
    info->boot_data = boot_ctx->ebx;
    info->boot_arg = boot_ctx->param[0];
    debug("boot eax = %#lx\n", info->boot_type);
    debug("boot ebx = %#lx\n", info->boot_data);
    debug("boot arg = %#lx\n", info->boot_arg);

    collect_elfboot_info(info);
#ifdef CONFIG_LINUXBIOS
    collect_linuxbios_info(info);
#endif
#ifdef CONFIG_IMAGE_ELF_MULTIBOOT
    collect_multiboot_info(info);
#endif

    if (!info->memrange) {
	printf("Can't get memory map from firmware. "
		"Using hardcoded default.\n");
	info->n_memranges = 2;
	info->memrange = malloc(2 * sizeof(struct memrange));
	info->memrange[0].base = 0;
	info->memrange[0].size = 640*1024;
	info->memrange[1].base = 1024*1024;
	info->memrange[1].size = 32*1024*1024
	    - info->memrange[1].base;
    }

    debug("\n");
    mmap=info->memrange;
    for (i = 0; i < info->n_memranges; i++) {
	debug("%016Lx-", mmap[i].base);
	debug("%016Lx\n", mmap[i].base+mmap[i].size);
	total += mmap[i].size;
    }
    debug("RAM %Ld MB\n", (total + 512*1024) >> 20);
}
