blob: 93293a751ba087773a40fcd396a4884de82bc613 [file] [log] [blame] [edit]
/*
* Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
* Copyright 2021, HENSOLDT Cyber
*
* SPDX-License-Identifier: GPL-2.0-only
*/
#pragma once
#include <elfloader_common.h>
/* This is a low level binary interface, thus we do not preserve the type
* information here. All parameters are just register values (or stack values
* that are register-sized).
*/
typedef void (*init_arm_kernel_t)(word_t ui_p_reg_start,
word_t ui_p_reg_end,
word_t pv_offset,
word_t v_entry,
word_t dtb,
word_t dtb_size);
/* Enable the mmu. */
extern void arm_enable_mmu(void);
extern void arm_enable_hyp_mmu(void);
/* Setup boot VSpace. */
void init_boot_vspace(struct image_info *kernel_info);
void init_hyp_boot_vspace(struct image_info *kernel_info);
/* Assembly functions. */
extern void flush_dcache(void);
extern void cpu_idle(void);
void smp_boot(void);
/* Secure monitor call */
uint32_t smc(uint32_t, uint32_t, uint32_t, uint32_t);