提交 de576882 编写于 作者: Z Zihao Yu

riscv64,exec: add csrrc and amoadd

上级 f043ae26
......@@ -53,4 +53,5 @@ make_EHelper(sraw);
make_EHelper(srlw);
make_EHelper(amoswap);
make_EHelper(amoadd);
make_EHelper(amoor);
......@@ -11,6 +11,18 @@ make_EHelper(amoswap) {
print_asm_template3(amoswap);
}
make_EHelper(amoadd) {
rtl_lm(&s0, &id_src->val, decinfo.width);
rtl_sext(&s0, &s0, decinfo.width);
rtl_sr(id_dest->reg, &s0, 0);
// add
rtl_add(&s0, &s0, &id_src2->val);
rtl_sm(&id_src->val, &s0, decinfo.width);
print_asm_template3(amoor);
}
make_EHelper(amoor) {
rtl_lm(&s0, &id_src->val, decinfo.width);
rtl_sext(&s0, &s0, decinfo.width);
......
......@@ -60,7 +60,7 @@ static make_EHelper(op32) {
static make_EHelper(system) {
static OpcodeEntry table [8] = {
EX(priv), IDEX(csr, csrrw), IDEX(csr, csrrs), EMPTY, EMPTY, IDEX(csri, csrrw), IDEX(csri, csrrs), IDEX(csri, csrrc)
EX(priv), IDEX(csr, csrrw), IDEX(csr, csrrs), IDEX(csr, csrrc), EMPTY, IDEX(csri, csrrw), IDEX(csri, csrrs), IDEX(csri, csrrc)
};
idex(pc, &table[decinfo.isa.instr.funct3]);
}
......@@ -70,7 +70,7 @@ static make_EHelper(atomic) {
EMPTY, EX(amoswap), EMPTY, EMPTY
};
static OpcodeEntry table_hi [8] = {
EMPTY, EMPTY, EX(amoor), EMPTY, EMPTY, EMPTY, EMPTY, EMPTY
EX(amoadd), EMPTY, EX(amoor), EMPTY, EMPTY, EMPTY, EMPTY, EMPTY
};
decinfo.width = 1 << decinfo.isa.instr.funct3;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册