@@ -2650,6 +2650,25 @@ mod tests {
2650
2650
0x03 , 0xa5 , 0x0c , 0x00 , // lw a0, 0(s9); test MMIO read
2651
2651
0x93 , 0x05 , 0x70 , 0x60 , // li a1, 0x0607;
2652
2652
0x23 , 0xa0 , 0xbc , 0x00 , // sw a1, 0(s9); test MMIO write
2653
+ //sbi_console_getchar
2654
+ 0x01 , 0x45 , // li a0, 0
2655
+ 0x81 , 0x45 , // li a1, 0
2656
+ 0x01 , 0x46 , // li a2, 0
2657
+ 0x81 , 0x46 , // li a3, 0
2658
+ 0x01 , 0x47 , // li a4, 0
2659
+ 0x81 , 0x47 , // li a5, 0
2660
+ 0x01 , 0x48 , // li a6, 0
2661
+ 0x89 , 0x48 , // li a7, 2
2662
+ 0x73 , 0x00 , 0x00 , 0x00 , //ecall
2663
+ //sbi_console_putchar
2664
+ 0x81 , 0x45 , // li a1, 0
2665
+ 0x01 , 0x46 , // li a2, 0
2666
+ 0x81 , 0x46 , // li a3, 0
2667
+ 0x01 , 0x47 , // li a4, 0
2668
+ 0x81 , 0x47 , // li a5, 0
2669
+ 0x01 , 0x48 , // li a6, 0
2670
+ 0x85 , 0x48 , // li a7, 1
2671
+ 0x73 , 0x00 , 0x00 , 0x00 , //ecall
2653
2672
0x6f , 0x00 , 0x00 , 0x00 , // j .; shouldn't get here, but if so loop forever
2654
2673
] ;
2655
2674
@@ -2721,6 +2740,12 @@ mod tests {
2721
2740
. map ( |page| page. count_ones ( ) )
2722
2741
. sum ( ) ;
2723
2742
assert_eq ! ( dirty_pages, 1 ) ;
2743
+ }
2744
+ VcpuExit :: SbiExt0_1ConsoleGetchar ( data) => {
2745
+ data[ 0 ] = 0x2a ;
2746
+ }
2747
+ VcpuExit :: SbiExt0_1ConsolePutchar ( data) => {
2748
+ assert_eq ! ( data, 0x2a ) ;
2724
2749
break ;
2725
2750
}
2726
2751
r => panic ! ( "unexpected exit reason: {:?}" , r) ,
0 commit comments