/* register simulator-specific statistics */ void ld_reg_stats(struct stat_sdb_t *sdb) /* stats data base */ { stat_reg_addr(sdb, "ld_text_base", "program text (code) segment base", &ld_text_base, ld_text_base, "0x%08p"); stat_reg_addr(sdb, "ld_text_bound", "program text (code) segment bound", &ld_text_bound, ld_text_bound, "0x%08p"); stat_reg_uint(sdb, "ld_text_size", "program text (code) size in bytes", &ld_text_size, ld_text_size, NULL); stat_reg_addr(sdb, "ld_data_base", "program initialized data segment base", &ld_data_base, ld_data_base, "0x%08p"); stat_reg_addr(sdb, "ld_data_bound", "program initialized data segment bound", &ld_data_bound, ld_data_bound, "0x%08p"); stat_reg_uint(sdb, "ld_data_size", "program init'ed `.data' and uninit'ed `.bss' size in bytes", &ld_data_size, ld_data_size, NULL); stat_reg_addr(sdb, "ld_stack_base", "program stack segment base (highest address in stack)", &ld_stack_base, ld_stack_base, "0x%08p"); #if 0 /* FIXME: broken... */ stat_reg_addr(sdb, "ld_stack_min", "program stack segment lowest address", &ld_stack_min, ld_stack_min, "0x%08p"); #endif stat_reg_uint(sdb, "ld_stack_size", "program initial stack size", &ld_stack_size, ld_stack_size, NULL); stat_reg_addr(sdb, "ld_prog_entry", "program entry point (initial PC)", &ld_prog_entry, ld_prog_entry, "0x%08p"); stat_reg_addr(sdb, "ld_environ_base", "program environment base address address", &ld_environ_base, ld_environ_base, "0x%08p"); stat_reg_int(sdb, "ld_target_big_endian", "target executable endian-ness, non-zero if big endian", &ld_target_big_endian, ld_target_big_endian, NULL); }
/* register simulator-specific statistics */ void ld_reg_stats(struct stat_sdb_t *sdb, int threadid) /* stats data base */ { context *current; current = thecontexts[threadid]; stat_reg_uint(sdb, "threadid", "Thread id", ¤t->id, current->id, "0x%010p"); stat_reg_addr(sdb, "ld_text_base", "program text (code) segment base", ¤t->ld_text_base, current->ld_text_base, "0x%010p"); stat_reg_uint(sdb, "ld_text_size", "program text (code) size in bytes", ¤t->ld_text_size, current->ld_text_size, NULL); stat_reg_addr(sdb, "ld_data_base", "program initialized data segment base", ¤t->ld_data_base, current->ld_data_base, "0x%010p"); stat_reg_uint(sdb, "ld_data_size", "program init'ed `.data' and uninit'ed `.bss' size in bytes", ¤t->ld_data_size, current->ld_data_size, NULL); stat_reg_addr(sdb, "ld_stack_base", "program stack segment base (highest address in stack)", ¤t->ld_stack_base, current->ld_stack_base, "0x%010p"); #if 0 /* FIXME: broken... */ stat_reg_addr(sdb, "ld_stack_min", "program stack segment lowest address", ¤t->ld_stack_min, current->ld_stack_min, "0x%010p"); #endif stat_reg_uint(sdb, "ld_stack_size", "program initial stack size", ¤t->ld_stack_size, current->ld_stack_size, NULL); stat_reg_addr(sdb, "ld_prog_entry", "program entry point (initial PC)", ¤t->ld_prog_entry, current->ld_prog_entry, "0x%010p"); stat_reg_addr(sdb, "ld_environ_base", "program environment base address address", ¤t->ld_environ_base, current->ld_environ_base, "0x%010p"); stat_reg_int(sdb, "ld_target_big_endian", "target executable endian-ness, non-zero if big endian", ¤t->ld_target_big_endian, current->ld_target_big_endian, NULL); }