blob: ddc1d123eb290f5da2a9f1d5ed5c2cf6435f56bd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2026 Richard QIn
*/
#pragma once
#include "common/types.h"
struct Trapframe
{
/* 0 */ uint64 kernel_satp;
/* 8 */ uint64 kernel_sp;
/* 16 */ uint64 kernel_trap;
/* 24 */ uint64 epc;
/* 32 */ uint64 kernel_hartid;
/* 40 */ uint64 ra; // x1
/* 48 */ uint64 sp; // x2
/* 56 */ uint64 gp; // x3
/* 64 */ uint64 tp; // x4
/* 72 */ uint64 t0; // x5
/* 80 */ uint64 t1; // x6
/* 88 */ uint64 t2; // x7
/* 96 */ uint64 s0; // x8 (Frame Pointer)
/* 104 */ uint64 s1; // x9
/* 112 */ uint64 a0; // x10
/* 120 */ uint64 a1; // x11
/* 128 */ uint64 a2; // x12
/* 136 */ uint64 a3; // x13
/* 144 */ uint64 a4; // x14
/* 152 */ uint64 a5; // x15
/* 160 */ uint64 a6; // x16
/* 168 */ uint64 a7; // x17
/* 176 */ uint64 s2; // x18
/* 184 */ uint64 s3; // x19
/* 192 */ uint64 s4; // x20
/* 200 */ uint64 s5; // x21
/* 208 */ uint64 s6; // x22
/* 216 */ uint64 s7; // x23
/* 224 */ uint64 s8; // x24
/* 232 */ uint64 s9; // x25
/* 240 */ uint64 s10; // x26
/* 248 */ uint64 s11; // x27
/* 256 */ uint64 t3; // x28
/* 264 */ uint64 t4; // x29
/* 272 */ uint64 t5; // x30
/* 280 */ uint64 t6; // x31
};
namespace Trap
{
void init();
void inithart();
int devintr();
}
|