112771Sqtt2@cornell.edu// See LICENSE for license details. 212771Sqtt2@cornell.edu 312771Sqtt2@cornell.edu#ifndef _ENV_PHYSICAL_SINGLE_CORE_TIMER_H 412771Sqtt2@cornell.edu#define _ENV_PHYSICAL_SINGLE_CORE_TIMER_H 512771Sqtt2@cornell.edu 612771Sqtt2@cornell.edu#include "../p/riscv_test.h" 712771Sqtt2@cornell.edu 812771Sqtt2@cornell.edu#define TIMER_INTERVAL 2 912771Sqtt2@cornell.edu 1012771Sqtt2@cornell.edu#undef EXTRA_INIT_TIMER 1112771Sqtt2@cornell.edu#define EXTRA_INIT_TIMER \ 1212771Sqtt2@cornell.edu li a0, MIP_MTIP; \ 1312771Sqtt2@cornell.edu csrs mie, a0; \ 1412771Sqtt2@cornell.edu csrr a0, mtime; \ 1512771Sqtt2@cornell.edu addi a0, a0, TIMER_INTERVAL; \ 1612771Sqtt2@cornell.edu csrw mtimecmp, a0; \ 1712771Sqtt2@cornell.edu 1812771Sqtt2@cornell.edu#if SSTATUS_XS != 0x18000 1912771Sqtt2@cornell.edu# error 2012771Sqtt2@cornell.edu#endif 2112771Sqtt2@cornell.edu#define XS_SHIFT 15 2212771Sqtt2@cornell.edu 2312771Sqtt2@cornell.edu#undef INTERRUPT_HANDLER 2412771Sqtt2@cornell.edu#define INTERRUPT_HANDLER \ 2512771Sqtt2@cornell.edu slli t5, t5, 1; \ 2612771Sqtt2@cornell.edu srli t5, t5, 1; \ 2712771Sqtt2@cornell.edu add t5, t5, -IRQ_M_TIMER; \ 2812771Sqtt2@cornell.edu bnez t5, other_exception; /* other interrups shouldn't happen */\ 2912771Sqtt2@cornell.edu csrr t5, mtime; \ 3012771Sqtt2@cornell.edu addi t5, t5, TIMER_INTERVAL; \ 3112771Sqtt2@cornell.edu csrw mtimecmp, t5; \ 3212771Sqtt2@cornell.edu mret; \ 3312771Sqtt2@cornell.edu 3412771Sqtt2@cornell.edu//----------------------------------------------------------------------- 3512771Sqtt2@cornell.edu// Data Section Macro 3612771Sqtt2@cornell.edu//----------------------------------------------------------------------- 3712771Sqtt2@cornell.edu 3812771Sqtt2@cornell.edu#undef EXTRA_DATA 3912771Sqtt2@cornell.edu#define EXTRA_DATA \ 4012771Sqtt2@cornell.edu .align 3; \ 4112771Sqtt2@cornell.eduregspill: \ 4212771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 4312771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 4412771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 4512771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 4612771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 4712771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 4812771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 4912771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5012771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5112771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5212771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5312771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5412771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5512771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5612771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5712771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5812771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 5912771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 6012771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 6112771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 6212771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 6312771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 6412771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 6512771Sqtt2@cornell.edu .dword 0xdeadbeefcafebabe; \ 6612771Sqtt2@cornell.eduevac: \ 6712771Sqtt2@cornell.edu .skip 32768; \ 6812771Sqtt2@cornell.edu 6912771Sqtt2@cornell.edu#endif 70