@@ -78,6 +78,39 @@ pub fn miralis_to_sail(ctx: &VirtContext) -> SailVirtCtx {
78
78
sail_ctx. vtype = BitField :: new ( ctx. csr . vtype as u64 ) ;
79
79
sail_ctx. vlenb = BitVector :: new ( ctx. csr . vlenb as u64 ) ;
80
80
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
+
81
114
sail_ctx
82
115
}
83
116
@@ -351,6 +384,39 @@ pub fn sail_to_miralis(sail_ctx: SailVirtCtx) -> VirtContext {
351
384
ctx. csr . vtype = sail_ctx. vtype . bits . bits ( ) as usize ;
352
385
ctx. csr . vlenb = sail_ctx. vlenb . bits ( ) as usize ;
353
386
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
+
354
420
ctx
355
421
}
356
422
0 commit comments