Skip to content

Commit cb74bea

Browse files
francois141CharlyCst
authored andcommitted
Transfer general purpose registers in adapters.rs
Ultimately we are also interested in verifying the formal registers. This commits extends the adapters to transfer the general purpose registers between the two contexts.
1 parent e7b080b commit cb74bea

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

model_checking/src/adapters.rs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,39 @@ pub fn miralis_to_sail(ctx: &VirtContext) -> SailVirtCtx {
7878
sail_ctx.vtype = BitField::new(ctx.csr.vtype as u64);
7979
sail_ctx.vlenb = BitVector::new(ctx.csr.vlenb as u64);
8080

81+
// Transfer the general purpose registers
82+
sail_ctx.x1 = BitVector::new(ctx.regs[0] as u64);
83+
sail_ctx.x2 = BitVector::new(ctx.regs[1] as u64);
84+
sail_ctx.x3 = BitVector::new(ctx.regs[2] as u64);
85+
sail_ctx.x4 = BitVector::new(ctx.regs[3] as u64);
86+
sail_ctx.x5 = BitVector::new(ctx.regs[4] as u64);
87+
sail_ctx.x6 = BitVector::new(ctx.regs[5] as u64);
88+
sail_ctx.x7 = BitVector::new(ctx.regs[6] as u64);
89+
sail_ctx.x8 = BitVector::new(ctx.regs[7] as u64);
90+
sail_ctx.x9 = BitVector::new(ctx.regs[8] as u64);
91+
sail_ctx.x10 = BitVector::new(ctx.regs[9] as u64);
92+
sail_ctx.x11 = BitVector::new(ctx.regs[10] as u64);
93+
sail_ctx.x12 = BitVector::new(ctx.regs[11] as u64);
94+
sail_ctx.x13 = BitVector::new(ctx.regs[12] as u64);
95+
sail_ctx.x14 = BitVector::new(ctx.regs[13] as u64);
96+
sail_ctx.x15 = BitVector::new(ctx.regs[14] as u64);
97+
sail_ctx.x16 = BitVector::new(ctx.regs[15] as u64);
98+
sail_ctx.x17 = BitVector::new(ctx.regs[16] as u64);
99+
sail_ctx.x18 = BitVector::new(ctx.regs[17] as u64);
100+
sail_ctx.x19 = BitVector::new(ctx.regs[18] as u64);
101+
sail_ctx.x20 = BitVector::new(ctx.regs[19] as u64);
102+
sail_ctx.x21 = BitVector::new(ctx.regs[20] as u64);
103+
sail_ctx.x22 = BitVector::new(ctx.regs[21] as u64);
104+
sail_ctx.x23 = BitVector::new(ctx.regs[22] as u64);
105+
sail_ctx.x24 = BitVector::new(ctx.regs[23] as u64);
106+
sail_ctx.x25 = BitVector::new(ctx.regs[24] as u64);
107+
sail_ctx.x26 = BitVector::new(ctx.regs[25] as u64);
108+
sail_ctx.x27 = BitVector::new(ctx.regs[26] as u64);
109+
sail_ctx.x28 = BitVector::new(ctx.regs[27] as u64);
110+
sail_ctx.x29 = BitVector::new(ctx.regs[28] as u64);
111+
sail_ctx.x30 = BitVector::new(ctx.regs[29] as u64);
112+
sail_ctx.x31 = BitVector::new(ctx.regs[30] as u64);
113+
81114
sail_ctx
82115
}
83116

@@ -351,6 +384,39 @@ pub fn sail_to_miralis(sail_ctx: SailVirtCtx) -> VirtContext {
351384
ctx.csr.vtype = sail_ctx.vtype.bits.bits() as usize;
352385
ctx.csr.vlenb = sail_ctx.vlenb.bits() as usize;
353386

387+
// Transfer the general purpose registers
388+
ctx.regs[0] = sail_ctx.x1.bits as usize;
389+
ctx.regs[1] = sail_ctx.x2.bits as usize;
390+
ctx.regs[2] = sail_ctx.x3.bits as usize;
391+
ctx.regs[3] = sail_ctx.x4.bits as usize;
392+
ctx.regs[4] = sail_ctx.x5.bits as usize;
393+
ctx.regs[5] = sail_ctx.x6.bits as usize;
394+
ctx.regs[6] = sail_ctx.x7.bits as usize;
395+
ctx.regs[7] = sail_ctx.x8.bits as usize;
396+
ctx.regs[8] = sail_ctx.x9.bits as usize;
397+
ctx.regs[9] = sail_ctx.x10.bits as usize;
398+
ctx.regs[10] = sail_ctx.x11.bits as usize;
399+
ctx.regs[11] = sail_ctx.x12.bits as usize;
400+
ctx.regs[12] = sail_ctx.x13.bits as usize;
401+
ctx.regs[13] = sail_ctx.x14.bits as usize;
402+
ctx.regs[14] = sail_ctx.x15.bits as usize;
403+
ctx.regs[15] = sail_ctx.x16.bits as usize;
404+
ctx.regs[16] = sail_ctx.x17.bits as usize;
405+
ctx.regs[17] = sail_ctx.x18.bits as usize;
406+
ctx.regs[18] = sail_ctx.x19.bits as usize;
407+
ctx.regs[19] = sail_ctx.x20.bits as usize;
408+
ctx.regs[20] = sail_ctx.x21.bits as usize;
409+
ctx.regs[21] = sail_ctx.x22.bits as usize;
410+
ctx.regs[22] = sail_ctx.x23.bits as usize;
411+
ctx.regs[23] = sail_ctx.x24.bits as usize;
412+
ctx.regs[24] = sail_ctx.x25.bits as usize;
413+
ctx.regs[25] = sail_ctx.x26.bits as usize;
414+
ctx.regs[26] = sail_ctx.x27.bits as usize;
415+
ctx.regs[27] = sail_ctx.x28.bits as usize;
416+
ctx.regs[28] = sail_ctx.x29.bits as usize;
417+
ctx.regs[29] = sail_ctx.x30.bits as usize;
418+
ctx.regs[30] = sail_ctx.x31.bits as usize;
419+
354420
ctx
355421
}
356422

0 commit comments

Comments
 (0)