1/*
2 * Copyright 2017, Data61
3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO)
4 * ABN 41 687 119 230.
5 *
6 * This software may be distributed and modified according to the terms of
7 * the BSD 2-Clause license. Note that NO WARRANTY is provided.
8 * See "LICENSE_BSD2.txt" for details.
9 *
10 * @TAG(DATA61_BSD)
11 */
12
13#pragma once
14
15#include <sel4/sel4.h>
16#include <stddef.h>
17#include <utils/util.h>
18
19static UNUSED const char *register_names[] = {
20    "pc",
21    "sp",
22    "cpsr",
23    "r0",
24    "r1",
25    "r8",
26    "r9",
27    "r10",
28    "r11",
29    "r12",
30    "r2",
31    "r3",
32    "r4",
33    "r5",
34    "r6",
35    "r7",
36    "lr",
37    "tpidrurw",
38};
39
40/* assert that register_names correspond to seL4_UserContext */
41compile_time_assert(pc_correct_position, offsetof(seL4_UserContext, pc)     == 0);
42compile_time_assert(sp_correct_position, offsetof(seL4_UserContext, sp)     == 1 *  sizeof(seL4_Word));
43compile_time_assert(cpsr_correct_position, offsetof(seL4_UserContext, cpsr) == 2 *  sizeof(seL4_Word));
44compile_time_assert(r0_correct_position, offsetof(seL4_UserContext, r0)     == 3 *  sizeof(seL4_Word));
45compile_time_assert(r1_correct_position, offsetof(seL4_UserContext, r1)     == 4 *  sizeof(seL4_Word));
46compile_time_assert(r8_correct_position, offsetof(seL4_UserContext, r8)     == 5 *  sizeof(seL4_Word));
47compile_time_assert(r9_correct_position, offsetof(seL4_UserContext, r9)     == 6 *  sizeof(seL4_Word));
48compile_time_assert(r10_correct_position, offsetof(seL4_UserContext, r10)   == 7 * sizeof(seL4_Word));
49compile_time_assert(r11_correct_position, offsetof(seL4_UserContext, r11)   == 8 * sizeof(seL4_Word));
50compile_time_assert(r12_correct_position, offsetof(seL4_UserContext, r12)   == 9 * sizeof(seL4_Word));
51compile_time_assert(r2_correct_position, offsetof(seL4_UserContext, r2)     == 10 * sizeof(seL4_Word));
52compile_time_assert(r3_correct_position, offsetof(seL4_UserContext, r3)     == 11 * sizeof(seL4_Word));
53compile_time_assert(r4_correct_position, offsetof(seL4_UserContext, r4)     == 12 * sizeof(seL4_Word));
54compile_time_assert(r5_correct_position, offsetof(seL4_UserContext, r5)     == 13 * sizeof(seL4_Word));
55compile_time_assert(r6_correct_position, offsetof(seL4_UserContext, r6)     == 14 * sizeof(seL4_Word));
56compile_time_assert(r7_correct_position, offsetof(seL4_UserContext, r7)     == 15 * sizeof(seL4_Word));
57compile_time_assert(r14_correct_position, offsetof(seL4_UserContext, r14)   == 16 * sizeof(seL4_Word));
58compile_time_assert(tpidrurw_correct_position, offsetof(seL4_UserContext, tpidrurw) == 17 * sizeof(seL4_Word));
59
60