1/**
2 * \file
3 * \brief Architecture specific dispatcher struct shared between kernel and user
4 */
5
6/*
7 * Copyright (c) 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, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
13 */
14
15#ifndef TARGET_ARM_BARRELFISH_KPI_DISPATCHER_SHARED_H
16#define TARGET_ARM_BARRELFISH_KPI_DISPATCHER_SHARED_H
17
18#include <barrelfish_kpi/dispatcher_shared.h>
19
20///< Architecture specific kernel/user shared dispatcher struct
21struct dispatcher_shared_arm {
22    struct dispatcher_shared_generic d; ///< Generic portion
23
24    lvaddr_t    crit_pc_low;        ///< Critical section lower PC bound
25    lvaddr_t    crit_pc_high;       ///< Critical section upper PC bound
26    lvaddr_t    got_base;           ///< Global Offset Table base
27
28    union registers_arm enabled_save_area;  ///< Enabled register save area
29    union registers_arm disabled_save_area; ///< Disabled register save area
30    union registers_arm trap_save_area;     ///< Trap register save area
31};
32
33static inline struct dispatcher_shared_arm*
34get_dispatcher_shared_arm(dispatcher_handle_t handle)
35{
36    return (struct dispatcher_shared_arm*)handle;
37}
38
39#endif // TARGET_ARM_BARRELFISH_KPI_DISPATCHER_SHARED_H
40