1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#pragma once 8 9#include <config.h> 10#include <types.h> 11#include <plat/machine/acpi.h> 12#include <kernel/boot.h> 13#include <sel4/arch/bootinfo_types.h> 14 15typedef struct mem_p_regs { 16 word_t count; 17 p_region_t list[MAX_NUM_FREEMEM_REG]; 18} mem_p_regs_t; 19 20typedef struct ui_info { 21 p_region_t p_reg; /* region where the userland image lies in */ 22 sword_t pv_offset; /* UI virtual address + pv_offset = UI physical address */ 23 vptr_t v_entry; /* entry point (virtual address) of userland image */ 24} ui_info_t; 25 26cap_t create_unmapped_it_frame_cap(pptr_t pptr, bool_t use_large); 27cap_t create_mapped_it_frame_cap(cap_t pd_cap, pptr_t pptr, vptr_t vptr, asid_t asid, bool_t use_large, 28 bool_t executable); 29 30bool_t init_sys_state( 31 cpu_id_t cpu_id, 32 mem_p_regs_t *mem_p_regs, 33 ui_info_t ui_info, 34 p_region_t boot_mem_reuse_p_reg, 35 /* parameters below not modeled in abstract specification */ 36 uint32_t num_drhu, 37 paddr_t *drhu_list, 38 acpi_rmrr_list_t *rmrr_list, 39 acpi_rsdp_t *acpi_rsdp, 40 seL4_X86_BootInfo_VBE *vbe, 41 seL4_X86_BootInfo_mmap_t *mb_mmap, 42 seL4_X86_BootInfo_fb_t *fb_info 43); 44 45bool_t init_cpu( 46 bool_t mask_legacy_irqs 47); 48 49bool_t add_allocated_p_region(p_region_t reg); 50void init_allocated_p_regions(void); 51 52