1 |
2 |
sergeykhbr |
/**
|
2 |
|
|
* @file
|
3 |
|
|
* @copyright Copyright 2016 GNSS Sensor Ltd. All right reserved.
|
4 |
|
|
* @author Sergey Khabarov - sergeykhbr@gmail.com
|
5 |
|
|
* @brief RISC-V extension-A (Atomic Instructions).
|
6 |
|
|
*/
|
7 |
|
|
|
8 |
|
|
#include "api_utils.h"
|
9 |
|
|
#include "riscv-isa.h"
|
10 |
|
|
#include "instructions.h"
|
11 |
|
|
|
12 |
|
|
namespace debugger {
|
13 |
|
|
|
14 |
|
|
|
15 |
|
|
void addIsaExtensionA(CpuContextType *data, AttributeType *out) {
|
16 |
|
|
// TODO
|
17 |
|
|
/*
|
18 |
|
|
addInstr("AMOADD_W", "00000????????????010?????0101111", NULL, out);
|
19 |
|
|
addInstr("AMOXOR_W", "00100????????????010?????0101111", NULL, out);
|
20 |
|
|
addInstr("AMOOR_W", "01000????????????010?????0101111", NULL, out);
|
21 |
|
|
addInstr("AMOAND_W", "01100????????????010?????0101111", NULL, out);
|
22 |
|
|
addInstr("AMOMIN_W", "10000????????????010?????0101111", NULL, out);
|
23 |
|
|
addInstr("AMOMAX_W", "10100????????????010?????0101111", NULL, out);
|
24 |
|
|
addInstr("AMOMINU_W", "11000????????????010?????0101111", NULL, out);
|
25 |
|
|
addInstr("AMOMAXU_W", "11100????????????010?????0101111", NULL, out);
|
26 |
|
|
addInstr("AMOSWAP_W", "00001????????????010?????0101111", NULL, out);
|
27 |
|
|
addInstr("LR_W", "00010??00000?????010?????0101111", NULL, out);
|
28 |
|
|
addInstr("SC_W", "00011????????????010?????0101111", NULL, out);
|
29 |
|
|
addInstr("AMOADD_D", "00000????????????011?????0101111", NULL, out);
|
30 |
|
|
addInstr("AMOXOR_D", "00100????????????011?????0101111", NULL, out);
|
31 |
|
|
addInstr("AMOOR_D", "01000????????????011?????0101111", NULL, out);
|
32 |
|
|
addInstr("AMOAND_D", "01100????????????011?????0101111", NULL, out);
|
33 |
|
|
addInstr("AMOMIN_D", "10000????????????011?????0101111", NULL, out);
|
34 |
|
|
addInstr("AMOMAX_D", "10100????????????011?????0101111", NULL, out);
|
35 |
|
|
addInstr("AMOMINU_D", "11000????????????011?????0101111", NULL, out);
|
36 |
|
|
addInstr("AMOMAXU_D", "11100????????????011?????0101111", NULL, out);
|
37 |
|
|
addInstr("AMOSWAP_D", "00001????????????011?????0101111", NULL, out);
|
38 |
|
|
addInstr("LR_D", "00010??00000?????011?????0101111", NULL, out);
|
39 |
|
|
addInstr("SC_D", "00011????????????011?????0101111", NULL, out);
|
40 |
|
|
*/
|
41 |
|
|
data->csr[CSR_misa] |= (1LL << ('A' - 'A'));
|
42 |
|
|
}
|
43 |
|
|
|
44 |
|
|
} // namespace debugger
|