@@ -155,8 +155,7 @@ GEN(bgeu, {
155155GEN (lb , {
156156 memory_t * m = PRIV (rv )-> mem ;
157157 vm_reg [0 ] = ra_load (state , ir -> rs1 );
158- IIF (RV32_HAS (SYSTEM ))
159- (
158+ IIF (RV32_HAS (SYSTEM ))(
160159 {
161160 emit_load_imm_sext (state , temp_reg , ir -> imm );
162161 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
@@ -180,7 +179,7 @@ GEN(lb, {
180179 emit_cmp_imm32 (state , temp_reg , 0 );
181180 uint32_t jump_loc_0 = state -> offset ;
182181 emit_jcc_offset (state , 0x84 );
183- vm_reg [1 ] = map_vm_reg (state , ir -> rd );
182+ vm_reg [1 ] = map_vm_reg_reserved (state , ir -> rd , vm_reg [ 0 ] );
184183
185184 emit_load (state , S32 , parameter_reg [0 ], vm_reg [1 ],
186185 offsetof(riscv_t , X ) + 4 * ir -> rd );
@@ -207,8 +206,7 @@ GEN(lb, {
207206GEN (lh , {
208207 memory_t * m = PRIV (rv )-> mem ;
209208 vm_reg [0 ] = ra_load (state , ir -> rs1 );
210- IIF (RV32_HAS (SYSTEM ))
211- (
209+ IIF (RV32_HAS (SYSTEM ))(
212210 {
213211 emit_load_imm_sext (state , temp_reg , ir -> imm );
214212 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
@@ -232,7 +230,7 @@ GEN(lh, {
232230 emit_cmp_imm32 (state , temp_reg , 0 );
233231 uint32_t jump_loc_0 = state -> offset ;
234232 emit_jcc_offset (state , 0x84 );
235- vm_reg [1 ] = map_vm_reg (state , ir -> rd );
233+ vm_reg [1 ] = map_vm_reg_reserved (state , ir -> rd , vm_reg [ 0 ] );
236234
237235 emit_load (state , S32 , parameter_reg [0 ], vm_reg [1 ],
238236 offsetof(riscv_t , X ) + 4 * ir -> rd );
@@ -259,8 +257,7 @@ GEN(lh, {
259257GEN (lw , {
260258 memory_t * m = PRIV (rv )-> mem ;
261259 vm_reg [0 ] = ra_load (state , ir -> rs1 );
262- IIF (RV32_HAS (SYSTEM ))
263- (
260+ IIF (RV32_HAS (SYSTEM ))(
264261 {
265262 emit_load_imm_sext (state , temp_reg , ir -> imm );
266263 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
@@ -284,7 +281,7 @@ GEN(lw, {
284281 emit_cmp_imm32 (state , temp_reg , 0 );
285282 uint32_t jump_loc_0 = state -> offset ;
286283 emit_jcc_offset (state , 0x84 );
287- vm_reg [1 ] = map_vm_reg (state , ir -> rd );
284+ vm_reg [1 ] = map_vm_reg_reserved (state , ir -> rd , vm_reg [ 0 ] );
288285
289286 emit_load (state , S32 , parameter_reg [0 ], vm_reg [1 ],
290287 offsetof(riscv_t , X ) + 4 * ir -> rd );
@@ -311,8 +308,7 @@ GEN(lw, {
311308GEN (lbu , {
312309 memory_t * m = PRIV (rv )-> mem ;
313310 vm_reg [0 ] = ra_load (state , ir -> rs1 );
314- IIF (RV32_HAS (SYSTEM ))
315- (
311+ IIF (RV32_HAS (SYSTEM ))(
316312 {
317313 emit_load_imm_sext (state , temp_reg , ir -> imm );
318314 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
@@ -336,7 +332,7 @@ GEN(lbu, {
336332 emit_cmp_imm32 (state , temp_reg , 0 );
337333 uint32_t jump_loc_0 = state -> offset ;
338334 emit_jcc_offset (state , 0x84 );
339- vm_reg [1 ] = map_vm_reg (state , ir -> rd );
335+ vm_reg [1 ] = map_vm_reg_reserved (state , ir -> rd , vm_reg [ 0 ] );
340336
341337 emit_load (state , S32 , parameter_reg [0 ], vm_reg [1 ],
342338 offsetof(riscv_t , X ) + 4 * ir -> rd );
@@ -363,8 +359,7 @@ GEN(lbu, {
363359GEN (lhu , {
364360 memory_t * m = PRIV (rv )-> mem ;
365361 vm_reg [0 ] = ra_load (state , ir -> rs1 );
366- IIF (RV32_HAS (SYSTEM ))
367- (
362+ IIF (RV32_HAS (SYSTEM ))(
368363 {
369364 emit_load_imm_sext (state , temp_reg , ir -> imm );
370365 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
@@ -388,7 +383,7 @@ GEN(lhu, {
388383 emit_cmp_imm32 (state , temp_reg , 0 );
389384 uint32_t jump_loc_0 = state -> offset ;
390385 emit_jcc_offset (state , 0x84 );
391- vm_reg [1 ] = map_vm_reg (state , ir -> rd );
386+ vm_reg [1 ] = map_vm_reg_reserved (state , ir -> rd , vm_reg [ 0 ] );
392387
393388 emit_load (state , S32 , parameter_reg [0 ], vm_reg [1 ],
394389 offsetof(riscv_t , X ) + 4 * ir -> rd );
@@ -415,8 +410,7 @@ GEN(lhu, {
415410GEN (sb , {
416411 memory_t * m = PRIV (rv )-> mem ;
417412 vm_reg [0 ] = ra_load (state , ir -> rs1 );
418- IIF (RV32_HAS (SYSTEM ))
419- (
413+ IIF (RV32_HAS (SYSTEM ))(
420414 {
421415 emit_load_imm_sext (state , temp_reg , ir -> imm );
422416 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
@@ -465,8 +459,7 @@ GEN(sb, {
465459GEN (sh , {
466460 memory_t * m = PRIV (rv )-> mem ;
467461 vm_reg [0 ] = ra_load (state , ir -> rs1 );
468- IIF (RV32_HAS (SYSTEM ))
469- (
462+ IIF (RV32_HAS (SYSTEM ))(
470463 {
471464 emit_load_imm_sext (state , temp_reg , ir -> imm );
472465 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
@@ -515,8 +508,7 @@ GEN(sh, {
515508GEN (sw , {
516509 memory_t * m = PRIV (rv )-> mem ;
517510 vm_reg [0 ] = ra_load (state , ir -> rs1 );
518- IIF (RV32_HAS (SYSTEM ))
519- (
511+ IIF (RV32_HAS (SYSTEM ))(
520512 {
521513 emit_load_imm_sext (state , temp_reg , ir -> imm );
522514 emit_alu32 (state , 0x01 , vm_reg [0 ], temp_reg );
0 commit comments