implement C_GET_HIGH
This commit is contained in:
@@ -186,7 +186,9 @@ Bit #(5) f5rs2_cap_CSealEntry = 5'h11;
|
||||
Bit #(5) f5rs2_cap_CLoadTags = 5'h12;
|
||||
// 5'h13 unused
|
||||
Bit #(5) f5rs2_cap_JALR_PCC = 5'h14;
|
||||
// 5'h15-5'h1f unused (5'h1f reserved for 1-reg instructions)
|
||||
// 5'h15-5'h16 unused
|
||||
Bit #(5) f5rs2_cap_CGetHigh = 5'h17;
|
||||
// 5'h18-5'h1f unused (5'h1f reserved for 1-reg instructions)
|
||||
|
||||
// ================================================================
|
||||
// f7_cap_{Load, Store} opcode subdivision
|
||||
|
||||
@@ -1327,6 +1327,13 @@ function DecodeResult decode(Instruction inst, Bool cap_mode);
|
||||
regs.src1 = Valid(tagged Gpr rs1);
|
||||
dInst.capFunc = CapInspect (GetType);
|
||||
end
|
||||
f5rs2_cap_CGetHigh: begin
|
||||
legalInst = True;
|
||||
dInst.iType = Cap;
|
||||
regs.dst = Valid(tagged Gpr rd);
|
||||
regs.src1 = Valid(tagged Gpr rs1);
|
||||
dInst.capFunc = CapInspect (GetHigh);
|
||||
end
|
||||
f5rs2_cap_CLoadTags: begin
|
||||
legalInst = True;
|
||||
dInst.iType = Ld;
|
||||
|
||||
@@ -308,6 +308,8 @@ function Data capInspect(CapPipe a, CapPipe b, CapInspectFunc func);
|
||||
zeroExtend(getFlags(a));
|
||||
tagged GetPerm :
|
||||
zeroExtend(getPerms(a));
|
||||
tagged GetHigh :
|
||||
zeroExtend(tpl_2(toMem(a))[127:64]);
|
||||
tagged GetType :
|
||||
tpl_1(extractType(a));
|
||||
tagged ToPtr :
|
||||
|
||||
@@ -363,6 +363,7 @@ typedef union tagged {
|
||||
void GetFlags;
|
||||
void GetPerm;
|
||||
void GetType;
|
||||
void GetHigh;
|
||||
void ToPtr;
|
||||
} CapInspectFunc deriving(Bits, Eq, FShow);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user