aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/mfc0.h
blob: 8a0a84ae9d4b5e465b7573c68ce815136514e06d (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
require_supervisor;

switch(insn.rtype.rb)
{
  case 0:
    RA = sext32(sr);
    break;
  case 1:
    RA = sext32(epc);
    break;
  case 2:
    RA = sext32(badvaddr);
    break;
  case 3:
    RA = sext32(ebase);
    break;

  case 8:
    RA = sext32(MEMSIZE >> 12);
    break;

  case 17:
    RA = sext32(sim->get_fromhost());
    break;

  default:
    RA = -1;
}