1/*
2 * Copyright (c) 2016, ETH Zurich. All rights reserved.
3 *
4 * This file is distributed under the terms in the attached LICENSE file.  If
5 * you do not find this file, copies can be found by writing to: ETH Zurich
6 * D-INFK, CAB F.78, Universitaetstrasse 6, CH-8092 Zurich, Attn: Systems Group.
7 */
8
9#ifndef __ARMV7_BOOT_PROTOCOL_H
10#define __ARMV7_BOOT_PROTOCOL_H
11
12/* Inter-core boot protocol for ARMv7 CPUs. */
13
14#include <kernel.h>
15
16#include <barrelfish_kpi/spinlocks_arch.h>
17
18struct armv7_boot_record {
19    /* Several cores may share this record. */
20    spinlock_t lock;
21
22    /* The kernel-virtual address of the core data structure. */
23    lvaddr_t core_data;
24
25    /* Completion notification from the APP core. */
26    uint32_t done;
27
28    /* The MPID value (hardware core ID) of the core to boot. */
29    hwid_t target_mpid;
30};
31
32void plat_advance_aps(void);
33errval_t boot_aps(hwid_t target, genpaddr_t gen_entry, genpaddr_t context);
34
35#endif /* __ARMV7_BOOT_PROTOCOL_H */
36