riscv_test.h revision 12771:75508af5d8dc
1// See LICENSE for license details.
2
3#ifndef _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
4#define _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
5
6#include "../p/riscv_test.h"
7
8#define TIMER_INTERVAL 2
9
10#undef EXTRA_INIT_TIMER
11#define EXTRA_INIT_TIMER                                                \
12        li a0, MIP_MTIP;                                                \
13        csrs mie, a0;                                                   \
14        csrr a0, mtime;                                                 \
15        addi a0, a0, TIMER_INTERVAL;                                    \
16        csrw mtimecmp, a0;                                              \
17
18#if SSTATUS_XS != 0x18000
19# error
20#endif
21#define XS_SHIFT 15
22
23#undef INTERRUPT_HANDLER
24#define INTERRUPT_HANDLER                                               \
25        slli t5, t5, 1;                                                 \
26        srli t5, t5, 1;                                                 \
27        add t5, t5, -IRQ_M_TIMER;                                       \
28        bnez t5, other_exception; /* other interrups shouldn't happen */\
29        csrr t5, mtime;                                                 \
30        addi t5, t5, TIMER_INTERVAL;                                    \
31        csrw mtimecmp, t5;                                              \
32        mret;                                                           \
33
34//-----------------------------------------------------------------------
35// Data Section Macro
36//-----------------------------------------------------------------------
37
38#undef EXTRA_DATA
39#define EXTRA_DATA                                                      \
40        .align 3;                                                       \
41regspill:                                                               \
42        .dword 0xdeadbeefcafebabe;                                      \
43        .dword 0xdeadbeefcafebabe;                                      \
44        .dword 0xdeadbeefcafebabe;                                      \
45        .dword 0xdeadbeefcafebabe;                                      \
46        .dword 0xdeadbeefcafebabe;                                      \
47        .dword 0xdeadbeefcafebabe;                                      \
48        .dword 0xdeadbeefcafebabe;                                      \
49        .dword 0xdeadbeefcafebabe;                                      \
50        .dword 0xdeadbeefcafebabe;                                      \
51        .dword 0xdeadbeefcafebabe;                                      \
52        .dword 0xdeadbeefcafebabe;                                      \
53        .dword 0xdeadbeefcafebabe;                                      \
54        .dword 0xdeadbeefcafebabe;                                      \
55        .dword 0xdeadbeefcafebabe;                                      \
56        .dword 0xdeadbeefcafebabe;                                      \
57        .dword 0xdeadbeefcafebabe;                                      \
58        .dword 0xdeadbeefcafebabe;                                      \
59        .dword 0xdeadbeefcafebabe;                                      \
60        .dword 0xdeadbeefcafebabe;                                      \
61        .dword 0xdeadbeefcafebabe;                                      \
62        .dword 0xdeadbeefcafebabe;                                      \
63        .dword 0xdeadbeefcafebabe;                                      \
64        .dword 0xdeadbeefcafebabe;                                      \
65        .dword 0xdeadbeefcafebabe;                                      \
66evac:                                                                   \
67        .skip 32768;                                                    \
68
69#endif
70