/*
 * libqos malloc support for PC
 *
 * Copyright IBM, Corp. 2012-2013
 *
 * Authors:
 *  Anthony Liguori   <aliguori@us.ibm.com>
 *
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
 * See the COPYING file in the top-level directory.
 */

#include "qemu/osdep.h"
#include "libqos/malloc-pc.h"
#include "libqos/fw_cfg.h"

#include "standard-headers/linux/qemu_fw_cfg.h"

#include "qemu-common.h"

#define PAGE_SIZE (4096)

void pc_alloc_init(QGuestAllocator *s, QTestState *qts, QAllocOpts flags)
{
    uint64_t ram_size;
    QFWCFG *fw_cfg = pc_fw_cfg_init(qts);

    ram_size = qfw_cfg_get_u64(fw_cfg, FW_CFG_RAM_SIZE);
    alloc_init(s, flags, 1 << 20, MIN(ram_size, 0xE0000000), PAGE_SIZE);

    /* clean-up */
    pc_fw_cfg_uninit(fw_cfg);
}
