blob: b4673fc0e3b06a7e9b46c204912306e9a3d82afb [file] [log] [blame]
Andrew Scullf0551c82018-12-15 20:38:47 +00001/*
Andrew Walbran692b3252019-03-07 15:51:31 +00002 * Copyright 2018 The Hafnium Authors.
Andrew Scullf0551c82018-12-15 20:38:47 +00003 *
Andrew Walbrane959ec12020-06-17 15:01:09 +01004 * Use of this source code is governed by a BSD-style
5 * license that can be found in the LICENSE file or at
6 * https://opensource.org/licenses/BSD-3-Clause.
Andrew Scullf0551c82018-12-15 20:38:47 +00007 */
8
Andrew Scullf0551c82018-12-15 20:38:47 +00009#include <stdint.h>
10
Raghu Krishnamurthyfffe7612020-12-08 14:57:28 -080011#include "hf/arch/vm/interrupts.h"
12
Andrew Walbran1e7c7742019-12-13 17:10:02 +000013#include "test/hftest.h"
Raghu Krishnamurthy50af6602021-12-12 15:23:09 -080014#include "test/hftest_impl.h"
Andrew Scullf0551c82018-12-15 20:38:47 +000015
16alignas(4096) uint8_t kstack[4096];
17
Raghu Krishnamurthy50af6602021-12-12 15:23:09 -080018extern void abort(void);
Raghu Krishnamurthy1c264f32021-02-27 20:37:13 -080019
Madhukar Pappireddy538b6882024-08-20 16:50:52 -050020void run_service_set_up(struct hftest_context *ctx, struct fdt *fdt)
21{
22 hftest_service_set_up(ctx, fdt);
23}
24
25noreturn void kmain(const void *fdt_ptr)
Raghu Krishnamurthy1c264f32021-02-27 20:37:13 -080026{
27 /*
28 * Initialize the stage-1 MMU and identity-map the entire address space.
29 */
30 if (!hftest_mm_init()) {
31 HFTEST_LOG_FAILURE();
32 HFTEST_LOG(HFTEST_LOG_INDENT "Memory initialization failed");
33 abort();
34 }
35
36 /* Setup basic exception handling. */
37 exception_setup(NULL, NULL);
38
39 hftest_service_main(fdt_ptr);
40}