diff options
Diffstat (limited to 'arch/none/host/src/arch_main.c')
-rw-r--r-- | arch/none/host/src/arch_main.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/arch/none/host/src/arch_main.c b/arch/none/host/src/arch_main.c new file mode 100644 index 00000000..5e319dc3 --- /dev/null +++ b/arch/none/host/src/arch_main.c @@ -0,0 +1,53 @@ +/* + * Arm SCP/MCP Software + * Copyright (c) 2015-2020, Arm Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <fwk_arch.h> +#include <fwk_noreturn.h> +#include <fwk_status.h> + +#include <stdio.h> +#include <stdlib.h> + +extern int arch_interrupt_init(const struct fwk_arch_interrupt_driver **driver); + +/* + * Catches early failures in the initialization. + */ +static noreturn void panic(void) +{ + printf("Panic!\n"); + exit(1); +} + +static int mm_init(struct fwk_arch_mm_data *data) +{ + const size_t size = 1024 * 1024; /* 1MB of heap */ + void *mem; + + mem = malloc(size); + if (mem == NULL) + return FWK_E_NOMEM; + + data->start = (uintptr_t)mem; + data->size = size; + + return FWK_SUCCESS; +} + +static const struct fwk_arch_init_driver arch_init_driver = { + .mm = mm_init, + .interrupt = arch_interrupt_init, +}; + +int main(void) +{ + int status; + + status = fwk_arch_init(&arch_init_driver); + if (status != FWK_SUCCESS) + panic(); +} |