@@ -255,7 +255,7 @@ fn set_anchor(jit: &mut JitMemory, target: isize) {
255
255
256
256
// Load [src + offset] into dst
257
257
#[ inline]
258
- fn emit_load ( jit : & mut JitMemory , size : OperandSize , src : u8 , dst : u8 , offset : i32 ) {
258
+ fn emit_load ( jit : & mut JitMemory , size : & OperandSize , src : u8 , dst : u8 , offset : i32 ) {
259
259
let data = match size {
260
260
OperandSize :: S64 => 1 ,
261
261
_ => 0
@@ -297,7 +297,7 @@ fn emit_load_imm(jit: &mut JitMemory, dst: u8, imm: i64) {
297
297
298
298
// Store register src to [dst + offset]
299
299
#[ inline]
300
- fn emit_store ( jit : & mut JitMemory , size : OperandSize , src : u8 , dst : u8 , offset : i32 ) {
300
+ fn emit_store ( jit : & mut JitMemory , size : & OperandSize , src : u8 , dst : u8 , offset : i32 ) {
301
301
match size {
302
302
OperandSize :: S16 => emit1 ( jit, 0x66 ) , // 16-bit override
303
303
_ => { } ,
@@ -325,7 +325,7 @@ fn emit_store(jit: &mut JitMemory, size: OperandSize, src: u8, dst: u8, offset:
325
325
326
326
// Store immediate to [dst + offset]
327
327
#[ inline]
328
- fn emit_store_imm32 ( jit : & mut JitMemory , size : OperandSize , dst : u8 , offset : i32 , imm : i32 ) {
328
+ fn emit_store_imm32 ( jit : & mut JitMemory , size : & OperandSize , dst : u8 , offset : i32 , imm : i32 ) {
329
329
match size {
330
330
OperandSize :: S16 => emit1 ( jit, 0x66 ) , // 16-bit override
331
331
_ => { } ,
@@ -485,12 +485,12 @@ impl<'a> JitMemory<'a> {
485
485
// We have a fixed (simulated) mbuff: update mem and mem_end offset values in it.
486
486
// Store mem at mbuff + mem_offset. Trash R8.
487
487
emit_alu64 ( self , 0x01 , RDI , R8 ) ; // add mbuff to mem_offset in R8
488
- emit_store ( self , OperandSize :: S64 , RDX , R8 , 0 ) ; // set mem at mbuff + mem_offset
488
+ emit_store ( self , & OperandSize :: S64 , RDX , R8 , 0 ) ; // set mem at mbuff + mem_offset
489
489
// Store mem_end at mbuff + mem_end_offset. Trash R9.
490
- emit_load ( self , OperandSize :: S64 , RDX , R8 , 0 ) ; // load mem into R8
490
+ emit_load ( self , & OperandSize :: S64 , RDX , R8 , 0 ) ; // load mem into R8
491
491
emit_alu64 ( self , 0x01 , RCX , R8 ) ; // add mem_len to mem (= mem_end)
492
492
emit_alu64 ( self , 0x01 , RDI , R9 ) ; // add mbuff to mem_end_offset
493
- emit_store ( self , OperandSize :: S64 , R8 , R9 , 0 ) ; // store mem_end
493
+ emit_store ( self , & OperandSize :: S64 , R8 , R9 , 0 ) ; // store mem_end
494
494
495
495
// Move rdi into register 1
496
496
if map_register ( 1 ) != RDI {
@@ -522,32 +522,32 @@ impl<'a> JitMemory<'a> {
522
522
// BPF_LD class
523
523
// R10 is a constant pointer to mem.
524
524
ebpf:: LD_ABS_B =>
525
- emit_load ( self , OperandSize :: S8 , R10 , RAX , insn. imm ) ,
525
+ emit_load ( self , & OperandSize :: S8 , R10 , RAX , insn. imm ) ,
526
526
ebpf:: LD_ABS_H =>
527
- emit_load ( self , OperandSize :: S16 , R10 , RAX , insn. imm ) ,
527
+ emit_load ( self , & OperandSize :: S16 , R10 , RAX , insn. imm ) ,
528
528
ebpf:: LD_ABS_W =>
529
- emit_load ( self , OperandSize :: S32 , R10 , RAX , insn. imm ) ,
529
+ emit_load ( self , & OperandSize :: S32 , R10 , RAX , insn. imm ) ,
530
530
ebpf:: LD_ABS_DW =>
531
- emit_load ( self , OperandSize :: S64 , R10 , RAX , insn. imm ) ,
531
+ emit_load ( self , & OperandSize :: S64 , R10 , RAX , insn. imm ) ,
532
532
ebpf:: LD_IND_B => {
533
533
emit_mov ( self , R10 , R11 ) ; // load mem into R11
534
534
emit_alu64 ( self , 0x01 , src, R11 ) ; // add src to R11
535
- emit_load ( self , OperandSize :: S8 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
535
+ emit_load ( self , & OperandSize :: S8 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
536
536
} ,
537
537
ebpf:: LD_IND_H => {
538
538
emit_mov ( self , R10 , R11 ) ; // load mem into R11
539
539
emit_alu64 ( self , 0x01 , src, R11 ) ; // add src to R11
540
- emit_load ( self , OperandSize :: S16 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
540
+ emit_load ( self , & OperandSize :: S16 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
541
541
} ,
542
542
ebpf:: LD_IND_W => {
543
543
emit_mov ( self , R10 , R11 ) ; // load mem into R11
544
544
emit_alu64 ( self , 0x01 , src, R11 ) ; // add src to R11
545
- emit_load ( self , OperandSize :: S32 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
545
+ emit_load ( self , & OperandSize :: S32 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
546
546
} ,
547
547
ebpf:: LD_IND_DW => {
548
548
emit_mov ( self , R10 , R11 ) ; // load mem into R11
549
549
emit_alu64 ( self , 0x01 , src, R11 ) ; // add src to R11
550
- emit_load ( self , OperandSize :: S64 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
550
+ emit_load ( self , & OperandSize :: S64 , R11 , RAX , insn. imm ) ; // ld R0, mem[src+imm]
551
551
} ,
552
552
553
553
ebpf:: LD_DW_IMM => {
@@ -559,33 +559,33 @@ impl<'a> JitMemory<'a> {
559
559
560
560
// BPF_LDX class
561
561
ebpf:: LD_B_REG =>
562
- emit_load ( self , OperandSize :: S8 , src, dst, insn. off as i32 ) ,
562
+ emit_load ( self , & OperandSize :: S8 , src, dst, insn. off as i32 ) ,
563
563
ebpf:: LD_H_REG =>
564
- emit_load ( self , OperandSize :: S16 , src, dst, insn. off as i32 ) ,
564
+ emit_load ( self , & OperandSize :: S16 , src, dst, insn. off as i32 ) ,
565
565
ebpf:: LD_W_REG =>
566
- emit_load ( self , OperandSize :: S32 , src, dst, insn. off as i32 ) ,
566
+ emit_load ( self , & OperandSize :: S32 , src, dst, insn. off as i32 ) ,
567
567
ebpf:: LD_DW_REG =>
568
- emit_load ( self , OperandSize :: S64 , src, dst, insn. off as i32 ) ,
568
+ emit_load ( self , & OperandSize :: S64 , src, dst, insn. off as i32 ) ,
569
569
570
570
// BPF_ST class
571
571
ebpf:: ST_B_IMM =>
572
- emit_store_imm32 ( self , OperandSize :: S8 , dst, insn. off as i32 , insn. imm ) ,
572
+ emit_store_imm32 ( self , & OperandSize :: S8 , dst, insn. off as i32 , insn. imm ) ,
573
573
ebpf:: ST_H_IMM =>
574
- emit_store_imm32 ( self , OperandSize :: S16 , dst, insn. off as i32 , insn. imm ) ,
574
+ emit_store_imm32 ( self , & OperandSize :: S16 , dst, insn. off as i32 , insn. imm ) ,
575
575
ebpf:: ST_W_IMM =>
576
- emit_store_imm32 ( self , OperandSize :: S32 , dst, insn. off as i32 , insn. imm ) ,
576
+ emit_store_imm32 ( self , & OperandSize :: S32 , dst, insn. off as i32 , insn. imm ) ,
577
577
ebpf:: ST_DW_IMM =>
578
- emit_store_imm32 ( self , OperandSize :: S64 , dst, insn. off as i32 , insn. imm ) ,
578
+ emit_store_imm32 ( self , & OperandSize :: S64 , dst, insn. off as i32 , insn. imm ) ,
579
579
580
580
// BPF_STX class
581
581
ebpf:: ST_B_REG =>
582
- emit_store ( self , OperandSize :: S8 , src, dst, insn. off as i32 ) ,
582
+ emit_store ( self , & OperandSize :: S8 , src, dst, insn. off as i32 ) ,
583
583
ebpf:: ST_H_REG =>
584
- emit_store ( self , OperandSize :: S16 , src, dst, insn. off as i32 ) ,
584
+ emit_store ( self , & OperandSize :: S16 , src, dst, insn. off as i32 ) ,
585
585
ebpf:: ST_W_REG =>
586
- emit_store ( self , OperandSize :: S32 , src, dst, insn. off as i32 ) ,
586
+ emit_store ( self , & OperandSize :: S32 , src, dst, insn. off as i32 ) ,
587
587
ebpf:: ST_DW_REG =>
588
- emit_store ( self , OperandSize :: S64 , src, dst, insn. off as i32 ) ,
588
+ emit_store ( self , & OperandSize :: S64 , src, dst, insn. off as i32 ) ,
589
589
ebpf:: ST_W_XADD => unimplemented ! ( ) ,
590
590
ebpf:: ST_DW_XADD => unimplemented ! ( ) ,
591
591
0 commit comments