1/**
2 * \file
3 * \brief A struct for all shared data between the kernels
4 */
5
6/*
7 * Copyright (c) 2008, 2010 ETH Zurich
8 * All rights reserved.
9 *
10 * This file is distributed under the terms in the attached LICENSE file.
11 * If you do not find this file, copies can be found by writing to:
12 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
13 */
14
15
16#ifndef KERNEL_ARCH_X86_GLOBAL_H
17#define KERNEL_ARCH_X86_GLOBAL_H
18
19#include <barrelfish_kpi/spinlocks_arch.h>
20
21/**
22 * \brief Struct passed to app_cores during boot.
23 * Contains information that the bsp_kernel wants to pass to the app_kernels.
24 */
25struct global {
26    /// Shared locks between the kernels
27    struct {
28        spinlock_t print;       ///< Lock for printing
29    } locks;
30
31    uint32_t apic_frequency;
32    systime_t systime_frequency;
33
34    uint64_t padding[64];
35    volatile uint64_t wait[8];
36    bool started_once;
37
38    genpaddr_t notify[MAX_COREID];
39};
40
41extern struct global *global;
42
43#endif
44