diff options
125 files changed, 9815 insertions, 1059 deletions
diff --git a/SConstruct b/SConstruct index 49f6e2eb2..50089700a 100644 --- a/SConstruct +++ b/SConstruct @@ -201,23 +201,6 @@ if sys.platform == 'cygwin': env.Append(CCFLAGS=Split("-Wno-uninitialized")) env.Append(CPPPATH=[Dir('ext/dnet')]) -# Find Python include and library directories for embedding the -# interpreter. For consistency, we will use the same Python -# installation used to run scons (and thus this script). If you want -# to link in an alternate version, see above for instructions on how -# to invoke scons with a different copy of the Python interpreter. - -# Get brief Python version name (e.g., "python2.4") for locating -# include & library files -py_version_name = 'python' + sys.version[:3] - -# include path, e.g. /usr/local/include/python2.4 -env.Append(CPPPATH = os.path.join(sys.exec_prefix, 'include', py_version_name)) -env.Append(LIBS = py_version_name) -# add library path too if it's not in the default place -if sys.exec_prefix != '/usr': - env.Append(LIBPATH = os.path.join(sys.exec_prefix, 'lib')) - # Check for SWIG if not env.has_key('SWIG'): print 'Error: SWIG utility not found.' @@ -255,6 +238,38 @@ conf = Configure(env, conf_dir = os.path.join(build_root, '.scons_config'), log_file = os.path.join(build_root, 'scons_config.log')) +# Find Python include and library directories for embedding the +# interpreter. For consistency, we will use the same Python +# installation used to run scons (and thus this script). If you want +# to link in an alternate version, see above for instructions on how +# to invoke scons with a different copy of the Python interpreter. + +# Get brief Python version name (e.g., "python2.4") for locating +# include & library files +py_version_name = 'python' + sys.version[:3] + +# include path, e.g. /usr/local/include/python2.4 +py_header_path = os.path.join(sys.exec_prefix, 'include', py_version_name) +env.Append(CPPPATH = py_header_path) +# verify that it works +if not conf.CheckHeader('Python.h', '<>'): + print "Error: can't find Python.h header in", py_header_path + Exit(1) + +# add library path too if it's not in the default place +py_lib_path = None +if sys.exec_prefix != '/usr': + py_lib_path = os.path.join(sys.exec_prefix, 'lib') +elif sys.platform == 'cygwin': + # cygwin puts the .dll in /bin for some reason + py_lib_path = '/bin' +if py_lib_path: + env.Append(LIBPATH = py_lib_path) + print 'Adding', py_lib_path, 'to LIBPATH for', py_version_name +if not conf.CheckLib(py_version_name): + print "Error: can't find Python library", py_version_name + Exit(1) + # Check for zlib. If the check passes, libz will be automatically # added to the LIBS environment variable. if not conf.CheckLibWithHeader('z', 'zlib.h', 'C++'): diff --git a/configs/boot/ammp.rcS b/configs/boot/ammp.rcS new file mode 100644 index 000000000..485244c3c --- /dev/null +++ b/configs/boot/ammp.rcS @@ -0,0 +1,12 @@ +#!/bin/sh + +cd /benchmarks/spec/ammp00/ + +/sbin/m5 checkpoint 0 0 +/sbin/m5 checkpoint 100000000 200000000 + +/sbin/m5 loadsymbol + +/sbin/m5 resetstats +./ammp < input/mdred.in +/sbin/m5 exit diff --git a/configs/boot/ammp.symbol b/configs/boot/ammp.symbol new file mode 100644 index 000000000..93ef40555 --- /dev/null +++ b/configs/boot/ammp.symbol @@ -0,0 +1,257 @@ +000000012001da40 T AMMPmonitor +000000012001dfc0 T AMMPmonitor_mute +0000000120034338 D _DYNAMIC +00000001200346c8 D _GLOBAL_OFFSET_TABLE_ +0000000120034d60 G _IO_stdin_used +0000000120034500 T _PROCEDURE_LINKAGE_TABLE_ +00000001200344e0 d __CTOR_END__ +00000001200344d8 d __CTOR_LIST__ +00000001200344f0 d __DTOR_END__ +00000001200344e8 d __DTOR_LIST__ +0000000120034334 r __FRAME_END__ +00000001200344f8 d __JCR_END__ +00000001200344f8 d __JCR_LIST__ +0000000120034da0 A __bss_start +00000001200328c8 D __data_start +0000000120020c40 t __do_global_ctors_aux +0000000120001090 t __do_global_dtors_aux +0000000120034d68 G __dso_handle +00000001200328c8 A __fini_array_end +00000001200328c8 A __fini_array_start +00000001200328c8 A __init_array_end +00000001200328c8 A __init_array_start +0000000120020ba0 T __libc_csu_fini +0000000120020af0 T __libc_csu_init +0000000120001050 W __start +0000000120034da0 A _edata +0000000120035418 A _end +0000000120020ca0 T _fini +0000000120000fe8 T _init +0000000120001050 T _start +000000012000d220 T a_angle +000000012000b3d0 T a_bond +000000012000e1b0 T a_c_angle +0000000120009cd0 T a_d_zero +0000000120009c90 T a_f_zero +0000000120009f70 T a_ftodx +000000012000a000 T a_ftogx +000000012000a090 T a_ftovx +0000000120009d20 T a_g_zero +0000000120010950 T a_hybrid +000000012000a7c0 T a_inactive_f_zero +0000000120009e50 T a_inc_d +0000000120009dc0 T a_inc_f +0000000120009ee0 T a_inc_v +000000012000a370 T a_l2_d +000000012000a220 T a_l2_f +000000012000a290 T a_l2_g +000000012000a300 T a_l2_v +0000000120008bf0 T a_m_serial +000000012000a1a0 T a_max_d +000000012000a120 T a_max_f +000000012000d570 T a_mmangle +000000012000b620 T a_mmbond +0000000120009c30 T a_next +0000000120005350 T a_noel +0000000120004700 T a_nonbon +0000000120009bc0 T a_number +00000001200096b0 T a_pr_beta +000000012000a660 T a_readvelocity +0000000120020750 T a_restrain +000000012001eda0 T a_tether +000000012001a2e0 T a_torsion +0000000120009d70 T a_v_zero +0000000120003c90 T aaerror +0000000120009a60 T activate +000000012001fef0 T alltether +0000000120004370 T analyze +000000012000c0d0 T angle +0000000120034df8 S angle_first +0000000120034e00 S angle_last +0000000120034dd0 s ap.2 +0000000120034de0 s ap.4 +0000000120008970 T atom +0000000120034dc8 s atomNUMBER +0000000120034dcc s atomUPDATE +000000012000a8b0 T bond +0000000120034de8 S bond_first +0000000120034df0 S bond_last +000000012000bf20 T bond_length +000000012001f240 T bstrot +0000000120034ea0 b buff.0 +000000012001ad40 T cngdel +0000000120034da0 s completed.1 +00000001200200c0 T cpyvec +00000001200328c8 W data_start +0000000120034d98 g dielecold.0 +000000012000efe0 T dump_angles +0000000120008d00 T dump_atoms +000000012000be40 T dump_bonds +000000012000a3e0 T dump_excludes +000000012000a6c0 T dump_force +0000000120011a50 T dump_hybrids +0000000120005c20 T dump_noels +0000000120008f40 T dump_pdb +0000000120020a10 T dump_restrains +000000012001ffe0 T dump_tethers +0000000120017b30 T dump_tgroup +000000012001a170 T dump_torsions +000000012001b7a0 T dump_variable +000000012000a590 T dump_velocity +0000000120034d7c g echo.0 +0000000120001760 T eval +000000012000c580 T f_angle +000000012000ac60 T f_bond +0000000120001230 T f_box +000000012000dc50 T f_c_angle +000000012000ea10 T f_ho_angle +000000012000bab0 T f_ho_bond +0000000120011020 T f_ho_hybrid +0000000120005840 T f_ho_noel +000000012001fca0 T f_ho_tether +00000001200102b0 T f_hybrid +000000012000cd10 T f_mmangle +000000012000b0e0 T f_mmbond +0000000120005060 T f_noel +00000001200155d0 T f_nonbon +0000000120020500 T f_restrain +000000012001ebd0 T f_tether +0000000120019850 T f_torsion +000000012000fbd0 T f_trace +0000000120034db8 S first +0000000120035058 B forces +0000000120001130 t frame_dummy +0000000120014b20 T fv_update_nonbon +0000000120034e58 s fx.0 +0000000120034e60 s fy.1 +0000000120034e68 s fz.2 +000000012000ef40 T get_angle +000000012000bda0 T get_bond +000000012000c050 T get_bond_pointer +000000012001b6e0 T get_f_variable +00000001200119b0 T get_hybrid +000000012001b740 T get_i_variable +0000000120005b80 T get_noel +0000000120020970 T get_restrain +000000012001a9f0 T get_torsion +00000001200184a0 T get_torsion_value +000000012001ca50 T getatomdata +000000012000f130 T gsdg +000000012000e5a0 T gsdg_angle +000000012000bfc0 T gsdg_bond +000000012000f810 T gsdg_dgeom +0000000120011790 T gsdg_hybrid +000000012000f6c0 T gsdg_line_search +0000000120005d30 T gsdg_noel +000000012001a850 T gsdg_torsion +0000000120034d84 g highest.0 +0000000120007490 T hpac +000000012000fe30 T hybrid +0000000120034e08 S hybrid_first +0000000120034e10 S hybrid_last +0000000120034e70 S in_mom_list +0000000120009920 T inactivate +00000001200097a0 T inactivate_non_zero +0000000120034d80 g inloop.1 +0000000120034e74 s ip.1 +0000000120034e78 s jp.2 +0000000120034e7c s kp.3 +0000000120034dc0 S last +0000000120034dd8 s lastmatched.3 +000000012001b0d0 T linmin +0000000120003f80 T loadloop +0000000120034e28 s local.3 +0000000120034d88 g lowest.1 +0000000120034e20 s lsize.2 +0000000120001180 T main +0000000120017c10 T match_tgroup +000000012001b450 T match_variable +000000012001b860 T math +000000012001cd40 T math_findlabel +000000012001ccb0 T math_match_atom +0000000120020100 T matmul +0000000120012b90 T mm_fv_update_nonbon +000000012001cef0 T mom +000000012001d3f0 T mom_add +000000012001d900 T mom_jab +00000001200350f8 B mom_list +000000012001d890 T mom_param +000000012001d600 T mom_solve +0000000120004c70 T noel +0000000120034da8 S noel_first +0000000120034db0 S noel_last +0000000120034d78 G nused +0000000120034e18 s oldatomnumber.0 +0000000120034d90 g oldcutoff.4 +0000000120034d70 g p.0 +0000000120006430 T pac +0000000120006dd0 T pacpac +00000001200350a8 B potentials +0000000120007ac0 T ppac +0000000120008180 T ptpac +000000012001e840 T rand3 +000000012001e480 T randf +000000012001e760 T randg +0000000120001550 T read_eval_do +00000001200201c0 T restrain +0000000120034e90 S restrain_first +0000000120034e98 S restrain_last +000000012001b4e0 T set_f_variable +000000012001b5e0 T set_i_variable +0000000120018730 T set_torsion +000000012001e2a0 T significance +0000000120034e1c s since.1 +000000012001aa90 T steep +0000000120018f50 T tailor_exclude +0000000120018d30 T tailor_include +0000000120019110 T tailor_qab +000000012001e940 T tether +0000000120034e80 S tether_first +0000000120034e88 S tether_last +00000001200171f0 T tg_apply +0000000120017490 T tg_d_apply +0000000120016fd0 T tg_do_search +0000000120034e30 S tg_first +0000000120017a20 T tg_gen_con +0000000120016b90 T tg_init +0000000120017700 T tg_nonbon +0000000120016220 T tgroup +0000000120004220 T tisint +0000000120003cd0 T tisvariable +00000001200189e0 T tmap +0000000120017ec0 T tmin +0000000120019190 T torsion +0000000120034e38 S torsion_first +0000000120034e40 S torsion_last +0000000120006840 T tpac +0000000120016800 T tsearch +0000000120017c80 T tset +0000000120018200 T tset_bond_build +0000000120012100 T u_f_nonbon +0000000120011b60 T u_v_nonbon +0000000120012770 T uselist +000000012000c310 T v_angle +000000012000aac0 T v_bond +0000000120001540 T v_box +000000012000d930 T v_c_angle +000000012000e750 T v_ho_angle +000000012000b8a0 T v_ho_bond +0000000120010ce0 T v_ho_hybrid +00000001200055e0 T v_ho_noel +000000012001faf0 T v_ho_tether +000000012000fff0 T v_hybrid +0000000120005dc0 T v_maxwell +000000012000ca20 T v_mmangle +000000012000aef0 T v_mmbond +0000000120004e60 T v_noel +0000000120015a80 T v_nonbon +0000000120005fd0 T v_rescale +0000000120020360 T v_restrain +000000012001eab0 T v_tether +00000001200193e0 T v_torsion +000000012000f990 T v_trace +000000012001c6f0 T validatom +0000000120034e48 S variableFIRST +0000000120034e50 S variableLAST +00000001200061a0 T verlet +0000000120015ec0 T zone_nonbon diff --git a/configs/boot/art.rcS b/configs/boot/art.rcS new file mode 100644 index 000000000..caca5889e --- /dev/null +++ b/configs/boot/art.rcS @@ -0,0 +1,7 @@ +#!/bin/sh + +#/benchmarks/spec/art00/art -scanfile c756hel.in -trainfile1 a10.img -stride 2 -startx 134 -starty 220 -endx 184 -endy 240 -objects 3 +cd /benchmarks/spec/art00/ +/sbin/m5 resetstats +/benchmarks/spec/art00/art -scanfile c756hel.in -trainfile1 a10.img -stride 5 -startx 134 -starty 220 -endx 184 -endy 240 -objects 1 +/sbin/m5 exit diff --git a/configs/boot/bonnie.rcS b/configs/boot/bonnie.rcS new file mode 100644 index 000000000..65b2fd6c9 --- /dev/null +++ b/configs/boot/bonnie.rcS @@ -0,0 +1,13 @@ +#!/bin/sh +# +# /etc/init.d/rcS +# + +echo -n "Mounting empty disk..." +mkdir /tmp-space +/bin/mount /dev/hdb1 /tmp-space +chmod a+rwx /tmp-space +echo "done." + +/bin/bonnie++ -u 99 -s 700 -r 0 -n 0 -f -F -d /tmp-space +m5 exit diff --git a/configs/boot/bonnie.symbol b/configs/boot/bonnie.symbol new file mode 100644 index 000000000..041753eb2 --- /dev/null +++ b/configs/boot/bonnie.symbol @@ -0,0 +1,309 @@ +0000000120025cb0 V DW.ref._ZTISt9bad_alloc +0000000120025c98 V DW.ref.__gxx_personality_v0 +0000000120025018 D _DYNAMIC +00000001200255a0 D _GLOBAL_OFFSET_TABLE_ +0000000120025c80 G _IO_stdin_used +00000001200251e0 T _PROCEDURE_LINKAGE_TABLE_ +000000012000e8a0 T _Unwind_Backtrace +000000012000e860 T _Unwind_DeleteException +000000012000c290 T _Unwind_FindEnclosingFunction +0000000120010df0 T _Unwind_Find_FDE +0000000120010850 t _Unwind_Find_registered_FDE +000000012000e470 T _Unwind_ForcedUnwind +000000012000e340 t _Unwind_ForcedUnwind_Phase2 +000000012000c260 T _Unwind_GetCFA +000000012000c2d0 T _Unwind_GetDataRelBase +000000012000e9d0 T _Unwind_GetGR +000000012000e9f0 T _Unwind_GetIP +000000012000c270 T _Unwind_GetLanguageSpecificData +000000012000c280 T _Unwind_GetRegionStart +000000012000c2e0 T _Unwind_GetTextRelBase +0000000120010ac0 t _Unwind_IteratePhdrCallback +000000012000e160 T _Unwind_RaiseException +000000012000e070 t _Unwind_RaiseException_Phase2 +000000012000e5c0 T _Unwind_Resume +000000012000e710 T _Unwind_Resume_or_Rethrow +000000012000e9e0 T _Unwind_SetGR +000000012000ea00 T _Unwind_SetIP +0000000120003cb0 T _Z10TestDirOpsiiiiR12CGlobalItems +0000000120003220 T _Z11TestFileOpsiR12CGlobalItems +0000000120009250 T _Z11bon_setugidPKcS0_b +00000001200096b4 t _Z12read_sleb128PKhPl +0000000120009678 t _Z12read_uleb128PKhPm +0000000120009a04 t _Z15get_ttype_entryP16lsda_header_infom +0000000120009a84 t _Z16get_adjusted_ptrPKSt9type_infoS1_PPv +000000012000ab40 t _Z16get_globals_dtorPv +000000012000ab9c t _Z16get_globals_initv +00000001200098a8 t _Z17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info +0000000120009b30 t _Z20check_exception_specP16lsda_header_infoPKSt9type_infoPvl +0000000120009be0 t _Z20empty_exception_specP16lsda_header_infol +00000001200095b4 t _Z21base_of_encoded_valuehP15_Unwind_Context +000000012000abe0 t _Z21get_globals_init_oncev +0000000120009548 t _Z21size_of_encoded_valueh +000000012000a3ec t _Z23__gxx_exception_cleanup19_Unwind_Reason_CodeP17_Unwind_Exception +000000012000970c t _Z28read_encoded_value_with_basehmPKhPm +0000000120004200 T _Z5usagev +0000000120004510 T _Z6seekerP4ForkPvi +0000000120004240 T _Z8io_errorPKcb +000000012000a310 T _ZN10__cxxabiv111__terminateEPFvvE +000000012000a374 T _ZN10__cxxabiv112__unexpectedEPFvvE +000000012000b08c T _ZN10__cxxabiv117__class_type_infoD0Ev +000000012000b058 T _ZN10__cxxabiv117__class_type_infoD1Ev +000000012000b024 T _ZN10__cxxabiv117__class_type_infoD2Ev +0000000120025ca0 G _ZN10__cxxabiv119__terminate_handlerE +000000012000b148 T _ZN10__cxxabiv120__si_class_type_infoD0Ev +000000012000b114 T _ZN10__cxxabiv120__si_class_type_infoD1Ev +000000012000b0e0 T _ZN10__cxxabiv120__si_class_type_infoD2Ev +0000000120025ca8 G _ZN10__cxxabiv120__unexpected_handlerE +000000012000b204 T _ZN10__cxxabiv121__vmi_class_type_infoD0Ev +000000012000b1d0 T _ZN10__cxxabiv121__vmi_class_type_infoD1Ev +000000012000b19c T _ZN10__cxxabiv121__vmi_class_type_infoD2Ev +00000001200024b0 T _ZN12CGlobalItems18decrement_and_waitEi +0000000120002380 T _ZN12CGlobalItemsC1EPb +0000000120002250 T _ZN12CGlobalItemsC2EPb +0000000120008de0 T _ZN4Fork2goEPFvPS_PviES1_i +0000000120009080 T _ZN4Fork4ReadEPvii +0000000120009010 T _ZN4Fork4waitEv +0000000120009160 T _ZN4Fork5WriteEPvii +0000000120008d60 T _ZN4Fork7startitEP11THREAD_DATA +0000000120008d40 T _ZN4ForkC1Ev +0000000120008d20 T _ZN4ForkC2Ev +0000000120004cd0 T _ZN7CFileOp10read_blockEPv +0000000120004f90 T _ZN7CFileOp11write_blockEPv +0000000120004e70 T _ZN7CFileOp15read_block_getcEPc +0000000120005080 T _ZN7CFileOp16write_block_putcEv +0000000120005180 T _ZN7CFileOp4openEPKcbb +0000000120004a40 T _ZN7CFileOp4seekEii +0000000120005770 T _ZN7CFileOp5closeEv +0000000120005910 T _ZN7CFileOp6doseekElb +0000000120005630 T _ZN7CFileOp6m_openEPKcib +0000000120005430 T _ZN7CFileOp6reopenEbb +0000000120004760 T _ZN7CFileOp9seek_testEbR9Semaphore +0000000120005330 T _ZN7CFileOpC1ER8BonTimeriib +0000000120005230 T _ZN7CFileOpC2ER8BonTimeriib +0000000120004400 T _ZN7CFileOpD1Ev +00000001200042f0 T _ZN7CFileOpD2Ev +0000000120007b40 T _ZN8BonTimer10InitializeEv +0000000120007820 T _ZN8BonTimer10cpu_so_farEv +0000000120007c80 T _ZN8BonTimer10print_statE7tests_t +0000000120007f80 T _ZN8BonTimer11PrintHeaderEP8_IO_FILE +00000001200078f0 T _ZN8BonTimer11get_cpu_useEv +0000000120007970 T _ZN8BonTimer11get_delta_tE7tests_t +00000001200077e0 T _ZN8BonTimer11time_so_farEv +0000000120007860 T _ZN8BonTimer12get_cur_timeEv +0000000120007b70 T _ZN8BonTimer14print_cpu_statE7tests_t +0000000120007e40 T _ZN8BonTimer15print_file_statE7tests_t +0000000120007a10 T _ZN8BonTimer16add_delta_reportER8report_s7tests_t +00000001200079c0 T _ZN8BonTimer16get_delta_reportER8report_s +0000000120008030 T _ZN8BonTimer8DoReportEPKciiiiiiP8_IO_FILE +0000000120007790 T _ZN8BonTimer9timestampEv +0000000120007b00 T _ZN8BonTimerC1Ev +0000000120007ac0 T _ZN8BonTimerC2Ev +00000001200061a0 T _ZN9COpenTest10make_namesEb +0000000120005bf0 T _ZN9COpenTest11random_sortEv +0000000120007400 T _ZN9COpenTest11stat_randomER8BonTimer +0000000120006520 T _ZN9COpenTest13create_a_fileEPKcPcii +0000000120006710 T _ZN9COpenTest13create_a_linkEPKcS1_i +0000000120006c50 T _ZN9COpenTest13delete_randomER8BonTimer +00000001200074c0 T _ZN9COpenTest15stat_sequentialER8BonTimer +0000000120006f10 T _ZN9COpenTest17delete_sequentialER8BonTimer +0000000120006830 T _ZN9COpenTest6createEPKcR8BonTimeriiiib +0000000120007280 T _ZN9COpenTest9stat_fileEPKc +0000000120005b50 T _ZN9COpenTestC1EibPb +0000000120005ab0 T _ZN9COpenTestC2EibPb +0000000120005f40 T _ZN9COpenTestD1Ev +0000000120005ce0 T _ZN9COpenTestD2Ev +0000000120008aa0 T _ZN9Semaphore18decrement_and_waitEi +0000000120008920 T _ZN9Semaphore6createEi +0000000120008850 T _ZN9Semaphore9clear_semEv +0000000120008be0 T _ZN9Semaphore9get_mutexEv +0000000120008a10 T _ZN9Semaphore9get_semidEv +0000000120008c80 T _ZN9Semaphore9put_mutexEv +00000001200087d0 T _ZN9SemaphoreC1Eiii +0000000120008750 T _ZN9SemaphoreC2Eiii +000000012000b258 T _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj +000000012000ba74 T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE +000000012000b2b8 T _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv +000000012000b4c0 T _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE +000000012000b330 T _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_ +000000012000baa4 T _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE +000000012000b510 T _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE +000000012000b340 T _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ +000000012000bb38 T _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE +000000012000b5c4 T _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE +000000012000b394 T _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ +000000012000ab30 T _ZNKSt9exception4whatEv +000000012000b00c T _ZNKSt9type_info10__do_catchEPKS_PPvj +000000012000b01c T _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv +000000012000affc T _ZNKSt9type_info14__is_pointer_pEv +000000012000b004 T _ZNKSt9type_info15__is_function_pEv +000000012000afa8 T _ZNSt10bad_typeidD0Ev +000000012000af74 T _ZNSt10bad_typeidD1Ev +000000012000af40 T _ZNSt10bad_typeidD2Ev +000000012000aadc T _ZNSt13bad_exceptionD0Ev +000000012000aaa8 T _ZNSt13bad_exceptionD1Ev +000000012000aa74 T _ZNSt13bad_exceptionD2Ev +000000012000aeec T _ZNSt8bad_castD0Ev +000000012000aeb8 T _ZNSt8bad_castD1Ev +000000012000ae84 T _ZNSt8bad_castD2Ev +000000012000add4 T _ZNSt9bad_allocD0Ev +000000012000ada0 T _ZNSt9bad_allocD1Ev +000000012000ad6c T _ZNSt9bad_allocD2Ev +000000012000aa40 T _ZNSt9exceptionD0Ev +000000012000aa2c T _ZNSt9exceptionD1Ev +000000012000aa18 T _ZNSt9exceptionD2Ev +000000012000ae50 T _ZNSt9type_infoD0Ev +000000012000ae3c T _ZNSt9type_infoD1Ev +000000012000ae28 T _ZNSt9type_infoD2Ev +000000012000a39c T _ZSt10unexpectedv +000000012000a3bc T _ZSt13set_terminatePFvvE +000000012000a3d4 T _ZSt14set_unexpectedPFvvE +000000012000ad54 T _ZSt15set_new_handlerPFvvE +000000012000a9e4 T _ZSt18uncaught_exceptionv +0000000120025cd0 G _ZSt7nothrow +000000012000a354 T _ZSt9terminatev +00000001200127d8 V _ZTIN10__cxxabiv117__class_type_infoE +00000001200127f0 V _ZTIN10__cxxabiv120__si_class_type_infoE +0000000120012808 V _ZTIN10__cxxabiv121__vmi_class_type_infoE +00000001200127c0 V _ZTISt10bad_typeid +0000000120012578 V _ZTISt13bad_exception +00000001200127a8 V _ZTISt8bad_cast +00000001200125d8 V _ZTISt9bad_alloc +0000000120012568 V _ZTISt9exception +0000000120012798 V _ZTISt9type_info +000000012001286b V _ZTSN10__cxxabiv117__class_type_infoE +0000000120012846 V _ZTSN10__cxxabiv120__si_class_type_infoE +0000000120012820 V _ZTSN10__cxxabiv121__vmi_class_type_infoE +000000012001288d V _ZTSSt10bad_typeid +0000000120012590 V _ZTSSt13bad_exception +000000012001289c V _ZTSSt8bad_cast +00000001200125f0 V _ZTSSt9bad_alloc +00000001200125a2 V _ZTSSt9exception +00000001200128a8 V _ZTSSt9type_info +00000001200126b0 V _ZTVN10__cxxabiv117__class_type_infoE +0000000120012658 V _ZTVN10__cxxabiv120__si_class_type_infoE +0000000120012600 V _ZTVN10__cxxabiv121__vmi_class_type_infoE +0000000120012708 V _ZTVSt10bad_typeid +0000000120012518 V _ZTVSt13bad_exception +0000000120012730 V _ZTVSt8bad_cast +00000001200125b0 V _ZTVSt9bad_alloc +0000000120012540 V _ZTVSt9exception +0000000120012758 V _ZTVSt9type_info +0000000120025cb8 g _ZZ18__gthread_active_pvE20__gthread_active_ptr +0000000120025cc8 g _ZZ18__gthread_active_pvE20__gthread_active_ptr +0000000120025cc4 g _ZZ21get_globals_init_oncevE4once +0000000120009518 T _ZdlPv +000000012000a648 T _Znam +000000012000a580 T _Znwm +00000001200251c0 d __CTOR_END__ +00000001200251b8 d __CTOR_LIST__ +00000001200251d0 d __DTOR_END__ +00000001200251c8 d __DTOR_LIST__ +0000000120024f30 r __FRAME_END__ +00000001200251d8 d __JCR_END__ +00000001200251d8 d __JCR_LIST__ +0000000120025ce8 A __bss_start +000000012000a694 T __cxa_allocate_exception +000000012000a884 T __cxa_begin_catch +000000012000a19c T __cxa_call_unexpected +000000012000a930 T __cxa_end_catch +000000012000a7b4 T __cxa_free_exception +000000012000ac84 T __cxa_get_globals +000000012000ac3c T __cxa_get_globals_fast +000000012000a4f8 T __cxa_rethrow +000000012000a45c T __cxa_throw +0000000120024000 D __data_start +000000012000fa50 T __deregister_frame +000000012000fa20 T __deregister_frame_info +000000012000f8c0 T __deregister_frame_info_bases +0000000120011470 t __do_global_ctors_aux +0000000120002160 t __do_global_dtors_aux +0000000120025c88 G __dso_handle +000000012000bd74 T __dynamic_cast +0000000120024000 A __fini_array_end +0000000120024000 A __fini_array_start +000000012000d250 T __frame_state_for +0000000120025ce0 g __gthread_active_ptr.0 +0000000120025cd8 g __gthread_active_ptr.1 +0000000120009c28 T __gxx_personality_v0 +0000000120024000 A __init_array_end +0000000120024000 A __init_array_start +00000001200113e0 T __libc_csu_fini +0000000120011350 T __libc_csu_init +0000000120025d00 S __new_handler +000000012000f6f0 T __register_frame +000000012000f6b0 T __register_frame_info +000000012000f5f0 T __register_frame_info_bases +000000012000f820 T __register_frame_info_table +000000012000f760 T __register_frame_info_table_bases +000000012000f860 T __register_frame_table +0000000120002120 W __start +0000000120025ce8 A _edata +0000000120035db0 A _end +00000001200114d0 T _fini +00000001200020b0 T _init +0000000120002120 T _start +0000000120010250 t add_fdes +0000000120025cea s already_printed_error +00000001200094b0 T arm +0000000120010a30 t base_from_cb_data +000000012000fab0 t base_from_object +000000012000bf50 t base_of_encoded_value +00000001200094f8 T checkpoint +00000001200100e0 t classify_object_over_fdes +0000000120025ce8 s completed.1 +00000001200024f0 T ctrl_c_handler +0000000120024000 W data_start +0000000120009508 T debugbreak +00000001200094e8 T dump_stats +00000001200094f0 T dumpreset_stats +0000000120035d40 b dwarf_reg_size_table +0000000120025d30 b emergency_buffer +0000000120024008 d emergency_mutex +0000000120025cf0 s emergency_used +000000012000caa0 t execute_cfa_program +000000012000c520 t execute_stack_op +0000000120025ce9 s exitNow +000000012000c2f0 t extract_cie_info +000000012000fd20 t fde_mixed_encoding_compare +000000012000fc60 t fde_single_encoding_compare +00000001200111d0 t fde_split +000000012000fc30 t fde_unencoded_compare +0000000120002200 t frame_dummy +000000012000fe00 t frame_heapsort +000000012000fb40 t get_cie_encoding +0000000120025cf8 s globals_key +0000000120035d30 b globals_static +000000012000ea10 t init_dwarf_reg_size_table +0000000120010e90 t init_object +00000001200094d8 T initparam +00000001200094c0 T ivlb +00000001200094c8 T ivle +00000001200103d0 t linear_search_fdes +00000001200094d0 T m5exit +0000000120002590 T main +0000000120025d10 s marker.1 +0000000120035d88 b object_mutex +0000000120025d08 s once_regsizes.0 +0000000120025c90 g p.0 +00000001200094b8 T quiesce +000000012000c0d0 t read_encoded_value_with_base +000000012000f460 t read_encoded_value_with_base +000000012000c060 t read_sleb128 +000000012000f3f0 t read_sleb128 +000000012000c020 t read_uleb128 +000000012000f3b0 t read_uleb128 +0000000120009500 T readfile +00000001200094e0 T reset_stats +0000000120010560 t search_object +0000000120025d20 s seen_objects +000000012000bed0 t size_of_encoded_value +000000012000f330 t size_of_encoded_value +0000000120009510 T switchcpu +0000000120025d18 s unseen_objects +0000000120025cc0 g use_thread_key +000000012000cf90 t uw_frame_state_for +000000012000d590 t uw_init_context_1 +000000012000d650 t uw_install_context_1 +000000012000d540 t uw_update_context +000000012000d390 t uw_update_context_1 diff --git a/configs/boot/bzip.rcS b/configs/boot/bzip.rcS new file mode 100644 index 000000000..369659ca0 --- /dev/null +++ b/configs/boot/bzip.rcS @@ -0,0 +1,6 @@ +#!/bin/sh + +cd /benchmarks/spec/bzip200/ +/sbin/m5 resetstats +/benchmarks/spec/bzip200/bzip2 lgred.graphic 1 +/sbin/m5 exit diff --git a/configs/boot/cc1.symbol b/configs/boot/cc1.symbol new file mode 100644 index 000000000..16c16912b --- /dev/null +++ b/configs/boot/cc1.symbol @@ -0,0 +1,3454 @@ +00000001201fec60 G DFbignan +00000001201fec68 G DFlittlenan +0000000120006f30 T GNU_xref_begin +0000000120006f70 T GNU_xref_end +00000001201e9b60 d Reg_names +00000001201fec70 G SFbignan +00000001201fec74 G SFlittlenan +00000001201e9ff8 D TFbignan +00000001201ea008 D TFlittlenan +00000001201e82c8 D W_options +00000001201ea018 D XFbignan +00000001201ea024 D XFlittlenan +00000001201fad48 D _DYNAMIC +00000001201fb210 D _GLOBAL_OFFSET_TABLE_ +00000001201febe8 G _IO_stdin_used +00000001201faf10 T _PROCEDURE_LINKAGE_TABLE_ +00000001201faef0 d __CTOR_END__ +00000001201faee8 d __CTOR_LIST__ +00000001201faf00 d __DTOR_END__ +00000001201faef8 d __DTOR_LIST__ +00000001201fad44 r __FRAME_END__ +00000001201faf08 d __JCR_END__ +00000001201faf08 d __JCR_LIST__ +00000001201fecdc A __bss_start +00000001201e6a58 D __data_start +000000012019eb20 t __do_global_ctors_aux +00000001200019e0 t __do_global_dtors_aux +00000001201febf0 G __dso_handle +00000001201e6a58 A __fini_array_end +00000001201e6a58 A __fini_array_start +00000001201e6a58 A __init_array_end +00000001201e6a58 A __init_array_start +000000012019ea80 T __libc_csu_fini +000000012019e9d0 T __libc_csu_init +00000001200019a0 W __start +00000001201fecdc A _edata +00000001202157c8 A _end +000000012019eb80 T _fini +0000000120001938 T _init +00000001200019a0 T _start +00000001202003e8 S abs_optab +00000001200d89c0 t abstract_origin_attribute +000000012016a550 t actual_hazard +000000012016af00 t actual_hazard_this_instance +000000012016fb20 t add_bb_string +00000001201831a0 T add_clobbers +00000001201ff138 s add_cost +0000000120200858 S add_cost +0000000120164b10 t add_dependence +0000000120055d40 T add_double +00000001200b4c60 T add_insn +00000001200b2c40 T add_insn_after +00000001200b2d90 T add_insn_before +000000012002f860 t add_ixpansion +00000001200fed90 t add_label_notes +0000000120197770 T add_operand +0000000120200408 S add_optab +000000012015d210 t add_to_delay_list +00000001201ff5f8 s added_links_insn +00000001201ff4c0 s addr_combined_regs +00000001201ff4b8 s addr_placeholder +00000001201731d0 T address_operand +00000001201720f0 T adj_offsettable_operand +00000001200dfe00 t adjust_copied_decl_tree +000000012016aa30 t adjust_priority +0000000120095b20 T adjust_stack +00000001200291a0 t affix_data_type +00000001201ff588 s after_insn_hard_regs +0000000120062e10 T aggregate_value_p +00000001201fed48 s align.4 +000000012005f550 t all_blocks +000000012006a350 T all_cases_count +00000001201eb418 d all_from_align +00000001201ff3e8 s all_minus_one +0000000120200110 S all_types_permanent +0000000120134ef0 t alloc_qty_for_scratch +0000000120094f90 T allocate_dynamic_stack_space +000000012010fc50 T allocate_for_life_analysis +0000000120154180 t allocate_reload_reg +00000001200422b0 T allocation_temporary_p +00000001201ff808 s allocno_calls_crossed +000000012013a160 t allocno_compare +00000001201ff818 s allocno_live_length +00000001201ff810 s allocno_n_refs +00000001201ff7a0 s allocno_order +00000001201ff798 s allocno_reg +00000001201ff7c0 s allocno_row_words +00000001201ff7a8 s allocno_size +00000001201ff820 s allocnos_live +00000001201fed6c s already.0 +00000001201ff698 s altclass +000000012014b230 t alter_reg +000000012016e1e0 T alter_subreg +0000000120140e20 t alternative_allows_memconst +0000000120190fb0 t alu_unit_blockage +000000012018cc20 T alu_unit_blockage_range +000000012018c790 T alu_unit_ready_cost +00000001202005d8 S and_optab +00000001200387d0 T announce_function +00000001201ff258 s anonymous_types +0000000120095bd0 T anti_adjust_stack +00000001201645f0 T anti_dependence +000000012006f4f0 T any_pending_cleanups +000000012016f6b0 T app_disable +000000012016f690 T app_enable +00000001201ffb1c s app_on +0000000120203548 b apply_args_mode +0000000120203748 b apply_args_reg_offset +0000000120082a30 T apply_args_register_offset +0000000120084640 t apply_args_size +00000001201ff108 s apply_args_value +000000012016fd70 T apply_change_group +0000000120122f00 t apply_distributive_law +0000000120203648 b apply_result_mode +0000000120084920 t apply_result_size +000000012010d890 t approx_final_value +00000001202007d8 S arg_pointer_rtx +00000001202001e8 S arg_pointer_save_area +00000001201e73ff d argnofun.1 +00000001201e73e8 d argstring.0 +0000000120197640 T arith32_operand +00000001201975c0 T arith5_operand +00000001201976b0 T arith64_operand +0000000120197540 T arith_operand +00000001201eb6b8 d arityvec +0000000120043af0 T array_type_nelts +00000001200ba350 t asctoe +00000001200ba340 t asctoe113 +00000001200ba310 t asctoe24 +00000001200ba320 t asctoe53 +00000001200ba330 t asctoe64 +00000001200ba360 t asctoeg +00000001202004f0 S ashl_optab +0000000120200608 S ashr_optab +00000001201fff10 S asm_file_name +000000012016f110 T asm_fprintf +000000012016c9c0 t asm_insn_count +0000000120171ab0 T asm_noperands +0000000120200058 S asm_out_file +00000001200a80b0 T assemble_alias +00000001200a8fb0 T assemble_align +00000001200a8b20 T assemble_asm +00000001200a8a10 T assemble_constant_align +00000001200a8cb0 T assemble_constructor +00000001200a8bd0 T assemble_destructor +00000001200a8dd0 T assemble_end_function +00000001200a9310 T assemble_external +00000001200a9320 T assemble_external_libcall +00000001200a8d40 T assemble_gc_entry +00000001200a9330 T assemble_global +00000001200a4660 T assemble_integer +00000001200a93b0 T assemble_label +00000001200a3d40 T assemble_name +00000001200a4890 T assemble_real +00000001200a2700 T assemble_start_function +00000001200a3e80 T assemble_static_space +00000001200a9060 T assemble_string +00000001200a40f0 T assemble_trampoline_template +00000001200a2be0 T assemble_variable +00000001200a8f30 T assemble_zeros +0000000120059c00 T assign_outer_stack_local +000000012005d300 T assign_parms +0000000120059a60 T assign_stack_local +0000000120059db0 T assign_stack_temp +00000001201e7368 d asso_values.0 +0000000120162c10 t attach_deaths +0000000120169c10 t attach_deaths_insn +0000000120040b10 T attribute_hash_list +0000000120040bc0 T attribute_list_contained +0000000120040b40 T attribute_list_equal +0000000120200b10 b attrtab +00000001201feec8 s attrtab_idx +0000000120200000 S aux_info_file +00000001201fefe0 s aux_info_file_name +000000012010cd40 T back_branch_in_range_p +00000001201ff8a4 s bad_spill_regs +000000012006c730 t balance_case_nodes +00000001201ff218 s base_label_num +00000001201ff520 s basic_block_drops_in +00000001202008c8 S basic_block_end +00000001202008d8 S basic_block_head +0000000120200878 S basic_block_live_at_start +00000001201ff528 s basic_block_loop_depth +0000000120215098 B basic_block_needs +00000001201045b0 t basic_induction_var +00000001201ffa18 s bb_dead_regs +00000001201fecb8 g bb_file_label_num +00000001201fecbc g bb_func_label_num +00000001201ffad0 s bb_head +00000001201ffa20 s bb_live_regs +00000001201fecb0 g bb_tail +00000001201ff968 s bb_ticks +0000000120081f90 T bc_adjust_stack +000000012019c610 T bc_align +000000012019b890 T bc_align_bytecode +000000012019bd00 T bc_align_const +000000012019bfa0 T bc_align_data +00000001200810f0 T bc_allocate_local +0000000120082af0 T bc_allocate_variable_array +000000012019b760 T bc_begin_function +0000000120063420 T bc_build_calldesc +0000000120081320 T bc_canonicalize_array_ref +000000012006ab50 t bc_check_for_full_enumeration_handling +000000012019c5f0 T bc_data +00000001201ffbc8 s bc_data_seg +000000012019b710 T bc_define_pointer +000000012019c760 T bc_emit +000000012019cb00 T bc_emit_bytecode +000000012019b960 T bc_emit_bytecode_const +000000012019ba90 T bc_emit_bytecode_labeldef +000000012019bb10 T bc_emit_bytecode_labelref +000000012019bc00 T bc_emit_code_labelref +000000012019c240 T bc_emit_common +000000012019bdd0 T bc_emit_const +000000012019bf60 T bc_emit_const_labeldef +000000012019bf80 T bc_emit_const_labelref +000000012019bea0 T bc_emit_const_skip +000000012019c070 T bc_emit_data +000000012019c200 T bc_emit_data_labeldef +000000012019c220 T bc_emit_data_labelref +000000012019c140 T bc_emit_data_skip +000000012019ac10 T bc_emit_instruction +000000012019c9b0 T bc_emit_labeldef +000000012019ca00 T bc_emit_labelref +000000012019c890 T bc_emit_skip +000000012019cc40 T bc_emit_trampoline +000000012019a140 T bc_end_function +0000000120081600 T bc_expand_address +000000012019d430 T bc_expand_binary_operation +0000000120081480 T bc_expand_component_address +0000000120081a90 T bc_expand_constructor +000000012019dd40 T bc_expand_conversion +0000000120068a10 t bc_expand_decl +0000000120068ce0 t bc_expand_decl_init +0000000120068110 t bc_expand_end_bindings +000000012006bc60 t bc_expand_end_case +0000000120065b50 t bc_expand_end_cond +000000012006fc40 t bc_expand_end_loop +000000012007b490 T bc_expand_expr +0000000120064180 t bc_expand_fixup +0000000120063670 T bc_expand_function_end +000000012005fcc0 T bc_expand_function_start +000000012006f690 t bc_expand_goto_internal +000000012019df90 T bc_expand_increment +0000000120069450 t bc_expand_start_case +0000000120065ab0 t bc_expand_start_cond +000000012019de90 T bc_expand_truth_conversion +000000012019d900 T bc_expand_unary_operation +0000000120064240 t bc_fixup_gotos +0000000120081910 T bc_gen_constr_label +000000012019ca60 T bc_gen_rtx +000000012019ba30 T bc_get_bytecode_label +000000012019c420 T bc_globalize_label +000000012019d350 T bc_init_mode_to_code_map +000000012006fe00 T bc_init_mode_to_opcode_maps +0000000120199ef0 T bc_initialize +0000000120082b60 T bc_load_bit_field +00000001200811a0 T bc_load_externaddr +0000000120081200 T bc_load_externaddr_id +0000000120081290 T bc_load_localaddr +0000000120080f90 T bc_load_memory +00000001200812d0 T bc_load_parmaddr +00000001200a9d10 t bc_make_decl_rtl +000000012006f5a0 T bc_new_uid +00000001200a9160 T bc_output_constructor +00000001200a9250 T bc_output_data_constructor +000000012019caf0 T bc_print_rtl +00000001200815a0 T bc_push_offset_and_size +000000012006a050 t bc_pushcase +0000000120081870 T bc_runtime_type_code +0000000120081f50 T bc_store_bit_field +0000000120081e50 T bc_store_field +0000000120081040 T bc_store_memory +000000012019c5d0 T bc_text +00000001201ffbc0 s bc_text_seg +00000001201ff0b0 s bc_uid.1 +000000012019ca50 T bc_write_file +000000012019ce50 T bc_xstrdup +000000012020c108 B bcc_gen_fctn +00000001202004d0 S bcmp_libfunc +0000000120200698 S bcopy_libfunc +00000001201eb43c d best_from_align +000000012002b5a0 T binary_op_error +0000000120043510 T binfo_member +000000012016add0 t birthing_insn_p +00000001200d8380 t bit_offset_attribute +000000012018ed90 T bit_unit_ready_cost +000000012010ce50 T biv_total_increment +0000000120132150 t block_alloc +00000001201ffb18 s block_depth +00000001201ff530 s block_live_static +0000000120198b80 t block_move_loop +0000000120191ea0 t block_move_no_loop +00000001201921e0 t block_move_sequence +00000001202002d0 S block_stack +00000001202002ac S block_start_count +00000001201ff0e8 s block_vector +000000012005f520 t blocks_nreverse +00000001201e9f94 d bmask +00000001201ffda0 S boolean_false_node +00000001201ffcc8 S boolean_true_node +00000001201ffe58 S boolean_type_node +0000000120038bb0 T botch +0000000120096150 t break_out_memory_refs +0000000120205fe4 b buffer.0 +0000000120206048 b buffer.1 +00000001202063cc b buffer.10 +0000000120206430 b buffer.11 +0000000120206494 b buffer.12 +00000001201fedf8 s buffer.2 +00000001202060ac b buffer.2 +0000000120206110 b buffer.3 +0000000120206174 b buffer.4 +00000001202061d8 b buffer.5 +000000012020623c b buffer.6 +00000001202062a0 b buffer.7 +0000000120206304 b buffer.8 +0000000120206368 b buffer.9 +00000001201feee0 s buffer_length.2 +000000012003fff0 T build +0000000120040250 T build1 +000000012001adb0 T build_array_ref +00000001200414f0 T build_array_type +000000012001c1a0 T build_binary_op +0000000120044230 T build_block +000000012001fc20 T build_c_cast +0000000120042a00 T build_complex +00000001200415e0 T build_complex_type +000000012001a930 T build_component_ref +00000001200255b0 T build_compound_expr +000000012001f570 T build_conditional_expr +0000000120044170 T build_decl +00000001200442b0 T build_decl_attribute_variant +00000001200437a0 T build_decl_list +0000000120014920 T build_enumerator +000000012001b260 T build_function_call +0000000120044ed0 T build_function_type +0000000120044dd0 T build_index_2_type +0000000120044c40 T build_index_type +000000012001abc0 T build_indirect_ref +00000001200427b0 T build_int_2_wide +0000000120045090 T build_method_type +0000000120020200 T build_modify_expr +00000001200403e0 T build_nt +0000000120006f10 T build_objc_string +0000000120045170 T build_offset_type +00000001200404a0 T build_parse_node +00000001200412a0 T build_pointer_type +00000001200413a0 T build_range_type +0000000120042800 T build_real +000000012003dc50 T build_real_from_int_cst +0000000120044fd0 T build_reference_type +000000012003e0c0 T build_string +0000000120043750 T build_tree_list +0000000120040590 T build_type_attribute_variant +0000000120040810 T build_type_copy +0000000120040740 T build_type_variant +000000012001e500 T build_unary_op +00000001200105e0 T builtin_function +00000001202006f4 S byte_mode +00000001200d81c0 t byte_size_attribute +0000000120200a28 S bytecode +0000000120200510 S bzero_libfunc +0000000120025510 T c_alignof +0000000120019fd0 T c_alignof_expr +000000012002d690 T c_build_type_variant +000000012000c410 T c_decode_option +0000000120024980 T c_expand_asm_operands +000000012002d190 T c_expand_expr_stmt +0000000120024c10 T c_expand_return +0000000120025bf0 T c_expand_start_case +00000001201ffc18 S c_function_chain +00000001201fedc0 s c_function_varargs +0000000120017a00 T c_mark_varargs +0000000120025430 T c_size_in_bytes +0000000120019e30 T c_sizeof +0000000120025350 T c_sizeof_nowarn +0000000120084500 t c_strlen +000000012010d100 t calculate_giv_inc +0000000120197400 T call_address_operand +0000000120200928 S call_fixed_reg_set +0000000120213ab0 B call_fixed_regs +0000000120200910 S call_used_reg_set +0000000120213a70 B call_used_regs +0000000120200978 S caller_save_needed +0000000120084d50 t calls_function_1 +00000001201ff128 s calls_function_save_exprs +000000012012c200 t can_combine_p +000000012009c7e0 T can_compare_p +00000001200a15b0 T can_extend_p +0000000120200800 S can_reach_end +00000001200e6860 T can_reverse_comparison_p +00000001201700e0 T cancel_changes +00000001201ff8c0 s cannot_omit_stores +00000001200e9090 t canon_hash +00000001200ea190 t canon_reg +00000001201648e0 t canon_rtx +000000012006f570 T case_index_expr_type +00000001202002c8 S case_stack +00000001201ff53c s cc0_live +0000000120200718 S cc0_rtx +00000001202007c8 S cc1_rtx +0000000120093200 T ceil_log2 +0000000120043540 T chain_member +00000001200435a0 T chain_member_purpose +0000000120043570 T chain_member_value +00000001200435f0 T chainon +00000001200b22f0 T change_address +0000000120209a58 b change_locs +0000000120044710 T change_main_variant +0000000120209800 b change_objects +0000000120209990 b change_old_codes +0000000120209be8 b change_olds +00000001201ffc30 S char_array_type_node +00000001201ffcb8 S char_type_node +000000012016fc40 T check_asm_operands +000000012002d290 T check_case_value +0000000120105f70 t check_dbra_loop +00000001201040a0 t check_final_value +000000012006a850 T check_for_full_enumeration_handling +000000012002d7a0 t check_format_info +000000012002cce0 T check_function_format +00000001200234d0 t check_init_type_bitfields +0000000120008020 T check_newline +000000012012ff00 T choose_hard_reg_mode +0000000120093540 t choose_multiplier +000000012014e7e0 t choose_reload_regs +0000000120213514 B class_narrowest_mode +00000001200b3080 T classify_insn +0000000120196810 T classify_integer +0000000120200240 S cleanup_label +00000001202002d8 S cleanups_this_call +0000000120200a40 b clear_binding_level +00000001200a9450 T clear_const_double_mem +000000012006e9f0 T clear_last_expr +0000000120042460 T clear_momentary +0000000120017050 T clear_parm_order +0000000120082a90 T clear_pending_stack_adjust +00000001201559d0 t clear_reg_live +0000000120153020 t clear_reload_reg_in_use +0000000120082650 T clear_storage +0000000120200358 S cmp_optab +000000012020c4a8 B code_to_optab +000000012002e9d0 t collect_iterators +0000000120114400 t combinable_i3pat +00000001201ff590 s combine_attempts +00000001201fef14 S combine_dump +00000001201ffef0 S combine_dump_file +00000001201ff598 s combine_extras +0000000120105650 t combine_givs +0000000120113b30 T combine_instructions +00000001201ff5bc s combine_max_regno +00000001201ff594 s combine_merges +00000001200fe3a0 t combine_movables +0000000120015c30 T combine_parm_decls +0000000120133580 t combine_regs +0000000120146c80 t combine_reloads +00000001200294d0 T combine_strings +00000001201ff59c s combine_successes +000000012005a0d0 T combine_temp_slots +00000001201fffd4 S combine_time +0000000120019070 T common_type +00000001200801f0 t compare +00000001200a5200 t compare_constant_1 +0000000120080310 T compare_from_rtx +0000000120152d50 t compare_spill_regs +00000001200e6bb0 T comparison_dominates_p +0000000120173a00 T comparison_operator +0000000120039530 t compile_file +00000001201feeb8 s compiled_from_record.0 +0000000120011560 T complete_array_type +00000001201fece0 s completed.1 +00000001201ffc08 S complex_double_type_node +00000001201ffe70 S complex_float_type_node +00000001201ffc38 S complex_integer_type_node +00000001201ffce8 S complex_long_double_type_node +00000001200196f0 T comptypes +0000000120200288 S cond_stack +00000001201968b0 T condition_value +00000001200e6db0 T condjump_in_parallel_p +00000001200e6cd0 T condjump_p +00000001201ff7b8 s conflicts +00000001201ff3f0 s consec_ints +0000000120105360 t consec_sets_giv +00000001201012d0 t consec_sets_invariant_p +0000000120200708 S const0_rtx +0000000120200780 S const1_rtx +0000000120200750 S const2_rtx +000000012004aac0 t const_binop +00000001201ff170 s const_double_chain +0000000120173400 T const_double_operand +00000001200a4df0 t const_hash +0000000120203b98 b const_hash_table +00000001201733f0 T const_int_operand +0000000120205b20 b const_int_rtx +00000001202006c8 S const_labelno +000000012018ee30 T const_num_delay_slots +00000001201ffe38 S const_ptr_type_node +00000001201ff188 s const_rtx_hash_table +00000001201ff1a8 s const_rtx_sym_hash_table +00000001200a8260 T const_section +00000001201ffe60 S const_string_type_node +0000000120213530 B const_tiny_rtx +00000001202007b8 S const_true_rtx +00000001200d9fa0 t const_value_attribute +000000012002cd30 T constant_expression_warning +00000001201ff438 s constant_pool_entries_cost +0000000120200798 S constm1_rtx +00000001201723a0 T constrain_operands +0000000120152980 t constraint_accepts_reg_p +00000001201feea0 s constructor_asmspec +00000001201fee58 s constructor_bit_index +00000001201fee68 s constructor_constant +00000001201fee98 s constructor_decl +00000001201fee80 s constructor_depth +00000001201fee60 s constructor_elements +00000001201fee70 s constructor_erroneous +00000001201fee28 s constructor_fields +00000001201fee84 s constructor_implicit +00000001201fee90 s constructor_incremental +00000001201fee30 s constructor_index +00000001201fee40 s constructor_max_index +00000001201fee00 S constructor_no_implicit +00000001201fee78 s constructor_pending_elts +00000001201fee38 s constructor_range_end +00000001201feeb0 s constructor_result +00000001201fee6c s constructor_simple +00000001201ffe98 S constructor_stack +00000001201fee74 s constructor_subconstants_deferred +00000001201feea8 s constructor_top_level +00000001201fee20 s constructor_type +00000001201fee48 s constructor_unfilled_fields +00000001201fee50 s constructor_unfilled_index +0000000120043f90 T contains_placeholder_p +00000001200a3c50 t contains_pointers_p +00000001201ff030 s context_display +00000001201ec720 d conversion_info +000000012019e5b0 t conversion_reasonable_p +000000012020ae90 b conversion_recipe +0000000120026880 T convert +000000012002cf90 T convert_and_check +000000012001b520 t convert_arguments +0000000120020650 t convert_for_assignment +0000000120071230 T convert_modes +0000000120070530 T convert_move +0000000120199c60 T convert_to_complex +0000000120199080 T convert_to_integer +00000001200711f0 T convert_to_mode +0000000120199930 T convert_to_pointer +0000000120199ad0 T convert_to_real +00000001200959e0 T copy_addr_to_reg +0000000120095600 T copy_all_regs +00000001201ff300 s copy_asm_constraints_vector +00000001201ff2f8 s copy_asm_operands_vector +00000001200a5dc0 t copy_constant +000000012012f480 t copy_cost +0000000120200834 S copy_cost +00000001200dae60 t copy_decl_list +00000001200dafd0 t copy_decl_rtls +00000001200daf10 t copy_decl_tree +00000001200db590 t copy_for_inline +0000000120017c10 T copy_lang_decl +00000001200426f0 T copy_list +0000000120109ac0 t copy_loop_body +00000001200aab70 T copy_most_rtx +000000012003d5b0 T copy_node +0000000120143780 T copy_replacements +00000001200aa7c0 T copy_rtx +00000001200dda30 T copy_rtx_and_substitute +00000001200b2430 T copy_rtx_if_shared +0000000120094b10 T copy_to_mode_reg +0000000120094a50 T copy_to_reg +0000000120095a90 T copy_to_suggested_reg +0000000120200440 S cos_optab +00000001201ff0d0 s cost_table +00000001201ff688 s costs +00000001201ffaf8 s count_basic_blocks +0000000120038620 T count_error +0000000120101550 t count_loop_regs_set +0000000120100050 t count_nonfixed_reads +0000000120152a80 t count_occurrences +000000012014a920 t count_possible_groups +00000001200f4b50 t count_reg_usage +00000001201ff8b0 s counted_for_groups +00000001201ff8b8 s counted_for_nongroups +0000000120165850 t create_reg_dead_note +00000001201ff310 s cross_jump_death_matters +00000001201fef0c S cse2_dump +00000001201fff38 S cse2_dump_file +00000001201fff90 S cse2_time +00000001200f4080 t cse_basic_block +00000001201ff3fc s cse_basic_block_end +00000001201ff3f8 s cse_basic_block_start +00000001200fc2e0 t cse_check_loop_start +00000001201ff440 s cse_check_loop_start_value +00000001201fef04 S cse_dump +00000001201ffff8 S cse_dump_file +00000001200f3530 T cse_end_of_basic_block +00000001200ed360 t cse_gen_binary +00000001200f6d90 t cse_insn +00000001201ff40c s cse_jumps_altered +00000001200f3a60 T cse_main +00000001202002e4 S cse_not_expected +00000001200f3290 t cse_process_notes +00000001200fb530 t cse_set_around_loop +00000001201fff44 S cse_time +00000001200a83f0 T ctors_section +00000001201fec54 g cur_insn_uid +00000001201fedd0 s current_binding_level +00000001201fed08 s current_declspecs +00000001201ff290 s current_dienum +00000001201fedc8 s current_extern_inline +00000001201fec90 g current_funcdef_number +0000000120200218 S current_function_arg_offset_rtx +0000000120200230 S current_function_args_info +0000000120200214 S current_function_args_size +0000000120200170 S current_function_calls_alloca +0000000120200188 S current_function_calls_longjmp +00000001202001a8 S current_function_calls_setjmp +0000000120200234 S current_function_contains_functions +00000001201ffd80 S current_function_decl +0000000120200168 S current_function_epilogue_delay_list +0000000120200258 S current_function_has_nonlocal_goto +0000000120200270 S current_function_has_nonlocal_label +00000001202001c8 S current_function_internal_arg_pointer +00000001202001f8 S current_function_name +0000000120200160 S current_function_needs_context +0000000120200248 S current_function_outgoing_args_size +00000001201fed98 s current_function_parm_tags +00000001201fed90 s current_function_parms +00000001202001c0 S current_function_pops_args +000000012020015c S current_function_pretend_args_size +00000001201feda0 s current_function_prototype_file +00000001201feda8 s current_function_prototype_line +0000000120200178 S current_function_return_rtx +00000001201ffcb0 S current_function_returns_null +0000000120200280 S current_function_returns_pcc_struct +0000000120200208 S current_function_returns_pointer +000000012020018c S current_function_returns_struct +00000001201ffdc0 S current_function_returns_value +00000001202001f0 S current_function_stdarg +0000000120200210 S current_function_uses_const_pool +00000001202001d0 S current_function_uses_pic_offset_table +000000012020020c S current_function_varargs +00000001201ff980 s current_live_regs +00000001202000a0 S current_obstack +00000001200d74c0 t data_member_location_attribute +00000001200a8580 T data_section +00000001201e6a58 W data_start +00000001201feec0 s data_type +00000001201fef2c S dbr_sched_dump +0000000120200038 S dbr_sched_dump_file +00000001201ffee0 S dbr_sched_time +00000001201593d0 T dbr_schedule +000000012016f6d0 T dbr_sequence_length +0000000120200730 S dconst0 +00000001202007d0 S dconst1 +0000000120200788 S dconst2 +0000000120200700 S dconstm1 +00000001201ffa30 s dead_notes +00000001200b08c0 T dead_or_set_p +00000001200ae500 T dead_or_set_regno_p +00000001201fef3c S debug_info_level +00000001201ffab8 s debug_insn +00000001201feffc S debug_no_type_hash +0000000120042380 T debug_obstack +00000001200bce10 T debug_real +0000000120145250 T debug_reload +00000001200acd80 T debug_rtx +00000001201ff1b8 S debug_rtx_count +00000001200acec0 T debug_rtx_find +00000001200acdd0 T debug_rtx_list +00000001201fec10 G debug_temp_inits +0000000120047750 T debug_tree +0000000120029800 T decl_attributes +0000000120041b90 T decl_function_context +0000000120039220 t decl_name +0000000120200060 S decl_printable_name +0000000120043810 T decl_tree_cons +00000001200453e0 T decl_type_context +000000012002c750 T declare_function_name +000000012006e810 T declare_nonlocal_label +0000000120016590 T declare_parm_level +00000001200a9b50 T declare_weak +00000001201fed10 s declspec_stack +00000001200a9f90 t decode_addr_const +0000000120171c90 T decode_asm_operands +0000000120058ce0 t decode_field_reference +00000001200a1bf0 T decode_reg_name +00000001200aa310 t decode_rtx_const +000000012013d160 t decompose +000000012019e060 t deduce_conversion +000000012001a1d0 T default_conversion +00000001201ffc48 S default_function_type +00000001200388a0 T default_print_error_function +00000001200a94a0 T defer_addressed_constants +00000001201ff180 s defer_addressed_constants_flag +000000012007e5d0 t defer_cleanups_to +00000001201ff178 s deferred_constants +000000012000e1a0 T define_label +0000000120016730 T delete_block +00000001200e4330 t delete_computation +00000001200f4de0 T delete_dead_from_cse +000000012014b150 t delete_dead_insn +00000001200e6f00 T delete_for_peephole +000000012015d2f0 t delete_from_delay_slot +00000001200e4d90 t delete_from_jump_chain +00000001200e4560 T delete_insn +00000001200b4ca0 T delete_insns_since +00000001200e42c0 T delete_jump +00000001200e5260 t delete_labelref_insn +0000000120152360 t delete_output_reload +0000000120021fc0 t digest_init +000000012020350c b direct_load +0000000120203529 b direct_store +00000001201feed8 s directive_buffer.1 +0000000120056e70 t distribute_bit_expr +000000012012ba90 t distribute_links +000000012012ad10 t distribute_notes +000000012004a2b0 T div_and_round_double +0000000120203a3c b div_cost +000000012018ee60 t div_unit_blockage +000000012018ebb0 T div_unit_blockage_range +000000012018b380 T div_unit_ready_cost +0000000120038b90 T do_abort +00000001201ff250 s do_block +00000001200e3700 t do_cross_jump +00000001201ff000 s do_identifier_warnings +000000012007e800 T do_jump +000000012007fc50 t do_jump_by_parts_equality +000000012007fe50 t do_jump_by_parts_equality_rtx +000000012007f710 t do_jump_by_parts_greater +000000012007f9e0 T do_jump_by_parts_greater_rtx +000000012007fff0 t do_jump_for_compare +000000012006c110 t do_jump_if_equal +00000001201ff414 s do_not_record +000000012007e550 T do_pending_stack_adjust +00000001201fec3c G do_preexpand_calls +0000000120080560 t do_store_flag +00000001201ffc00 S doing_objc_thang +00000001201fed68 S dollars_in_ident +00000001201ffd98 S double_ftype_double +00000001201ffe18 S double_ftype_double_double +0000000120200998 S double_reg_address_ok +00000001201ffd78 S double_type_node +000000012006f350 T drop_through_at_end_p +00000001200a8470 T dtors_section +0000000120200018 S dump_base_name +000000012012beb0 T dump_combine_stats +000000012012bf10 T dump_combine_total_stats +0000000120139930 t dump_conflicts +0000000120112190 T dump_flow_info +0000000120139f80 T dump_global_regs +0000000120134e20 T dump_local_alloc +00000001201fff6c S dump_time +00000001200454e0 T dump_tree_statistics +0000000120017c20 t duplicate_decls +00000001200e2ab0 t duplicate_loop_exit_test +00000001200ce060 t dwarf_attr_name +00000001200ce5e0 t dwarf_fund_type_name +00000001201ff2c0 s dwarf_last_decl +00000001200d7200 t dwarf_tag_name +00000001200cd250 T dwarfout_begin_block +00000001200cd480 T dwarfout_begin_function +00000001200cd900 T dwarfout_define +00000001200cd300 T dwarfout_end_block +00000001200cd5c0 T dwarfout_end_epilogue +00000001200cd520 T dwarfout_end_function +00000001200caa30 T dwarfout_file_scope_decl +00000001200cc540 T dwarfout_finish +00000001200cb950 T dwarfout_init +00000001200cd3b0 T dwarfout_label +00000001200cb160 T dwarfout_line +00000001200cd7c0 T dwarfout_resume_previous_source_file +00000001200cd650 T dwarfout_start_new_source_file +00000001200cdbb0 T dwarfout_undef +00000001201ff094 s dynamic_offset +00000001200b8a30 t e113toe +00000001200b8e80 t e24toe +00000001201e9e2c D e32 +00000001200b80a0 t e53toe +00000001200b8570 t e64toe +00000001200b6c40 t eadd +00000001200b6df0 t eadd1 +00000001200b65e0 T earith +000000012013c790 t earlyclobber_operand_p +00000001200b95e0 t ecmp +00000001200b7570 t ediv +00000001200bd6a0 t edivm +00000001200bc0d0 T efixi +00000001200bc140 T efixui +00000001200bb210 t efloor +00000001201e9e08 D ehalf +00000001200bea70 t eifrac +00000001200bb5c0 t eiremain +00000001200b6a30 t eisnan +00000001200b6a10 t eisneg +00000001200bb380 t eldexp +00000001200d84f0 t element_list_attribute +000000012018e7c0 T eligible_for_annul_true +000000012018e1b0 T eligible_for_delay +00000001201ff548 s elim_reg_set +00000001201e8fc8 d elim_regs.0 +00000001201ff834 s eliminable_regset +00000001201ea050 d eliminables.0 +00000001201ea0a0 d eliminables.0 +00000001201ea688 d eliminables.0 +00000001201ea670 d eliminables.2 +0000000120095380 T eliminate_constant_term +000000012014bc10 T eliminate_regs +000000012014cd40 t eliminate_regs_in_insn +00000001201e9e38 D elog2 +00000001200bdd70 t emdnorm +00000001200b5f30 T emit +00000001200a1250 T emit_0_to_1_insn +0000000120194ba0 t emit_add +00000001200b5be0 T emit_barrier +00000001200b3010 T emit_barrier_after +00000001200b5250 T emit_barrier_before +00000001201957a0 T emit_bcnd +0000000120071840 T emit_block_move +0000000120089a50 t emit_call_1 +00000001200b5ab0 T emit_call_insn +00000001200b5190 T emit_call_insn_before +000000012006cac0 t emit_case_nodes +00000001200a1210 T emit_clr_insn +000000012009c090 T emit_cmp_insn +000000012015cec0 t emit_delay_sequence +0000000120200298 S emit_filename +000000012009c830 T emit_float_lib_cmp +00000001200a1290 T emit_indirect_jump +00000001200b5750 T emit_insn +00000001200b2ee0 T emit_insn_after +00000001200b5340 T emit_insn_after_with_line_notes +00000001200b4fc0 T emit_insn_before +00000001200b58a0 T emit_insns +00000001200b5970 T emit_insns_after +00000001200b5900 T emit_insns_before +0000000120105ac0 T emit_iv_add_mult +000000012006e580 T emit_jump +000000012006ca30 t emit_jump_if_reachable +00000001200b59f0 T emit_jump_insn +00000001200b5500 T emit_jump_insn_after +00000001200b50e0 T emit_jump_insn_before +00000001200b5b80 T emit_label +00000001200b55b0 T emit_label_after +0000000120194ef0 t emit_ldst +000000012009be10 T emit_libcall_block +0000000120088070 T emit_library_call +00000001200887a0 T emit_library_call_value +00000001200b5c50 T emit_line_note +00000001200b5690 T emit_line_note_after +00000001200b5ef0 T emit_line_note_force +0000000120200290 S emit_lineno +0000000120071c20 T emit_move_insn +0000000120071e90 T emit_move_insn_1 +0000000120191520 T emit_move_sequence +000000012009ba10 T emit_no_conflict_block +000000012006e460 T emit_nop +00000001200b5db0 T emit_note +00000001200b5610 T emit_note_after +00000001200b52c0 T emit_note_before +0000000120072360 T emit_push_insn +00000001200821d0 T emit_queue +0000000120150350 t emit_reload_insns +0000000120095df0 T emit_stack_restore +0000000120094d40 T emit_stack_save +00000001200922d0 T emit_store_flag +00000001201989a0 T emit_test +000000012019dc30 T emit_typecode_conversion +00000001200a0dc0 T emit_unop_insn +000000012010a770 T emit_unrolled_add +00000001200b6990 t emov +00000001200bd500 t emovi +00000001201e9ef8 d emtens +00000001200b7b30 t emul +00000001200bdb40 t emulm +000000012016b090 T end_final +00000001201fed28 s end_of_file +00000001201ff958 s end_of_function_label +0000000120209514 b end_of_function_needs +00000001200b6430 T end_sequence +0000000120042160 T end_temporary_allocation +00000001200bd410 t endian +00000001200b69e0 t eneg +00000001200b9ff0 t enormlz +00000001201fed70 s enum_next_value +00000001201fed78 s enum_overflow +00000001201e9e14 D eone +00000001201e9e50 D epi +00000001201ff0a8 s epilogue +00000001201ffb94 s epilogue_marked +00000001202005b0 S eqdf2_libfunc +0000000120200458 S eqhf2_libfunc +00000001202006b0 S eqsf2_libfunc +00000001202005e0 S eqtf2_libfunc +0000000120197ba0 T equality_op +00000001200f16c0 t equiv_constant +00000001201ff778 s equiv_mem +00000001201ff780 s equiv_mem_modified +0000000120205f5c b equot +00000001202003f0 S eqxf2_libfunc +00000001200b6750 T ereal_atof +00000001200bd250 T ereal_cmp +00000001200bd340 T ereal_from_double +00000001200bd2f0 T ereal_from_float +00000001200bc1b0 T ereal_from_int +00000001200bc7c0 T ereal_from_uint +00000001200bd2b0 T ereal_isneg +00000001200bcd90 T ereal_ldexp +00000001200bc080 T ereal_negate +00000001200bd200 T ereal_to_decimal +00000001200b6840 T ereal_to_int +00000001201e9fb8 d ermsg +0000000120030560 T error +00000001200301d0 T error_for_asm +0000000120021a20 T error_init +00000001201ffd48 S error_mark_node +000000012002ffa0 T error_with_decl +000000012002fcf0 T error_with_file_and_line +00000001201fef44 S errorcount +00000001200b9cc0 t eshift +00000001201ff240 s esqinited +00000001201e9e44 D esqrt2 +000000012006c220 t estimate_case_costs +00000001200b6a90 t esub +00000001200bd090 T etardouble +00000001200bcf80 T etarldouble +00000001200bd0f0 T etarsingle +00000001200bce70 T etartdouble +00000001201e9e5c d etens +00000001200bf010 t etoasc +00000001200b92e0 t etoe53 +00000001200bba10 T etrunci +00000001200bbd60 T etruncui +00000001201e9e20 D etwo +00000001200b9750 t euifrac +000000012004bf50 t eval_subst +0000000120197a00 T even_relop +00000001201fec98 g everything.1 +00000001201fec9c g everything.2 +00000001201feca0 g everything.5 +0000000120038c80 T exact_log2_wide +00000001200e9450 t exp_equiv_p +000000012009ad30 T expand_abs +00000001200921b0 T expand_and +0000000120068e40 T expand_anon_union_decl +000000012006e940 T expand_asm +0000000120064330 T expand_asm_operands +0000000120072c90 T expand_assignment +00000001200962f0 T expand_binop +0000000120196d00 T expand_block_move +000000012007bde0 t expand_builtin +000000012007d3f0 t expand_builtin_apply +000000012007d180 t expand_builtin_apply_args +000000012007dad0 t expand_builtin_return +0000000120082930 T expand_builtin_return_addr +0000000120085050 T expand_call +00000001200690e0 t expand_cleanups +000000012007e6e0 T expand_cleanups_to +000000012009b0c0 T expand_complex_abs +000000012011e640 t expand_compound_operation +000000012006e5f0 T expand_computed_goto +000000012006eed0 T expand_continue_loop +0000000120093170 T expand_dec +0000000120068320 T expand_decl +000000012006f3f0 T expand_decl_cleanup +0000000120068b10 T expand_decl_init +000000012008eaa0 T expand_divmod +000000012006ed50 T expand_elseif +0000000120067850 T expand_end_bindings +000000012006acc0 T expand_end_case +0000000120069630 T expand_end_case_dummy +00000001200658d0 T expand_end_cond +0000000120065d70 T expand_end_loop +00000001200654b0 T expand_end_stmt_expr +000000012006ef30 T expand_exit_loop +000000012006ef90 T expand_exit_loop_if_false +000000012006f160 T expand_exit_something +0000000120075360 T expand_expr +0000000120064f60 T expand_expr_stmt +000000012011e960 t expand_field_assignment +000000012009ddb0 T expand_fix +0000000120063eb0 t expand_fixup +000000012006e920 T expand_fixups +000000012009cf70 T expand_float +00000001200607d0 T expand_function_end +000000012005ff70 T expand_function_start +00000001200639c0 T expand_goto +0000000120063ce0 t expand_goto_internal +00000001200930e0 T expand_inc +000000012007dce0 t expand_increment +00000001200dbc40 T expand_inline_function +000000012006e6a0 T expand_label +000000012006ee30 T expand_loop_continue_here +0000000120063660 T expand_main_function +000000012008da30 T expand_mult +00000001200933d0 T expand_mult_add +000000012008e3a0 T expand_mult_highpart +0000000120093240 T expand_mult_highpart_adjust +000000012006f1d0 T expand_null_return +00000001201374d0 t expand_preferences +0000000120066330 T expand_return +000000012008ce50 T expand_shift +0000000120067600 T expand_start_bindings +0000000120069210 T expand_start_case +0000000120069500 T expand_start_case_dummy +0000000120065700 T expand_start_cond +000000012006ec10 T expand_start_else +000000012006eb00 T expand_start_elseif +0000000120065b90 T expand_start_loop +000000012006edd0 T expand_start_loop_continue_elsewhere +000000012006ea10 T expand_start_stmt_expr +000000012002f4a0 t expand_stmt_with_iterators_1 +00000001200998a0 T expand_twoval_binop +0000000120099f20 T expand_unop +00000001201fed54 S explicit_flag_signed_bitfields +0000000120095510 T expr_size +00000001202002a8 S expr_stmts_for_value +00000001202000b8 S expression_obstack +00000001202003f8 S extenddftf2_libfunc +0000000120200320 S extenddfxf2_libfunc +000000012012bd50 T extended_count +0000000120200658 S extendsfdf2_libfunc +0000000120200418 S extendsftf2_libfunc +0000000120200488 S extendsfxf2_libfunc +000000012020fce0 B extendtab +00000001201fefc4 S extra_warnings +000000012008b320 T extract_bit_field +000000012008c510 t extract_fixed_bit_field +000000012012c9c0 t extract_left_shift +000000012008cb50 t extract_split_bit_field +0000000120205f50 B ezero +00000001201e7a08 D f_options +00000001201ea030 D factors +00000001201ffba8 s failure_errno.1 +00000001201ff2b8 s fake_containing_scope +0000000120038b70 T fancy_abort +0000000120030830 T fatal +000000012002f9d0 T fatal_insn +0000000120038790 T fatal_insn_not_found +0000000120038740 T fatal_io_error +0000000120200688 S ffs_optab +00000001200d9980 t field_byte_offset +0000000120018f00 t field_decl_cmp +00000001201ff270 s filename_table +000000012015b4b0 t fill_eager_delay_slots +0000000120159ed0 t fill_simple_delay_slots +000000012015e3a0 t fill_slots_from_thread +000000012016ca70 T final +000000012010bd30 T final_biv_value +000000012016f890 T final_end_function +000000012010c1d0 T final_giv_value +000000012016cdb0 T final_scan_insn +00000001202009c0 S final_sequence +000000012016f720 T final_start_function +00000001201ffed8 S final_time +00000001201ff264 s finalizing +00000001201003a0 t find_and_verify_loops +000000012010df00 t find_basic_blocks +00000001200f5950 t find_best_addr +00000001200f67a0 t find_comparison_args +0000000120173f60 t find_constant_term_loc +00000001200e3280 t find_cross_jump +000000012013c220 t find_dummy_reload +000000012015cc40 t find_end_label +0000000120143fa0 T find_equiv_reg +0000000120134400 t find_free_reg +0000000120061c20 T find_function_data +0000000120144fc0 t find_inc_amount +00000001200b03c0 T find_last_value +000000012006f5c0 T find_loop_tree_blocks +0000000120103610 t find_mem_givs +0000000120093b30 T find_next_ref +0000000120137ba0 t find_reg +00000001200ae880 T find_reg_fusage +00000001200b09c0 T find_reg_note +00000001200ae9e0 T find_regno_fusage +00000001200b0a20 T find_regno_note +000000012013d610 T find_reloads +0000000120141490 t find_reloads_address +0000000120142720 t find_reloads_address_1 +0000000120143360 t find_reloads_address_part +0000000120140ed0 t find_reloads_toplev +0000000120145e60 T find_replacement +0000000120173060 T find_single_use +0000000120170dc0 t find_single_use_1 +0000000120107b10 t find_single_use_in_loop +0000000120117900 t find_split_point +000000012010aff0 t find_splittable_givs +000000012010a800 t find_splittable_regs +0000000120164a10 t find_symbolic_term +0000000120111f40 t find_use_as_address +0000000120010df0 T finish_decl +0000000120014560 T finish_enum +0000000120006fb0 T finish_file +0000000120015fe0 T finish_function +0000000120016430 T finish_incomplete_decl +00000001200257e0 T finish_init +0000000120013a60 T finish_struct +0000000120200010 S finput +00000001202006d8 S first_global_object_name +00000001201ff1e8 s first_insn +00000001201ff210 s first_label_num +00000001201ff190 s first_pool +000000012005ed80 T fix_lexical_addr +0000000120130180 T fix_register +00000001202003b0 S fixdfdi_libfunc +0000000120200370 S fixdfsi_libfunc +00000001202002f8 S fixdfti_libfunc +0000000120200920 S fixed_reg_set +0000000120213bec B fixed_regs +0000000120200468 S fixsfdi_libfunc +00000001202005f0 S fixsfsi_libfunc +0000000120200368 S fixsfti_libfunc +000000012020c850 B fixtab +0000000120200400 S fixtfdi_libfunc +00000001202003a0 S fixtfsi_libfunc +00000001202004c0 S fixtfti_libfunc +0000000120211728 B fixtrunctab +00000001202005c8 S fixunsdfdi_libfunc +00000001202004e8 S fixunsdfsi_libfunc +00000001202005a0 S fixunsdfti_libfunc +0000000120200378 S fixunssfdi_libfunc +0000000120200448 S fixunssfsi_libfunc +0000000120200328 S fixunssfti_libfunc +00000001202003c8 S fixunstfdi_libfunc +00000001202006b8 S fixunstfsi_libfunc +00000001202003b8 S fixunstfti_libfunc +0000000120200310 S fixunsxfdi_libfunc +00000001202004f8 S fixunsxfsi_libfunc +0000000120200650 S fixunsxfti_libfunc +000000012006f820 t fixup_gotos +000000012005bd20 t fixup_memory_subreg +00000001200493d0 T fixup_signed_type +000000012005c060 t fixup_stack_1 +00000001200494e0 T fixup_unsigned_type +000000012005aaa0 t fixup_var_refs +000000012005afa0 t fixup_var_refs_1 +000000012005ac10 t fixup_var_refs_insns +0000000120200318 S fixxfdi_libfunc +0000000120200630 S fixxfsi_libfunc +0000000120200490 S fixxfti_libfunc +00000001201fed50 S flag_allow_single_precision +00000001201fef74 S flag_caller_saves +00000001201ffc40 S flag_cond_mismatch +00000001201fff28 S flag_cse_follow_jumps +00000001201fff98 S flag_cse_skip_blocks +00000001201fef84 S flag_defer_pop +0000000120200024 S flag_delayed_branch +00000001201fff88 S flag_expensive_optimizations +00000001201fef9c S flag_fast_math +00000001201fef88 S flag_float_store +00000001201fef80 S flag_force_addr +00000001201fef7c S flag_force_mem +00000001201fefa4 S flag_gen_aux_info +00000001201fec24 G flag_gnu_linker +00000001201fefb4 S flag_inhibit_size_directive +00000001201ffef8 S flag_inline_functions +00000001201ffecc S flag_keep_inline_functions +00000001201fec78 g flag_minimal_debug +00000001201ffe50 S flag_no_asm +00000001201ffc98 S flag_no_builtin +0000000120200008 S flag_no_common +00000001201fef90 S flag_no_function_cse +00000001201fed58 S flag_no_ident +00000001201fff68 S flag_no_inline +00000001201ffc94 S flag_no_nonansi_builtin +00000001201fef98 S flag_no_peephole +00000001201fef94 S flag_omit_frame_pointer +00000001201fefbc S flag_pack_struct +00000001201fef78 S flag_pcc_struct_return +00000001201fefa8 S flag_pedantic_errors +00000001201fffdc S flag_pic +00000001201ffec8 S flag_pretend_float +00000001201fef30 S flag_print_asm_name +00000001201fefdc s flag_rerun_cse_after_loop +00000001201fefac S flag_schedule_insns +00000001201fefb0 S flag_schedule_insns_after_reload +0000000120200030 S flag_shared_data +00000001201ffe20 S flag_short_double +00000001201ffee8 S flag_short_enums +00000001201fffb8 S flag_short_temps +00000001201fec0c G flag_signed_bitfields +00000001201fff48 S flag_signed_char +00000001201fef8c S flag_strength_reduce +00000001201fefa0 S flag_syntax_only +00000001201fff08 S flag_thread_jumps +00000001201ffdf8 S flag_traditional +00000001201fff94 S flag_unroll_all_loops +00000001201fec1c G flag_unroll_loops +00000001201fefb8 S flag_verbose_asm +00000001201fff60 S flag_volatile +0000000120200068 S flag_volatile_global +00000001201fec20 G flag_writable_strings +00000001202033e8 b float_error +00000001201ffd88 S float_ftype_float +00000001201fff0c S float_handled +000000012020ba18 B float_handler +00000001200394c0 t float_signal +00000001201ffdd0 S float_type_node +0000000120200648 S floatdidf_libfunc +00000001202004b8 S floatdisf_libfunc +0000000120200638 S floatditf_libfunc +0000000120200668 S floatdixf_libfunc +0000000120200380 S floatsidf_libfunc +0000000120200528 S floatsisf_libfunc +00000001202004a0 S floatsitf_libfunc +00000001202003e0 S floatsixf_libfunc +000000012020e298 B floattab +00000001202003a8 S floattidf_libfunc +0000000120200530 S floattisf_libfunc +00000001202005f8 S floattitf_libfunc +0000000120200338 S floattixf_libfunc +0000000120200438 S flodiv_optab +0000000120038ce0 T floor_log2_wide +000000012010db80 T flow_analysis +000000012010eea0 t flow_delete_insn +00000001201fef10 S flow_dump +0000000120200048 S flow_dump_file +0000000120200040 S flow_time +0000000120164f30 t flush_pending_lists +000000012004c5f0 T fold +0000000120056820 t fold_convert +00000001200ee250 t fold_rtx +0000000120057700 t fold_truthop +00000001200e3cc0 T follow_jumps +000000012020099c S forbidden_regs +00000001200a69e0 T force_const_mem +0000000120049f20 T force_fit_type +00000001200fe2a0 t force_movables +00000001200b5f10 T force_next_line_note +0000000120095a00 T force_not_mem +0000000120074c00 T force_operand +0000000120094bf0 T force_reg +0000000120120540 t force_to_mode +00000001202007f8 S forced_labels +000000012014e490 t forget_old_reloads_1 +000000012000b7d0 T forget_protocol_qualifiers +0000000120145b80 T form_sum +000000012018f1c0 t fpadd100_unit_blockage +000000012018b860 T fpadd100_unit_blockage_range +000000012018b5e0 T fpadd100_unit_ready_cost +000000012018ef60 t fpadd110_unit_blockage +000000012018b460 T fpadd110_unit_blockage_range +000000012018ec40 T fpadd110_unit_ready_cost +000000012018fa70 t fpmul100_unit_blockage +000000012018bb20 T fpmul100_unit_blockage_range +000000012018ba30 T fpmul100_unit_ready_cost +000000012018ed00 T fpmul110_unit_ready_cost +0000000120001a80 t frame_dummy +00000001201ffb88 s frame_laid_out +00000001202001d8 S frame_offset +00000001202009ac S frame_pointer_needed +00000001202007c0 S frame_pointer_rtx +00000001201ffb8c s frame_size +00000001201fedd8 s free_binding_level +00000001200e7f30 t free_element +00000001201ff420 s free_element_chain +00000001201688c0 t free_pending_lists +0000000120062020 T free_temp_slots +0000000120062090 T free_temps_for_rtl_expr +00000001201ff27c s ft_entries +00000001201ff278 s ft_entries_allocated +0000000120200498 S ftrunc_optab +0000000120200284 S function_call_count +00000001200da320 T function_cannot_inline_p +00000001201ff160 s function_defined +00000001201feed0 s function_format_list +00000001202000f0 S function_maybepermanent_obstack +00000001202000c8 S function_obstack +00000001200a8830 T function_section +00000001200199a0 t function_types_compatible_p +00000001201eb100 D function_units +000000012018ced0 T function_units_used +00000001200ce960 t fundamental_type_code +00000001201fff9c S g_switch_set +00000001201ffeb0 S g_switch_value +000000012003bd90 T gcc_obstack_init +0000000120200360 S gedf2_libfunc +00000001202003d0 S gehf2_libfunc +000000012018a050 T gen_absdf2 +000000012018a0c0 T gen_abssf2 +00000001200a1330 T gen_add2_insn +0000000120188dc0 T gen_adddf3 +0000000120188f50 T gen_adddi3 +0000000120188ee0 T gen_addsf3 +0000000120188d50 T gen_addsi3 +00000001201898e0 T gen_anddi3 +00000001201815c0 T gen_andsi3 +0000000120181aa0 T gen_ashlsi3 +0000000120181f00 T gen_ashrsi3 +0000000120028650 T gen_aux_info_record +0000000120185ee0 T gen_bcnd +0000000120186100 T gen_beq +0000000120186a80 T gen_bge +0000000120186bd0 T gen_bgeu +00000001201863a0 T gen_bgt +00000001201864f0 T gen_bgtu +0000000120126bf0 t gen_binary +0000000120186df0 T gen_ble +0000000120186f40 T gen_bleu +000000012018a630 T gen_blockage +0000000120186710 T gen_blt +0000000120186860 T gen_bltu +0000000120186250 T gen_bne +0000000120185ff0 T gen_bxx +000000012018a130 T gen_call +0000000120187a30 T gen_call_block_move +0000000120187dc0 T gen_call_movstrsi_loop +000000012018a2e0 T gen_call_value +0000000120182830 T gen_casesi +0000000120182fc0 T gen_casesi_enter +0000000120182de0 T gen_casesi_jump +0000000120185360 T gen_cmpdf +0000000120185260 T gen_cmpsf +0000000120185120 T gen_cmpsi +0000000120027d40 t gen_decl +000000012018a6d0 T gen_decrement_and_branch_until_zero +0000000120181340 T gen_divdf3 +0000000120189870 T gen_divsf3 +000000012017f050 T gen_divsi3 +0000000120183160 T gen_dummy +000000012018a590 T gen_epilogue +00000001200a15e0 T gen_extend_insn +0000000120188720 T gen_extendhisi2 +0000000120188850 T gen_extendqihi2 +0000000120188980 T gen_extendqisi2 +0000000120188ab0 T gen_extendsfdf2 +00000001201885a0 T gen_extendsidi2 +0000000120189e90 T gen_extv +0000000120189f00 T gen_extzv +0000000120189d60 T gen_ffssi2 +0000000120188c70 T gen_fix_truncdfsi2 +0000000120188ce0 T gen_fix_truncsfsi2 +0000000120188b90 T gen_floatsidf2 +0000000120188c00 T gen_floatsisf2 +0000000120028c20 t gen_formal_list_for_func_def +00000001200287b0 t gen_formal_list_for_type +00000001200b1bf0 T gen_highpart +00000001200b3e60 T gen_imagpart +000000012018a690 T gen_indirect_jump +00000001200b43f0 T gen_inline_header_rtx +0000000120189950 T gen_iordi3 +0000000120181780 T gen_iorsi3 +0000000120183100 T gen_jump +00000001200b4360 T gen_label_rtx +0000000120187160 T gen_locate1 +0000000120187220 T gen_locate2 +00000001200b4000 T gen_lowpart +00000001200b14c0 T gen_lowpart_common +00000001201265a0 t gen_lowpart_for_combine +00000001200f1980 T gen_lowpart_if_possible +0000000120182360 T gen_lshrsi3 +00000001201833f0 T gen_m88k_rcs_id +00000001201877a0 T gen_movdf +00000001201876d0 T gen_movdi +000000012009cbd0 T gen_move_insn +0000000120187530 T gen_movhi +0000000120187600 T gen_movqi +0000000120187870 T gen_movsf +0000000120187370 T gen_movsi +0000000120187940 T gen_movstrsi +00000001201893a0 T gen_muldf3 +00000001201894c0 T gen_mulsf3 +0000000120189330 T gen_mulsi3 +0000000120189f70 T gen_negdf2 +0000000120189fe0 T gen_negsf2 +00000001201827c0 T gen_negsi2 +000000012018a4c0 T gen_nop +0000000120189aa0 T gen_one_cmpldi2 +0000000120189a30 T gen_one_cmplsi2 +000000012018a520 T gen_prologue +00000001200828f0 T gen_push_operand +00000001200b3e10 T gen_realpart +00000001200b1290 T gen_reg_rtx +0000000120151de0 T gen_reload +0000000120187440 T gen_reload_insi +000000012018a4e0 T gen_return +0000000120189b70 T gen_rotlsi3 +0000000120189cf0 T gen_rotrsi3 +00000001200b1100 T gen_rtvec +00000001200b1210 T gen_rtvec_v +00000001200b0e00 T gen_rtx +00000001201269a0 t gen_rtx_combine +00000001201854a0 T gen_seq +00000001200b64a0 T gen_sequence +0000000120185920 T gen_sge +00000001201859e0 T gen_sgeu +0000000120185620 T gen_sgt +00000001201856e0 T gen_sgtu +0000000120185aa0 T gen_sle +0000000120185b60 T gen_sleu +00000001201857a0 T gen_slt +0000000120185860 T gen_sltu +0000000120185560 T gen_sne +0000000120183430 T gen_split_1 +000000012017eed0 T gen_split_125 +000000012017e110 T gen_split_13 +000000012017e390 T gen_split_14 +000000012017e5a0 T gen_split_15 +0000000120184140 T gen_split_16 +00000001201842e0 T gen_split_17 +0000000120184450 T gen_split_18 +000000012017e7f0 T gen_split_19 +0000000120183610 T gen_split_2 +000000012017ea70 T gen_split_20 +000000012017ec80 T gen_split_21 +00000001201845e0 T gen_split_22 +0000000120184780 T gen_split_23 +00000001201848f0 T gen_split_24 +00000001201837f0 T gen_split_3 +0000000120184a80 T gen_split_31 +0000000120184bb0 T gen_split_33 +0000000120184d00 T gen_split_35 +0000000120184e30 T gen_split_37 +00000001201839d0 T gen_split_4 +0000000120183bb0 T gen_split_5 +0000000120183d90 T gen_split_6 +0000000120183f70 T gen_split_7 +0000000120185c20 T gen_split_75 +0000000120185d70 T gen_split_80 +00000001200a1470 T gen_sub2_insn +00000001201890b0 T gen_subdf3 +0000000120189240 T gen_subdi3 +00000001201891d0 T gen_subsf3 +0000000120189040 T gen_subsi3 +0000000120189b10 T gen_tbnd +0000000120189570 T gen_tcnd_divide_by_zero +0000000120184f80 T gen_test +0000000120189530 T gen_trap_divide_by_zero +0000000120188b20 T gen_truncdfsf2 +0000000120026a00 t gen_type +0000000120180e90 T gen_udivsi3 +0000000120126f10 t gen_unary +00000001201899c0 T gen_xordi3 +0000000120181920 T gen_xorsi3 +00000001201881f0 T gen_zero_extendhisi2 +0000000120188320 T gen_zero_extendqihi2 +0000000120188450 T gen_zero_extendqisi2 +00000001201049d0 t general_induction_var +0000000120171140 T general_operand +0000000120200428 S gesf2_libfunc +000000012018ee20 T get_attr_cpu +000000012018d8b0 T get_attr_fpu +000000012016be50 T get_attr_length +000000012018da20 T get_attr_type +0000000120048ce0 T get_best_mode +0000000120157380 t get_branch_condition +0000000120107100 T get_condition +0000000120107760 T get_condition_for_loop +000000012002c580 T get_directive_line +0000000120041c40 T get_file_function_name +0000000120062d80 T get_first_block_beg +00000001200b3df0 T get_first_label_num +0000000120062d30 T get_first_nonparm_insn +0000000120061cb0 T get_frame_size +000000012003d8a0 T get_identifier +00000001200746b0 T get_inner_reference +00000001200745e0 t get_inner_unaligned_p +00000001200b4830 T get_insns +00000001200afcb0 T get_integer_term +0000000120156dd0 t get_jump_flags +00000001200e39a0 T get_label_after +00000001200e3910 T get_label_before +00000001200b4850 T get_last_insn +00000001200b48b0 T get_last_insn_anywhere +00000001201299d0 t get_last_value +00000001201297d0 t get_last_value_validate +00000001200b4900 T get_max_uid +0000000120041960 T get_narrower +0000000120013760 T get_parm_info +0000000120048e70 T get_pending_sizes +00000001200842e0 t get_pointer_alignment +00000001200a9760 T get_pool_constant +00000001200a9830 T get_pool_mode +00000001200a9900 T get_pool_offset +00000001200a99d0 T get_pool_size +00000001200afd30 T get_related_value +00000001200384e0 T get_run_time +0000000120041e00 T get_set_constructor_bits +0000000120041fc0 T get_set_constructor_bytes +0000000120021790 t get_spelling +00000001200416b0 T get_unwidened +0000000120016e20 T getdecls +0000000120200580 S getf2_libfunc +0000000120198ed0 T getpwd +0000000120016e40 T gettags +0000000120200678 S gexf2_libfunc +0000000120135fa0 T global_alloc +0000000120200090 S global_alloc_time +00000001201fede0 s global_binding_level +00000001200164d0 T global_bindings_p +0000000120136f90 t global_conflicts +00000001202007e8 S global_const_equiv_map +00000001202007f0 S global_const_equiv_map_size +00000001201fef20 S global_reg_dump +0000000120200078 S global_reg_dump_file +0000000120213d0c B global_regs +0000000120130270 T globalize_reg +00000001201ff0e0 s goto_fixup_chain +0000000120011750 t grokdeclarator +0000000120017710 T grokfield +0000000120013550 t grokparms +0000000120016ee0 T groktypename +0000000120016f20 T groktypename_in_parm_context +000000012006c550 t group_case_nodes +0000000120200340 S gtdf2_libfunc +0000000120200670 S gthf2_libfunc +0000000120200500 S gtsf2_libfunc +0000000120200460 S gttf2_libfunc +0000000120200598 S gtxf2_libfunc +000000012000c110 T handle_pragma_token +00000001200a99f0 T handle_pragma_weak +0000000120008c80 T handle_sysv_pragma +00000001202007e0 S hard_frame_pointer_rtx +0000000120095f70 T hard_function_value +0000000120096090 T hard_libcall_value +00000001201ff7d0 s hard_reg_conflicts +00000001201ff7e0 s hard_reg_copy_preferences +00000001201ff7e8 s hard_reg_full_preferences +00000001201ff7d8 s hard_reg_preferences +000000012013c7e0 t hard_reg_set_here_p +0000000120152d20 t hard_reg_use_compare +00000001201ff3d8 s hard_regs_in_table +00000001201ff7c4 s hard_regs_live +00000001201ff938 s hard_regs_live +00000001201ff85c s hard_regs_live_known +00000001201ff948 s hard_regs_need_restore +00000001201ff940 s hard_regs_saved +00000001201ff418 s hash_arg_in_memory +00000001201ff41c s hash_arg_in_struct +0000000120201258 b hash_table +0000000120209db8 b hashtab +00000001200a1440 T have_add2_insn +00000001200a1580 T have_sub2_insn +00000001201ff244 s have_used_extensions +00000001201ffae8 s high_block_linenum +00000001201ffaec s high_function_linenum +00000001201ff120 s highest_outgoing_arg_in_use +00000001201ff6a8 s highest_regno_in_uid_map +00000001201ffff0 S id_clash_len +00000001201feff8 S id_string_size +000000012005f2a0 T identify_blocks +00000001201fecf8 s if_stmt_file +00000001201fed00 s if_stmt_line +00000001201219a0 t if_then_else_cond +00000001200fe1d0 t ignore_some_movables +00000001200a4ad0 T immed_double_const +00000001200a9420 T immed_real_const +00000001200a4d30 T immed_real_const_1 +00000001201732d0 T immediate_operand +0000000120200148 S immediate_size_expand +00000001200169f0 T implicitly_declare +00000001201ff08c s in_arg_offset +00000001201ff168 s in_named_name +00000001201ff308 s in_nonparm_insns +00000001200165c0 T in_parm_level_p +00000001201ff148 s in_section +00000001200b6480 T in_sequence_p +00000001201fef68 S in_system_header +00000001200a86e0 T in_text_section +0000000120152660 t inc_for_reload +00000001201fef58 S incomplete_decl_finalize_hook +0000000120018f40 T incomplete_type_error +00000001201ff1b4 s indent.0 +0000000120047830 T indent_to +0000000120044df0 T index_type_equal +0000000120173810 T indirect_operand +0000000120200999 S indirect_symref_ok +00000001200af270 T inequality_comparisons_p +00000001202002ec S inhibit_defer_pop +00000001201fefc0 S inhibit_warnings +00000001201ff348 s init.0 +00000001201ff34c s init.3 +00000001201ff350 s init.4 +00000001201641d0 T init_alias_analysis +00000001201740b0 T init_all_optabs +00000001201549c0 T init_caller_save +00000001200a9560 T init_const_rtx_hash_table +000000012000e5d0 T init_decl_processing +00000001200b35a0 T init_emit +00000001200b3800 T init_emit_once +0000000120089c70 T init_expmed +0000000120082040 T init_expr +000000012006ff10 T init_expr_once +000000012016f630 T init_final +000000012002cb10 T init_function_format_info +000000012005f5e0 T init_function_start +000000012016f700 T init_insn_lengths +000000012002e8e0 T init_iterators +0000000120007110 T init_lex +00000001200a1640 t init_libfuncs +0000000120107800 T init_loop +000000012018a8b0 T init_mov_optab +0000000120084200 t init_noncopied_parts +000000012003b990 T init_obstacks +000000012009ecb0 T init_optabs +0000000120082a70 T init_pending_stack_adjust +0000000120172e30 T init_recog +0000000120172e10 T init_recog_no_volatile +0000000120114280 t init_reg_last_arrays +0000000120109a30 t init_reg_map +0000000120130b10 t init_reg_modes +000000012012d1e0 T init_reg_sets +00000001201307a0 t init_reg_sets_1 +000000012012fec0 T init_regs +000000012010ff40 t init_regset_vector +0000000120147440 T init_reload +00000001200ac2b0 T init_rtl +0000000120156100 T init_save_areas +000000012006e240 T init_stmt +000000012006e270 T init_stmt_for_function +00000001200425f0 T init_tree_codes +00000001201ea0f8 d initial_call_used_regs +00000001201ea0b8 d initial_fixed_regs +000000012010d3a0 t initial_reg_note_copy +00000001201ff028 s initial_trampoline.1 +00000001201ffea0 S initialization_message +00000001200dfa70 t initialize_for_inline +00000001201ff26c s initialized.2 +00000001200213c0 T initializer_constant_valid_p +00000001201ffe90 S initializer_stack +0000000120200198 S inline_function_decl +0000000120200108 S inline_obstacks +00000001201fff20 S input_file_stack +000000012020000c S input_file_stack_tick +00000001201fffc0 S input_filename +00000001200e7f50 t insert +00000001200167b0 T insert_block +00000001200e7ab0 t insert_regs +0000000120155d20 t insert_save_restore +00000001202009b8 S insn_addresses +00000001201ff9f0 s insn_blockage +0000000120164cf0 t insn_cost +00000001201ff9e0 s insn_costs +00000001201ffac8 s insn_counter +00000001202009b4 S insn_current_address +000000012018ea90 T insn_current_length +00000001201109b0 t insn_dead_p +000000012018a8c0 T insn_default_length +000000012017c590 T insn_extract +00000001201bf238 R insn_gen_function +00000001201ffb28 s insn_lengths +00000001201ff9d0 s insn_luid +00000001201ff2d8 s insn_map +00000001201cec10 R insn_n_alternatives +00000001201bff7c R insn_n_dups +00000001201bfb10 R insn_n_operands +00000001201ea800 D insn_name +00000001201fecc8 G insn_name_ptr +00000001201ffb08 s insn_noperands +00000001201c03e8 R insn_operand_constraint +00000001201c5c58 R insn_operand_mode +00000001201c93a0 R insn_operand_predicate +00000001201c8890 R insn_operand_strict_low +00000001201be960 R insn_outfun +00000001201ff9d8 s insn_priority +0000000120209570 b insn_queue +00000001201ff9f8 s insn_ref_count +00000001201be088 R insn_template +00000001201ffa38 s insn_tick +00000001201ff9e8 s insn_units +000000012018eb20 T insn_variable_length_p +0000000120063780 t instantiate_decls_1 +00000001200621a0 T instantiate_virtual_regs +000000012005c860 t instantiate_virtual_regs_1 +0000000120197760 T int32_operand +0000000120197730 T int5_operand +00000001201ffcf8 S intDI_type_node +00000001201ffd08 S intHI_type_node +00000001201ffc78 S intQI_type_node +00000001201ffcd8 S intSI_type_node +00000001201ffdb0 S int_array_type_node +0000000120045270 T int_fits_type_p +00000001201ffe08 S int_ftype_cptr_cptr_sizet +00000001201ffd30 S int_ftype_int +00000001201ffca8 S int_ftype_ptr_ptr_int +00000001201ffde0 S int_ftype_string_string +00000001201ea238 d int_reg_class_contents +0000000120043a30 T int_size_in_bytes +0000000120042cf0 T integer_all_onesp +0000000120196960 T integer_ok_for_set +00000001201ffd58 S integer_one_node +0000000120042b90 T integer_onep +0000000120042ef0 T integer_pow2p +00000001201ffe80 S integer_type_node +00000001201ffd68 S integer_zero_node +0000000120042ac0 T integer_zerop +00000001200dd810 t integrate_decl_tree +00000001200dd710 t integrate_parm_decls +00000001201ffefc S integration_time +00000001200387c0 T interim_eh +0000000120200088 S interim_eh_hook +0000000120025d50 t internal_build_compound_expr +00000001200e87e0 t invalidate +00000001200f5710 t invalidate_for_call +00000001200f2dd0 t invalidate_from_clobbers +00000001200fb1e0 t invalidate_skipped_set +0000000120100fe0 T invariant_p +00000001200e4a60 T invert_exp +00000001200e6f60 T invert_jump +000000012004c250 T invert_truthvalue +0000000120200538 S ior_optab +0000000120044300 T is_attribute_p +0000000120006eb0 T is_class_name +000000012000b660 T is_reserved_word +00000001201ffea8 S iter_stack +000000012010d480 t iteration_info +000000012002ef90 T iterator_expand +000000012002ee60 T iterator_for_loop_end +000000012002ed40 T iterator_for_loop_start +00000001201feee8 s ixp_firstobj +0000000120201150 b ixp_obstack +00000001201fef28 S jump2_opt_dump +00000001201fffc8 S jump2_opt_dump_file +00000001200e3a30 t jump_back_p +00000001201ff318 s jump_chain +00000001201fef00 S jump_opt_dump +00000001201fffb0 S jump_opt_dump_file +00000001200e0140 T jump_optimize +0000000120200070 S jump_time +000000012007e7c0 T jumpif +000000012007e790 T jumpifnot +00000001201ffb38 s junk +00000001201fedec s keep_next_if_subblocks +00000001200164f0 T keep_next_level +00000001201fede8 s keep_next_level_flag +0000000120016510 T kept_level_p +00000001201222b0 t known_cond +00000001202034f8 b label.4 +00000001201ff0f8 s label_counter.3 +00000001201fedf0 s label_level_chain +00000001201ff2d0 s label_map +00000001201fec50 g label_num +000000012006e510 T label_rtx +00000001201ff628 s label_tick +00000001201ff14c s labelno.1 +00000001201ff150 s labelno.2 +0000000120200a30 S labelrefs +0000000120200a38 S labels +0000000120100f60 t labels_in_range_p +0000000120006de0 T lang_decode_option +00000001201fffa0 S lang_expand_expr +0000000120006e60 T lang_finish +0000000120006e70 T lang_identify +0000000120006e10 T lang_init +00000001201e7db0 D lang_options +00000001201fec00 G language_string +00000001201fff5c S larger_than_size +00000001201ffb78 s last_addr.2 +00000001202006d0 S last_assemble_variable_decl +00000001201ff0c8 s last_block_end_note +00000001201ff5d4 s last_call_cuid +00000001201ff558 s last_call_suid +000000012006f4d0 T last_cleanup_this_contour +00000001201fefd0 s last_error_function +00000001201fefec s last_error_tick +00000001201ff0b8 s last_expr_type +00000001201ff0c0 s last_expr_value +00000001201ff208 s last_filename +00000001201ff288 s last_filename +00000001201ffaf0 s last_filename +00000001201ffa98 s last_function_call +00000001201fed88 s last_function_parm_tags +00000001201fed80 s last_function_parms +00000001201ffac0 s last_ignored_compare +00000001201ff1f0 s last_insn +00000001201ff430 s last_jump_equiv_class +00000001201ff214 s last_label_num +00000001201ff268 s last_line_entry_num.0 +00000001201ff200 s last_linenum +00000001201ffae4 s last_linenum +00000001201ff540 s last_mem_set +00000001201ff048 s last_parm_insn +00000001201ffa90 s last_pending_memory_flush +00000001201ff198 s last_pool +00000001201ffaa8 s last_scheduled_insn +00000001201ff8ac s last_spill_reg +0000000120106ed0 t last_use_this_basic_block +00000001201ffbf0 S lastiddecl +00000001200144f0 t layout_array_type +00000001200478c0 T layout_decl +00000001200495d0 t layout_record +0000000120047db0 T layout_type +0000000120049bc0 t layout_union +00000001201ffe00 S ldouble_ftype_ldouble +00000001201ea470 d leaf.0 +00000001202009c8 S leaf_function +000000012016fa00 T leaf_function_p +0000000120200480 S ledf2_libfunc +0000000120191870 T legitimize_address +0000000120197110 T legitimize_operand +0000000120200330 S lehf2_libfunc +00000001202005c0 S lesf2_libfunc +0000000120200560 S letf2_libfunc +00000001202003d8 S lexf2_libfunc +00000001200fe070 t libcall_benefit +0000000120110c60 t libcall_dead_p +00000001200fdec0 t libcall_other_reg +000000012010eec0 t life_analysis +00000001201ffa00 s line_note +00000001201ffb20 s line_note_exists +00000001201ffa08 s line_note_head +00000001201feff0 s line_position +0000000120200094 S lineno +00000001200435d0 T list_length +00000001200436d0 T listify +0000000120130d90 T local_alloc +00000001201fff8c S local_alloc_time +00000001201fef1c S local_reg_dump +00000001201ffeb8 S local_reg_dump_file +0000000120206f90 b local_reg_live_length +0000000120206e90 b local_reg_n_refs +00000001202001e0 S local_vars_size +000000012005e850 T locate_and_pad_parm +00000001200d9aa0 t location_attribute +00000001200d78e0 t location_or_const_value_attribute +00000001201ffca0 S long_double_type_node +00000001201ffc88 S long_ftype_long +00000001201ffd50 S long_integer_type_node +00000001201ffe40 S long_long_integer_type_node +00000001201ffd18 S long_long_unsigned_type_node +00000001201ffe88 S long_unsigned_type_node +00000001200444f0 T lookup_attribute +000000012001a760 t lookup_field +00000001200cdce0 t lookup_filename +0000000120006ea0 T lookup_interface +0000000120016b90 T lookup_label +000000012000e4c0 T lookup_name +000000012000e500 T lookup_name_current_level +000000012000e560 T lookup_name_current_level_global +0000000120063370 T lookup_static_chain +00000001201ff470 s loop_continue +00000001201ff6a4 s loop_cost +00000001201ff538 s loop_depth +00000001201ff6a0 s loop_depth +00000001201ff770 s loop_depth +00000001201fef08 S loop_dump +0000000120200050 S loop_dump_file +0000000120200820 S loop_dump_stream +00000001201ff4f0 s loop_final_value +00000001201ff468 s loop_has_call +00000001201ff46c s loop_has_volatile +00000001201ff4e8 s loop_increment +00000001201ff4e0 s loop_initial_value +00000001201ff460 s loop_invalid +00000001201ff4d8 s loop_iteration_var +000000012010c720 T loop_iterations +0000000120200848 S loop_iv_list +0000000120200808 S loop_n_iterations +0000000120200840 S loop_number_exit_count +0000000120200810 S loop_number_exit_labels +00000001201ff458 s loop_number_loop_ends +00000001201ff450 s loop_number_loop_starts +00000001200fc370 T loop_optimize +0000000120200818 S loop_outer_loop +0000000120101da0 t loop_reg_used_before_p +00000001202002c0 S loop_stack +0000000120206608 b loop_store_mems +00000001201ff498 s loop_store_mems_idx +00000001201ffed0 S loop_time +00000001201ff4a8 s loops_enclosed +0000000120055f40 T lrotate_double +0000000120055db0 T lshift_double +000000012008cab0 t lshift_value +00000001202006c0 S lshr_optab +00000001202005a8 S ltdf2_libfunc +0000000120200548 S lthf2_libfunc +0000000120200518 S ltsf2_libfunc +0000000120200470 S lttf2_libfunc +0000000120200430 S ltxf2_libfunc +000000012001f0a0 T lvalue_or_else +000000012001eff0 T lvalue_p +00000001200c0300 t m16m +0000000120197de0 T m88k_begin_epilogue +0000000120197cd0 T m88k_begin_prologue +0000000120195430 T m88k_builtin_saveregs +0000000120200a08 S m88k_case_index +0000000120200a00 S m88k_compare_op0 +0000000120200a18 S m88k_compare_op1 +00000001202009e8 S m88k_compare_reg +00000001202009e0 S m88k_cpu +0000000120198220 T m88k_debugger_offset +0000000120197e80 T m88k_end_epilogue +0000000120197cf0 T m88k_end_prologue +0000000120198160 T m88k_expand_epilogue +0000000120194880 T m88k_expand_prologue +00000001201ffb4c S m88k_fp_offset +00000001201987f0 T m88k_function_arg +00000001201ffb48 S m88k_function_number +00000001201ffb40 S m88k_gp_threshold +0000000120194400 T m88k_layout_frame +00000001201fecd0 G m88k_pound_sign +00000001201ffb44 S m88k_prologue_done +0000000120200a10 S m88k_short_data +00000001201ffb50 S m88k_stack_size +00000001202009f0 S m88k_version +00000001202009f8 S m88k_volatile_code +00000001201eb4a8 d m_options +0000000120036b90 T main +0000000120200028 S main_input_filename +0000000120197800 T mak_mask_p +000000012011f8b0 t make_compound_operation +00000001200a1df0 T make_decl_rtl +000000012011ed90 t make_extraction +0000000120122800 t make_field_assignment +00000001200a1880 T make_function_rtl +00000001200b4bf0 T make_insn_raw +00000001200bb910 t make_nan +000000012003d170 T make_node +000000012000b790 T make_pointer_declarator +000000012015c790 t make_return_insns +00000001200b46f0 T make_safe_from +0000000120049170 T make_signed_type +0000000120091e70 T make_tree +000000012003e220 T make_tree_vec +00000001200492c0 T make_unsigned_type +00000001200a89c0 T make_var_volatile +000000012001f3c0 T mark_addressable +0000000120139ec0 T mark_elimination +000000012014b680 T mark_home_live +00000001200e3f10 t mark_jump_label +000000012010ecc0 t mark_label_ref +0000000120134950 t mark_life +0000000120100be0 t mark_loop_jump +00000001200e7250 t mark_modified_reg +0000000120152c40 t mark_not_eliminable +0000000120156280 t mark_referenced_resources +0000000120139030 t mark_reg_clobber +0000000120139220 t mark_reg_conflicts +0000000120139370 t mark_reg_death +00000001201394c0 t mark_reg_live_nc +00000001200b3d50 T mark_reg_pointer +0000000120138df0 t mark_reg_store +0000000120152e70 t mark_reload_reg_in_use +000000012014b750 t mark_scratch_live +000000012006a560 T mark_seen_cases +0000000120110e70 t mark_set_1 +0000000120110d50 t mark_set_regs +0000000120156860 t mark_set_resources +00000001200df8d0 T mark_stores +0000000120158370 t mark_target_live_regs +0000000120061e00 T mark_temp_addr_taken +0000000120111510 t mark_used_regs +000000012012a230 t mark_used_regs_combine +0000000120063640 T mark_varargs +000000012008c9c0 t mask_rtx +00000001201ff788 s max_allocno +00000001201ffb0c s max_block_depth +00000001201ff42c s max_elements_made +00000001201eb3f4 d max_from_align +00000001201ff320 s max_jump_chain +00000001200b3db0 T max_label_num +00000001201ff44c s max_loop_num +00000001201ff448 s max_luid +0000000120200930 S max_parallel +00000001201ff050 s max_parm_reg +00000001201ff2e8 s max_parm_reg +0000000120062d10 T max_parm_reg_num +00000001201ffab0 s max_priority +00000001201ff358 s max_qty +00000001201ff354 s max_reg +0000000120200830 S max_reg_before_loop +00000001200b3d90 T max_reg_num +00000001202008a4 S max_regno +0000000120200880 S max_scratch +0000000120200158 S max_stack_depth +00000001201ff408 s max_uid +00000001201ff978 s max_uid +00000001201ff5b8 s max_uid_cuid +00000001201ff4f8 s max_uid_for_flow +0000000120200868 S max_uid_for_loop +000000012020014c S maximum_field_alignment +00000001201fed24 s maxtoken +0000000120206c8c b may_move_cost +00000001201ff488 s may_not_optimize +00000001200aef80 T may_trap_p +0000000120016f60 T maybe_build_cleanup +0000000120006ef0 T maybe_building_objc_message_expr +0000000120106830 t maybe_eliminate_biv +00000001201069c0 t maybe_eliminate_biv_1 +0000000120006ec0 T maybe_objc_check_decl +0000000120006ed0 T maybe_objc_comptypes +0000000120006ee0 T maybe_objc_method_name +00000001202000c0 S maybepermanent_firstobj +000000012020bdf0 B maybepermanent_obstack +0000000120190250 t mem100_unit_blockage +000000012018c440 T mem100_unit_blockage_range +0000000120190b80 t mem100_unit_conflict_cost +000000012018c1d0 T mem100_unit_ready_cost +000000012018fca0 t mem110_unit_blockage +000000012018be80 T mem110_unit_blockage_range +000000012018bc10 T mem110_unit_ready_cost +00000001201ff5d0 s mem_last_set +0000000120200568 S memcmp_libfunc +0000000120200520 S memcpy_libfunc +0000000120207540 b memlocs +0000000120093c80 T memory_address +00000001200956f0 T memory_address_noforce +00000001201716e0 T memory_address_p +0000000120173730 T memory_operand +0000000120131600 t memref_referenced_p +0000000120160a20 t memrefs_conflict_p +0000000120200420 S memset_libfunc +00000001200e77c0 t mention_regs +00000001200f5390 t merge_equiv_classes +000000012012cba0 t merge_outer_ops +00000001201ff23c S merror +0000000120200a88 b message.0 +00000001201e740e d message.4 +000000012002d590 T min_precision +00000001201fee04 s missing_braces_mentioned +00000001200cee50 t mod_fund_type_attribute +00000001200cf2c0 t mod_u_d_type_attribute +00000001201e9488 D mode_class +0000000120173e40 T mode_dependent_address_p +0000000120049050 T mode_for_size +00000001201eb3d0 d mode_from_align +0000000120173e50 T mode_independent_operand +00000001201e93a0 D mode_name +00000001201e94fc D mode_size +000000012020bf38 B mode_to_const_map +000000012020bfac B mode_to_load_map +000000012020c094 B mode_to_store_map +00000001201e9570 D mode_unit_size +00000001201e95e4 D mode_wider_mode +000000012014ac70 t modes_equiv_for_class_p +00000001200ad550 T modified_between_p +00000001200ad830 T modified_in_p +00000001201ff340 s modified_mem +00000001201ff338 s modified_regs +00000001202000e0 S momentary_firstobj +00000001202000a8 S momentary_function_firstobj +000000012020bb28 B momentary_obstack +0000000120200118 S momentary_stack +00000001201928e0 T mostly_false_jump +0000000120156f70 t mostly_true_jump +0000000120200618 S mov_optab +0000000120082310 T move_block_from_reg +0000000120082240 T move_block_to_reg +0000000120082c80 t move_by_pieces +0000000120071640 t move_by_pieces_1 +0000000120071540 t move_by_pieces_ninsns +000000012006f470 T move_cleanups_up +0000000120206bc8 b move_cost +000000012012a4e0 t move_deaths +00000001200fef90 t move_movables +0000000120197240 T move_operand +00000001201ff490 s moved_once +000000012020c020 B movstr_optab +00000001202005e8 S movstrict_optab +00000001200bb870 t mtherr +00000001202039c8 b mul_cost +000000012004a0a0 T mul_double +0000000120203b24 b mul_highpart_cost +0000000120203ab0 b mul_widen_cost +00000001201ffbbc s n.3 +00000001202008b0 S n_basic_blocks +0000000120200958 S n_earlyclobbers +00000001201ff428 s n_elements_made +00000001201ff848 s n_memlocs +0000000120200900 S n_non_fixed_regs +00000001201ff668 s n_occurrences +0000000120145880 T n_occurrences +00000001202009a4 S n_regs_saved +00000001201ff830 s n_regs_set +0000000120200954 S n_reloads +00000001201ff844 s n_replacements +00000001201ff8a0 s n_spills +00000001201ff478 s n_times_set +00000001201ff480 s n_times_used +00000001201fed38 s name.2 +00000001201fedb0 s named_labels +00000001200a8700 T named_section +0000000120200388 S nedf2_libfunc +00000001201fefe8 s need_error_newline +0000000120055d70 T neg_double +00000001202005d0 S neg_optab +00000001201ff13c s negate_cost +0000000120093010 T negate_rtx +0000000120200690 S nehf2_libfunc +0000000120200680 S nesf2_libfunc +00000001202002b0 S nesting_depth +00000001202002a0 S nesting_stack +0000000120200350 S netf2_libfunc +00000001201ff8f8 s new_asm_operands_vec +00000001200f5100 t new_basic_block +00000001201feca8 g new_block +000000012016a0d0 t new_insn_dead_notes +000000012014ae20 t new_spill_reg +00000001201fed20 s newline_warning.1 +00000001201ff5ec s newpat_used_regs +00000001202004c8 S nexf2_libfunc +00000001200b4ab0 T next_active_insn +00000001202009a8 S next_block_index +00000001201ff254 s next_block_number +00000001201fec88 g next_block_number +00000001201ff004 s next_decl_uid +00000001200b4920 T next_insn +00000001200b4b90 T next_label +00000001200e6ed0 T next_nondeleted_insn +00000001200b49d0 T next_nonnote_insn +00000001201ff260 s next_pubname_number +00000001201ff35c s next_qty +00000001201ff6b0 s next_qty +00000001200b4a30 T next_real_insn +00000001201fec38 g next_type_uid +00000001201fec8c g next_unused_dienum +00000001201fec08 g nextchar +00000001201ff020 s nlab.0 +00000001201ffbb0 s nlab.0 +0000000120134bb0 t no_conflict_p +00000001201ff7f8 s no_global_alloc_regs +00000001200afdb0 T no_labels_between_p +00000001201ff21c s no_line_numbers +00000001200563a0 T non_lvalue +00000001201734b0 T nonimmediate_operand +00000001201ea570 d nonleaf.1 +00000001202001b0 S nonlocal_goto_handler_slot +0000000120200220 S nonlocal_goto_stack_level +0000000120062ae0 T nonlocal_label_rtx_list +0000000120200268 S nonlocal_labels +0000000120173540 T nonmemory_operand +0000000120123780 t nonzero_bits +00000001201ff638 s nonzero_bits_mode +00000001201ff648 s nonzero_sign_valid +00000001201078e0 t note_addr_stored +00000001201ff4b0 s note_insn +00000001201e9a70 D note_insn_name +00000001201ffa10 s note_list +00000001200f2a60 t note_mem_written +00000001200dfe50 t note_modified_parmregs +00000001200ae350 T note_stores +00000001201ffb80 s nregs +00000001200436a0 T nreverse +00000001201ffdc8 S null_pointer_node +0000000120197c50 T null_prologue +00000001201ffb30 s num_changes +000000012018d780 T num_delay_slots +00000001201ff8d0 s num_eliminable +0000000120209530 b num_filled_delays +0000000120209520 b num_insns_needing_delays +00000001201ff8e8 s num_labels +00000001201ff4a4 s num_mem_sets +00000001201ff4a0 s num_movables +00000001201ff8cc s num_not_at_initial_offset +00000001201ff330 s num_same_regs +00000001201ff510 s num_scratch +0000000120124310 t num_sign_bit_copies +0000000120173000 T num_validated_changes +00000001201ffb84 s nxregs +000000012003ca00 T oballoc +00000001201fef6c S obey_regdecls +0000000120042310 T obfree +00000001200423e0 T object_permanent_p +00000001202000d0 S obstack_stack +0000000120201200 b obstack_stack_obstack +0000000120197a60 T odd_relop +00000001201ff8e0 s offsets_at +00000001201ff8d8 s offsets_known_at +0000000120173b60 T offsettable_address_p +0000000120173a80 T offsettable_memref_p +0000000120173af0 T offsettable_nonstrict_memref_p +00000001201ff8f0 s old_asm_operands_vec +00000001201ffa28 s old_live_regs +0000000120200348 S one_cmpl_optab +0000000120206d50 b op_costs +000000012003b850 t open_dump_file +000000012004b950 T operand_equal_p +00000001200b1df0 T operand_subword +00000001200b41c0 T operand_subword_force +000000012013ce20 T operands_match_p +00000001201ec06c D optab_bit_and_expr +00000001201ec09c D optab_bit_ior_expr +00000001201ec544 D optab_bit_not_expr +00000001201ec0cc D optab_bit_xor_expr +00000001201ec41c D optab_eq_expr +00000001201ec2fc D optab_ge_expr +00000001201ec38c D optab_gt_expr +00000001201ec26c D optab_le_expr +00000001201ec0fc D optab_lshift_expr +00000001201ec1dc D optab_lt_expr +00000001201ebe9c D optab_minus_expr +00000001201ebf0c D optab_mult_expr +00000001201ec48c D optab_ne_expr +00000001201ec4fc D optab_negate_expr +00000001201ebe2c D optab_plus_expr +00000001201ec650 D optab_postdecrement_expr +00000001201ec6b8 D optab_postincrement_expr +00000001201ec580 D optab_predecrement_expr +00000001201ec5e8 D optab_preincrement_expr +00000001201ec02c D optab_rdiv_expr +00000001201ec14c D optab_rshift_expr +00000001201ebf8c D optab_trunc_div_expr +00000001201ebfdc D optab_trunc_mod_expr +00000001201ec19c D optab_truth_and_expr +00000001201ec568 D optab_truth_not_expr +00000001201ec1bc D optab_truth_or_expr +00000001201fec18 G optimize +000000012005c2c0 t optimize_bit_field +0000000120056ff0 t optimize_bit_field_compare +0000000120135250 t optimize_reg_copy_1 +0000000120135790 t optimize_reg_copy_2 +000000012015d5d0 t optimize_skip +000000012014d780 t order_regs_for_reload +00000001201ff2f0 s orig_asm_operands_vector +00000001201ff098 s out_arg_offset +00000001201eb388 d out_rcs_id +00000001202001b8 S outer_function_chain +00000001201ff1c0 s outfile +000000012017d430 t output_107 +000000012017d460 t output_108 +000000012017d1b0 t output_11 +000000012017d490 t output_114 +000000012017d4c0 t output_117 +000000012017d230 t output_12 +000000012017d4f0 t output_120 +000000012017d520 t output_121 +000000012017d550 t output_123 +000000012017d580 t output_126 +000000012017d5b0 t output_127 +000000012017d5e0 t output_129 +000000012017d610 t output_131 +000000012017d640 t output_132 +000000012017d670 t output_134 +000000012017d6a0 t output_147 +000000012017d6d0 t output_149 +000000012017d700 t output_151 +000000012017d730 t output_154 +000000012017d760 t output_156 +000000012017d790 t output_158 +000000012017d7c0 t output_169 +000000012017d7f0 t output_223 +000000012017d820 t output_225 +000000012017d960 t output_228 +000000012017d990 t output_230 +000000012017dad0 t output_233 +000000012017db00 t output_235 +000000012017dc40 t output_245 +000000012017dc70 t output_247 +000000012017dca0 t output_249 +000000012017dcd0 t output_252 +000000012017dd00 t output_254 +000000012017dd70 t output_256 +000000012017dde0 t output_257 +000000012017de50 t output_258 +000000012017dec0 t output_259 +000000012017dfb0 t output_261 +000000012017dfe0 t output_262 +000000012017e010 t output_264 +000000012017e040 t output_269 +000000012017e080 t output_271 +000000012017e0b0 t output_273 +000000012017e0e0 t output_281 +000000012017d2b0 t output_46 +000000012017d380 t output_58 +000000012017d3b0 t output_61 +000000012017d3e0 t output_94 +000000012016edc0 T output_addr_const +000000012016ed70 T output_address +00000001200a7340 t output_addressed_constants +0000000120196ed0 T output_and +00000001200cf650 t output_array_type_die +00000001201941b0 T output_ascii +000000012016e3b0 T output_asm_insn +000000012016ebc0 T output_asm_label +00000001200d6fa0 t output_block +0000000120198690 T output_block_profiler +00000001200d9460 t output_bound_representation +00000001201fef50 S output_bytecode +0000000120192610 T output_call +00000001200d3530 t output_compile_unit_die +00000001200a74b0 T output_constant +00000001200a5ff0 T output_constant_def +00000001200a6550 t output_constant_def_contents +00000001200a6ff0 T output_constant_pool +00000001200a79b0 t output_constructor +00000001200ca140 t output_decl +00000001200c9f60 t output_decls_for_scope +00000001200a94c0 T output_deferred_addressed_constants +0000000120164770 T output_dependence +00000001200d6db0 t output_die +00000001200d98c0 t output_enumeral_list +00000001200d0550 t output_enumeration_type_die +0000000120039010 T output_file_directive +0000000120192b90 T output_file_start +00000001200d0ad0 t output_formal_parameter_die +00000001201982d0 T output_function_block_profiler +0000000120195060 T output_function_profiler +00000001200d0f40 t output_global_subroutine_die +00000001200d1b20 t output_global_variable_die +0000000120026240 t output_init_element +00000001200df520 T output_inline_function +00000001200cfef0 t output_inlined_enumeration_type_die +00000001200d0110 t output_inlined_structure_type_die +00000001200d8fb0 t output_inlined_subroutine_die +00000001200d0330 t output_inlined_union_type_die +0000000120196f90 T output_ior +0000000120197be0 T output_label +00000001200d2050 t output_label_die +00000001200d8b40 t output_lexical_block_die +0000000120196c00 T output_load_const_dimode +0000000120196b00 T output_load_const_double +0000000120196a80 T output_load_const_float +0000000120196990 T output_load_const_int +00000001200d4cd0 t output_local_subroutine_die +00000001200d2540 t output_local_variable_die +00000001200c8e30 t output_mem_loc_descriptor +00000001200d2a60 t output_member_die +000000012016ecd0 t output_operand +000000012016f9b0 T output_operand_lossage +00000001200d6d60 t output_padded_null_die +0000000120023cd0 t output_pending_init_elements +00000001200d2fd0 t output_ptr_to_mbr_type_die +0000000120038f10 T output_quoted_string +00000001201ff86c s output_reloadnum +00000001200cfaa0 t output_set_type_die +000000012016e090 t output_source_line +00000001200d43b0 t output_string_type_die +00000001200d46e0 t output_structure_type_die +00000001200d58b0 t output_subroutine_type_die +00000001200c97e0 t output_type +00000001200d5e50 t output_typedef_die +00000001200d6370 t output_union_type_die +00000001200d6960 t output_unspecified_parameters_die +0000000120197020 T output_xor +000000012002cda0 T overflow_warning +00000001201febf8 g p.0 +000000012005ec10 t pad_below +000000012005eb40 t pad_to_arg_alignment +00000001201ff040 s parm_birth_insn +00000001201ff058 s parm_reg_stack_loc +00000001201ff2e0 s parmdecl_map +0000000120017070 T parmlist_tags_warning +000000012020006c S parse_time +000000012001bc20 T parser_build_binary_op +0000000120197960 T partial_ccmode_register_operand +00000001201eb678 d patterns.3 +0000000120197bc0 T pc_or_label_ref +0000000120200770 S pc_rtx +00000001201fef64 S pedantic +000000012001f1f0 t pedantic_lvalue_warning +0000000120200150 S pedantic_lvalues +0000000120056480 T pedantic_non_lvalue +0000000120031860 T pedwarn +0000000120021cf0 T pedwarn_init +0000000120031df0 T pedwarn_with_decl +0000000120032230 T pedwarn_with_file_and_line +00000001202156c8 B peep_operand +0000000120156270 T peephole +00000001201ffb10 s pending_blocks +00000001201ff110 s pending_chain +00000001201ff988 s pending_dead_regs +00000001201ffdd8 S pending_invalid_xref +00000001201ffdb8 S pending_invalid_xref_file +00000001201ffc60 S pending_invalid_xref_line +00000001201ffa78 s pending_lists_length +00000001201ffa58 s pending_read_insns +00000001201ffa60 s pending_read_mems +00000001201ff298 s pending_sibling_stack +00000001201ff2a0 s pending_siblings +00000001201ff2a4 s pending_siblings_allocated +00000001201ff018 s pending_sizes +00000001202002e0 S pending_stack_adjust +00000001201ff2b4 s pending_types +00000001201ff2b0 s pending_types_allocated +00000001201ff2a8 s pending_types_list +00000001201ffa68 s pending_write_insns +00000001201ffa70 s pending_write_mems +0000000120016e60 T pending_xref_error +000000012003cbe0 T perm_calloc +0000000120043860 T perm_tree_cons +000000012003caf0 T permalloc +000000012003c480 T permanent_allocation +000000012020bd98 B permanent_obstack +00000001200386e0 T pfatal_with_name +0000000120198a50 T pic_address_needs_scratch +0000000120200768 S pic_offset_table_rtx +0000000120039510 t pipe_closed +00000001201ff0f0 s placeholder_list.0 +00000001200c0440 t plain_type_1 +00000001200952f0 T plus_constant_for_output_wide +0000000120093810 T plus_constant_wide +000000012001e270 t pointer_diff +000000012001deb0 t pointer_int_sum +00000001201ff1a0 s pool_offset +0000000120017b10 T pop_c_function_context +0000000120038df0 T pop_float_handler +0000000120061c90 T pop_function_context +00000001200596f0 T pop_function_context_from +0000000120023580 T pop_init_level +000000012002f420 T pop_iterator_stack +000000012000d3d0 T pop_label_level +00000001200424e0 T pop_momentary +0000000120042570 T pop_momentary_nofree +0000000120042200 T pop_obstacks +0000000120062100 T pop_temp_slots +00000001200b63b0 T pop_topmost_sequence +000000012000cfb0 T poplevel +000000012000b9c0 T position_after_white_space +000000012014a6a0 t possible_group_p +0000000120134a40 t post_mark_life +0000000120161fb0 t potential_hazard +0000000120207ed0 b potential_reload_regs +0000000120109670 t precondition_loop_p +000000012007e2d0 t preexpand_calls +00000001201ff690 s prefclass +000000012019dce0 T preferred_typecode +00000001201fece8 s prefix_attributes +0000000120089940 T prepare_call_address +0000000120164c60 t prepare_unit +00000001201001f0 t prescan_loop +000000012003c6b0 T preserve_data +000000012003c790 T preserve_initializer +0000000120042420 T preserve_momentary +0000000120194ca0 t preserve_registers +0000000120061f10 T preserve_rtl_expr_result +000000012006f0c0 T preserve_subexpressions_p +000000012005a270 T preserve_temp_slots +00000001200b4b20 T prev_active_insn +00000001201fec94 g prev_file_entry_num.1 +00000001201ff3a0 s prev_insn +00000001200b4bc0 T prev_label +00000001201fecd8 g prev_lineno.1 +00000001200b4a00 T prev_nonnote_insn +00000001200b4a70 T prev_real_insn +00000001200b4970 T previous_insn +00000001201ff600 s previous_num_undos +00000001201ff280 s primary_filename +00000001201e7428 d print_char_table +00000001201fec28 G print_error_function +00000001200162f0 T print_lang_decl +0000000120016310 T print_lang_identifier +0000000120006e90 T print_lang_statistics +0000000120016300 T print_lang_type +00000001200458e0 T print_node +0000000120045560 T print_node_brief +000000012003cde0 T print_obstack_name +0000000120045470 T print_obstack_statistics +0000000120195a90 T print_operand +0000000120196430 T print_operand_address +00000001200ad020 T print_rtl +00000001200ac610 t print_rtx +0000000120038150 t print_switch_values +0000000120038570 T print_time +0000000120162160 t priority +00000001200240c0 T process_init_element +0000000120105c10 t product_cheap_p +00000001201fffec S profile_block_flag +00000001201fef60 S profile_flag +00000001202009b0 S profile_label_no +00000001201ffec0 S progname +00000001201ff0a0 s prologue +00000001201ffb98 s prologue_marked +0000000120095b10 T promote_mode +000000012010ff70 t propagate_block +0000000120070290 T protect_from_queue +00000001201377f0 t prune_preferences +00000001202006f0 S ptr_mode +00000001201ffcd0 S ptr_type_node +00000001201ffbd0 s ptrconsts +00000001201ffc58 S ptrdiff_type_node +00000001200434e0 T purpose_member +0000000120082740 T push_block +0000000120017a20 T push_c_function_context +0000000120038d60 T push_float_handler +0000000120061c70 T push_function_context +00000001200593c0 T push_function_context_to +0000000120022dd0 T push_init_level +000000012002ec40 T push_iterator_stack +0000000120016830 T push_label_level +000000012003d050 T push_momentary +000000012003c210 T push_obstacks +000000012003c360 T push_obstacks_nochange +00000001201736d0 T push_operand +0000000120016f70 T push_parm_decl +000000012013a430 t push_reload +0000000120145fe0 t push_secondary_reload +00000001200620e0 T push_temp_slots +00000001200b6220 T push_to_sequence +00000001200b62f0 T push_topmost_sequence +00000001200697b0 T pushcase +0000000120069ba0 T pushcase_range +000000012000d580 T pushdecl +00000001200169a0 T pushdecl_top_level +00000001200165f0 T pushlevel +00000001200168c0 T pushtag +0000000120048eb0 T put_pending_sizes +000000012005a830 t put_reg_into_stack +000000012005a5a0 T put_var_into_stack +00000001201ffba0 s pwd.0 +00000001201ff990 s q_ptr +00000001201ff994 s q_size +00000001201ff718 s qty_alternate_class +00000001201ff6f0 s qty_birth +00000001201ff728 s qty_changes_size +00000001201331b0 t qty_compare +0000000120135d80 t qty_compare_1 +00000001201ff388 s qty_comparison_code +00000001201ff390 s qty_comparison_const +00000001201ff398 s qty_comparison_qty +00000001201ff378 s qty_const +00000001201ff380 s qty_const_insn +00000001201ff6f8 s qty_death +00000001201ff360 s qty_first_reg +00000001201ff730 s qty_first_reg +00000001201ff368 s qty_last_reg +00000001201ff6e8 s qty_min_class +00000001201ff370 s qty_mode +00000001201ff708 s qty_mode +00000001201ff710 s qty_n_calls_crossed +00000001201ff6e0 s qty_n_refs +00000001201ff6c0 s qty_phys_copy_sugg +00000001201ff6d0 s qty_phys_num_copy_sugg +00000001201ff6d8 s qty_phys_num_sugg +00000001201ff6b8 s qty_phys_reg +00000001201ff6c8 s qty_phys_sugg +00000001201ff720 s qty_scratch_rtx +00000001201ff700 s qty_size +0000000120133350 t qty_sugg_compare +0000000120135b10 t qty_sugg_compare_1 +0000000120082bb0 t queued_subexp_p +00000001201fef70 S quiet_flag +0000000120058ff0 t range_test +00000001201690b0 t rank_for_schedule +0000000120205f6e b rbit +00000001201eb0d8 d rcs_id.0 +00000001201ff234 s re +0000000120164430 T read_dependence +00000001200ab100 T read_rtx +00000001200aaf00 T read_skip_spaces +000000012000bd20 t readescape +00000001200a8640 T readonly_data_section +000000012001f260 T readonly_warning +0000000120043160 T real_onep +00000001201978b0 T real_or_0_operand +0000000120197080 T real_power_of_2_operand +00000001200432e0 T real_twop +0000000120042870 T real_value_from_int_cst +0000000120056130 T real_value_truncate +0000000120043080 T real_zerop +0000000120043460 T really_constant_p +00000001200328e0 T really_sorry +00000001200229e0 T really_start_incremental_init +00000001201ff230 s rebit +000000012017a390 T recog +00000001201743e0 T recog_1 +0000000120174bf0 T recog_2 +0000000120175520 T recog_3 +0000000120175ca0 T recog_4 +0000000120176f90 T recog_5 +00000001201792d0 T recog_6 +0000000120215768 B recog_dup_loc +00000001202009d8 S recog_dup_num +00000001201260e0 t recog_for_combine +0000000120172e50 T recog_memoized +0000000120215718 B recog_operand +0000000120215778 B recog_operand_loc +0000000120006f00 T recognize_objc_keyword +000000012012f5f0 t record_address_regs +0000000120103860 t record_biv +0000000120138d10 t record_conflicts +00000001200aa180 t record_constant +00000001200a5640 t record_constant_1 +00000001200aa490 t record_constant_rtx +00000001201295b0 t record_dead_and_set_regs +000000012012cf60 t record_dead_and_set_regs_1 +00000001201ff670 s record_dead_insn +00000001200fdd00 T record_excess_regs +000000012002b190 T record_function_format +0000000120103a90 t record_giv +0000000120107a90 t record_initial +00000001200f1b10 t record_jump_cond +000000012013a2d0 t record_one_conflict +000000012012e7c0 t record_reg_classes +00000001201290e0 t record_value_for_reg +00000001201ff410 s recorded_label_ref +000000012000dfc0 t redeclaration_error_message +00000001200e4ec0 T redirect_exp +00000001200e7000 T redirect_jump +00000001200e5150 t redirect_tablejump +0000000120157570 t redundant_insn +0000000120143e80 T refers_to_mem_for_reload_p +00000001200e9f90 t refers_to_mem_p +00000001200e99e0 t refers_to_p +0000000120143900 T refers_to_regno_for_reload_p +00000001200adaa0 T refers_to_regno_p +00000001201ea138 D reg_alloc_order +00000001201ff790 s reg_allocno +0000000120130460 T reg_alternate_class +00000001202008b8 S reg_basic_block +000000012012ab60 t reg_bitfield_target_p +0000000120200870 S reg_biv_class +00000001202008d0 S reg_changes_size +0000000120213bb4 B reg_class_contents +00000001201ea6e8 d reg_class_names +00000001201ea7c8 d reg_class_names.0 +00000001201ea068 d reg_class_names.1 +0000000120213c2c B reg_class_size +00000001202137e8 B reg_class_subclasses +0000000120130720 T reg_class_subset_p +0000000120213af0 B reg_class_subunion +0000000120213c48 B reg_class_superclasses +00000001202138ac B reg_class_superunion +000000012012fde0 T reg_classes_intersect_p +000000012010d990 t reg_dead_after_loop +0000000120129fa0 t reg_dead_at_p +000000012012d120 t reg_dead_at_p_1 +00000001201ff67c s reg_dead_endregno +00000001201ff680 s reg_dead_flag +00000001201ff678 s reg_dead_regno +00000001201ea720 d reg_eliminate +0000000120200988 S reg_equiv_address +0000000120200990 S reg_equiv_constant +00000001201ff898 s reg_equiv_init +0000000120200970 S reg_equiv_mem +0000000120200968 S reg_equiv_memory_loc +0000000120173e80 T reg_fits_class_p +00000001201ff880 s reg_has_output_reload +00000001200fdf70 t reg_in_basic_block_p +00000001201ff3d0 s reg_in_table +0000000120133f10 t reg_is_born +00000001201ff888 s reg_is_output_reload +0000000120135f50 t reg_is_set +0000000120200828 S reg_iv_info +0000000120200838 S reg_iv_type +00000001201ffa48 s reg_known_equiv_p +00000001201ffa40 s reg_known_value +00000001201ffa50 s reg_known_value_size +00000001201ff5c0 s reg_last_death +00000001201ff878 s reg_last_reload_reg +00000001201ff5c8 s reg_last_set +00000001201ff620 s reg_last_set_invalid +00000001201ff610 s reg_last_set_label +00000001201ff650 s reg_last_set_mode +00000001201ff658 s reg_last_set_nonzero_bits +00000001201ff660 s reg_last_set_sign_bit_copies +00000001201ff618 s reg_last_set_table_tick +00000001201ff608 s reg_last_set_value +00000001201ff9b8 s reg_last_sets +00000001201ff9b0 s reg_last_uses +0000000120200888 S reg_live_length +00000001201ff2c8 s reg_map +00000001201ff890 s reg_max_ref_width +00000001201ff7b0 s reg_may_share +0000000120133d40 t reg_meets_class_p +00000001200ad0f0 T reg_mentioned_p +0000000120200898 S reg_n_calls_crossed +0000000120200890 S reg_n_deaths +00000001202008c0 S reg_n_refs +0000000120200918 S reg_n_sets +00000001201ea270 D reg_names +00000001201ff3b8 s reg_next_eqv +00000001201ff738 s reg_next_in_qty +00000001201ff518 s reg_next_use +00000001201ff630 s reg_nonzero_bits +00000001201e9ae0 D reg_note_name +00000001201ff748 s reg_offset +00000001201974e0 T reg_or_0_operand +0000000120197820 T reg_or_bbx_mask_operand +00000001201ff570 s reg_order +0000000120143cd0 T reg_overlap_mentioned_for_reload_p +00000001200ade60 T reg_overlap_mentioned_p +00000001201ff9c0 s reg_pending_sets +00000001201ff9c8 s reg_pending_sets_all +0000000120130430 T reg_preferred_class +00000001201ff3c0 s reg_prev_eqv +00000001201ff3b0 s reg_qty +00000001201ff740 s reg_qty +0000000120213970 B reg_raw_mode +00000001200aff00 T reg_referenced_between_p +00000001200ad320 T reg_referenced_p +00000001202076d0 b reg_reloaded_contents +00000001202077d0 b reg_reloaded_insn +0000000120200940 S reg_renumber +00000001202091b0 b reg_restore_code +00000001201fec48 G reg_rtx_no +0000000120208eb0 b reg_save_code +00000001201304c0 T reg_scan +000000012012f920 t reg_scan_mark_refs +00000001200afff0 T reg_set_between_p +00000001201ff1d0 s reg_set_flag +00000001200b0600 T reg_set_last +00000001200b0d20 t reg_set_last_1 +00000001201ff1e0 s reg_set_last_first_regno +00000001201ff1e4 s reg_set_last_last_regno +00000001201ff1d4 s reg_set_last_unknown +00000001201ff1d8 s reg_set_last_value +00000001200b0140 T reg_set_p +00000001200b0cc0 t reg_set_p_1 +00000001201ff1c8 s reg_set_reg +00000001201ff640 s reg_sign_bit_copies +00000001201ff3c8 s reg_tick +00000001200afdf0 T reg_used_between_p +00000001201ff568 s reg_where_born +00000001201ff560 s reg_where_dead +000000012012db20 T regclass +00000001201304a0 T regclass_init +00000001201731f0 T register_operand +0000000120112800 T regno_clobbered_at_setjmp +0000000120145180 T regno_clobbered_p +00000001202008f0 S regno_first_uid +00000001202008f8 S regno_last_note_uid +0000000120200908 S regno_last_uid +0000000120200738 S regno_pointer_flag +00000001202006f8 S regno_pointer_flag_length +0000000120200760 S regno_reg_rtx +00000001202088b0 b regno_save_mem +00000001202085b0 b regno_save_mode +0000000120112780 T regno_uninitialized +000000012016ac40 t regno_use_in +00000001201ff580 s regs_change_size +00000001202156d8 B regs_ever_live +0000000120207f50 b regs_explicitly_used +00000001201ff3e0 s regs_invalidated_by_call +00000001201ff578 s regs_live +00000001201ff750 s regs_live +00000001201ff758 s regs_live_at +00000001202008e0 S regs_live_at_setjmp +00000001202008a8 S regs_may_share +00000001201ff828 s regs_set +00000001201ff7f0 s regs_someone_prefers +00000001201ff800 s regs_used_so_far +00000001202008a0 S regset_bytes +00000001202008e8 S regset_size +00000001200e8e90 t rehash_using_reg +000000012000b8f0 T reinit_parse_for_function +000000012015ba10 t relax_delay_slots +0000000120147750 T reload +000000012014db60 t reload_as_needed +00000001202009d0 S reload_completed +0000000120214818 B reload_earlyclobbers +0000000120200960 S reload_first_uid +0000000120200980 S reload_firstobj +0000000120214200 B reload_in +0000000120215580 B reload_in_optab +00000001201ff870 S reload_in_progress +0000000120214e08 B reload_in_reg +0000000120214868 B reload_inc +00000001202153a0 B reload_inheritance_insn +0000000120214fe8 B reload_inherited +00000001202143e0 B reload_inmode +0000000120208290 b reload_mode +000000012020095c S reload_n_operands +00000001202147dc B reload_nocombine +0000000120208380 b reload_nregs +00000001202155f8 B reload_obstack +00000001202144d0 B reload_opnum +00000001202146b0 B reload_optional +0000000120215650 B reload_order +0000000120213e40 B reload_out +0000000120215024 B reload_out_optab +0000000120214020 B reload_outmode +00000001202151c0 B reload_override_in +0000000120214b38 B reload_reg_class +0000000120152d80 t reload_reg_class_lower +00000001201537f0 t reload_reg_free_before_p +00000001201531c0 t reload_reg_free_p +0000000120153c50 t reload_reg_reaches_end_p +0000000120214c28 B reload_reg_rtx +00000001201ff900 s reload_reg_used +00000001201ff928 s reload_reg_used_at_all +00000001201ff930 s reload_reg_used_for_inherit +0000000120208510 b reload_reg_used_in_input +0000000120208470 b reload_reg_used_in_input_addr +00000001201ff918 s reload_reg_used_in_insn +00000001201ff908 s reload_reg_used_in_op_addr +00000001201ff910 s reload_reg_used_in_op_addr_reload +00000001201ff920 s reload_reg_used_in_other_addr +0000000120208560 b reload_reg_used_in_output +00000001202084c0 b reload_reg_used_in_output_addr +0000000120214a48 B reload_secondary_in_icode +00000001202146ec B reload_secondary_in_reload +0000000120214958 B reload_secondary_out_icode +0000000120213d50 B reload_secondary_out_reload +0000000120214110 B reload_secondary_p +00000001202150d0 B reload_spill_index +00000001202145c0 B reload_when_needed +00000001201ea6a0 d reload_when_needed_name +000000012014e650 t reloads_conflict +00000001201979e0 T relop +0000000120197ac0 T relop_no_unsigned +000000012010cb90 t remap_split_bivs +000000012006f3d0 T remember_end_note +000000012000b820 T remember_protocol_qualifiers +000000012012be00 T remove_death +00000001200f5250 t remove_from_table +00000001200e8db0 t remove_invalid_refs +00000001200b0b00 T remove_note +000000012005f400 T reorder_blocks +00000001200b4cd0 T reorder_insns +00000001200b4d70 T reorder_insns_with_line_notes +00000001201ff97c s reorg_pass_number +00000001201581f0 t reorg_redirect_jump +00000001200af410 T replace_regs +00000001201ff840 s replace_reloads +00000001200b0b70 T replace_rtx +0000000120207090 b replacements +00000001200389c0 T report_error_function +00000001200617b0 T reposition_prologue_and_epilogue_notes +0000000120024f80 T require_complete_type +00000001201fee8c s require_constant_elements +00000001201fee88 s require_constant_value +0000000120134d50 t requires_inout +00000001200b27e0 T reset_used_flags +0000000120032ef0 T rest_of_compilation +0000000120032a40 T rest_of_decl_compilation +00000001200390c0 T rest_of_type_compilation +00000001200df230 t restore_constants +00000001200b4580 T restore_emit_status +0000000120082170 T restore_expr_status +0000000120200250 S restore_machine_status +0000000120155ac0 t restore_referenced_regs +00000001200b31a0 T restore_reg_data +00000001200b32b0 t restore_reg_data_1 +000000012006e3a0 T restore_stmt_status +00000001200495c0 T restore_storage_status +000000012003c060 T restore_tree_status +00000001200a9670 T restore_varasm_status +000000012018abe0 T result_ready_cost +00000001200425d0 T resume_momentary +0000000120042190 T resume_temporary_allocation +0000000120139db0 T retry_global_alloc +00000001202001a0 S return_label +00000001200b4280 T reverse_comparison +00000001200e3c20 T reverse_condition +00000001201ffb74 s reversep.1 +0000000120128fd0 t reversible_comparison_p +000000012020b920 B ridpointers +00000001201fec5c g rlast +00000001201ff22e s rmbit +00000001201ff22c s rmsk +00000001201fec58 G rndprc +00000001200cecf0 t root_type +0000000120200308 S rotl_optab +0000000120200600 S rotr_optab +0000000120095c80 T round_push +000000012005f1b0 t round_trampoline_addr +00000001200490d0 T round_up +0000000120056050 T rrotate_double +0000000120055ea0 T rshift_double +00000001201feef8 S rtl_dump +00000001201feefc S rtl_dump_and_exit +00000001201fffe0 S rtl_dump_file +0000000120200190 S rtl_expr_chain +00000001200422d0 T rtl_in_current_obstack +00000001200422f0 T rtl_in_saveable_obstack +00000001202000e8 S rtl_obstack +00000001200aa6a0 T rtvec_alloc +00000001200af9c0 T rtx_addr_can_trap_p +00000001200afad0 T rtx_addr_varies_p +00000001200ac4c0 T rtx_alloc +00000001201e99f8 D rtx_class +00000001200e7360 T rtx_cost +00000001200fe8c0 t rtx_equal_for_loop_p +00000001201604d0 t rtx_equal_for_memref_p +00000001200e6340 T rtx_equal_for_thread_p +00000001202006ec S rtx_equal_function_value_matters +00000001200ae090 T rtx_equal_p +00000001201e9658 D rtx_format +00000001200ac5a0 T rtx_free +0000000120213340 B rtx_length +00000001201e9000 D rtx_name +00000001200e5350 T rtx_renumbered_equal_p +00000001200960d0 T rtx_to_tree_code +00000001200af710 T rtx_unstable_p +00000001200af860 T rtx_varies_p +00000001201ff228 s rw +00000001201458d0 T safe_from_earlyclobber +0000000120074f60 t safe_from_p +00000001200e93d0 t safe_hash +00000001201ff328 s same_regs +00000001201fff58 S save_argc +00000001201fff50 S save_argv +0000000120155370 T save_call_clobbered_regs +00000001200db2e0 t save_constants +00000001200b44e0 T save_emit_status +0000000120043d00 T save_expr +0000000120200260 S save_expr_regs +00000001200820a0 T save_expr_status +00000001201feef0 s save_exprs +00000001200da5d0 T save_for_inline_copying +00000001200db060 T save_for_inline_nocopy +0000000120200278 S save_machine_status +0000000120083fb0 t save_noncopied_parts +0000000120209d78 b save_regs +000000012006e2e0 T save_stmt_status +00000001200495b0 T save_storage_status +000000012003bdd0 T save_tree_status +00000001200a9620 T save_varasm_status +00000001200421d0 T saveable_allocation +00000001202000f8 S saveable_obstack +0000000120043900 T saveable_tree_cons +000000012003ccf0 T savealloc +00000001201ff100 s saveregs_value +00000001201ff1b0 s sawclose +00000001201ffb60 s sb_high +00000001201ffb68 s sb_low +00000001201ffb58 s sb_name +00000001201ffad8 s sbb_head +00000001201ffae0 s sbb_label_num +00000001201fecc0 g sbb_tail +00000001201e7768 d scan_char_table +00000001200fc970 t scan_loop +000000012014d5a0 t scan_paradoxical_subregs +00000001201fef24 S sched2_dump +00000001201fff80 S sched2_dump_file +00000001201fff78 S sched2_time +00000001201689d0 t sched_analyze +0000000120165080 t sched_analyze_1 +0000000120162450 t sched_analyze_2 +000000012016a620 t sched_analyze_insn +00000001201ffaa0 s sched_before_next_call +00000001201fef18 S sched_dump +00000001201fff30 S sched_dump_file +0000000120168d80 t sched_note_set +00000001201ff9a8 s sched_reg_live_length +00000001201ff9a0 s sched_reg_n_calls_crossed +00000001201ff998 s sched_reg_n_deaths +00000001201fffa8 S sched_time +0000000120165a80 t schedule_block +0000000120169250 t schedule_insn +00000001201631a0 T schedule_insns +0000000120169560 t schedule_select +000000012016a480 t schedule_unit +0000000120200938 S scratch_block +00000001201ff760 s scratch_index +0000000120200948 S scratch_list +0000000120200950 S scratch_list_length +0000000120173270 T scratch_operand +00000001200a8380 T sdata_section +00000001201fec80 G sdb_begin_function_line +00000001202064f8 b sdb_dims +00000001201ff24c s sdb_n_dims +00000001201fec84 g sdb_type_size +00000001200c4ef0 T sdbout_begin_block +00000001200c5510 T sdbout_begin_function +00000001200c6170 t sdbout_block +00000001200c52e0 T sdbout_end_block +00000001200c5a10 T sdbout_end_epilogue +00000001200c5770 T sdbout_end_function +00000001200c6070 T sdbout_init +00000001200c5c90 T sdbout_label +00000001200c6150 T sdbout_mark_begin_function +00000001200c2ea0 t sdbout_one_type +00000001200c66d0 t sdbout_parms +00000001200c2e50 t sdbout_queue_anonymous_type +00000001200c7cb0 t sdbout_reg_parms +00000001200c0a30 T sdbout_symbol +00000001200c25d0 T sdbout_toplevel_data +00000001200c6250 t sdbout_type +00000001200c6080 T sdbout_types +00000001202006a0 S sdiv_optab +00000001201ff130 s sdiv_pow2_cheap +0000000120200610 S sdivmod_optab +00000001201ffbb4 s section +000000012019ced0 t seg_defsym +000000012019d0e0 t seg_refsym +0000000120019cb0 T self_promoting_args_p +0000000120019d90 t self_promoting_type_p +00000001201ff220 s sequence_element_free_list +0000000120205f28 b sequence_result +00000001201ff1f8 S sequence_rtl_expr +0000000120200728 S sequence_stack +00000001201ffb70 s sequencep.0 +00000001201ff010 S set_alignment +0000000120016810 T set_block +00000001200e0010 t set_block_abstract_flags +00000001200dfec0 t set_block_origin_self +00000001200df9e0 T set_decl_abstract_flags +00000001200dffa0 t set_decl_origin_self +0000000120038d10 T set_float_handler +0000000120042790 T set_identifier_size +0000000120025950 T set_init_index +0000000120025b30 T set_init_label +000000012014b7f0 t set_label_offsets +00000001200b4870 T set_last_insn +00000001200b4490 T set_new_first_and_last_insn +00000001200b44b0 T set_new_first_and_last_label_num +00000001200e9ba0 t set_nonvarying_address_components +000000012012bf70 t set_nonzero_bits_and_sign_copies +0000000120139550 t set_preference +0000000120156150 t set_reg_live +0000000120037fe0 T set_target_switch +000000012000bba0 T set_yydebug +0000000120213170 B setcc_gen_code +0000000120063180 T setjmp_args_warning +0000000120063220 T setjmp_protect +00000001200632e0 T setjmp_protect_args +00000001200e6eb0 T sets_cc0_p +00000001201143f0 t setup_incoming_promotions +0000000120154f30 T setup_save_areas +0000000120016d60 T shadow_label +0000000120016ed0 T shadow_tag +0000000120010760 T shadow_tag_warned +00000001201fedb8 s shadowed_labels +0000000120203848 b shift_cost +00000001202038c8 b shiftadd_cost +0000000120203948 b shiftsub_cost +00000001201ffd38 S short_integer_type_node +00000001201ffd70 S short_unsigned_type_node +00000001201fffd8 S shorten_branch_time +000000012016c150 T shorten_branches +000000012002b730 T shorten_compare +00000001200aedf0 T side_effects_p +00000001200a0bc0 T sign_expand_binop +00000001201ffdf0 S signed_char_type_node +00000001200e6b20 T signed_condition +000000012020ada0 b signed_mode_to_code_map +00000001200251f0 T signed_or_unsigned_type +00000001200250e0 T signed_type +00000001201ffcc0 S signed_wchar_type_node +00000001200bd3a0 T significand_size +0000000120040f40 T simple_cst_equal +0000000120044bb0 T simple_cst_list_equal +00000001200e6c70 T simplejump_p +0000000120123360 t simplify_and_const_int +00000001200eaff0 T simplify_binary_operation +0000000120126f90 t simplify_comparison +0000000120104be0 t simplify_giv_expr +000000012011b950 t simplify_if_then_else +000000012011d980 t simplify_logical +00000001200ecbf0 t simplify_plus_minus +00000001200ed5c0 T simplify_relational_operation +0000000120119230 t simplify_rtx +000000012011cb90 t simplify_set +0000000120124b80 t simplify_shift_const +00000001200a96c0 T simplify_subtraction +00000001200ee0b0 T simplify_ternary_operation +00000001200ea450 T simplify_unary_operation +00000001202004e0 S sin_optab +00000001200b0230 T single_set +00000001201fec40 g size.1 +00000001201fec44 g size.2 +00000001201fec14 g size.3 +00000001200562a0 T size_binop +00000001202006e0 S size_directive_output +0000000120043950 T size_in_bytes +000000012004b850 T size_int +0000000120200138 S size_one_node +00000001202031e0 b size_table.0 +0000000120200130 S size_zero_node +0000000120200140 S sizetype +00000001200fe130 t skip_consec_insns +000000012000bbc0 t skip_white_space +00000001201ff43c s skipped_writes_memory +0000000120200410 S smax_optab +0000000120200558 S smin_optab +00000001202004b0 S smod_optab +00000001201ff134 s smod_pow2_cheap +00000001202004a8 S smul_highpart_optab +0000000120200660 S smul_optab +0000000120200540 S smul_widen_optab +0000000120032770 T sorry +00000001201fef4c S sorrycount +00000001201fec7c g source_label_number +00000001201e9d60 D spaces +00000001201fee08 s spelling +00000001201fee10 s spelling_base +00000001201fee18 s spelling_size +000000012014ada0 t spill_failure +000000012014d130 t spill_hard_reg +00000001201ff8c8 s spill_indirect_levels +0000000120207dd0 b spill_reg_order +00000001202079d0 b spill_reg_rtx +0000000120207bd0 b spill_reg_store +0000000120207e50 b spill_regs +0000000120207f90 b spill_stack_slot +0000000120208190 b spill_stack_slot_width +000000012017ab80 T split_1 +000000012016f4e0 T split_double +0000000120169db0 t split_hard_reg_notes +000000012017bb60 T split_insns +0000000120056580 t split_tree +00000001201ff4c8 s splittable_regs +00000001201ff4d0 s splittable_regs_updates +0000000120205fd0 b sqrndbit +0000000120200550 S sqrt_optab +00000001200e31d0 T squeeze_notes +00000001200957d0 T stabilize +000000012003f560 T stabilize_reference +000000012003fa50 T stabilize_reference_1 +00000001202002f0 S stack_arg_under_construction +00000001202002b8 S stack_block_stack +00000001202001f4 S stack_depth +0000000120200748 S stack_pointer_rtx +00000001201fef34 S stack_reg_dump +00000001201fff00 S stack_reg_dump_file +00000001201ffedc S stack_reg_time +0000000120200238 S stack_slot_list +00000001201ff118 s stack_usage_map +00000001201e8968 D standard_tree_code_length +00000001201e8b60 D standard_tree_code_name +00000001201e8578 D standard_tree_code_type +0000000120010a80 T start_decl +00000001200177b0 T start_enum +0000000120014be0 T start_function +0000000120042770 T start_identifier_warnings +0000000120022750 T start_init +0000000120209508 b start_of_epilogue_needs +00000001200b60d0 T start_sequence +00000001200b6170 T start_sequence_for_rtl_expr +00000001200174a0 T start_struct +00000001201fed30 s state.0 +0000000120200710 S static_chain_incoming_rtx +0000000120200778 S static_chain_rtx +00000001201ffe28 S static_ctors +00000001201ffc68 S static_dtors +00000001201ff860 s static_reload_reg_p +0000000120043bf0 T staticp +000000012015feb0 t steal_delay_list_from_fallthrough +000000012015f680 t steal_delay_list_from_target +00000001201fecf0 s stmt_count +00000001201ff088 s stmt_expr_depth +000000012020bee0 B stmt_obstack +000000012008a440 T store_bit_field +0000000120082f80 t store_constructor +00000001200733f0 T store_expr +0000000120074000 t store_field +000000012008ab00 t store_fixed_bit_field +0000000120025700 T store_init_value +00000001200891e0 t store_one_arg +00000001200152a0 T store_parm_decls +000000012008afe0 t store_split_bit_field +0000000120101e80 t strength_reduce +000000012013c930 T strict_memory_address_p +0000000120084b90 t string_constant +00000001201ffe78 S string_ftype_ptr_ptr +00000001200d8790 t string_length_attribute +00000001201ffc28 S string_type_node +00000001201cf0c0 r strings_107.2 +00000001201cf110 r strings_108.3 +00000001201cf138 r strings_114.4 +00000001201cf158 r strings_117.5 +00000001201cf178 r strings_120.6 +00000001201cf188 r strings_121.7 +00000001201cf1c8 r strings_126.8 +00000001201cf1d8 r strings_127.9 +00000001201cf218 r strings_131.10 +00000001201cf228 r strings_132.11 +00000001201cf268 r strings_147.12 +00000001201cf280 r strings_149.13 +00000001201cf298 r strings_151.14 +00000001201cf2b0 r strings_154.15 +00000001201cf2d0 r strings_156.16 +00000001201cf2f0 r strings_158.17 +00000001201cf310 r strings_169.18 +00000001201cf320 r strings_228.19 +00000001201cf340 r strings_233.20 +00000001201cf358 r strings_245.21 +00000001201cf368 r strings_247.22 +00000001201cf378 r strings_249.23 +00000001201cf388 r strings_252.24 +00000001201cf398 r strings_261.25 +00000001201cf3a8 r strings_262.26 +00000001201cf3b8 r strings_264.27 +00000001201cf3c8 r strings_281.28 +00000001201cf080 r strings_58.0 +00000001201cf0a0 r strings_61.1 +0000000120058b80 t strip_compound_expr +0000000120038e50 T strip_off_ending +00000001202006a8 S strlen_optab +00000001202007a8 S struct_value_incoming_rtx +0000000120200790 S struct_value_rtx +0000000120113120 t stupid_find_reg +00000001201128c0 T stupid_life_analysis +0000000120113470 t stupid_mark_refs +0000000120113aa0 t stupid_reg_compare +0000000120200478 S sub_optab +00000001201ff238 s subflg +000000012020ba00 B sublevel_ixpansions +00000001200b4110 T subreg_lowpart_p +00000001200b3fc0 T subreg_realpart_p +00000001200d7a80 t subscript_data_attribute +00000001201188c0 t subst +00000001200de850 t subst_constants +0000000120142000 t subst_indexed_address +00000001201ff5d8 s subst_insn +00000001201ff5e8 s subst_low_cuid +00000001201ff5e0 s subst_prev_insn +0000000120141ec0 t subst_reg_equivs +00000001201ff868 s subst_reg_equivs_changed +0000000120143600 T subst_reloads +000000012003e4d0 T substitute_in_expr +000000012003e800 T substitute_in_type +00000001200425a0 T suspend_momentary +00000001200e69c0 T swap_condition +000000012019b560 T sym_lookup +0000000120197460 T symbolic_address_p +0000000120198ae0 T symbolic_operand +00000001201fff18 S symout_time +000000012008d240 t synth_mult +00000001201ff008 s table +0000000120206510 b table +00000001201e8fe0 d table.0 +0000000120067350 t tail_recursion_args +0000000120200200 S tail_recursion_label +0000000120200228 S tail_recursion_reentry +00000001202006e8 S target_flags +00000001201ff960 s target_hash_table +0000000120056170 T target_isinf +00000001200561d0 T target_isnan +0000000120056260 T target_negative +00000001201e8558 D target_options +00000001201e8388 D target_switches +00000001202002e8 S target_temp_slot_level +00000001200a8300 T tdesc_section +0000000120200128 S temp_decl_firstobj +00000001202011a8 b temp_decl_obstack +00000001202066a8 b temp_obstack +0000000120200174 S temp_slot_level +0000000120200180 S temp_slots +00000001200438b0 T temp_tree_cons +0000000120042110 T temporary_allocation +0000000120200120 S temporary_firstobj +000000012020be48 B temporary_obstack +00000001200e3e20 t tension_vector_labels +00000001200a84f0 T text_section +00000001201e79e8 d tfaff +00000001201ff604 s this_basic_block +00000001201ff078 s this_function_bytecode +00000001201ff080 s this_function_calldesc +00000001201ff070 s this_function_callinfo +00000001201ff068 s this_function_decl +00000001201ff3a8 s this_insn +00000001201ff768 s this_insn +00000001201ff850 s this_insn +00000001201ff858 s this_insn_is_asm +00000001201ff764 s this_insn_number +00000001201ffb00 s this_is_asm_operands +00000001200e58c0 T thread_jumps +00000001200613a0 T thread_prologue_and_epilogue_insns +00000001201eb3a5 d tm_rcs_id +00000001200be4f0 t toe113 +00000001200be8d0 t toe24 +00000001200b93d0 t toe53 +00000001200be680 t toe64 +00000001201ffbf8 S token_buffer +00000001202000b0 S toplev_inline_obstacks +00000001201ff5a0 s total_attempts +00000001201ff5a8 s total_extras +00000001201ff5a4 s total_merges +00000001201ff5ac s total_successes +0000000120200a20 S trampoline +000000012005ef80 T trampoline_address +00000001201ff038 s trampoline_list +0000000120145820 T transfer_replacements +0000000120200098 S tree_code_length +0000000120200100 S tree_code_name +00000001202000d8 S tree_code_type +000000012003e370 T tree_cons +0000000120040ed0 T tree_int_cst_equal +0000000120044ac0 T tree_int_cst_lt +0000000120044b70 T tree_int_cst_sgn +0000000120043670 T tree_last +000000012020bd58 B tree_node_counts +00000001201e8f50 D tree_node_kind_names +000000012020bea0 B tree_node_sizes +0000000120164460 T true_dependence +00000001200e7190 T true_regnum +0000000120200570 S truncdfsf2_libfunc +0000000120200450 S trunctfdf2_libfunc +0000000120200628 S trunctfsf2_libfunc +0000000120200640 S truncxfdf2_libfunc +0000000120200390 S truncxfsf2_libfunc +000000012002c1a0 T truthvalue_conversion +0000000120114730 t try_combine +00000001200de6e0 T try_constants +000000012015d8b0 t try_merge_delay_insns +00000001200b2940 T try_split +0000000120200300 S tst_optab +000000012004bce0 t twoval_comparison_p +00000001201fed34 s type.1 +00000001200c9400 t type_attribute +000000012002b270 T type_for_mode +000000012002d3e0 T type_for_size +0000000120044950 T type_hash_add +0000000120040880 T type_hash_canon +0000000120044780 T type_hash_list +00000001200447b0 T type_hash_lookup +000000012020bb80 B type_hash_table +00000001200cede0 t type_is_fundamental +0000000120044a00 T type_list_equal +0000000120019ab0 t type_lists_compatible_p +0000000120045220 T type_precision +00000001201ebdf8 D typecode_mode +0000000120200398 S ucmp_optab +0000000120200508 S udiv_optab +0000000120200620 S udivmod_optab +00000001201ff500 s uid_block_number +00000001201ff400 s uid_cuid +00000001201ff5b0 s uid_cuid +0000000120200850 S uid_loop_num +0000000120200860 S uid_luid +00000001201ff550 s uid_suid +00000001201ff970 s uid_to_ruid +00000001201ff508 s uid_volatile +0000000120200588 S umax_optab +0000000120200590 S umin_optab +00000001202005b8 S umod_optab +0000000120200578 S umul_highpart_optab +00000001202003c0 S umul_widen_optab +000000012001f100 t unary_complex_lvalue +00000001201fed18 s undeclared_variable_notice +0000000120117840 t undo_all +0000000120206700 b undobuf +00000001201ff950 s unfilled_firstobj +00000001202094b0 b unfilled_slots_obstack +0000000120062fe0 T uninitialized_vars_warning +0000000120209770 b unit_last_insn +00000001202097dc b unit_n_insns +00000001202097b8 b unit_tick +00000001201ff49c s unknown_address_altered +00000001201ff248 s unnamed_struct_number +000000012006f630 T unroll_block_trees +0000000120107ce0 T unroll_loop +00000001200b4660 T unshare_all_rtl +00000001201ffce0 S unsigned_char_type_node +00000001200e6a90 T unsigned_condition +000000012002cea0 T unsigned_conversion_warning +00000001201ffd00 S unsigned_intDI_type_node +00000001201ffe48 S unsigned_intHI_type_node +00000001201ffe68 S unsigned_intQI_type_node +00000001201ffcf0 S unsigned_intSI_type_node +000000012020ae18 b unsigned_mode_to_code_map +0000000120024fd0 T unsigned_type +00000001201ffd20 S unsigned_type_node +00000001201ffc70 S unsigned_wchar_type_node +00000001201ffa88 s unused_expr_list +00000001201ffa80 s unused_insn_list +0000000120158050 t update_block +00000001201317d0 t update_equiv_regs +0000000120167ad0 t update_flow_info +00000001201043c0 t update_giv_derive +0000000120159d50 t update_live_status +0000000120133de0 t update_qty_class +0000000120106f50 t update_reg_last_use +000000012012ce30 t update_table_tick +0000000120061cd0 T update_temp_slot_address +00000001201ff0d8 s use_cost_table +0000000120129d70 t use_crosses_set_p +00000001201fef40 S use_gnu_debug_info_extensions +00000001200824b0 T use_reg +0000000120082550 T use_regs +00000001200fc0a0 t use_related_value +0000000120062b70 T use_variable +0000000120062c40 T use_variable_after +000000012010eb40 t uses_reg_or_mem +0000000120039230 t v_message_with_decl +0000000120025ed0 t valid_compound_expr_initializer +0000000120103530 t valid_initial_value_p +00000001200442c0 T valid_machine_attribute +0000000120172eb0 T validate_change +00000001201351a0 t validate_equiv_mem_from_store +0000000120173020 T validate_replace_rtx +0000000120170180 t validate_replace_rtx_1 +0000000120095730 T validize_mem +00000001201fed40 s value.3 +00000001200434b0 T value_member +00000001202006e4 S var_labelno +00000001201ff090 s var_offset +00000001201fffd0 S varconst_time +00000001201ffb90 s variable_args_p +0000000120048ef0 T variable_size +00000001201fec30 G version_string +0000000120200740 S virtual_incoming_args_rtx +0000000120200758 S virtual_outgoing_args_rtx +00000001202007b0 S virtual_stack_dynamic_rtx +0000000120200720 S virtual_stack_vars_rtx +00000001201ff060 s virtuals_instantiated +00000001201ffd40 S void_ftype_ptr_int_int +00000001201ffc50 S void_ftype_ptr_ptr_int +00000001201ffd90 S void_type_node +00000001200aead0 T volatile_insn_p +00000001202009cc S volatile_ok +00000001200aec60 T volatile_refs_p +000000012016e310 t walk_alter_subreg +000000012005bec0 t walk_fixup_memory_subreg +00000001201fedc4 s warn_about_return_type +0000000120200044 S warn_aggregate_return +00000001201ffe24 S warn_bad_function_cast +0000000120200080 S warn_cast_align +00000001201ffd60 S warn_cast_qual +00000001201fed64 S warn_char_subscripts +00000001201ffd10 S warn_conversion +0000000120021280 t warn_for_assignment +00000001201ffe10 S warn_format +00000001201fffe8 S warn_id_clash +00000001200652c0 T warn_if_unused_value +00000001201ffc10 S warn_implicit +00000001201ffed4 S warn_inline +00000001201fff74 S warn_larger_than +00000001201ffc90 S warn_missing_braces +00000001201ffdec S warn_missing_declarations +00000001201ffde8 S warn_missing_prototypes +00000001201fed60 S warn_nested_externs +00000001201ffdfc S warn_parentheses +00000001201ffe30 S warn_pointer_arith +00000001201fed5c S warn_redundant_decls +0000000120200020 S warn_return_type +00000001201fff40 S warn_shadow +00000001201ffc84 S warn_strict_prototypes +00000001201fff70 S warn_switch +00000001201ffda8 S warn_traditional +00000001201fff64 S warn_uninitialized +00000001201ffee4 S warn_unused +00000001201ffc80 S warn_write_strings +0000000120031500 T warning +00000001200310d0 T warning_for_asm +0000000120025f70 t warning_init +00000001201fefd8 s warning_message.0 +0000000120030e20 T warning_with_decl +0000000120030ae0 T warning_with_file_and_line +00000001201fef48 S warningcount +00000001201fefc8 S warnings_are_errors +00000001201ffc20 S wchar_array_type_node +00000001201ffd28 S wchar_type_node +00000001201ff158 s weak_decls +00000001200a9be0 T weak_finish +00000001202009d4 S which_alternative +00000001201341f0 t wipe_dead_reg +00000001202007a0 S word_mode +00000001201e6a58 d wordlist +00000001200c8b80 t write_modifier_bytes +00000001201fef38 S write_symbols +0000000120205f80 b wstring +0000000120038bd0 T xmalloc +00000001202004d8 S xor_optab +0000000120038c30 T xrealloc +00000001200171f0 T xref_tag +00000001201ffbe8 S yychar +00000001201a35c0 r yycheck +00000001201ffbdc S yydebug +00000001201a18ac r yydefact +00000001201a1dd2 r yydefgoto +000000012000ba50 T yyerror +0000000120008e00 T yylex +00000001201ffbe0 S yylval +00000001201ffbd8 S yynerrs +00000001201a1ef2 r yypact +0000000120001ad0 T yyparse +00000001201a2418 r yypgoto +000000012019fc46 r yyprhs +000000012000b900 T yyprint +00000001201a12d0 r yyr1 +00000001201a15be r yyr2 +000000012019ff34 r yyrhs +00000001201a08b8 r yyrline +00000001201a2538 r yytable +00000001201a0ba8 r yytname +000000012019fb08 r yytranslate +00000001201ffbb8 s zero.2 +00000001201ff140 s zero_cost diff --git a/configs/boot/equake.rcS b/configs/boot/equake.rcS new file mode 100644 index 000000000..6b799aaf3 --- /dev/null +++ b/configs/boot/equake.rcS @@ -0,0 +1,12 @@ +#!/bin/sh + +cd /benchmarks/spec/equake00/ + +/sbin/m5 checkpoint 0 0 +/sbin/m5 checkpoint 100000000 200000000 + +/sbin/m5 loadsymbol + +/sbin/m5 resetstats +/benchmarks/spec/equake00/equake < lgred.in +/sbin/m5 exit diff --git a/configs/boot/equake.symbol b/configs/boot/equake.symbol new file mode 100644 index 000000000..4b28299c1 --- /dev/null +++ b/configs/boot/equake.symbol @@ -0,0 +1,94 @@ +000000012001a868 S ARCHcholeskylen +000000012001a878 S ARCHcoord +000000012001a930 S ARCHcorners +000000012001a938 S ARCHduration +000000012001a940 S ARCHelems +000000012001a8b0 S ARCHglobalelem +000000012001a8d0 S ARCHglobalelems +000000012001a8e8 S ARCHglobalnode +000000012001a8a8 S ARCHglobalnodes +000000012001a8d8 S ARCHmatrixcol +000000012001a898 S ARCHmatrixindex +000000012001a924 S ARCHmatrixlen +000000012001a8ac S ARCHmesh_dim +000000012001a8f8 S ARCHmine +000000012001a90c S ARCHnodes +000000012001a908 S ARCHpriv +000000012001a920 S ARCHsubdomains +000000012001a8b8 S ARCHvertex +000000012001a900 S C +000000012001a918 S C23 +000000012001a9a8 B Damp +000000012001a9c8 B Exc +000000012001a8a0 S K +000000012001a928 S M +000000012001a888 S M23 +000000012001a950 B Src +000000012001a890 S V23 +000000012001a388 D _DYNAMIC +000000012001a5f8 D _GLOBAL_OFFSET_TABLE_ +000000012001a848 G _IO_stdin_used +000000012001a550 T _PROCEDURE_LINKAGE_TABLE_ +000000012001a530 d __CTOR_END__ +000000012001a528 d __CTOR_LIST__ +000000012001a540 d __DTOR_END__ +000000012001a538 d __DTOR_LIST__ +000000012001a384 r __FRAME_END__ +000000012001a548 d __JCR_END__ +000000012001a548 d __JCR_LIST__ +000000012001a860 A __bss_start +000000012001a000 D __data_start +0000000120008c50 t __do_global_ctors_aux +00000001200008d0 t __do_global_dtors_aux +000000012001a850 G __dso_handle +000000012001a000 A __fini_array_end +000000012001a000 A __fini_array_start +000000012001a000 A __init_array_end +000000012001a000 A __init_array_start +0000000120008bb0 T __libc_csu_fini +0000000120008b00 T __libc_csu_init +0000000120000890 W __start +000000012001a860 A _edata +000000012001a9e0 A _end +0000000120008cb0 T _fini +0000000120000828 T _init +0000000120000890 T _start +00000001200049c4 T abe_matrix +00000001200056b8 T arch_bail +00000001200056e4 T arch_info +0000000120006584 T arch_init +00000001200057e0 T arch_parsecommandline +0000000120005bf4 T arch_readdouble +0000000120005ad0 T arch_readelemvector +00000001200059ac T arch_readnodevector +0000000120004530 T area_triangle +00000001200051e8 T centroid +000000012001a860 s completed.1 +000000012001a000 W data_start +000000012001a948 S disp +00000001200050bc T distance +0000000120003c70 T element_matrices +0000000120000970 t frame_dummy +00000001200036f8 T get_Enu +0000000120003820 T inv_J +00000001200009c0 T main +0000000120007a88 T mem_init +00000001200054b8 T mv12x12 +000000012001a8c0 S nodekind +000000012001a910 S nodekindf +000000012001a8f0 S options +000000012001a858 g p.0 +000000012001a8c8 S packfile +0000000120004bc4 T phi0 +0000000120004cc4 T phi1 +0000000120004d98 T phi2 +00000001200052e8 T point2fault +000000012001a870 S progname +0000000120005cd8 T readpackfile +000000012000360c T shape_ders +0000000120004e84 T slip +0000000120006604 T smvp +00000001200070f8 T smvp_opt +000000012001a880 S source_elms +000000012001a8e0 S vel +000000012000561c T vv12x12 diff --git a/configs/boot/gcc.rcS b/configs/boot/gcc.rcS new file mode 100644 index 000000000..6bcd7e03d --- /dev/null +++ b/configs/boot/gcc.rcS @@ -0,0 +1,12 @@ +#!/bin/sh + +cd /benchmarks/spec/gcc00/ + +/sbin/m5 checkpoint 0 0 +/sbin/m5 checkpoint 100000000 200000000 + +/sbin/m5 loadsymbol + +/sbin/m5 resetstats +./cc1 mdred.rtlanal.i +/sbin/m5 exit diff --git a/configs/boot/gzip.rcS b/configs/boot/gzip.rcS new file mode 100644 index 000000000..c7aca7e9b --- /dev/null +++ b/configs/boot/gzip.rcS @@ -0,0 +1,12 @@ +#!/bin/sh + +cd /benchmarks/spec/gzip00/ + +/sbin/m5 checkpoint 0 0 +/sbin/m5 checkpoint 100000000 200000000 + +/sbin/m5 loadsymbol + +/sbin/m5 resetstats +./gzip lgred.log 1 +/sbin/m5 exit diff --git a/configs/boot/gzip.symbol b/configs/boot/gzip.symbol new file mode 100644 index 000000000..d965c99a9 --- /dev/null +++ b/configs/boot/gzip.symbol @@ -0,0 +1,268 @@ +0000000120022c08 D _DYNAMIC +0000000120022fd0 D _GLOBAL_OFFSET_TABLE_ +0000000120023498 G _IO_stdin_used +0000000120022dc0 T _PROCEDURE_LINKAGE_TABLE_ +0000000120022da0 d __CTOR_END__ +0000000120022d98 d __CTOR_LIST__ +0000000120022db0 d __DTOR_END__ +0000000120022da8 d __DTOR_LIST__ +0000000120022c04 r __FRAME_END__ +0000000120022db8 d __JCR_END__ +0000000120022db8 d __JCR_LIST__ +00000001200234f8 A __bss_start +0000000120021030 D __data_start +000000012000fbc0 t __do_global_ctors_aux +00000001200012a0 t __do_global_dtors_aux +00000001200234a0 G __dso_handle +0000000120021030 A __fini_array_end +0000000120021030 A __fini_array_start +0000000120021030 A __init_array_end +0000000120021030 A __init_array_start +000000012000fb20 T __libc_csu_fini +000000012000fa70 T __libc_csu_init +0000000120001260 W __start +00000001200234f8 A _edata +0000000120073b10 A _end +000000012000fc20 T _fini +00000001200011f8 T _init +0000000120001260 T _start +0000000120004cf0 T abort_gzip +000000012000de80 T add_envopt +0000000120023550 S args +0000000120023520 S ascii +000000012002551c b base_dist +00000001200254a8 b base_length +0000000120023698 S bb +00000001200234fc s bi_buf +0000000120001ad0 T bi_init +0000000120001b20 T bi_reverse +0000000120023500 s bi_valid +00000001200015d0 T bi_windup +00000001200235b8 s bitbuf +00000001200235e0 s bitbuf +00000001200235c0 s bitcount +0000000120023690 S bk +0000000120024654 b bl_count +0000000120021830 d bl_desc +0000000120021858 d bl_order +00000001200245b8 b bl_tree +00000001200234ec G block_mode +0000000120023610 S block_start +00000001200235b4 s blocksize +0000000120021540 d border +0000000120009620 t build_tree +0000000120023650 S bytes_in +0000000120023668 S bytes_out +0000000120004740 t check_ofname +000000012000d5c0 T check_zipfile +000000012000e540 T clear_bufs +00000001200234f8 s completed.1 +0000000120023518 s compr_level +00000001200092e0 t compress_block +00000001200235a0 s compressed_len +0000000120021030 d configuration_table +000000012000e280 T copy +00000001200017d0 T copy_block +0000000120004ae0 t copy_stat +0000000120021644 d cpdext +0000000120021608 d cpdist +000000012002158c d cplens +00000001200215ca d cplext +00000001200235f8 s crc +00000001200234f0 g crc.0 +0000000120021870 D crc_32_tab +0000000120002b90 t create_outfile +0000000120008450 T ct_init +0000000120008f60 T ct_tally +000000012002ea20 B d_buf +0000000120021808 d d_desc +0000000120021030 W data_start +00000001200234e8 G dbglvl +00000001200234e4 G dbits +0000000120008440 T debug_time +000000012000a5e0 t decode +000000012000ad50 t decode_c +000000012000ab90 t decode_start +0000000120023528 S decompress +00000001200236c0 S decrypt +0000000120002250 T deflate +0000000120002770 t deflate_fast +0000000120024f68 b depth +000000012000ee70 T display_ratio +00000001200252a5 b dist_code +0000000120004c60 t do_exit +0000000120003f00 t do_list +0000000120023540 S do_lzw +00000001200235c8 s done +0000000120023fcc b dyn_dtree +00000001200236d8 b dyn_ltree +0000000120023678 S env +000000012002350c s eofile +000000012000e1c0 T error +0000000120023548 S exit_code +00000001200235f4 S ext_header +0000000120021794 d extra_blbits +000000012002171c d extra_dbits +00000001200216a8 d extra_lbits +00000001200236b8 S file_method +000000012000f9c0 T file_read +00000001200236b0 S file_type +000000012000e580 T fill_inbuf +0000000120002030 t fill_window +00000001200234d8 g first_time.2 +000000012002358d s flag_bit +0000000120025594 b flag_buf +000000012002358c s flags +0000000120008ba0 T flush_block +000000012000e730 T flush_outbuf +000000012000e860 T flush_window +000000012002352c S force +0000000120023640 S foreground +0000000120001340 t frame_dummy +000000012000a1a0 t gen_bitlen +0000000120008a80 t gen_codes +0000000120002dd0 t get_istat +00000001200032c0 T get_method +0000000120004d50 t get_suffix +0000000120023618 S good_match +000000012000ebf0 T gzipbasename +00000001200236d0 S header_bytes +0000000120024674 b heap +0000000120023578 s heap_len +000000012002357c s heap_max +00000001200214b8 d help_msg.5 +0000000120004ee0 T huft_build +0000000120005670 T huft_free +00000001200236a0 S hufts +00000001200235b0 s i.0 +0000000120023688 S ifd +0000000120023658 S ifile_size +000000012005eea8 B ifname +000000012002356c s in_exit.4 +00000001200269e0 B inbuf +0000000120006e00 T inflate +0000000120006bf0 T inflate_block +00000001200056d0 T inflate_codes +00000001200062b0 T inflate_dynamic +00000001200060f0 T inflate_fixed +0000000120005e10 T inflate_stored +0000000120008960 t init_block +0000000120023684 S inptr +00000001200235a8 s input_len +0000000120023508 s ins_h +0000000120023644 S insize +000000012003ea20 B istat +00000001200235c4 s j +00000001200236c8 S key +00000001200213f8 d known_suffixes.0 +00000001200217e0 d l_desc +0000000120023584 s last_dist +0000000120023588 s last_flags +0000000120023580 s last_lit +000000012002364c S last_member +00000001200234e0 G lbits +0000000120026910 b leaves +00000001200251a5 b length_code +00000001200234c8 G level +0000000120021080 d license_msg +0000000120023534 S list +00000001200268a8 b lit_base +00000001200267a8 b literal +0000000120001b60 T lm_init +0000000120001d90 T longest_match +00000001200210f8 D longopts +0000000120023510 s lookahead +0000000120006ed0 T lzw +0000000120007a80 T main +0000000120003040 t make_ofname +000000012000ec40 T make_simple_name +000000012000c130 t make_table +0000000120021680 D mask_bits +0000000120023624 S match_start +000000012002361c S max_chain_length +0000000120023514 s max_lazy_match +00000001200235d8 s max_len +00000001200234c0 G maxbits +00000001200234c4 G method +0000000120021470 d methods.3 +0000000120023570 s msg_done +0000000120004310 t name_too_long +0000000120023608 S nice_match +00000001200234b8 G no_name +00000001200234bc G no_time +0000000120023630 S ofd +000000012003eaa8 B ofname +0000000120023590 s opt_len +00000001200235d0 s orig_len +000000012005f2a8 B outbuf +0000000120023648 S outcnt +00000001200234a8 g p.0 +0000000120026978 b parents +0000000120023680 S part_nb +00000001200235dc s peek_bits +00000001200235f0 S pkzip +000000012003eea8 B prev +000000012002360c S prev_length +0000000120023628 S progname +0000000120026594 b pt_len +00000001200265a8 b pt_table +000000012002353c S quiet +00000001200080c0 T ran +0000000120023600 S read_buf +000000012000b8c0 t read_c_len +000000012000ed50 T read_error +000000012000b130 t read_pt_len +000000012000d2a0 t read_tree +0000000120023530 S recursive +0000000120023568 S remove_ofname +0000000120023660 S save_orig_name +0000000120009d90 t scan_tree +00000001200236a8 S seedi +0000000120001390 T send_bits +0000000120009f40 t send_tree +0000000120009540 t set_file_type +0000000120004420 t shorten_name +0000000120007f90 T spec_compress +0000000120073ac8 B spec_fd +0000000120007800 T spec_getc +0000000120006f70 T spec_init +0000000120007f40 T spec_initbufs +0000000120007430 T spec_load +0000000120008350 T spec_putc +0000000120007090 T spec_random_load +0000000120007670 T spec_read +00000001200081b0 T spec_reset +0000000120008190 T spec_rewind +0000000120008010 T spec_uncompress +0000000120007930 T spec_ungetc +0000000120008210 T spec_write +0000000120024540 b static_dtree +0000000120023598 s static_len +00000001200240c0 b static_ltree +000000012000eb20 T strlwr +0000000120023620 S strstart +00000001200235bc s subbitbuf +0000000120021440 d suffixes.1 +0000000120023544 S test +0000000120023638 S time_stamp +0000000120023524 S to_stdout +0000000120023558 S total_in +0000000120023560 S total_out +000000012000a510 T unlzh +000000012000c5c0 T unlzw +000000012000cde0 T unpack +000000012000d7a0 T unzip +000000012000e4c0 T updcrc +00000001200235e8 s valid +0000000120023538 S verbose +000000012000ecd0 T warn +0000000120063aa8 B window +00000001200234b0 G window_size +00000001200234d0 G work +000000012000ea20 T write_buf +000000012000ee00 T write_error +000000012000e220 T xmalloc +0000000120023670 S z_len +0000000120073aa8 B z_suffix +0000000120023504 s zfile +000000012000ef80 T zip diff --git a/configs/boot/halt.sh b/configs/boot/halt.sh new file mode 100644 index 000000000..b1332ebab --- /dev/null +++ b/configs/boot/halt.sh @@ -0,0 +1 @@ +m5 exit diff --git a/configs/boot/ls.rcS b/configs/boot/ls.rcS new file mode 100644 index 000000000..4cfe38d2b --- /dev/null +++ b/configs/boot/ls.rcS @@ -0,0 +1,18 @@ +ls +ls +ls +ls +cd bin +ls +ls +ls +ls +ls +ls +ls +ls +cd ../benchmarks +ls +ls +ls +ls diff --git a/configs/boot/mcf.rcS b/configs/boot/mcf.rcS new file mode 100644 index 000000000..864966dfc --- /dev/null +++ b/configs/boot/mcf.rcS @@ -0,0 +1,12 @@ +#!/bin/sh + +cd /benchmarks/spec/mcf00/ + +/sbin/m5 checkpoint 0 0 +/sbin/m5 checkpoint 100000000 200000000 + +/sbin/m5 loadsymbol + +/sbin/m5 resetstats +/benchmarks/spec/mcf00/mcf mdred.in +/sbin/m5 exit diff --git a/configs/boot/mcf.symbol b/configs/boot/mcf.symbol new file mode 100644 index 000000000..878f12961 --- /dev/null +++ b/configs/boot/mcf.symbol @@ -0,0 +1,65 @@ +0000000120014350 D _DYNAMIC +0000000120014608 D _GLOBAL_OFFSET_TABLE_ +0000000120014770 G _IO_stdin_used +0000000120014518 T _PROCEDURE_LINKAGE_TABLE_ +00000001200144f8 d __CTOR_END__ +00000001200144f0 d __CTOR_LIST__ +0000000120014508 d __DTOR_END__ +0000000120014500 d __DTOR_LIST__ +000000012001434c r __FRAME_END__ +0000000120014510 d __JCR_END__ +0000000120014510 d __JCR_LIST__ +0000000120014790 A __bss_start +0000000120014000 D __data_start +00000001200034d0 t __do_global_ctors_aux +0000000120000a40 t __do_global_dtors_aux +0000000120014778 G __dso_handle +0000000120014000 A __fini_array_end +0000000120014000 A __fini_array_start +0000000120014000 A __init_array_end +0000000120014000 A __init_array_start +0000000120003430 T __libc_csu_fini +0000000120003380 T __libc_csu_init +0000000120000a00 W __start +0000000120014790 A _edata +0000000120017c30 A _end +0000000120003530 T _fini +0000000120000998 T _init +0000000120000a00 T _start +00000001200147b0 b basket +0000000120014798 s basket_size +0000000120003320 T bea_compute_red_cost +0000000120003340 T bea_is_dual_infeasible +0000000120014790 s completed.1 +0000000120002410 T compute_red_cost +0000000120014000 W data_start +0000000120001480 T dual_feasible +0000000120001090 T flow_cost +00000001200011d0 T flow_org_cost +0000000120000ae0 t frame_dummy +00000001200015f0 T getfree +0000000120000e30 T global_opt +00000001200147a8 s group_pos +0000000120014788 g initialize +0000000120002420 T insert_new_arc +0000000120000b30 T main +00000001200179d0 B net +00000001200147a0 s nr_group +0000000120014780 g p.0 +0000000120016d48 b perm +0000000120001d20 T price_out_impl +0000000120003080 T primal_bea_mpp +0000000120001310 T primal_feasible +0000000120002a60 T primal_iminus +0000000120002c00 T primal_net_simplex +0000000120002510 T primal_start_artificial +0000000120002ba0 T primal_update_flow +00000001200016b0 T read_min +0000000120001580 T refresh_neighbour_lists +0000000120000fa0 T refresh_potential +0000000120001c10 T replace_weaker_arc +0000000120002310 T resize_prob +0000000120002f30 T sort_basket +00000001200021b0 T suspend_impl +00000001200027e0 T update_tree +0000000120002600 T write_circulations diff --git a/configs/boot/mesa.rcS b/configs/boot/mesa.rcS new file mode 100644 index 000000000..3e931a881 --- /dev/null +++ b/configs/boot/mesa.rcS @@ -0,0 +1,12 @@ +#!/bin/sh + +cd /benchmarks/spec/mesa00/ + +/sbin/m5 checkpoint 0 0 +/sbin/m5 checkpoint 100000000 200000000 + +/sbin/m5 loadsymbol + +/sbin/m5 resetstats +/benchmarks/spec/mesa00/mesa -frames 1 -meshfile lgred.in +/sbin/m5 exit diff --git a/configs/boot/mesa.symbol b/configs/boot/mesa.symbol new file mode 100644 index 000000000..6666dc819 --- /dev/null +++ b/configs/boot/mesa.symbol @@ -0,0 +1,1135 @@ +00000001200b93f0 S CC +00000001200b9428 s Current +00000001200b9410 s CurrentBlock +00000001200b9408 s CurrentListNum +00000001200b9400 s CurrentListPtr +00000001200b9418 s CurrentPos +000000012004b870 T DeleteHashTable +000000012004b6c0 T HashFindFreeKeyBlock +000000012004bbd0 T HashFirstEntry +000000012004ba60 T HashInsert +000000012004b950 T HashLookup +000000012004bc50 T HashPrint +000000012004b580 T HashRemove +00000001200aff60 d Identity +0000000120098be0 t Init +00000001200b9448 b InstSize +000000012004b830 T NewHashTable +00000001200b9434 s NumColumns +00000001200b9430 s NumRows +000000012005e400 T OSMesaCreateContext +000000012005e9b0 T OSMesaDestroyContext +000000012005eb70 T OSMesaGetCurrentContext +000000012005ed00 T OSMesaGetDepthBuffer +000000012005ec40 T OSMesaGetIntegerv +000000012005ea30 T OSMesaMakeCurrent +000000012005eb90 T OSMesaPixelStore +0000000120098520 t ReadMesh +0000000120098790 t Render +00000001200b93ec s Space +00000001200b9440 s SurfaceN +00000001200b9438 s SurfaceV +0000000120099030 t WriteImage +00000001200b93d4 g Xmax +00000001200b93d0 g Xmin +00000001200b93e0 g Xrot +00000001200b93dc g Ymax +00000001200b93d8 g Ymin +00000001200b93e4 g Yrot +00000001200b7a50 D _DYNAMIC +00000001200b7db0 D _GLOBAL_OFFSET_TABLE_ +00000001200b93a0 G _IO_stdin_used +00000001200b7c18 T _PROCEDURE_LINKAGE_TABLE_ +00000001200b7bf8 d __CTOR_END__ +00000001200b7bf0 d __CTOR_LIST__ +00000001200b7c08 d __DTOR_END__ +00000001200b7c00 d __DTOR_LIST__ +00000001200b7a4c r __FRAME_END__ +00000001200b7c10 d __JCR_END__ +00000001200b7c10 d __JCR_LIST__ +00000001200b93e8 A __bss_start +00000001200aff20 D __data_start +0000000120099390 t __do_global_ctors_aux +0000000120000ec0 t __do_global_dtors_aux +00000001200b93a8 G __dso_handle +00000001200aff20 A __fini_array_end +00000001200aff20 A __fini_array_start +00000001200aff20 A __init_array_end +00000001200aff20 A __init_array_start +00000001200992f0 T __libc_csu_fini +0000000120099240 T __libc_csu_init +0000000120000e80 W __start +00000001200b93e8 A _edata +00000001200b9fe8 A _end +00000001200993f0 T _fini +0000000120000e10 T _init +0000000120000e80 T _start +000000012001e060 t alloc_proxy_textures +000000012001d0a0 t alloc_shared_state +0000000120068840 t antialiased_rgba_points +0000000120073f40 t apply_stencil_op_to_pixels +0000000120073af0 t apply_stencil_op_to_span +000000012007f040 t apply_texture +00000001200affb0 d blue.1 +000000012005f340 t buffer_size +0000000120060230 t choose_line_function +000000012005efb0 t clear +000000012005ef70 t clear_color +000000012005dfd0 t clear_color_buffer_with_masking +000000012005de60 t clear_color_buffers +000000012005ef60 t clear_index +0000000120072360 t clip_span +00000001200b93e8 s completed.1 +000000012003bd60 t components +0000000120076630 t components_in_intformat +000000012005ed60 t compute_row_addresses +000000012001f550 t copy_ci_pixels +000000012001f8e0 t copy_depth_pixels +000000012001ec60 t copy_rgb_pixels +000000012001fd10 t copy_stencil_pixels +0000000120078d60 t copy_tex_sub_image +00000001200aff20 W data_start +000000012003aa90 t de_casteljau_surf +000000012001b530 t decode_internal_format +00000001200764c0 t decode_internal_format +0000000120069f90 t dist_atten_antialiased_rgba_points +0000000120069060 t dist_atten_general_ci_points +00000001200694b0 t dist_atten_general_rgba_points +00000001200699e0 t dist_atten_textured_rgba_points +00000001200166a0 t do_blend +0000000120032720 t draw_color_pixels +0000000120031d60 t draw_depth_pixels +0000000120031000 t draw_index_pixels +0000000120031810 t draw_stencil_pixels +0000000120030d40 t drawpixels +0000000120030690 t enum_string +0000000120022040 t execute_list +00000001200b93c8 g extensions.3 +000000012004f6c0 t feedback_line +00000001200675b0 t feedback_points +0000000120083ac0 t feedback_triangle +0000000120062050 t flat_blend_color_line +0000000120062360 t flat_blend_color_z_line +00000001200627b0 t flat_blend_color_z_line_write +000000012004fc60 t flat_ci_line +0000000120084040 t flat_ci_triangle +000000012004ff10 t flat_ci_z_line +0000000120061aa0 t flat_color_line +0000000120061ce0 t flat_color_z_line +0000000120061280 t flat_color_z_triangle +0000000120050270 t flat_rgba_line +0000000120085190 t flat_rgba_triangle +0000000120050590 t flat_rgba_z_line +00000001200557b0 t flat_textured_line +0000000120000f60 t frame_dummy +0000000120067c60 t general_ci_points +00000001200527c0 t general_flat_ci_line +0000000120054ac0 t general_flat_rgba_line +0000000120067fe0 t general_rgba_points +00000001200519d0 t general_smooth_ci_line +0000000120053450 t general_smooth_rgba_line +0000000120087f50 t general_textured_triangle +0000000120083090 t get_1d_texel +0000000120083300 t get_2d_texel +00000001200835b0 t get_3d_texel +00000001200036f0 T glAccum +00000001200037a0 T glAlphaFunc +0000000120003850 T glAreTexturesResident +0000000120011bc0 T glAreTexturesResidentEXT +0000000120003900 T glArrayElement +0000000120011a80 T glArrayElementEXT +00000001200039a0 T glBegin +0000000120003a40 T glBindTexture +0000000120011bf0 T glBindTextureEXT +0000000120002f80 T glBitmap +0000000120011560 T glBlendColorEXT +00000001200114c0 T glBlendEquationEXT +0000000120003ae0 T glBlendFunc +0000000120003b80 T glCallList +0000000120003c20 T glCallLists +0000000120003cc0 T glClear +0000000120003d60 T glClearAccum +0000000120003ec0 T glClearColor +0000000120003f80 T glClearDepth +0000000120003e20 T glClearIndex +0000000120004020 T glClearStencil +00000001200040c0 T glClipPlane +00000001200041a0 T glColor3b +0000000120004d10 T glColor3bv +0000000120004240 T glColor3d +0000000120004de0 T glColor3dv +0000000120004290 T glColor3f +0000000120004e40 T glColor3fv +00000001200042d0 T glColor3i +0000000120004e80 T glColor3iv +0000000120004370 T glColor3s +0000000120004f20 T glColor3sv +0000000120004410 T glColor3ub +0000000120004ff0 T glColor3ubv +0000000120004460 T glColor3ui +0000000120005050 T glColor3uiv +00000001200045a0 T glColor3us +0000000120005190 T glColor3usv +00000001200046d0 T glColor4b +00000001200052d0 T glColor4bv +0000000120004780 T glColor4d +00000001200053d0 T glColor4dv +00000001200047e0 T glColor4f +0000000120005430 T glColor4fv +0000000120004830 T glColor4i +0000000120005480 T glColor4iv +00000001200048e0 T glColor4s +0000000120005540 T glColor4sv +0000000120004990 T glColor4ub +0000000120005640 T glColor4ubv +00000001200049e0 T glColor4ui +0000000120005680 T glColor4uiv +0000000120004b80 T glColor4us +0000000120005830 T glColor4usv +00000001200059f0 T glColorMask +0000000120005aa0 T glColorMaterial +0000000120005b40 T glColorPointer +0000000120011760 T glColorPointerEXT +0000000120005d00 T glColorSubTableEXT +0000000120005bf0 T glColorTableEXT +0000000120005e10 T glCopyPixels +0000000120005ec0 T glCopyTexImage1D +0000000120005f80 T glCopyTexImage2D +0000000120006050 T glCopyTexSubImage1D +0000000120006110 T glCopyTexSubImage2D +0000000120011d50 T glCopyTexSubImage3DEXT +00000001200061e0 T glCullFace +0000000120006460 T glDeleteLists +0000000120006500 T glDeleteTextures +0000000120011c20 T glDeleteTexturesEXT +0000000120006280 T glDepthFunc +0000000120006320 T glDepthMask +00000001200063c0 T glDepthRange +00000001200065a0 T glDisable +0000000120006640 T glDisableClientState +00000001200066e0 T glDrawArrays +0000000120011b20 T glDrawArraysEXT +0000000120006780 T glDrawBuffer +0000000120006820 T glDrawElements +00000001200068d0 T glDrawPixels +0000000120007310 T glEdgeFlag +0000000120007450 T glEdgeFlagPointer +0000000120011940 T glEdgeFlagPointerEXT +00000001200073b0 T glEdgeFlagv +0000000120006980 T glEnable +0000000120006a20 T glEnableClientState +0000000120006ac0 T glEnd +0000000120006b60 T glEndList +0000000120006c00 T glEvalCoord1d +0000000120006d40 T glEvalCoord1dv +0000000120006ca0 T glEvalCoord1f +0000000120006df0 T glEvalCoord1fv +0000000120006e90 T glEvalCoord2d +0000000120006fe0 T glEvalCoord2dv +0000000120006f40 T glEvalCoord2f +0000000120007090 T glEvalCoord2fv +0000000120007270 T glEvalMesh1 +00000001200074f0 T glEvalMesh2 +0000000120007130 T glEvalPoint1 +00000001200071d0 T glEvalPoint2 +00000001200075a0 T glFeedbackBuffer +0000000120007640 T glFinish +00000001200076e0 T glFlush +0000000120007780 T glFogf +00000001200078e0 T glFogfv +0000000120007820 T glFogi +00000001200031c0 T glFogiv +0000000120007980 T glFrontFace +0000000120007a20 T glFrustum +0000000120007ae0 T glGenLists +0000000120007b80 T glGenTextures +0000000120011c50 T glGenTexturesEXT +0000000120007c20 T glGetBooleanv +0000000120007cc0 T glGetClipPlane +0000000120007d60 T glGetColorTableEXT +0000000120007eb0 T glGetColorTableParameterfvEXT +0000000120007e10 T glGetColorTableParameterivEXT +0000000120007f80 T glGetDoublev +0000000120008020 T glGetError +0000000120008070 T glGetFloatv +0000000120008110 T glGetIntegerv +00000001200081b0 T glGetLightfv +0000000120008250 T glGetLightiv +00000001200082f0 T glGetMapdv +0000000120008390 T glGetMapfv +0000000120008430 T glGetMapiv +00000001200084d0 T glGetMaterialfv +0000000120008570 T glGetMaterialiv +0000000120008610 T glGetPixelMapfv +00000001200086b0 T glGetPixelMapuiv +0000000120008750 T glGetPixelMapusv +00000001200087f0 T glGetPointerv +00000001200119e0 T glGetPointervEXT +0000000120008890 T glGetPolygonStipple +0000000120008930 T glGetString +00000001200089c0 T glGetTexEnvfv +0000000120008a60 T glGetTexEnviv +0000000120008ba0 T glGetTexGendv +0000000120008c40 T glGetTexGenfv +0000000120008b00 T glGetTexGeniv +0000000120008ce0 T glGetTexImage +0000000120008d90 T glGetTexLevelParameterfv +0000000120008e40 T glGetTexLevelParameteriv +0000000120008ef0 T glGetTexParameterfv +0000000120008f90 T glGetTexParameteriv +0000000120009030 T glHint +0000000120009370 T glIndexMask +00000001200093b0 T glIndexPointer +0000000120011800 T glIndexPointerEXT +00000001200090d0 T glIndexd +0000000120009210 T glIndexdv +0000000120009110 T glIndexf +0000000120009260 T glIndexfv +0000000120009150 T glIndexi +00000001200092a0 T glIndexiv +0000000120009190 T glIndexs +00000001200092e0 T glIndexsv +00000001200091d0 T glIndexub +0000000120009330 T glIndexubv +00000001200094f0 T glInitNames +0000000120009450 T glInterleavedArrays +000000012000e330 T glIsEnabled +0000000120009590 T glIsList +0000000120009640 T glIsTexture +0000000120011c80 T glIsTextureEXT +0000000120009910 T glLightModelf +0000000120009a70 T glLightModelfv +00000001200099b0 T glLightModeli +0000000120009b10 T glLightModeliv +00000001200096f0 T glLightf +0000000120009860 T glLightfv +00000001200097a0 T glLighti +0000000120003330 T glLightiv +0000000120009d10 T glLineStipple +0000000120009c70 T glLineWidth +0000000120009db0 T glListBase +0000000120009e50 T glLoadIdentity +0000000120009ef0 T glLoadMatrixd +0000000120009fd0 T glLoadMatrixf +000000012000a070 T glLoadName +000000012000a110 T glLogicOp +000000012000a1b0 T glMap1d +000000012000a2e0 T glMap1f +000000012000a410 T glMap2d +000000012000a580 T glMap2f +000000012000a6e0 T glMapGrid1d +000000012000a7a0 T glMapGrid1f +000000012000a850 T glMapGrid2d +000000012000a920 T glMapGrid2f +000000012000a9d0 T glMaterialf +000000012000ab40 T glMaterialfv +000000012000aa80 T glMateriali +0000000120003520 T glMaterialiv +000000012000abe0 T glMatrixMode +000000012000ac80 T glMultMatrixd +000000012000ad60 T glMultMatrixf +000000012000ae00 T glNewList +000000012000aea0 T glNormal3b +000000012000b250 T glNormal3bv +000000012000af40 T glNormal3d +000000012000b320 T glNormal3dv +000000012000b070 T glNormal3f +000000012000b460 T glNormal3fv +000000012000b110 T glNormal3i +000000012000b500 T glNormal3iv +000000012000b1b0 T glNormal3s +000000012000b5a0 T glNormal3sv +000000012000b670 T glNormalPointer +00000001200116c0 T glNormalPointerEXT +000000012000bae0 T glOrtho +000000012000bba0 T glPassThrough +000000012000bc40 T glPixelMapfv +000000012000b710 T glPixelMapuiv +000000012000b8f0 T glPixelMapusv +000000012000bce0 T glPixelStoref +000000012000bd90 T glPixelStorei +000000012000be30 T glPixelTransferf +000000012000bee0 T glPixelTransferi +000000012000bfa0 T glPixelZoom +00000001200120f0 T glPointParameterfEXT +0000000120012190 T glPointParameterfvEXT +000000012000c040 T glPointSize +000000012000c0e0 T glPolygonMode +000000012000c180 T glPolygonOffset +000000012000c220 T glPolygonOffsetEXT +000000012000c2e0 T glPolygonStipple +000000012000c380 T glPopAttrib +000000012000c420 T glPopClientAttrib +000000012000c4c0 T glPopMatrix +000000012000c560 T glPopName +000000012000c600 T glPrioritizeTextures +0000000120011cb0 T glPrioritizeTexturesEXT +000000012000e3e0 T glPushAttrib +000000012000e480 T glPushClientAttrib +000000012000c6a0 T glPushMatrix +000000012000e520 T glPushName +000000012000c740 T glRasterPos2d +000000012000d090 T glRasterPos2dv +000000012000c800 T glRasterPos2f +000000012000d160 T glRasterPos2fv +000000012000c8b0 T glRasterPos2i +000000012000d220 T glRasterPos2iv +000000012000c980 T glRasterPos2s +000000012000d2f0 T glRasterPos2sv +000000012000ca50 T glRasterPos3d +000000012000d3e0 T glRasterPos3dv +000000012000cb20 T glRasterPos3f +000000012000d4a0 T glRasterPos3fv +000000012000cbd0 T glRasterPos3i +000000012000d550 T glRasterPos3iv +000000012000cca0 T glRasterPos3s +000000012000d620 T glRasterPos3sv +000000012000cd70 T glRasterPos4d +000000012000d730 T glRasterPos4dv +000000012000ce30 T glRasterPos4f +000000012000d7f0 T glRasterPos4fv +000000012000cef0 T glRasterPos4i +000000012000d8a0 T glRasterPos4iv +000000012000cfc0 T glRasterPos4s +000000012000d970 T glRasterPos4sv +000000012000da90 T glReadBuffer +000000012000db30 T glReadPixels +000000012000dc00 T glRectd +000000012000df20 T glRectdv +000000012000dcc0 T glRectf +000000012000dfe0 T glRectfv +000000012000dd80 T glRecti +000000012000e090 T glRectiv +000000012000de50 T glRects +000000012000e160 T glRectsv +000000012000e5c0 T glRenderMode +0000000120013510 T glResizeBuffersMESA +000000012000e660 T glRotated +000000012000e720 T glRotatef +000000012000e880 T glScaled +000000012000e930 T glScalef +000000012000e280 T glScissor +000000012000e7e0 T glSelectBuffer +000000012000e9e0 T glShadeModel +000000012000ea80 T glStencilFunc +000000012000eb20 T glStencilMask +000000012000ebc0 T glStencilOp +000000012000ec60 T glTexCoord1d +000000012000f210 T glTexCoord1dv +000000012000ecb0 T glTexCoord1f +000000012000f270 T glTexCoord1fv +000000012000ed00 T glTexCoord1i +000000012000f2c0 T glTexCoord1iv +000000012000ed60 T glTexCoord1s +000000012000f320 T glTexCoord1sv +000000012000edc0 T glTexCoord2d +000000012000f390 T glTexCoord2dv +000000012000ee10 T glTexCoord2f +000000012000f3e0 T glTexCoord2fv +000000012000ee50 T glTexCoord2i +000000012000f420 T glTexCoord2iv +000000012000eea0 T glTexCoord2s +000000012000f480 T glTexCoord2sv +000000012000eef0 T glTexCoord3d +000000012000f500 T glTexCoord3dv +000000012000ef50 T glTexCoord3f +000000012000f560 T glTexCoord3fv +000000012000efa0 T glTexCoord3i +000000012000f5b0 T glTexCoord3iv +000000012000f010 T glTexCoord3s +000000012000f620 T glTexCoord3sv +000000012000f080 T glTexCoord4d +000000012000f6c0 T glTexCoord4dv +000000012000f0e0 T glTexCoord4f +000000012000f720 T glTexCoord4fv +000000012000f130 T glTexCoord4i +000000012000f770 T glTexCoord4iv +000000012000f1a0 T glTexCoord4s +000000012000f7e0 T glTexCoord4sv +000000012000f8a0 T glTexCoordPointer +00000001200118a0 T glTexCoordPointerEXT +000000012000fde0 T glTexEnvf +000000012000ff60 T glTexEnvfv +000000012000fe90 T glTexEnvi +0000000120010000 T glTexEnviv +000000012000f950 T glTexGend +000000012000fb70 T glTexGendv +000000012000fa00 T glTexGenf +000000012000fd40 T glTexGenfv +000000012000fab0 T glTexGeni +000000012000fc50 T glTexGeniv +0000000120010140 T glTexImage1D +0000000120010280 T glTexImage2D +0000000120011e30 T glTexImage3DEXT +00000001200103c0 T glTexParameterf +0000000120010540 T glTexParameterfv +0000000120010470 T glTexParameteri +00000001200105e0 T glTexParameteriv +0000000120010750 T glTexSubImage1D +0000000120010880 T glTexSubImage2D +0000000120011f90 T glTexSubImage3DEXT +00000001200109c0 T glTranslated +0000000120010a70 T glTranslatef +0000000120010b20 T glVertex2d +0000000120010f30 T glVertex2dv +0000000120010b70 T glVertex2f +0000000120010f80 T glVertex2fv +0000000120010bb0 T glVertex2i +0000000120010fc0 T glVertex2iv +0000000120010c00 T glVertex2s +0000000120011020 T glVertex2sv +0000000120010c50 T glVertex3d +00000001200110a0 T glVertex3dv +0000000120010ca0 T glVertex3f +0000000120011100 T glVertex3fv +0000000120010ce0 T glVertex3i +0000000120011140 T glVertex3iv +0000000120010d40 T glVertex3s +00000001200111a0 T glVertex3sv +0000000120010da0 T glVertex4d +0000000120011240 T glVertex4dv +0000000120010e00 T glVertex4f +00000001200112a0 T glVertex4fv +0000000120010e50 T glVertex4i +00000001200112f0 T glVertex4iv +0000000120010ec0 T glVertex4s +0000000120011360 T glVertex4sv +0000000120011420 T glVertexPointer +0000000120011620 T glVertexPointerEXT +0000000120011470 T glViewport +0000000120012520 T glWindowPos2dMESA +0000000120012830 T glWindowPos2dvMESA +0000000120012470 T glWindowPos2fMESA +0000000120012780 T glWindowPos2fvMESA +00000001200122f0 T glWindowPos2iMESA +00000001200125e0 T glWindowPos2ivMESA +00000001200123b0 T glWindowPos2sMESA +00000001200126a0 T glWindowPos2svMESA +0000000120012b40 T glWindowPos3dMESA +0000000120012e70 T glWindowPos3dvMESA +0000000120012a90 T glWindowPos3fMESA +0000000120012dc0 T glWindowPos3fvMESA +00000001200128f0 T glWindowPos3iMESA +0000000120012c00 T glWindowPos3ivMESA +00000001200129c0 T glWindowPos3sMESA +0000000120012cc0 T glWindowPos3svMESA +00000001200130d0 T glWindowPos4dMESA +0000000120013440 T glWindowPos4dvMESA +0000000120012230 T glWindowPos4fMESA +0000000120013390 T glWindowPos4fvMESA +0000000120012f30 T glWindowPos4iMESA +0000000120013190 T glWindowPos4ivMESA +0000000120013000 T glWindowPos4sMESA +0000000120013270 T glWindowPos4svMESA +0000000120000fb0 T gl_Accum +0000000120002660 T gl_AlphaFunc +0000000120079e90 T gl_AreTexturesResident +000000012008ba30 T gl_ArrayElement +000000012008e8e0 T gl_Begin +0000000120079a30 T gl_BindTexture +0000000120015e40 T gl_Bitmap +00000001200163a0 T gl_BlendColor +00000001200162a0 T gl_BlendEquation +0000000120016160 T gl_BlendFunc +000000012002faf0 T gl_CallList +000000012002fb50 T gl_CallLists +000000012005dc40 T gl_Clear +0000000120002200 T gl_ClearAccum +000000012005da80 T gl_ClearColor +0000000120021400 T gl_ClearDepth +000000012005d9e0 T gl_ClearIndex +0000000120073640 T gl_ClearStencil +000000012001a5e0 T gl_ClipPlane +000000012008ed20 T gl_Color3f +000000012008ef20 T gl_Color3fv +000000012008f120 T gl_Color4f +000000012008f390 T gl_Color4fv +000000012008f600 T gl_Color4ub +000000012008f730 T gl_Color4ub8bit +000000012008f780 T gl_Color4ubv +000000012008f8d0 T gl_Color4ubv8bit +000000012005a770 T gl_ColorMask +000000012008f900 T gl_ColorMat3f +000000012008fb20 T gl_ColorMat3fv +000000012008fd60 T gl_ColorMat4f +0000000120090010 T gl_ColorMat4fv +00000001200902d0 T gl_ColorMat4ub +00000001200904c0 T gl_ColorMat4ubv +000000012004e190 T gl_ColorMaterial +000000012008b750 T gl_ColorPointer +000000012001b3e0 T gl_ColorSubTable +000000012001b010 T gl_ColorTable +000000012001e8d0 T gl_CopyPixels +0000000120075a90 T gl_CopyTexImage1D +0000000120075c50 T gl_CopyTexImage2D +0000000120075e50 T gl_CopyTexSubImage1D +0000000120075f80 T gl_CopyTexSubImage2D +0000000120076110 T gl_CopyTexSubImage3DEXT +000000012006ab20 T gl_CullFace +000000012002f860 T gl_DeleteLists +0000000120079820 T gl_DeleteTextures +0000000120021490 T gl_DepthFunc +0000000120021520 T gl_DepthMask +00000001200215a0 T gl_DepthRange +0000000120034b10 T gl_Disable +0000000120034dd0 T gl_DisableClientState +000000012008d0d0 T gl_DrawArrays +000000012005d6c0 T gl_DrawBuffer +000000012008d990 T gl_DrawElements +0000000120030830 T gl_DrawPixels +0000000120090710 T gl_EdgeFlag +000000012008e1f0 T gl_EdgeFlagPointer +0000000120034b00 T gl_Enable +0000000120034c50 T gl_EnableClientState +00000001200908e0 T gl_End +000000012002f920 T gl_EndList +00000001200388a0 T gl_EvalCoord1f +0000000120038d40 T gl_EvalCoord2f +0000000120039690 T gl_EvalMesh1 +0000000120039830 T gl_EvalMesh2 +000000012003a440 T gl_EvalPoint1 +0000000120039530 T gl_EvalPoint2 +000000012003bdd0 T gl_FeedbackBuffer +000000012005dd80 T gl_Finish +000000012005ddf0 T gl_Flush +000000012003ca70 T gl_Fogfv +000000012006abc0 T gl_FrontFace +000000012005aae0 T gl_Frustum +0000000120023540 T gl_GenLists +0000000120079fc0 T gl_GenTextures +000000012003e2d0 T gl_GetBooleanv +000000012001a6b0 T gl_GetClipPlane +000000012001b420 T gl_GetColorTable +000000012001b4e0 T gl_GetColorTableParameterfv +000000012001b280 T gl_GetColorTableParameteriv +00000001200419d0 T gl_GetDoublev +000000012001d050 T gl_GetError +0000000120045800 T gl_GetFloatv +00000001200492e0 T gl_GetIntegerv +000000012004d830 T gl_GetLightfv +000000012004da80 T gl_GetLightiv +00000001200367e0 T gl_GetMapdv +0000000120037060 T gl_GetMapfv +0000000120037930 T gl_GetMapiv +000000012004e390 T gl_GetMaterialfv +000000012004e5b0 T gl_GetMaterialiv +0000000120065190 T gl_GetPixelMapfv +0000000120065350 T gl_GetPixelMapuiv +0000000120065790 T gl_GetPixelMapusv +000000012004b460 T gl_GetPointerv +000000012006ad10 T gl_GetPolygonStipple +000000012005d420 T gl_GetString +000000012007bb80 T gl_GetTexEnvfv +000000012007bc70 T gl_GetTexEnviv +000000012007b420 T gl_GetTexGendv +000000012007b680 T gl_GetTexGenfv +000000012007b920 T gl_GetTexGeniv +00000001200763a0 T gl_GetTexImage +000000012007bd60 T gl_GetTexLevelParameterfv +000000012007a6d0 T gl_GetTexLevelParameteriv +000000012007a990 T gl_GetTexParameterfv +000000012007ad00 T gl_GetTexParameteriv +000000012005d5d0 T gl_Hint +000000012005a700 T gl_IndexMask +000000012008b860 T gl_IndexPointer +000000012008ecc0 T gl_Indexf +000000012008ecf0 T gl_Indexi +000000012003c620 T gl_InitNames +000000012008dcf0 T gl_InterleavedArrays +00000001200344c0 T gl_IsEnabled +00000001200234e0 T gl_IsList +000000012007a0a0 T gl_IsTexture +000000012004f2e0 T gl_LightModelfv +000000012004d340 T gl_Lightfv +000000012004f620 T gl_LineStipple +000000012004f5a0 T gl_LineWidth +00000001200237c0 T gl_ListBase +000000012005b3e0 T gl_LoadIdentity +000000012005c980 T gl_LoadMatrixf +000000012003c1d0 T gl_LoadName +0000000120057ab0 T gl_LogicOp +0000000120035d40 T gl_Map1f +0000000120036220 T gl_Map2f +000000012003a320 T gl_MapGrid1f +000000012003a3a0 T gl_MapGrid2f +000000012004e290 T gl_Materialfv +000000012005c900 T gl_MatrixMode +000000012005b6f0 T gl_MultMatrixf +0000000120023690 T gl_NewList +000000012008ec50 T gl_Normal3f +000000012008ec80 T gl_Normal3fv +000000012008b670 T gl_NormalPointer +000000012005aca0 T gl_Ortho +000000012003c470 T gl_PassThrough +0000000120064bc0 T gl_PixelMapfv +00000001200648a0 T gl_PixelStorei +0000000120065ce0 T gl_PixelTransferf +0000000120066320 T gl_PixelZoom +0000000120067160 T gl_PointParameterfvEXT +0000000120067530 T gl_PointSize +000000012006aa00 T gl_PolygonMode +000000012006ad20 T gl_PolygonOffset +000000012006ac30 T gl_PolygonStipple +0000000120014560 T gl_PopAttrib +00000001200156b0 T gl_PopClientAttrib +000000012005b0e0 T gl_PopMatrix +000000012003c7f0 T gl_PopName +0000000120079d50 T gl_PrioritizeTextures +00000001200135b0 T gl_PushAttrib +0000000120015470 T gl_PushClientAttrib +000000012005adf0 T gl_PushMatrix +000000012003c710 T gl_PushName +000000012006ae90 T gl_RasterPos4f +000000012005d860 T gl_ReadBuffer +000000012006b910 T gl_ReadPixels +000000012006e450 T gl_Rectf +000000012003c2b0 T gl_RenderMode +000000012001c560 T gl_ResizeBuffersMESA +000000012005cbf0 T gl_Rotatef +000000012005bd30 T gl_Scalef +000000012006e580 T gl_Scissor +000000012003c530 T gl_SelectBuffer +000000012004f240 T gl_ShadeModel +00000001200736c0 T gl_StencilFunc +0000000120073790 T gl_StencilMask +0000000120072410 T gl_StencilOp +0000000120090830 T gl_TexCoord2f +0000000120090840 T gl_TexCoord2f4 +0000000120090870 T gl_TexCoord4f +000000012008b930 T gl_TexCoordPointer +000000012007a130 T gl_TexEnvfv +000000012007b0b0 T gl_TexGenfv +0000000120074530 T gl_TexImage1D +00000001200747e0 T gl_TexImage2D +0000000120074a90 T gl_TexImage3DEXT +000000012007a330 T gl_TexParameterfv +0000000120074d70 T gl_TexSubImage1D +0000000120075090 T gl_TexSubImage2D +00000001200754f0 T gl_TexSubImage3DEXT +000000012005bec0 T gl_Translatef +000000012008b570 T gl_VertexPointer +000000012005cc40 T gl_Viewport +00000001200979a0 T gl_WindowPos4fMESA +0000000120002140 T gl_alloc_accum_buffer +0000000120002740 T gl_alloc_alpha_buffers +0000000120021b40 T gl_alloc_depth_buffer +0000000120063ad0 T gl_alloc_pb +00000001200738f0 T gl_alloc_stencil_buffer +00000001200762f0 T gl_alloc_texture_image +00000001200792d0 T gl_alloc_texture_object +000000012008e270 T gl_alloc_vb +0000000120002330 T gl_alpha_test +000000012005c080 T gl_analyze_modelview_matrix +000000012005c3f0 T gl_analyze_projection_matrix +000000012005c6a0 T gl_analyze_texture_matrix +0000000120016550 T gl_blend_pixels +0000000120016460 T gl_blend_span +0000000120001da0 T gl_clear_accum_buffer +00000001200028e0 T gl_clear_alpha_buffers +00000001200210d0 T gl_clear_depth_buffer +00000001200739d0 T gl_clear_stencil_buffer +0000000120034b20 T gl_client_state +000000012006e780 T gl_color_shade_vertices +000000012006f180 T gl_color_shade_vertices_fast +000000012004d210 T gl_components_in_format +000000012004eaf0 T gl_compute_material_shine_table +000000012004e9c0 T gl_compute_spot_exp_table +000000012001bd80 T gl_copy_context +0000000120039f40 T gl_copy_map_points1d +0000000120039e50 T gl_copy_map_points1f +000000012003a1a0 T gl_copy_map_points2d +000000012003a030 T gl_copy_map_points2f +000000012001b9f0 T gl_create_context +000000012001ce30 T gl_create_framebuffer +000000012001b670 T gl_create_visual +0000000120073450 T gl_depth_stencil_pixels +0000000120072b50 T gl_depth_stencil_span +0000000120020790 T gl_depth_test_pixels_generic +00000001200218d0 T gl_depth_test_pixels_greater +0000000120021810 T gl_depth_test_pixels_less +0000000120020000 T gl_depth_test_span_generic +0000000120021760 T gl_depth_test_span_greater +00000001200216b0 T gl_depth_test_span_less +000000012001cc60 T gl_destroy_context +000000012001bc70 T gl_destroy_framebuffer +0000000120021c00 T gl_destroy_list +000000012001cc30 T gl_destroy_visual +0000000120034f00 t gl_enable +000000012001c1d0 T gl_error +000000012008e670 T gl_eval_vertex +000000012003bf70 T gl_feedback_vertex +000000012004d020 T gl_flip_bytes +0000000120062c40 T gl_flush_pb +000000012003d4d0 T gl_fog_color_pixels +000000012003cbb0 T gl_fog_color_vertices +000000012003dd90 T gl_fog_index_pixels +000000012003d140 T gl_fog_index_vertices +0000000120035b70 T gl_free_control_points +000000012004d2d0 T gl_free_image +0000000120076330 T gl_free_texture_image +0000000120079420 T gl_free_texture_object +000000012001cef0 T gl_get_current_context +000000012006f6b0 T gl_index_shade_vertices +00000001200664a0 T gl_init_api_function_pointers +0000000120039e30 T gl_init_eval +0000000120021e00 T gl_init_lists +000000012005e3c0 T gl_init_math +0000000120023820 T gl_list_index +0000000120058140 T gl_logicop_ci_pixels +0000000120057b40 T gl_logicop_ci_span +00000001200595d0 T gl_logicop_rgba_pixels +0000000120058740 T gl_logicop_rgba_span +000000012001ce90 T gl_make_current +000000012005a540 T gl_mask_color_pixels +000000012005a800 T gl_mask_color_span +000000012005aa20 T gl_mask_index_pixels +000000012005a960 T gl_mask_index_span +000000012004dd90 T gl_material_bitmask +000000012004bd20 T gl_pixel_addr_in_image +000000012001cf60 T gl_problem +0000000120002ef0 T gl_read_alpha_pixels +0000000120002e80 T gl_read_alpha_span +0000000120071ff0 T gl_read_color_span +0000000120021990 T gl_read_depth_span_float +0000000120021aa0 T gl_read_depth_span_int +0000000120072220 T gl_read_index_span +0000000120073810 T gl_read_stencil_span +00000001200159f0 T gl_render_bitmap +0000000120091e80 T gl_render_vb +0000000120092c40 T gl_reset_vb +000000012005bae0 T gl_rotation_matrix +0000000120023840 T gl_save_Accum +00000001200239c0 T gl_save_AlphaFunc +000000012008c820 T gl_save_ArrayElement +0000000120023b40 T gl_save_Begin +0000000120023cb0 T gl_save_BindTexture +0000000120023e30 T gl_save_Bitmap +0000000120024300 T gl_save_BlendColor +0000000120024010 T gl_save_BlendEquation +0000000120024180 T gl_save_BlendFunc +00000001200244b0 T gl_save_CallList +0000000120024620 T gl_save_CallLists +00000001200247e0 T gl_save_Clear +0000000120024950 T gl_save_ClearAccum +0000000120024b00 T gl_save_ClearColor +0000000120024cb0 T gl_save_ClearDepth +0000000120024e30 T gl_save_ClearIndex +0000000120024fa0 T gl_save_ClearStencil +0000000120025110 T gl_save_ClipPlane +00000001200252b0 T gl_save_Color3f +0000000120025450 T gl_save_Color3fv +00000001200255d0 T gl_save_Color4f +0000000120025780 T gl_save_Color4fv +0000000120025910 T gl_save_Color4ub +0000000120025ae0 T gl_save_Color4ubv +0000000120025cc0 T gl_save_ColorMask +0000000120025e90 T gl_save_ColorMaterial +00000001200261c0 T gl_save_ColorSubTable +0000000120026010 T gl_save_ColorTable +0000000120026370 T gl_save_CopyPixels +0000000120026520 T gl_save_CopyTexImage1D +0000000120026700 T gl_save_CopyTexImage2D +00000001200268f0 T gl_save_CopyTexSubImage1D +0000000120026ab0 T gl_save_CopyTexSubImage2D +0000000120026ca0 T gl_save_CopyTexSubImage3DEXT +0000000120026eb0 T gl_save_CullFace +0000000120027020 T gl_save_DepthFunc +0000000120027190 T gl_save_DepthMask +0000000120027310 T gl_save_DepthRange +00000001200274a0 T gl_save_Disable +000000012008d8a0 T gl_save_DrawArrays +0000000120027610 T gl_save_DrawBuffer +000000012008db60 T gl_save_DrawElements +0000000120027780 T gl_save_DrawPixels +00000001200278f0 T gl_save_EdgeFlag +0000000120027a70 T gl_save_Enable +0000000120027be0 T gl_save_End +0000000120027d40 T gl_save_EvalCoord1f +0000000120027eb0 T gl_save_EvalCoord2f +0000000120028030 T gl_save_EvalMesh1 +00000001200281c0 T gl_save_EvalMesh2 +0000000120028370 T gl_save_EvalPoint1 +00000001200284e0 T gl_save_EvalPoint2 +0000000120028660 T gl_save_Fogfv +0000000120028800 T gl_save_FrontFace +0000000120028970 T gl_save_Frustum +0000000120028b60 T gl_save_Hint +0000000120028fd0 T gl_save_IndexMask +0000000120028e50 T gl_save_Indexf +0000000120028ce0 T gl_save_Indexi +0000000120029140 T gl_save_InitNames +000000012008e260 T gl_save_InterleavedArrays +0000000120029460 T gl_save_LightModelfv +00000001200292a0 T gl_save_Lightfv +0000000120029600 T gl_save_LineStipple +0000000120029790 T gl_save_LineWidth +0000000120029900 T gl_save_ListBase +0000000120029a70 T gl_save_LoadIdentity +0000000120029bd0 T gl_save_LoadMatrixf +0000000120029d70 T gl_save_LoadName +0000000120029ee0 T gl_save_LogicOp +000000012002a050 T gl_save_Map1f +000000012002a220 T gl_save_Map2f +000000012002a440 T gl_save_MapGrid1f +000000012002a5e0 T gl_save_MapGrid2f +000000012002a7b0 T gl_save_Materialfv +000000012002a960 T gl_save_MatrixMode +000000012002aad0 T gl_save_MultMatrixf +000000012002ac70 T gl_save_NewList +000000012002ae30 T gl_save_Normal3f +000000012002acb0 T gl_save_Normal3fv +000000012002afd0 T gl_save_Ortho +000000012002ca10 T gl_save_PassThrough +000000012002b1c0 T gl_save_PixelMapfv +000000012002b390 T gl_save_PixelTransferf +000000012002b510 T gl_save_PixelZoom +000000012002b690 T gl_save_PointParameterfvEXT +000000012002b830 T gl_save_PointSize +000000012002b9a0 T gl_save_PolygonMode +000000012002bcc0 T gl_save_PolygonOffset +000000012002bb20 T gl_save_PolygonStipple +000000012002be40 T gl_save_PopAttrib +000000012002bfa0 T gl_save_PopMatrix +000000012002c100 T gl_save_PopName +000000012002c260 T gl_save_PrioritizeTextures +000000012002c420 T gl_save_PushAttrib +000000012002c590 T gl_save_PushMatrix +000000012002c6f0 T gl_save_PushName +000000012002c860 T gl_save_RasterPos4f +000000012002cb80 T gl_save_ReadBuffer +000000012002ccf0 T gl_save_Rectf +000000012002cea0 T gl_save_Rotatef +000000012002cf00 T gl_save_Scalef +000000012002d0a0 T gl_save_Scissor +000000012002d240 T gl_save_ShadeModel +000000012002d3b0 T gl_save_StencilFunc +000000012002d540 T gl_save_StencilMask +000000012002d6b0 T gl_save_StencilOp +000000012002d840 T gl_save_TexCoord2f +000000012002d9c0 T gl_save_TexCoord4f +000000012002db70 T gl_save_TexEnvfv +000000012002dd20 T gl_save_TexGenfv +000000012002e080 T gl_save_TexImage1D +000000012002e280 T gl_save_TexImage2D +000000012002e4a0 T gl_save_TexImage3DEXT +000000012002ded0 T gl_save_TexParameterfv +000000012002e6c0 T gl_save_TexSubImage1D +000000012002e8b0 T gl_save_TexSubImage2D +000000012002ead0 T gl_save_TexSubImage3DEXT +000000012002ed20 T gl_save_Translatef +000000012002eec0 T gl_save_Vertex2f +000000012002f040 T gl_save_Vertex3f +000000012002f390 T gl_save_Vertex3fv +000000012002f1e0 T gl_save_Vertex4f +000000012002f510 T gl_save_Viewport +000000012002f6b0 T gl_save_WindowPos4fMESA +000000012006e6e0 T gl_scissor_pixels +000000012006e620 T gl_scissor_span +000000012001cf10 T gl_set_api_table +000000012008e570 T gl_set_color_function +000000012004f430 T gl_set_line_function +000000012004de80 T gl_set_material +00000001200673e0 T gl_set_point_function +000000012006ad80 T gl_set_quad_function +000000012007c950 T gl_set_texture_sampler +00000001200838a0 T gl_set_triangle_function +000000012008e3c0 T gl_set_vertex_function +000000012004d180 T gl_sizeof_type +000000012005e370 T gl_sqrt +0000000120072d40 T gl_stencil_pixels +0000000120072510 T gl_stencil_span +000000012004d0c0 T gl_swap2 +000000012004d120 T gl_swap4 +0000000120079540 T gl_test_texture_object_completeness +000000012007be80 T gl_texgen +000000012007cb00 T gl_texture_pixels +0000000120095710 T gl_transform_vb_part1 +00000001200952a0 T gl_transform_vb_part2 +0000000120098180 T gl_transform_vector +0000000120016120 T gl_unpack_bitmap +000000012004d290 T gl_unpack_image +000000012004bf80 T gl_unpack_image3D +0000000120065f90 T gl_unpack_pixels +00000001200763e0 T gl_unpack_texsubimage +000000012003c6b0 T gl_update_hitflag +000000012004eb30 T gl_update_lighting +000000012001c690 T gl_update_state +000000012007bdb0 T gl_update_texture_state +0000000120019bc0 T gl_userclip_line +000000012001a800 T gl_userclip_point +0000000120019fe0 T gl_userclip_polygon +00000001200907b0 T gl_vertex2f_nop +0000000120090770 T gl_vertex3f_nop +00000001200907f0 T gl_vertex3fv_nop +0000000120090730 T gl_vertex4f_nop +0000000120017660 T gl_viewclip_line +000000012001a770 T gl_viewclip_point +0000000120018340 T gl_viewclip_polygon +000000012001cfd0 T gl_warning +000000012006b500 T gl_windowpos +0000000120002c50 T gl_write_alpha_pixels +0000000120002ac0 T gl_write_alpha_span +0000000120070780 T gl_write_color_span +000000012006fd10 T gl_write_index_span +0000000120002d70 T gl_write_mono_alpha_pixels +0000000120002ba0 T gl_write_mono_alpha_span +0000000120070f00 T gl_write_monocolor_span +00000001200701b0 T gl_write_monoindex_span +0000000120073880 T gl_write_stencil_span +0000000120071840 T gl_write_texture_span +0000000120063b50 T gl_write_zoomed_color_span +00000001200640c0 T gl_write_zoomed_index_span +00000001200644e0 T gl_write_zoomed_stencil_span +0000000120097ea0 T gl_xform_normals_3fv +0000000120097c90 T gl_xform_points_3fv +00000001200979d0 T gl_xform_points_4fv +00000001200b0020 d grayblue.8 +00000001200b0010 d graygreen.7 +00000001200b0000 d grayred.6 +000000012003a500 t horner_bezier_curve +000000012003a720 t horner_bezier_surf +00000001200aff20 d identity.0 +0000000120076780 t image_to_texture +0000000120066b90 t init_dlist_pointers +00000001200665c0 t init_exec_pointers +00000001200b93f8 s init_flag.0 +00000001200b9420 s init_flag.0 +000000012001e7c0 t init_light +000000012001d270 t initialize_context +00000001200b9424 s initialized.0 +000000012001a8c0 t interpolate_aux +000000012005cda0 t invert_matrix +000000012005d130 t invert_matrix_general +00000001200897a0 t lambda_textured_triangle +0000000120098270 T main +0000000120077d40 t make_null_texture +000000012002fc30 T mesa_print_display_list +0000000120057aa0 t null_line +0000000120069050 t null_points +000000012006ae80 t null_quad +000000012008b560 t null_triangle +000000012007e110 t opt_sample_rgb_2d +000000012007e2c0 t opt_sample_rgba_2d +000000012005e7c0 t osmesa_setup_DD_pointers +00000001200b93b0 g p.0 +0000000120082df0 t palette_sample +00000001200afff0 d posblue.5 +00000001200affe0 d posgreen.4 +00000001200affd0 d posred.3 +000000012002fdd0 t print_list +00000001200963f0 t project_and_cliptest +000000012006ade0 t quad +0000000120030ae0 t quickdraw_rgb +0000000120078780 t read_color_image +000000012005fa40 t read_color_pixels +000000012006ce90 t read_color_pixels +00000001200600f0 t read_color_pixels3 +000000012005f8e0 t read_color_span +000000012005fff0 t read_color_span3 +000000012006c140 t read_depth_pixels +000000012005f9c0 t read_index_pixels +000000012006bae0 t read_index_pixels +000000012005f890 t read_index_span +000000012006c880 t read_stencil_pixels +0000000120093ac0 t render_clipped_line +0000000120094390 t render_clipped_polygon +0000000120093f70 t render_polygon +0000000120094d40 t render_quad +0000000120094a70 t render_triangle +00000001200b9a00 b renderer.0 +0000000120061a80 t renderer_string +00000001200807d0 t sample_1d_linear +00000001200804c0 t sample_1d_nearest +0000000120081060 t sample_2d_linear +0000000120080c70 t sample_2d_nearest +0000000120081dd0 t sample_3d_linear +0000000120081920 t sample_3d_nearest +000000012007cd70 t sample_lambda_1d +000000012007d7d0 t sample_lambda_2d +000000012007e680 t sample_lambda_3d +000000012007ccb0 t sample_linear_1d +000000012007d700 t sample_linear_2d +000000012007e5a0 t sample_linear_3d +000000012007cbf0 t sample_nearest_1d +000000012007d630 t sample_nearest_2d +000000012007e4c0 t sample_nearest_3d +000000012004fbb0 t select_line +0000000120067950 t select_points +0000000120083f60 t select_triangle +000000012005ef50 t set_buffer +000000012005f300 t set_color +000000012005f2f0 t set_index +0000000120096f30 t shade_vertices +0000000120086820 t simple_textured_triangle +0000000120087250 t simple_z_textured_triangle +0000000120067280 T size1_ci_points +0000000120067a30 t size1_rgba_points +0000000120050960 t smooth_ci_line +0000000120084850 t smooth_ci_triangle +0000000120050bc0 t smooth_ci_z_line +0000000120060460 t smooth_color_z_triangle +0000000120050f00 t smooth_rgba_line +0000000120085a20 t smooth_rgba_triangle +00000001200513f0 t smooth_rgba_z_line +0000000120056630 t smooth_textured_line +00000001200b9de8 b sqrttab +00000001200affa0 d texPlane.0 +0000000120078040 t texture_1d_error_check +0000000120078250 t texture_2d_error_check +00000001200784a0 t texture_3d_error_check +00000001200683e0 t textured_rgba_points +00000001200b9618 b tmp +0000000120095830 t transform_points3 +0000000120095c40 t transform_points4 +00000001200960b0 t transform_texcoords +000000012002fc50 t translate_id +0000000120095020 t unfilled_polygon +000000012001e720 t update_clipmask +0000000120097630 t update_material +000000012001e320 t update_pixel_logic +000000012001e3f0 t update_pixel_masking +000000012001e520 t update_rasterflags +0000000120096b10 t userclip_vertices +00000001200b93b8 g vendor.1 +00000001200b93c0 g version.2 +00000001200916b0 t vertex2f_color +0000000120091500 t vertex2f_color_tex2 +00000001200915d0 t vertex2f_color_tex4 +0000000120090b20 t vertex2f_feedback +0000000120091770 t vertex2f_index +0000000120091440 t vertex2f_normal +0000000120091250 t vertex2f_normal_color_tex2 +0000000120091340 t vertex2f_normal_color_tex4 +00000001200910d0 t vertex3f_color +0000000120090f20 t vertex3f_color_tex2 +0000000120090ff0 t vertex3f_color_tex4 +0000000120090b00 t vertex3f_feedback +0000000120091190 t vertex3f_index +0000000120090e60 t vertex3f_normal +0000000120090c70 t vertex3f_normal_color_tex2 +0000000120090d60 t vertex3f_normal_color_tex4 +0000000120091ce0 t vertex3fv_color +0000000120091b10 t vertex3fv_color_tex2 +0000000120091bf0 t vertex3fv_color_tex4 +0000000120090b40 t vertex3fv_feedback +0000000120091db0 t vertex3fv_index +0000000120091a40 t vertex3fv_normal +0000000120091830 t vertex3fv_normal_color_tex2 +0000000120091930 t vertex3fv_normal_color_tex4 +0000000120090b60 t vertex4 +00000001200909f0 t vertex4f_feedback +0000000120096c50 t viewport_map_vertices +00000001200affc0 d white.2 +000000012005f520 t write_color_pixels +000000012005fde0 t write_color_pixels3 +000000012005f360 t write_color_span +000000012005fb50 t write_color_span3 +000000012003c8c0 t write_hit_record +000000012005f780 t write_index_pixels +000000012005f6a0 t write_index_span +000000012005f630 t write_monocolor_pixels +000000012005fef0 t write_monocolor_pixels3 +000000012005f4d0 t write_monocolor_span +000000012005fcf0 t write_monocolor_span3 +000000012005f810 t write_monoindex_pixels +000000012005f710 t write_monoindex_span diff --git a/configs/boot/micro_tlblat2.rcS b/configs/boot/micro_tlblat2.rcS new file mode 100644 index 000000000..ab05fd9ff --- /dev/null +++ b/configs/boot/micro_tlblat2.rcS @@ -0,0 +1,3 @@ +/benchmarks/micros/lmbench/bin/alphaev6-linux-gnu/lat_mem_rd_2MB 2 8192 +m5 exit + diff --git a/configs/boot/micro_tlblat3.rcS b/configs/boot/micro_tlblat3.rcS new file mode 100644 index 000000000..fd5fd53c1 --- /dev/null +++ b/configs/boot/micro_tlblat3.rcS @@ -0,0 +1,3 @@ +/benchmarks/micros/lmbench/bin/alphaev6-linux-gnu/lat_mem_rd_2MB 20 8192 +m5 exit + diff --git a/configs/example/fs.py b/configs/example/fs.py index 71c5961ef..5edda6e5f 100644 --- a/configs/example/fs.py +++ b/configs/example/fs.py @@ -49,10 +49,12 @@ parser.add_option("--dual", action="store_true", parser.add_option("-b", "--benchmark", action="store", type="string", dest="benchmark", help="Specify the benchmark to run. Available benchmarks: %s"\ - % DefinedBenchmarks) + % DefinedBenchmarks) parser.add_option("--etherdump", action="store", type="string", dest="etherdump", - help="Specify the filename to dump a pcap capture of the ethernet" - "traffic") + help="Specify the filename to dump a pcap capture of the" \ + "ethernet traffic") +parser.add_option("--checkpoint_dir", action="store", type="string", + help="Place all checkpoints in this absolute directory") (options, args) = parser.parse_args() @@ -123,7 +125,14 @@ else: exit_event = m5.simulate(maxtick) while exit_event.getCause() == "checkpoint": - m5.checkpoint(root, "cpt.%d") - exit_event = m5.simulate(maxtick - m5.curTick()) + if options.checkpoint_dir: + m5.checkpoint(root, "/".join([options.checkpoint_dir, "cpt.%d"])) + else: + m5.checkpoint(root, "cpt.%d") + + if maxtick == -1: + exit_event = m5.simulate(maxtick) + else: + exit_event = m5.simulate(maxtick - m5.curTick()) print 'Exiting @ cycle', m5.curTick(), 'because', exit_event.getCause() diff --git a/src/arch/alpha/ev5.cc b/src/arch/alpha/ev5.cc index 796ed07de..7595423c3 100644 --- a/src/arch/alpha/ev5.cc +++ b/src/arch/alpha/ev5.cc @@ -554,6 +554,7 @@ AlphaISA::MiscRegFile::setIpr(int idx, uint64_t val, ThreadContext *tc) return NoFault; } + void AlphaISA::copyIprs(ThreadContext *src, ThreadContext *dest) { @@ -562,6 +563,7 @@ AlphaISA::copyIprs(ThreadContext *src, ThreadContext *dest) } } + /** * Check for special simulator handling of specific PAL calls. * If return value is false, actual PAL call will be suppressed. diff --git a/src/arch/alpha/freebsd/system.cc b/src/arch/alpha/freebsd/system.cc index 8d50e1612..99be25057 100644 --- a/src/arch/alpha/freebsd/system.cc +++ b/src/arch/alpha/freebsd/system.cc @@ -105,6 +105,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(FreebsdAlphaSystem) Param<string> boot_osflags; Param<string> readfile; + Param<string> symbolfile; Param<unsigned int> init_param; Param<uint64_t> system_type; @@ -124,6 +125,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(FreebsdAlphaSystem) INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot", "a"), INIT_PARAM_DFLT(readfile, "file to read startup script from", ""), + INIT_PARAM_DFLT(symbolfile, "file to read symbols from", ""), INIT_PARAM_DFLT(init_param, "numerical value to pass into simulator", 0), INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 34), INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 1<<10) @@ -143,6 +145,7 @@ CREATE_SIM_OBJECT(FreebsdAlphaSystem) p->boot_osflags = boot_osflags; p->init_param = init_param; p->readfile = readfile; + p->symbolfile = symbolfile; p->system_type = system_type; p->system_rev = system_rev; return new FreebsdAlphaSystem(p); diff --git a/src/arch/alpha/isa/decoder.isa b/src/arch/alpha/isa/decoder.isa index 30959c72e..5bd19b677 100644 --- a/src/arch/alpha/isa/decoder.isa +++ b/src/arch/alpha/isa/decoder.isa @@ -701,7 +701,7 @@ decode OPCODE default Unknown::unknown() { 0x00: decode PALFUNC { format EmulatedCallPal { 0x00: halt ({{ - exitSimLoop(curTick, "halt instruction encountered"); + exitSimLoop("halt instruction encountered"); }}, IsNonSpeculative); 0x83: callsys({{ xc->syscall(R0); @@ -779,10 +779,10 @@ decode OPCODE default Unknown::unknown() { }}, IsNonSpeculative, IsQuiesce); 0x03: quiesceCycles({{ AlphaPseudo::quiesceCycles(xc->tcBase(), R16); - }}, IsNonSpeculative, IsQuiesce); + }}, IsNonSpeculative, IsQuiesce, IsUnverifiable); 0x04: quiesceTime({{ R0 = AlphaPseudo::quiesceTime(xc->tcBase()); - }}, IsNonSpeculative); + }}, IsNonSpeculative, IsUnverifiable); 0x10: ivlb({{ AlphaPseudo::ivlb(xc->tcBase()); }}, No_OpClass, IsNonSpeculative); @@ -795,6 +795,9 @@ decode OPCODE default Unknown::unknown() { 0x21: m5exit({{ AlphaPseudo::m5exit(xc->tcBase(), R16); }}, No_OpClass, IsNonSpeculative); + 0x31: loadsymbol({{ + AlphaPseudo::loadsymbol(xc->tcBase()); + }}, No_OpClass, IsNonSpeculative); 0x30: initparam({{ Ra = xc->tcBase()->getCpuPtr()->system->init_param; }}); 0x40: resetstats({{ AlphaPseudo::resetstats(xc->tcBase(), R16, R17); diff --git a/src/arch/alpha/isa/mem.isa b/src/arch/alpha/isa/mem.isa index a5dda7fc6..fe69c36a5 100644 --- a/src/arch/alpha/isa/mem.isa +++ b/src/arch/alpha/isa/mem.isa @@ -528,7 +528,7 @@ def template MiscInitiateAcc {{ Fault %(class_name)s::initiateAcc(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const { - panic("Misc instruction does not support split access method!"); + warn("Misc instruction does not support split access method!"); return NoFault; } }}; @@ -539,7 +539,7 @@ def template MiscCompleteAcc {{ %(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const { - panic("Misc instruction does not support split access method!"); + warn("Misc instruction does not support split access method!"); return NoFault; } diff --git a/src/arch/alpha/linux/system.cc b/src/arch/alpha/linux/system.cc index ef4e18cb5..7cf234eeb 100644 --- a/src/arch/alpha/linux/system.cc +++ b/src/arch/alpha/linux/system.cc @@ -199,6 +199,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(LinuxAlphaSystem) Param<string> boot_osflags; Param<string> readfile; + Param<string> symbolfile; Param<unsigned int> init_param; Param<uint64_t> system_type; @@ -218,6 +219,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(LinuxAlphaSystem) INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot", "a"), INIT_PARAM_DFLT(readfile, "file to read startup script from", ""), + INIT_PARAM_DFLT(symbolfile, "file to read symbols from", ""), INIT_PARAM_DFLT(init_param, "numerical value to pass into simulator", 0), INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 34), INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 1<<10) @@ -237,6 +239,7 @@ CREATE_SIM_OBJECT(LinuxAlphaSystem) p->boot_osflags = boot_osflags; p->init_param = init_param; p->readfile = readfile; + p->symbolfile = symbolfile; p->system_type = system_type; p->system_rev = system_rev; return new LinuxAlphaSystem(p); diff --git a/src/arch/alpha/system.cc b/src/arch/alpha/system.cc index a7e615531..5597eaedc 100644 --- a/src/arch/alpha/system.cc +++ b/src/arch/alpha/system.cc @@ -229,6 +229,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(AlphaSystem) Param<std::string> boot_osflags; Param<std::string> readfile; + Param<std::string> symbolfile; Param<unsigned int> init_param; Param<uint64_t> system_type; @@ -248,6 +249,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(AlphaSystem) INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot", "a"), INIT_PARAM_DFLT(readfile, "file to read startup script from", ""), + INIT_PARAM_DFLT(symbolfile, "file to read symbols from", ""), INIT_PARAM_DFLT(init_param, "numerical value to pass into simulator", 0), INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 34), INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 1<<10) @@ -267,6 +269,7 @@ CREATE_SIM_OBJECT(AlphaSystem) p->boot_osflags = boot_osflags; p->init_param = init_param; p->readfile = readfile; + p->symbolfile = symbolfile; p->system_type = system_type; p->system_rev = system_rev; return new AlphaSystem(p); diff --git a/src/arch/alpha/tru64/system.cc b/src/arch/alpha/tru64/system.cc index 3ef1e4d3c..00918bda4 100644 --- a/src/arch/alpha/tru64/system.cc +++ b/src/arch/alpha/tru64/system.cc @@ -103,6 +103,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Tru64AlphaSystem) Param<string> boot_osflags; Param<string> readfile; + Param<string> symbolfile; Param<unsigned int> init_param; Param<uint64_t> system_type; @@ -122,6 +123,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Tru64AlphaSystem) INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot", "a"), INIT_PARAM_DFLT(readfile, "file to read startup script from", ""), + INIT_PARAM_DFLT(symbolfile, "file to read symbols from", ""), INIT_PARAM_DFLT(init_param, "numerical value to pass into simulator", 0), INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 12), INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 2<<1) @@ -141,6 +143,7 @@ CREATE_SIM_OBJECT(Tru64AlphaSystem) p->boot_osflags = boot_osflags; p->init_param = init_param; p->readfile = readfile; + p->symbolfile = symbolfile; p->system_type = system_type; p->system_rev = system_rev; diff --git a/src/arch/sparc/system.cc b/src/arch/sparc/system.cc index 63cbbe057..ef6443d17 100644 --- a/src/arch/sparc/system.cc +++ b/src/arch/sparc/system.cc @@ -152,10 +152,6 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(SparcSystem) Param<std::string> readfile; Param<unsigned int> init_param; - Param<bool> bin; - VectorParam<std::string> binned_fns; - Param<bool> bin_int; - END_DECLARE_SIM_OBJECT_PARAMS(SparcSystem) BEGIN_INIT_SIM_OBJECT_PARAMS(SparcSystem) @@ -173,10 +169,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(SparcSystem) INIT_PARAM_DFLT(readfile, "file to read startup script from", ""), INIT_PARAM_DFLT(init_param, "numerical value to pass into simulator", 0), INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 34), - INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 1<<10), - INIT_PARAM_DFLT(bin, "is this system to be binned", false), - INIT_PARAM(binned_fns, "functions to be broken down and binned"), - INIT_PARAM_DFLT(bin_int, "is interrupt code binned seperately?", true) + INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 1<<10) END_INIT_SIM_OBJECT_PARAMS(SparcSystem) @@ -196,9 +189,6 @@ CREATE_SIM_OBJECT(SparcSystem) p->readfile = readfile; p->system_type = system_type; p->system_rev = system_rev; - p->bin = bin; - p->binned_fns = binned_fns; - p->bin_int = bin_int; return new SparcSystem(p); } diff --git a/src/cpu/base.cc b/src/cpu/base.cc index ce440aeff..ea4b03bf2 100644 --- a/src/cpu/base.cc +++ b/src/cpu/base.cc @@ -41,6 +41,7 @@ #include "cpu/cpuevent.hh" #include "cpu/thread_context.hh" #include "cpu/profile.hh" +#include "sim/sim_exit.hh" #include "sim/param.hh" #include "sim/process.hh" #include "sim/sim_events.hh" @@ -48,6 +49,9 @@ #include "base/trace.hh" +// Hack +#include "sim/stat_control.hh" + using namespace std; vector<BaseCPU *> BaseCPU::cpuList; @@ -57,6 +61,39 @@ vector<BaseCPU *> BaseCPU::cpuList; // been initialized int maxThreadsPerCPU = 1; +CPUProgressEvent::CPUProgressEvent(EventQueue *q, Tick ival, + BaseCPU *_cpu) + : Event(q, Event::Stat_Event_Pri), interval(ival), + lastNumInst(0), cpu(_cpu) +{ + if (interval) + schedule(curTick + interval); +} + +void +CPUProgressEvent::process() +{ + Counter temp = cpu->totalInstructions(); +#ifndef NDEBUG + double ipc = double(temp - lastNumInst) / (interval / cpu->cycles(1)); + + DPRINTFN("%s progress event, instructions committed: %lli, IPC: %0.8d\n", + cpu->name(), temp - lastNumInst, ipc); + ipc = 0.0; +#else + cprintf("%lli: %s progress event, instructions committed: %lli\n", + curTick, cpu->name(), temp - lastNumInst); +#endif + lastNumInst = temp; + schedule(curTick + interval); +} + +const char * +CPUProgressEvent::description() +{ + return "CPU Progress event"; +} + #if FULL_SYSTEM BaseCPU::BaseCPU(Params *p) : MemObject(p->name), clock(p->clock), checkInterrupts(true), @@ -67,6 +104,7 @@ BaseCPU::BaseCPU(Params *p) number_of_threads(p->numberOfThreads), system(p->system) #endif { +// currentTick = curTick; DPRINTF(FullCPU, "BaseCPU: Creating object, mem address %#x.\n", this); // add self to global list of CPUs @@ -88,8 +126,9 @@ BaseCPU::BaseCPU(Params *p) // if (p->max_insts_any_thread != 0) for (int i = 0; i < number_of_threads; ++i) - new SimLoopExitEvent(comInstEventQueue[i], p->max_insts_any_thread, - "a thread reached the max instruction count"); + schedExitSimLoop("a thread reached the max instruction count", + p->max_insts_any_thread, 0, + comInstEventQueue[i]); if (p->max_insts_all_threads != 0) { // allocate & initialize shared downcounter: each event will @@ -113,8 +152,9 @@ BaseCPU::BaseCPU(Params *p) // if (p->max_loads_any_thread != 0) for (int i = 0; i < number_of_threads; ++i) - new SimLoopExitEvent(comLoadEventQueue[i], p->max_loads_any_thread, - "a thread reached the max load count"); + schedExitSimLoop("a thread reached the max load count", + p->max_loads_any_thread, 0, + comLoadEventQueue[i]); if (p->max_loads_all_threads != 0) { // allocate & initialize shared downcounter: each event will @@ -153,7 +193,6 @@ BaseCPU::BaseCPU(Params *p) if (params->profile) profileEvent = new ProfileEvent(this, params->profile); #endif - } BaseCPU::Params::Params() @@ -188,6 +227,11 @@ BaseCPU::startup() if (!params->deferRegistration && profileEvent) profileEvent->schedule(curTick); #endif + + if (params->progress_interval) { + new CPUProgressEvent(&mainEventQueue, params->progress_interval, + this); + } } @@ -238,7 +282,11 @@ BaseCPU::registerThreadContexts() void BaseCPU::switchOut() { - panic("This CPU doesn't support sampling!"); +// panic("This CPU doesn't support sampling!"); +#if FULL_SYSTEM + if (profileEvent && profileEvent->scheduled()) + profileEvent->deschedule(); +#endif } void @@ -261,18 +309,22 @@ BaseCPU::takeOverFrom(BaseCPU *oldCPU) assert(newTC->getProcessPtr() == oldTC->getProcessPtr()); newTC->getProcessPtr()->replaceThreadContext(newTC, newTC->readCpuId()); #endif + +// TheISA::compareXCs(oldXC, newXC); } #if FULL_SYSTEM for (int i = 0; i < TheISA::NumInterruptLevels; ++i) interrupts[i] = oldCPU->interrupts[i]; intstatus = oldCPU->intstatus; + checkInterrupts = oldCPU->checkInterrupts; for (int i = 0; i < threadContexts.size(); ++i) threadContexts[i]->profileClear(); - if (profileEvent) - profileEvent->schedule(curTick); + // The Sampler must take care of this! +// if (profileEvent) +// profileEvent->schedule(curTick); #endif } diff --git a/src/cpu/base.hh b/src/cpu/base.hh index 2be6e4e81..e02527371 100644 --- a/src/cpu/base.hh +++ b/src/cpu/base.hh @@ -46,6 +46,21 @@ class ThreadContext; class System; class Port; +class CPUProgressEvent : public Event +{ + protected: + Tick interval; + Counter lastNumInst; + BaseCPU *cpu; + + public: + CPUProgressEvent(EventQueue *q, Tick ival, BaseCPU *_cpu); + + void process(); + + virtual const char *description(); +}; + class BaseCPU : public MemObject { protected: @@ -53,6 +68,7 @@ class BaseCPU : public MemObject Tick clock; public: +// Tick currentTick; inline Tick frequency() const { return Clock::Frequency / clock; } inline Tick cycles(int numCycles) const { return clock * numCycles; } inline Tick curCycle() const { return curTick / clock; } @@ -128,6 +144,7 @@ class BaseCPU : public MemObject int cpu_id; Tick profile; #endif + Tick progress_interval; BaseCPU *checker; Params(); diff --git a/src/cpu/base_dyn_inst.hh b/src/cpu/base_dyn_inst.hh index 3158aa9cf..c68810954 100644 --- a/src/cpu/base_dyn_inst.hh +++ b/src/cpu/base_dyn_inst.hh @@ -197,7 +197,7 @@ class BaseDynInst : public FastAlloc, public RefCounted union Result { uint64_t integer; - float fp; +// float fp; double dbl; }; @@ -394,7 +394,7 @@ class BaseDynInst : public FastAlloc, public RefCounted uint64_t readIntResult() { return instResult.integer; } /** Returns the result of a floating point instruction. */ - float readFloatResult() { return instResult.fp; } + float readFloatResult() { return (float)instResult.dbl; } /** Returns the result of a floating point (double) instruction. */ double readDoubleResult() { return instResult.dbl; } @@ -409,7 +409,7 @@ class BaseDynInst : public FastAlloc, public RefCounted void setFloatReg(const StaticInst *si, int idx, FloatReg val, int width) { if (width == 32) - instResult.fp = val; + instResult.dbl = (double)val; else if (width == 64) instResult.dbl = val; else @@ -419,7 +419,8 @@ class BaseDynInst : public FastAlloc, public RefCounted /** Records an fp register being set to a value. */ void setFloatReg(const StaticInst *si, int idx, FloatReg val) { - instResult.fp = val; +// instResult.fp = val; + instResult.dbl = (double)val; } /** Records an fp register being set to an integer value. */ diff --git a/src/cpu/checker/cpu.hh b/src/cpu/checker/cpu.hh index 6d6ae1e0a..00b01171f 100644 --- a/src/cpu/checker/cpu.hh +++ b/src/cpu/checker/cpu.hh @@ -102,6 +102,7 @@ class CheckerCPU : public BaseCPU Process *process; #endif bool exitOnError; + bool updateOnError; bool warnOnlyOnLoadError; }; @@ -148,7 +149,7 @@ class CheckerCPU : public BaseCPU union Result { uint64_t integer; - float fp; +// float fp; double dbl; }; @@ -257,7 +258,7 @@ class CheckerCPU : public BaseCPU thread->setFloatReg(reg_idx, val, width); switch(width) { case 32: - result.fp = val; + result.dbl = (double)val; break; case 64: result.dbl = val; @@ -269,7 +270,7 @@ class CheckerCPU : public BaseCPU { int reg_idx = si->destRegIdx(idx) - TheISA::FP_Base_DepTag; thread->setFloatReg(reg_idx, val); - result.fp = val; + result.dbl = (double)val; } void setFloatRegBits(const StaticInst *si, int idx, FloatRegBits val, @@ -318,7 +319,7 @@ class CheckerCPU : public BaseCPU return thread->setMiscRegWithEffect(misc_reg, val); } - void recordPCChange(uint64_t val) { changedPC = true; } + void recordPCChange(uint64_t val) { changedPC = true; newPC = val; } void recordNextPCChange(uint64_t val) { changedNextPC = true; } bool translateInstReq(Request *req); @@ -360,6 +361,7 @@ class CheckerCPU : public BaseCPU uint64_t newPC; bool changedNextPC; bool exitOnError; + bool updateOnError; bool warnOnlyOnLoadError; InstSeqNum youngestSN; @@ -376,7 +378,7 @@ class Checker : public CheckerCPU { public: Checker(Params *p) - : CheckerCPU(p) + : CheckerCPU(p), updateThisCycle(false), unverifiedInst(NULL) { } void switchOut(); @@ -393,12 +395,19 @@ class Checker : public CheckerCPU private: void handleError(DynInstPtr &inst) { - if (exitOnError) + if (exitOnError) { dumpAndExit(inst); + } else if (updateOnError) { + updateThisCycle = true; + } } void dumpAndExit(DynInstPtr &inst); + bool updateThisCycle; + + DynInstPtr unverifiedInst; + std::list<DynInstPtr> instList; typedef typename std::list<DynInstPtr>::iterator InstListIt; void dumpInsts(); diff --git a/src/cpu/checker/cpu_impl.hh b/src/cpu/checker/cpu_impl.hh index 81f97726c..8aec79754 100644 --- a/src/cpu/checker/cpu_impl.hh +++ b/src/cpu/checker/cpu_impl.hh @@ -94,6 +94,8 @@ Checker<DynInstPtr>::verify(DynInstPtr &completed_inst) } } + unverifiedInst = inst; + // Try to check all instructions that are completed, ending if we // run out of instructions to check or if an instruction is not // yet completed. @@ -171,7 +173,7 @@ Checker<DynInstPtr>::verify(DynInstPtr &completed_inst) thread->setPC(thread->readNextPC()); thread->setNextPC(thread->readNextPC() + sizeof(MachInst)); - return; + break; } else { // The instruction is carrying an ITB fault. Handle // the fault and see if our results match the CPU on @@ -220,7 +222,8 @@ Checker<DynInstPtr>::verify(DynInstPtr &completed_inst) thread->funcExeInst++; - fault = curStaticInst->execute(this, NULL); + if (!inst->isUnverifiable()) + fault = curStaticInst->execute(this, NULL); // Checks to make sure instrution results are correct. validateExecution(inst); @@ -289,6 +292,7 @@ Checker<DynInstPtr>::verify(DynInstPtr &completed_inst) break; } } + unverifiedInst = NULL; } template <class DynInstPtr> @@ -395,6 +399,24 @@ template <class DynInstPtr> void Checker<DynInstPtr>::validateState() { + if (updateThisCycle) { + warn("%lli: Instruction PC %#x results didn't match up, copying all " + "registers from main CPU", curTick, unverifiedInst->readPC()); + // Heavy-weight copying of all registers + thread->copyArchRegs(unverifiedInst->tcBase()); + // Also advance the PC. Hopefully no PC-based events happened. +#if THE_ISA != MIPS_ISA + // go to the next instruction + thread->setPC(thread->readNextPC()); + thread->setNextPC(thread->readNextPC() + sizeof(MachInst)); +#else + // go to the next instruction + thread->setPC(thread->readNextPC()); + thread->setNextPC(thread->readNextNPC()); + thread->setNextNPC(thread->readNextNPC() + sizeof(MachInst)); +#endif + updateThisCycle = false; + } } template <class DynInstPtr> diff --git a/src/cpu/o3/alpha/cpu_builder.cc b/src/cpu/o3/alpha/cpu_builder.cc index 5e767655d..ff123a6f7 100644 --- a/src/cpu/o3/alpha/cpu_builder.cc +++ b/src/cpu/o3/alpha/cpu_builder.cc @@ -56,6 +56,7 @@ SimObjectParam<System *> system; Param<int> cpu_id; SimObjectParam<AlphaITB *> itb; SimObjectParam<AlphaDTB *> dtb; +Param<Tick> profile; #else SimObjectVectorParam<Process *> workload; #endif // FULL_SYSTEM @@ -68,6 +69,7 @@ Param<Counter> max_insts_any_thread; Param<Counter> max_insts_all_threads; Param<Counter> max_loads_any_thread; Param<Counter> max_loads_all_threads; +Param<Tick> progress_interval; Param<unsigned> cachePorts; @@ -162,6 +164,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(DerivO3CPU) INIT_PARAM(cpu_id, "processor ID"), INIT_PARAM(itb, "Instruction translation buffer"), INIT_PARAM(dtb, "Data translation buffer"), + INIT_PARAM(profile, ""), #else INIT_PARAM(workload, "Processes to run"), #endif // FULL_SYSTEM @@ -184,6 +187,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(DerivO3CPU) "Terminate when all threads have reached this load" "count", 0), + INIT_PARAM_DFLT(progress_interval, "Progress interval", 0), INIT_PARAM_DFLT(cachePorts, "Cache Ports", 200), @@ -305,6 +309,7 @@ CREATE_SIM_OBJECT(DerivO3CPU) params->cpu_id = cpu_id; params->itb = itb; params->dtb = dtb; + params->profile = profile; #else params->workload = workload; #endif // FULL_SYSTEM @@ -317,6 +322,7 @@ CREATE_SIM_OBJECT(DerivO3CPU) params->max_insts_all_threads = max_insts_all_threads; params->max_loads_any_thread = max_loads_any_thread; params->max_loads_all_threads = max_loads_all_threads; + params->progress_interval = progress_interval; // // Caches diff --git a/src/cpu/o3/checker_builder.cc b/src/cpu/o3/checker_builder.cc index 782d963b0..02c817499 100644 --- a/src/cpu/o3/checker_builder.cc +++ b/src/cpu/o3/checker_builder.cc @@ -64,6 +64,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(O3Checker) Param<Counter> max_insts_all_threads; Param<Counter> max_loads_any_thread; Param<Counter> max_loads_all_threads; + Param<Tick> progress_interval; #if FULL_SYSTEM SimObjectParam<AlphaITB *> itb; @@ -78,6 +79,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(O3Checker) Param<bool> defer_registration; Param<bool> exitOnError; + Param<bool> updateOnError; Param<bool> warnOnlyOnLoadError; Param<bool> function_trace; Param<Tick> function_trace_start; @@ -94,6 +96,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(O3Checker) "terminate when any thread reaches this load count"), INIT_PARAM(max_loads_all_threads, "terminate when all threads have reached this load count"), + INIT_PARAM_DFLT(progress_interval, "CPU Progress Interval", 0), #if FULL_SYSTEM INIT_PARAM(itb, "Instruction TLB"), @@ -109,6 +112,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(O3Checker) INIT_PARAM(defer_registration, "defer system registration (for sampling)"), INIT_PARAM(exitOnError, "exit on error"), + INIT_PARAM(updateOnError, "Update the checker with the main CPU's state on error"), INIT_PARAM_DFLT(warnOnlyOnLoadError, "warn, but don't exit, if a load " "result errors", false), INIT_PARAM(function_trace, "Enable function trace"), @@ -127,6 +131,7 @@ CREATE_SIM_OBJECT(O3Checker) params->max_loads_any_thread = 0; params->max_loads_all_threads = 0; params->exitOnError = exitOnError; + params->updateOnError = updateOnError; params->warnOnlyOnLoadError = warnOnlyOnLoadError; params->deferRegistration = defer_registration; params->functionTrace = function_trace; @@ -139,6 +144,9 @@ CREATE_SIM_OBJECT(O3Checker) temp = max_insts_all_threads; temp = max_loads_any_thread; temp = max_loads_all_threads; + Tick temp2 = progress_interval; + params->progress_interval = 0; + temp2++; #if FULL_SYSTEM params->itb = itb; diff --git a/src/cpu/o3/commit_impl.hh b/src/cpu/o3/commit_impl.hh index 34f487e2c..c80e4d8c1 100644 --- a/src/cpu/o3/commit_impl.hh +++ b/src/cpu/o3/commit_impl.hh @@ -1083,12 +1083,26 @@ DefaultCommit<Impl>::commitHead(DynInstPtr &head_inst, unsigned inst_num) // Generate trap squash event. generateTrapEvent(tid); - +// warn("%lli fault (%d) handled @ PC %08p", curTick, inst_fault->name(), head_inst->readPC()); return false; } updateComInstStats(head_inst); +#if FULL_SYSTEM + if (thread[tid]->profile) { +// bool usermode = +// (cpu->readMiscReg(AlphaISA::IPR_DTB_CM, tid) & 0x18) != 0; +// thread[tid]->profilePC = usermode ? 1 : head_inst->readPC(); + thread[tid]->profilePC = head_inst->readPC(); + ProfileNode *node = thread[tid]->profile->consume(thread[tid]->getTC(), + head_inst->staticInst); + + if (node) + thread[tid]->profileNode = node; + } +#endif + if (head_inst->traceData) { head_inst->traceData->setFetchSeq(head_inst->seqNum); head_inst->traceData->setCPSeq(thread[tid]->numInst); @@ -1102,6 +1116,9 @@ DefaultCommit<Impl>::commitHead(DynInstPtr &head_inst, unsigned inst_num) head_inst->renamedDestRegIdx(i)); } + if (head_inst->isCopy()) + panic("Should not commit any copy instructions!"); + // Finally clear the head ROB entry. rob->retireHead(tid); diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc index 19ab7f4c5..7386dfadd 100644 --- a/src/cpu/o3/cpu.cc +++ b/src/cpu/o3/cpu.cc @@ -33,6 +33,7 @@ #include "config/use_checker.hh" #if FULL_SYSTEM +#include "cpu/quiesce_event.hh" #include "sim/system.hh" #else #include "sim/process.hh" @@ -793,6 +794,7 @@ template <class Impl> unsigned int FullO3CPU<Impl>::drain(Event *drain_event) { + DPRINTF(O3CPU, "Switching out\n"); drainCount = 0; fetch.drain(); decode.drain(); @@ -849,6 +851,8 @@ FullO3CPU<Impl>::signalDrained() changeState(SimObject::Drained); + BaseCPU::switchOut(); + if (drainEvent) { drainEvent->process(); drainEvent = NULL; @@ -863,6 +867,7 @@ FullO3CPU<Impl>::switchOut() { fetch.switchOut(); rename.switchOut(); + iew.switchOut(); commit.switchOut(); instList.clear(); while (!removeList.empty()) { @@ -874,6 +879,8 @@ FullO3CPU<Impl>::switchOut() if (checker) checker->switchOut(); #endif + if (tickEvent.scheduled()) + tickEvent.squash(); } template <class Impl> diff --git a/src/cpu/o3/fetch_impl.hh b/src/cpu/o3/fetch_impl.hh index 1e080181c..2d447bfe5 100644 --- a/src/cpu/o3/fetch_impl.hh +++ b/src/cpu/o3/fetch_impl.hh @@ -442,6 +442,7 @@ DefaultFetch<Impl>::takeOverFrom() wroteToTimeBuffer = false; _status = Inactive; switchedOut = false; + interruptPending = false; branchPred.takeOverFrom(); } @@ -563,7 +564,7 @@ DefaultFetch<Impl>::fetchCacheLine(Addr fetch_PC, Fault &ret_fault, unsigned tid unsigned flags = 0; #endif // FULL_SYSTEM - if (cacheBlocked || (interruptPending && flags == 0)) { + if (cacheBlocked || isSwitchedOut() || (interruptPending && flags == 0)) { // Hold off fetch from getting new instructions when: // Cache is blocked, or // while an interrupt is pending and we're not in PAL mode, or @@ -1152,8 +1153,8 @@ DefaultFetch<Impl>::fetch(bool &status_change) fetch_PC = next_PC; if (instruction->isQuiesce()) { - warn("cycle %lli: Quiesce instruction encountered, halting fetch!", - curTick); +// warn("%lli: Quiesce instruction encountered, halting fetch!", +// curTick); fetchStatus[tid] = QuiescePending; ++numInst; status_change = true; @@ -1268,7 +1269,7 @@ DefaultFetch<Impl>::fetch(bool &status_change) fetchStatus[tid] = TrapPending; status_change = true; - warn("cycle %lli: fault (%s) detected @ PC %08p", curTick, fault->name(), PC[tid]); +// warn("%lli fault (%d) detected @ PC %08p", curTick, fault, PC[tid]); #else // !FULL_SYSTEM warn("cycle %lli: fault (%s) detected @ PC %08p", curTick, fault->name(), PC[tid]); #endif // FULL_SYSTEM diff --git a/src/cpu/o3/iew.hh b/src/cpu/o3/iew.hh index 76fa008ee..a400c9fa8 100644 --- a/src/cpu/o3/iew.hh +++ b/src/cpu/o3/iew.hh @@ -216,6 +216,7 @@ class DefaultIEW if (++wbOutstanding == wbMax) ableToIssue = false; DPRINTF(IEW, "wbOutstanding: %i\n", wbOutstanding); + assert(wbOutstanding <= wbMax); #ifdef DEBUG wbList.insert(sn); #endif @@ -226,6 +227,7 @@ class DefaultIEW if (wbOutstanding-- == wbMax) ableToIssue = true; DPRINTF(IEW, "wbOutstanding: %i\n", wbOutstanding); + assert(wbOutstanding >= 0); #ifdef DEBUG assert(wbList.find(sn) != wbList.end()); wbList.erase(sn); @@ -450,7 +452,9 @@ class DefaultIEW unsigned wbCycle; /** Number of instructions in flight that will writeback. */ - unsigned wbOutstanding; + + /** Number of instructions in flight that will writeback. */ + int wbOutstanding; /** Writeback width. */ unsigned wbWidth; @@ -507,6 +511,8 @@ class DefaultIEW Stats::Scalar<> iewExecutedInsts; /** Stat for total number of executed load instructions. */ Stats::Vector<> iewExecLoadInsts; + /** Stat for total number of executed store instructions. */ +// Stats::Scalar<> iewExecStoreInsts; /** Stat for total number of squashed instructions skipped at execute. */ Stats::Scalar<> iewExecSquashedInsts; /** Number of executed software prefetches. */ diff --git a/src/cpu/o3/iew_impl.hh b/src/cpu/o3/iew_impl.hh index e9b24a6d4..b2baae296 100644 --- a/src/cpu/o3/iew_impl.hh +++ b/src/cpu/o3/iew_impl.hh @@ -162,17 +162,17 @@ DefaultIEW<Impl>::regStats() branchMispredicts = predictedTakenIncorrect + predictedNotTakenIncorrect; iewExecutedInsts - .name(name() + ".EXEC:insts") + .name(name() + ".iewExecutedInsts") .desc("Number of executed instructions"); iewExecLoadInsts .init(cpu->number_of_threads) - .name(name() + ".EXEC:loads") + .name(name() + ".iewExecLoadInsts") .desc("Number of load instructions executed") .flags(total); iewExecSquashedInsts - .name(name() + ".EXEC:squashedInsts") + .name(name() + ".iewExecSquashedInsts") .desc("Number of squashed instructions skipped in execute"); iewExecutedSwp @@ -372,6 +372,8 @@ DefaultIEW<Impl>::switchOut() { // Clear any state. switchedOut = true; + assert(insts[0].empty()); + assert(skidBuffer[0].empty()); instQueue.switchOut(); ldstQueue.switchOut(); @@ -410,7 +412,6 @@ DefaultIEW<Impl>::takeOverFrom() updateLSQNextCycle = false; - // @todo: Fix hardcoded number for (int i = 0; i < issueToExecQueue.getSize(); ++i) { issueToExecQueue.advance(); } @@ -611,9 +612,11 @@ DefaultIEW<Impl>::instToCommit(DynInstPtr &inst) wbNumInst = 0; } - assert((wbCycle * wbWidth + wbNumInst) < wbMax); + assert((wbCycle * wbWidth + wbNumInst) <= wbMax); } + DPRINTF(IEW, "Current wb cycle: %i, width: %i, numInst: %i\nwbActual:%i\n", + wbCycle, wbWidth, wbNumInst, wbCycle * wbWidth + wbNumInst); // Add finished instruction to queue to commit. (*iewQueue)[wbCycle].insts[wbNumInst] = inst; (*iewQueue)[wbCycle].size++; @@ -1273,13 +1276,23 @@ DefaultIEW<Impl>::executeInsts() // event adds the instruction to the queue to commit fault = ldstQueue.executeLoad(inst); } else if (inst->isStore()) { - ldstQueue.executeStore(inst); + fault = ldstQueue.executeStore(inst); // If the store had a fault then it may not have a mem req - if (inst->req && !(inst->req->getFlags() & LOCKED)) { + if (!inst->isStoreConditional() && fault == NoFault) { inst->setExecuted(); instToCommit(inst); + } else if (fault != NoFault) { + // If the instruction faulted, then we need to send it along to commit + // without the instruction completing. + + // Send this instruction to commit, also make sure iew stage + // realizes there is activity. + inst->setExecuted(); + + instToCommit(inst); + activityThisCycle(); } // Store conditionals will mark themselves as @@ -1404,7 +1417,7 @@ DefaultIEW<Impl>::writebackInsts() // E.g. Uncached loads have not actually executed when they // are first sent to commit. Instead commit must tell the LSQ // when it's ready to execute the uncached load. - if (!inst->isSquashed() && inst->isExecuted()) { + if (!inst->isSquashed() && inst->isExecuted() && inst->getFault() == NoFault) { int dependents = instQueue.wakeDependents(inst); for (int i = 0; i < inst->numDestRegs(); i++) { diff --git a/src/cpu/o3/inst_queue.hh b/src/cpu/o3/inst_queue.hh index d745faf7b..3dd4dc658 100644 --- a/src/cpu/o3/inst_queue.hh +++ b/src/cpu/o3/inst_queue.hh @@ -479,13 +479,13 @@ class InstructionQueue /** Distribution of number of instructions in the queue. * @todo: Need to create struct to track the entry time for each * instruction. */ - Stats::VectorDistribution<> queueResDist; +// Stats::VectorDistribution<> queueResDist; /** Distribution of the number of instructions issued. */ Stats::Distribution<> numIssuedDist; /** Distribution of the cycles it takes to issue an instruction. * @todo: Need to create struct to track the ready time for each * instruction. */ - Stats::VectorDistribution<> issueDelayDist; +// Stats::VectorDistribution<> issueDelayDist; /** Number of times an instruction could not be issued because a * FU was busy. diff --git a/src/cpu/o3/inst_queue_impl.hh b/src/cpu/o3/inst_queue_impl.hh index 47634f645..6edb528a9 100644 --- a/src/cpu/o3/inst_queue_impl.hh +++ b/src/cpu/o3/inst_queue_impl.hh @@ -230,7 +230,7 @@ InstructionQueue<Impl>::regStats() .name(name() + ".iqSquashedNonSpecRemoved") .desc("Number of squashed non-spec instructions that were removed") .prereq(iqSquashedNonSpecRemoved); - +/* queueResDist .init(Num_OpClasses, 0, 99, 2) .name(name() + ".IQ:residence:") @@ -240,6 +240,7 @@ InstructionQueue<Impl>::regStats() for (int i = 0; i < Num_OpClasses; ++i) { queueResDist.subname(i, opClassStrings[i]); } +*/ numIssuedDist .init(0,totalWidth,1) .name(name() + ".ISSUE:issued_per_cycle") @@ -268,7 +269,7 @@ InstructionQueue<Impl>::regStats() // // How long did instructions for a particular FU type wait prior to issue // - +/* issueDelayDist .init(Num_OpClasses,0,99,2) .name(name() + ".ISSUE:") @@ -281,7 +282,7 @@ InstructionQueue<Impl>::regStats() subname << opClassStrings[i] << "_delay"; issueDelayDist.subname(i, subname.str()); } - +*/ issueRate .name(name() + ".ISSUE:rate") .desc("Inst issue rate") @@ -385,8 +386,16 @@ template <class Impl> void InstructionQueue<Impl>::switchOut() { +/* + if (!instList[0].empty() || (numEntries != freeEntries) || + !readyInsts[0].empty() || !nonSpecInsts.empty() || !listOrder.empty()) { + dumpInsts(); +// assert(0); + } +*/ resetState(); dependGraph.reset(); + instsToExecute.clear(); switchedOut = true; for (int i = 0; i < numThreads; ++i) { memDepUnit[i].switchOut(); @@ -642,9 +651,12 @@ template <class Impl> void InstructionQueue<Impl>::processFUCompletion(DynInstPtr &inst, int fu_idx) { + DPRINTF(IQ, "Processing FU completion [sn:%lli]\n", inst->seqNum); // The CPU could have been sleeping until this op completed (*extremely* // long latency op). Wake it if it was. This may be overkill. if (isSwitchedOut()) { + DPRINTF(IQ, "FU completion not processed, IQ is switched out [sn:%lli]\n", + inst->seqNum); return; } @@ -1036,6 +1048,10 @@ InstructionQueue<Impl>::doSquash(unsigned tid) (squashed_inst->isMemRef() && !squashed_inst->memOpDone)) { + DPRINTF(IQ, "[tid:%i]: Instruction [sn:%lli] PC %#x " + "squashed.\n", + tid, squashed_inst->seqNum, squashed_inst->readPC()); + // Remove the instruction from the dependency list. if (!squashed_inst->isNonSpeculative() && !squashed_inst->isStoreConditional() && @@ -1066,7 +1082,7 @@ InstructionQueue<Impl>::doSquash(unsigned tid) ++iqSquashedOperandsExamined; } - } else { + } else if (!squashed_inst->isStoreConditional() || !squashed_inst->isCompleted()) { NonSpecMapIt ns_inst_it = nonSpecInsts.find(squashed_inst->seqNum); assert(ns_inst_it != nonSpecInsts.end()); @@ -1093,10 +1109,6 @@ InstructionQueue<Impl>::doSquash(unsigned tid) count[squashed_inst->threadNumber]--; ++freeEntries; - - DPRINTF(IQ, "[tid:%i]: Instruction [sn:%lli] PC %#x " - "squashed.\n", - tid, squashed_inst->seqNum, squashed_inst->readPC()); } instList[tid].erase(squash_it--); diff --git a/src/cpu/o3/lsq_unit.hh b/src/cpu/o3/lsq_unit.hh index 1358a3699..90d1a3d53 100644 --- a/src/cpu/o3/lsq_unit.hh +++ b/src/cpu/o3/lsq_unit.hh @@ -407,7 +407,6 @@ class LSQUnit { // Will also need how many read/write ports the Dcache has. Or keep track // of that in stage that is one level up, and only call executeLoad/Store // the appropriate number of times. - /** Total number of loads forwaded from LSQ stores. */ Stats::Scalar<> lsqForwLoads; @@ -421,6 +420,9 @@ class LSQUnit { * ignored due to the instruction already being squashed. */ Stats::Scalar<> lsqIgnoredResponses; + /** Tota number of memory ordering violations. */ + Stats::Scalar<> lsqMemOrderViolation; + /** Total number of squashed stores. */ Stats::Scalar<> lsqSquashedStores; diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh index fa716c712..98bea74fb 100644 --- a/src/cpu/o3/lsq_unit_impl.hh +++ b/src/cpu/o3/lsq_unit_impl.hh @@ -180,6 +180,10 @@ LSQUnit<Impl>::regStats() .name(name() + ".ignoredResponses") .desc("Number of memory responses ignored because the instruction is squashed"); + lsqMemOrderViolation + .name(name() + ".memOrderViolation") + .desc("Number of memory ordering violations"); + lsqSquashedStores .name(name() + ".squashedStores") .desc("Number of stores squashed"); @@ -220,8 +224,10 @@ void LSQUnit<Impl>::switchOut() { switchedOut = true; - for (int i = 0; i < loadQueue.size(); ++i) + for (int i = 0; i < loadQueue.size(); ++i) { + assert(!loadQueue[i]); loadQueue[i] = NULL; + } assert(storesToWB == 0); } @@ -408,6 +414,11 @@ LSQUnit<Impl>::executeLoad(DynInstPtr &inst) if (load_fault != NoFault) { // Send this instruction to commit, also make sure iew stage // realizes there is activity. + // Mark it as executed unless it is an uncached load that + // needs to hit the head of commit. + if (!(inst->req->getFlags() & UNCACHEABLE) || inst->isAtCommit()) { + inst->setExecuted(); + } iewStage->instToCommit(inst); iewStage->activityThisCycle(); } @@ -467,6 +478,7 @@ LSQUnit<Impl>::executeStore(DynInstPtr &store_inst) // A load incorrectly passed this store. Squash and refetch. // For now return a fault to show that it was unsuccessful. memDepViolator = loadQueue[load_idx]; + ++lsqMemOrderViolation; return genMachineCheckFault(); } @@ -820,6 +832,7 @@ LSQUnit<Impl>::completeStore(int store_idx) // A bit conservative because a store completion may not free up entries, // but hopefully avoids two store completions in one cycle from making // the CPU tick twice. + cpu->wakeCPU(); cpu->activityThisCycle(); if (store_idx == storeHead) { diff --git a/src/cpu/o3/mem_dep_unit_impl.hh b/src/cpu/o3/mem_dep_unit_impl.hh index 16f67a4e0..c649ca385 100644 --- a/src/cpu/o3/mem_dep_unit_impl.hh +++ b/src/cpu/o3/mem_dep_unit_impl.hh @@ -109,6 +109,9 @@ template <class MemDepPred, class Impl> void MemDepUnit<MemDepPred, Impl>::switchOut() { + assert(instList[0].empty()); + assert(instsToReplay.empty()); + assert(memDepHash.empty()); // Clear any state. for (int i = 0; i < Impl::MaxThreads; ++i) { instList[i].clear(); diff --git a/src/cpu/o3/rename.hh b/src/cpu/o3/rename.hh index ba26a01dd..177b9cb87 100644 --- a/src/cpu/o3/rename.hh +++ b/src/cpu/o3/rename.hh @@ -417,6 +417,8 @@ class DefaultRename /** The maximum skid buffer size. */ unsigned skidBufferMax; + PhysRegIndex maxPhysicalRegs; + /** Enum to record the source of a structure full stall. Can come from * either ROB, IQ, LSQ, and it is priortized in that order. */ diff --git a/src/cpu/o3/rename_impl.hh b/src/cpu/o3/rename_impl.hh index 782c0fe5f..248d7deb6 100644 --- a/src/cpu/o3/rename_impl.hh +++ b/src/cpu/o3/rename_impl.hh @@ -41,7 +41,8 @@ DefaultRename<Impl>::DefaultRename(Params *params) commitToRenameDelay(params->commitToRenameDelay), renameWidth(params->renameWidth), commitWidth(params->commitWidth), - numThreads(params->numberOfThreads) + numThreads(params->numberOfThreads), + maxPhysicalRegs(params->numPhysIntRegs + params->numPhysFloatRegs) { _status = Inactive; @@ -286,6 +287,11 @@ DefaultRename<Impl>::switchOut() // Put the renamed physical register back on the free list. freeList->addReg(hb_it->newPhysReg); + // Be sure to mark its register as ready if it's a misc register. + if (hb_it->newPhysReg >= maxPhysicalRegs) { + scoreboard->setReg(hb_it->newPhysReg); + } + historyBuffer[i].erase(hb_it++); } insts[i].clear(); @@ -889,6 +895,11 @@ DefaultRename<Impl>::doSquash(const InstSeqNum &squashed_seq_num, unsigned tid) // Put the renamed physical register back on the free list. freeList->addReg(hb_it->newPhysReg); + // Be sure to mark its register as ready if it's a misc register. + if (hb_it->newPhysReg >= maxPhysicalRegs) { + scoreboard->setReg(hb_it->newPhysReg); + } + historyBuffer[tid].erase(hb_it++); ++renameUndoneMaps; diff --git a/src/cpu/o3/thread_context_impl.hh b/src/cpu/o3/thread_context_impl.hh index a4546e669..25e1db21c 100755 --- a/src/cpu/o3/thread_context_impl.hh +++ b/src/cpu/o3/thread_context_impl.hh @@ -54,7 +54,7 @@ template <class Impl> void O3ThreadContext<Impl>::dumpFuncProfile() { - // Currently not supported + thread->dumpFuncProfile(); } #endif @@ -239,12 +239,16 @@ O3ThreadContext<Impl>::readLastSuspend() template <class Impl> void O3ThreadContext<Impl>::profileClear() -{} +{ + thread->profileClear(); +} template <class Impl> void O3ThreadContext<Impl>::profileSample() -{} +{ + thread->profileSample(); +} #endif template <class Impl> diff --git a/src/cpu/o3/thread_state.hh b/src/cpu/o3/thread_state.hh index b6f2e14c0..5fe7bb94d 100644 --- a/src/cpu/o3/thread_state.hh +++ b/src/cpu/o3/thread_state.hh @@ -31,8 +31,11 @@ #ifndef __CPU_O3_THREAD_STATE_HH__ #define __CPU_O3_THREAD_STATE_HH__ +#include "base/callback.hh" +#include "base/output.hh" #include "cpu/thread_context.hh" #include "cpu/thread_state.hh" +#include "sim/sim_exit.hh" class Event; class Process; @@ -75,8 +78,22 @@ struct O3ThreadState : public ThreadState { #if FULL_SYSTEM O3ThreadState(O3CPU *_cpu, int _thread_num) : ThreadState(-1, _thread_num), - inSyscall(0), trapPending(0) - { } + cpu(_cpu), inSyscall(0), trapPending(0) + { + if (cpu->params->profile) { + profile = new FunctionProfile(cpu->params->system->kernelSymtab); + Callback *cb = + new MakeCallback<O3ThreadState, + &O3ThreadState::dumpFuncProfile>(this); + registerExitCallback(cb); + } + + // let's fill with a dummy node for now so we don't get a segfault + // on the first cycle when there's no node available. + static ProfileNode dummyNode; + profileNode = &dummyNode; + profilePC = 3; + } #else O3ThreadState(O3CPU *_cpu, int _thread_num, Process *_process, int _asid, MemObject *mem) @@ -95,6 +112,14 @@ struct O3ThreadState : public ThreadState { /** Handles the syscall. */ void syscall(int64_t callnum) { process->syscall(callnum, tc); } #endif + +#if FULL_SYSTEM + void dumpFuncProfile() + { + std::ostream *os = simout.create(csprintf("profile.%s.dat", cpu->name())); + profile->dump(tc, *os); + } +#endif }; #endif // __CPU_O3_THREAD_STATE_HH__ diff --git a/src/cpu/o3/tournament_pred.cc b/src/cpu/o3/tournament_pred.cc index 7cf78dcb1..ffb941c77 100644 --- a/src/cpu/o3/tournament_pred.cc +++ b/src/cpu/o3/tournament_pred.cc @@ -62,6 +62,8 @@ TournamentBP::TournamentBP(unsigned _localPredictorSize, for (int i = 0; i < localPredictorSize; ++i) localCtrs[i].setBits(localCtrBits); + localPredictorMask = floorPow2(localPredictorSize) - 1; + if (!isPowerOf2(localHistoryTableSize)) { fatal("Invalid local history table size!\n"); } @@ -158,7 +160,7 @@ TournamentBP::lookup(Addr &branch_addr, void * &bp_history) //Lookup in the local predictor to get its branch prediction local_history_idx = calcLocHistIdx(branch_addr); local_predictor_idx = localHistoryTable[local_history_idx] - & localHistoryMask; + & localPredictorMask; local_prediction = localCtrs[local_predictor_idx].read() > threshold; //Lookup in the global predictor to get its branch prediction @@ -176,7 +178,8 @@ TournamentBP::lookup(Addr &branch_addr, void * &bp_history) bp_history = (void *)history; assert(globalHistory < globalPredictorSize && - local_history_idx < localPredictorSize); + local_history_idx < localHistoryTableSize && + local_predictor_idx < localPredictorSize); // Commented code is for doing speculative update of counters and // all histories. @@ -234,7 +237,7 @@ TournamentBP::update(Addr &branch_addr, bool taken, void *bp_history) // Get the local predictor's current prediction local_history_idx = calcLocHistIdx(branch_addr); local_predictor_hist = localHistoryTable[local_history_idx]; - local_predictor_idx = local_predictor_hist & localHistoryMask; + local_predictor_idx = local_predictor_hist & localPredictorMask; // Update the choice predictor to tell it which one was correct if // there was a prediction. @@ -256,6 +259,7 @@ TournamentBP::update(Addr &branch_addr, bool taken, void *bp_history) } assert(globalHistory < globalPredictorSize && + local_history_idx < localHistoryTableSize && local_predictor_idx < localPredictorSize); // Update the counters and local history with the proper diff --git a/src/cpu/o3/tournament_pred.hh b/src/cpu/o3/tournament_pred.hh index 66b4aaae2..472944910 100644 --- a/src/cpu/o3/tournament_pred.hh +++ b/src/cpu/o3/tournament_pred.hh @@ -159,6 +159,9 @@ class TournamentBP /** Size of the local predictor. */ unsigned localPredictorSize; + /** Mask to get the proper index bits into the predictor. */ + unsigned localPredictorMask; + /** Number of bits of the local predictor's counters. */ unsigned localCtrBits; diff --git a/src/cpu/ozone/checker_builder.cc b/src/cpu/ozone/checker_builder.cc index c372e51d6..b4c4686b7 100644 --- a/src/cpu/ozone/checker_builder.cc +++ b/src/cpu/ozone/checker_builder.cc @@ -65,6 +65,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(OzoneChecker) Param<Counter> max_insts_all_threads; Param<Counter> max_loads_any_thread; Param<Counter> max_loads_all_threads; + Param<Tick> progress_interval; #if FULL_SYSTEM SimObjectParam<AlphaITB *> itb; @@ -79,6 +80,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(OzoneChecker) Param<bool> defer_registration; Param<bool> exitOnError; + Param<bool> updateOnError; Param<bool> warnOnlyOnLoadError; Param<bool> function_trace; Param<Tick> function_trace_start; @@ -95,6 +97,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(OzoneChecker) "terminate when any thread reaches this load count"), INIT_PARAM(max_loads_all_threads, "terminate when all threads have reached this load count"), + INIT_PARAM_DFLT(progress_interval, "CPU Progress Interval", 0), #if FULL_SYSTEM INIT_PARAM(itb, "Instruction TLB"), @@ -110,6 +113,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(OzoneChecker) INIT_PARAM(defer_registration, "defer system registration (for sampling)"), INIT_PARAM(exitOnError, "exit on error"), + INIT_PARAM(updateOnError, "Update the checker with the main CPU's state on error"), INIT_PARAM_DFLT(warnOnlyOnLoadError, "warn, but don't exit, if a load " "result errors", false), INIT_PARAM(function_trace, "Enable function trace"), @@ -128,6 +132,7 @@ CREATE_SIM_OBJECT(OzoneChecker) params->max_loads_any_thread = 0; params->max_loads_all_threads = 0; params->exitOnError = exitOnError; + params->updateOnError = updateOnError; params->warnOnlyOnLoadError = warnOnlyOnLoadError; params->deferRegistration = defer_registration; params->functionTrace = function_trace; @@ -140,6 +145,9 @@ CREATE_SIM_OBJECT(OzoneChecker) temp = max_insts_all_threads; temp = max_loads_any_thread; temp = max_loads_all_threads; + Tick temp2 = progress_interval; + temp2++; + params->progress_interval = 0; #if FULL_SYSTEM params->itb = itb; diff --git a/src/cpu/ozone/cpu.hh b/src/cpu/ozone/cpu.hh index e411c12bd..8c5be9424 100644 --- a/src/cpu/ozone/cpu.hh +++ b/src/cpu/ozone/cpu.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005 The Regents of The University of Michigan + * Copyright (c) 2006 The Regents of The University of Michigan * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,6 +33,7 @@ #include <set> +#include "arch/regfile.hh" #include "base/statistics.hh" #include "base/timebuf.hh" #include "config/full_system.hh" @@ -81,13 +82,13 @@ template <class> class Checker; /** - * Declaration of Out-of-Order CPU class. Basically it is a SimpleCPU with - * simple out-of-order capabilities added to it. It is still a 1 CPI machine - * (?), but is capable of handling cache misses. Basically it models having - * a ROB/IQ by only allowing a certain amount of instructions to execute while - * the cache miss is outstanding. + * Light weight out of order CPU model that approximates an out of + * order CPU. It is separated into a front end and a back end, with + * the template parameter Impl describing the classes used for each. + * The goal is to be able to specify through the Impl the class to use + * for the front end and back end, with different classes used to + * model different levels of detail. */ - template <class Impl> class OzoneCPU : public BaseCPU { @@ -257,8 +258,8 @@ class OzoneCPU : public BaseCPU void setFuncExeInst(Counter new_val) { thread->funcExeInst = new_val; } #endif - void changeRegFileContext(TheISA::RegFile::ContextParam param, - TheISA::RegFile::ContextVal val) + void changeRegFileContext(TheISA::RegContextParam param, + TheISA::RegContextVal val) { panic("Not supported on Alpha!"); } }; @@ -273,6 +274,7 @@ class OzoneCPU : public BaseCPU typedef OzoneThreadState<Impl> ImplState; private: + // Committed thread state for the OzoneCPU. OzoneThreadState<Impl> thread; public: @@ -310,12 +312,6 @@ class OzoneCPU : public BaseCPU tickEvent.squash(); } - private: - Trace::InstRecord *traceData; - - template<typename T> - void trace_data(T data); - public: enum Status { Running, @@ -326,8 +322,6 @@ class OzoneCPU : public BaseCPU Status _status; public: - bool checkInterrupts; - void post_interrupt(int int_num, int index); void zero_fill_64(Addr addr) { @@ -379,6 +373,7 @@ class OzoneCPU : public BaseCPU FrontEnd *frontEnd; BackEnd *backEnd; + private: Status status() const { return _status; } void setStatus(Status new_status) { _status = new_status; } @@ -410,12 +405,11 @@ class OzoneCPU : public BaseCPU // number of idle cycles Stats::Average<> notIdleFraction; Stats::Formula idleFraction; - public: + public: virtual void serialize(std::ostream &os); virtual void unserialize(Checkpoint *cp, const std::string §ion); - #if FULL_SYSTEM /** Translates instruction requestion. */ Fault translateInstReq(RequestPtr &req, OzoneThreadState<Impl> *thread) @@ -582,12 +576,9 @@ class OzoneCPU : public BaseCPU Fault copy(Addr dest); - InstSeqNum globalSeqNum; - public: void squashFromTC(); - // @todo: This can be a useful debug function. Implement it. void dumpInsts() { frontEnd->dumpInsts(); } #if FULL_SYSTEM @@ -605,7 +596,6 @@ class OzoneCPU : public BaseCPU ThreadContext *tcBase() { return tc; } - bool decoupledFrontEnd; struct CommStruct { InstSeqNum doneSeqNum; InstSeqNum nonSpecSeqNum; @@ -614,8 +604,13 @@ class OzoneCPU : public BaseCPU bool stall; }; + + InstSeqNum globalSeqNum; + TimeBuffer<CommStruct> comm; + bool decoupledFrontEnd; + bool lockFlag; Stats::Scalar<> quiesceCycles; diff --git a/src/cpu/ozone/cpu_builder.cc b/src/cpu/ozone/cpu_builder.cc index e239b7a94..730158258 100644 --- a/src/cpu/ozone/cpu_builder.cc +++ b/src/cpu/ozone/cpu_builder.cc @@ -63,6 +63,7 @@ SimObjectParam<System *> system; Param<int> cpu_id; SimObjectParam<AlphaITB *> itb; SimObjectParam<AlphaDTB *> dtb; +Param<Tick> profile; #else SimObjectVectorParam<Process *> workload; //SimObjectParam<PageTable *> page_table; @@ -76,16 +77,18 @@ Param<Counter> max_insts_any_thread; Param<Counter> max_insts_all_threads; Param<Counter> max_loads_any_thread; Param<Counter> max_loads_all_threads; +Param<Tick> progress_interval; //SimObjectParam<BaseCache *> icache; //SimObjectParam<BaseCache *> dcache; Param<unsigned> cachePorts; Param<unsigned> width; +Param<unsigned> frontEndLatency; Param<unsigned> frontEndWidth; +Param<unsigned> backEndLatency; Param<unsigned> backEndWidth; Param<unsigned> backEndSquashLatency; -Param<unsigned> backEndLatency; Param<unsigned> maxInstBufferSize; Param<unsigned> numPhysicalRegs; Param<unsigned> maxOutstandingMemOps; @@ -140,6 +143,7 @@ Param<unsigned> RASSize; Param<unsigned> LQEntries; Param<unsigned> SQEntries; +Param<bool> lsqLimits; Param<unsigned> LFSTSize; Param<unsigned> SSITSize; @@ -181,6 +185,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(DerivOzoneCPU) INIT_PARAM(cpu_id, "processor ID"), INIT_PARAM(itb, "Instruction translation buffer"), INIT_PARAM(dtb, "Data translation buffer"), + INIT_PARAM(profile, ""), #else INIT_PARAM(workload, "Processes to run"), // INIT_PARAM(page_table, "Page table"), @@ -204,16 +209,18 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(DerivOzoneCPU) "Terminate when all threads have reached this load" "count", 0), + INIT_PARAM_DFLT(progress_interval, "Progress interval", 0), // INIT_PARAM_DFLT(icache, "L1 instruction cache", NULL), // INIT_PARAM_DFLT(dcache, "L1 data cache", NULL), INIT_PARAM_DFLT(cachePorts, "Cache Ports", 200), INIT_PARAM_DFLT(width, "Width", 1), + INIT_PARAM_DFLT(frontEndLatency, "Front end latency", 1), INIT_PARAM_DFLT(frontEndWidth, "Front end width", 1), + INIT_PARAM_DFLT(backEndLatency, "Back end latency", 1), INIT_PARAM_DFLT(backEndWidth, "Back end width", 1), INIT_PARAM_DFLT(backEndSquashLatency, "Back end squash latency", 1), - INIT_PARAM_DFLT(backEndLatency, "Back end latency", 1), INIT_PARAM_DFLT(maxInstBufferSize, "Maximum instruction buffer size", 16), INIT_PARAM(numPhysicalRegs, "Number of physical registers"), INIT_PARAM_DFLT(maxOutstandingMemOps, "Maximum outstanding memory operations", 4), @@ -274,6 +281,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(DerivOzoneCPU) INIT_PARAM(LQEntries, "Number of load queue entries"), INIT_PARAM(SQEntries, "Number of store queue entries"), + INIT_PARAM_DFLT(lsqLimits, "LSQ size limits dispatch", true), INIT_PARAM(LFSTSize, "Last fetched store table size"), INIT_PARAM(SSITSize, "Store set ID table size"), @@ -336,6 +344,7 @@ CREATE_SIM_OBJECT(DerivOzoneCPU) params->cpu_id = cpu_id; params->itb = itb; params->dtb = dtb; + params->profile = profile; #else params->workload = workload; // params->pTable = page_table; @@ -347,6 +356,7 @@ CREATE_SIM_OBJECT(DerivOzoneCPU) params->max_insts_all_threads = max_insts_all_threads; params->max_loads_any_thread = max_loads_any_thread; params->max_loads_all_threads = max_loads_all_threads; + params->progress_interval = progress_interval; // // Caches @@ -357,6 +367,7 @@ CREATE_SIM_OBJECT(DerivOzoneCPU) params->width = width; params->frontEndWidth = frontEndWidth; + params->frontEndLatency = frontEndLatency; params->backEndWidth = backEndWidth; params->backEndSquashLatency = backEndSquashLatency; params->backEndLatency = backEndLatency; @@ -414,6 +425,7 @@ CREATE_SIM_OBJECT(DerivOzoneCPU) params->LQEntries = LQEntries; params->SQEntries = SQEntries; + params->lsqLimits = lsqLimits; params->SSITSize = SSITSize; params->LFSTSize = LFSTSize; diff --git a/src/cpu/ozone/cpu_impl.hh b/src/cpu/ozone/cpu_impl.hh index 80f18434c..bf547bf94 100644 --- a/src/cpu/ozone/cpu_impl.hh +++ b/src/cpu/ozone/cpu_impl.hh @@ -35,6 +35,7 @@ #include "arch/isa_traits.hh" // For MachInst #include "base/trace.hh" #include "cpu/base.hh" +#include "cpu/simple_thread.hh" #include "cpu/thread_context.hh" #include "cpu/exetrace.hh" #include "cpu/ozone/cpu.hh" @@ -50,9 +51,9 @@ #include "arch/alpha/types.hh" #include "arch/vtophys.hh" #include "base/callback.hh" -//#include "base/remote_gdb.hh" #include "cpu/profile.hh" #include "kern/kernel_stats.hh" +#include "mem/physical.hh" #include "sim/faults.hh" #include "sim/sim_events.hh" #include "sim/sim_exit.hh" @@ -68,15 +69,6 @@ using namespace TheISA; template <class Impl> -template<typename T> -void -OzoneCPU<Impl>::trace_data(T data) { - if (traceData) { - traceData->setData(data); - } -} - -template <class Impl> OzoneCPU<Impl>::TickEvent::TickEvent(OzoneCPU *c, int w) : Event(&mainEventQueue, CPU_Tick_Pri), cpu(c), width(w) { @@ -126,6 +118,8 @@ OzoneCPU<Impl>::OzoneCPU(Params *p) panic("Checker enabled but not compiled in!"); #endif } else { + // If checker is not being used, then the xcProxy points + // directly to the CPU's ExecContext. checker = NULL; thread.tc = &ozoneTC; tc = &ozoneTC; @@ -138,7 +132,7 @@ OzoneCPU<Impl>::OzoneCPU(Params *p) thread.setStatus(ThreadContext::Suspended); #if FULL_SYSTEM - /***** All thread state stuff *****/ + // Setup thread state stuff. thread.cpu = this; thread.setTid(0); @@ -187,12 +181,15 @@ OzoneCPU<Impl>::OzoneCPU(Params *p) frontEnd->setBackEnd(backEnd); backEnd->setFrontEnd(frontEnd); - decoupledFrontEnd = p->decoupledFrontEnd; - globalSeqNum = 1; +#if FULL_SYSTEM checkInterrupts = false; +#endif + lockFlag = 0; + + // Setup rename table, initializing all values to ready. for (int i = 0; i < TheISA::TotalNumRegs; ++i) { thread.renameTable[i] = new DynInst(this); thread.renameTable[i]->setResultReady(); @@ -233,8 +230,6 @@ OzoneCPU<Impl>::OzoneCPU(Params *p) thread.setVirtPort(virt_port); #endif - lockFlag = 0; - DPRINTF(OzoneCPU, "OzoneCPU: Created Ozone cpu object.\n"); } @@ -247,6 +242,7 @@ template <class Impl> void OzoneCPU<Impl>::switchOut() { + BaseCPU::switchOut(); switchCount = 0; // Front end needs state from back end, so switch out the back end first. backEnd->switchOut(); @@ -257,6 +253,8 @@ template <class Impl> void OzoneCPU<Impl>::signalSwitched() { + // Only complete the switchout when both the front end and back + // end have signalled they are ready to switch. if (++switchCount == 2) { backEnd->doSwitchOut(); frontEnd->doSwitchOut(); @@ -266,6 +264,17 @@ OzoneCPU<Impl>::signalSwitched() #endif _status = SwitchedOut; +#ifndef NDEBUG + // Loop through all registers + for (int i = 0; i < AlphaISA::TotalNumRegs; ++i) { + assert(thread.renameTable[i] == frontEnd->renameTable[i]); + + assert(thread.renameTable[i] == backEnd->renameTable[i]); + + DPRINTF(OzoneCPU, "Checking if register %i matches.\n", i); + } +#endif + if (tickEvent.scheduled()) tickEvent.squash(); } @@ -278,13 +287,25 @@ OzoneCPU<Impl>::takeOverFrom(BaseCPU *oldCPU) { BaseCPU::takeOverFrom(oldCPU); + thread.trapPending = false; + thread.inSyscall = false; + backEnd->takeOverFrom(); frontEnd->takeOverFrom(); + frontEnd->renameTable.copyFrom(thread.renameTable); + backEnd->renameTable.copyFrom(thread.renameTable); assert(!tickEvent.scheduled()); +#ifndef NDEBUG + // Check rename table. + for (int i = 0; i < TheISA::TotalNumRegs; ++i) { + assert(thread.renameTable[i]->isResultReady()); + } +#endif + // @todo: Fix hardcoded number // Clear out any old information in time buffer. - for (int i = 0; i < 6; ++i) { + for (int i = 0; i < 15; ++i) { comm.advance(); } @@ -316,6 +337,10 @@ OzoneCPU<Impl>::activateContext(int thread_num, int delay) notIdleFraction++; scheduleTickEvent(delay); _status = Running; +#if FULL_SYSTEM + if (thread.quiesceEvent && thread.quiesceEvent->scheduled()) + thread.quiesceEvent->deschedule(); +#endif thread.setStatus(ThreadContext::Active); frontEnd->wakeFromQuiesce(); } @@ -393,7 +418,7 @@ template <class Impl> void OzoneCPU<Impl>::resetStats() { - startNumInst = numInst; +// startNumInst = numInst; notIdleFraction = (_status != Idle); } @@ -441,6 +466,15 @@ OzoneCPU<Impl>::serialize(std::ostream &os) ozoneTC.serialize(os); nameOut(os, csprintf("%s.tickEvent", name())); tickEvent.serialize(os); + + // Use SimpleThread's ability to checkpoint to make it easier to + // write out the registers. Also make this static so it doesn't + // get instantiated multiple times (causes a panic in statistics). + static SimpleThread temp; + + nameOut(os, csprintf("%s.xc.0", name())); + temp.copyTC(thread.getTC()); + temp.serialize(os); } template <class Impl> @@ -451,6 +485,15 @@ OzoneCPU<Impl>::unserialize(Checkpoint *cp, const std::string §ion) UNSERIALIZE_ENUM(_status); ozoneTC.unserialize(cp, csprintf("%s.tc", section)); tickEvent.unserialize(cp, csprintf("%s.tickEvent", section)); + + // Use SimpleThread's ability to checkpoint to make it easier to + // read in the registers. Also make this static so it doesn't + // get instantiated multiple times (causes a panic in statistics). + static SimpleThread temp; + + temp.copyTC(thread.getTC()); + temp.unserialize(cp, csprintf("%s.xc.0", section)); + thread.getTC()->copyArchRegs(temp.getTC()); } template <class Impl> @@ -705,11 +748,13 @@ OzoneCPU<Impl>::processInterrupts() if (ipl && ipl > thread.readMiscReg(IPR_IPLR)) { thread.setMiscReg(IPR_ISR, summary); thread.setMiscReg(IPR_INTID, ipl); +#if USE_CHECKER // @todo: Make this more transparent if (checker) { checker->threadBase()->setMiscReg(IPR_ISR, summary); checker->threadBase()->setMiscReg(IPR_INTID, ipl); } +#endif Fault fault = new InterruptFault; fault->invoke(thread.getTC()); DPRINTF(Flow, "Interrupt! IPLR=%d ipl=%d summary=%x\n", @@ -810,7 +855,9 @@ OzoneCPU<Impl>::OzoneTC::halt() template <class Impl> void OzoneCPU<Impl>::OzoneTC::dumpFuncProfile() -{ } +{ + thread->dumpFuncProfile(); +} #endif template <class Impl> @@ -829,6 +876,7 @@ OzoneCPU<Impl>::OzoneTC::takeOverFrom(ThreadContext *old_context) copyArchRegs(old_context); setCpuId(old_context->readCpuId()); + thread->setInst(old_context->getInst()); #if !FULL_SYSTEM setFuncExeInst(old_context->readFuncExeInst()); #else @@ -842,6 +890,7 @@ OzoneCPU<Impl>::OzoneTC::takeOverFrom(ThreadContext *old_context) thread->quiesceEvent->tc = this; } + // Copy kernel stats pointer from old context. thread->kernelStats = old_context->getKernelStats(); // storeCondFailures = 0; cpu->lockFlag = false; @@ -863,7 +912,11 @@ OzoneCPU<Impl>::OzoneTC::regStats(const std::string &name) template <class Impl> void OzoneCPU<Impl>::OzoneTC::serialize(std::ostream &os) -{ } +{ + // Once serialization is added, serialize the quiesce event and + // kernel stats. Will need to make sure there aren't multiple + // things that serialize them. +} template <class Impl> void @@ -896,16 +949,14 @@ template <class Impl> void OzoneCPU<Impl>::OzoneTC::profileClear() { - if (thread->profile) - thread->profile->clear(); + thread->profileClear(); } template <class Impl> void OzoneCPU<Impl>::OzoneTC::profileSample() { - if (thread->profile) - thread->profile->sample(thread->profileNode, thread->profilePC); + thread->profileSample(); } #endif @@ -916,7 +967,6 @@ OzoneCPU<Impl>::OzoneTC::getThreadNum() return thread->readTid(); } -// Also somewhat obnoxious. Really only used for the TLB fault. template <class Impl> TheISA::MachInst OzoneCPU<Impl>::OzoneTC::getInst() @@ -934,14 +984,20 @@ OzoneCPU<Impl>::OzoneTC::copyArchRegs(ThreadContext *tc) cpu->frontEnd->setPC(thread->PC); cpu->frontEnd->setNextPC(thread->nextPC); - for (int i = 0; i < TheISA::TotalNumRegs; ++i) { - if (i < TheISA::FP_Base_DepTag) { - thread->renameTable[i]->setIntResult(tc->readIntReg(i)); - } else if (i < (TheISA::FP_Base_DepTag + TheISA::NumFloatRegs)) { - int fp_idx = i - TheISA::FP_Base_DepTag; - thread->renameTable[i]->setDoubleResult( - tc->readFloatReg(fp_idx, 64)); - } + // First loop through the integer registers. + for (int i = 0; i < TheISA::NumIntRegs; ++i) { +/* DPRINTF(OzoneCPU, "Copying over register %i, had data %lli, " + "now has data %lli.\n", + i, thread->renameTable[i]->readIntResult(), + tc->readIntReg(i)); +*/ + thread->renameTable[i]->setIntResult(tc->readIntReg(i)); + } + + // Then loop through the floating point registers. + for (int i = 0; i < TheISA::NumFloatRegs; ++i) { + int fp_idx = i + TheISA::FP_Base_DepTag; + thread->renameTable[fp_idx]->setIntResult(tc->readFloatRegBits(i)); } #if !FULL_SYSTEM diff --git a/src/cpu/ozone/dyn_inst_impl.hh b/src/cpu/ozone/dyn_inst_impl.hh index ba0d70417..db1460eba 100644 --- a/src/cpu/ozone/dyn_inst_impl.hh +++ b/src/cpu/ozone/dyn_inst_impl.hh @@ -215,14 +215,14 @@ OzoneDynInst<Impl>::clearMemDependents() } template <class Impl> -MiscReg +TheISA::MiscReg OzoneDynInst<Impl>::readMiscReg(int misc_reg) { return this->thread->readMiscReg(misc_reg); } template <class Impl> -MiscReg +TheISA::MiscReg OzoneDynInst<Impl>::readMiscRegWithEffect(int misc_reg, Fault &fault) { return this->thread->readMiscRegWithEffect(misc_reg, fault); diff --git a/src/cpu/ozone/front_end.hh b/src/cpu/ozone/front_end.hh index 3ed3c4d18..5ffd3666e 100644 --- a/src/cpu/ozone/front_end.hh +++ b/src/cpu/ozone/front_end.hh @@ -34,6 +34,7 @@ #include <deque> #include "arch/utility.hh" +#include "base/timebuf.hh" #include "cpu/inst_seq.hh" #include "cpu/o3/bpred_unit.hh" #include "cpu/ozone/rename_table.hh" @@ -246,15 +247,21 @@ class FrontEnd void dumpInsts(); private: + TimeBuffer<int> numInstsReady; + typedef typename std::deque<DynInstPtr> InstBuff; typedef typename InstBuff::iterator InstBuffIt; + InstBuff feBuffer; + InstBuff instBuffer; int instBufferSize; int maxInstBufferSize; + int latency; + int width; int freeRegs; diff --git a/src/cpu/ozone/front_end_impl.hh b/src/cpu/ozone/front_end_impl.hh index 1b120460a..d34716de6 100644 --- a/src/cpu/ozone/front_end_impl.hh +++ b/src/cpu/ozone/front_end_impl.hh @@ -92,8 +92,10 @@ FrontEnd<Impl>::FrontEnd(Params *params) : branchPred(params), icachePort(this), mem(params->mem), + numInstsReady(params->frontEndLatency, 0), instBufferSize(0), maxInstBufferSize(params->maxInstBufferSize), + latency(params->frontEndLatency), width(params->frontEndWidth), freeRegs(params->numPhysicalRegs), numPhysRegs(params->numPhysicalRegs), @@ -326,6 +328,18 @@ FrontEnd<Impl>::tick() if (switchedOut) return; + for (int insts_to_queue = numInstsReady[-latency]; + !instBuffer.empty() && insts_to_queue; + --insts_to_queue) + { + DPRINTF(FE, "Transferring instruction [sn:%lli] to the feBuffer\n", + instBuffer.front()->seqNum); + feBuffer.push_back(instBuffer.front()); + instBuffer.pop_front(); + } + + numInstsReady.advance(); + // @todo: Maybe I want to just have direct communication... if (fromCommit->doneSeqNum) { branchPred.update(fromCommit->doneSeqNum, 0); @@ -339,8 +353,8 @@ FrontEnd<Impl>::tick() cacheBlkValid = true; status = Running; - if (barrierInst) - status = SerializeBlocked; +// if (barrierInst) +// status = SerializeBlocked; if (freeRegs <= 0) status = RenameBlocked; checkBE(); @@ -414,11 +428,12 @@ FrontEnd<Impl>::tick() // latency instBuffer.push_back(inst); ++instBufferSize; + numInstsReady[0]++; ++num_inst; #if FULL_SYSTEM if (inst->isQuiesce()) { - warn("%lli: Quiesce instruction encountered, halting fetch!", curTick); +// warn("%lli: Quiesce instruction encountered, halting fetch!", curTick); status = QuiescePending; break; } @@ -572,10 +587,10 @@ FrontEnd<Impl>::processBarriers(DynInstPtr &inst) // Change status over to SerializeBlocked so that other stages know // what this is blocked on. - status = SerializeBlocked; +// status = SerializeBlocked; - barrierInst = inst; - return true; +// barrierInst = inst; +// return true; } else if ((inst->isStoreConditional() || inst->isSerializeAfter()) && !inst->isSerializeHandled()) { DPRINTF(FE, "Serialize after instruction encountered.\n"); @@ -620,6 +635,7 @@ FrontEnd<Impl>::handleFault(Fault &fault) instruction->fault = fault; instruction->setCanIssue(); instBuffer.push_back(instruction); + numInstsReady[0]++; ++instBufferSize; } @@ -649,6 +665,21 @@ FrontEnd<Impl>::squash(const InstSeqNum &squash_num, const Addr &next_PC, freeRegs+= inst->numDestRegs(); } + while (!feBuffer.empty() && + feBuffer.back()->seqNum > squash_num) { + DynInstPtr inst = feBuffer.back(); + + DPRINTF(FE, "Squashing instruction [sn:%lli] PC %#x\n", + inst->seqNum, inst->readPC()); + + inst->clearDependents(); + + feBuffer.pop_back(); + --instBufferSize; + + freeRegs+= inst->numDestRegs(); + } + // Copy over rename table from the back end. renameTable.copyFrom(backEnd->renameTable); @@ -666,12 +697,12 @@ FrontEnd<Impl>::squash(const InstSeqNum &squash_num, const Addr &next_PC, DPRINTF(FE, "Squashing outstanding Icache access.\n"); memReq = NULL; } - +/* if (status == SerializeBlocked) { assert(barrierInst->seqNum > squash_num); barrierInst = NULL; } - +*/ // Unless this squash originated from the front end, we're probably // in running mode now. // Actually might want to make this latency dependent. @@ -683,13 +714,22 @@ template <class Impl> typename Impl::DynInstPtr FrontEnd<Impl>::getInst() { - if (instBufferSize == 0) { + if (feBuffer.empty()) { return NULL; } - DynInstPtr inst = instBuffer.front(); + DynInstPtr inst = feBuffer.front(); - instBuffer.pop_front(); + if (inst->isSerializeBefore() || inst->isIprAccess()) { + DPRINTF(FE, "Back end is getting a serialize before inst\n"); + if (!backEnd->robEmpty()) { + DPRINTF(FE, "Rob is not empty yet, not returning inst\n"); + return NULL; + } + inst->clearSerializeBefore(); + } + + feBuffer.pop_front(); --instBufferSize; @@ -784,11 +824,11 @@ FrontEnd<Impl>::updateStatus() } if (status == BEBlocked && !be_block) { - if (barrierInst) { - status = SerializeBlocked; - } else { +// if (barrierInst) { +// status = SerializeBlocked; +// } else { status = Running; - } +// } ret_val = true; } return ret_val; @@ -810,6 +850,7 @@ template <class Impl> typename Impl::DynInstPtr FrontEnd<Impl>::getInstFromCacheline() { +/* if (status == SerializeComplete) { DynInstPtr inst = barrierInst; status = Running; @@ -817,7 +858,7 @@ FrontEnd<Impl>::getInstFromCacheline() inst->clearSerializeBefore(); return inst; } - +*/ InstSeqNum inst_seq; MachInst inst; // @todo: Fix this magic number used here to handle word offset (and @@ -932,6 +973,7 @@ FrontEnd<Impl>::doSwitchOut() squash(0, 0); instBuffer.clear(); instBufferSize = 0; + feBuffer.clear(); status = Idle; } diff --git a/src/cpu/ozone/inorder_back_end_impl.hh b/src/cpu/ozone/inorder_back_end_impl.hh index 701fc0ee9..16ebac163 100644 --- a/src/cpu/ozone/inorder_back_end_impl.hh +++ b/src/cpu/ozone/inorder_back_end_impl.hh @@ -284,7 +284,7 @@ InorderBackEnd<Impl>::executeInsts() } inst->setExecuted(); - inst->setCompleted(); + inst->setResultReady(); inst->setCanCommit(); instList.pop_front(); diff --git a/src/cpu/ozone/inst_queue_impl.hh b/src/cpu/ozone/inst_queue_impl.hh index f2d80e621..32a940241 100644 --- a/src/cpu/ozone/inst_queue_impl.hh +++ b/src/cpu/ozone/inst_queue_impl.hh @@ -850,13 +850,13 @@ template <class Impl> void InstQueue<Impl>::addReadyMemInst(DynInstPtr &ready_inst) { - OpClass op_class = ready_inst->opClass(); +// OpClass op_class = ready_inst->opClass(); readyInsts.push(ready_inst); DPRINTF(IQ, "Instruction is ready to issue, putting it onto " "the ready list, PC %#x opclass:%i [sn:%lli].\n", - ready_inst->readPC(), op_class, ready_inst->seqNum); + ready_inst->readPC(), ready_inst->opClass(), ready_inst->seqNum); } /* template <class Impl> @@ -1177,11 +1177,11 @@ InstQueue<Impl>::addIfReady(DynInstPtr &inst) return; } - OpClass op_class = inst->opClass(); +// OpClass op_class = inst->opClass(); DPRINTF(IQ, "Instruction is ready to issue, putting it onto " "the ready list, PC %#x opclass:%i [sn:%lli].\n", - inst->readPC(), op_class, inst->seqNum); + inst->readPC(), inst->opClass(), inst->seqNum); readyInsts.push(inst); } diff --git a/src/cpu/ozone/lw_back_end.hh b/src/cpu/ozone/lw_back_end.hh index d836ceebd..49c6a1ae2 100644 --- a/src/cpu/ozone/lw_back_end.hh +++ b/src/cpu/ozone/lw_back_end.hh @@ -80,7 +80,7 @@ class LWBackEnd TimeBuffer<IssueToExec> i2e; typename TimeBuffer<IssueToExec>::wire instsToExecute; TimeBuffer<ExecToCommit> e2c; - TimeBuffer<Writeback> numInstsToWB; + TimeBuffer<int> numInstsToWB; TimeBuffer<CommStruct> *comm; typename TimeBuffer<CommStruct>::wire toIEW; @@ -139,7 +139,7 @@ class LWBackEnd Tick lastCommitCycle; - bool robEmpty() { return instList.empty(); } + bool robEmpty() { return numInsts == 0; } bool isFull() { return numInsts >= numROBEntries; } bool isBlocked() { return status == Blocked || dispatchStatus == Blocked; } @@ -194,6 +194,7 @@ class LWBackEnd } void instToCommit(DynInstPtr &inst); + void readyInstsForCommit(); void switchOut(); void doSwitchOut(); @@ -255,12 +256,13 @@ class LWBackEnd RenameTable<Impl> renameTable; private: + int latency; + // General back end width. Used if the more specific isn't given. int width; // Dispatch width. int dispatchWidth; - int numDispatchEntries; int dispatchSize; int waitingInsts; @@ -285,6 +287,7 @@ class LWBackEnd int numROBEntries; int numInsts; + bool lsqLimits; std::set<InstSeqNum> waitingMemOps; typedef std::set<InstSeqNum>::iterator MemIt; @@ -295,9 +298,6 @@ class LWBackEnd InstSeqNum squashSeqNum; Addr squashNextPC; - Fault faultFromFetch; - bool fetchHasFault; - bool switchedOut; bool switchPending; @@ -321,8 +321,6 @@ class LWBackEnd std::list<DynInstPtr> replayList; std::list<DynInstPtr> writeback; - int latency; - int squashLatency; bool exactFullStall; @@ -331,37 +329,39 @@ class LWBackEnd /* Stats::Scalar<> dcacheStallCycles; Counter lastDcacheStall; */ - Stats::Vector<> rob_cap_events; - Stats::Vector<> rob_cap_inst_count; - Stats::Vector<> iq_cap_events; - Stats::Vector<> iq_cap_inst_count; + Stats::Vector<> robCapEvents; + Stats::Vector<> robCapInstCount; + Stats::Vector<> iqCapEvents; + Stats::Vector<> iqCapInstCount; // total number of instructions executed - Stats::Vector<> exe_inst; - Stats::Vector<> exe_swp; - Stats::Vector<> exe_nop; - Stats::Vector<> exe_refs; - Stats::Vector<> exe_loads; - Stats::Vector<> exe_branches; + Stats::Vector<> exeInst; + Stats::Vector<> exeSwp; + Stats::Vector<> exeNop; + Stats::Vector<> exeRefs; + Stats::Vector<> exeLoads; + Stats::Vector<> exeBranches; - Stats::Vector<> issued_ops; + Stats::Vector<> issuedOps; // total number of loads forwaded from LSQ stores - Stats::Vector<> lsq_forw_loads; + Stats::Vector<> lsqForwLoads; // total number of loads ignored due to invalid addresses - Stats::Vector<> inv_addr_loads; + Stats::Vector<> invAddrLoads; // total number of software prefetches ignored due to invalid addresses - Stats::Vector<> inv_addr_swpfs; + Stats::Vector<> invAddrSwpfs; // ready loads blocked due to memory disambiguation - Stats::Vector<> lsq_blocked_loads; + Stats::Vector<> lsqBlockedLoads; Stats::Scalar<> lsqInversion; - Stats::Vector<> n_issued_dist; - Stats::VectorDistribution<> issue_delay_dist; + Stats::Vector<> nIssuedDist; +/* + Stats::VectorDistribution<> issueDelayDist; - Stats::VectorDistribution<> queue_res_dist; + Stats::VectorDistribution<> queueResDist; +*/ /* Stats::Vector<> stat_fu_busy; Stats::Vector2d<> stat_fuBusy; @@ -379,37 +379,37 @@ class LWBackEnd Stats::Formula commit_ipb; Stats::Formula lsq_inv_rate; */ - Stats::Vector<> writeback_count; - Stats::Vector<> producer_inst; - Stats::Vector<> consumer_inst; - Stats::Vector<> wb_penalized; + Stats::Vector<> writebackCount; + Stats::Vector<> producerInst; + Stats::Vector<> consumerInst; + Stats::Vector<> wbPenalized; - Stats::Formula wb_rate; - Stats::Formula wb_fanout; - Stats::Formula wb_penalized_rate; + Stats::Formula wbRate; + Stats::Formula wbFanout; + Stats::Formula wbPenalizedRate; // total number of instructions committed - Stats::Vector<> stat_com_inst; - Stats::Vector<> stat_com_swp; - Stats::Vector<> stat_com_refs; - Stats::Vector<> stat_com_loads; - Stats::Vector<> stat_com_membars; - Stats::Vector<> stat_com_branches; + Stats::Vector<> statComInst; + Stats::Vector<> statComSwp; + Stats::Vector<> statComRefs; + Stats::Vector<> statComLoads; + Stats::Vector<> statComMembars; + Stats::Vector<> statComBranches; - Stats::Distribution<> n_committed_dist; + Stats::Distribution<> nCommittedDist; - Stats::Scalar<> commit_eligible_samples; - Stats::Vector<> commit_eligible; + Stats::Scalar<> commitEligibleSamples; + Stats::Vector<> commitEligible; Stats::Vector<> squashedInsts; Stats::Vector<> ROBSquashedInsts; - Stats::Scalar<> ROB_fcount; - Stats::Formula ROB_full_rate; + Stats::Scalar<> ROBFcount; + Stats::Formula ROBFullRate; - Stats::Vector<> ROB_count; // cumulative ROB occupancy - Stats::Formula ROB_occ_rate; - Stats::VectorDistribution<> ROB_occ_dist; + Stats::Vector<> ROBCount; // cumulative ROB occupancy + Stats::Formula ROBOccRate; +// Stats::VectorDistribution<> ROBOccDist; public: void dumpInsts(); diff --git a/src/cpu/ozone/lw_back_end_impl.hh b/src/cpu/ozone/lw_back_end_impl.hh index a4f1d805e..c39b9e08b 100644 --- a/src/cpu/ozone/lw_back_end_impl.hh +++ b/src/cpu/ozone/lw_back_end_impl.hh @@ -141,13 +141,14 @@ LWBackEnd<Impl>::replayMemInst(DynInstPtr &inst) template <class Impl> LWBackEnd<Impl>::LWBackEnd(Params *params) - : d2i(5, 5), i2e(5, 5), e2c(5, 5), numInstsToWB(5, 5), + : d2i(5, 5), i2e(5, 5), e2c(5, 5), numInstsToWB(params->backEndLatency, 0), trapSquash(false), tcSquash(false), - width(params->backEndWidth), exactFullStall(true) + latency(params->backEndLatency), + width(params->backEndWidth), lsqLimits(params->lsqLimits), + exactFullStall(true) { numROBEntries = params->numROBEntries; numInsts = 0; - numDispatchEntries = 32; maxOutstandingMemOps = params->maxOutstandingMemOps; numWaitingMemOps = 0; waitingInsts = 0; @@ -184,78 +185,79 @@ void LWBackEnd<Impl>::regStats() { using namespace Stats; - rob_cap_events + LSQ.regStats(); + + robCapEvents .init(cpu->number_of_threads) .name(name() + ".ROB:cap_events") .desc("number of cycles where ROB cap was active") .flags(total) ; - rob_cap_inst_count + robCapInstCount .init(cpu->number_of_threads) .name(name() + ".ROB:cap_inst") .desc("number of instructions held up by ROB cap") .flags(total) ; - iq_cap_events + iqCapEvents .init(cpu->number_of_threads) .name(name() +".IQ:cap_events" ) .desc("number of cycles where IQ cap was active") .flags(total) ; - iq_cap_inst_count + iqCapInstCount .init(cpu->number_of_threads) .name(name() + ".IQ:cap_inst") .desc("number of instructions held up by IQ cap") .flags(total) ; - - exe_inst + exeInst .init(cpu->number_of_threads) .name(name() + ".ISSUE:count") .desc("number of insts issued") .flags(total) ; - exe_swp + exeSwp .init(cpu->number_of_threads) .name(name() + ".ISSUE:swp") .desc("number of swp insts issued") .flags(total) ; - exe_nop + exeNop .init(cpu->number_of_threads) .name(name() + ".ISSUE:nop") .desc("number of nop insts issued") .flags(total) ; - exe_refs + exeRefs .init(cpu->number_of_threads) .name(name() + ".ISSUE:refs") .desc("number of memory reference insts issued") .flags(total) ; - exe_loads + exeLoads .init(cpu->number_of_threads) .name(name() + ".ISSUE:loads") .desc("number of load insts issued") .flags(total) ; - exe_branches + exeBranches .init(cpu->number_of_threads) .name(name() + ".ISSUE:branches") .desc("Number of branches issued") .flags(total) ; - issued_ops + issuedOps .init(cpu->number_of_threads) .name(name() + ".ISSUE:op_count") .desc("number of insts issued") @@ -272,28 +274,28 @@ LWBackEnd<Impl>::regStats() // // Other stats // - lsq_forw_loads + lsqForwLoads .init(cpu->number_of_threads) .name(name() + ".LSQ:forw_loads") .desc("number of loads forwarded via LSQ") .flags(total) ; - inv_addr_loads + invAddrLoads .init(cpu->number_of_threads) .name(name() + ".ISSUE:addr_loads") .desc("number of invalid-address loads") .flags(total) ; - inv_addr_swpfs + invAddrSwpfs .init(cpu->number_of_threads) .name(name() + ".ISSUE:addr_swpfs") .desc("number of invalid-address SW prefetches") .flags(total) ; - lsq_blocked_loads + lsqBlockedLoads .init(cpu->number_of_threads) .name(name() + ".LSQ:blocked_loads") .desc("number of ready loads not issued due to memory disambiguation") @@ -305,51 +307,52 @@ LWBackEnd<Impl>::regStats() .desc("Number of times LSQ instruction issued early") ; - n_issued_dist + nIssuedDist .init(issueWidth + 1) .name(name() + ".ISSUE:issued_per_cycle") .desc("Number of insts issued each cycle") .flags(total | pdf | dist) ; - issue_delay_dist +/* + issueDelayDist .init(Num_OpClasses,0,99,2) .name(name() + ".ISSUE:") .desc("cycles from operands ready to issue") .flags(pdf | cdf) ; - queue_res_dist + queueResDist .init(Num_OpClasses, 0, 99, 2) .name(name() + ".IQ:residence:") .desc("cycles from dispatch to issue") .flags(total | pdf | cdf ) ; for (int i = 0; i < Num_OpClasses; ++i) { - queue_res_dist.subname(i, opClassStrings[i]); + queueResDist.subname(i, opClassStrings[i]); } - - writeback_count +*/ + writebackCount .init(cpu->number_of_threads) .name(name() + ".WB:count") .desc("cumulative count of insts written-back") .flags(total) ; - producer_inst + producerInst .init(cpu->number_of_threads) .name(name() + ".WB:producers") .desc("num instructions producing a value") .flags(total) ; - consumer_inst + consumerInst .init(cpu->number_of_threads) .name(name() + ".WB:consumers") .desc("num instructions consuming a value") .flags(total) ; - wb_penalized + wbPenalized .init(cpu->number_of_threads) .name(name() + ".WB:penalized") .desc("number of instrctions required to write to 'other' IQ") @@ -357,71 +360,71 @@ LWBackEnd<Impl>::regStats() ; - wb_penalized_rate + wbPenalizedRate .name(name() + ".WB:penalized_rate") .desc ("fraction of instructions written-back that wrote to 'other' IQ") .flags(total) ; - wb_penalized_rate = wb_penalized / writeback_count; + wbPenalizedRate = wbPenalized / writebackCount; - wb_fanout + wbFanout .name(name() + ".WB:fanout") .desc("average fanout of values written-back") .flags(total) ; - wb_fanout = producer_inst / consumer_inst; + wbFanout = producerInst / consumerInst; - wb_rate + wbRate .name(name() + ".WB:rate") .desc("insts written-back per cycle") .flags(total) ; - wb_rate = writeback_count / cpu->numCycles; + wbRate = writebackCount / cpu->numCycles; - stat_com_inst + statComInst .init(cpu->number_of_threads) .name(name() + ".COM:count") .desc("Number of instructions committed") .flags(total) ; - stat_com_swp + statComSwp .init(cpu->number_of_threads) .name(name() + ".COM:swp_count") .desc("Number of s/w prefetches committed") .flags(total) ; - stat_com_refs + statComRefs .init(cpu->number_of_threads) .name(name() + ".COM:refs") .desc("Number of memory references committed") .flags(total) ; - stat_com_loads + statComLoads .init(cpu->number_of_threads) .name(name() + ".COM:loads") .desc("Number of loads committed") .flags(total) ; - stat_com_membars + statComMembars .init(cpu->number_of_threads) .name(name() + ".COM:membars") .desc("Number of memory barriers committed") .flags(total) ; - stat_com_branches + statComBranches .init(cpu->number_of_threads) .name(name() + ".COM:branches") .desc("Number of branches committed") .flags(total) ; - n_committed_dist + nCommittedDist .init(0,commitWidth,1) .name(name() + ".COM:committed_per_cycle") .desc("Number of insts commited each cycle") @@ -441,14 +444,14 @@ LWBackEnd<Impl>::regStats() // -> The standard deviation is computed only over cycles where // we reached the BW limit // - commit_eligible + commitEligible .init(cpu->number_of_threads) .name(name() + ".COM:bw_limited") .desc("number of insts not committed due to BW limits") .flags(total) ; - commit_eligible_samples + commitEligibleSamples .name(name() + ".COM:bw_lim_events") .desc("number cycles where commit BW limit reached") ; @@ -465,37 +468,38 @@ LWBackEnd<Impl>::regStats() .desc("Number of instructions removed from inst list when they reached the head of the ROB") ; - ROB_fcount + ROBFcount .name(name() + ".ROB:full_count") .desc("number of cycles where ROB was full") ; - ROB_count + ROBCount .init(cpu->number_of_threads) .name(name() + ".ROB:occupancy") .desc(name() + ".ROB occupancy (cumulative)") .flags(total) ; - ROB_full_rate + ROBFullRate .name(name() + ".ROB:full_rate") .desc("ROB full per cycle") ; - ROB_full_rate = ROB_fcount / cpu->numCycles; + ROBFullRate = ROBFcount / cpu->numCycles; - ROB_occ_rate + ROBOccRate .name(name() + ".ROB:occ_rate") .desc("ROB occupancy rate") .flags(total) ; - ROB_occ_rate = ROB_count / cpu->numCycles; - - ROB_occ_dist + ROBOccRate = ROBCount / cpu->numCycles; +/* + ROBOccDist .init(cpu->number_of_threads,0,numROBEntries,2) .name(name() + ".ROB:occ_dist") .desc("ROB Occupancy per cycle") .flags(total | cdf) ; +*/ } template <class Impl> @@ -588,17 +592,21 @@ LWBackEnd<Impl>::tick() { DPRINTF(BE, "Ticking back end\n"); + // Read in any done instruction information and update the IQ or LSQ. + updateStructures(); + if (switchPending && robEmpty() && !LSQ.hasStoresToWB()) { cpu->signalSwitched(); return; } - ROB_count[0]+= numInsts; + readyInstsForCommit(); - wbCycle = 0; + numInstsToWB.advance(); - // Read in any done instruction information and update the IQ or LSQ. - updateStructures(); + ROBCount[0]+= numInsts; + + wbCycle = 0; #if FULL_SYSTEM checkInterrupts(); @@ -674,6 +682,10 @@ LWBackEnd<Impl>::dispatchInsts() while (numInsts < numROBEntries && numWaitingMemOps < maxOutstandingMemOps) { // Get instruction from front of time buffer + if (lsqLimits && LSQ.isFull()) { + break; + } + DynInstPtr inst = frontEnd->getInst(); if (!inst) { break; @@ -732,6 +744,7 @@ LWBackEnd<Impl>::dispatchInsts() inst->setIssued(); inst->setExecuted(); inst->setCanCommit(); + numInstsToWB[0]++; } else { DPRINTF(BE, "Instruction [sn:%lli] ready, addding to " "exeList.\n", @@ -866,8 +879,17 @@ LWBackEnd<Impl>::executeInsts() if (inst->isLoad()) { LSQ.executeLoad(inst); } else if (inst->isStore()) { - LSQ.executeStore(inst); - if (inst->req && !(inst->req->getFlags() & LOCKED)) { + Fault fault = LSQ.executeStore(inst); + + if (!inst->isStoreConditional() && fault == NoFault) { + inst->setExecuted(); + + instToCommit(inst); + } else if (fault != NoFault) { + // If the instruction faulted, then we need to send it along to commit + // without the instruction completing. + // Send this instruction to commit, also make sure iew stage + // realizes there is activity. inst->setExecuted(); instToCommit(inst); @@ -908,36 +930,54 @@ LWBackEnd<Impl>::executeInsts() } } - issued_ops[0]+= num_executed; - n_issued_dist[num_executed]++; + issuedOps[0]+= num_executed; + nIssuedDist[num_executed]++; } template<class Impl> void LWBackEnd<Impl>::instToCommit(DynInstPtr &inst) { - DPRINTF(BE, "Sending instructions to commit [sn:%lli] PC %#x.\n", inst->seqNum, inst->readPC()); if (!inst->isSquashed()) { - DPRINTF(BE, "Writing back instruction [sn:%lli] PC %#x.\n", - inst->seqNum, inst->readPC()); - - inst->setCanCommit(); - if (inst->isExecuted()) { inst->setResultReady(); int dependents = wakeDependents(inst); if (dependents) { - producer_inst[0]++; - consumer_inst[0]+= dependents; + producerInst[0]++; + consumerInst[0]+= dependents; } } } - writeback_count[0]++; + writeback.push_back(inst); + + numInstsToWB[0]++; + + writebackCount[0]++; +} + +template <class Impl> +void +LWBackEnd<Impl>::readyInstsForCommit() +{ + for (int i = numInstsToWB[-latency]; + !writeback.empty() && i; + --i) + { + DynInstPtr inst = writeback.front(); + writeback.pop_front(); + if (!inst->isSquashed()) { + DPRINTF(BE, "Writing back instruction [sn:%lli] PC %#x.\n", + inst->seqNum, inst->readPC()); + + inst->setCanCommit(); + } + } } + #if 0 template <class Impl> void @@ -1010,7 +1050,7 @@ LWBackEnd<Impl>::commitInst(int inst_num) // or store inst. Signal backwards that it should be executed. if (!inst->isExecuted()) { if (inst->isNonSpeculative() || - inst->isStoreConditional() || + (inst->isStoreConditional() && inst->getFault() == NoFault) || inst->isMemBarrier() || inst->isWriteBarrier()) { #if !FULL_SYSTEM @@ -1151,6 +1191,20 @@ LWBackEnd<Impl>::commitInst(int inst_num) ++freed_regs; } +#if FULL_SYSTEM + if (thread->profile) { +// bool usermode = +// (xc->readMiscReg(AlphaISA::IPR_DTB_CM) & 0x18) != 0; +// thread->profilePC = usermode ? 1 : inst->readPC(); + thread->profilePC = inst->readPC(); + ProfileNode *node = thread->profile->consume(thread->getTC(), + inst->staticInst); + + if (node) + thread->profileNode = node; + } +#endif + if (inst->traceData) { inst->traceData->setFetchSeq(inst->seqNum); inst->traceData->setCPSeq(thread->numInst); @@ -1158,6 +1212,9 @@ LWBackEnd<Impl>::commitInst(int inst_num) inst->traceData = NULL; } + if (inst->isCopy()) + panic("Should not commit any copy instructions!"); + inst->clearDependents(); frontEnd->addFreeRegs(freed_regs); @@ -1207,9 +1264,9 @@ LWBackEnd<Impl>::commitInsts() while (!instList.empty() && inst_num < commitWidth) { if (instList.back()->isSquashed()) { instList.back()->clearDependents(); + ROBSquashedInsts[instList.back()->threadNumber]++; instList.pop_back(); --numInsts; - ROBSquashedInsts[instList.back()->threadNumber]++; continue; } @@ -1221,7 +1278,7 @@ LWBackEnd<Impl>::commitInsts() break; } } - n_committed_dist.sample(inst_num); + nCommittedDist.sample(inst_num); } template <class Impl> @@ -1231,10 +1288,10 @@ LWBackEnd<Impl>::squash(const InstSeqNum &sn) LSQ.squash(sn); int freed_regs = 0; - InstListIt waiting_list_end = waitingList.end(); + InstListIt insts_end_it = waitingList.end(); InstListIt insts_it = waitingList.begin(); - while (insts_it != waiting_list_end && (*insts_it)->seqNum > sn) + while (insts_it != insts_end_it && (*insts_it)->seqNum > sn) { if ((*insts_it)->isSquashed()) { ++insts_it; @@ -1260,6 +1317,7 @@ LWBackEnd<Impl>::squash(const InstSeqNum &sn) while (!instList.empty() && (*insts_it)->seqNum > sn) { if ((*insts_it)->isSquashed()) { + panic("Instruction should not be already squashed and on list!"); ++insts_it; continue; } @@ -1291,18 +1349,6 @@ LWBackEnd<Impl>::squash(const InstSeqNum &sn) --numInsts; } - insts_it = waitingList.begin(); - while (!waitingList.empty() && insts_it != waitingList.end()) { - if ((*insts_it)->seqNum < sn) { - ++insts_it; - continue; - } - assert((*insts_it)->isSquashed()); - - waitingList.erase(insts_it++); - waitingInsts--; - } - while (memBarrier && memBarrier->seqNum > sn) { DPRINTF(BE, "[sn:%lli] Memory barrier squashed (or previously " "squashed)\n", memBarrier->seqNum); @@ -1320,6 +1366,18 @@ LWBackEnd<Impl>::squash(const InstSeqNum &sn) } } + insts_it = replayList.begin(); + insts_end_it = replayList.end(); + while (!replayList.empty() && insts_it != insts_end_it) { + if ((*insts_it)->seqNum < sn) { + ++insts_it; + continue; + } + assert((*insts_it)->isSquashed()); + + replayList.erase(insts_it++); + } + frontEnd->addFreeRegs(freed_regs); } @@ -1392,14 +1450,6 @@ LWBackEnd<Impl>::squashDueToMemBlocked(DynInstPtr &inst) template <class Impl> void -LWBackEnd<Impl>::fetchFault(Fault &fault) -{ - faultFromFetch = fault; - fetchHasFault = true; -} - -template <class Impl> -void LWBackEnd<Impl>::switchOut() { switchPending = true; @@ -1416,17 +1466,25 @@ LWBackEnd<Impl>::doSwitchOut() // yet written back. assert(robEmpty()); assert(!LSQ.hasStoresToWB()); - + writeback.clear(); + for (int i = 0; i < numInstsToWB.getSize() + 1; ++i) + numInstsToWB.advance(); + +// squash(0); + assert(waitingList.empty()); + assert(instList.empty()); + assert(replayList.empty()); + assert(writeback.empty()); LSQ.switchOut(); - - squash(0); } template <class Impl> void LWBackEnd<Impl>::takeOverFrom(ThreadContext *old_tc) { - switchedOut = false; + assert(!squashPending); + squashSeqNum = 0; + squashNextPC = 0; tcSquash = false; trapSquash = false; @@ -1451,27 +1509,27 @@ LWBackEnd<Impl>::updateExeInstStats(DynInstPtr &inst) // #ifdef TARGET_ALPHA if (inst->isDataPrefetch()) - exe_swp[thread_number]++; + exeSwp[thread_number]++; else - exe_inst[thread_number]++; + exeInst[thread_number]++; #else - exe_inst[thread_number]++; + exeInst[thread_number]++; #endif // // Control operations // if (inst->isControl()) - exe_branches[thread_number]++; + exeBranches[thread_number]++; // // Memory operations // if (inst->isMemRef()) { - exe_refs[thread_number]++; + exeRefs[thread_number]++; if (inst->isLoad()) - exe_loads[thread_number]++; + exeLoads[thread_number]++; } } @@ -1491,33 +1549,33 @@ LWBackEnd<Impl>::updateComInstStats(DynInstPtr &inst) // #ifdef TARGET_ALPHA if (inst->isDataPrefetch()) { - stat_com_swp[tid]++; + statComSwp[tid]++; } else { - stat_com_inst[tid]++; + statComInst[tid]++; } #else - stat_com_inst[tid]++; + statComInst[tid]++; #endif // // Control Instructions // if (inst->isControl()) - stat_com_branches[tid]++; + statComBranches[tid]++; // // Memory references // if (inst->isMemRef()) { - stat_com_refs[tid]++; + statComRefs[tid]++; if (inst->isLoad()) { - stat_com_loads[tid]++; + statComLoads[tid]++; } } if (inst->isMemBarrier()) { - stat_com_membars[tid]++; + statComMembars[tid]++; } } @@ -1569,6 +1627,45 @@ LWBackEnd<Impl>::dumpInsts() ++num; } + inst_list_it = --(writeback.end()); + + cprintf("Writeback list size: %i\n", writeback.size()); + + while (inst_list_it != writeback.end()) + { + cprintf("Instruction:%i\n", + num); + if (!(*inst_list_it)->isSquashed()) { + if (!(*inst_list_it)->isIssued()) { + ++valid_num; + cprintf("Count:%i\n", valid_num); + } else if ((*inst_list_it)->isMemRef() && + !(*inst_list_it)->memOpDone) { + // Loads that have not been marked as executed still count + // towards the total instructions. + ++valid_num; + cprintf("Count:%i\n", valid_num); + } + } + + cprintf("PC:%#x\n[sn:%lli]\n[tid:%i]\n" + "Issued:%i\nSquashed:%i\n", + (*inst_list_it)->readPC(), + (*inst_list_it)->seqNum, + (*inst_list_it)->threadNumber, + (*inst_list_it)->isIssued(), + (*inst_list_it)->isSquashed()); + + if ((*inst_list_it)->isMemRef()) { + cprintf("MemOpDone:%i\n", (*inst_list_it)->memOpDone); + } + + cprintf("\n"); + + inst_list_it--; + ++num; + } + cprintf("Waiting list size: %i\n", waitingList.size()); inst_list_it = --(waitingList.end()); diff --git a/src/cpu/ozone/lw_lsq.hh b/src/cpu/ozone/lw_lsq.hh index 9a21a9d01..6640a9f34 100644 --- a/src/cpu/ozone/lw_lsq.hh +++ b/src/cpu/ozone/lw_lsq.hh @@ -84,6 +84,8 @@ class OzoneLWLSQ { /** Returns the name of the LSQ unit. */ std::string name() const; + void regStats(); + /** Sets the CPU pointer. */ void setCPU(OzoneCPU *cpu_ptr); @@ -179,7 +181,7 @@ class OzoneLWLSQ { int numLoads() { return loads; } /** Returns the number of stores in the SQ. */ - int numStores() { return stores; } + int numStores() { return stores + storesInFlight; } /** Returns if either the LQ or SQ is full. */ bool isFull() { return lqFull() || sqFull(); } @@ -188,7 +190,7 @@ class OzoneLWLSQ { bool lqFull() { return loads >= (LQEntries - 1); } /** Returns if the SQ is full. */ - bool sqFull() { return stores >= (SQEntries - 1); } + bool sqFull() { return (stores + storesInFlight) >= (SQEntries - 1); } /** Debugging function to dump instructions in the LSQ. */ void dumpInsts(); @@ -223,7 +225,9 @@ class OzoneLWLSQ { void storePostSend(Packet *pkt, DynInstPtr &inst); /** Completes the store at the specified index. */ - void completeStore(int store_idx); + void completeStore(DynInstPtr &inst); + + void removeStore(int store_idx); /** Handles doing the retry. */ void recvRetry(); @@ -394,6 +398,10 @@ class OzoneLWLSQ { int storesToWB; + public: + int storesInFlight; + + private: /// @todo Consider moving to a more advanced model with write vs read ports /** The number of cache ports available each cycle. */ int cachePorts; @@ -403,6 +411,9 @@ class OzoneLWLSQ { //list<InstSeqNum> mshrSeqNums; + /** Tota number of memory ordering violations. */ + Stats::Scalar<> lsqMemOrderViolation; + //Stats::Scalar<> dcacheStallCycles; Counter lastDcacheStall; @@ -525,7 +536,7 @@ OzoneLWLSQ<Impl>::read(RequestPtr req, T &data, int load_idx) store_size = (*sq_it).size; - if (store_size == 0) { + if (store_size == 0 || (*sq_it).committed) { sq_it++; continue; } diff --git a/src/cpu/ozone/lw_lsq_impl.hh b/src/cpu/ozone/lw_lsq_impl.hh index 7eef4b11f..4c96ad149 100644 --- a/src/cpu/ozone/lw_lsq_impl.hh +++ b/src/cpu/ozone/lw_lsq_impl.hh @@ -121,7 +121,7 @@ OzoneLWLSQ<Impl>::completeDataAccess(PacketPtr pkt) } if (inst->isStore()) { - completeStore(state->idx); + completeStore(inst); } } @@ -132,7 +132,7 @@ OzoneLWLSQ<Impl>::completeDataAccess(PacketPtr pkt) template <class Impl> OzoneLWLSQ<Impl>::OzoneLWLSQ() : switchedOut(false), dcachePort(this), loads(0), stores(0), - storesToWB(0), stalled(false), isStoreBlocked(false), + storesToWB(0), storesInFlight(0), stalled(false), isStoreBlocked(false), isLoadBlocked(false), loadBlockedHandled(false) { } @@ -173,6 +173,15 @@ OzoneLWLSQ<Impl>::name() const template<class Impl> void +OzoneLWLSQ<Impl>::regStats() +{ + lsqMemOrderViolation + .name(name() + ".memOrderViolation") + .desc("Number of memory ordering violations"); +} + +template<class Impl> +void OzoneLWLSQ<Impl>::setCPU(OzoneCPU *cpu_ptr) { cpu = cpu_ptr; @@ -321,7 +330,7 @@ unsigned OzoneLWLSQ<Impl>::numFreeEntries() { unsigned free_lq_entries = LQEntries - loads; - unsigned free_sq_entries = SQEntries - stores; + unsigned free_sq_entries = SQEntries - (stores + storesInFlight); // Both the LQ and SQ entries have an extra dummy entry to differentiate // empty/full conditions. Subtract 1 from the free entries. @@ -385,6 +394,9 @@ OzoneLWLSQ<Impl>::executeLoad(DynInstPtr &inst) // Actually probably want the oldest faulting load if (load_fault != NoFault) { DPRINTF(OzoneLSQ, "Load [sn:%lli] has a fault\n", inst->seqNum); + if (!(inst->req->getFlags() & UNCACHEABLE && !inst->isAtCommit())) { + inst->setExecuted(); + } // Maybe just set it as can commit here, although that might cause // some other problems with sending traps to the ROB too quickly. be->instToCommit(inst); @@ -461,6 +473,7 @@ OzoneLWLSQ<Impl>::executeStore(DynInstPtr &store_inst) // A load incorrectly passed this store. Squash and refetch. // For now return a fault to show that it was unsuccessful. memDepViolator = (*lq_it); + ++lsqMemOrderViolation; return TheISA::genMachineCheckFault(); } @@ -553,8 +566,8 @@ OzoneLWLSQ<Impl>::writebackStores() if ((*sq_it).size == 0 && !(*sq_it).completed) { sq_it--; - completeStore(inst->sqIdx); - + removeStore(inst->sqIdx); + completeStore(inst); continue; } @@ -626,6 +639,8 @@ OzoneLWLSQ<Impl>::writebackStores() inst->sqIdx,inst->readPC(), req->paddr, *(req->data), inst->seqNum); + DPRINTF(OzoneLSQ, "StoresInFlight: %i\n", + storesInFlight + 1); if (dcacheInterface) { assert(!req->completionEvent); @@ -687,6 +702,8 @@ OzoneLWLSQ<Impl>::writebackStores() } sq_it--; } + ++storesInFlight; +// removeStore(inst->sqIdx); } else { panic("Must HAVE DCACHE!!!!!\n"); } @@ -704,7 +721,7 @@ void OzoneLWLSQ<Impl>::squash(const InstSeqNum &squashed_num) { DPRINTF(OzoneLSQ, "Squashing until [sn:%lli]!" - "(Loads:%i Stores:%i)\n",squashed_num,loads,stores); + "(Loads:%i Stores:%i)\n",squashed_num,loads,stores+storesInFlight); LQIt lq_it = loadQueue.begin(); @@ -881,7 +898,7 @@ OzoneLWLSQ<Impl>::writeback(DynInstPtr &inst, PacketPtr pkt) template <class Impl> void -OzoneLWLSQ<Impl>::completeStore(int store_idx) +OzoneLWLSQ<Impl>::removeStore(int store_idx) { SQHashIt sq_hash_it = SQItHash.find(store_idx); assert(sq_hash_it != SQItHash.end()); @@ -891,8 +908,6 @@ OzoneLWLSQ<Impl>::completeStore(int store_idx) (*sq_it).completed = true; DynInstPtr inst = (*sq_it).inst; - --storesToWB; - if (isStalled() && inst->seqNum == stallingStoreIsn) { DPRINTF(OzoneLSQ, "Unstalling, stalling store [sn:%lli] " @@ -910,6 +925,13 @@ OzoneLWLSQ<Impl>::completeStore(int store_idx) SQItHash.erase(sq_hash_it); SQIndices.push(inst->sqIdx); storeQueue.erase(sq_it); +} + +template <class Impl> +void +OzoneLWLSQ<Impl>::completeStore(DynInstPtr &inst) +{ + --storesToWB; --stores; inst->setCompleted(); @@ -935,9 +957,14 @@ OzoneLWLSQ<Impl>::switchOut() switchedOut = true; // Clear the queue to free up resources + assert(stores == 0); + assert(storeQueue.empty()); + assert(loads == 0); + assert(loadQueue.empty()); + assert(storesInFlight == 0); storeQueue.clear(); loadQueue.clear(); - loads = stores = storesToWB = 0; + loads = stores = storesToWB = storesInFlight = 0; } template <class Impl> diff --git a/src/cpu/ozone/simple_params.hh b/src/cpu/ozone/simple_params.hh index 11cee716f..3f63d2e1d 100644 --- a/src/cpu/ozone/simple_params.hh +++ b/src/cpu/ozone/simple_params.hh @@ -71,10 +71,11 @@ class SimpleParams : public BaseCPU::Params unsigned cachePorts; unsigned width; + unsigned frontEndLatency; unsigned frontEndWidth; + unsigned backEndLatency; unsigned backEndWidth; unsigned backEndSquashLatency; - unsigned backEndLatency; unsigned maxInstBufferSize; unsigned numPhysicalRegs; unsigned maxOutstandingMemOps; @@ -150,6 +151,7 @@ class SimpleParams : public BaseCPU::Params // unsigned LQEntries; unsigned SQEntries; + bool lsqLimits; // // Memory dependence diff --git a/src/cpu/ozone/thread_state.hh b/src/cpu/ozone/thread_state.hh index 8234cf938..c86f3552e 100644 --- a/src/cpu/ozone/thread_state.hh +++ b/src/cpu/ozone/thread_state.hh @@ -34,9 +34,12 @@ #include "arch/faults.hh" #include "arch/types.hh" #include "arch/regfile.hh" +#include "base/callback.hh" +#include "base/output.hh" #include "cpu/thread_context.hh" #include "cpu/thread_state.hh" #include "sim/process.hh" +#include "sim/sim_exit.hh" class Event; //class Process; @@ -65,8 +68,21 @@ struct OzoneThreadState : public ThreadState { #if FULL_SYSTEM OzoneThreadState(CPUType *_cpu, int _thread_num) : ThreadState(-1, _thread_num), - intrflag(0), inSyscall(0), trapPending(0) + intrflag(0), cpu(_cpu), inSyscall(0), trapPending(0) { + if (cpu->params->profile) { + profile = new FunctionProfile(cpu->params->system->kernelSymtab); + Callback *cb = + new MakeCallback<OzoneThreadState, + &OzoneThreadState::dumpFuncProfile>(this); + registerExitCallback(cb); + } + + // let's fill with a dummy node for now so we don't get a segfault + // on the first cycle when there's no node available. + static ProfileNode dummyNode; + profileNode = &dummyNode; + profilePC = 3; miscRegFile.clear(); } #else @@ -130,6 +146,14 @@ struct OzoneThreadState : public ThreadState { void setNextPC(uint64_t val) { nextPC = val; } + +#if FULL_SYSTEM + void dumpFuncProfile() + { + std::ostream *os = simout.create(csprintf("profile.%s.dat", cpu->name())); + profile->dump(tc, *os); + } +#endif }; #endif // __CPU_OZONE_THREAD_STATE_HH__ diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc index c396f5033..88698bfee 100644 --- a/src/cpu/simple/atomic.cc +++ b/src/cpu/simple/atomic.cc @@ -161,9 +161,9 @@ AtomicSimpleCPU::serialize(ostream &os) { SimObject::State so_state = SimObject::getState(); SERIALIZE_ENUM(so_state); + BaseSimpleCPU::serialize(os); nameOut(os, csprintf("%s.tickEvent", name())); tickEvent.serialize(os); - BaseSimpleCPU::serialize(os); } void @@ -171,8 +171,8 @@ AtomicSimpleCPU::unserialize(Checkpoint *cp, const string §ion) { SimObject::State so_state; UNSERIALIZE_ENUM(so_state); - tickEvent.unserialize(cp, csprintf("%s.tickEvent", section)); BaseSimpleCPU::unserialize(cp, section); + tickEvent.unserialize(cp, csprintf("%s.tickEvent", section)); } void @@ -464,6 +464,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(AtomicSimpleCPU) Param<Counter> max_insts_all_threads; Param<Counter> max_loads_any_thread; Param<Counter> max_loads_all_threads; + Param<Tick> progress_interval; SimObjectParam<MemObject *> mem; SimObjectParam<System *> system; @@ -496,6 +497,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(AtomicSimpleCPU) "terminate when any thread reaches this load count"), INIT_PARAM(max_loads_all_threads, "terminate when all threads have reached this load count"), + INIT_PARAM(progress_interval, "Progress interval"), INIT_PARAM(mem, "memory"), INIT_PARAM(system, "system object"), @@ -527,6 +529,7 @@ CREATE_SIM_OBJECT(AtomicSimpleCPU) params->max_insts_all_threads = max_insts_all_threads; params->max_loads_any_thread = max_loads_any_thread; params->max_loads_all_threads = max_loads_all_threads; + params->progress_interval = progress_interval; params->deferRegistration = defer_registration; params->clock = clock; params->functionTrace = function_trace; diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index f801b93fa..522fe79aa 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -170,7 +170,7 @@ BaseSimpleCPU::regStats() void BaseSimpleCPU::resetStats() { - startNumInst = numInst; +// startNumInst = numInst; // notIdleFraction = (_status != Idle); } diff --git a/src/cpu/simple/timing.cc b/src/cpu/simple/timing.cc index 5c1654f7e..03ee27e04 100644 --- a/src/cpu/simple/timing.cc +++ b/src/cpu/simple/timing.cc @@ -589,6 +589,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(TimingSimpleCPU) Param<Counter> max_insts_all_threads; Param<Counter> max_loads_any_thread; Param<Counter> max_loads_all_threads; + Param<Tick> progress_interval; SimObjectParam<MemObject *> mem; SimObjectParam<System *> system; @@ -621,6 +622,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(TimingSimpleCPU) "terminate when any thread reaches this load count"), INIT_PARAM(max_loads_all_threads, "terminate when all threads have reached this load count"), + INIT_PARAM(progress_interval, "Progress interval"), INIT_PARAM(mem, "memory"), INIT_PARAM(system, "system object"), @@ -652,6 +654,7 @@ CREATE_SIM_OBJECT(TimingSimpleCPU) params->max_insts_all_threads = max_insts_all_threads; params->max_loads_any_thread = max_loads_any_thread; params->max_loads_all_threads = max_loads_all_threads; + params->progress_interval = progress_interval; params->deferRegistration = defer_registration; params->clock = clock; params->functionTrace = function_trace; diff --git a/src/cpu/simple_thread.cc b/src/cpu/simple_thread.cc index 5f86cf2b7..4fc47c982 100644 --- a/src/cpu/simple_thread.cc +++ b/src/cpu/simple_thread.cc @@ -162,6 +162,11 @@ SimpleThread::takeOverFrom(ThreadContext *oldContext) if (quiesceEvent) { quiesceEvent->tc = tc; } + + Kernel::Statistics *stats = oldContext->getKernelStats(); + if (stats) { + kernelStats = stats; + } #endif storeCondFailures = 0; diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh index 6e985054f..14e033b7f 100644 --- a/src/cpu/thread_state.hh +++ b/src/cpu/thread_state.hh @@ -32,6 +32,7 @@ #define __CPU_THREAD_STATE_HH__ #include "arch/types.hh" +#include "cpu/profile.hh" #include "cpu/thread_context.hh" #if !FULL_SYSTEM @@ -191,6 +192,7 @@ struct ThreadState { // simulation only; all functional memory accesses should use // one of the FunctionalMemory pointers above. short asid; + #endif /** Current instruction the thread is committing. Only set and diff --git a/src/dev/ide_disk.hh b/src/dev/ide_disk.hh index 0bc0b73ab..2ed860013 100644 --- a/src/dev/ide_disk.hh +++ b/src/dev/ide_disk.hh @@ -242,6 +242,10 @@ class IdeDisk : public SimObject Stats::Scalar<> dmaWriteFullPages; Stats::Scalar<> dmaWriteBytes; Stats::Scalar<> dmaWriteTxs; + Stats::Formula rdBandwidth; + Stats::Formula wrBandwidth; + Stats::Formula totBandwidth; + Stats::Formula totBytes; public: /** diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh index 11cd84e88..593dbecf3 100644 --- a/src/mem/cache/cache_impl.hh +++ b/src/mem/cache/cache_impl.hh @@ -51,7 +51,7 @@ #include "mem/cache/miss/mshr.hh" #include "mem/cache/prefetch/prefetcher.hh" -#include "sim/sim_events.hh" // for SimExitEvent +#include "sim/sim_exit.hh" // for SimExitEvent template<class TagStore, class Buffering, class Coherence> bool @@ -254,7 +254,7 @@ Cache<TagStore,Buffering,Coherence>::access(PacketPtr &pkt) if (missCount) { --missCount; if (missCount == 0) - new SimLoopExitEvent(curTick, "A cache reached the maximum miss count"); + exitSimLoop("A cache reached the maximum miss count"); } } missQueue->handleMiss(pkt, size, curTick + hitLatency); diff --git a/src/python/m5/main.py b/src/python/m5/main.py index e296453db..ccd6c5807 100644 --- a/src/python/m5/main.py +++ b/src/python/m5/main.py @@ -144,6 +144,8 @@ add_option("--trace-flags", metavar="FLAG[,FLAG]", action='append', split=',', help="Sets the flags for tracing") add_option("--trace-start", metavar="TIME", default='0s', help="Start tracing at TIME (must have units)") +add_option("--trace-cycle", metavar="CYCLE", default='0', + help="Start tracing at CYCLE") add_option("--trace-file", metavar="FILE", default="cout", help="Sets the output file for tracing [Default: %default]") add_option("--trace-circlebuf", metavar="SIZE", type="int", default=0, @@ -276,6 +278,7 @@ def main(): # set tracing options objects.Trace.flags = options.trace_flags objects.Trace.start = options.trace_start + objects.Trace.cycle = options.trace_cycle objects.Trace.file = options.trace_file objects.Trace.bufsize = options.trace_circlebuf objects.Trace.dump_on_exit = options.trace_dumponexit diff --git a/src/python/m5/objects/BaseCPU.py b/src/python/m5/objects/BaseCPU.py index 3dd0bda01..0b887cceb 100644 --- a/src/python/m5/objects/BaseCPU.py +++ b/src/python/m5/objects/BaseCPU.py @@ -26,6 +26,7 @@ class BaseCPU(SimObject): "terminate when all threads have reached this load count") max_loads_any_thread = Param.Counter(0, "terminate when any thread reaches this load count") + progress_interval = Param.Tick(0, "interval to print out the progress message") defer_registration = Param.Bool(False, "defer registration with system (for sampling)") diff --git a/src/python/m5/objects/O3CPU.py b/src/python/m5/objects/O3CPU.py index 5100c7ccb..59b40c6e8 100644 --- a/src/python/m5/objects/O3CPU.py +++ b/src/python/m5/objects/O3CPU.py @@ -9,6 +9,8 @@ class DerivO3CPU(BaseCPU): activity = Param.Unsigned(0, "Initial count") numThreads = Param.Unsigned(1, "number of HW thread contexts") + if build_env['FULL_SYSTEM']: + profile = Param.Latency('0ns', "trace the kernel stack") if build_env['USE_CHECKER']: if not build_env['FULL_SYSTEM']: checker = Param.BaseCPU(O3Checker(workload=Parent.workload, diff --git a/src/python/m5/objects/OzoneCPU.py b/src/python/m5/objects/OzoneCPU.py index 8f25d77ed..0913e044c 100644 --- a/src/python/m5/objects/OzoneCPU.py +++ b/src/python/m5/objects/OzoneCPU.py @@ -8,12 +8,15 @@ class DerivOzoneCPU(BaseCPU): numThreads = Param.Unsigned("number of HW thread contexts") checker = Param.BaseCPU("Checker CPU") + if build_env['FULL_SYSTEM']: + profile = Param.Latency('0ns', "trace the kernel stack") icache_port = Port("Instruction Port") dcache_port = Port("Data Port") width = Param.Unsigned("Width") frontEndWidth = Param.Unsigned("Front end width") + frontEndLatency = Param.Unsigned("Front end latency") backEndWidth = Param.Unsigned("Back end width") backEndSquashLatency = Param.Unsigned("Back end squash latency") backEndLatency = Param.Unsigned("Back end latency") @@ -76,6 +79,7 @@ class DerivOzoneCPU(BaseCPU): LQEntries = Param.Unsigned("Number of load queue entries") SQEntries = Param.Unsigned("Number of store queue entries") + lsqLimits = Param.Bool(True, "LSQ size limits dispatch") LFSTSize = Param.Unsigned("Last fetched store table size") SSITSize = Param.Unsigned("Store set ID table size") diff --git a/src/python/m5/objects/Root.py b/src/python/m5/objects/Root.py index f01fc06c4..8e8d87f6d 100644 --- a/src/python/m5/objects/Root.py +++ b/src/python/m5/objects/Root.py @@ -1,6 +1,7 @@ from m5.SimObject import SimObject from m5.params import * from Serialize import Serialize +from Serialize import Statreset from Statistics import Statistics from Trace import Trace from ExeTrace import ExecutionTrace diff --git a/src/python/m5/objects/System.py b/src/python/m5/objects/System.py index bc2a002cb..e7dd1bc60 100644 --- a/src/python/m5/objects/System.py +++ b/src/python/m5/objects/System.py @@ -16,6 +16,7 @@ class System(SimObject): boot_osflags = Param.String("a", "boot flags to pass to the kernel") kernel = Param.String("file that contains the kernel code") readfile = Param.String("", "file to read startup script from") + symbolfile = Param.String("", "file to get the symbols from") class AlphaSystem(System): type = 'AlphaSystem' diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh index 430473df3..537bfb918 100644 --- a/src/sim/eventq.hh +++ b/src/sim/eventq.hh @@ -46,6 +46,7 @@ #include "sim/host.hh" // for Tick #include "base/fast_alloc.hh" +#include "base/misc.hh" #include "base/trace.hh" #include "sim/serialize.hh" @@ -135,7 +136,7 @@ class Event : public Serializable, public FastAlloc /// same cycle (after unscheduling the old CPU's tick event). /// The switch needs to come before any tick events to make /// sure we don't tick both CPUs in the same cycle. - CPU_Switch_Pri = 31, + CPU_Switch_Pri = -31, /// Serailization needs to occur before tick events also, so /// that a serialize/unserialize is identical to an on-line @@ -351,7 +352,8 @@ inline void Event::schedule(Tick t) { assert(!scheduled()); - assert(t >= curTick); +// if (t < curTick) +// warn("t is less than curTick, ensure you don't want cycles"); setFlags(Scheduled); #if TRACING_ON diff --git a/src/sim/main.cc b/src/sim/main.cc index 5725897f8..874d0ac85 100644 --- a/src/sim/main.cc +++ b/src/sim/main.cc @@ -317,8 +317,8 @@ simulate(Tick num_cycles = -1) else num_cycles = curTick + num_cycles; - Event *limit_event = new SimLoopExitEvent(num_cycles, - "simulate() limit reached"); + Event *limit_event = schedExitSimLoop("simulate() limit reached", + num_cycles); while (1) { // there should always be at least one event (the SimLoopExitEvent @@ -414,7 +414,12 @@ unserializeAll(const std::string &cpt_dir) /** * Queue of C++ callbacks to invoke on simulator exit. */ -CallbackQueue exitCallbacks; +CallbackQueue& +exitCallbacks() +{ + static CallbackQueue theQueue; + return theQueue; +} /** * Register an exit callback. @@ -422,7 +427,7 @@ CallbackQueue exitCallbacks; void registerExitCallback(Callback *callback) { - exitCallbacks.add(callback); + exitCallbacks().add(callback); } BaseCPU * @@ -442,8 +447,8 @@ convertToBaseCPUPtr(SimObject *obj) void doExitCleanup() { - exitCallbacks.process(); - exitCallbacks.clear(); + exitCallbacks().process(); + exitCallbacks().clear(); cout.flush(); diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc index bd26e9dc5..addf897c6 100644 --- a/src/sim/pseudo_inst.cc +++ b/src/sim/pseudo_inst.cc @@ -138,14 +138,62 @@ namespace AlphaPseudo void m5exit_old(ThreadContext *tc) { - exitSimLoop(curTick, "m5_exit_old instruction encountered"); + exitSimLoop("m5_exit_old instruction encountered"); } void m5exit(ThreadContext *tc, Tick delay) { Tick when = curTick + delay * Clock::Int::ns; - exitSimLoop(when, "m5_exit instruction encountered"); + schedExitSimLoop("m5_exit instruction encountered", when); + } + + void + loadsymbol(ThreadContext *tc) + { + const string &filename = tc->getCpuPtr()->system->params()->symbolfile; + if (filename.empty()) { + return; + } + + std::string buffer; + ifstream file(filename.c_str()); + + if (!file) + fatal("file error: Can't open symbol table file %s\n", filename); + + while (!file.eof()) { + getline(file, buffer); + + if (buffer.empty()) + continue; + + int idx = buffer.find(' '); + if (idx == string::npos) + continue; + + string address = "0x" + buffer.substr(0, idx); + eat_white(address); + if (address.empty()) + continue; + + // Skip over letter and space + string symbol = buffer.substr(idx + 3); + eat_white(symbol); + if (symbol.empty()) + continue; + + Addr addr; + if (!to_number(address, addr)) + continue; + + if (!tc->getSystemPtr()->kernelSymtab->insert(addr, symbol)) + continue; + + + DPRINTF(Loader, "Loaded symbol: %s @ %#llx\n", symbol, addr); + } + file.close(); } void @@ -222,7 +270,11 @@ namespace AlphaPseudo { if (!doCheckpointInsts) return; - exitSimLoop("checkpoint"); + + Tick when = curTick + delay * Clock::Int::ns; + Tick repeat = period * Clock::Int::ns; + + schedExitSimLoop("checkpoint", when, repeat); } uint64_t diff --git a/src/sim/pseudo_inst.hh b/src/sim/pseudo_inst.hh index da2fb4ee3..d211de44e 100644 --- a/src/sim/pseudo_inst.hh +++ b/src/sim/pseudo_inst.hh @@ -51,6 +51,7 @@ namespace AlphaPseudo void ivle(ThreadContext *tc); void m5exit(ThreadContext *tc, Tick delay); void m5exit_old(ThreadContext *tc); + void loadsymbol(ThreadContext *xc); void resetstats(ThreadContext *tc, Tick delay, Tick period); void dumpstats(ThreadContext *tc, Tick delay, Tick period); void dumpresetstats(ThreadContext *tc, Tick delay, Tick period); diff --git a/src/sim/root.cc b/src/sim/root.cc index ec5e2f7e2..565b57269 100644 --- a/src/sim/root.cc +++ b/src/sim/root.cc @@ -100,7 +100,7 @@ void Root::startup() { if (max_tick != 0) - exitSimLoop(curTick + max_tick, "reached maximum cycle count"); + schedExitSimLoop("reached maximum cycle count", curTick + max_tick); if (progress_interval != 0) new ProgressEvent(&mainEventQueue, progress_interval); diff --git a/src/sim/serialize.cc b/src/sim/serialize.cc index 6a1d084b7..941f0b1c6 100644 --- a/src/sim/serialize.cc +++ b/src/sim/serialize.cc @@ -52,6 +52,9 @@ #include "sim/sim_exit.hh" #include "sim/sim_object.hh" +// For stat reset hack +#include "sim/stat_control.hh" + using namespace std; int Serializable::ckptMaxCount = 0; @@ -404,3 +407,36 @@ Checkpoint::sectionExists(const std::string §ion) { return db->sectionExists(section); } + +/** Hacked stat reset event */ + +class StatresetParamContext : public ParamContext +{ + public: + StatresetParamContext(const string §ion); + ~StatresetParamContext(); + void startup(); +}; + +StatresetParamContext statParams("statsreset"); + +Param<Tick> reset_cycle(&statParams, "reset_cycle", + "Cycle to reset stats on", 0); + +StatresetParamContext::StatresetParamContext(const string §ion) + : ParamContext(section) +{ } + +StatresetParamContext::~StatresetParamContext() +{ +} + +void +StatresetParamContext::startup() +{ + if (reset_cycle > 0) { + Stats::SetupEvent(Stats::Reset, curTick + reset_cycle, 0); + cprintf("Stats reset event scheduled for %lli\n", + curTick + reset_cycle); + } +} diff --git a/src/sim/sim_events.cc b/src/sim/sim_events.cc index d9e8bdeaa..2ccc9dad2 100644 --- a/src/sim/sim_events.cc +++ b/src/sim/sim_events.cc @@ -57,6 +57,11 @@ SimLoopExitEvent::process() // otherwise do nothing... the IsExitEvent flag takes care of // exiting the simulation loop and returning this object to Python + + // but if you are doing this on intervals, don't forget to make another + if (repeat) { + schedule(curTick + repeat); + } } @@ -66,16 +71,20 @@ SimLoopExitEvent::description() return "simulation loop exit"; } -void -exitSimLoop(Tick when, const std::string &message, int exit_code) +SimLoopExitEvent * +schedExitSimLoop(const std::string &message, Tick when, Tick repeat, + EventQueue *q, int exit_code) { - new SimLoopExitEvent(when, message, exit_code); + if (q == NULL) + q = &mainEventQueue; + + return new SimLoopExitEvent(q, when, repeat, message, exit_code); } void exitSimLoop(const std::string &message, int exit_code) { - exitSimLoop(curTick, message, exit_code); + schedExitSimLoop(message, curTick, 0, NULL, exit_code); } void diff --git a/src/sim/sim_events.hh b/src/sim/sim_events.hh index 3c4a9dd05..e1576b38c 100644 --- a/src/sim/sim_events.hh +++ b/src/sim/sim_events.hh @@ -42,6 +42,7 @@ class SimLoopExitEvent : public Event // string explaining why we're terminating std::string cause; int code; + Tick repeat; public: // Default constructor. Only really used for derived classes. @@ -49,16 +50,19 @@ class SimLoopExitEvent : public Event : Event(&mainEventQueue, Sim_Exit_Pri) { } - SimLoopExitEvent(Tick _when, const std::string &_cause, int c = 0) - : Event(&mainEventQueue, Sim_Exit_Pri), cause(_cause), - code(c) - { setFlags(IsExitEvent); schedule(_when); } - SimLoopExitEvent(EventQueue *q, - Tick _when, const std::string &_cause, int c = 0) - : Event(q, Sim_Exit_Pri), cause(_cause), code(c) + Tick _when, Tick _repeat, const std::string &_cause, + int c = 0) + : Event(q, Sim_Exit_Pri), cause(_cause), + code(c), repeat(_repeat) { setFlags(IsExitEvent); schedule(_when); } +// SimLoopExitEvent(EventQueue *q, +// Tick _when, const std::string &_cause, +// Tick _repeat = 0, int c = 0) +// : Event(q, Sim_Exit_Pri), cause(_cause), code(c), repeat(_repeat) +// { setFlags(IsExitEvent); schedule(_when); } + std::string getCause() { return cause; } int getCode() { return code; } diff --git a/src/sim/sim_exit.hh b/src/sim/sim_exit.hh index 545bf4ae0..d4b31d1ea 100644 --- a/src/sim/sim_exit.hh +++ b/src/sim/sim_exit.hh @@ -38,6 +38,8 @@ // forward declaration class Callback; +class EventQueue; +class SimLoopExitEvent; /// Register a callback to be called when Python exits. Defined in /// sim/main.cc. @@ -47,12 +49,14 @@ void registerExitCallback(Callback *); /// Python) at the indicated tick. The message and exit_code /// parameters are saved in the SimLoopExitEvent to indicate why the /// exit occurred. -void exitSimLoop(Tick when, const std::string &message, int exit_code = 0); +SimLoopExitEvent *schedExitSimLoop(const std::string &message, Tick when, + Tick repeat = 0, EventQueue *q = NULL, + int exit_code = 0); /// Schedule an event to exit the simulation loop (returning to /// Python) at the end of the current cycle (curTick). The message /// and exit_code parameters are saved in the SimLoopExitEvent to /// indicate why the exit occurred. -void exitSimLoop(const std::string &cause, int exit_code = 0); +void exitSimLoop(const std::string &message, int exit_code = 0); #endif // __SIM_EXIT_HH__ diff --git a/src/sim/stat_control.cc b/src/sim/stat_control.cc index 041830ab7..3fad8beb5 100644 --- a/src/sim/stat_control.cc +++ b/src/sim/stat_control.cc @@ -160,13 +160,13 @@ class StatEvent : public Event Tick repeat; public: - StatEvent(int _flags, Tick _when, Tick _repeat); + StatEvent(EventQueue *queue, int _flags, Tick _when, Tick _repeat); virtual void process(); virtual const char *description(); }; -StatEvent::StatEvent(int _flags, Tick _when, Tick _repeat) - : Event(&mainEventQueue, Stat_Event_Pri), +StatEvent::StatEvent(EventQueue *queue, int _flags, Tick _when, Tick _repeat) + : Event(queue, Stat_Event_Pri), flags(_flags), repeat(_repeat) { setFlags(AutoDelete); @@ -185,8 +185,10 @@ StatEvent::process() if (flags & Stats::Dump) DumpNow(); - if (flags & Stats::Reset) + if (flags & Stats::Reset) { + cprintf("Resetting stats at cycle %d!\n", curTick); reset(); + } if (repeat) schedule(curTick + repeat); @@ -214,9 +216,12 @@ DumpNow() } void -SetupEvent(int flags, Tick when, Tick repeat) +SetupEvent(int flags, Tick when, Tick repeat, EventQueue *queue) { - new StatEvent(flags, when, repeat); + if (queue == NULL) + queue = &mainEventQueue; + + new StatEvent(queue, flags, when, repeat); } /* namespace Stats */ } diff --git a/src/sim/stat_control.hh b/src/sim/stat_control.hh index fb369f640..67f7cc491 100644 --- a/src/sim/stat_control.hh +++ b/src/sim/stat_control.hh @@ -34,6 +34,8 @@ #include <fstream> #include <list> +class EventQueue; + namespace Stats { enum { @@ -45,7 +47,7 @@ class Output; extern std::list<Output *> OutputList; void DumpNow(); -void SetupEvent(int flags, Tick when, Tick repeat = 0); +void SetupEvent(int flags, Tick when, Tick repeat = 0, EventQueue *queue = NULL); void InitSimStats(); diff --git a/src/sim/system.hh b/src/sim/system.hh index 11f4f0c90..3ab1d81f2 100644 --- a/src/sim/system.hh +++ b/src/sim/system.hh @@ -182,6 +182,7 @@ class System : public SimObject std::string kernel_path; std::string readfile; + std::string symbolfile; #endif }; diff --git a/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/config.ini b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/config.ini new file mode 100644 index 000000000..bd25cdab9 --- /dev/null +++ b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/config.ini @@ -0,0 +1,315 @@ +[root] +type=Root +children=system +checkpoint= +clock=1000000000000 +max_tick=0 +output_file=cout +progress_interval=0 + +[debug] +break_cycles= + +[exetrace] +intel_format=false +pc_symbol=true +print_cpseq=false +print_cycle=true +print_data=true +print_effaddr=true +print_fetchseq=false +print_iregs=false +print_opclass=true +print_thread=true +speculative=true +trace_system=client + +[serialize] +count=10 +cycle=0 +dir=cpt.%012d +period=0 + +[stats] +descriptions=true +dump_cycle=0 +dump_period=0 +dump_reset=false +ignore_events= +mysql_db= +mysql_host= +mysql_password= +mysql_user= +project_name=test +simulation_name=test +simulation_sample=0 +text_compat=true +text_file=m5stats.txt + +[system] +type=System +children=cpu membus physmem +mem_mode=timing +physmem=system.physmem + +[system.cpu] +type=DerivO3CPU +children=fuPool workload0 workload1 +BTBEntries=4096 +BTBTagSize=16 +LFSTSize=1024 +LQEntries=32 +RASSize=16 +SQEntries=32 +SSITSize=1024 +activity=0 +backComSize=5 +choiceCtrBits=2 +choicePredictorSize=8192 +clock=1 +commitToDecodeDelay=1 +commitToFetchDelay=1 +commitToIEWDelay=1 +commitToRenameDelay=1 +commitWidth=8 +decodeToFetchDelay=1 +decodeToRenameDelay=1 +decodeWidth=8 +defer_registration=false +dispatchWidth=8 +fetchToDecodeDelay=1 +fetchTrapLatency=1 +fetchWidth=8 +forwardComSize=5 +fuPool=system.cpu.fuPool +function_trace=false +function_trace_start=0 +globalCtrBits=2 +globalHistoryBits=13 +globalPredictorSize=8192 +iewToCommitDelay=1 +iewToDecodeDelay=1 +iewToFetchDelay=1 +iewToRenameDelay=1 +instShiftAmt=2 +issueToExecuteDelay=1 +issueWidth=8 +localCtrBits=2 +localHistoryBits=11 +localHistoryTableSize=2048 +localPredictorSize=2048 +max_insts_all_threads=0 +max_insts_any_thread=0 +max_loads_all_threads=0 +max_loads_any_thread=0 +mem=system.physmem +numIQEntries=64 +numPhysFloatRegs=256 +numPhysIntRegs=256 +numROBEntries=192 +numRobs=1 +numThreads=1 +predType=tournament +progress_interval=0 +renameToDecodeDelay=1 +renameToFetchDelay=1 +renameToIEWDelay=2 +renameToROBDelay=1 +renameWidth=8 +squashWidth=8 +system=system +trapLatency=13 +wbDepth=1 +wbWidth=8 +workload=system.cpu.workload0 system.cpu.workload1 +dcache_port=system.membus.port[2] +icache_port=system.membus.port[1] + +[system.cpu.fuPool] +type=FUPool +children=FUList0 FUList1 FUList2 FUList3 FUList4 FUList5 FUList6 FUList7 +FUList=system.cpu.fuPool.FUList0 system.cpu.fuPool.FUList1 system.cpu.fuPool.FUList2 system.cpu.fuPool.FUList3 system.cpu.fuPool.FUList4 system.cpu.fuPool.FUList5 system.cpu.fuPool.FUList6 system.cpu.fuPool.FUList7 + +[system.cpu.fuPool.FUList0] +type=FUDesc +children=opList0 +count=6 +opList=system.cpu.fuPool.FUList0.opList0 + +[system.cpu.fuPool.FUList0.opList0] +type=OpDesc +issueLat=1 +opClass=IntAlu +opLat=1 + +[system.cpu.fuPool.FUList1] +type=FUDesc +children=opList0 opList1 +count=2 +opList=system.cpu.fuPool.FUList1.opList0 system.cpu.fuPool.FUList1.opList1 + +[system.cpu.fuPool.FUList1.opList0] +type=OpDesc +issueLat=1 +opClass=IntMult +opLat=3 + +[system.cpu.fuPool.FUList1.opList1] +type=OpDesc +issueLat=19 +opClass=IntDiv +opLat=20 + +[system.cpu.fuPool.FUList2] +type=FUDesc +children=opList0 opList1 opList2 +count=4 +opList=system.cpu.fuPool.FUList2.opList0 system.cpu.fuPool.FUList2.opList1 system.cpu.fuPool.FUList2.opList2 + +[system.cpu.fuPool.FUList2.opList0] +type=OpDesc +issueLat=1 +opClass=FloatAdd +opLat=2 + +[system.cpu.fuPool.FUList2.opList1] +type=OpDesc +issueLat=1 +opClass=FloatCmp +opLat=2 + +[system.cpu.fuPool.FUList2.opList2] +type=OpDesc +issueLat=1 +opClass=FloatCvt +opLat=2 + +[system.cpu.fuPool.FUList3] +type=FUDesc +children=opList0 opList1 opList2 +count=2 +opList=system.cpu.fuPool.FUList3.opList0 system.cpu.fuPool.FUList3.opList1 system.cpu.fuPool.FUList3.opList2 + +[system.cpu.fuPool.FUList3.opList0] +type=OpDesc +issueLat=1 +opClass=FloatMult +opLat=4 + +[system.cpu.fuPool.FUList3.opList1] +type=OpDesc +issueLat=12 +opClass=FloatDiv +opLat=12 + +[system.cpu.fuPool.FUList3.opList2] +type=OpDesc +issueLat=24 +opClass=FloatSqrt +opLat=24 + +[system.cpu.fuPool.FUList4] +type=FUDesc +children=opList0 +count=0 +opList=system.cpu.fuPool.FUList4.opList0 + +[system.cpu.fuPool.FUList4.opList0] +type=OpDesc +issueLat=1 +opClass=MemRead +opLat=1 + +[system.cpu.fuPool.FUList5] +type=FUDesc +children=opList0 +count=0 +opList=system.cpu.fuPool.FUList5.opList0 + +[system.cpu.fuPool.FUList5.opList0] +type=OpDesc +issueLat=1 +opClass=MemWrite +opLat=1 + +[system.cpu.fuPool.FUList6] +type=FUDesc +children=opList0 opList1 +count=4 +opList=system.cpu.fuPool.FUList6.opList0 system.cpu.fuPool.FUList6.opList1 + +[system.cpu.fuPool.FUList6.opList0] +type=OpDesc +issueLat=1 +opClass=MemRead +opLat=1 + +[system.cpu.fuPool.FUList6.opList1] +type=OpDesc +issueLat=1 +opClass=MemWrite +opLat=1 + +[system.cpu.fuPool.FUList7] +type=FUDesc +children=opList0 +count=1 +opList=system.cpu.fuPool.FUList7.opList0 + +[system.cpu.fuPool.FUList7.opList0] +type=OpDesc +issueLat=3 +opClass=IprAccess +opLat=3 + +[system.cpu.workload0] +type=LiveProcess +cmd=tests/test-progs/hello/bin/alpha/linux/hello +egid=100 +env= +euid=100 +executable=tests/test-progs/hello/bin/alpha/linux/hello +gid=100 +input=cin +output=cout +pid=100 +ppid=99 +system=system +uid=100 + +[system.cpu.workload1] +type=LiveProcess +cmd=tests/test-progs/hello/bin/alpha/linux/hello +egid=100 +env= +euid=100 +executable=tests/test-progs/hello/bin/alpha/linux/hello +gid=100 +input=cin +output=cout +pid=100 +ppid=99 +system=system +uid=100 + +[system.membus] +type=Bus +bus_id=0 +port=system.physmem.port system.cpu.icache_port system.cpu.dcache_port + +[system.physmem] +type=PhysicalMemory +file= +latency=1 +range=0:134217727 +port=system.membus.port[0] + +[trace] +bufsize=0 +cycle=0 +dump_on_exit=false +file=cout +flags= +ignore= +start=0 + diff --git a/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/config.out b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/config.out new file mode 100644 index 000000000..6d68de2a1 --- /dev/null +++ b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/config.out @@ -0,0 +1,308 @@ +[root] +type=Root +clock=1000000000000 +max_tick=0 +progress_interval=0 +output_file=cout + +[system.physmem] +type=PhysicalMemory +file= +range=[0,134217727] +latency=1 + +[system] +type=System +physmem=system.physmem +mem_mode=timing + +[system.membus] +type=Bus +bus_id=0 + +[system.cpu.workload0] +type=LiveProcess +cmd=tests/test-progs/hello/bin/alpha/linux/hello +executable=tests/test-progs/hello/bin/alpha/linux/hello +input=cin +output=cout +env= +system=system +uid=100 +euid=100 +gid=100 +egid=100 +pid=100 +ppid=99 + +[system.cpu.workload1] +type=LiveProcess +cmd=tests/test-progs/hello/bin/alpha/linux/hello +executable=tests/test-progs/hello/bin/alpha/linux/hello +input=cin +output=cout +env= +system=system +uid=100 +euid=100 +gid=100 +egid=100 +pid=100 +ppid=99 + +[system.cpu.fuPool.FUList0.opList0] +type=OpDesc +opClass=IntAlu +opLat=1 +issueLat=1 + +[system.cpu.fuPool.FUList0] +type=FUDesc +opList=system.cpu.fuPool.FUList0.opList0 +count=6 + +[system.cpu.fuPool.FUList1.opList0] +type=OpDesc +opClass=IntMult +opLat=3 +issueLat=1 + +[system.cpu.fuPool.FUList1.opList1] +type=OpDesc +opClass=IntDiv +opLat=20 +issueLat=19 + +[system.cpu.fuPool.FUList1] +type=FUDesc +opList=system.cpu.fuPool.FUList1.opList0 system.cpu.fuPool.FUList1.opList1 +count=2 + +[system.cpu.fuPool.FUList2.opList0] +type=OpDesc +opClass=FloatAdd +opLat=2 +issueLat=1 + +[system.cpu.fuPool.FUList2.opList1] +type=OpDesc +opClass=FloatCmp +opLat=2 +issueLat=1 + +[system.cpu.fuPool.FUList2.opList2] +type=OpDesc +opClass=FloatCvt +opLat=2 +issueLat=1 + +[system.cpu.fuPool.FUList2] +type=FUDesc +opList=system.cpu.fuPool.FUList2.opList0 system.cpu.fuPool.FUList2.opList1 system.cpu.fuPool.FUList2.opList2 +count=4 + +[system.cpu.fuPool.FUList3.opList0] +type=OpDesc +opClass=FloatMult +opLat=4 +issueLat=1 + +[system.cpu.fuPool.FUList3.opList1] +type=OpDesc +opClass=FloatDiv +opLat=12 +issueLat=12 + +[system.cpu.fuPool.FUList3.opList2] +type=OpDesc +opClass=FloatSqrt +opLat=24 +issueLat=24 + +[system.cpu.fuPool.FUList3] +type=FUDesc +opList=system.cpu.fuPool.FUList3.opList0 system.cpu.fuPool.FUList3.opList1 system.cpu.fuPool.FUList3.opList2 +count=2 + +[system.cpu.fuPool.FUList4.opList0] +type=OpDesc +opClass=MemRead +opLat=1 +issueLat=1 + +[system.cpu.fuPool.FUList4] +type=FUDesc +opList=system.cpu.fuPool.FUList4.opList0 +count=0 + +[system.cpu.fuPool.FUList5.opList0] +type=OpDesc +opClass=MemWrite +opLat=1 +issueLat=1 + +[system.cpu.fuPool.FUList5] +type=FUDesc +opList=system.cpu.fuPool.FUList5.opList0 +count=0 + +[system.cpu.fuPool.FUList6.opList0] +type=OpDesc +opClass=MemRead +opLat=1 +issueLat=1 + +[system.cpu.fuPool.FUList6.opList1] +type=OpDesc +opClass=MemWrite +opLat=1 +issueLat=1 + +[system.cpu.fuPool.FUList6] +type=FUDesc +opList=system.cpu.fuPool.FUList6.opList0 system.cpu.fuPool.FUList6.opList1 +count=4 + +[system.cpu.fuPool.FUList7.opList0] +type=OpDesc +opClass=IprAccess +opLat=3 +issueLat=3 + +[system.cpu.fuPool.FUList7] +type=FUDesc +opList=system.cpu.fuPool.FUList7.opList0 +count=1 + +[system.cpu.fuPool] +type=FUPool +FUList=system.cpu.fuPool.FUList0 system.cpu.fuPool.FUList1 system.cpu.fuPool.FUList2 system.cpu.fuPool.FUList3 system.cpu.fuPool.FUList4 system.cpu.fuPool.FUList5 system.cpu.fuPool.FUList6 system.cpu.fuPool.FUList7 + +[system.cpu] +type=DerivO3CPU +clock=1 +numThreads=1 +activity=0 +workload=system.cpu.workload0 system.cpu.workload1 +mem=system.physmem +checker=null +max_insts_any_thread=0 +max_insts_all_threads=0 +max_loads_any_thread=0 +max_loads_all_threads=0 +progress_interval=0 +cachePorts=200 +decodeToFetchDelay=1 +renameToFetchDelay=1 +iewToFetchDelay=1 +commitToFetchDelay=1 +fetchWidth=8 +renameToDecodeDelay=1 +iewToDecodeDelay=1 +commitToDecodeDelay=1 +fetchToDecodeDelay=1 +decodeWidth=8 +iewToRenameDelay=1 +commitToRenameDelay=1 +decodeToRenameDelay=1 +renameWidth=8 +commitToIEWDelay=1 +renameToIEWDelay=2 +issueToExecuteDelay=1 +dispatchWidth=8 +issueWidth=8 +wbWidth=8 +wbDepth=1 +fuPool=system.cpu.fuPool +iewToCommitDelay=1 +renameToROBDelay=1 +commitWidth=8 +squashWidth=8 +trapLatency=13 +backComSize=5 +forwardComSize=5 +predType=tournament +localPredictorSize=2048 +localCtrBits=2 +localHistoryTableSize=2048 +localHistoryBits=11 +globalPredictorSize=8192 +globalCtrBits=2 +globalHistoryBits=13 +choicePredictorSize=8192 +choiceCtrBits=2 +BTBEntries=4096 +BTBTagSize=16 +RASSize=16 +LQEntries=32 +SQEntries=32 +LFSTSize=1024 +SSITSize=1024 +numPhysIntRegs=256 +numPhysFloatRegs=256 +numIQEntries=64 +numROBEntries=192 +smtNumFetchingThreads=1 +smtFetchPolicy=SingleThread +smtLSQPolicy=Partitioned +smtLSQThreshold=100 +smtIQPolicy=Partitioned +smtIQThreshold=100 +smtROBPolicy=Partitioned +smtROBThreshold=100 +smtCommitPolicy=RoundRobin +instShiftAmt=2 +defer_registration=false +function_trace=false +function_trace_start=0 + +[trace] +flags= +start=0 +cycle=0 +bufsize=0 +file=cout +dump_on_exit=false +ignore= + +[stats] +descriptions=true +project_name=test +simulation_name=test +simulation_sample=0 +text_file=m5stats.txt +text_compat=true +mysql_db= +mysql_user= +mysql_password= +mysql_host= +events_start=-1 +dump_reset=false +dump_cycle=0 +dump_period=0 +ignore_events= + +[random] +seed=1 + +[exetrace] +speculative=true +print_cycle=true +print_opclass=true +print_thread=true +print_effaddr=true +print_data=true +print_iregs=false +print_fetchseq=false +print_cpseq=false +print_reg_delta=false +pc_symbol=true +intel_format=false +trace_system=client + +[debug] +break_cycles= + +[statsreset] +reset_cycle=0 + diff --git a/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/m5stats.txt b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/m5stats.txt new file mode 100644 index 000000000..4473a39f8 --- /dev/null +++ b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/m5stats.txt @@ -0,0 +1,305 @@ + +---------- Begin Simulation Statistics ---------- +global.BPredUnit.BTBCorrect 0 # Number of correct BTB predictions (this stat may not work properly. +global.BPredUnit.BTBHits 669 # Number of BTB hits +global.BPredUnit.BTBLookups 3666 # Number of BTB lookups +global.BPredUnit.RASInCorrect 78 # Number of incorrect RAS predictions. +global.BPredUnit.condIncorrect 1050 # Number of conditional branches incorrect +global.BPredUnit.condPredicted 2479 # Number of conditional branches predicted +global.BPredUnit.lookups 4216 # Number of BP lookups +global.BPredUnit.usedRAS 545 # Number of times the RAS was used to get a target. +host_inst_rate 13879 # Simulator instruction rate (inst/s) +host_mem_usage 150244 # Number of bytes of host memory used +host_seconds 0.82 # Real time elapsed on the host +host_tick_rate 9101 # Simulator tick rate (ticks/s) +memdepunit.memDep.conflictingLoads 21 # Number of conflicting loads. +memdepunit.memDep.conflictingLoads 25 # Number of conflicting loads. +memdepunit.memDep.conflictingStores 0 # Number of conflicting stores. +memdepunit.memDep.conflictingStores 214 # Number of conflicting stores. +memdepunit.memDep.insertedLoads 1795 # Number of loads inserted to the mem dependence unit. +memdepunit.memDep.insertedLoads 1734 # Number of loads inserted to the mem dependence unit. +memdepunit.memDep.insertedStores 1066 # Number of stores inserted to the mem dependence unit. +memdepunit.memDep.insertedStores 1051 # Number of stores inserted to the mem dependence unit. +sim_freq 1000000000000 # Frequency of simulated ticks +sim_insts 11399 # Number of instructions simulated +sim_seconds 0.000000 # Number of seconds simulated +sim_ticks 7478 # Number of ticks simulated +system.cpu.commit.COM:branches 1756 # Number of branches committed +system.cpu.commit.COM:branches_0 878 # Number of branches committed +system.cpu.commit.COM:branches_1 878 # Number of branches committed +system.cpu.commit.COM:bw_lim_events 177 # number cycles where commit BW limit reached +system.cpu.commit.COM:bw_limited 0 # number of insts not committed due to BW limits +system.cpu.commit.COM:bw_limited_0 0 # number of insts not committed due to BW limits +system.cpu.commit.COM:bw_limited_1 0 # number of insts not committed due to BW limits +system.cpu.commit.COM:committed_per_cycle.start_dist # Number of insts commited each cycle +system.cpu.commit.COM:committed_per_cycle.samples 7424 +system.cpu.commit.COM:committed_per_cycle.min_value 0 + 0 3237 4360.18% + 1 1635 2202.32% + 2 920 1239.22% + 3 476 641.16% + 4 347 467.40% + 5 246 331.36% + 6 206 277.48% + 7 180 242.46% + 8 177 238.42% +system.cpu.commit.COM:committed_per_cycle.max_value 8 +system.cpu.commit.COM:committed_per_cycle.end_dist + +system.cpu.commit.COM:count 11433 # Number of instructions committed +system.cpu.commit.COM:count_0 5716 # Number of instructions committed +system.cpu.commit.COM:count_1 5717 # Number of instructions committed +system.cpu.commit.COM:loads 1976 # Number of loads committed +system.cpu.commit.COM:loads_0 988 # Number of loads committed +system.cpu.commit.COM:loads_1 988 # Number of loads committed +system.cpu.commit.COM:membars 0 # Number of memory barriers committed +system.cpu.commit.COM:membars_0 0 # Number of memory barriers committed +system.cpu.commit.COM:membars_1 0 # Number of memory barriers committed +system.cpu.commit.COM:refs 3600 # Number of memory references committed +system.cpu.commit.COM:refs_0 1800 # Number of memory references committed +system.cpu.commit.COM:refs_1 1800 # Number of memory references committed +system.cpu.commit.COM:swp_count 0 # Number of s/w prefetches committed +system.cpu.commit.COM:swp_count_0 0 # Number of s/w prefetches committed +system.cpu.commit.COM:swp_count_1 0 # Number of s/w prefetches committed +system.cpu.commit.branchMispredicts 789 # The number of times a branch was mispredicted +system.cpu.commit.commitCommittedInsts 11433 # The number of committed instructions +system.cpu.commit.commitNonSpecStalls 34 # The number of times commit has been forced to stall to communicate backwards +system.cpu.commit.commitSquashedInsts 6802 # The number of squashed insts skipped by commit +system.cpu.committedInsts_0 5699 # Number of Instructions Simulated +system.cpu.committedInsts_1 5700 # Number of Instructions Simulated +system.cpu.committedInsts_total 11399 # Number of Instructions Simulated +system.cpu.cpi_0 1.312160 # CPI: Cycles Per Instruction +system.cpu.cpi_1 1.311930 # CPI: Cycles Per Instruction +system.cpu.cpi_total 0.656022 # CPI: Total CPI of All Threads +system.cpu.decode.DECODE:BlockedCycles 1617 # Number of cycles decode is blocked +system.cpu.decode.DECODE:BranchMispred 282 # Number of times decode detected a branch misprediction +system.cpu.decode.DECODE:BranchResolved 364 # Number of times decode resolved a branch +system.cpu.decode.DECODE:DecodedInsts 22220 # Number of instructions handled by decode +system.cpu.decode.DECODE:IdleCycles 8058 # Number of cycles decode is idle +system.cpu.decode.DECODE:RunCycles 3571 # Number of cycles decode is running +system.cpu.decode.DECODE:SquashCycles 1260 # Number of cycles decode is squashing +system.cpu.decode.DECODE:SquashedInsts 200 # Number of squashed instructions handled by decode +system.cpu.decode.DECODE:UnblockCycles 277 # Number of cycles decode is unblocking +system.cpu.fetch.Branches 4216 # Number of branches that fetch encountered +system.cpu.fetch.CacheLines 2762 # Number of cache lines fetched +system.cpu.fetch.Cycles 6837 # Number of cycles fetch has run and was not squashing or blocked +system.cpu.fetch.Insts 25142 # Number of instructions fetch has processed +system.cpu.fetch.SquashCycles 1098 # Number of cycles fetch has spent squashing +system.cpu.fetch.branchRate 0.563712 # Number of branch fetches per cycle +system.cpu.fetch.icacheStallCycles 2762 # Number of cycles fetch is stalled on an Icache miss +system.cpu.fetch.predictedBranches 1214 # Number of branches that fetch has predicted taken +system.cpu.fetch.rate 3.361679 # Number of inst fetches per cycle +system.cpu.fetch.rateDist.start_dist # Number of instructions fetched each cycle (Total) +system.cpu.fetch.rateDist.samples 7479 +system.cpu.fetch.rateDist.min_value 0 + 0 3407 4555.42% + 1 266 355.66% + 2 222 296.83% + 3 265 354.33% + 4 317 423.85% + 5 275 367.70% + 6 279 373.04% + 7 264 352.99% + 8 2184 2920.18% +system.cpu.fetch.rateDist.max_value 8 +system.cpu.fetch.rateDist.end_dist + +system.cpu.iew.EXEC:branches 2294 # Number of branches executed +system.cpu.iew.EXEC:branches_0 1156 # Number of branches executed +system.cpu.iew.EXEC:branches_1 1138 # Number of branches executed +system.cpu.iew.EXEC:nop 59 # number of nop insts executed +system.cpu.iew.EXEC:nop_0 31 # number of nop insts executed +system.cpu.iew.EXEC:nop_1 28 # number of nop insts executed +system.cpu.iew.EXEC:rate 1.993582 # Inst execution rate +system.cpu.iew.EXEC:refs 4718 # number of memory reference insts executed +system.cpu.iew.EXEC:refs_0 2364 # number of memory reference insts executed +system.cpu.iew.EXEC:refs_1 2354 # number of memory reference insts executed +system.cpu.iew.EXEC:stores 1857 # Number of stores executed +system.cpu.iew.EXEC:stores_0 924 # Number of stores executed +system.cpu.iew.EXEC:stores_1 933 # Number of stores executed +system.cpu.iew.EXEC:swp 0 # number of swp insts executed +system.cpu.iew.EXEC:swp_0 0 # number of swp insts executed +system.cpu.iew.EXEC:swp_1 0 # number of swp insts executed +system.cpu.iew.WB:consumers 9920 # num instructions consuming a value +system.cpu.iew.WB:consumers_0 4998 # num instructions consuming a value +system.cpu.iew.WB:consumers_1 4922 # num instructions consuming a value +system.cpu.iew.WB:count 14666 # cumulative count of insts written-back +system.cpu.iew.WB:count_0 7373 # cumulative count of insts written-back +system.cpu.iew.WB:count_1 7293 # cumulative count of insts written-back +system.cpu.iew.WB:fanout 0.776915 # average fanout of values written-back +system.cpu.iew.WB:fanout_0 0.775710 # average fanout of values written-back +system.cpu.iew.WB:fanout_1 0.778139 # average fanout of values written-back +system.cpu.iew.WB:penalized 0 # number of instrctions required to write to 'other' IQ +system.cpu.iew.WB:penalized_0 0 # number of instrctions required to write to 'other' IQ +system.cpu.iew.WB:penalized_1 0 # number of instrctions required to write to 'other' IQ +system.cpu.iew.WB:penalized_rate 0 # fraction of instructions written-back that wrote to 'other' IQ +system.cpu.iew.WB:penalized_rate_0 0 # fraction of instructions written-back that wrote to 'other' IQ +system.cpu.iew.WB:penalized_rate_1 0 # fraction of instructions written-back that wrote to 'other' IQ +system.cpu.iew.WB:producers 7707 # num instructions producing a value +system.cpu.iew.WB:producers_0 3877 # num instructions producing a value +system.cpu.iew.WB:producers_1 3830 # num instructions producing a value +system.cpu.iew.WB:rate 1.960957 # insts written-back per cycle +system.cpu.iew.WB:rate_0 0.985827 # insts written-back per cycle +system.cpu.iew.WB:rate_1 0.975130 # insts written-back per cycle +system.cpu.iew.WB:sent 14753 # cumulative count of insts sent to commit +system.cpu.iew.WB:sent_0 7419 # cumulative count of insts sent to commit +system.cpu.iew.WB:sent_1 7334 # cumulative count of insts sent to commit +system.cpu.iew.branchMispredicts 869 # Number of branch mispredicts detected at execute +system.cpu.iew.iewBlockCycles 3 # Number of cycles IEW is blocking +system.cpu.iew.iewDispLoadInsts 3529 # Number of dispatched load instructions +system.cpu.iew.iewDispNonSpecInsts 39 # Number of dispatched non-speculative instructions +system.cpu.iew.iewDispSquashedInsts 789 # Number of squashed instructions skipped by dispatch +system.cpu.iew.iewDispStoreInsts 2117 # Number of dispatched store instructions +system.cpu.iew.iewDispatchedInsts 18235 # Number of instructions dispatched to IQ +system.cpu.iew.iewExecLoadInsts 2861 # Number of load instructions executed +system.cpu.iew.iewExecLoadInsts_0 1440 # Number of load instructions executed +system.cpu.iew.iewExecLoadInsts_1 1421 # Number of load instructions executed +system.cpu.iew.iewExecSquashedInsts 1188 # Number of squashed instructions skipped in execute +system.cpu.iew.iewExecutedInsts 14910 # Number of executed instructions +system.cpu.iew.iewIQFullEvents 0 # Number of times the IQ has become full, causing a stall +system.cpu.iew.iewIdleCycles 0 # Number of cycles IEW is idle +system.cpu.iew.iewLSQFullEvents 0 # Number of times the LSQ has become full, causing a stall +system.cpu.iew.iewSquashCycles 1260 # Number of cycles IEW is squashing +system.cpu.iew.iewUnblockCycles 0 # Number of cycles IEW is unblocking +system.cpu.iew.lsq.thread.0.blockedLoads 0 # Number of blocked loads due to partial load-store forwarding +system.cpu.iew.lsq.thread.0.cacheBlocked 0 # Number of times an access to memory failed due to the cache being blocked +system.cpu.iew.lsq.thread.0.forwLoads 45 # Number of loads that had data forwarded from stores +system.cpu.iew.lsq.thread.0.ignoredResponses 4 # Number of memory responses ignored because the instruction is squashed +system.cpu.iew.lsq.thread.0.invAddrLoads 0 # Number of loads ignored due to an invalid address +system.cpu.iew.lsq.thread.0.invAddrSwpfs 0 # Number of software prefetches ignored due to an invalid address +system.cpu.iew.lsq.thread.0.memOrderViolation 27 # Number of memory ordering violations +system.cpu.iew.lsq.thread.0.rescheduledLoads 0 # Number of loads that were rescheduled +system.cpu.iew.lsq.thread.0.squashedLoads 807 # Number of loads squashed +system.cpu.iew.lsq.thread.0.squashedStores 254 # Number of stores squashed +system.cpu.iew.lsq.thread.1.blockedLoads 1 # Number of blocked loads due to partial load-store forwarding +system.cpu.iew.lsq.thread.1.cacheBlocked 0 # Number of times an access to memory failed due to the cache being blocked +system.cpu.iew.lsq.thread.1.forwLoads 43 # Number of loads that had data forwarded from stores +system.cpu.iew.lsq.thread.1.ignoredResponses 2 # Number of memory responses ignored because the instruction is squashed +system.cpu.iew.lsq.thread.1.invAddrLoads 0 # Number of loads ignored due to an invalid address +system.cpu.iew.lsq.thread.1.invAddrSwpfs 0 # Number of software prefetches ignored due to an invalid address +system.cpu.iew.lsq.thread.1.memOrderViolation 29 # Number of memory ordering violations +system.cpu.iew.lsq.thread.1.rescheduledLoads 1 # Number of loads that were rescheduled +system.cpu.iew.lsq.thread.1.squashedLoads 746 # Number of loads squashed +system.cpu.iew.lsq.thread.1.squashedStores 239 # Number of stores squashed +system.cpu.iew.memOrderViolationEvents 56 # Number of memory order violations +system.cpu.iew.predictedNotTakenIncorrect 733 # Number of branches that were predicted not taken incorrectly +system.cpu.iew.predictedTakenIncorrect 136 # Number of branches that were predicted taken incorrectly +system.cpu.ipc_0 0.762102 # IPC: Instructions Per Cycle +system.cpu.ipc_1 0.762236 # IPC: Instructions Per Cycle +system.cpu.ipc_total 1.524338 # IPC: Total IPC of All Threads +system.cpu.iq.ISSUE:FU_type_0 8140 # Type of FU issued +system.cpu.iq.ISSUE:FU_type_0.start_dist +(null) 2 0.02% # Type of FU issued +IntAlu 5556 68.26% # Type of FU issued +IntMult 1 0.01% # Type of FU issued +IntDiv 0 0.00% # Type of FU issued +FloatAdd 2 0.02% # Type of FU issued +FloatCmp 0 0.00% # Type of FU issued +FloatCvt 0 0.00% # Type of FU issued +FloatMult 0 0.00% # Type of FU issued +FloatDiv 0 0.00% # Type of FU issued +FloatSqrt 0 0.00% # Type of FU issued +MemRead 1619 19.89% # Type of FU issued +MemWrite 960 11.79% # Type of FU issued +IprAccess 0 0.00% # Type of FU issued +InstPrefetch 0 0.00% # Type of FU issued +system.cpu.iq.ISSUE:FU_type_0.end_dist +system.cpu.iq.ISSUE:FU_type_1 7958 # Type of FU issued +system.cpu.iq.ISSUE:FU_type_1.start_dist + (null) 2 0.03% # Type of FU issued + IntAlu 5440 68.36% # Type of FU issued + IntMult 1 0.01% # Type of FU issued + IntDiv 0 0.00% # Type of FU issued + FloatAdd 2 0.03% # Type of FU issued + FloatCmp 0 0.00% # Type of FU issued + FloatCvt 0 0.00% # Type of FU issued + FloatMult 0 0.00% # Type of FU issued + FloatDiv 0 0.00% # Type of FU issued + FloatSqrt 0 0.00% # Type of FU issued + MemRead 1553 19.51% # Type of FU issued + MemWrite 960 12.06% # Type of FU issued + IprAccess 0 0.00% # Type of FU issued + InstPrefetch 0 0.00% # Type of FU issued +system.cpu.iq.ISSUE:FU_type_1.end_dist +system.cpu.iq.ISSUE:FU_type 16098 # Type of FU issued +system.cpu.iq.ISSUE:FU_type.start_dist + (null) 4 0.02% # Type of FU issued + IntAlu 10996 68.31% # Type of FU issued + IntMult 2 0.01% # Type of FU issued + IntDiv 0 0.00% # Type of FU issued + FloatAdd 4 0.02% # Type of FU issued + FloatCmp 0 0.00% # Type of FU issued + FloatCvt 0 0.00% # Type of FU issued + FloatMult 0 0.00% # Type of FU issued + FloatDiv 0 0.00% # Type of FU issued + FloatSqrt 0 0.00% # Type of FU issued + MemRead 3172 19.70% # Type of FU issued + MemWrite 1920 11.93% # Type of FU issued + IprAccess 0 0.00% # Type of FU issued + InstPrefetch 0 0.00% # Type of FU issued +system.cpu.iq.ISSUE:FU_type.end_dist +system.cpu.iq.ISSUE:fu_busy_cnt 198 # FU busy when requested +system.cpu.iq.ISSUE:fu_busy_cnt_0 101 # FU busy when requested +system.cpu.iq.ISSUE:fu_busy_cnt_1 97 # FU busy when requested +system.cpu.iq.ISSUE:fu_busy_rate 0.012300 # FU busy rate (busy events/executed inst) +system.cpu.iq.ISSUE:fu_busy_rate_0 0.006274 # FU busy rate (busy events/executed inst) +system.cpu.iq.ISSUE:fu_busy_rate_1 0.006026 # FU busy rate (busy events/executed inst) +system.cpu.iq.ISSUE:fu_full.start_dist + (null) 0 0.00% # attempts to use FU when none available + IntAlu 9 4.55% # attempts to use FU when none available + IntMult 0 0.00% # attempts to use FU when none available + IntDiv 0 0.00% # attempts to use FU when none available + FloatAdd 0 0.00% # attempts to use FU when none available + FloatCmp 0 0.00% # attempts to use FU when none available + FloatCvt 0 0.00% # attempts to use FU when none available + FloatMult 0 0.00% # attempts to use FU when none available + FloatDiv 0 0.00% # attempts to use FU when none available + FloatSqrt 0 0.00% # attempts to use FU when none available + MemRead 114 57.58% # attempts to use FU when none available + MemWrite 75 37.88% # attempts to use FU when none available + IprAccess 0 0.00% # attempts to use FU when none available + InstPrefetch 0 0.00% # attempts to use FU when none available +system.cpu.iq.ISSUE:fu_full.end_dist +system.cpu.iq.ISSUE:issued_per_cycle.start_dist # Number of insts issued each cycle +system.cpu.iq.ISSUE:issued_per_cycle.samples 7479 +system.cpu.iq.ISSUE:issued_per_cycle.min_value 0 + 0 2160 2888.09% + 1 1088 1454.74% + 2 1332 1780.99% + 3 1011 1351.78% + 4 818 1093.73% + 5 568 759.46% + 6 358 478.67% + 7 99 132.37% + 8 45 60.17% +system.cpu.iq.ISSUE:issued_per_cycle.max_value 8 +system.cpu.iq.ISSUE:issued_per_cycle.end_dist + +system.cpu.iq.ISSUE:rate 2.152427 # Inst issue rate +system.cpu.iq.iqInstsAdded 18137 # Number of instructions added to the IQ (excludes non-spec) +system.cpu.iq.iqInstsIssued 16098 # Number of instructions issued +system.cpu.iq.iqNonSpecInstsAdded 39 # Number of non-speculative instructions added to the IQ +system.cpu.iq.iqSquashedInstsExamined 5869 # Number of squashed instructions iterated over during squash; mainly for profiling +system.cpu.iq.iqSquashedInstsIssued 22 # Number of squashed instructions issued +system.cpu.iq.iqSquashedNonSpecRemoved 5 # Number of squashed non-spec instructions that were removed +system.cpu.iq.iqSquashedOperandsExamined 3337 # Number of squashed operands that are examined and possibly removed from graph +system.cpu.numCycles 7479 # number of cpu cycles simulated +system.cpu.rename.RENAME:BlockCycles 350 # Number of cycles rename is blocking +system.cpu.rename.RENAME:CommittedMaps 8222 # Number of HB maps that are committed +system.cpu.rename.RENAME:IdleCycles 8416 # Number of cycles rename is idle +system.cpu.rename.RENAME:LSQFullEvents 695 # Number of times rename has blocked due to LSQ full +system.cpu.rename.RENAME:RenameLookups 26609 # Number of register rename lookups that rename has made +system.cpu.rename.RENAME:RenamedInsts 20867 # Number of instructions processed by rename +system.cpu.rename.RENAME:RenamedOperands 15602 # Number of destination operands rename has renamed +system.cpu.rename.RENAME:RunCycles 3486 # Number of cycles rename is running +system.cpu.rename.RENAME:SquashCycles 1260 # Number of cycles rename is squashing +system.cpu.rename.RENAME:UnblockCycles 771 # Number of cycles rename is unblocking +system.cpu.rename.RENAME:UndoneMaps 7380 # Number of HB maps that are undone due to squashing +system.cpu.rename.RENAME:serializeStallCycles 500 # count of cycles rename stalled for serializing inst +system.cpu.rename.RENAME:serializingInsts 49 # count of serializing insts renamed +system.cpu.rename.RENAME:skidInsts 2217 # count of insts added to the skid buffer +system.cpu.rename.RENAME:tempSerializingInsts 38 # count of temporary serializing insts renamed +system.cpu.workload0.PROG:num_syscalls 17 # Number of system calls +system.cpu.workload1.PROG:num_syscalls 17 # Number of system calls + +---------- End Simulation Statistics ---------- diff --git a/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stderr b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stderr new file mode 100644 index 000000000..a0835d526 --- /dev/null +++ b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stderr @@ -0,0 +1,6 @@ +warn: Entering event queue @ 0. Starting simulation... +warn: cycle 0: fault (page_table_fault) detected @ PC 0x000000 +warn: Increasing stack 0x11ff92000:0x11ff9b000 to 0x11ff90000:0x11ff9b000 because of access to 0x11ff91ff0 +warn: Increasing stack 0x11ff92000:0x11ff9b000 to 0x11ff90000:0x11ff9b000 because of access to 0x11ff91ff0 +warn: cycle 5368: fault (page_table_fault) detected @ PC 0x000000 +warn: cycle 5369: fault (page_table_fault) detected @ PC 0x000000 diff --git a/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stdout b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stdout new file mode 100644 index 000000000..5210b5740 --- /dev/null +++ b/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stdout @@ -0,0 +1,14 @@ +Hello world! +Hello world! +M5 Simulator System + +Copyright (c) 2001-2006 +The Regents of The University of Michigan +All Rights Reserved + + +M5 compiled Oct 6 2006 00:21:18 +M5 started Fri Oct 6 02:55:30 2006 +M5 executing on zizzer.eecs.umich.edu +command line: build/ALPHA_SE/m5.debug configs/example/se.py -d --cmd=tests/test-progs/hello/bin/alpha/linux/hello;tests/test-progs/hello/bin/alpha/linux/hello +Exiting @ tick 7478 because target called exit() diff --git a/tests/quick/01.hello-2T-smt/test.py b/tests/quick/01.hello-2T-smt/test.py new file mode 100644 index 000000000..04ff8c2e6 --- /dev/null +++ b/tests/quick/01.hello-2T-smt/test.py @@ -0,0 +1,32 @@ +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Korey Sewell + +process1 = LiveProcess(cmd = 'hello', executable = binpath('hello')) +process2 = LiveProcess(cmd = 'hello', executable = binpath('hello')) + +root.system.cpu.workload = [process1, process2] diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini index c2bcb99aa..3d719c501 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini @@ -58,6 +58,7 @@ mem_mode=atomic pal=/dist/m5/system/binaries/ts_osfpal physmem=system.physmem readfile=tests/halt.sh +symbolfile= system_rev=1024 system_type=34 @@ -86,6 +87,7 @@ max_loads_all_threads=0 max_loads_any_thread=0 mem=system.physmem profile=0 +progress_interval=0 simulate_stalls=false system=system width=1 @@ -116,6 +118,7 @@ max_loads_all_threads=0 max_loads_any_thread=0 mem=system.physmem profile=0 +progress_interval=0 simulate_stalls=false system=system width=1 @@ -584,6 +587,7 @@ pio=system.iobus.port[24] [trace] bufsize=0 +cycle=0 dump_on_exit=false file=cout flags= diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out index 737ee6611..b8290213e 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out @@ -21,6 +21,7 @@ console=/dist/m5/system/binaries/console pal=/dist/m5/system/binaries/ts_osfpal boot_osflags=root=/dev/hda1 console=ttyS0 readfile=tests/halt.sh +symbolfile= init_param=0 system_type=34 system_rev=1024 @@ -86,6 +87,7 @@ max_insts_any_thread=0 max_insts_all_threads=0 max_loads_any_thread=0 max_loads_all_threads=0 +progress_interval=0 mem=system.physmem system=system itb=system.cpu0.itb @@ -113,6 +115,7 @@ max_insts_any_thread=0 max_insts_all_threads=0 max_loads_any_thread=0 max_loads_all_threads=0 +progress_interval=0 mem=system.physmem system=system itb=system.cpu1.itb @@ -492,6 +495,7 @@ bus_id=0 [trace] flags= start=0 +cycle=0 bufsize=0 file=cout dump_on_exit=false @@ -535,6 +539,9 @@ trace_system=client [debug] break_cycles= +[statsreset] +reset_cycle=0 + [pseudo_inst] quiesce=true statistics=true diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/console.system.sim_console b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/console.system.sim_console index c3c7b2676..4a397ddbf 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/console.system.sim_console +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/console.system.sim_console @@ -74,7 +74,7 @@ SlaveCmd: restart FFFFFC0000310020 FFFFFC0000310020 vptb FFFFFFFE00000000 my_rpb
hdb: M5 IDE Disk, ATA DISK drive
ide0 at 0x8410-0x8417,0x8422 on irq 31
hda: max request size: 128KiB -
hda: 163296 sectors (83 MB), CHS=162/16/63, UDMA(33) +
hda: 511056 sectors (261 MB), CHS=507/16/63, UDMA(33)
hda: hda1
hdb: max request size: 128KiB
hdb: 4177920 sectors (2139 MB), CHS=4144/16/63, UDMA(33) @@ -102,10 +102,6 @@ SlaveCmd: restart FFFFFC0000310020 FFFFFC0000310020 vptb FFFFFFFE00000000 my_rpb
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 480k freed -
init started: BusyBox v1.00-rc2 (2004.11.18-16:22+0000) multi-call binary - -PTXdist-0.7.0 (2004-11-18T11:23:40-0500) - +
init started: BusyBox v1.1.0 (2006.08.17-02:54+0000) multi-call binary mounting filesystems... -EXT2-fs warning: checktime reached, running e2fsck is recommended -
loading script... +loading script... diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt index c7715aeac..376929ebb 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt @@ -1,239 +1,232 @@ ---------- Begin Simulation Statistics ---------- -host_inst_rate 1382023 # Simulator instruction rate (inst/s) -host_mem_usage 194588 # Number of bytes of host memory used -host_seconds 45.78 # Real time elapsed on the host -host_tick_rate 77681401 # Simulator tick rate (ticks/s) +host_inst_rate 1361363 # Simulator instruction rate (inst/s) +host_mem_usage 194440 # Number of bytes of host memory used +host_seconds 45.04 # Real time elapsed on the host +host_tick_rate 78691874 # Simulator tick rate (ticks/s) sim_freq 2000000000 # Frequency of simulated ticks -sim_insts 63264995 # Number of instructions simulated -sim_seconds 1.778030 # Number of seconds simulated -sim_ticks 3556060806 # Number of ticks simulated -system.cpu0.dtb.accesses 1831687 # DTB accesses -system.cpu0.dtb.acv 360 # DTB access violations -system.cpu0.dtb.hits 12876975 # DTB hits -system.cpu0.dtb.misses 11050 # DTB misses -system.cpu0.dtb.read_accesses 495437 # DTB read accesses -system.cpu0.dtb.read_acv 219 # DTB read access violations -system.cpu0.dtb.read_hits 7121424 # DTB read hits -system.cpu0.dtb.read_misses 9036 # DTB read misses -system.cpu0.dtb.write_accesses 1336250 # DTB write accesses -system.cpu0.dtb.write_acv 141 # DTB write access violations -system.cpu0.dtb.write_hits 5755551 # DTB write hits -system.cpu0.dtb.write_misses 2014 # DTB write misses -system.cpu0.idle_fraction 0.984569 # Percentage of idle cycles -system.cpu0.itb.accesses 2328068 # ITB accesses -system.cpu0.itb.acv 216 # ITB acv -system.cpu0.itb.hits 2323500 # ITB hits -system.cpu0.itb.misses 4568 # ITB misses -system.cpu0.kern.callpal 179206 # number of callpals executed +sim_insts 61314617 # Number of instructions simulated +sim_seconds 1.772124 # Number of seconds simulated +sim_ticks 3544247159 # Number of ticks simulated +system.cpu0.dtb.accesses 1850344 # DTB accesses +system.cpu0.dtb.acv 301 # DTB access violations +system.cpu0.dtb.hits 12691711 # DTB hits +system.cpu0.dtb.misses 8349 # DTB misses +system.cpu0.dtb.read_accesses 509385 # DTB read accesses +system.cpu0.dtb.read_acv 184 # DTB read access violations +system.cpu0.dtb.read_hits 7018751 # DTB read hits +system.cpu0.dtb.read_misses 6579 # DTB read misses +system.cpu0.dtb.write_accesses 1340959 # DTB write accesses +system.cpu0.dtb.write_acv 117 # DTB write access violations +system.cpu0.dtb.write_hits 5672960 # DTB write hits +system.cpu0.dtb.write_misses 1770 # DTB write misses +system.cpu0.idle_fraction 0.984893 # Percentage of idle cycles +system.cpu0.itb.accesses 1981604 # ITB accesses +system.cpu0.itb.acv 161 # ITB acv +system.cpu0.itb.hits 1978255 # ITB hits +system.cpu0.itb.misses 3349 # ITB misses +system.cpu0.kern.callpal 176688 # number of callpals executed system.cpu0.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed -system.cpu0.kern.callpal_wripir 91 0.05% 0.05% # number of callpals executed -system.cpu0.kern.callpal_wrmces 1 0.00% 0.05% # number of callpals executed -system.cpu0.kern.callpal_wrfen 1 0.00% 0.05% # number of callpals executed -system.cpu0.kern.callpal_wrvptptr 1 0.00% 0.05% # number of callpals executed -system.cpu0.kern.callpal_swpctx 1375 0.77% 0.82% # number of callpals executed -system.cpu0.kern.callpal_tbi 20 0.01% 0.83% # number of callpals executed -system.cpu0.kern.callpal_wrent 7 0.00% 0.84% # number of callpals executed -system.cpu0.kern.callpal_swpipl 168681 94.13% 94.96% # number of callpals executed -system.cpu0.kern.callpal_rdps 4713 2.63% 97.59% # number of callpals executed -system.cpu0.kern.callpal_wrkgp 1 0.00% 97.59% # number of callpals executed -system.cpu0.kern.callpal_wrusp 4 0.00% 97.59% # number of callpals executed -system.cpu0.kern.callpal_rdusp 11 0.01% 97.60% # number of callpals executed -system.cpu0.kern.callpal_whami 2 0.00% 97.60% # number of callpals executed -system.cpu0.kern.callpal_rti 3639 2.03% 99.63% # number of callpals executed -system.cpu0.kern.callpal_callsys 461 0.26% 99.89% # number of callpals executed -system.cpu0.kern.callpal_imb 197 0.11% 100.00% # number of callpals executed +system.cpu0.kern.callpal_wripir 97 0.05% 0.06% # number of callpals executed +system.cpu0.kern.callpal_wrmces 1 0.00% 0.06% # number of callpals executed +system.cpu0.kern.callpal_wrfen 1 0.00% 0.06% # number of callpals executed +system.cpu0.kern.callpal_wrvptptr 1 0.00% 0.06% # number of callpals executed +system.cpu0.kern.callpal_swpctx 1117 0.63% 0.69% # number of callpals executed +system.cpu0.kern.callpal_tbi 44 0.02% 0.71% # number of callpals executed +system.cpu0.kern.callpal_wrent 7 0.00% 0.72% # number of callpals executed +system.cpu0.kern.callpal_swpipl 166811 94.41% 95.13% # number of callpals executed +system.cpu0.kern.callpal_rdps 4911 2.78% 97.91% # number of callpals executed +system.cpu0.kern.callpal_wrkgp 1 0.00% 97.91% # number of callpals executed +system.cpu0.kern.callpal_wrusp 3 0.00% 97.91% # number of callpals executed +system.cpu0.kern.callpal_rdusp 9 0.01% 97.91% # number of callpals executed +system.cpu0.kern.callpal_whami 2 0.00% 97.92% # number of callpals executed +system.cpu0.kern.callpal_rti 3236 1.83% 99.75% # number of callpals executed +system.cpu0.kern.callpal_callsys 325 0.18% 99.93% # number of callpals executed +system.cpu0.kern.callpal_imb 121 0.07% 100.00% # number of callpals executed system.cpu0.kern.inst.arm 0 # number of arm instructions executed -system.cpu0.kern.inst.hwrei 197512 # number of hwrei instructions executed +system.cpu0.kern.inst.hwrei 190918 # number of hwrei instructions executed system.cpu0.kern.inst.ivlb 0 # number of ivlb instructions executed system.cpu0.kern.inst.ivle 0 # number of ivle instructions executed -system.cpu0.kern.inst.quiesce 1917 # number of quiesce instructions executed -system.cpu0.kern.ipl_count 174431 # number of times we switched to this ipl -system.cpu0.kern.ipl_count_0 73383 42.07% 42.07% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_21 286 0.16% 42.23% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_22 5540 3.18% 45.41% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_30 8 0.00% 45.41% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_31 95214 54.59% 100.00% # number of times we switched to this ipl -system.cpu0.kern.ipl_good 156222 # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_0 73336 46.94% 46.94% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_21 286 0.18% 47.13% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_22 5540 3.55% 50.67% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_30 8 0.01% 50.68% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_31 77052 49.32% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_ticks 3555570558 # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_0 3533670973 99.38% 99.38% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_21 45785 0.00% 99.39% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_22 1008642 0.03% 99.41% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_30 1988 0.00% 99.41% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_31 20843170 0.59% 100.00% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_used 0.895609 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.ipl_used_0 0.999360 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.inst.quiesce 1922 # number of quiesce instructions executed +system.cpu0.kern.ipl_count 172116 # number of times we switched to this ipl +system.cpu0.kern.ipl_count_0 72060 41.87% 41.87% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_21 251 0.15% 42.01% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_22 5518 3.21% 45.22% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_30 7 0.00% 45.22% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_31 94280 54.78% 100.00% # number of times we switched to this ipl +system.cpu0.kern.ipl_good 153515 # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_0 72019 46.91% 46.91% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_21 251 0.16% 47.08% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_22 5518 3.59% 50.67% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_30 7 0.00% 50.68% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_31 75720 49.32% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_ticks 3543835079 # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_0 3521923327 99.38% 99.38% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_21 39982 0.00% 99.38% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_22 1005040 0.03% 99.41% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_30 1756 0.00% 99.41% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_31 20864974 0.59% 100.00% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_used 0.891928 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.ipl_used_0 0.999431 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_21 1 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_30 1 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.ipl_used_31 0.809251 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.mode_good_kernel 1633 -system.cpu0.kern.mode_good_user 1486 -system.cpu0.kern.mode_good_idle 147 -system.cpu0.kern.mode_switch_kernel 2898 # number of protection mode switches -system.cpu0.kern.mode_switch_user 1486 # number of protection mode switches -system.cpu0.kern.mode_switch_idle 2090 # number of protection mode switches -system.cpu0.kern.mode_switch_good 0.504479 # fraction of useful protection mode switches -system.cpu0.kern.mode_switch_good_kernel 0.563492 # fraction of useful protection mode switches +system.cpu0.kern.ipl_used_31 0.803140 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.mode_good_kernel 1277 +system.cpu0.kern.mode_good_user 1129 +system.cpu0.kern.mode_good_idle 148 +system.cpu0.kern.mode_switch_kernel 2253 # number of protection mode switches +system.cpu0.kern.mode_switch_user 1129 # number of protection mode switches +system.cpu0.kern.mode_switch_idle 2074 # number of protection mode switches +system.cpu0.kern.mode_switch_good 0.468109 # fraction of useful protection mode switches +system.cpu0.kern.mode_switch_good_kernel 0.566800 # fraction of useful protection mode switches system.cpu0.kern.mode_switch_good_user 1 # fraction of useful protection mode switches -system.cpu0.kern.mode_switch_good_idle 0.070335 # fraction of useful protection mode switches -system.cpu0.kern.mode_ticks_kernel 29671488 0.83% 0.83% # number of ticks spent at the given mode -system.cpu0.kern.mode_ticks_user 2605758 0.07% 0.91% # number of ticks spent at the given mode -system.cpu0.kern.mode_ticks_idle 3523245106 99.09% 100.00% # number of ticks spent at the given mode -system.cpu0.kern.swap_context 1376 # number of times the context was actually changed -system.cpu0.kern.syscall 312 # number of syscalls executed -system.cpu0.kern.syscall_fork 9 2.88% 2.88% # number of syscalls executed -system.cpu0.kern.syscall_read 20 6.41% 9.29% # number of syscalls executed -system.cpu0.kern.syscall_write 6 1.92% 11.22% # number of syscalls executed -system.cpu0.kern.syscall_close 36 11.54% 22.76% # number of syscalls executed -system.cpu0.kern.syscall_chdir 1 0.32% 23.08% # number of syscalls executed -system.cpu0.kern.syscall_chmod 1 0.32% 23.40% # number of syscalls executed -system.cpu0.kern.syscall_obreak 26 8.33% 31.73% # number of syscalls executed -system.cpu0.kern.syscall_lseek 9 2.88% 34.62% # number of syscalls executed -system.cpu0.kern.syscall_getpid 8 2.56% 37.18% # number of syscalls executed -system.cpu0.kern.syscall_setuid 2 0.64% 37.82% # number of syscalls executed -system.cpu0.kern.syscall_getuid 4 1.28% 39.10% # number of syscalls executed -system.cpu0.kern.syscall_access 4 1.28% 40.38% # number of syscalls executed -system.cpu0.kern.syscall_dup 4 1.28% 41.67% # number of syscalls executed -system.cpu0.kern.syscall_open 40 12.82% 54.49% # number of syscalls executed -system.cpu0.kern.syscall_getgid 4 1.28% 55.77% # number of syscalls executed -system.cpu0.kern.syscall_sigprocmask 12 3.85% 59.62% # number of syscalls executed -system.cpu0.kern.syscall_ioctl 13 4.17% 63.78% # number of syscalls executed -system.cpu0.kern.syscall_readlink 1 0.32% 64.10% # number of syscalls executed -system.cpu0.kern.syscall_execve 7 2.24% 66.35% # number of syscalls executed -system.cpu0.kern.syscall_pre_F64_stat 22 7.05% 73.40% # number of syscalls executed -system.cpu0.kern.syscall_pre_F64_lstat 1 0.32% 73.72% # number of syscalls executed -system.cpu0.kern.syscall_mmap 28 8.97% 82.69% # number of syscalls executed -system.cpu0.kern.syscall_munmap 4 1.28% 83.97% # number of syscalls executed -system.cpu0.kern.syscall_mprotect 7 2.24% 86.22% # number of syscalls executed -system.cpu0.kern.syscall_gethostname 1 0.32% 86.54% # number of syscalls executed -system.cpu0.kern.syscall_dup2 3 0.96% 87.50% # number of syscalls executed -system.cpu0.kern.syscall_pre_F64_fstat 15 4.81% 92.31% # number of syscalls executed -system.cpu0.kern.syscall_fcntl 11 3.53% 95.83% # number of syscalls executed -system.cpu0.kern.syscall_socket 3 0.96% 96.79% # number of syscalls executed -system.cpu0.kern.syscall_connect 3 0.96% 97.76% # number of syscalls executed -system.cpu0.kern.syscall_setgid 2 0.64% 98.40% # number of syscalls executed -system.cpu0.kern.syscall_getrlimit 2 0.64% 99.04% # number of syscalls executed -system.cpu0.kern.syscall_setsid 3 0.96% 100.00% # number of syscalls executed -system.cpu0.not_idle_fraction 0.015431 # Percentage of non-idle cycles -system.cpu0.numCycles 54873632 # number of cpu cycles simulated -system.cpu0.num_insts 54868848 # Number of instructions executed -system.cpu0.num_refs 12918621 # Number of memory references -system.cpu1.dtb.accesses 524398 # DTB accesses -system.cpu1.dtb.acv 60 # DTB access violations -system.cpu1.dtb.hits 2058922 # DTB hits -system.cpu1.dtb.misses 5263 # DTB misses -system.cpu1.dtb.read_accesses 337746 # DTB read accesses -system.cpu1.dtb.read_acv 23 # DTB read access violations -system.cpu1.dtb.read_hits 1301369 # DTB read hits -system.cpu1.dtb.read_misses 4766 # DTB read misses -system.cpu1.dtb.write_accesses 186652 # DTB write accesses -system.cpu1.dtb.write_acv 37 # DTB write access violations -system.cpu1.dtb.write_hits 757553 # DTB write hits -system.cpu1.dtb.write_misses 497 # DTB write misses -system.cpu1.idle_fraction 0.997638 # Percentage of idle cycles -system.cpu1.itb.accesses 1711917 # ITB accesses +system.cpu0.kern.mode_switch_good_idle 0.071360 # fraction of useful protection mode switches +system.cpu0.kern.mode_ticks_kernel 28710240 0.81% 0.81% # number of ticks spent at the given mode +system.cpu0.kern.mode_ticks_user 2184201 0.06% 0.87% # number of ticks spent at the given mode +system.cpu0.kern.mode_ticks_idle 3512891779 99.13% 100.00% # number of ticks spent at the given mode +system.cpu0.kern.swap_context 1118 # number of times the context was actually changed +system.cpu0.kern.syscall 192 # number of syscalls executed +system.cpu0.kern.syscall_fork 7 3.65% 3.65% # number of syscalls executed +system.cpu0.kern.syscall_read 13 6.77% 10.42% # number of syscalls executed +system.cpu0.kern.syscall_write 4 2.08% 12.50% # number of syscalls executed +system.cpu0.kern.syscall_close 28 14.58% 27.08% # number of syscalls executed +system.cpu0.kern.syscall_chdir 1 0.52% 27.60% # number of syscalls executed +system.cpu0.kern.syscall_obreak 7 3.65% 31.25% # number of syscalls executed +system.cpu0.kern.syscall_lseek 6 3.12% 34.37% # number of syscalls executed +system.cpu0.kern.syscall_getpid 4 2.08% 36.46% # number of syscalls executed +system.cpu0.kern.syscall_setuid 1 0.52% 36.98% # number of syscalls executed +system.cpu0.kern.syscall_getuid 3 1.56% 38.54% # number of syscalls executed +system.cpu0.kern.syscall_access 7 3.65% 42.19% # number of syscalls executed +system.cpu0.kern.syscall_dup 2 1.04% 43.23% # number of syscalls executed +system.cpu0.kern.syscall_open 34 17.71% 60.94% # number of syscalls executed +system.cpu0.kern.syscall_getgid 3 1.56% 62.50% # number of syscalls executed +system.cpu0.kern.syscall_sigprocmask 8 4.17% 66.67% # number of syscalls executed +system.cpu0.kern.syscall_ioctl 9 4.69% 71.35% # number of syscalls executed +system.cpu0.kern.syscall_readlink 1 0.52% 71.87% # number of syscalls executed +system.cpu0.kern.syscall_execve 5 2.60% 74.48% # number of syscalls executed +system.cpu0.kern.syscall_mmap 22 11.46% 85.94% # number of syscalls executed +system.cpu0.kern.syscall_munmap 2 1.04% 86.98% # number of syscalls executed +system.cpu0.kern.syscall_mprotect 6 3.12% 90.10% # number of syscalls executed +system.cpu0.kern.syscall_gethostname 1 0.52% 90.62% # number of syscalls executed +system.cpu0.kern.syscall_dup2 2 1.04% 91.67% # number of syscalls executed +system.cpu0.kern.syscall_fcntl 8 4.17% 95.83% # number of syscalls executed +system.cpu0.kern.syscall_socket 2 1.04% 96.87% # number of syscalls executed +system.cpu0.kern.syscall_connect 2 1.04% 97.92% # number of syscalls executed +system.cpu0.kern.syscall_setgid 1 0.52% 98.44% # number of syscalls executed +system.cpu0.kern.syscall_getrlimit 1 0.52% 98.96% # number of syscalls executed +system.cpu0.kern.syscall_setsid 2 1.04% 100.00% # number of syscalls executed +system.cpu0.not_idle_fraction 0.015107 # Percentage of non-idle cycles +system.cpu0.numCycles 53543489 # number of cpu cycles simulated +system.cpu0.num_insts 53539979 # Number of instructions executed +system.cpu0.num_refs 12727196 # Number of memory references +system.cpu1.dtb.accesses 460215 # DTB accesses +system.cpu1.dtb.acv 72 # DTB access violations +system.cpu1.dtb.hits 2012555 # DTB hits +system.cpu1.dtb.misses 4236 # DTB misses +system.cpu1.dtb.read_accesses 319867 # DTB read accesses +system.cpu1.dtb.read_acv 26 # DTB read access violations +system.cpu1.dtb.read_hits 1276251 # DTB read hits +system.cpu1.dtb.read_misses 3800 # DTB read misses +system.cpu1.dtb.write_accesses 140348 # DTB write accesses +system.cpu1.dtb.write_acv 46 # DTB write access violations +system.cpu1.dtb.write_hits 736304 # DTB write hits +system.cpu1.dtb.write_misses 436 # DTB write misses +system.cpu1.idle_fraction 0.997806 # Percentage of idle cycles +system.cpu1.itb.accesses 1302484 # ITB accesses system.cpu1.itb.acv 23 # ITB acv -system.cpu1.itb.hits 1709682 # ITB hits -system.cpu1.itb.misses 2235 # ITB misses -system.cpu1.kern.callpal 25990 # number of callpals executed +system.cpu1.itb.hits 1300768 # ITB hits +system.cpu1.itb.misses 1716 # ITB misses +system.cpu1.kern.callpal 27118 # number of callpals executed system.cpu1.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed -system.cpu1.kern.callpal_wripir 8 0.03% 0.03% # number of callpals executed -system.cpu1.kern.callpal_wrmces 1 0.00% 0.04% # number of callpals executed +system.cpu1.kern.callpal_wripir 7 0.03% 0.03% # number of callpals executed +system.cpu1.kern.callpal_wrmces 1 0.00% 0.03% # number of callpals executed system.cpu1.kern.callpal_wrfen 1 0.00% 0.04% # number of callpals executed -system.cpu1.kern.callpal_swpctx 554 2.13% 2.17% # number of callpals executed -system.cpu1.kern.callpal_tbi 7 0.03% 2.20% # number of callpals executed -system.cpu1.kern.callpal_wrent 7 0.03% 2.23% # number of callpals executed -system.cpu1.kern.callpal_swpipl 22366 86.06% 88.28% # number of callpals executed -system.cpu1.kern.callpal_rdps 98 0.38% 88.66% # number of callpals executed -system.cpu1.kern.callpal_wrkgp 1 0.00% 88.66% # number of callpals executed -system.cpu1.kern.callpal_wrusp 4 0.02% 88.68% # number of callpals executed -system.cpu1.kern.callpal_rdusp 1 0.00% 88.68% # number of callpals executed -system.cpu1.kern.callpal_whami 3 0.01% 88.70% # number of callpals executed -system.cpu1.kern.callpal_rti 2613 10.05% 98.75% # number of callpals executed -system.cpu1.kern.callpal_callsys 208 0.80% 99.55% # number of callpals executed -system.cpu1.kern.callpal_imb 116 0.45% 100.00% # number of callpals executed +system.cpu1.kern.callpal_swpctx 515 1.90% 1.94% # number of callpals executed +system.cpu1.kern.callpal_tbi 10 0.04% 1.97% # number of callpals executed +system.cpu1.kern.callpal_wrent 7 0.03% 2.00% # number of callpals executed +system.cpu1.kern.callpal_swpipl 23496 86.64% 88.64% # number of callpals executed +system.cpu1.kern.callpal_rdps 251 0.93% 89.57% # number of callpals executed +system.cpu1.kern.callpal_wrkgp 1 0.00% 89.57% # number of callpals executed +system.cpu1.kern.callpal_wrusp 4 0.01% 89.59% # number of callpals executed +system.cpu1.kern.callpal_rdusp 1 0.00% 89.59% # number of callpals executed +system.cpu1.kern.callpal_whami 3 0.01% 89.60% # number of callpals executed +system.cpu1.kern.callpal_rti 2552 9.41% 99.01% # number of callpals executed +system.cpu1.kern.callpal_callsys 208 0.77% 99.78% # number of callpals executed +system.cpu1.kern.callpal_imb 59 0.22% 100.00% # number of callpals executed system.cpu1.kern.callpal_rdunique 1 0.00% 100.00% # number of callpals executed system.cpu1.kern.inst.arm 0 # number of arm instructions executed -system.cpu1.kern.inst.hwrei 35475 # number of hwrei instructions executed +system.cpu1.kern.inst.hwrei 35069 # number of hwrei instructions executed system.cpu1.kern.inst.ivlb 0 # number of ivlb instructions executed system.cpu1.kern.inst.ivle 0 # number of ivle instructions executed -system.cpu1.kern.inst.quiesce 1946 # number of quiesce instructions executed -system.cpu1.kern.ipl_count 26882 # number of times we switched to this ipl -system.cpu1.kern.ipl_count_0 9636 35.85% 35.85% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_22 5504 20.47% 56.32% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_30 91 0.34% 56.66% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_31 11651 43.34% 100.00% # number of times we switched to this ipl -system.cpu1.kern.ipl_good 26602 # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_0 9607 36.11% 36.11% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_22 5504 20.69% 56.80% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_30 91 0.34% 57.15% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_31 11400 42.85% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_ticks 3556060349 # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_0 3533823708 99.37% 99.37% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_22 1040434 0.03% 99.40% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_30 23860 0.00% 99.40% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_31 21172347 0.60% 100.00% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_used 0.989584 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.ipl_used_0 0.996990 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.inst.quiesce 1947 # number of quiesce instructions executed +system.cpu1.kern.ipl_count 27951 # number of times we switched to this ipl +system.cpu1.kern.ipl_count_0 10084 36.08% 36.08% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_22 5485 19.62% 55.70% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_30 97 0.35% 56.05% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_31 12285 43.95% 100.00% # number of times we switched to this ipl +system.cpu1.kern.ipl_good 27484 # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_0 10061 36.61% 36.61% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_22 5485 19.96% 56.56% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_30 97 0.35% 56.92% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_31 11841 43.08% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_ticks 3544246744 # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_0 3521927913 99.37% 99.37% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_22 1037048 0.03% 99.40% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_30 25211 0.00% 99.40% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_31 21256572 0.60% 100.00% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_used 0.983292 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.ipl_used_0 0.997719 # fraction of swpipl calls that actually changed the ipl system.cpu1.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl system.cpu1.kern.ipl_used_30 1 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.ipl_used_31 0.978457 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.mode_good_kernel 691 -system.cpu1.kern.mode_good_user 692 +system.cpu1.kern.ipl_used_31 0.963858 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.mode_good_kernel 636 +system.cpu1.kern.mode_good_user 637 system.cpu1.kern.mode_good_idle 0 -system.cpu1.kern.mode_switch_kernel 3163 # number of protection mode switches -system.cpu1.kern.mode_switch_user 692 # number of protection mode switches +system.cpu1.kern.mode_switch_kernel 3063 # number of protection mode switches +system.cpu1.kern.mode_switch_user 637 # number of protection mode switches system.cpu1.kern.mode_switch_idle 0 # number of protection mode switches -system.cpu1.kern.mode_switch_good 0.358755 # fraction of useful protection mode switches -system.cpu1.kern.mode_switch_good_kernel 0.218463 # fraction of useful protection mode switches +system.cpu1.kern.mode_switch_good 0.344054 # fraction of useful protection mode switches +system.cpu1.kern.mode_switch_good_kernel 0.207640 # fraction of useful protection mode switches system.cpu1.kern.mode_switch_good_user 1 # fraction of useful protection mode switches system.cpu1.kern.mode_switch_good_idle <err: div-0> # fraction of useful protection mode switches -system.cpu1.kern.mode_ticks_kernel 3554209770 99.95% 99.95% # number of ticks spent at the given mode -system.cpu1.kern.mode_ticks_user 1850577 0.05% 100.00% # number of ticks spent at the given mode +system.cpu1.kern.mode_ticks_kernel 3542834137 99.96% 99.96% # number of ticks spent at the given mode +system.cpu1.kern.mode_ticks_user 1412605 0.04% 100.00% # number of ticks spent at the given mode system.cpu1.kern.mode_ticks_idle 0 0.00% 100.00% # number of ticks spent at the given mode -system.cpu1.kern.swap_context 555 # number of times the context was actually changed -system.cpu1.kern.syscall 163 # number of syscalls executed -system.cpu1.kern.syscall_fork 1 0.61% 0.61% # number of syscalls executed -system.cpu1.kern.syscall_read 13 7.98% 8.59% # number of syscalls executed -system.cpu1.kern.syscall_write 1 0.61% 9.20% # number of syscalls executed -system.cpu1.kern.syscall_close 13 7.98% 17.18% # number of syscalls executed -system.cpu1.kern.syscall_obreak 18 11.04% 28.22% # number of syscalls executed -system.cpu1.kern.syscall_lseek 4 2.45% 30.67% # number of syscalls executed -system.cpu1.kern.syscall_getpid 2 1.23% 31.90% # number of syscalls executed -system.cpu1.kern.syscall_setuid 2 1.23% 33.13% # number of syscalls executed -system.cpu1.kern.syscall_getuid 4 2.45% 35.58% # number of syscalls executed -system.cpu1.kern.syscall_open 28 17.18% 52.76% # number of syscalls executed -system.cpu1.kern.syscall_getgid 4 2.45% 55.21% # number of syscalls executed -system.cpu1.kern.syscall_sigprocmask 2 1.23% 56.44% # number of syscalls executed -system.cpu1.kern.syscall_ioctl 3 1.84% 58.28% # number of syscalls executed -system.cpu1.kern.syscall_readlink 1 0.61% 58.90% # number of syscalls executed -system.cpu1.kern.syscall_execve 1 0.61% 59.51% # number of syscalls executed -system.cpu1.kern.syscall_pre_F64_stat 9 5.52% 65.03% # number of syscalls executed -system.cpu1.kern.syscall_mmap 27 16.56% 81.60% # number of syscalls executed -system.cpu1.kern.syscall_munmap 2 1.23% 82.82% # number of syscalls executed -system.cpu1.kern.syscall_mprotect 7 4.29% 87.12% # number of syscalls executed -system.cpu1.kern.syscall_gethostname 1 0.61% 87.73% # number of syscalls executed -system.cpu1.kern.syscall_dup2 1 0.61% 88.34% # number of syscalls executed -system.cpu1.kern.syscall_pre_F64_fstat 13 7.98% 96.32% # number of syscalls executed -system.cpu1.kern.syscall_fcntl 3 1.84% 98.16% # number of syscalls executed -system.cpu1.kern.syscall_setgid 2 1.23% 99.39% # number of syscalls executed -system.cpu1.kern.syscall_getrlimit 1 0.61% 100.00% # number of syscalls executed -system.cpu1.not_idle_fraction 0.002362 # Percentage of non-idle cycles -system.cpu1.numCycles 8398405 # number of cpu cycles simulated -system.cpu1.num_insts 8396147 # Number of instructions executed -system.cpu1.num_refs 2073144 # Number of memory references +system.cpu1.kern.swap_context 516 # number of times the context was actually changed +system.cpu1.kern.syscall 137 # number of syscalls executed +system.cpu1.kern.syscall_fork 1 0.73% 0.73% # number of syscalls executed +system.cpu1.kern.syscall_read 17 12.41% 13.14% # number of syscalls executed +system.cpu1.kern.syscall_close 15 10.95% 24.09% # number of syscalls executed +system.cpu1.kern.syscall_chmod 1 0.73% 24.82% # number of syscalls executed +system.cpu1.kern.syscall_obreak 8 5.84% 30.66% # number of syscalls executed +system.cpu1.kern.syscall_lseek 4 2.92% 33.58% # number of syscalls executed +system.cpu1.kern.syscall_getpid 2 1.46% 35.04% # number of syscalls executed +system.cpu1.kern.syscall_setuid 3 2.19% 37.23% # number of syscalls executed +system.cpu1.kern.syscall_getuid 3 2.19% 39.42% # number of syscalls executed +system.cpu1.kern.syscall_access 4 2.92% 42.34% # number of syscalls executed +system.cpu1.kern.syscall_open 21 15.33% 57.66% # number of syscalls executed +system.cpu1.kern.syscall_getgid 3 2.19% 59.85% # number of syscalls executed +system.cpu1.kern.syscall_sigprocmask 2 1.46% 61.31% # number of syscalls executed +system.cpu1.kern.syscall_ioctl 1 0.73% 62.04% # number of syscalls executed +system.cpu1.kern.syscall_execve 2 1.46% 63.50% # number of syscalls executed +system.cpu1.kern.syscall_mmap 32 23.36% 86.86% # number of syscalls executed +system.cpu1.kern.syscall_munmap 1 0.73% 87.59% # number of syscalls executed +system.cpu1.kern.syscall_mprotect 10 7.30% 94.89% # number of syscalls executed +system.cpu1.kern.syscall_dup2 1 0.73% 95.62% # number of syscalls executed +system.cpu1.kern.syscall_fcntl 2 1.46% 97.08% # number of syscalls executed +system.cpu1.kern.syscall_setgid 3 2.19% 99.27% # number of syscalls executed +system.cpu1.kern.syscall_getrlimit 1 0.73% 100.00% # number of syscalls executed +system.cpu1.not_idle_fraction 0.002194 # Percentage of non-idle cycles +system.cpu1.numCycles 7776377 # number of cpu cycles simulated +system.cpu1.num_insts 7774638 # Number of instructions executed +system.cpu1.num_refs 2025195 # Number of memory references system.disk0.dma_read_bytes 1024 # Number of bytes transfered via DMA reads (not PRD). system.disk0.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk0.dma_read_txs 1 # Number of DMA read transactions (not PRD). -system.disk0.dma_write_bytes 2521088 # Number of bytes transfered via DMA writes. -system.disk0.dma_write_full_pages 285 # Number of full page size DMA writes. -system.disk0.dma_write_txs 375 # Number of DMA write transactions. +system.disk0.dma_write_bytes 2735104 # Number of bytes transfered via DMA writes. +system.disk0.dma_write_full_pages 306 # Number of full page size DMA writes. +system.disk0.dma_write_txs 412 # Number of DMA write transactions. system.disk2.dma_read_bytes 0 # Number of bytes transfered via DMA reads (not PRD). system.disk2.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk2.dma_read_txs 0 # Number of DMA read transactions (not PRD). diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout index c8330eef2..039088577 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout @@ -5,8 +5,8 @@ The Regents of The University of Michigan All Rights Reserved -M5 compiled Sep 5 2006 15:32:34 -M5 started Tue Sep 5 15:43:12 2006 +M5 compiled Oct 5 2006 22:13:02 +M5 started Fri Oct 6 00:24:12 2006 M5 executing on zizzer.eecs.umich.edu command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual -Exiting @ tick 3556060806 because m5_exit instruction encountered +Exiting @ tick 3544247159 because m5_exit instruction encountered diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini index c017495f6..e30428078 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini @@ -58,6 +58,7 @@ mem_mode=atomic pal=/dist/m5/system/binaries/ts_osfpal physmem=system.physmem readfile=tests/halt.sh +symbolfile= system_rev=1024 system_type=34 @@ -86,6 +87,7 @@ max_loads_all_threads=0 max_loads_any_thread=0 mem=system.physmem profile=0 +progress_interval=0 simulate_stalls=false system=system width=1 @@ -554,6 +556,7 @@ pio=system.iobus.port[24] [trace] bufsize=0 +cycle=0 dump_on_exit=false file=cout flags= diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out index 018308862..ea63dce8b 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out @@ -21,6 +21,7 @@ console=/dist/m5/system/binaries/console pal=/dist/m5/system/binaries/ts_osfpal boot_osflags=root=/dev/hda1 console=ttyS0 readfile=tests/halt.sh +symbolfile= init_param=0 system_type=34 system_rev=1024 @@ -86,6 +87,7 @@ max_insts_any_thread=0 max_insts_all_threads=0 max_loads_any_thread=0 max_loads_all_threads=0 +progress_interval=0 mem=system.physmem system=system itb=system.cpu.itb @@ -465,6 +467,7 @@ bus_id=0 [trace] flags= start=0 +cycle=0 bufsize=0 file=cout dump_on_exit=false @@ -508,6 +511,9 @@ trace_system=client [debug] break_cycles= +[statsreset] +reset_cycle=0 + [pseudo_inst] quiesce=true statistics=true diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/console.system.sim_console b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/console.system.sim_console index ea7a20777..d6e3955cc 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/console.system.sim_console +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/console.system.sim_console @@ -69,7 +69,7 @@ M5 console: m5AlphaAccess @ 0xFFFFFD0200000000
hdb: M5 IDE Disk, ATA DISK drive
ide0 at 0x8410-0x8417,0x8422 on irq 31
hda: max request size: 128KiB -
hda: 163296 sectors (83 MB), CHS=162/16/63, UDMA(33) +
hda: 511056 sectors (261 MB), CHS=507/16/63, UDMA(33)
hda: hda1
hdb: max request size: 128KiB
hdb: 4177920 sectors (2139 MB), CHS=4144/16/63, UDMA(33) @@ -97,10 +97,6 @@ M5 console: m5AlphaAccess @ 0xFFFFFD0200000000
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 480k freed -
init started: BusyBox v1.00-rc2 (2004.11.18-16:22+0000) multi-call binary - -PTXdist-0.7.0 (2004-11-18T11:23:40-0500) - +
init started: BusyBox v1.1.0 (2006.08.17-02:54+0000) multi-call binary mounting filesystems... -EXT2-fs warning: checktime reached, running e2fsck is recommended -
loading script... +loading script... diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt index 3a7dc1cd4..5c403c0a9 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt @@ -1,130 +1,127 @@ ---------- Begin Simulation Statistics ---------- -host_inst_rate 1346129 # Simulator instruction rate (inst/s) -host_mem_usage 194392 # Number of bytes of host memory used -host_seconds 44.52 # Real time elapsed on the host -host_tick_rate 78470813 # Simulator tick rate (ticks/s) +host_inst_rate 1121378 # Simulator instruction rate (inst/s) +host_mem_usage 194272 # Number of bytes of host memory used +host_seconds 51.72 # Real time elapsed on the host +host_tick_rate 67313414 # Simulator tick rate (ticks/s) sim_freq 2000000000 # Frequency of simulated ticks -sim_insts 59929520 # Number of instructions simulated -sim_seconds 1.746773 # Number of seconds simulated -sim_ticks 3493545624 # Number of ticks simulated -system.cpu.dtb.accesses 2354955 # DTB accesses -system.cpu.dtb.acv 413 # DTB access violations -system.cpu.dtb.hits 13929995 # DTB hits -system.cpu.dtb.misses 16187 # DTB misses -system.cpu.dtb.read_accesses 832415 # DTB read accesses -system.cpu.dtb.read_acv 242 # DTB read access violations -system.cpu.dtb.read_hits 7718636 # DTB read hits -system.cpu.dtb.read_misses 13695 # DTB read misses -system.cpu.dtb.write_accesses 1522540 # DTB write accesses -system.cpu.dtb.write_acv 171 # DTB write access violations -system.cpu.dtb.write_hits 6211359 # DTB write hits -system.cpu.dtb.write_misses 2492 # DTB write misses -system.cpu.idle_fraction 0.982844 # Percentage of idle cycles -system.cpu.itb.accesses 4037380 # ITB accesses -system.cpu.itb.acv 239 # ITB acv -system.cpu.itb.hits 4030656 # ITB hits -system.cpu.itb.misses 6724 # ITB misses -system.cpu.kern.callpal 184022 # number of callpals executed +sim_insts 58001813 # Number of instructions simulated +sim_seconds 1.740863 # Number of seconds simulated +sim_ticks 3481726167 # Number of ticks simulated +system.cpu.dtb.accesses 2309470 # DTB accesses +system.cpu.dtb.acv 367 # DTB access violations +system.cpu.dtb.hits 13711941 # DTB hits +system.cpu.dtb.misses 12493 # DTB misses +system.cpu.dtb.read_accesses 828530 # DTB read accesses +system.cpu.dtb.read_acv 210 # DTB read access violations +system.cpu.dtb.read_hits 7597829 # DTB read hits +system.cpu.dtb.read_misses 10298 # DTB read misses +system.cpu.dtb.write_accesses 1480940 # DTB write accesses +system.cpu.dtb.write_acv 157 # DTB write access violations +system.cpu.dtb.write_hits 6114112 # DTB write hits +system.cpu.dtb.write_misses 2195 # DTB write misses +system.cpu.idle_fraction 0.983340 # Percentage of idle cycles +system.cpu.itb.accesses 3281346 # ITB accesses +system.cpu.itb.acv 184 # ITB acv +system.cpu.itb.hits 3276356 # ITB hits +system.cpu.itb.misses 4990 # ITB misses +system.cpu.kern.callpal 182718 # number of callpals executed system.cpu.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrmces 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrfen 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrvptptr 1 0.00% 0.00% # number of callpals executed -system.cpu.kern.callpal_swpctx 1864 1.01% 1.02% # number of callpals executed -system.cpu.kern.callpal_tbi 28 0.02% 1.03% # number of callpals executed -system.cpu.kern.callpal_wrent 7 0.00% 1.03% # number of callpals executed -system.cpu.kern.callpal_swpipl 172016 93.48% 94.51% # number of callpals executed -system.cpu.kern.callpal_rdps 4808 2.61% 97.12% # number of callpals executed -system.cpu.kern.callpal_wrkgp 1 0.00% 97.12% # number of callpals executed -system.cpu.kern.callpal_wrusp 8 0.00% 97.13% # number of callpals executed -system.cpu.kern.callpal_rdusp 12 0.01% 97.13% # number of callpals executed -system.cpu.kern.callpal_whami 2 0.00% 97.14% # number of callpals executed -system.cpu.kern.callpal_rti 4291 2.33% 99.47% # number of callpals executed -system.cpu.kern.callpal_callsys 667 0.36% 99.83% # number of callpals executed -system.cpu.kern.callpal_imb 314 0.17% 100.00% # number of callpals executed +system.cpu.kern.callpal_swpctx 1574 0.86% 0.86% # number of callpals executed +system.cpu.kern.callpal_tbi 54 0.03% 0.89% # number of callpals executed +system.cpu.kern.callpal_wrent 7 0.00% 0.90% # number of callpals executed +system.cpu.kern.callpal_swpipl 171359 93.78% 94.68% # number of callpals executed +system.cpu.kern.callpal_rdps 5159 2.82% 97.50% # number of callpals executed +system.cpu.kern.callpal_wrkgp 1 0.00% 97.50% # number of callpals executed +system.cpu.kern.callpal_wrusp 7 0.00% 97.51% # number of callpals executed +system.cpu.kern.callpal_rdusp 10 0.01% 97.51% # number of callpals executed +system.cpu.kern.callpal_whami 2 0.00% 97.51% # number of callpals executed +system.cpu.kern.callpal_rti 3829 2.10% 99.61% # number of callpals executed +system.cpu.kern.callpal_callsys 531 0.29% 99.90% # number of callpals executed +system.cpu.kern.callpal_imb 181 0.10% 100.00% # number of callpals executed system.cpu.kern.inst.arm 0 # number of arm instructions executed -system.cpu.kern.inst.hwrei 209657 # number of hwrei instructions executed +system.cpu.kern.inst.hwrei 202783 # number of hwrei instructions executed system.cpu.kern.inst.ivlb 0 # number of ivlb instructions executed system.cpu.kern.inst.ivle 0 # number of ivle instructions executed -system.cpu.kern.inst.quiesce 1868 # number of quiesce instructions executed -system.cpu.kern.ipl_count 178378 # number of times we switched to this ipl -system.cpu.kern.ipl_count_0 75463 42.31% 42.31% # number of times we switched to this ipl -system.cpu.kern.ipl_count_21 286 0.16% 42.47% # number of times we switched to this ipl -system.cpu.kern.ipl_count_22 5446 3.05% 45.52% # number of times we switched to this ipl -system.cpu.kern.ipl_count_31 97183 54.48% 100.00% # number of times we switched to this ipl -system.cpu.kern.ipl_good 160188 # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_0 75397 47.07% 47.07% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_21 286 0.18% 47.25% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_22 5446 3.40% 50.65% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_31 79059 49.35% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_ticks 3493545167 # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_0 3471576124 99.37% 99.37% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_21 45785 0.00% 99.37% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_22 934362 0.03% 99.40% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_31 20988896 0.60% 100.00% # number of cycles we spent at this ipl -system.cpu.kern.ipl_used 0.898026 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.ipl_used_0 0.999125 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.inst.quiesce 1877 # number of quiesce instructions executed +system.cpu.kern.ipl_count 177218 # number of times we switched to this ipl +system.cpu.kern.ipl_count_0 74624 42.11% 42.11% # number of times we switched to this ipl +system.cpu.kern.ipl_count_21 251 0.14% 42.25% # number of times we switched to this ipl +system.cpu.kern.ipl_count_22 5425 3.06% 45.31% # number of times we switched to this ipl +system.cpu.kern.ipl_count_31 96918 54.69% 100.00% # number of times we switched to this ipl +system.cpu.kern.ipl_good 158463 # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_0 74570 47.06% 47.06% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_21 251 0.16% 47.22% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_22 5425 3.42% 50.64% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_31 78217 49.36% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_ticks 3481725752 # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_0 3459659082 99.37% 99.37% # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_21 39982 0.00% 99.37% # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_22 930159 0.03% 99.39% # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_31 21096529 0.61% 100.00% # number of cycles we spent at this ipl +system.cpu.kern.ipl_used 0.894170 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.ipl_used_0 0.999276 # fraction of swpipl calls that actually changed the ipl system.cpu.kern.ipl_used_21 1 # fraction of swpipl calls that actually changed the ipl system.cpu.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.ipl_used_31 0.813506 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.mode_good_kernel 2342 -system.cpu.kern.mode_good_user 2171 -system.cpu.kern.mode_good_idle 171 -system.cpu.kern.mode_switch_kernel 4092 # number of protection mode switches -system.cpu.kern.mode_switch_user 2171 # number of protection mode switches -system.cpu.kern.mode_switch_idle 2041 # number of protection mode switches -system.cpu.kern.mode_switch_good 0.564066 # fraction of useful protection mode switches -system.cpu.kern.mode_switch_good_kernel 0.572336 # fraction of useful protection mode switches +system.cpu.kern.ipl_used_31 0.807043 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.mode_good_kernel 1939 +system.cpu.kern.mode_good_user 1757 +system.cpu.kern.mode_good_idle 182 +system.cpu.kern.mode_switch_kernel 3320 # number of protection mode switches +system.cpu.kern.mode_switch_user 1757 # number of protection mode switches +system.cpu.kern.mode_switch_idle 2061 # number of protection mode switches +system.cpu.kern.mode_switch_good 0.543289 # fraction of useful protection mode switches +system.cpu.kern.mode_switch_good_kernel 0.584036 # fraction of useful protection mode switches system.cpu.kern.mode_switch_good_user 1 # fraction of useful protection mode switches -system.cpu.kern.mode_switch_good_idle 0.083782 # fraction of useful protection mode switches -system.cpu.kern.mode_ticks_kernel 33028385 0.95% 0.95% # number of ticks spent at the given mode -system.cpu.kern.mode_ticks_user 4450361 0.13% 1.07% # number of ticks spent at the given mode -system.cpu.kern.mode_ticks_idle 3456066419 98.93% 100.00% # number of ticks spent at the given mode -system.cpu.kern.swap_context 1865 # number of times the context was actually changed -system.cpu.kern.syscall 475 # number of syscalls executed -system.cpu.kern.syscall_fork 10 2.11% 2.11% # number of syscalls executed -system.cpu.kern.syscall_read 33 6.95% 9.05% # number of syscalls executed -system.cpu.kern.syscall_write 7 1.47% 10.53% # number of syscalls executed -system.cpu.kern.syscall_close 49 10.32% 20.84% # number of syscalls executed -system.cpu.kern.syscall_chdir 1 0.21% 21.05% # number of syscalls executed -system.cpu.kern.syscall_chmod 1 0.21% 21.26% # number of syscalls executed -system.cpu.kern.syscall_obreak 44 9.26% 30.53% # number of syscalls executed -system.cpu.kern.syscall_lseek 13 2.74% 33.26% # number of syscalls executed -system.cpu.kern.syscall_getpid 10 2.11% 35.37% # number of syscalls executed -system.cpu.kern.syscall_setuid 4 0.84% 36.21% # number of syscalls executed -system.cpu.kern.syscall_getuid 8 1.68% 37.89% # number of syscalls executed -system.cpu.kern.syscall_access 4 0.84% 38.74% # number of syscalls executed -system.cpu.kern.syscall_dup 4 0.84% 39.58% # number of syscalls executed -system.cpu.kern.syscall_open 68 14.32% 53.89% # number of syscalls executed -system.cpu.kern.syscall_getgid 8 1.68% 55.58% # number of syscalls executed -system.cpu.kern.syscall_sigprocmask 14 2.95% 58.53% # number of syscalls executed -system.cpu.kern.syscall_ioctl 16 3.37% 61.89% # number of syscalls executed -system.cpu.kern.syscall_readlink 2 0.42% 62.32% # number of syscalls executed -system.cpu.kern.syscall_execve 8 1.68% 64.00% # number of syscalls executed -system.cpu.kern.syscall_pre_F64_stat 31 6.53% 70.53% # number of syscalls executed -system.cpu.kern.syscall_pre_F64_lstat 1 0.21% 70.74% # number of syscalls executed -system.cpu.kern.syscall_mmap 55 11.58% 82.32% # number of syscalls executed -system.cpu.kern.syscall_munmap 6 1.26% 83.58% # number of syscalls executed -system.cpu.kern.syscall_mprotect 14 2.95% 86.53% # number of syscalls executed -system.cpu.kern.syscall_gethostname 2 0.42% 86.95% # number of syscalls executed -system.cpu.kern.syscall_dup2 4 0.84% 87.79% # number of syscalls executed -system.cpu.kern.syscall_pre_F64_fstat 28 5.89% 93.68% # number of syscalls executed -system.cpu.kern.syscall_fcntl 14 2.95% 96.63% # number of syscalls executed -system.cpu.kern.syscall_socket 3 0.63% 97.26% # number of syscalls executed -system.cpu.kern.syscall_connect 3 0.63% 97.89% # number of syscalls executed -system.cpu.kern.syscall_setgid 4 0.84% 98.74% # number of syscalls executed -system.cpu.kern.syscall_getrlimit 3 0.63% 99.37% # number of syscalls executed -system.cpu.kern.syscall_setsid 3 0.63% 100.00% # number of syscalls executed -system.cpu.not_idle_fraction 0.017156 # Percentage of non-idle cycles -system.cpu.numCycles 59936483 # number of cpu cycles simulated -system.cpu.num_insts 59929520 # Number of instructions executed -system.cpu.num_refs 13982880 # Number of memory references +system.cpu.kern.mode_switch_good_idle 0.088307 # fraction of useful protection mode switches +system.cpu.kern.mode_ticks_kernel 31887159 0.92% 0.92% # number of ticks spent at the given mode +system.cpu.kern.mode_ticks_user 3591270 0.10% 1.02% # number of ticks spent at the given mode +system.cpu.kern.mode_ticks_idle 3446247321 98.98% 100.00% # number of ticks spent at the given mode +system.cpu.kern.swap_context 1575 # number of times the context was actually changed +system.cpu.kern.syscall 329 # number of syscalls executed +system.cpu.kern.syscall_fork 8 2.43% 2.43% # number of syscalls executed +system.cpu.kern.syscall_read 30 9.12% 11.55% # number of syscalls executed +system.cpu.kern.syscall_write 4 1.22% 12.77% # number of syscalls executed +system.cpu.kern.syscall_close 43 13.07% 25.84% # number of syscalls executed +system.cpu.kern.syscall_chdir 1 0.30% 26.14% # number of syscalls executed +system.cpu.kern.syscall_chmod 1 0.30% 26.44% # number of syscalls executed +system.cpu.kern.syscall_obreak 15 4.56% 31.00% # number of syscalls executed +system.cpu.kern.syscall_lseek 10 3.04% 34.04% # number of syscalls executed +system.cpu.kern.syscall_getpid 6 1.82% 35.87% # number of syscalls executed +system.cpu.kern.syscall_setuid 4 1.22% 37.08% # number of syscalls executed +system.cpu.kern.syscall_getuid 6 1.82% 38.91% # number of syscalls executed +system.cpu.kern.syscall_access 11 3.34% 42.25% # number of syscalls executed +system.cpu.kern.syscall_dup 2 0.61% 42.86% # number of syscalls executed +system.cpu.kern.syscall_open 55 16.72% 59.57% # number of syscalls executed +system.cpu.kern.syscall_getgid 6 1.82% 61.40% # number of syscalls executed +system.cpu.kern.syscall_sigprocmask 10 3.04% 64.44% # number of syscalls executed +system.cpu.kern.syscall_ioctl 10 3.04% 67.48% # number of syscalls executed +system.cpu.kern.syscall_readlink 1 0.30% 67.78% # number of syscalls executed +system.cpu.kern.syscall_execve 7 2.13% 69.91% # number of syscalls executed +system.cpu.kern.syscall_mmap 54 16.41% 86.32% # number of syscalls executed +system.cpu.kern.syscall_munmap 3 0.91% 87.23% # number of syscalls executed +system.cpu.kern.syscall_mprotect 16 4.86% 92.10% # number of syscalls executed +system.cpu.kern.syscall_gethostname 1 0.30% 92.40% # number of syscalls executed +system.cpu.kern.syscall_dup2 3 0.91% 93.31% # number of syscalls executed +system.cpu.kern.syscall_fcntl 10 3.04% 96.35% # number of syscalls executed +system.cpu.kern.syscall_socket 2 0.61% 96.96% # number of syscalls executed +system.cpu.kern.syscall_connect 2 0.61% 97.57% # number of syscalls executed +system.cpu.kern.syscall_setgid 4 1.22% 98.78% # number of syscalls executed +system.cpu.kern.syscall_getrlimit 2 0.61% 99.39% # number of syscalls executed +system.cpu.kern.syscall_setsid 2 0.61% 100.00% # number of syscalls executed +system.cpu.not_idle_fraction 0.016660 # Percentage of non-idle cycles +system.cpu.numCycles 58006987 # number of cpu cycles simulated +system.cpu.num_insts 58001813 # Number of instructions executed +system.cpu.num_refs 13757191 # Number of memory references system.disk0.dma_read_bytes 1024 # Number of bytes transfered via DMA reads (not PRD). system.disk0.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk0.dma_read_txs 1 # Number of DMA read transactions (not PRD). -system.disk0.dma_write_bytes 2521088 # Number of bytes transfered via DMA writes. -system.disk0.dma_write_full_pages 285 # Number of full page size DMA writes. -system.disk0.dma_write_txs 375 # Number of DMA write transactions. +system.disk0.dma_write_bytes 2735104 # Number of bytes transfered via DMA writes. +system.disk0.dma_write_full_pages 306 # Number of full page size DMA writes. +system.disk0.dma_write_txs 412 # Number of DMA write transactions. system.disk2.dma_read_bytes 0 # Number of bytes transfered via DMA reads (not PRD). system.disk2.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk2.dma_read_txs 0 # Number of DMA read transactions (not PRD). diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout index c04cd5050..b3b3e8704 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout @@ -5,8 +5,8 @@ The Regents of The University of Michigan All Rights Reserved -M5 compiled Sep 5 2006 15:32:34 -M5 started Tue Sep 5 15:42:26 2006 +M5 compiled Oct 5 2006 22:13:02 +M5 started Fri Oct 6 00:23:19 2006 M5 executing on zizzer.eecs.umich.edu command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-atomic -Exiting @ tick 3493545624 because m5_exit instruction encountered +Exiting @ tick 3481726167 because m5_exit instruction encountered diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini index 97e9007e7..65401b549 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini @@ -58,6 +58,7 @@ mem_mode=timing pal=/dist/m5/system/binaries/ts_osfpal physmem=system.physmem readfile=tests/halt.sh +symbolfile= system_rev=1024 system_type=34 @@ -86,6 +87,7 @@ max_loads_all_threads=0 max_loads_any_thread=0 mem=system.physmem profile=0 +progress_interval=0 system=system dcache_port=system.membus.port[3] icache_port=system.membus.port[2] @@ -114,6 +116,7 @@ max_loads_all_threads=0 max_loads_any_thread=0 mem=system.physmem profile=0 +progress_interval=0 system=system dcache_port=system.membus.port[5] icache_port=system.membus.port[4] @@ -580,6 +583,7 @@ pio=system.iobus.port[24] [trace] bufsize=0 +cycle=0 dump_on_exit=false file=cout flags= diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out index 96c734e15..ed03e445d 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out @@ -21,6 +21,7 @@ console=/dist/m5/system/binaries/console pal=/dist/m5/system/binaries/ts_osfpal boot_osflags=root=/dev/hda1 console=ttyS0 readfile=tests/halt.sh +symbolfile= init_param=0 system_type=34 system_rev=1024 @@ -86,6 +87,7 @@ max_insts_any_thread=0 max_insts_all_threads=0 max_loads_any_thread=0 max_loads_all_threads=0 +progress_interval=0 mem=system.physmem system=system itb=system.cpu0.itb @@ -113,6 +115,7 @@ max_insts_any_thread=0 max_insts_all_threads=0 max_loads_any_thread=0 max_loads_all_threads=0 +progress_interval=0 mem=system.physmem system=system itb=system.cpu1.itb @@ -492,6 +495,7 @@ bus_id=0 [trace] flags= start=0 +cycle=0 bufsize=0 file=cout dump_on_exit=false @@ -535,6 +539,9 @@ trace_system=client [debug] break_cycles= +[statsreset] +reset_cycle=0 + [pseudo_inst] quiesce=true statistics=true diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/console.system.sim_console b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/console.system.sim_console index c3c7b2676..4a397ddbf 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/console.system.sim_console +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/console.system.sim_console @@ -74,7 +74,7 @@ SlaveCmd: restart FFFFFC0000310020 FFFFFC0000310020 vptb FFFFFFFE00000000 my_rpb
hdb: M5 IDE Disk, ATA DISK drive
ide0 at 0x8410-0x8417,0x8422 on irq 31
hda: max request size: 128KiB -
hda: 163296 sectors (83 MB), CHS=162/16/63, UDMA(33) +
hda: 511056 sectors (261 MB), CHS=507/16/63, UDMA(33)
hda: hda1
hdb: max request size: 128KiB
hdb: 4177920 sectors (2139 MB), CHS=4144/16/63, UDMA(33) @@ -102,10 +102,6 @@ SlaveCmd: restart FFFFFC0000310020 FFFFFC0000310020 vptb FFFFFFFE00000000 my_rpb
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 480k freed -
init started: BusyBox v1.00-rc2 (2004.11.18-16:22+0000) multi-call binary - -PTXdist-0.7.0 (2004-11-18T11:23:40-0500) - +
init started: BusyBox v1.1.0 (2006.08.17-02:54+0000) multi-call binary mounting filesystems... -EXT2-fs warning: checktime reached, running e2fsck is recommended -
loading script... +loading script... diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt index 666766e20..bf7320067 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt @@ -1,239 +1,232 @@ ---------- Begin Simulation Statistics ---------- -host_inst_rate 804715 # Simulator instruction rate (inst/s) -host_mem_usage 194628 # Number of bytes of host memory used -host_seconds 78.40 # Real time elapsed on the host -host_tick_rate 45146741 # Simulator tick rate (ticks/s) +host_inst_rate 825990 # Simulator instruction rate (inst/s) +host_mem_usage 193572 # Number of bytes of host memory used +host_seconds 74.01 # Real time elapsed on the host +host_tick_rate 47654938 # Simulator tick rate (ticks/s) sim_freq 2000000000 # Frequency of simulated ticks -sim_insts 63088076 # Number of instructions simulated -sim_seconds 1.769718 # Number of seconds simulated -sim_ticks 3539435029 # Number of ticks simulated -system.cpu0.dtb.accesses 1831687 # DTB accesses -system.cpu0.dtb.acv 360 # DTB access violations -system.cpu0.dtb.hits 10286150 # DTB hits -system.cpu0.dtb.misses 11050 # DTB misses -system.cpu0.dtb.read_accesses 495437 # DTB read accesses -system.cpu0.dtb.read_acv 219 # DTB read access violations -system.cpu0.dtb.read_hits 5741423 # DTB read hits -system.cpu0.dtb.read_misses 9036 # DTB read misses -system.cpu0.dtb.write_accesses 1336250 # DTB write accesses -system.cpu0.dtb.write_acv 141 # DTB write access violations -system.cpu0.dtb.write_hits 4544727 # DTB write hits -system.cpu0.dtb.write_misses 2014 # DTB write misses -system.cpu0.idle_fraction 0.984526 # Percentage of idle cycles -system.cpu0.itb.accesses 2328068 # ITB accesses -system.cpu0.itb.acv 216 # ITB acv -system.cpu0.itb.hits 2323500 # ITB hits -system.cpu0.itb.misses 4568 # ITB misses -system.cpu0.kern.callpal 145575 # number of callpals executed +sim_insts 61131962 # Number of instructions simulated +sim_seconds 1.763494 # Number of seconds simulated +sim_ticks 3526987181 # Number of ticks simulated +system.cpu0.dtb.accesses 1987164 # DTB accesses +system.cpu0.dtb.acv 291 # DTB access violations +system.cpu0.dtb.hits 10431590 # DTB hits +system.cpu0.dtb.misses 9590 # DTB misses +system.cpu0.dtb.read_accesses 606328 # DTB read accesses +system.cpu0.dtb.read_acv 174 # DTB read access violations +system.cpu0.dtb.read_hits 5831565 # DTB read hits +system.cpu0.dtb.read_misses 7663 # DTB read misses +system.cpu0.dtb.write_accesses 1380836 # DTB write accesses +system.cpu0.dtb.write_acv 117 # DTB write access violations +system.cpu0.dtb.write_hits 4600025 # DTB write hits +system.cpu0.dtb.write_misses 1927 # DTB write misses +system.cpu0.idle_fraction 0.984514 # Percentage of idle cycles +system.cpu0.itb.accesses 2372045 # ITB accesses +system.cpu0.itb.acv 143 # ITB acv +system.cpu0.itb.hits 2368331 # ITB hits +system.cpu0.itb.misses 3714 # ITB misses +system.cpu0.kern.callpal 145084 # number of callpals executed system.cpu0.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed -system.cpu0.kern.callpal_wripir 45 0.03% 0.03% # number of callpals executed -system.cpu0.kern.callpal_wrmces 1 0.00% 0.03% # number of callpals executed -system.cpu0.kern.callpal_wrfen 1 0.00% 0.03% # number of callpals executed -system.cpu0.kern.callpal_wrvptptr 1 0.00% 0.03% # number of callpals executed -system.cpu0.kern.callpal_swpctx 1334 0.92% 0.95% # number of callpals executed -system.cpu0.kern.callpal_tbi 20 0.01% 0.96% # number of callpals executed -system.cpu0.kern.callpal_wrent 7 0.00% 0.97% # number of callpals executed -system.cpu0.kern.callpal_swpipl 135235 92.90% 93.87% # number of callpals executed -system.cpu0.kern.callpal_rdps 4594 3.16% 97.02% # number of callpals executed -system.cpu0.kern.callpal_wrkgp 1 0.00% 97.02% # number of callpals executed -system.cpu0.kern.callpal_wrusp 4 0.00% 97.02% # number of callpals executed -system.cpu0.kern.callpal_rdusp 11 0.01% 97.03% # number of callpals executed -system.cpu0.kern.callpal_whami 2 0.00% 97.03% # number of callpals executed -system.cpu0.kern.callpal_rti 3660 2.51% 99.55% # number of callpals executed -system.cpu0.kern.callpal_callsys 461 0.32% 99.86% # number of callpals executed -system.cpu0.kern.callpal_imb 197 0.14% 100.00% # number of callpals executed +system.cpu0.kern.callpal_wripir 54 0.04% 0.04% # number of callpals executed +system.cpu0.kern.callpal_wrmces 1 0.00% 0.04% # number of callpals executed +system.cpu0.kern.callpal_wrfen 1 0.00% 0.04% # number of callpals executed +system.cpu0.kern.callpal_wrvptptr 1 0.00% 0.04% # number of callpals executed +system.cpu0.kern.callpal_swpctx 1182 0.81% 0.85% # number of callpals executed +system.cpu0.kern.callpal_tbi 42 0.03% 0.88% # number of callpals executed +system.cpu0.kern.callpal_wrent 7 0.00% 0.89% # number of callpals executed +system.cpu0.kern.callpal_swpipl 135050 93.08% 93.97% # number of callpals executed +system.cpu0.kern.callpal_rdps 4795 3.30% 97.28% # number of callpals executed +system.cpu0.kern.callpal_wrkgp 1 0.00% 97.28% # number of callpals executed +system.cpu0.kern.callpal_wrusp 5 0.00% 97.28% # number of callpals executed +system.cpu0.kern.callpal_rdusp 8 0.01% 97.29% # number of callpals executed +system.cpu0.kern.callpal_whami 2 0.00% 97.29% # number of callpals executed +system.cpu0.kern.callpal_rti 3431 2.36% 99.65% # number of callpals executed +system.cpu0.kern.callpal_callsys 364 0.25% 99.90% # number of callpals executed +system.cpu0.kern.callpal_imb 139 0.10% 100.00% # number of callpals executed system.cpu0.kern.inst.arm 0 # number of arm instructions executed -system.cpu0.kern.inst.hwrei 163916 # number of hwrei instructions executed +system.cpu0.kern.inst.hwrei 160926 # number of hwrei instructions executed system.cpu0.kern.inst.ivlb 0 # number of ivlb instructions executed system.cpu0.kern.inst.ivle 0 # number of ivle instructions executed -system.cpu0.kern.inst.quiesce 1952 # number of quiesce instructions executed -system.cpu0.kern.ipl_count 141041 # number of times we switched to this ipl -system.cpu0.kern.ipl_count_0 56950 40.38% 40.38% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_21 286 0.20% 40.58% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_22 5513 3.91% 44.49% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_30 52 0.04% 44.53% # number of times we switched to this ipl -system.cpu0.kern.ipl_count_31 78240 55.47% 100.00% # number of times we switched to this ipl -system.cpu0.kern.ipl_good 123339 # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_0 56917 46.15% 46.15% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_21 286 0.23% 46.38% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_22 5513 4.47% 50.85% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_30 52 0.04% 50.89% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_good_31 60571 49.11% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu0.kern.ipl_ticks 3539063979 # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_0 3513499166 99.28% 99.28% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_21 60705 0.00% 99.28% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_22 1354114 0.04% 99.32% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_30 18748 0.00% 99.32% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_ticks_31 24131246 0.68% 100.00% # number of cycles we spent at this ipl -system.cpu0.kern.ipl_used 0.874490 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.ipl_used_0 0.999421 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.inst.quiesce 1958 # number of quiesce instructions executed +system.cpu0.kern.ipl_count 140584 # number of times we switched to this ipl +system.cpu0.kern.ipl_count_0 56549 40.22% 40.22% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_21 251 0.18% 40.40% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_22 5487 3.90% 44.31% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_30 51 0.04% 44.34% # number of times we switched to this ipl +system.cpu0.kern.ipl_count_31 78246 55.66% 100.00% # number of times we switched to this ipl +system.cpu0.kern.ipl_good 122461 # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_0 56518 46.15% 46.15% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_21 251 0.20% 46.36% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_22 5487 4.48% 50.84% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_30 51 0.04% 50.88% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_good_31 60154 49.12% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu0.kern.ipl_ticks 3526986735 # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_0 3501352281 99.27% 99.27% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_21 53019 0.00% 99.27% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_22 1348211 0.04% 99.31% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_30 18326 0.00% 99.31% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_ticks_31 24214898 0.69% 100.00% # number of cycles we spent at this ipl +system.cpu0.kern.ipl_used 0.871088 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.ipl_used_0 0.999452 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_21 1 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl system.cpu0.kern.ipl_used_30 1 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.ipl_used_31 0.774169 # fraction of swpipl calls that actually changed the ipl -system.cpu0.kern.mode_good_kernel 1632 -system.cpu0.kern.mode_good_user 1487 -system.cpu0.kern.mode_good_idle 145 -system.cpu0.kern.mode_switch_kernel 2857 # number of protection mode switches -system.cpu0.kern.mode_switch_user 1487 # number of protection mode switches -system.cpu0.kern.mode_switch_idle 2125 # number of protection mode switches -system.cpu0.kern.mode_switch_good 0.504560 # fraction of useful protection mode switches -system.cpu0.kern.mode_switch_good_kernel 0.571229 # fraction of useful protection mode switches +system.cpu0.kern.ipl_used_31 0.768781 # fraction of swpipl calls that actually changed the ipl +system.cpu0.kern.mode_good_kernel 1448 +system.cpu0.kern.mode_good_user 1300 +system.cpu0.kern.mode_good_idle 148 +system.cpu0.kern.mode_switch_kernel 2490 # number of protection mode switches +system.cpu0.kern.mode_switch_user 1300 # number of protection mode switches +system.cpu0.kern.mode_switch_idle 2110 # number of protection mode switches +system.cpu0.kern.mode_switch_good 0.490847 # fraction of useful protection mode switches +system.cpu0.kern.mode_switch_good_kernel 0.581526 # fraction of useful protection mode switches system.cpu0.kern.mode_switch_good_user 1 # fraction of useful protection mode switches -system.cpu0.kern.mode_switch_good_idle 0.068235 # fraction of useful protection mode switches -system.cpu0.kern.mode_ticks_kernel 23634401 0.67% 0.67% # number of ticks spent at the given mode -system.cpu0.kern.mode_ticks_user 3241731 0.09% 0.76% # number of ticks spent at the given mode -system.cpu0.kern.mode_ticks_idle 3511854943 99.24% 100.00% # number of ticks spent at the given mode -system.cpu0.kern.swap_context 1335 # number of times the context was actually changed -system.cpu0.kern.syscall 312 # number of syscalls executed -system.cpu0.kern.syscall_fork 9 2.88% 2.88% # number of syscalls executed -system.cpu0.kern.syscall_read 20 6.41% 9.29% # number of syscalls executed -system.cpu0.kern.syscall_write 6 1.92% 11.22% # number of syscalls executed -system.cpu0.kern.syscall_close 36 11.54% 22.76% # number of syscalls executed -system.cpu0.kern.syscall_chdir 1 0.32% 23.08% # number of syscalls executed -system.cpu0.kern.syscall_chmod 1 0.32% 23.40% # number of syscalls executed -system.cpu0.kern.syscall_obreak 26 8.33% 31.73% # number of syscalls executed -system.cpu0.kern.syscall_lseek 9 2.88% 34.62% # number of syscalls executed -system.cpu0.kern.syscall_getpid 8 2.56% 37.18% # number of syscalls executed -system.cpu0.kern.syscall_setuid 2 0.64% 37.82% # number of syscalls executed -system.cpu0.kern.syscall_getuid 4 1.28% 39.10% # number of syscalls executed -system.cpu0.kern.syscall_access 4 1.28% 40.38% # number of syscalls executed -system.cpu0.kern.syscall_dup 4 1.28% 41.67% # number of syscalls executed -system.cpu0.kern.syscall_open 40 12.82% 54.49% # number of syscalls executed -system.cpu0.kern.syscall_getgid 4 1.28% 55.77% # number of syscalls executed -system.cpu0.kern.syscall_sigprocmask 12 3.85% 59.62% # number of syscalls executed -system.cpu0.kern.syscall_ioctl 13 4.17% 63.78% # number of syscalls executed -system.cpu0.kern.syscall_readlink 1 0.32% 64.10% # number of syscalls executed -system.cpu0.kern.syscall_execve 7 2.24% 66.35% # number of syscalls executed -system.cpu0.kern.syscall_pre_F64_stat 22 7.05% 73.40% # number of syscalls executed -system.cpu0.kern.syscall_pre_F64_lstat 1 0.32% 73.72% # number of syscalls executed -system.cpu0.kern.syscall_mmap 28 8.97% 82.69% # number of syscalls executed -system.cpu0.kern.syscall_munmap 4 1.28% 83.97% # number of syscalls executed -system.cpu0.kern.syscall_mprotect 7 2.24% 86.22% # number of syscalls executed -system.cpu0.kern.syscall_gethostname 1 0.32% 86.54% # number of syscalls executed -system.cpu0.kern.syscall_dup2 3 0.96% 87.50% # number of syscalls executed -system.cpu0.kern.syscall_pre_F64_fstat 15 4.81% 92.31% # number of syscalls executed -system.cpu0.kern.syscall_fcntl 11 3.53% 95.83% # number of syscalls executed -system.cpu0.kern.syscall_socket 3 0.96% 96.79% # number of syscalls executed -system.cpu0.kern.syscall_connect 3 0.96% 97.76% # number of syscalls executed -system.cpu0.kern.syscall_setgid 2 0.64% 98.40% # number of syscalls executed -system.cpu0.kern.syscall_getrlimit 2 0.64% 99.04% # number of syscalls executed -system.cpu0.kern.syscall_setsid 3 0.96% 100.00% # number of syscalls executed -system.cpu0.not_idle_fraction 0.015474 # Percentage of non-idle cycles +system.cpu0.kern.mode_switch_good_idle 0.070142 # fraction of useful protection mode switches +system.cpu0.kern.mode_ticks_kernel 23256451 0.66% 0.66% # number of ticks spent at the given mode +system.cpu0.kern.mode_ticks_user 3397192 0.10% 0.76% # number of ticks spent at the given mode +system.cpu0.kern.mode_ticks_idle 3500333090 99.24% 100.00% # number of ticks spent at the given mode +system.cpu0.kern.swap_context 1183 # number of times the context was actually changed +system.cpu0.kern.syscall 231 # number of syscalls executed +system.cpu0.kern.syscall_fork 6 2.60% 2.60% # number of syscalls executed +system.cpu0.kern.syscall_read 17 7.36% 9.96% # number of syscalls executed +system.cpu0.kern.syscall_write 4 1.73% 11.69% # number of syscalls executed +system.cpu0.kern.syscall_close 31 13.42% 25.11% # number of syscalls executed +system.cpu0.kern.syscall_chdir 1 0.43% 25.54% # number of syscalls executed +system.cpu0.kern.syscall_obreak 11 4.76% 30.30% # number of syscalls executed +system.cpu0.kern.syscall_lseek 6 2.60% 32.90% # number of syscalls executed +system.cpu0.kern.syscall_getpid 4 1.73% 34.63% # number of syscalls executed +system.cpu0.kern.syscall_setuid 2 0.87% 35.50% # number of syscalls executed +system.cpu0.kern.syscall_getuid 4 1.73% 37.23% # number of syscalls executed +system.cpu0.kern.syscall_access 9 3.90% 41.13% # number of syscalls executed +system.cpu0.kern.syscall_dup 2 0.87% 41.99% # number of syscalls executed +system.cpu0.kern.syscall_open 42 18.18% 60.17% # number of syscalls executed +system.cpu0.kern.syscall_getgid 4 1.73% 61.90% # number of syscalls executed +system.cpu0.kern.syscall_sigprocmask 7 3.03% 64.94% # number of syscalls executed +system.cpu0.kern.syscall_ioctl 9 3.90% 68.83% # number of syscalls executed +system.cpu0.kern.syscall_readlink 1 0.43% 69.26% # number of syscalls executed +system.cpu0.kern.syscall_execve 4 1.73% 71.00% # number of syscalls executed +system.cpu0.kern.syscall_mmap 35 15.15% 86.15% # number of syscalls executed +system.cpu0.kern.syscall_munmap 2 0.87% 87.01% # number of syscalls executed +system.cpu0.kern.syscall_mprotect 10 4.33% 91.34% # number of syscalls executed +system.cpu0.kern.syscall_gethostname 1 0.43% 91.77% # number of syscalls executed +system.cpu0.kern.syscall_dup2 2 0.87% 92.64% # number of syscalls executed +system.cpu0.kern.syscall_fcntl 8 3.46% 96.10% # number of syscalls executed +system.cpu0.kern.syscall_socket 2 0.87% 96.97% # number of syscalls executed +system.cpu0.kern.syscall_connect 2 0.87% 97.84% # number of syscalls executed +system.cpu0.kern.syscall_setgid 2 0.87% 98.70% # number of syscalls executed +system.cpu0.kern.syscall_getrlimit 1 0.43% 99.13% # number of syscalls executed +system.cpu0.kern.syscall_setsid 2 0.87% 100.00% # number of syscalls executed +system.cpu0.not_idle_fraction 0.015486 # Percentage of non-idle cycles system.cpu0.numCycles 0 # number of cpu cycles simulated -system.cpu0.num_insts 44447414 # Number of instructions executed -system.cpu0.num_refs 10321518 # Number of memory references -system.cpu1.dtb.accesses 524398 # DTB accesses -system.cpu1.dtb.acv 60 # DTB access violations -system.cpu1.dtb.hits 4612716 # DTB hits -system.cpu1.dtb.misses 5263 # DTB misses -system.cpu1.dtb.read_accesses 337746 # DTB read accesses -system.cpu1.dtb.read_acv 23 # DTB read access violations -system.cpu1.dtb.read_hits 2649302 # DTB read hits -system.cpu1.dtb.read_misses 4766 # DTB read misses -system.cpu1.dtb.write_accesses 186652 # DTB write accesses -system.cpu1.dtb.write_acv 37 # DTB write access violations -system.cpu1.dtb.write_hits 1963414 # DTB write hits -system.cpu1.dtb.write_misses 497 # DTB write misses -system.cpu1.idle_fraction 0.993423 # Percentage of idle cycles -system.cpu1.itb.accesses 1711918 # ITB accesses -system.cpu1.itb.acv 23 # ITB acv -system.cpu1.itb.hits 1709683 # ITB hits -system.cpu1.itb.misses 2235 # ITB misses -system.cpu1.kern.callpal 58341 # number of callpals executed +system.cpu0.num_insts 44155958 # Number of instructions executed +system.cpu0.num_refs 10463340 # Number of memory references +system.cpu1.dtb.accesses 323344 # DTB accesses +system.cpu1.dtb.acv 82 # DTB access violations +system.cpu1.dtb.hits 4234985 # DTB hits +system.cpu1.dtb.misses 2977 # DTB misses +system.cpu1.dtb.read_accesses 222873 # DTB read accesses +system.cpu1.dtb.read_acv 36 # DTB read access violations +system.cpu1.dtb.read_hits 2431648 # DTB read hits +system.cpu1.dtb.read_misses 2698 # DTB read misses +system.cpu1.dtb.write_accesses 100471 # DTB write accesses +system.cpu1.dtb.write_acv 46 # DTB write access violations +system.cpu1.dtb.write_hits 1803337 # DTB write hits +system.cpu1.dtb.write_misses 279 # DTB write misses +system.cpu1.idle_fraction 0.993979 # Percentage of idle cycles +system.cpu1.itb.accesses 912010 # ITB accesses +system.cpu1.itb.acv 41 # ITB acv +system.cpu1.itb.hits 910678 # ITB hits +system.cpu1.itb.misses 1332 # ITB misses +system.cpu1.kern.callpal 57529 # number of callpals executed system.cpu1.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed -system.cpu1.kern.callpal_wripir 52 0.09% 0.09% # number of callpals executed +system.cpu1.kern.callpal_wripir 51 0.09% 0.09% # number of callpals executed system.cpu1.kern.callpal_wrmces 1 0.00% 0.09% # number of callpals executed system.cpu1.kern.callpal_wrfen 1 0.00% 0.09% # number of callpals executed -system.cpu1.kern.callpal_swpctx 588 1.01% 1.10% # number of callpals executed -system.cpu1.kern.callpal_tbi 7 0.01% 1.11% # number of callpals executed -system.cpu1.kern.callpal_wrent 7 0.01% 1.13% # number of callpals executed -system.cpu1.kern.callpal_swpipl 54562 93.52% 94.65% # number of callpals executed -system.cpu1.kern.callpal_rdps 217 0.37% 95.02% # number of callpals executed -system.cpu1.kern.callpal_wrkgp 1 0.00% 95.02% # number of callpals executed -system.cpu1.kern.callpal_wrusp 4 0.01% 95.03% # number of callpals executed -system.cpu1.kern.callpal_rdusp 1 0.00% 95.03% # number of callpals executed -system.cpu1.kern.callpal_whami 3 0.01% 95.04% # number of callpals executed -system.cpu1.kern.callpal_rti 2571 4.41% 99.44% # number of callpals executed -system.cpu1.kern.callpal_callsys 208 0.36% 99.80% # number of callpals executed -system.cpu1.kern.callpal_imb 116 0.20% 100.00% # number of callpals executed +system.cpu1.kern.callpal_swpctx 451 0.78% 0.88% # number of callpals executed +system.cpu1.kern.callpal_tbi 12 0.02% 0.90% # number of callpals executed +system.cpu1.kern.callpal_wrent 7 0.01% 0.91% # number of callpals executed +system.cpu1.kern.callpal_swpipl 54081 94.01% 94.92% # number of callpals executed +system.cpu1.kern.callpal_rdps 368 0.64% 95.56% # number of callpals executed +system.cpu1.kern.callpal_wrkgp 1 0.00% 95.56% # number of callpals executed +system.cpu1.kern.callpal_wrusp 2 0.00% 95.56% # number of callpals executed +system.cpu1.kern.callpal_rdusp 2 0.00% 95.57% # number of callpals executed +system.cpu1.kern.callpal_whami 3 0.01% 95.57% # number of callpals executed +system.cpu1.kern.callpal_rti 2337 4.06% 99.63% # number of callpals executed +system.cpu1.kern.callpal_callsys 169 0.29% 99.93% # number of callpals executed +system.cpu1.kern.callpal_imb 41 0.07% 100.00% # number of callpals executed system.cpu1.kern.callpal_rdunique 1 0.00% 100.00% # number of callpals executed system.cpu1.kern.inst.arm 0 # number of arm instructions executed -system.cpu1.kern.inst.hwrei 67770 # number of hwrei instructions executed +system.cpu1.kern.inst.hwrei 63811 # number of hwrei instructions executed system.cpu1.kern.inst.ivlb 0 # number of ivlb instructions executed system.cpu1.kern.inst.ivle 0 # number of ivle instructions executed -system.cpu1.kern.inst.quiesce 1892 # number of quiesce instructions executed -system.cpu1.kern.ipl_count 58980 # number of times we switched to this ipl -system.cpu1.kern.ipl_count_0 25467 43.18% 43.18% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_22 5476 9.28% 52.46% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_30 45 0.08% 52.54% # number of times we switched to this ipl -system.cpu1.kern.ipl_count_31 27992 47.46% 100.00% # number of times we switched to this ipl -system.cpu1.kern.ipl_good 58199 # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_0 25424 43.68% 43.68% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_22 5476 9.41% 53.09% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_30 45 0.08% 53.17% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_good_31 27254 46.83% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu1.kern.ipl_ticks 3539434499 # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_0 3510645847 99.19% 99.19% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_22 1415637 0.04% 99.23% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_30 16792 0.00% 99.23% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_ticks_31 27356223 0.77% 100.00% # number of cycles we spent at this ipl -system.cpu1.kern.ipl_used 0.986758 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.ipl_used_0 0.998312 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.inst.quiesce 1898 # number of quiesce instructions executed +system.cpu1.kern.ipl_count 58267 # number of times we switched to this ipl +system.cpu1.kern.ipl_count_0 25040 42.97% 42.97% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_22 5452 9.36% 52.33% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_30 54 0.09% 52.42% # number of times we switched to this ipl +system.cpu1.kern.ipl_count_31 27721 47.58% 100.00% # number of times we switched to this ipl +system.cpu1.kern.ipl_good 57331 # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_0 25007 43.62% 43.62% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_22 5452 9.51% 53.13% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_30 54 0.09% 53.22% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_good_31 26818 46.78% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu1.kern.ipl_ticks 3526422675 # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_0 3497592433 99.18% 99.18% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_22 1410084 0.04% 99.22% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_30 19740 0.00% 99.22% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_ticks_31 27400418 0.78% 100.00% # number of cycles we spent at this ipl +system.cpu1.kern.ipl_used 0.983936 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.ipl_used_0 0.998682 # fraction of swpipl calls that actually changed the ipl system.cpu1.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl system.cpu1.kern.ipl_used_30 1 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.ipl_used_31 0.973635 # fraction of swpipl calls that actually changed the ipl -system.cpu1.kern.mode_good_kernel 690 -system.cpu1.kern.mode_good_user 691 +system.cpu1.kern.ipl_used_31 0.967425 # fraction of swpipl calls that actually changed the ipl +system.cpu1.kern.mode_good_kernel 465 +system.cpu1.kern.mode_good_user 465 system.cpu1.kern.mode_good_idle 0 -system.cpu1.kern.mode_switch_kernel 3141 # number of protection mode switches -system.cpu1.kern.mode_switch_user 691 # number of protection mode switches +system.cpu1.kern.mode_switch_kernel 2771 # number of protection mode switches +system.cpu1.kern.mode_switch_user 465 # number of protection mode switches system.cpu1.kern.mode_switch_idle 0 # number of protection mode switches -system.cpu1.kern.mode_switch_good 0.360386 # fraction of useful protection mode switches -system.cpu1.kern.mode_switch_good_kernel 0.219675 # fraction of useful protection mode switches +system.cpu1.kern.mode_switch_good 0.287392 # fraction of useful protection mode switches +system.cpu1.kern.mode_switch_good_kernel 0.167809 # fraction of useful protection mode switches system.cpu1.kern.mode_switch_good_user 1 # fraction of useful protection mode switches -system.cpu1.kern.mode_switch_good_idle <err: div-0> # fraction of useful protection mode switches -system.cpu1.kern.mode_ticks_kernel 3537141786 99.94% 99.94% # number of ticks spent at the given mode -system.cpu1.kern.mode_ticks_user 2292711 0.06% 100.00% # number of ticks spent at the given mode +system.cpu1.kern.mode_switch_good_idle no value # fraction of useful protection mode switches +system.cpu1.kern.mode_ticks_kernel 3525066043 99.96% 99.96% # number of ticks spent at the given mode +system.cpu1.kern.mode_ticks_user 1294184 0.04% 100.00% # number of ticks spent at the given mode system.cpu1.kern.mode_ticks_idle 0 0.00% 100.00% # number of ticks spent at the given mode -system.cpu1.kern.swap_context 589 # number of times the context was actually changed -system.cpu1.kern.syscall 163 # number of syscalls executed -system.cpu1.kern.syscall_fork 1 0.61% 0.61% # number of syscalls executed -system.cpu1.kern.syscall_read 13 7.98% 8.59% # number of syscalls executed -system.cpu1.kern.syscall_write 1 0.61% 9.20% # number of syscalls executed -system.cpu1.kern.syscall_close 13 7.98% 17.18% # number of syscalls executed -system.cpu1.kern.syscall_obreak 18 11.04% 28.22% # number of syscalls executed -system.cpu1.kern.syscall_lseek 4 2.45% 30.67% # number of syscalls executed -system.cpu1.kern.syscall_getpid 2 1.23% 31.90% # number of syscalls executed -system.cpu1.kern.syscall_setuid 2 1.23% 33.13% # number of syscalls executed -system.cpu1.kern.syscall_getuid 4 2.45% 35.58% # number of syscalls executed -system.cpu1.kern.syscall_open 28 17.18% 52.76% # number of syscalls executed -system.cpu1.kern.syscall_getgid 4 2.45% 55.21% # number of syscalls executed -system.cpu1.kern.syscall_sigprocmask 2 1.23% 56.44% # number of syscalls executed -system.cpu1.kern.syscall_ioctl 3 1.84% 58.28% # number of syscalls executed -system.cpu1.kern.syscall_readlink 1 0.61% 58.90% # number of syscalls executed -system.cpu1.kern.syscall_execve 1 0.61% 59.51% # number of syscalls executed -system.cpu1.kern.syscall_pre_F64_stat 9 5.52% 65.03% # number of syscalls executed -system.cpu1.kern.syscall_mmap 27 16.56% 81.60% # number of syscalls executed -system.cpu1.kern.syscall_munmap 2 1.23% 82.82% # number of syscalls executed -system.cpu1.kern.syscall_mprotect 7 4.29% 87.12% # number of syscalls executed -system.cpu1.kern.syscall_gethostname 1 0.61% 87.73% # number of syscalls executed -system.cpu1.kern.syscall_dup2 1 0.61% 88.34% # number of syscalls executed -system.cpu1.kern.syscall_pre_F64_fstat 13 7.98% 96.32% # number of syscalls executed -system.cpu1.kern.syscall_fcntl 3 1.84% 98.16% # number of syscalls executed -system.cpu1.kern.syscall_setgid 2 1.23% 99.39% # number of syscalls executed -system.cpu1.kern.syscall_getrlimit 1 0.61% 100.00% # number of syscalls executed -system.cpu1.not_idle_fraction 0.006577 # Percentage of non-idle cycles +system.cpu1.kern.swap_context 452 # number of times the context was actually changed +system.cpu1.kern.syscall 98 # number of syscalls executed +system.cpu1.kern.syscall_fork 2 2.04% 2.04% # number of syscalls executed +system.cpu1.kern.syscall_read 13 13.27% 15.31% # number of syscalls executed +system.cpu1.kern.syscall_close 12 12.24% 27.55% # number of syscalls executed +system.cpu1.kern.syscall_chmod 1 1.02% 28.57% # number of syscalls executed +system.cpu1.kern.syscall_obreak 4 4.08% 32.65% # number of syscalls executed +system.cpu1.kern.syscall_lseek 4 4.08% 36.73% # number of syscalls executed +system.cpu1.kern.syscall_getpid 2 2.04% 38.78% # number of syscalls executed +system.cpu1.kern.syscall_setuid 2 2.04% 40.82% # number of syscalls executed +system.cpu1.kern.syscall_getuid 2 2.04% 42.86% # number of syscalls executed +system.cpu1.kern.syscall_access 2 2.04% 44.90% # number of syscalls executed +system.cpu1.kern.syscall_open 13 13.27% 58.16% # number of syscalls executed +system.cpu1.kern.syscall_getgid 2 2.04% 60.20% # number of syscalls executed +system.cpu1.kern.syscall_sigprocmask 3 3.06% 63.27% # number of syscalls executed +system.cpu1.kern.syscall_ioctl 1 1.02% 64.29% # number of syscalls executed +system.cpu1.kern.syscall_execve 3 3.06% 67.35% # number of syscalls executed +system.cpu1.kern.syscall_mmap 19 19.39% 86.73% # number of syscalls executed +system.cpu1.kern.syscall_munmap 1 1.02% 87.76% # number of syscalls executed +system.cpu1.kern.syscall_mprotect 6 6.12% 93.88% # number of syscalls executed +system.cpu1.kern.syscall_dup2 1 1.02% 94.90% # number of syscalls executed +system.cpu1.kern.syscall_fcntl 2 2.04% 96.94% # number of syscalls executed +system.cpu1.kern.syscall_setgid 2 2.04% 98.98% # number of syscalls executed +system.cpu1.kern.syscall_getrlimit 1 1.02% 100.00% # number of syscalls executed +system.cpu1.not_idle_fraction 0.006021 # Percentage of non-idle cycles system.cpu1.numCycles 0 # number of cpu cycles simulated -system.cpu1.num_insts 18640662 # Number of instructions executed -system.cpu1.num_refs 4633112 # Number of memory references +system.cpu1.num_insts 16976004 # Number of instructions executed +system.cpu1.num_refs 4251312 # Number of memory references system.disk0.dma_read_bytes 1024 # Number of bytes transfered via DMA reads (not PRD). system.disk0.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk0.dma_read_txs 1 # Number of DMA read transactions (not PRD). -system.disk0.dma_write_bytes 2521088 # Number of bytes transfered via DMA writes. -system.disk0.dma_write_full_pages 285 # Number of full page size DMA writes. -system.disk0.dma_write_txs 375 # Number of DMA write transactions. +system.disk0.dma_write_bytes 2735104 # Number of bytes transfered via DMA writes. +system.disk0.dma_write_full_pages 306 # Number of full page size DMA writes. +system.disk0.dma_write_txs 412 # Number of DMA write transactions. system.disk2.dma_read_bytes 0 # Number of bytes transfered via DMA reads (not PRD). system.disk2.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk2.dma_read_txs 0 # Number of DMA read transactions (not PRD). diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout index 33c194686..2c496b914 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout @@ -5,8 +5,8 @@ The Regents of The University of Michigan All Rights Reserved -M5 compiled Sep 5 2006 15:32:34 -M5 started Tue Sep 5 15:45:11 2006 +M5 compiled Oct 5 2006 22:13:02 +M5 started Fri Oct 6 00:26:09 2006 M5 executing on zizzer.eecs.umich.edu command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual -Exiting @ tick 3539435029 because m5_exit instruction encountered +Exiting @ tick 3526987181 because m5_exit instruction encountered diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini index 2a354dee0..7f27ca121 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini @@ -58,6 +58,7 @@ mem_mode=timing pal=/dist/m5/system/binaries/ts_osfpal physmem=system.physmem readfile=tests/halt.sh +symbolfile= system_rev=1024 system_type=34 @@ -86,6 +87,7 @@ max_loads_all_threads=0 max_loads_any_thread=0 mem=system.physmem profile=0 +progress_interval=0 system=system dcache_port=system.membus.port[3] icache_port=system.membus.port[2] @@ -552,6 +554,7 @@ pio=system.iobus.port[24] [trace] bufsize=0 +cycle=0 dump_on_exit=false file=cout flags= diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out index 1b99934c9..deba80368 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out @@ -21,6 +21,7 @@ console=/dist/m5/system/binaries/console pal=/dist/m5/system/binaries/ts_osfpal boot_osflags=root=/dev/hda1 console=ttyS0 readfile=tests/halt.sh +symbolfile= init_param=0 system_type=34 system_rev=1024 @@ -86,6 +87,7 @@ max_insts_any_thread=0 max_insts_all_threads=0 max_loads_any_thread=0 max_loads_all_threads=0 +progress_interval=0 mem=system.physmem system=system itb=system.cpu.itb @@ -465,6 +467,7 @@ bus_id=0 [trace] flags= start=0 +cycle=0 bufsize=0 file=cout dump_on_exit=false @@ -508,6 +511,9 @@ trace_system=client [debug] break_cycles= +[statsreset] +reset_cycle=0 + [pseudo_inst] quiesce=true statistics=true diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/console.system.sim_console b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/console.system.sim_console index ea7a20777..d6e3955cc 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/console.system.sim_console +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/console.system.sim_console @@ -69,7 +69,7 @@ M5 console: m5AlphaAccess @ 0xFFFFFD0200000000
hdb: M5 IDE Disk, ATA DISK drive
ide0 at 0x8410-0x8417,0x8422 on irq 31
hda: max request size: 128KiB -
hda: 163296 sectors (83 MB), CHS=162/16/63, UDMA(33) +
hda: 511056 sectors (261 MB), CHS=507/16/63, UDMA(33)
hda: hda1
hdb: max request size: 128KiB
hdb: 4177920 sectors (2139 MB), CHS=4144/16/63, UDMA(33) @@ -97,10 +97,6 @@ M5 console: m5AlphaAccess @ 0xFFFFFD0200000000
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 480k freed -
init started: BusyBox v1.00-rc2 (2004.11.18-16:22+0000) multi-call binary - -PTXdist-0.7.0 (2004-11-18T11:23:40-0500) - +
init started: BusyBox v1.1.0 (2006.08.17-02:54+0000) multi-call binary mounting filesystems... -EXT2-fs warning: checktime reached, running e2fsck is recommended -
loading script... +loading script... diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt index 0adb4cc31..1d45d41a9 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt @@ -1,130 +1,127 @@ ---------- Begin Simulation Statistics ---------- -host_inst_rate 835908 # Simulator instruction rate (inst/s) -host_mem_usage 194192 # Number of bytes of host memory used -host_seconds 71.68 # Real time elapsed on the host -host_tick_rate 48916813 # Simulator tick rate (ticks/s) +host_inst_rate 820839 # Simulator instruction rate (inst/s) +host_mem_usage 193264 # Number of bytes of host memory used +host_seconds 70.65 # Real time elapsed on the host +host_tick_rate 49454399 # Simulator tick rate (ticks/s) sim_freq 2000000000 # Frequency of simulated ticks -sim_insts 59915182 # Number of instructions simulated -sim_seconds 1.753109 # Number of seconds simulated -sim_ticks 3506218170 # Number of ticks simulated -system.cpu.dtb.accesses 2354955 # DTB accesses -system.cpu.dtb.acv 413 # DTB access violations -system.cpu.dtb.hits 13926686 # DTB hits -system.cpu.dtb.misses 16187 # DTB misses -system.cpu.dtb.read_accesses 832415 # DTB read accesses -system.cpu.dtb.read_acv 242 # DTB read access violations -system.cpu.dtb.read_hits 7716658 # DTB read hits -system.cpu.dtb.read_misses 13695 # DTB read misses -system.cpu.dtb.write_accesses 1522540 # DTB write accesses -system.cpu.dtb.write_acv 171 # DTB write access violations -system.cpu.dtb.write_hits 6210028 # DTB write hits -system.cpu.dtb.write_misses 2492 # DTB write misses -system.cpu.idle_fraction 0.978925 # Percentage of idle cycles -system.cpu.itb.accesses 4037381 # ITB accesses -system.cpu.itb.acv 239 # ITB acv -system.cpu.itb.hits 4030657 # ITB hits -system.cpu.itb.misses 6724 # ITB misses -system.cpu.kern.callpal 183644 # number of callpals executed +sim_insts 57989043 # Number of instructions simulated +sim_seconds 1.746889 # Number of seconds simulated +sim_ticks 3493777466 # Number of ticks simulated +system.cpu.dtb.accesses 2309470 # DTB accesses +system.cpu.dtb.acv 367 # DTB access violations +system.cpu.dtb.hits 13707871 # DTB hits +system.cpu.dtb.misses 12493 # DTB misses +system.cpu.dtb.read_accesses 828530 # DTB read accesses +system.cpu.dtb.read_acv 210 # DTB read access violations +system.cpu.dtb.read_hits 7595606 # DTB read hits +system.cpu.dtb.read_misses 10298 # DTB read misses +system.cpu.dtb.write_accesses 1480940 # DTB write accesses +system.cpu.dtb.write_acv 157 # DTB write access violations +system.cpu.dtb.write_hits 6112265 # DTB write hits +system.cpu.dtb.write_misses 2195 # DTB write misses +system.cpu.idle_fraction 0.979465 # Percentage of idle cycles +system.cpu.itb.accesses 3281347 # ITB accesses +system.cpu.itb.acv 184 # ITB acv +system.cpu.itb.hits 3276357 # ITB hits +system.cpu.itb.misses 4990 # ITB misses +system.cpu.kern.callpal 182454 # number of callpals executed system.cpu.kern.callpal_cserve 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrmces 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrfen 1 0.00% 0.00% # number of callpals executed system.cpu.kern.callpal_wrvptptr 1 0.00% 0.00% # number of callpals executed -system.cpu.kern.callpal_swpctx 1861 1.01% 1.02% # number of callpals executed -system.cpu.kern.callpal_tbi 28 0.02% 1.03% # number of callpals executed -system.cpu.kern.callpal_wrent 7 0.00% 1.03% # number of callpals executed -system.cpu.kern.callpal_swpipl 171635 93.46% 94.50% # number of callpals executed -system.cpu.kern.callpal_rdps 4808 2.62% 97.11% # number of callpals executed -system.cpu.kern.callpal_wrkgp 1 0.00% 97.11% # number of callpals executed -system.cpu.kern.callpal_wrusp 8 0.00% 97.12% # number of callpals executed -system.cpu.kern.callpal_rdusp 12 0.01% 97.12% # number of callpals executed -system.cpu.kern.callpal_whami 2 0.00% 97.13% # number of callpals executed -system.cpu.kern.callpal_rti 4297 2.34% 99.47% # number of callpals executed -system.cpu.kern.callpal_callsys 667 0.36% 99.83% # number of callpals executed -system.cpu.kern.callpal_imb 314 0.17% 100.00% # number of callpals executed +system.cpu.kern.callpal_swpctx 1571 0.86% 0.86% # number of callpals executed +system.cpu.kern.callpal_tbi 54 0.03% 0.89% # number of callpals executed +system.cpu.kern.callpal_wrent 7 0.00% 0.90% # number of callpals executed +system.cpu.kern.callpal_swpipl 171092 93.77% 94.67% # number of callpals executed +system.cpu.kern.callpal_rdps 5160 2.83% 97.50% # number of callpals executed +system.cpu.kern.callpal_wrkgp 1 0.00% 97.50% # number of callpals executed +system.cpu.kern.callpal_wrusp 7 0.00% 97.50% # number of callpals executed +system.cpu.kern.callpal_rdusp 10 0.01% 97.51% # number of callpals executed +system.cpu.kern.callpal_whami 2 0.00% 97.51% # number of callpals executed +system.cpu.kern.callpal_rti 3834 2.10% 99.61% # number of callpals executed +system.cpu.kern.callpal_callsys 531 0.29% 99.90% # number of callpals executed +system.cpu.kern.callpal_imb 181 0.10% 100.00% # number of callpals executed system.cpu.kern.inst.arm 0 # number of arm instructions executed -system.cpu.kern.inst.hwrei 209285 # number of hwrei instructions executed +system.cpu.kern.inst.hwrei 202524 # number of hwrei instructions executed system.cpu.kern.inst.ivlb 0 # number of ivlb instructions executed system.cpu.kern.inst.ivle 0 # number of ivle instructions executed -system.cpu.kern.inst.quiesce 1867 # number of quiesce instructions executed -system.cpu.kern.ipl_count 178009 # number of times we switched to this ipl -system.cpu.kern.ipl_count_0 75254 42.28% 42.28% # number of times we switched to this ipl -system.cpu.kern.ipl_count_21 286 0.16% 42.44% # number of times we switched to this ipl -system.cpu.kern.ipl_count_22 5465 3.07% 45.51% # number of times we switched to this ipl -system.cpu.kern.ipl_count_31 97004 54.49% 100.00% # number of times we switched to this ipl -system.cpu.kern.ipl_good 159802 # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_0 75188 47.05% 47.05% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_21 286 0.18% 47.23% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_22 5465 3.42% 50.65% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_good_31 78863 49.35% 100.00% # number of times we switched to this ipl from a different ipl -system.cpu.kern.ipl_ticks 3506217640 # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_0 3478896122 99.22% 99.22% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_21 60705 0.00% 99.22% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_22 1274059 0.04% 99.26% # number of cycles we spent at this ipl -system.cpu.kern.ipl_ticks_31 25986754 0.74% 100.00% # number of cycles we spent at this ipl -system.cpu.kern.ipl_used 0.897719 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.ipl_used_0 0.999123 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.inst.quiesce 1876 # number of quiesce instructions executed +system.cpu.kern.ipl_count 176961 # number of times we switched to this ipl +system.cpu.kern.ipl_count_0 74471 42.08% 42.08% # number of times we switched to this ipl +system.cpu.kern.ipl_count_21 251 0.14% 42.23% # number of times we switched to this ipl +system.cpu.kern.ipl_count_22 5439 3.07% 45.30% # number of times we switched to this ipl +system.cpu.kern.ipl_count_31 96800 54.70% 100.00% # number of times we switched to this ipl +system.cpu.kern.ipl_good 158180 # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_0 74417 47.05% 47.05% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_21 251 0.16% 47.20% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_22 5439 3.44% 50.64% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_good_31 78073 49.36% 100.00% # number of times we switched to this ipl from a different ipl +system.cpu.kern.ipl_ticks 3493777020 # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_0 3466334940 99.21% 99.21% # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_21 53019 0.00% 99.22% # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_22 1268195 0.04% 99.25% # number of cycles we spent at this ipl +system.cpu.kern.ipl_ticks_31 26120866 0.75% 100.00% # number of cycles we spent at this ipl +system.cpu.kern.ipl_used 0.893869 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.ipl_used_0 0.999275 # fraction of swpipl calls that actually changed the ipl system.cpu.kern.ipl_used_21 1 # fraction of swpipl calls that actually changed the ipl system.cpu.kern.ipl_used_22 1 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.ipl_used_31 0.812987 # fraction of swpipl calls that actually changed the ipl -system.cpu.kern.mode_good_kernel 2339 -system.cpu.kern.mode_good_user 2168 -system.cpu.kern.mode_good_idle 171 -system.cpu.kern.mode_switch_kernel 4093 # number of protection mode switches -system.cpu.kern.mode_switch_user 2168 # number of protection mode switches -system.cpu.kern.mode_switch_idle 2043 # number of protection mode switches -system.cpu.kern.mode_switch_good 0.563343 # fraction of useful protection mode switches -system.cpu.kern.mode_switch_good_kernel 0.571463 # fraction of useful protection mode switches +system.cpu.kern.ipl_used_31 0.806539 # fraction of swpipl calls that actually changed the ipl +system.cpu.kern.mode_good_kernel 1938 +system.cpu.kern.mode_good_user 1757 +system.cpu.kern.mode_good_idle 181 +system.cpu.kern.mode_switch_kernel 3323 # number of protection mode switches +system.cpu.kern.mode_switch_user 1757 # number of protection mode switches +system.cpu.kern.mode_switch_idle 2060 # number of protection mode switches +system.cpu.kern.mode_switch_good 0.542857 # fraction of useful protection mode switches +system.cpu.kern.mode_switch_good_kernel 0.583208 # fraction of useful protection mode switches system.cpu.kern.mode_switch_good_user 1 # fraction of useful protection mode switches -system.cpu.kern.mode_switch_good_idle 0.083700 # fraction of useful protection mode switches -system.cpu.kern.mode_ticks_kernel 40644475 1.16% 1.16% # number of ticks spent at the given mode -system.cpu.kern.mode_ticks_user 5527486 0.16% 1.32% # number of ticks spent at the given mode -system.cpu.kern.mode_ticks_idle 3460045677 98.68% 100.00% # number of ticks spent at the given mode -system.cpu.kern.swap_context 1862 # number of times the context was actually changed -system.cpu.kern.syscall 475 # number of syscalls executed -system.cpu.kern.syscall_fork 10 2.11% 2.11% # number of syscalls executed -system.cpu.kern.syscall_read 33 6.95% 9.05% # number of syscalls executed -system.cpu.kern.syscall_write 7 1.47% 10.53% # number of syscalls executed -system.cpu.kern.syscall_close 49 10.32% 20.84% # number of syscalls executed -system.cpu.kern.syscall_chdir 1 0.21% 21.05% # number of syscalls executed -system.cpu.kern.syscall_chmod 1 0.21% 21.26% # number of syscalls executed -system.cpu.kern.syscall_obreak 44 9.26% 30.53% # number of syscalls executed -system.cpu.kern.syscall_lseek 13 2.74% 33.26% # number of syscalls executed -system.cpu.kern.syscall_getpid 10 2.11% 35.37% # number of syscalls executed -system.cpu.kern.syscall_setuid 4 0.84% 36.21% # number of syscalls executed -system.cpu.kern.syscall_getuid 8 1.68% 37.89% # number of syscalls executed -system.cpu.kern.syscall_access 4 0.84% 38.74% # number of syscalls executed -system.cpu.kern.syscall_dup 4 0.84% 39.58% # number of syscalls executed -system.cpu.kern.syscall_open 68 14.32% 53.89% # number of syscalls executed -system.cpu.kern.syscall_getgid 8 1.68% 55.58% # number of syscalls executed -system.cpu.kern.syscall_sigprocmask 14 2.95% 58.53% # number of syscalls executed -system.cpu.kern.syscall_ioctl 16 3.37% 61.89% # number of syscalls executed -system.cpu.kern.syscall_readlink 2 0.42% 62.32% # number of syscalls executed -system.cpu.kern.syscall_execve 8 1.68% 64.00% # number of syscalls executed -system.cpu.kern.syscall_pre_F64_stat 31 6.53% 70.53% # number of syscalls executed -system.cpu.kern.syscall_pre_F64_lstat 1 0.21% 70.74% # number of syscalls executed -system.cpu.kern.syscall_mmap 55 11.58% 82.32% # number of syscalls executed -system.cpu.kern.syscall_munmap 6 1.26% 83.58% # number of syscalls executed -system.cpu.kern.syscall_mprotect 14 2.95% 86.53% # number of syscalls executed -system.cpu.kern.syscall_gethostname 2 0.42% 86.95% # number of syscalls executed -system.cpu.kern.syscall_dup2 4 0.84% 87.79% # number of syscalls executed -system.cpu.kern.syscall_pre_F64_fstat 28 5.89% 93.68% # number of syscalls executed -system.cpu.kern.syscall_fcntl 14 2.95% 96.63% # number of syscalls executed -system.cpu.kern.syscall_socket 3 0.63% 97.26% # number of syscalls executed -system.cpu.kern.syscall_connect 3 0.63% 97.89% # number of syscalls executed -system.cpu.kern.syscall_setgid 4 0.84% 98.74% # number of syscalls executed -system.cpu.kern.syscall_getrlimit 3 0.63% 99.37% # number of syscalls executed -system.cpu.kern.syscall_setsid 3 0.63% 100.00% # number of syscalls executed -system.cpu.not_idle_fraction 0.021075 # Percentage of non-idle cycles +system.cpu.kern.mode_switch_good_idle 0.087864 # fraction of useful protection mode switches +system.cpu.kern.mode_ticks_kernel 39254786 1.12% 1.12% # number of ticks spent at the given mode +system.cpu.kern.mode_ticks_user 4685669 0.13% 1.26% # number of ticks spent at the given mode +system.cpu.kern.mode_ticks_idle 3449836563 98.74% 100.00% # number of ticks spent at the given mode +system.cpu.kern.swap_context 1572 # number of times the context was actually changed +system.cpu.kern.syscall 329 # number of syscalls executed +system.cpu.kern.syscall_fork 8 2.43% 2.43% # number of syscalls executed +system.cpu.kern.syscall_read 30 9.12% 11.55% # number of syscalls executed +system.cpu.kern.syscall_write 4 1.22% 12.77% # number of syscalls executed +system.cpu.kern.syscall_close 43 13.07% 25.84% # number of syscalls executed +system.cpu.kern.syscall_chdir 1 0.30% 26.14% # number of syscalls executed +system.cpu.kern.syscall_chmod 1 0.30% 26.44% # number of syscalls executed +system.cpu.kern.syscall_obreak 15 4.56% 31.00% # number of syscalls executed +system.cpu.kern.syscall_lseek 10 3.04% 34.04% # number of syscalls executed +system.cpu.kern.syscall_getpid 6 1.82% 35.87% # number of syscalls executed +system.cpu.kern.syscall_setuid 4 1.22% 37.08% # number of syscalls executed +system.cpu.kern.syscall_getuid 6 1.82% 38.91% # number of syscalls executed +system.cpu.kern.syscall_access 11 3.34% 42.25% # number of syscalls executed +system.cpu.kern.syscall_dup 2 0.61% 42.86% # number of syscalls executed +system.cpu.kern.syscall_open 55 16.72% 59.57% # number of syscalls executed +system.cpu.kern.syscall_getgid 6 1.82% 61.40% # number of syscalls executed +system.cpu.kern.syscall_sigprocmask 10 3.04% 64.44% # number of syscalls executed +system.cpu.kern.syscall_ioctl 10 3.04% 67.48% # number of syscalls executed +system.cpu.kern.syscall_readlink 1 0.30% 67.78% # number of syscalls executed +system.cpu.kern.syscall_execve 7 2.13% 69.91% # number of syscalls executed +system.cpu.kern.syscall_mmap 54 16.41% 86.32% # number of syscalls executed +system.cpu.kern.syscall_munmap 3 0.91% 87.23% # number of syscalls executed +system.cpu.kern.syscall_mprotect 16 4.86% 92.10% # number of syscalls executed +system.cpu.kern.syscall_gethostname 1 0.30% 92.40% # number of syscalls executed +system.cpu.kern.syscall_dup2 3 0.91% 93.31% # number of syscalls executed +system.cpu.kern.syscall_fcntl 10 3.04% 96.35% # number of syscalls executed +system.cpu.kern.syscall_socket 2 0.61% 96.96% # number of syscalls executed +system.cpu.kern.syscall_connect 2 0.61% 97.57% # number of syscalls executed +system.cpu.kern.syscall_setgid 4 1.22% 98.78% # number of syscalls executed +system.cpu.kern.syscall_getrlimit 2 0.61% 99.39% # number of syscalls executed +system.cpu.kern.syscall_setsid 2 0.61% 100.00% # number of syscalls executed +system.cpu.not_idle_fraction 0.020535 # Percentage of non-idle cycles system.cpu.numCycles 0 # number of cpu cycles simulated -system.cpu.num_insts 59915182 # Number of instructions executed -system.cpu.num_refs 13979549 # Number of memory references +system.cpu.num_insts 57989043 # Number of instructions executed +system.cpu.num_refs 13753099 # Number of memory references system.disk0.dma_read_bytes 1024 # Number of bytes transfered via DMA reads (not PRD). system.disk0.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk0.dma_read_txs 1 # Number of DMA read transactions (not PRD). -system.disk0.dma_write_bytes 2521088 # Number of bytes transfered via DMA writes. -system.disk0.dma_write_full_pages 285 # Number of full page size DMA writes. -system.disk0.dma_write_txs 375 # Number of DMA write transactions. +system.disk0.dma_write_bytes 2735104 # Number of bytes transfered via DMA writes. +system.disk0.dma_write_full_pages 306 # Number of full page size DMA writes. +system.disk0.dma_write_txs 412 # Number of DMA write transactions. system.disk2.dma_read_bytes 0 # Number of bytes transfered via DMA reads (not PRD). system.disk2.dma_read_full_pages 0 # Number of full page size DMA reads (not PRD). system.disk2.dma_read_txs 0 # Number of DMA read transactions (not PRD). diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout index 2739943d2..88e69a41f 100644 --- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout +++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout @@ -5,8 +5,8 @@ The Regents of The University of Michigan All Rights Reserved -M5 compiled Sep 5 2006 15:32:34 -M5 started Tue Sep 5 15:43:59 2006 +M5 compiled Oct 5 2006 22:13:02 +M5 started Fri Oct 6 00:24:58 2006 M5 executing on zizzer.eecs.umich.edu command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-timing tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-timing -Exiting @ tick 3506218170 because m5_exit instruction encountered +Exiting @ tick 3493777466 because m5_exit instruction encountered diff --git a/util/batch/batch.py b/util/batch/batch.py new file mode 100644 index 000000000..91d354e97 --- /dev/null +++ b/util/batch/batch.py @@ -0,0 +1,249 @@ +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Kevin Lim + +import os, popen2, re, sys + +class MyPOpen(object): + def __init__(self, cmd, input = None, output = None, bufsize = -1): + self.status = -1 + + if input is None: + p2c_read, p2c_write = os.pipe() + self.tochild = os.fdopen(p2c_write, 'w', bufsize) + else: + p2c_write = None + if isinstance(input, file): + p2c_read = input.fileno() + elif isinstance(input, str): + input = file(input, 'r') + p2c_read = input.fileno() + elif isinstance(input, int): + p2c_read = input + else: + raise AttributeError + + if output is None: + c2p_read, c2p_write = os.pipe() + self.fromchild = os.fdopen(c2p_read, 'r', bufsize) + else: + c2p_read = None + if isinstance(output, file): + c2p_write = output.fileno() + elif isinstance(output, str): + output = file(output, 'w') + c2p_write = output.fileno() + elif isinstance(output, int): + c2p_write = output + else: + raise AttributeError + + self.pid = os.fork() + if self.pid == 0: + os.dup2(p2c_read, sys.stdin.fileno()) + os.dup2(c2p_write, sys.stdout.fileno()) + os.dup2(c2p_write, sys.stderr.fileno()) + try: + os.execvp(cmd[0], cmd) + finally: + os._exit(1) + + os.close(p2c_read) + os.close(c2p_write) + + def poll(self): + if self.status < 0: + pid, status = os.waitpid(self.pid, os.WNOHANG) + if pid == self.pid: + self.status = status + return self.status + + def wait(self): + if self.status < 0: + pid, status = os.waitpid(self.pid, 0) + if pid == self.pid: + self.status = status + return self.status + + +class oarsub: + def __init__(self): + self.walltime = None + self.queue = None + self.properties = None + + # OAR 2.0 parameters only! + self.name = None + self.afterok = None + self.notify = None + self.stderr = None + self.stdout = None + + + self.oarhost = None + self.oarsub = 'oarsub' + + self.jobid = re.compile('IdJob = (\S+)') + #self.outfile = open("jobnames.dat", "a+") + + def build(self, script, args = []): + self.cmd = [ self.oarsub ] + + print "args:", args + print "script:", script + if self.properties: + self.cmd.append('-p"%s"' % self.properties ) + + if self.queue: + self.cmd.append('-q "%s"' % self.queue) + + if self.walltime: + self.cmd.append('-l walltime=%s' % self.walltime) + + if script[0] != "/": + self.script = os.getcwd() + else: + self.script = script + + self.cmd.extend(args) + self.cmd.append(self.script) + #cmd = [ 'ssh', '-x', self.oarhost, '"cd %s; %s"' % (os.getcwd(), self.command) ] + self.command = ' '.join(self.cmd) + + print "command: [%s]" % self.command + + def do(self): + oar = MyPOpen(self.cmd) + self.result = oar.fromchild.read() + ec = oar.wait() + + if ec != 0 and self.oarhost: + pstdin, pstdout = os.popen4(self.command) + self.result = pstdout.read() + + jobid = self.jobid.match(self.result) + if jobid == None: + print "Couldn't get jobid from [%s]" % self.result + sys.exit(1) + else: + #self.outfile.write("%d %s\n" %(int(jobid.group(1)), self.name)); + #self.outfile.flush() + self.result = jobid.group(1) + + return 0 + +class qsub: + def __init__(self): + self.afterok = None + self.hold = False + self.join = False + self.keep_stdout = False + self.keep_stderr = False + self.node_type = None + self.mail_abort = False + self.mail_begin = False + self.mail_end = False + self.name = None + self.stdout = None + self.priority = None + self.queue = None + self.pbshost = None + self.qsub = 'qsub' + self.env = {} + + def build(self, script, args = []): + self.cmd = [ self.qsub ] + + if self.env: + arg = '-v' + arg += ','.join([ '%s=%s' % i for i in self.env.iteritems() ]) + self.cmd.append(arg) + + if self.hold: + self.cmd.append('-h') + + if self.stdout: + self.cmd.append('-olocalhost:' + self.stdout) + + if self.keep_stdout and self.keep_stderr: + self.cmd.append('-koe') + elif self.keep_stdout: + self.cmd.append('-ko') + elif self.keep_stderr: + self.cmd.append('-ke') + else: + self.cmd.append('-kn') + + if self.join: + self.cmd.append('-joe') + + if self.node_type: + self.cmd.append('-lnodes=' + self.node_type) + + if self.mail_abort or self.mail_begin or self.mail_end: + flags = '' + if self.mail_abort: + flags.append('a') + if self.mail_begin: + flags.append('b') + if self.mail_end: + flags.append('e') + if len(flags): + self.cmd.append('-m ' + flags) + else: + self.cmd.append('-mn') + + if self.name: + self.cmd.append("-N%s" % self.name) + + if self.priority: + self.cmd.append('-p' + self.priority) + + if self.queue: + self.cmd.append('-q' + self.queue) + + if self.afterok: + self.cmd.append('-Wdepend=afterok:%s' % self.afterok) + + self.cmd.extend(args) + self.script = script + self.command = ' '.join(self.cmd + [ self.script ]) + + def do(self): + pbs = MyPOpen(self.cmd + [ self.script ]) + self.result = pbs.fromchild.read() + ec = pbs.wait() + + if ec != 0 and self.pbshost: + cmd = ' '.join(self.cmd + [ '-' ]) + cmd = [ 'ssh', '-x', self.pbshost, cmd ] + self.command = ' '.join(cmd) + ssh = MyPOpen(cmd, input = self.script) + self.result = ssh.fromchild.read() + ec = ssh.wait() + + return ec diff --git a/util/batch/job.py b/util/batch/job.py new file mode 100755 index 000000000..9d7ecca8c --- /dev/null +++ b/util/batch/job.py @@ -0,0 +1,246 @@ +#!/usr/bin/env python +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Kevin Lim + +import os, os.path, shutil, signal, socket, sys +from os import environ as env +from os.path import join as joinpath, expanduser + +def date(): + import time + return time.strftime('%a %b %e %H:%M:%S %Z %Y', time.localtime()) + +def cleandir(dir): + for root, dirs, files in os.walk(dir, False): + for name in files: + os.remove(joinpath(root, name)) + for name in dirs: + os.rmdir(joinpath(root, name)) + +class rsync: + def __init__(self): + self.sudo = False + self.rsync = 'rsync' + self.compress = False + self.archive = True + self.delete = False + self.options = '' + + def do(self, src, dst): + args = [] + if self.sudo: + args.append('sudo') + + args.append(self.rsync) + if (self.archive): + args.append('-a') + if (self.compress): + args.append('-z') + if (self.delete): + args.append('--delete') + if len(self.options): + args.append(self.options) + args.append(src) + args.append(dst) + + return os.spawnvp(os.P_WAIT, args[0], args) + +class JobDir(object): + def __init__(self, dir): + self.dir = dir + + def file(self, filename): + return joinpath(self.dir, filename) + + def create(self): + if os.path.exists(self.dir): + if not os.path.isdir(self.dir): + sys.exit('%s is not a directory. Cannot build job' % self.dir) + else: + os.mkdir(self.dir) + + def exists(self): + return os.path.isdir(self.dir) + + def clean(self): + cleandir(self.dir) + + def hasfile(self, filename): + return os.path.isfile(self.file(filename)) + + def echofile(self, filename, string): + filename = self.file(filename) + try: + f = file(filename, 'w') + print >>f, string + f.flush() + f.close() + except IOError,e: + sys.exit(e) + + def rmfile(self, filename): + filename = self.file(filename) + if os.path.isfile(filename): + os.unlink(filename) + + def readval(self, filename): + filename = self.file(filename) + f = file(filename, 'r') + value = f.readline().strip() + f.close() + return value + + def setstatus(self, string): + filename = self.file('.status') + try: + f = file(filename, 'a') + print >>f, string + f.flush() + f.close() + except IOError,e: + sys.exit(e) + + def getstatus(self): + filename = self.file('.status') + try: + f = file(filename, 'r') + except IOError, e: + return 'none' + + # fast forward to the end + for line in f: pass + + # the first word on the last line is the status + return line.split(' ')[0] + + def __str__(self): + return self.dir + +if __name__ == '__main__': + import platform + binaries = { 'i686' : 'm5.i386', + 'x86_64' : 'm5.amd64' } + binary = binaries[platform.machine()] + + cwd = os.getcwd() + rootdir = env.setdefault('ROOTDIR', os.path.dirname(cwd)) + oar_jobid = int(env['OAR_JOBID']) + oar_jobname = os.path.basename(cwd) + #pbs_jobname = env['PBS_JOBNAME'] + basedir = joinpath(rootdir, 'Base') + jobname = env.setdefault('JOBNAME', oar_jobname) + jobfile = env.setdefault('JOBFILE', joinpath(rootdir, 'Test.py')) + outdir = env.setdefault('OUTPUT_DIR', cwd) + env['POOLJOB'] = 'True' + + if os.path.isdir("/work"): + workbase = "/work" + else: + workbase = "/tmp/" + + workdir = joinpath(workbase, '%s.%s' % (env['USER'], oar_jobid)) + host = socket.gethostname() + + os.umask(0022) + + jobdir = JobDir(outdir) + + started = date() + jobdir.echofile('.running', started) + jobdir.rmfile('.queued') + jobdir.echofile('.host', host) + + jobdir.setstatus('running on %s on %s' % (host, started)) + + if os.path.isdir(workdir): + cleandir(workdir) + else: + os.mkdir(workdir) + + if False and os.path.isdir('/z/dist'): + sync = rsync() + sync.delete = True + sync.sudo = True + sync.do('poolfs::dist/m5/', '/z/dist/m5/') + + try: + os.chdir(workdir) + except OSError,e: + sys.exit(e) + + os.symlink(jobdir.file('output'), 'status.out') + + args = [ joinpath(basedir, binary), joinpath(basedir, 'run.py') ] + if not len(args): + sys.exit("no arguments") + + print 'starting job... %s' % started + print ' '.join(args) + print + sys.stdout.flush() + + childpid = os.fork() + if not childpid: + # Execute command + sys.stdin.close() + fd = os.open(jobdir.file("output"), + os.O_WRONLY | os.O_CREAT | os.O_TRUNC) + os.dup2(fd, sys.stdout.fileno()) + os.dup2(fd, sys.stderr.fileno()) + os.execvp(args[0], args) + + def handler(signum, frame): + if childpid != 0: + os.kill(childpid, signum) + + signal.signal(signal.SIGHUP, handler) + signal.signal(signal.SIGINT, handler) + signal.signal(signal.SIGQUIT, handler) + signal.signal(signal.SIGTERM, handler) + signal.signal(signal.SIGCONT, handler) + signal.signal(signal.SIGUSR1, handler) + signal.signal(signal.SIGUSR2, handler) + + done = 0 + while not done: + try: + thepid,ec = os.waitpid(childpid, 0) + if ec: + print 'Exit code ', ec + status = 'failure' + else: + status = 'success' + done = 1 + except OSError: + pass + + complete = date() + print '\njob complete... %s' % complete + jobdir.echofile('.%s' % status, complete) + jobdir.rmfile('.running') + jobdir.setstatus('%s on %s' % (status, complete)) diff --git a/util/batch/jobfile.py b/util/batch/jobfile.py new file mode 100644 index 000000000..b78d7f3e1 --- /dev/null +++ b/util/batch/jobfile.py @@ -0,0 +1,539 @@ +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Kevin Lim + +import sys + +class ternary(object): + def __new__(cls, *args): + if len(args) > 1: + raise TypeError, \ + '%s() takes at most 1 argument (%d given)' % \ + (cls.__name__, len(args)) + + if args: + if not isinstance(args[0], (bool, ternary)): + raise TypeError, \ + '%s() argument must be True, False, or Any' % \ + cls.__name__ + return args[0] + return super(ternary, cls).__new__(cls) + + def __bool__(self): + return True + + def __neg__(self): + return self + + def __eq__(self, other): + return True + + def __ne__(self, other): + return False + + def __str__(self): + return 'Any' + + def __repr__(self): + return 'Any' + +Any = ternary() + +class Flags(dict): + def __init__(self, *args, **kwargs): + super(Flags, self).__init__() + self.update(*args, **kwargs) + + def __getattr__(self, attr): + return self[attr] + + def __setattr__(self, attr, value): + self[attr] = value + + def __setitem__(self, item, value): + return super(Flags, self).__setitem__(item, ternary(value)) + + def __getitem__(self, item): + if item not in self: + return False + return super(Flags, self).__getitem__(item) + + def update(self, *args, **kwargs): + for arg in args: + if isinstance(arg, Flags): + super(Flags, self).update(arg) + elif isinstance(arg, dict): + for key,val in kwargs.iteritems(): + self[key] = val + else: + raise AttributeError, \ + 'flags not of type %s or %s, but %s' % \ + (Flags, dict, type(arg)) + + for key,val in kwargs.iteritems(): + self[key] = val + + def match(self, *args, **kwargs): + match = Flags(*args, **kwargs) + + for key,value in match.iteritems(): + if self[key] != value: + return False + + return True + +def crossproduct(items): + if not isinstance(items, (list, tuple)): + raise AttributeError, 'crossproduct works only on sequences' + + if not items: + yield None + return + + current = items[0] + remainder = items[1:] + + if not hasattr(current, '__iter__'): + current = [ current ] + + for item in current: + for rem in crossproduct(remainder): + data = [ item ] + if rem: + data += rem + yield data + +def flatten(items): + if not isinstance(items, (list, tuple)): + yield items + return + + for item in items: + for flat in flatten(item): + yield flat + +class Data(object): + def __init__(self, name, desc, **kwargs): + self.name = name + self.desc = desc + self.system = None + self.flags = Flags() + self.env = {} + for k,v in kwargs.iteritems(): + setattr(self, k, v) + + def update(self, obj): + if not isinstance(obj, Data): + raise AttributeError, "can only update from Data object" + + self.env.update(obj.env) + self.flags.update(obj.flags) + if obj.system: + if self.system and self.system != obj.system: + raise AttributeError, \ + "conflicting values for system: '%s'/'%s'" % \ + (self.system, obj.system) + self.system = obj.system + + def printinfo(self): + if self.name: + print 'name: %s' % self.name + if self.desc: + print 'desc: %s' % self.desc + if self.system: + print 'system: %s' % self.system + + def printverbose(self): + print 'flags:' + keys = self.flags.keys() + keys.sort() + for key in keys: + print ' %s = %s' % (key, self.flags[key]) + print 'env:' + keys = self.env.keys() + keys.sort() + for key in keys: + print ' %s = %s' % (key, self.env[key]) + print + + def __str__(self): + return self.name + +class Job(Data): + def __init__(self, options): + super(Job, self).__init__('', '') + self.setoptions(options) + + self.checkpoint = False + opts = [] + for opt in options: + cpt = opt.group.checkpoint + if not cpt: + self.checkpoint = True + continue + if isinstance(cpt, Option): + opt = cpt.clone(suboptions=False) + else: + opt = opt.clone(suboptions=False) + + opts.append(opt) + + if not opts: + self.checkpoint = False + + if self.checkpoint: + self.checkpoint = Job(opts) + + def clone(self): + return Job(self.options) + + def __getattribute__(self, attr): + if attr == 'name': + names = [ ] + for opt in self.options: + if opt.name: + names.append(opt.name) + return ':'.join(names) + + if attr == 'desc': + descs = [ ] + for opt in self.options: + if opt.desc: + descs.append(opt.desc) + return ', '.join(descs) + + return super(Job, self).__getattribute__(attr) + + def setoptions(self, options): + config = options[0].config + for opt in options: + if opt.config != config: + raise AttributeError, \ + "All options are not from the same Configuration" + + self.config = config + self.groups = [ opt.group for opt in options ] + self.options = options + + self.update(self.config) + for group in self.groups: + self.update(group) + + for option in self.options: + self.update(option) + if option._suboption: + self.update(option._suboption) + + def printinfo(self): + super(Job, self).printinfo() + if self.checkpoint: + print 'checkpoint: %s' % self.checkpoint.name + print 'config: %s' % self.config.name + print 'groups: %s' % [ g.name for g in self.groups ] + print 'options: %s' % [ o.name for o in self.options ] + super(Job, self).printverbose() + +class SubOption(Data): + def __init__(self, name, desc, **kwargs): + super(SubOption, self).__init__(name, desc, **kwargs) + self.number = None + +class Option(Data): + def __init__(self, name, desc, **kwargs): + super(Option, self).__init__(name, desc, **kwargs) + self._suboptions = [] + self._suboption = None + self.number = None + + def __getattribute__(self, attr): + if attr == 'name': + name = self.__dict__[attr] + if self._suboption is not None: + name = '%s:%s' % (name, self._suboption.name) + return name + + if attr == 'desc': + desc = [ self.__dict__[attr] ] + if self._suboption is not None and self._suboption.desc: + desc.append(self._suboption.desc) + return ', '.join(desc) + + + return super(Option, self).__getattribute__(attr) + + def suboption(self, name, desc, **kwargs): + subo = SubOption(name, desc, **kwargs) + subo.config = self.config + subo.group = self.group + subo.option = self + subo.number = len(self._suboptions) + self._suboptions.append(subo) + return subo + + def clone(self, suboptions=True): + option = Option(self.__dict__['name'], self.__dict__['desc']) + option.update(self) + option.group = self.group + option.config = self.config + option.number = self.number + if suboptions: + option._suboptions.extend(self._suboptions) + option._suboption = self._suboption + return option + + def subopts(self): + if not self._suboptions: + return [ self ] + + subopts = [] + for subo in self._suboptions: + option = self.clone() + option._suboption = subo + subopts.append(option) + + return subopts + + def printinfo(self): + super(Option, self).printinfo() + print 'config: %s' % self.config.name + super(Option, self).printverbose() + +class Group(Data): + def __init__(self, name, desc, **kwargs): + super(Group, self).__init__(name, desc, **kwargs) + self._options = [] + self.checkpoint = False + self.number = None + + def option(self, name, desc, **kwargs): + opt = Option(name, desc, **kwargs) + opt.config = self.config + opt.group = self + opt.number = len(self._options) + self._options.append(opt) + return opt + + def options(self): + return self._options + + def subopts(self): + subopts = [] + for opt in self._options: + for subo in opt.subopts(): + subopts.append(subo) + return subopts + + def printinfo(self): + super(Group, self).printinfo() + print 'config: %s' % self.config.name + print 'options: %s' % [ o.name for o in self._options ] + super(Group, self).printverbose() + +class Configuration(Data): + def __init__(self, name, desc, **kwargs): + super(Configuration, self).__init__(name, desc, **kwargs) + self._groups = [] + self._posfilters = [] + self._negfilters = [] + + def group(self, name, desc, **kwargs): + grp = Group(name, desc, **kwargs) + grp.config = self + grp.number = len(self._groups) + self._groups.append(grp) + return grp + + def groups(self, flags=Flags(), sign=True): + if not flags: + return self._groups + + return [ grp for grp in self._groups if sign ^ grp.flags.match(flags) ] + + def checkchildren(self, kids): + for kid in kids: + if kid.config != self: + raise AttributeError, "child from the wrong configuration" + + def sortgroups(self, groups): + groups = [ (grp.number, grp) for grp in groups ] + groups.sort() + return [ grp[1] for grp in groups ] + + def options(self, groups = None, checkpoint = False): + if groups is None: + groups = self._groups + self.checkchildren(groups) + groups = self.sortgroups(groups) + if checkpoint: + groups = [ grp for grp in groups if grp.checkpoint ] + optgroups = [ g.options() for g in groups ] + else: + optgroups = [ g.subopts() for g in groups ] + for options in crossproduct(optgroups): + for opt in options: + cpt = opt.group.checkpoint + if not isinstance(cpt, bool) and cpt != opt: + if checkpoint: + break + else: + yield options + else: + if checkpoint: + yield options + + def addfilter(self, filt, pos=True): + import re + filt = re.compile(filt) + if pos: + self._posfilters.append(filt) + else: + self._negfilters.append(filt) + + def jobfilter(self, job): + for filt in self._negfilters: + if filt.match(job.name): + return False + + if not self._posfilters: + return True + + for filt in self._posfilters: + if filt.match(job.name): + return True + + return False + + def checkpoints(self, groups = None): + for options in self.options(groups, True): + job = Job(options) + if self.jobfilter(job): + yield job + + def jobs(self, groups = None): + for options in self.options(groups, False): + job = Job(options) + if self.jobfilter(job): + yield job + + def alljobs(self, groups = None): + for options in self.options(groups, True): + yield Job(options) + for options in self.options(groups, False): + yield Job(options) + + def find(self, jobname): + for job in self.alljobs(): + if job.name == jobname: + return job + else: + raise AttributeError, "job '%s' not found" % jobname + + def job(self, options): + self.checkchildren(options) + options = [ (opt.group.number, opt) for opt in options ] + options.sort() + options = [ opt[1] for opt in options ] + job = Job(options) + return job + + def printinfo(self): + super(Configuration, self).printinfo() + print 'groups: %s' % [ g.name for g in self._grouips ] + super(Configuration, self).printverbose() + +def JobFile(jobfile): + from os.path import expanduser, isfile, join as joinpath + filename = expanduser(jobfile) + + # Can't find filename in the current path, search sys.path + if not isfile(filename): + for path in sys.path: + testname = joinpath(path, filename) + if isfile(testname): + filename = testname + break + else: + raise AttributeError, \ + "Could not find file '%s'" % jobfile + + data = {} + execfile(filename, data) + if 'conf' not in data: + raise ImportError, 'cannot import name conf from %s' % jobfile + conf = data['conf'] + import jobfile + if not isinstance(conf, Configuration): + raise AttributeError, \ + 'conf in jobfile: %s (%s) is not type %s' % \ + (jobfile, type(conf), Configuration) + return conf + +if __name__ == '__main__': + from jobfile import * + import sys + + usage = 'Usage: %s [-b] [-c] [-v] <jobfile>' % sys.argv[0] + + try: + import getopt + opts, args = getopt.getopt(sys.argv[1:], '-bcv') + except getopt.GetoptError: + sys.exit(usage) + + if len(args) != 1: + raise AttributeError, usage + + both = False + checkpoint = False + verbose = False + for opt,arg in opts: + if opt == '-b': + both = True + checkpoint = True + if opt == '-c': + checkpoint = True + if opt == '-v': + verbose = True + + jobfile = args[0] + conf = JobFile(jobfile) + + if both: + gen = conf.alljobs() + elif checkpoint: + gen = conf.checkpoints() + else: + gen = conf.jobs() + + for job in gen: + if not verbose: + cpt = '' + if job.checkpoint: + cpt = job.checkpoint.name + print job.name, cpt + else: + job.printinfo() diff --git a/util/batch/send.py b/util/batch/send.py new file mode 100755 index 000000000..e7bf1958f --- /dev/null +++ b/util/batch/send.py @@ -0,0 +1,306 @@ +#!/usr/bin/env python +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Kevin Lim + +import os, os.path, re, socket, sys +from os import environ as env, listdir +from os.path import basename, isdir, isfile, islink, join as joinpath, normpath +from filecmp import cmp as filecmp +from shutil import copy + +def nfspath(dir): + if dir.startswith('/.automount/'): + dir = '/n/%s' % dir[12:] + elif not dir.startswith('/n/'): + dir = '/n/%s%s' % (socket.gethostname().split('.')[0], dir) + return dir + +def syncdir(srcdir, destdir): + srcdir = normpath(srcdir) + destdir = normpath(destdir) + if not isdir(destdir): + sys.exit('destination directory "%s" does not exist' % destdir) + + for root, dirs, files in os.walk(srcdir): + root = normpath(root) + prefix = os.path.commonprefix([root, srcdir]) + root = root[len(prefix):] + if root.startswith('/'): + root = root[1:] + for rem in [ d for d in dirs if d.startswith('.') or d == 'SCCS']: + dirs.remove(rem) + + for entry in dirs: + newdir = joinpath(destdir, root, entry) + if not isdir(newdir): + os.mkdir(newdir) + print 'mkdir', newdir + + for i,d in enumerate(dirs): + if islink(joinpath(srcdir, root, d)): + dirs[i] = joinpath(d, '.') + + for entry in files: + dest = normpath(joinpath(destdir, root, entry)) + src = normpath(joinpath(srcdir, root, entry)) + if not isfile(dest) or not filecmp(src, dest): + print 'copy %s %s' % (dest, src) + copy(src, dest) + +progpath = nfspath(sys.path[0]) +progname = basename(sys.argv[0]) +usage = """\ +Usage: + %(progname)s [-c] [-e] [-f] [-j <jobfile>] [-q queue] [-v] <regexp> + -c clean directory if job can be run + -C submit the checkpointing runs + -d Make jobs be dependent on the completion of the checkpoint runs + -e only echo pbs command info, don't actually send the job + -f force the job to run regardless of state + -q <queue> submit job to the named queue + -j <jobfile> specify the jobfile (default is <rootdir>/Test.py) + -v be verbose + + %(progname)s [-j <jobfile>] -l [-v] <regexp> + -j <jobfile> specify the jobfile (default is <rootdir>/Test.py) + -l list job names, don't submit + -v be verbose (list job parameters) + + %(progname)s -h + -h display this help +""" % locals() + +try: + import getopt + opts, args = getopt.getopt(sys.argv[1:], '-Ccdefhj:lnq:Rt:v') +except getopt.GetoptError: + sys.exit(usage) + +depend = False +clean = False +onlyecho = False +exprs = [] +force = False +listonly = False +queue = '' +verbose = False +jfile = 'Test.py' +docpts = False +doruns = True +runflag = False +node_type = 'FAST' +update = True + +for opt,arg in opts: + if opt == '-C': + docpts = True + if opt == '-c': + clean = True + if opt == '-d': + depend = True + if opt == '-e': + onlyecho = True + if opt == '-f': + force = True + if opt == '-h': + print usage + sys.exit(0) + if opt == '-j': + jfile = arg + if opt == '-l': + listonly = True + if opt == '-n': + update = False + if opt == '-q': + queue = arg + if opt == '-R': + runflag = True + if opt == '-t': + node_type = arg + if opt == '-v': + verbose = True + +if docpts: + doruns = runflag + +for arg in args: + exprs.append(re.compile(arg)) + +import jobfile, batch +from job import JobDir, date + +conf = jobfile.JobFile(jfile) + +if update and not listonly and not onlyecho and isdir(conf.linkdir): + if verbose: + print 'Checking for outdated files in Link directory' + if not isdir(conf.basedir): + os.mkdir(conf.basedir) + syncdir(conf.linkdir, conf.basedir) + +jobnames = {} +joblist = [] + +if docpts and doruns: + gen = conf.alljobs() +elif docpts: + gen = conf.checkpoints() +elif doruns: + gen = conf.jobs() + +for job in gen: + if job.name in jobnames: + continue + + if exprs: + for expr in exprs: + if expr.match(job.name): + joblist.append(job) + break + else: + joblist.append(job) + +if listonly: + if verbose: + for job in joblist: + job.printinfo() + else: + for job in joblist: + print job.name + sys.exit(0) + +if not onlyecho: + newlist = [] + for job in joblist: + jobdir = JobDir(joinpath(conf.rootdir, job.name)) + if jobdir.exists(): + if not force: + status = jobdir.getstatus() + if status == 'queued': + continue + + if status == 'running': + continue + + if status == 'success': + continue + + if not clean: + sys.exit('job directory %s not clean!' % jobdir) + + jobdir.clean() + newlist.append(job) + joblist = newlist + +class NameHack(object): + def __init__(self, host='pbs.pool', port=24465): + self.host = host + self.port = port + self.socket = None + + def setname(self, jobid, jobname): + try: + jobid = int(jobid) + except ValueError: + jobid = int(jobid.strip().split('.')[0]) + + jobname = jobname.strip() + # since pbs can handle jobnames of 15 characters or less, + # don't use the raj hack. + if len(jobname) <= 15: + return + + if self.socket is None: + import socket + self.socket = socket.socket() + # Connect to pbs.pool and send the jobid/jobname pair to port + # 24465 (Raj didn't realize that there are only 64k ports and + # setup inetd to point to port 90001) + self.socket.connect((self.host, self.port)) + + self.socket.send("%s %s\n" % (jobid, jobname)) + +namehack = NameHack() + +rootdir = conf.rootdir +script = joinpath(rootdir, 'Base', 'job.py') + +for job in joblist: + jobdir = JobDir(joinpath(rootdir, job.name)) + if depend: + cptdir = JobDir(joinpath(rootdir, job.checkpoint.name)) + path = str(cptdir) + if not isdir(path) or not isfile(joinpath(path, '.success')): + continue + + cptjob = cptdir.readval('.batch_jobid') + + if not onlyecho: + jobdir.create() + os.chdir(str(jobdir)) + os.environ['PWD'] = str(jobdir) + + print 'Job name: %s' % job.name + print 'Job directory: %s' % jobdir + + + qsub = batch.oarsub() + qsub.oarhost = 'poolfs.eecs.umich.edu' + #qsub.stdout = jobdir.file('jobout') + qsub.name = job.name + qsub.walltime = '50' + #qsub.join = True + #qsub.node_type = node_type + #qsub.env['ROOTDIR'] = conf.rootdir + #qsub.env['JOBNAME'] = job.name + #if depend: + # qsub.afterok = cptjob + #if queue: + # qsub.queue = queue + qsub.properties = "64bit = 'Yes' or 64bit = 'No'" + qsub.build(script) + + if verbose: + print 'cwd: %s' % qsub.command + print 'PBS Command: %s' % qsub.command + + if not onlyecho: + ec = qsub.do() + if ec == 0: + jobid = qsub.result + print 'OAR Jobid: %s' % jobid + #namehack.setname(jobid, job.name) + queued = date() + jobdir.echofile('.batch_jobid', jobid) + jobdir.echofile('.batch_jobname', job.name) + jobdir.echofile('.queued', queued) + jobdir.setstatus('queued on %s' % queued) + else: + print 'OAR Failed' + print + print diff --git a/util/m5/m5.c b/util/m5/m5.c index 193c0e329..23401aea5 100644 --- a/util/m5/m5.c +++ b/util/m5/m5.c @@ -169,6 +169,22 @@ main(int argc, char *argv[]) } } + if (COMPARE("readfile")) { + char buf[256*1024]; + int offset = 0; + int len; + + if (argc != 2) + usage(); + + while ((len = m5_readfile(buf, sizeof(buf), offset)) > 0) { + write(STDOUT_FILENO, buf, len); + offset += len; + } + + return 0; + } + if (COMPARE("checkpoint")) { switch (argc) { case 4: @@ -186,6 +202,9 @@ main(int argc, char *argv[]) return 0; } + if (COMPARE("loadsymbol")) { + m5_loadsymbol(arg1); + return 0; if (COMPARE("readfile")) { char buf[256*1024]; int offset = 0; diff --git a/util/m5/m5op.S b/util/m5/m5op.S index 5c0212189..a19113e62 100644 --- a/util/m5/m5op.S +++ b/util/m5/m5op.S @@ -41,6 +41,7 @@ #define exit_old_func 0x20 // deprectated! #define exit_func 0x21 #define initparam_func 0x30 +#define loadsymbol_func 0x31 #define resetstats_func 0x40 #define dumpstats_func 0x41 #define dumprststats_func 0x42 @@ -77,6 +78,7 @@ func: #define IVLE(reg) INST(m5_op, reg, 0, ivle_func) #define M5EXIT(reg) INST(m5_op, reg, 0, exit_func) #define INITPARAM(reg) INST(m5_op, reg, 0, initparam_func) +#define LOADSYMBOL(reg) INST(m5_op, reg, 0, loadsymbol_func) #define RESET_STATS(r1, r2) INST(m5_op, r1, r2, resetstats_func) #define DUMP_STATS(r1, r2) INST(m5_op, r1, r2, dumpstats_func) #define DUMPRST_STATS(r1, r2) INST(m5_op, r1, r2, dumprststats_func) @@ -147,6 +149,12 @@ LEAF(m5_initparam) END(m5_initparam) .align 4 +LEAF(m5_loadsymbol) + LOADSYMBOL(0) + RET +END(m5_loadsymbol) + + .align 4 LEAF(m5_reset_stats) RESET_STATS(16, 17) RET |