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