static int create_dialog( void ) { int error; GtkWidget *hbox, *vbox, *hbox2, *content_area; GtkAccelGroup *accel_group; gtkui_font font; error = gtkui_get_monospaced_font( &font ); if( error ) return error; dialog = gtkstock_dialog_new( "Fuse - Debugger", G_CALLBACK( delete_dialog ) ); content_area = gtk_dialog_get_content_area( GTK_DIALOG( dialog ) ); /* The menu bar */ error = create_menu_bar( GTK_BOX( content_area ), &accel_group ); if( error ) return error; /* Keyboard shortcuts */ gtk_window_add_accel_group( GTK_WINDOW( dialog ), accel_group ); /* Some boxes to contain the things we want to display */ hbox = gtk_box_new( GTK_ORIENTATION_HORIZONTAL, 0 ); gtk_box_pack_start( GTK_BOX( content_area ), hbox, TRUE, TRUE, 5 ); vbox = gtk_box_new( GTK_ORIENTATION_VERTICAL, 5 ); gtk_box_pack_start( GTK_BOX( hbox ), vbox, TRUE, TRUE, 5 ); hbox2 = gtk_box_new( GTK_ORIENTATION_HORIZONTAL, 5 ); gtk_box_pack_start( GTK_BOX( vbox ), hbox2, TRUE, TRUE, 0 ); /* The main display areas */ error = create_register_display( GTK_BOX( hbox2 ), font ); if( error ) return error; error = create_memory_map( GTK_BOX( hbox2 ) ); if( error ) return error; create_breakpoints( GTK_BOX( vbox ) ); create_disassembly( GTK_BOX( hbox ), font ); create_stack_display( GTK_BOX( hbox ), font ); create_events( GTK_BOX( hbox ) ); error = create_command_entry( GTK_BOX( content_area ), accel_group ); if( error ) return error; /* The action buttons */ error = create_buttons( GTK_DIALOG( dialog ), accel_group ); if( error ) return error; gtkui_free_font( font ); dialog_created = 1; return 0; }
// Initializes the bus component. int bus_init(struct bus_controller *bus) { unsigned i; static const struct bus_controller_mapping mappings[NUM_MAPPINGS] = { {read_ai_regs, write_ai_regs, AI_REGS_BASE_ADDRESS, AI_REGS_ADDRESS_LEN}, {read_dp_regs, write_dp_regs, DP_REGS_BASE_ADDRESS, DP_REGS_ADDRESS_LEN}, {read_mi_regs, write_mi_regs, MI_REGS_BASE_ADDRESS, MI_REGS_ADDRESS_LEN}, {read_pi_regs, write_pi_regs, PI_REGS_BASE_ADDRESS, PI_REGS_ADDRESS_LEN}, {read_ri_regs, write_ri_regs, RI_REGS_BASE_ADDRESS, RI_REGS_ADDRESS_LEN}, {read_si_regs, write_si_regs, SI_REGS_BASE_ADDRESS, SI_REGS_ADDRESS_LEN}, {read_sp_regs, write_sp_regs, SP_REGS_BASE_ADDRESS, SP_REGS_ADDRESS_LEN}, {read_vi_regs, write_vi_regs, VI_REGS_BASE_ADDRESS, VI_REGS_ADDRESS_LEN}, {read_cart_rom, write_cart_rom, ROM_CART_BASE_ADDRESS, ROM_CART_ADDRESS_LEN}, {read_flashram, write_flashram, FLASHRAM_BASE_ADDRESS, FLASHRAM_ADDRESS_LEN}, {read_dd_controller, write_dd_controller, DD_CONTROLLER_ADDRESS, DD_CONTROLLER_LEN}, {read_dd_ipl_rom, write_dd_ipl_rom, DD_IPL_ROM_ADDRESS, DD_IPL_ROM_LEN}, {read_pif_rom_and_ram, write_pif_rom_and_ram, PIF_BASE_ADDRESS, PIF_ADDRESS_LEN}, {read_rdram_regs, write_rdram_regs, RDRAM_REGS_BASE_ADDRESS, RDRAM_REGS_ADDRESS_LEN}, {read_sp_regs2, write_sp_regs2, SP_REGS2_BASE_ADDRESS, SP_REGS2_ADDRESS_LEN}, {read_sp_mem, write_sp_mem, SP_MEM_BASE_ADDRESS, SP_MEM_ADDRESS_LEN}, {read_sram, write_sram, SRAM_BASE_ADDRESS, SRAM_ADDRESS_LEN}, }; void *instances[NUM_MAPPINGS] = { bus->ai, bus->rdp, bus->vr4300, bus->pi, bus->ri, bus->si, bus->rsp, bus->vi, bus->pi, bus->pi, bus->dd, bus->dd, bus->si, bus->ri, bus->rsp, bus->rsp, bus->pi, }; create_memory_map(&bus->map); for (i = 0; i < NUM_MAPPINGS; i++) if (map_address_range(&bus->map, mappings[i].address, mappings[i].length, instances[i], mappings[i].read, mappings[i].write)) return 1; return 0; }
static int create_dialog( void ) { int error; GtkWidget *hbox, *vbox, *hbox2; GtkAccelGroup *accel_group; debugger_pane i; gtkui_font font; error = gtkui_get_monospaced_font( &font ); if( error ) return error; dialog = gtkstock_dialog_new( "Fuse - Debugger", GTK_SIGNAL_FUNC( delete_dialog ) ); /* Keyboard shortcuts */ accel_group = gtk_accel_group_new(); gtk_window_add_accel_group( GTK_WINDOW( dialog ), accel_group ); /* The menu bar */ error = create_menu_bar( GTK_BOX( GTK_DIALOG( dialog )->vbox ), accel_group ); if( error ) return error; /* Some boxes to contain the things we want to display */ hbox = gtk_hbox_new( FALSE, 0 ); gtk_box_pack_start( GTK_BOX( GTK_DIALOG( dialog )->vbox ), hbox, TRUE, TRUE, 5 ); vbox = gtk_vbox_new( FALSE, 5 ); gtk_box_pack_start( GTK_BOX( hbox ), vbox, TRUE, TRUE, 5 ); hbox2 = gtk_hbox_new( FALSE, 5 ); gtk_box_pack_start_defaults( GTK_BOX( vbox ), hbox2 ); /* The main display areas */ error = create_register_display( GTK_BOX( hbox2 ), font ); if( error ) return error; error = create_memory_map( GTK_BOX( hbox2 ) ); if( error ) return error; error = create_breakpoints( GTK_BOX( vbox ) ); if( error ) return error; error = create_disassembly( GTK_BOX( hbox ), font ); if( error ) return error; error = create_stack_display( GTK_BOX( hbox ), font ); if( error ) return error; error = create_events( GTK_BOX( hbox ) ); if( error ) return error; error = create_command_entry( GTK_BOX( GTK_DIALOG( dialog )->vbox ), accel_group ); if( error ) return error; /* The action buttons */ error = create_buttons( GTK_DIALOG( dialog ), accel_group ); if( error ) return error; /* Initially, have all the panes visible */ for( i = DEBUGGER_PANE_BEGIN; i < DEBUGGER_PANE_END; i++ ) { GtkCheckMenuItem *check_item; check_item = get_pane_menu_item( i ); if( !check_item ) break; gtk_check_menu_item_set_active( check_item, TRUE ); } gtkui_free_font( font ); dialog_created = 1; return 0; }