@ -71,6 +71,7 @@ static void help(int exit_code = 1)
fprintf ( stderr , " --bootargs=<args> Provide custom bootargs for kernel [default: console=hvc0 earlycon=sbi] \n " ) ;
fprintf ( stderr , " --bootargs=<args> Provide custom bootargs for kernel [default: console=hvc0 earlycon=sbi] \n " ) ;
fprintf ( stderr , " --real-time-clint Increment clint time at real-time rate \n " ) ;
fprintf ( stderr , " --real-time-clint Increment clint time at real-time rate \n " ) ;
fprintf ( stderr , " --mmu-dirty Enable hardware management of PTE accessed and dirty bits \n " ) ;
fprintf ( stderr , " --mmu-dirty Enable hardware management of PTE accessed and dirty bits \n " ) ;
fprintf ( stderr , " --triggers=<n> Number of supported triggers [default 4] \n " ) ;
fprintf ( stderr , " --dm-progsize=<words> Progsize for the debug module [default 2] \n " ) ;
fprintf ( stderr , " --dm-progsize=<words> Progsize for the debug module [default 2] \n " ) ;
fprintf ( stderr , " --dm-sba=<bits> Debug system bus access supports up to "
fprintf ( stderr , " --dm-sba=<bits> Debug system bus access supports up to "
" <bits> wide accesses [default 0] \n " ) ;
" <bits> wide accesses [default 0] \n " ) ;
@ -355,7 +356,8 @@ int main(int argc, char** argv)
/*default_pmpregions=*/ 16 ,
/*default_pmpregions=*/ 16 ,
/*default_mem_layout=*/ parse_mem_layout ( " 2048 " ) ,
/*default_mem_layout=*/ parse_mem_layout ( " 2048 " ) ,
/*default_hartids=*/ std : : vector < int > ( ) ,
/*default_hartids=*/ std : : vector < int > ( ) ,
/*default_real_time_clint=*/ false ) ;
/*default_real_time_clint=*/ false ,
/*default_trigger_count=*/ 4 ) ;
auto const device_parser = [ & plugin_devices ] ( const char * s ) {
auto const device_parser = [ & plugin_devices ] ( const char * s ) {
const std : : string str ( s ) ;
const std : : string str ( s ) ;
@ -439,6 +441,7 @@ int main(int argc, char** argv)
parser . option ( 0 , " bootargs " , 1 , [ & ] ( const char * s ) { cfg . bootargs = s ; } ) ;
parser . option ( 0 , " bootargs " , 1 , [ & ] ( const char * s ) { cfg . bootargs = s ; } ) ;
parser . option ( 0 , " real-time-clint " , 0 , [ & ] ( const char UNUSED * s ) { cfg . real_time_clint = true ; } ) ;
parser . option ( 0 , " real-time-clint " , 0 , [ & ] ( const char UNUSED * s ) { cfg . real_time_clint = true ; } ) ;
parser . option ( 0 , " mmu-dirty " , 0 , [ & ] ( const char UNUSED * s ) { cfg . dirty_enabled = true ; } ) ;
parser . option ( 0 , " mmu-dirty " , 0 , [ & ] ( const char UNUSED * s ) { cfg . dirty_enabled = true ; } ) ;
parser . option ( 0 , " triggers " , 1 , [ & ] ( const char * s ) { cfg . trigger_count = atoul_safe ( s ) ; } ) ;
parser . option ( 0 , " extlib " , 1 , [ & ] ( const char * s ) {
parser . option ( 0 , " extlib " , 1 , [ & ] ( const char * s ) {
void * lib = dlopen ( s , RTLD_NOW | RTLD_GLOBAL ) ;
void * lib = dlopen ( s , RTLD_NOW | RTLD_GLOBAL ) ;
if ( lib = = NULL ) {
if ( lib = = NULL ) {