@@ -429,82 +429,86 @@ unsafe extern "C" fn context_switch(_current_task: &mut TaskContext, _next_task:
429429 )
430430}
431431
432- impl TrapFrame {
433- pub fn to_pt_regs ( & mut self ) -> axprobe:: PtRegs {
434- axprobe:: PtRegs {
435- epc : self . sepc ,
436- ra : self . regs . ra ,
437- sp : self . regs . sp ,
438- gp : self . regs . gp ,
439- tp : self . regs . tp ,
440- t0 : self . regs . t0 ,
441- t1 : self . regs . t1 ,
442- t2 : self . regs . t2 ,
443- s0 : self . regs . s0 ,
444- s1 : self . regs . s1 ,
445- a0 : self . regs . a0 ,
446- a1 : self . regs . a1 ,
447- a2 : self . regs . a2 ,
448- a3 : self . regs . a3 ,
449- a4 : self . regs . a4 ,
450- a5 : self . regs . a5 ,
451- a6 : self . regs . a6 ,
452- a7 : self . regs . a7 ,
453- s2 : self . regs . s2 ,
454- s3 : self . regs . s3 ,
455- s4 : self . regs . s4 ,
456- s5 : self . regs . s5 ,
457- s6 : self . regs . s6 ,
458- s7 : self . regs . s7 ,
459- s8 : self . regs . s8 ,
460- s9 : self . regs . s9 ,
461- s10 : self . regs . s10 ,
462- s11 : self . regs . s11 ,
463- t3 : self . regs . t3 ,
464- t4 : self . regs . t4 ,
465- t5 : self . regs . t5 ,
466- t6 : self . regs . t6 ,
467- status : self . sstatus . bits ( ) ,
432+ #[ cfg( feature = "kprobe" ) ]
433+ impl From < & TrapFrame > for kprobe:: PtRegs {
434+ fn from ( tf : & TrapFrame ) -> Self {
435+ kprobe:: PtRegs {
436+ epc : tf. sepc ,
437+ ra : tf. regs . ra ,
438+ sp : tf. regs . sp ,
439+ gp : tf. regs . gp ,
440+ tp : tf. regs . tp ,
441+ t0 : tf. regs . t0 ,
442+ t1 : tf. regs . t1 ,
443+ t2 : tf. regs . t2 ,
444+ s0 : tf. regs . s0 ,
445+ s1 : tf. regs . s1 ,
446+ a0 : tf. regs . a0 ,
447+ a1 : tf. regs . a1 ,
448+ a2 : tf. regs . a2 ,
449+ a3 : tf. regs . a3 ,
450+ a4 : tf. regs . a4 ,
451+ a5 : tf. regs . a5 ,
452+ a6 : tf. regs . a6 ,
453+ a7 : tf. regs . a7 ,
454+ s2 : tf. regs . s2 ,
455+ s3 : tf. regs . s3 ,
456+ s4 : tf. regs . s4 ,
457+ s5 : tf. regs . s5 ,
458+ s6 : tf. regs . s6 ,
459+ s7 : tf. regs . s7 ,
460+ s8 : tf. regs . s8 ,
461+ s9 : tf. regs . s9 ,
462+ s10 : tf. regs . s10 ,
463+ s11 : tf. regs . s11 ,
464+ t3 : tf. regs . t3 ,
465+ t4 : tf. regs . t4 ,
466+ t5 : tf. regs . t5 ,
467+ t6 : tf. regs . t6 ,
468+ status : tf. sstatus . bits ( ) ,
468469 // todo : other fields
469470 badaddr : 0 ,
470471 cause : 0 ,
471472 orig_a0 : 0 ,
472473 }
473474 }
475+ }
474476
475- pub fn update_from_pt_regs ( & mut self , pt_regs : axprobe:: PtRegs ) {
476- self . sepc = pt_regs. epc ;
477- self . regs . ra = pt_regs. ra ;
478- self . regs . sp = pt_regs. sp ;
479- self . regs . gp = pt_regs. gp ;
480- self . regs . tp = pt_regs. tp ;
481- self . regs . t0 = pt_regs. t0 ;
482- self . regs . t1 = pt_regs. t1 ;
483- self . regs . t2 = pt_regs. t2 ;
484- self . regs . s0 = pt_regs. s0 ;
485- self . regs . s1 = pt_regs. s1 ;
486- self . regs . a0 = pt_regs. a0 ;
487- self . regs . a1 = pt_regs. a1 ;
488- self . regs . a2 = pt_regs. a2 ;
489- self . regs . a3 = pt_regs. a3 ;
490- self . regs . a4 = pt_regs. a4 ;
491- self . regs . a5 = pt_regs. a5 ;
492- self . regs . a6 = pt_regs. a6 ;
493- self . regs . a7 = pt_regs. a7 ;
494- self . regs . s2 = pt_regs. s2 ;
495- self . regs . s3 = pt_regs. s3 ;
496- self . regs . s4 = pt_regs. s4 ;
497- self . regs . s5 = pt_regs. s5 ;
498- self . regs . s6 = pt_regs. s6 ;
499- self . regs . s7 = pt_regs. s7 ;
500- self . regs . s8 = pt_regs. s8 ;
501- self . regs . s9 = pt_regs. s9 ;
502- self . regs . s10 = pt_regs. s10 ;
503- self . regs . s11 = pt_regs. s11 ;
504- self . regs . t3 = pt_regs. t3 ;
505- self . regs . t4 = pt_regs. t4 ;
506- self . regs . t5 = pt_regs. t5 ;
507- self . regs . t6 = pt_regs. t6 ;
508- // todo : other fields
477+ impl TrapFrame {
478+ /// Update the TrapFrame from kprobe::PtRegs
479+ pub fn update_from_ptregs ( & mut self , ptregs : kprobe:: PtRegs ) {
480+ self . sepc = ptregs. epc ;
481+ self . regs . ra = ptregs. ra ;
482+ self . regs . sp = ptregs. sp ;
483+ self . regs . gp = ptregs. gp ;
484+ self . regs . tp = ptregs. tp ;
485+ self . regs . t0 = ptregs. t0 ;
486+ self . regs . t1 = ptregs. t1 ;
487+ self . regs . t2 = ptregs. t2 ;
488+ self . regs . s0 = ptregs. s0 ;
489+ self . regs . s1 = ptregs. s1 ;
490+ self . regs . a0 = ptregs. a0 ;
491+ self . regs . a1 = ptregs. a1 ;
492+ self . regs . a2 = ptregs. a2 ;
493+ self . regs . a3 = ptregs. a3 ;
494+ self . regs . a4 = ptregs. a4 ;
495+ self . regs . a5 = ptregs. a5 ;
496+ self . regs . a6 = ptregs. a6 ;
497+ self . regs . a7 = ptregs. a7 ;
498+ self . regs . s2 = ptregs. s2 ;
499+ self . regs . s3 = ptregs. s3 ;
500+ self . regs . s4 = ptregs. s4 ;
501+ self . regs . s5 = ptregs. s5 ;
502+ self . regs . s6 = ptregs. s6 ;
503+ self . regs . s7 = ptregs. s7 ;
504+ self . regs . s8 = ptregs. s8 ;
505+ self . regs . s9 = ptregs. s9 ;
506+ self . regs . s10 = ptregs. s10 ;
507+ self . regs . s11 = ptregs. s11 ;
508+ self . regs . t3 = ptregs. t3 ;
509+ self . regs . t4 = ptregs. t4 ;
510+ self . regs . t5 = ptregs. t5 ;
511+ self . regs . t6 = ptregs. t6 ;
512+ self . sstatus = sstatus:: Sstatus :: from_bits ( ptregs. status ) ;
509513 }
510514}
0 commit comments